persistent_paintings 
Painting persistence has one writer queue. No player dialog is held inside it.
Vars | |
| admin_painting_data | A list of paintings' data for paintings that are currently stored in the library, with admin metadata |
|---|---|
| cached_painting_data | A list of paintings' data for paintings that are currently stored in the library. |
| deleted_paintings_md5s | Hashes of paintings deleted this round |
| frame_types_by_patronage_tier | The list of available frame reskins (they are purely cosmetic) and the associated patronage amount required for them. |
| gallery_programs | Live Art Galaxy programs to refresh after gallery or status changes. |
| nova_import_busy | Ckeys with an active confirmation/import flow, shared across devices. |
| nova_import_status | Latest player-facing import outcome or progress message, keyed by ckey. |
| nova_painting_ids_by_owner | Only IDs for accounts offered an import; null means not checked, an empty list means no matches. |
| owner_painting_data | Owner UI data is populated on demand and invalidated after committed changes. |
| painting_frames | A list of painting frames that this controls |
| paintings | A list of /datum/paintings saved or ready to be saved this round. |
| paintings_by_id | Committed painting datums by MD5; reused so open canvases keep their references. |
| pending_canvases | Include unframed canvases when checking conflicts with imported identities. |
| store_busy | One queue worker owns mutations until every pending request completes. |
| store_error | Initialization or recovery failure explaining why painting writes are disabled. |
| store_queue | FIFO requests with payload, completion flag, and result; released when drained. |
| store_writable | Enabled only after the native helper recovers and validates the live store. |
Procs | |
| apply_store_snapshot | Reuse painting datums from committed metadata and refresh indexes, assets, and open galleries. |
| cache_gallery_owners | Invalidate owner payloads; the ID index also lets snapshot loading reuse live painting datums. |
| can_retry_nova_import | Allow confirmed importers to retry when source availability is unknown or owned records remain absent. |
| execute_store_operation | Rebuild each queued operation against the latest committed bytes, never a stale live-datum dump. |
| get_available_frames | returns a list of cosmetic frames which patronage tier values are are within credit_value. If only_current_tier is TRUE, the list will be populated only by the ones from the highest tier. |
| get_owned_paintings | Build only the authenticated owner's payload, once per committed snapshot. |
| get_paintings_with_tag | Returns paintings with given tag. |
| initialize_store | Recover and migrate through the native helper; failures leave writes disabled and allow intact v3 data to be viewed. |
| migrate_to_version_1 | Merge legacy category entries by identity and prepare image copies for the shared transaction. |
| migrate_to_version_2 | Add patronage-tier cosmetic frames to version-1 records without writing files directly. |
| offer_nova_import | UI entry points share this gate. No UI update tick can spawn another dialog. |
| painting_ui_data | Generates painting data ready to be consumed by ui. Args: |
| patch_painting | Queue named metadata changes with optional ownership and stale-value checks at execution time. |
| pending_canvas_ids | Collect unsaved local pixel identities so imports cannot claim artwork still being created. |
| perform_nova_import_offer | Validate owned source records and obtain import consent; closing the second prompt keeps imported art private. |
| prepare_nova_import | Release other owners' records before waiting for input; keep the full-source SHA for native verification. |
| process_store_queue | Drain mutations serially, report failures, and release temporary files and canvas save guards. |
| refresh_gallery_uis | Invalidate searches after commits; only open Art Galaxy views need UI or new asset updates. |
| remove_deleted_painting_frames | Remove displayed canvases only after deletion has committed, for player and administrator actions alike. |
| run_store_operation | Queue a mutation and wait for its result; player dialogs must finish before calling this proc. |
| save_paintings | Saves all persistent paintings |
| save_to_file | All changes now commit explicitly; this compatibility hook refreshes external changes. |
| stage_painting_image | Write one new painting's PNG into its own staging directory, for the commit to promote or the queue to clean up. |
| store_call | Isolated for unit tests; only the native helper resolves filesystem paths. |
| store_request | Poll asynchronous native work cooperatively and release its caller lease after a failed response. |
| store_result_message | Extract a storage failure message with a safe fallback for incomplete responses. |
| update_format | Updates paintings data format to latest if necessary |
Var Details
admin_painting_data 
A list of paintings' data for paintings that are currently stored in the library, with admin metadata
cached_painting_data 
A list of paintings' data for paintings that are currently stored in the library.
deleted_paintings_md5s 
Hashes of paintings deleted this round
frame_types_by_patronage_tier 
The list of available frame reskins (they are purely cosmetic) and the associated patronage amount required for them.
gallery_programs 
Live Art Galaxy programs to refresh after gallery or status changes.
nova_import_busy 
Ckeys with an active confirmation/import flow, shared across devices.
nova_import_status 
Latest player-facing import outcome or progress message, keyed by ckey.
nova_painting_ids_by_owner 
Only IDs for accounts offered an import; null means not checked, an empty list means no matches.
owner_painting_data 
Owner UI data is populated on demand and invalidated after committed changes.
painting_frames 
A list of painting frames that this controls
paintings 
A list of /datum/paintings saved or ready to be saved this round.
paintings_by_id 
Committed painting datums by MD5; reused so open canvases keep their references.
pending_canvases 
Include unframed canvases when checking conflicts with imported identities.
store_busy 
One queue worker owns mutations until every pending request completes.
store_error 
Initialization or recovery failure explaining why painting writes are disabled.
store_queue 
FIFO requests with payload, completion flag, and result; released when drained.
store_writable 
Enabled only after the native helper recovers and validates the live store.
Proc Details
apply_store_snapshot
Reuse painting datums from committed metadata and refresh indexes, assets, and open galleries.
cache_gallery_owners
Invalidate owner payloads; the ID index also lets snapshot loading reuse live painting datums.
can_retry_nova_import
Allow confirmed importers to retry when source availability is unknown or owned records remain absent.
execute_store_operation
Rebuild each queued operation against the latest committed bytes, never a stale live-datum dump.
get_available_frames
returns a list of cosmetic frames which patronage tier values are are within credit_value. If only_current_tier is TRUE, the list will be populated only by the ones from the highest tier.
get_owned_paintings
Build only the authenticated owner's payload, once per committed snapshot.
get_paintings_with_tag
Returns paintings with given tag.
initialize_store
Recover and migrate through the native helper; failures leave writes disabled and allow intact v3 data to be viewed.
migrate_to_version_1
Merge legacy category entries by identity and prepare image copies for the shared transaction.
migrate_to_version_2
Add patronage-tier cosmetic frames to version-1 records without writing files directly.
offer_nova_import
UI entry points share this gate. No UI update tick can spawn another dialog.
painting_ui_data
Generates painting data ready to be consumed by ui. Args:
- filter: a bitfield argument is used to filter out paintings that don't match certain requisites.
- admin : whether all the json data of the painting is added to the return value or only the more IC details
- search_text : text to search for if the PAINTINGS_FILTER_SEARCH_TITLE or PAINTINGS_FILTER_SEARCH_CREATOR filters are enabled.
patch_painting
Queue named metadata changes with optional ownership and stale-value checks at execution time.
pending_canvas_ids
Collect unsaved local pixel identities so imports cannot claim artwork still being created.
perform_nova_import_offer
Validate owned source records and obtain import consent; closing the second prompt keeps imported art private.
prepare_nova_import
Release other owners' records before waiting for input; keep the full-source SHA for native verification.
process_store_queue
Drain mutations serially, report failures, and release temporary files and canvas save guards.
refresh_gallery_uis
Invalidate searches after commits; only open Art Galaxy views need UI or new asset updates.
remove_deleted_painting_frames
Remove displayed canvases only after deletion has committed, for player and administrator actions alike.
run_store_operation
Queue a mutation and wait for its result; player dialogs must finish before calling this proc.
save_paintings
Saves all persistent paintings
save_to_file
All changes now commit explicitly; this compatibility hook refreshes external changes.
stage_painting_image
Write one new painting's PNG into its own staging directory, for the commit to promote or the queue to clean up.
store_call
Isolated for unit tests; only the native helper resolves filesystem paths.
store_request
Poll asynchronous native work cooperatively and release its caller lease after a failed response.
store_result_message
Extract a storage failure message with a safe fallback for incomplete responses.
update_format
Updates paintings data format to latest if necessary