{"access":{"card_art":{"scope":"public"},"deck_level":{"scope":"public"},"deck_progress":{"scope":"public"},"card_set":{"scope":"public"},"flashcard":{"scope":"public"},"me":{"owner":"id","scope":"private"},"favorite":{"owner":"user_id","scope":"private"},"favorite_count":{"owner":"user_id","scope":"private"},"deck_stats":{"scope":"public"},"deck_translation":{"scope":"public"},"card_translation":{"scope":"public"},"generation_draft":{"scope":"public"}},"actors":{"generationProgress":{"via":"observe","lifetime":"attachment","table":"deck_progress","machine":"DeckProgressMachine","field":"status","match":{"id":"set_id","run":"run"},"event":"signal:deck_progress."},"legacyGenerationRun":{"via":"observe","lifetime":"attachment","table":"deck_progress","field":"run","match":{"id":"set_id"},"event":"signal:legacy.run","suffix":false},"legacyGenerationDeck":{"via":"observe","lifetime":"attachment","table":"card_set","match":{"id":"set_id"},"missing":"signal:legacy.deck.removed"},"generationDeck":{"via":"observe","lifetime":"attachment","table":"card_set","match":{"id":"set_id"},"missing":"signal:deck.removed","require":["run"]}},"ai":{"text":["browser","cheap","heavy"],"image":["browser","cheap","heavy"],"targets":{"local":{"text":{"cheap":"gemma3:1b","heavy":"gemma3:4b"},"image":{"cheap":{"model":"sd-turbo-q8_0","size":"256x256","steps":1},"heavy":{"model":"flux1-schnell-q4_k","size":"384x384","steps":2}}},"cloudflare":{"image":{"heavy":{"provider":"google","model":"gemini-3.1-flash-lite-image","params":{"generationConfig":{"imageConfig":{"aspectRatio":"1:1"}}}}}}}},"app":"snapcards","auth":{"required":false,"service":"/auth","promote":true,"providers":["google"],"mode":"passkey"},"cortex":{"config":{"id":"snapcards","initial":"routing","meta":{"host":"omnishell"},"on":{"route:cards":{"reenter":true,"target":".cards"},"route:generate":{"reenter":true,"target":".generate"},"route:explore":{"reenter":true,"target":".explore"},"route:deck":{"reenter":true,"target":".deck"},"route:card":{"reenter":true,"target":".card"},"route:print":{"reenter":true,"target":".print"},"route:about":{"reenter":true,"target":".about"}},"states":{"routing":{},"cards":{"initial":"loading","invoke":{"src":"cardsRows"},"meta":{"screen":"cards"},"states":{"loading":{"invoke":{"src":"navigate","onDone":"ready","onError":"failed"}},"ready":{},"failed":{}}},"generate":{"initial":"loading","invoke":{"src":"generateRows"},"meta":{"screen":"generate"},"states":{"loading":{"invoke":{"src":"navigate","onDone":"ready","onError":"failed"}},"ready":{},"failed":{}}},"explore":{"initial":"loading","invoke":{"src":"exploreRows"},"meta":{"screen":"explore"},"states":{"loading":{"invoke":{"src":"navigate","onDone":"ready","onError":"failed"}},"ready":{},"failed":{}}},"deck":{"initial":"loading","meta":{"screen":"deck"},"states":{"loading":{"invoke":{"src":"navigate","onDone":"ready","onError":"failed"}},"ready":{},"failed":{}}},"card":{"initial":"loading","invoke":{"src":"cardRows"},"meta":{"screen":"card"},"states":{"loading":{"invoke":{"src":"navigate","onDone":"ready","onError":"failed"}},"ready":{},"failed":{}}},"print":{"initial":"loading","invoke":{"src":"printRows"},"meta":{"screen":"print"},"states":{"loading":{"invoke":{"src":"navigate","onDone":"ready","onError":"failed"}},"ready":{},"failed":{}}},"about":{"initial":"loading","invoke":{"src":"aboutRows"},"meta":{"screen":"about"},"states":{"loading":{"invoke":{"src":"navigate","onDone":"ready","onError":"failed"}},"ready":{},"failed":{}}}}},"actors":{"navigate":{"via":"navigation"},"aboutRows":{"via":"rows","lifetime":"attachment","screen":"about","charts":{"theme":{"field":"theme","initial":"auto","states":{"auto":{"on":{"click@theme-light":"light","click@theme-dark":"dark"}},"light":{"on":{"click@theme-auto":"auto","click@theme-dark":"dark"}},"dark":{"on":{"click@theme-auto":"auto","click@theme-light":"light"}}}}}},"cardRows":{"via":"rows","lifetime":"attachment","screen":"card","charts":{"theme":{"field":"theme","initial":"auto","states":{"auto":{"on":{"click@theme-light":"light","click@theme-dark":"dark"}},"light":{"on":{"click@theme-auto":"auto","click@theme-dark":"dark"}},"dark":{"on":{"click@theme-auto":"auto","click@theme-light":"light"}}}},"study":[{"field":"status","initial":"playing","on":{"click@btn-top-login":"login"},"states":{"playing":{"on":{"click@btn-fullscreen-toggle":"fullscreen"},"always":[{"guard":{"type":"row-is","params":{"finished":"yes"}},"target":"completed"}]},"fullscreen":{"on":{"click@btn-fullscreen-exit":"playing","click@btn-fullscreen-toggle":"playing"},"always":[{"guard":{"type":"row-is","params":{"finished":"yes"}},"target":"completed"}]},"login":{"on":{"click@btn-login-close":"playing","click@btn-auth-guest":{"target":"playing","assign":{"emoji":"👤"}},"click@btn-auth-passkey":{"target":"playing","assign":{"emoji":"🔑"}},"click@btn-auth-google":{"target":"playing","assign":{"emoji":"🌐"}}}},"completed":{"on":{"click@btn-restart":{"target":"playing","assign":{"finished":""}}},"always":[{"guard":{"type":"row-is","params":{"finished":""}},"target":"playing"}]}}},{"field":"flipped","initial":"no","states":{"no":{"on":{"click@card-flip-visual":"yes","click@card-flip-prompt":"yes"}},"yes":{"on":{"click@card-flip-back":"no","click@card-flip-back-prompt":"no"}}}}],"deletion":{"field":"state","initial":"idle","states":{"idle":{"on":{"click":"armed"}},"armed":{"on":{"click":"confirmed"},"after":{"4000":"idle"}},"confirmed":{}}}}},"cardsRows":{"via":"rows","lifetime":"attachment","screen":"cards","charts":{"theme":{"field":"theme","initial":"auto","states":{"auto":{"on":{"click@theme-light":"light","click@theme-dark":"dark"}},"light":{"on":{"click@theme-auto":"auto","click@theme-dark":"dark"}},"dark":{"on":{"click@theme-auto":"auto","click@theme-light":"light"}}}},"library":{"field":"status","initial":"playing","on":{"input@library-search":{"assign":{"library_query":{"type":"event","params":{"field":"value"}}}},"change@library-search":{"assign":{"library_query":{"type":"event","params":{"field":"value"}}}},"click@lbl-cat-all":{"assign":{"library_query":""}},"click@lbl-cat-animals":{"assign":{"library_query":""}},"click@lbl-cat-fruits":{"assign":{"library_query":""}},"click@lbl-cat-words":{"assign":{"library_query":""}},"click@btn-top-login":"login"},"states":{"playing":{"on":{},"always":[{"guard":{"type":"row-is","params":{"finished":"yes"}},"target":"completed"}]},"login":{"on":{"click@btn-login-close":"playing","click@btn-auth-guest":{"target":"playing","assign":{"emoji":"👤"}},"click@btn-auth-passkey":{"target":"playing","assign":{"emoji":"🔑"}},"click@btn-auth-google":{"target":"playing","assign":{"emoji":"🌐"}}}},"completed":{"on":{},"always":[{"guard":{"type":"row-is","params":{"finished":""}},"target":"playing"}]}}}}},"exploreRows":{"via":"rows","lifetime":"attachment","screen":"explore","charts":{"theme":{"field":"theme","initial":"auto","states":{"auto":{"on":{"click@theme-light":"light","click@theme-dark":"dark"}},"light":{"on":{"click@theme-auto":"auto","click@theme-dark":"dark"}},"dark":{"on":{"click@theme-auto":"auto","click@theme-light":"light"}}}},"study":[{"field":"status","initial":"playing","on":{"click@btn-top-login":"login"},"states":{"playing":{"on":{"click@btn-fullscreen-toggle":"fullscreen"},"always":[{"guard":{"type":"row-is","params":{"finished":"yes"}},"target":"completed"}]},"fullscreen":{"on":{"click@btn-fullscreen-exit":"playing","click@btn-fullscreen-toggle":"playing"},"always":[{"guard":{"type":"row-is","params":{"finished":"yes"}},"target":"completed"}]},"login":{"on":{"click@btn-login-close":"playing","click@btn-auth-guest":{"target":"playing","assign":{"emoji":"👤"}},"click@btn-auth-passkey":{"target":"playing","assign":{"emoji":"🔑"}},"click@btn-auth-google":{"target":"playing","assign":{"emoji":"🌐"}}}},"completed":{"on":{"click@btn-restart":{"target":"playing","assign":{"finished":""}}},"always":[{"guard":{"type":"row-is","params":{"finished":""}},"target":"playing"}]}}},{"field":"flipped","initial":"no","states":{"no":{"on":{"click@card-flip-visual":"yes","click@card-flip-prompt":"yes"}},"yes":{"on":{"click@card-flip-back":"no","click@card-flip-back-prompt":"no"}}}}],"deletion":{"field":"state","initial":"idle","states":{"idle":{"on":{"click":"armed"}},"armed":{"on":{"click":"confirmed"},"after":{"4000":"idle"}},"confirmed":{}}}}},"generateRows":{"via":"rows","lifetime":"attachment","screen":"generate","charts":{"theme":{"field":"theme","initial":"auto","states":{"auto":{"on":{"click@theme-light":"light","click@theme-dark":"dark"}},"light":{"on":{"click@theme-auto":"auto","click@theme-dark":"dark"}},"dark":{"on":{"click@theme-auto":"auto","click@theme-light":"light"}}}},"account":{"field":"status","initial":"playing","on":{"click@btn-top-login":"login"},"states":{"playing":{"on":{},"always":[{"guard":{"type":"row-is","params":{"finished":"yes"}},"target":"completed"}]},"login":{"on":{"click@btn-login-close":"playing","click@btn-auth-guest":{"target":"playing","assign":{"emoji":"👤"}},"click@btn-auth-passkey":{"target":"playing","assign":{"emoji":"🔑"}},"click@btn-auth-google":{"target":"playing","assign":{"emoji":"🌐"}}}},"completed":{"on":{},"always":[{"guard":{"type":"row-is","params":{"finished":""}},"target":"playing"}]}}},"generation":{"field":"status","initial":"idle","on":{"signal:legacy.run":{"guard":"legacy-generation-run","assign":{"run":{"type":"event","params":{"field":"value"}}}},"signal:legacy.deck.removed":{"guard":{"type":"row-is","params":{"run":""}},"target":"idle","reenter":false,"assign":{"set_id":"","run":""}},"input@topic-input":{"target":"idle","assign":{"topic":{"type":"event","params":{"field":"value"}},"category":"","run":""}},"keydown@topic-input":{"guard":{"type":"tab-fill","params":{"key":"Tab","value":""}},"target":"idle","assign":{"run":""}},"input@details-input":{"assign":{"details":{"type":"event","params":{"field":"value"}}},"raise":"edited"},"input@category-input":{"assign":{"category":{"type":"event","params":{"field":"value"}}},"raise":"edited"},"input@locale-input":{"assign":{"locale":{"type":"event","params":{"field":"value"}}},"raise":"edited"},"input@region-input":{"assign":{"region":{"type":"event","params":{"field":"value"}}},"raise":"edited"},"input@difficulty-select":{"assign":{"audience":{"type":"event","params":{"field":"value"}},"audience_key":""},"raise":"edited"},"keydown@category-input":{"guard":{"type":"tab-fill","params":{"key":"Tab","value":""}},"raise":"edited"},"keydown@locale-input":{"guard":{"type":"tab-fill","params":{"key":"Tab","value":""}},"raise":"edited"},"keydown@region-input":{"guard":{"type":"tab-fill","params":{"key":"Tab","value":""}},"raise":"edited"},"keydown@difficulty-select":{"guard":{"type":"tab-fill","params":{"key":"Tab","value":""}},"raise":"edited"},"click@audience-toddler":{"assign":{"audience_key":"diff_toddler","audience":""},"raise":"edited"},"click@audience-kids":{"assign":{"audience_key":"diff_kids","audience":""},"raise":"edited"},"click@audience-teens":{"assign":{"audience_key":"diff_teens","audience":""},"raise":"edited"},"click@locale-opt-pt":{"assign":{"locale":"Português"},"raise":"edited"},"click@locale-opt-es":{"assign":{"locale":"Español"},"raise":"edited"},"click@locale-opt-en":{"assign":{"locale":"English"},"raise":"edited"},"click@locale-opt-he":{"assign":{"locale":"עברית"},"raise":"edited"},"click@locale-opt-zh":{"assign":{"locale":"中文"},"raise":"edited"},"click@locale-opt-fr":{"assign":{"locale":"Français"},"raise":"edited"},"click@locale-opt-de":{"assign":{"locale":"Deutsch"},"raise":"edited"},"click@locale-opt-it":{"assign":{"locale":"Italiano"},"raise":"edited"},"click@locale-opt-ja":{"assign":{"locale":"日本語"},"raise":"edited"},"click@locale-opt-klingon":{"assign":{"locale":"Klingon"},"raise":"edited"},"click@count-pill-5":{"assign":{"card_count":5},"raise":"edited"},"click@count-pill-10":{"assign":{"card_count":10},"raise":"edited"},"click@count-pill-15":{"assign":{"card_count":15},"raise":"edited"},"click@count-pill-20":{"assign":{"card_count":20},"raise":"edited"},"change@card-count-select":[{"guard":{"type":"value-is","params":{"value":"5"}},"assign":{"card_count":5},"raise":"edited"},{"guard":{"type":"value-is","params":{"value":"10"}},"assign":{"card_count":10},"raise":"edited"},{"guard":{"type":"value-is","params":{"value":"15"}},"assign":{"card_count":15},"raise":"edited"},{"guard":{"type":"value-is","params":{"value":"20"}},"assign":{"card_count":20},"raise":"edited"}],"click@quick-animals":{"target":"idle","assign":{"run":""}},"click@quick-planets":{"target":"idle","assign":{"run":""}},"click@quick-fruits":{"target":"idle","assign":{"run":""}},"click@quick-home":{"target":"idle","assign":{"run":""}},"click@quick-letters":{"target":"idle","assign":{"run":""}},"click@draft-geo-city":{"target":"idle","assign":{"run":""}},"click@draft-loc-pt":{"target":"idle","assign":{"run":""}},"click@draft-loc-es":{"target":"idle","assign":{"run":""}},"click@draft-loc-en":{"target":"idle","assign":{"run":""}},"click@draft-loc-he":{"target":"idle","assign":{"run":""}},"click@draft-loc-zh":{"target":"idle","assign":{"run":""}},"click@draft-loc-fr":{"target":"idle","assign":{"run":""}},"click@draft-loc-de":{"target":"idle","assign":{"run":""}},"click@draft-loc-it":{"target":"idle","assign":{"run":""}},"click@draft-loc-ja":{"target":"idle","assign":{"run":""}}},"states":{"idle":{"on":{"click@btn-create":{"target":"generating","assign":{"set_id":"","run":""},"effect":{"op":"create","entity":"generation_ask","values":{"set_id":"","run":"","input":{"type":"generation-input"},"created_at":"{now}"}}},"signal:deck.removed":{"target":"idle","assign":{"set_id":"","run":""}}}},"generating":{"on":{"click@btn-create":{"target":"generating","assign":{"set_id":"","run":""},"effect":{"op":"create","entity":"generation_ask","values":{"set_id":"","run":"","input":{"type":"generation-input"},"created_at":"{now}"}}},"signal:deck.removed":{"target":"idle","reenter":false,"assign":{"set_id":"","run":""}},"signal:deck_progress.drafting":{"target":"generating","reenter":false,"assign":{"next":2}},"signal:deck_progress.drawing2":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing23":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawn2_complete":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_partial":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_failed":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing3_complete":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_partial":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_failed":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.done":{"target":"done","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.partial":{"target":"partial","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.failed":{"target":"failed","reenter":false,"assign":{"next":0,"words":"complete"}}},"invoke":[{"src":"legacyGenerationRun","id":"legacy-run"},{"src":"legacyGenerationDeck","id":"legacy-deck"},{"src":"generationProgress","id":"progress"},{"src":"generationDeck","id":"deck"}]},"done":{"on":{"click@btn-create":{"target":"generating","assign":{"set_id":"","run":""},"effect":{"op":"create","entity":"generation_ask","values":{"set_id":"","run":"","input":{"type":"generation-input"},"created_at":"{now}"}}},"edited":{"target":"idle","assign":{"run":""}},"signal:deck.removed":{"target":"idle","reenter":false,"assign":{"set_id":"","run":""}},"signal:deck_progress.drafting":{"target":"generating","reenter":false,"assign":{"next":2}},"signal:deck_progress.drawing2":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing23":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawn2_complete":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_partial":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_failed":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing3_complete":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_partial":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_failed":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.done":{"target":"done","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.partial":{"target":"partial","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.failed":{"target":"failed","reenter":false,"assign":{"next":0,"words":"complete"}}},"invoke":[{"src":"legacyGenerationRun","id":"legacy-run"},{"src":"legacyGenerationDeck","id":"legacy-deck"},{"src":"generationProgress","id":"progress"},{"src":"generationDeck","id":"deck"}]},"partial":{"on":{"click@btn-create":{"target":"generating","assign":{"set_id":"","run":""},"effect":{"op":"create","entity":"generation_ask","values":{"set_id":"","run":"","input":{"type":"generation-input"},"created_at":"{now}"}}},"edited":{"target":"idle","assign":{"run":""}},"signal:deck.removed":{"target":"idle","reenter":false,"assign":{"set_id":"","run":""}},"signal:deck_progress.drafting":{"target":"generating","reenter":false,"assign":{"next":2}},"signal:deck_progress.drawing2":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing23":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawn2_complete":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_partial":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_failed":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing3_complete":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_partial":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_failed":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.done":{"target":"done","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.partial":{"target":"partial","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.failed":{"target":"failed","reenter":false,"assign":{"next":0,"words":"complete"}}},"invoke":[{"src":"legacyGenerationRun","id":"legacy-run"},{"src":"legacyGenerationDeck","id":"legacy-deck"},{"src":"generationProgress","id":"progress"},{"src":"generationDeck","id":"deck"}]},"failed":{"on":{"click@btn-create":{"target":"generating","assign":{"set_id":"","run":""},"effect":{"op":"create","entity":"generation_ask","values":{"set_id":"","run":"","input":{"type":"generation-input"},"created_at":"{now}"}}},"edited":{"target":"idle","assign":{"run":""}},"signal:deck.removed":{"target":"idle","reenter":false,"assign":{"set_id":"","run":""}},"signal:deck_progress.drafting":{"target":"generating","reenter":false,"assign":{"next":2}},"signal:deck_progress.drawing2":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing23":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawn2_complete":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_partial":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawn2_failed":{"target":"generating","reenter":false,"assign":{"next":3,"words":"complete"}},"signal:deck_progress.drawing3_complete":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_partial":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.drawing3_failed":{"target":"generating","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.done":{"target":"done","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.partial":{"target":"partial","reenter":false,"assign":{"next":0,"words":"complete"}},"signal:deck_progress.failed":{"target":"failed","reenter":false,"assign":{"next":0,"words":"complete"}}},"invoke":[{"src":"legacyGenerationRun","id":"legacy-run"},{"src":"legacyGenerationDeck","id":"legacy-deck"},{"src":"generationProgress","id":"progress"},{"src":"generationDeck","id":"deck"}]}}},"collectionSelection":{"field":"status","initial":"playing","on":{},"states":{"playing":{},"fullscreen":{},"login":{},"completed":{}}},"preview":{"field":"status","initial":"idle","on":{"click@btn-create-more":{"target":"idle","assign":{"run":""}}},"states":{"idle":{},"generating":{},"done":{},"partial":{},"failed":{}}}}},"printRows":{"via":"rows","lifetime":"attachment","screen":"print","charts":{"theme":{"field":"theme","initial":"auto","states":{"auto":{"on":{"click@theme-light":"light","click@theme-dark":"dark"}},"light":{"on":{"click@theme-auto":"auto","click@theme-dark":"dark"}},"dark":{"on":{"click@theme-auto":"auto","click@theme-light":"light"}}}},"selection":{"field":"status","initial":"playing","on":{"input@deck-search-input":{"assign":{"back":{"type":"event","params":{"field":"value"}}}},"change@deck-search-input":{"assign":{"back":{"type":"event","params":{"field":"value"}}}},"click@btn-window-print":{},"click@btn-print-trigger":{},"click@btn-top-login":"login"},"states":{"playing":{"on":{},"always":[{"guard":{"type":"row-is","params":{"finished":"yes"}},"target":"completed"}]},"login":{"on":{"click@btn-login-close":"playing","click@btn-auth-guest":{"target":"playing","assign":{"emoji":"👤"}},"click@btn-auth-passkey":{"target":"playing","assign":{"emoji":"🔑"}},"click@btn-auth-google":{"target":"playing","assign":{"emoji":"🌐"}}}},"completed":{"on":{},"always":[{"guard":{"type":"row-is","params":{"finished":""}},"target":"playing"}]}}},"settings":[{"field":"vendor","initial":"print_at_home","states":{"print_at_home":{"on":{"click@btn-print-vendor":"print_shop"}},"print_shop":{"on":{"click@btn-print-vendor":"prodigi"}},"prodigi":{"on":{"click@btn-print-vendor":"print_at_home"}}}},{"field":"stock","initial":"gloss","states":{"gloss":{"on":{"click@btn-print-stock":"mohawk"}},"mohawk":{"on":{"click@btn-print-stock":"gloss"}}}},{"field":"paper","initial":"a4","states":{"a4":{"on":{"click@btn-print-paper":"letter"}},"letter":{"on":{"click@btn-print-paper":"a4"}}}},{"field":"orientation","initial":"portrait","states":{"portrait":{"on":{"click@btn-print-orientation":"landscape"}},"landscape":{"on":{"click@btn-print-orientation":"portrait"}}}},{"field":"card_size","initial":"standard","states":{"standard":{"on":{"click@btn-print-size":"jumbo"}},"jumbo":{"on":{"click@btn-print-size":"poster"}},"poster":{"on":{"click@btn-print-size":"mini"}},"mini":{"on":{"click@btn-print-size":"standard"}}}},{"field":"layout","initial":"fold","states":{"fold":{"on":{"click@btn-print-grid":"duplex_h"}},"duplex_h":{"on":{"click@btn-print-grid":"duplex_v"}},"duplex_v":{"on":{"click@btn-print-grid":"2x2"}},"2x2":{"on":{"click@btn-print-grid":"3x3"}},"3x3":{"on":{"click@btn-print-grid":"fold"}}}},{"field":"cut_lines","initial":"yes","states":{"yes":{"on":{"click@btn-print-lines":"no"}},"no":{"on":{"click@btn-print-lines":"yes"}}}}]}}}},"endowments":{"shell/handlers/create_set.js":["Statechart"],"shell/handlers/play_select.js":["Statechart"],"shell/handlers/play_next.js":["Statechart"],"shell/handlers/play_prev.js":["Statechart"],"shell/handlers/play_master.js":["Statechart"],"shell/handlers/play_restart.js":["Statechart"],"shell/handlers/print_select.js":["Statechart"]},"floors":{"touch":24},"hostDom":{"window-print":{"src":"shell/hatches/window-print.js","note":"calls window.print() when the user clicks #btn-window-print"},"print-checkout":{"src":"shell/hatches/print-checkout.js","note":"Draws each card's 6×4 in artwork on a canvas and uploads it, opens Checkout from the order row and shows its state; for a print shop, composes one A6 page per face for the browser's print dialog; Pages simulates the external services."}},"i18n":{"default":"pt","locales":{"pt":{"path":"pt"},"es":{"path":"es"},"en":{"path":"en"},"he":{"path":"he"},"zh":{"path":"zh"}}},"keys":{"deck_stats":"deck_id"},"local":{"device":"device","play_session":"tab","print_config":"tab","generation_form":"device","localized_deck":"tab","localized_card":"tab","generation_ask":"tab","browser_draft":"tab","card_delete":"tab","next_picture":"tab","delivery_draft":"device","delivery_choice":"tab","place_answer":"tab","place_suggestion":"tab"},"optional":{"delivery_draft":[{"name":"near","type":"string"},{"name":"phone","type":"string"},{"name":"email","type":"string"},{"name":"district","type":"string"},{"name":"pin_stale","type":"string"},{"name":"line2_stale","type":"string"},{"name":"line2_ghost","type":"string"},{"name":"search_stale","type":"string"},{"name":"order_id","type":"string"}],"place_suggestion":[{"name":"district","type":"string"}]},"read":{"card_art":"lazy","deck_level":"lazy","deck_progress":"lazy","flashcard":"lazy","deck_stats":"lazy","card_translation":"lazy","generation_draft":"lazy"},"seed":{"play_session":[{"id":"session","set_id":"69618be6-9206-f9c7-59eb-b5e4b072cf3d","card_index":0,"flipped":"no","mastered":0,"total":20,"status":"playing","front":"","back":"","card_id":"","emoji":"","hint":"","library_query":"","original_front":"","translation_failed_topic":""}],"print_config":[{"id":"config","set_id":"69618be6-9206-f9c7-59eb-b5e4b072cf3d","paper":"a4","card_size":"standard","layout":"fold","cut_lines":"yes","orientation":"portrait","vendor":"print_at_home","stock":"gloss"}]},"seedBlobs":{"dir":"assets/seed"},"server":true,"routes":[{"hatches":["window-print"],"path":"/:shelf?","screen":"cards","nav":{"entries":[{"label":"My Cards","key":"nav_my_cards","params":{"shelf":"mine"}},{"label":"Gallery","key":"nav_gallery","params":{"shelf":"gallery"}}],"key":"nav_cards","label":"Cards"},"files":{"adapters":[],"handlers":["shell/handlers/create_set.js","shell/handlers/localize_content.js","shell/handlers/play_select.js","shell/handlers/print_select.js","shell/handlers/row-is.js"],"shared":["shell/shared/chrome-ready.css","shell/shared/chrome.css","shell/shared/nav.css"],"html":"screens/cards.html","css":"shell/screens/cards.css"},"ssr":"ssr","states":["browse"]},{"hatches":["window-print"],"path":"/generate","screen":"generate","nav":{"key":"nav_generate","label":"Generate"},"files":{"adapters":[],"handlers":["shell/handlers/create_set.js","shell/handlers/generation-input.js","shell/handlers/legacy-generation-run.js","shell/handlers/localize_content.js","shell/handlers/play_select.js","shell/handlers/row-is.js","shell/handlers/tab-fill.js","shell/handlers/value-is.js"],"shared":["shell/shared/chrome-ready.css","shell/shared/chrome.css","shell/shared/nav.css"],"html":"screens/generate.html","css":"shell/screens/generate.css"},"ssr":"ssr","states":["form"]},{"hatches":["window-print"],"path":"/explore","screen":"explore","nav":{"key":"nav_explore","label":"Explore"},"files":{"adapters":[],"handlers":["shell/handlers/create_set.js","shell/handlers/localize_content.js","shell/handlers/play_master.js","shell/handlers/play_next.js","shell/handlers/play_prev.js","shell/handlers/play_restart.js","shell/handlers/play_select.js","shell/handlers/print_select.js","shell/handlers/row-is.js"],"shared":["shell/shared/chrome-ready.css","shell/shared/chrome.css","shell/shared/nav.css","shell/shared/translation-feedback.css","shell/shared/card-art.css"],"html":"screens/explore.html","css":"shell/screens/explore.css"},"ssr":"ssr","states":["playing","completed"]},{"hatches":["window-print"],"keep":0,"path":"/explore/:deck","screen":"deck","nav":{"label":"Explore Deck","strip":false},"files":{"adapters":[],"handlers":["shell/handlers/play_select.js"],"shared":["shell/shared/chrome-ready.css","shell/shared/chrome.css","shell/shared/nav.css"],"html":"shell/screens/deck.html","css":"shell/screens/deck.css"},"ssr":"ssr","states":["playing","completed"]},{"hatches":["window-print"],"path":"/explore/:deck/:card","screen":"card","nav":{"label":"Explore Card","strip":false},"files":{"adapters":[],"handlers":["shell/handlers/create_set.js","shell/handlers/localize_content.js","shell/handlers/play_master.js","shell/handlers/play_next.js","shell/handlers/play_prev.js","shell/handlers/play_restart.js","shell/handlers/play_select.js","shell/handlers/print_select.js","shell/handlers/row-is.js"],"shared":["shell/shared/chrome-ready.css","shell/shared/chrome.css","shell/shared/nav.css","shell/shared/translation-feedback.css","shell/shared/card-art.css"],"html":"screens/card.html","css":"shell/screens/card.css"},"ssr":"ssr","states":["playing","completed"]},{"hatches":["window-print","print-checkout"],"path":"/print","screen":"print","nav":{"key":"nav_print","label":"Print Studio"},"files":{"adapters":[],"handlers":["shell/handlers/create_set.js","shell/handlers/delivery_accept.js","shell/handlers/delivery_address_q.js","shell/handlers/delivery_found.js","shell/handlers/delivery_offers.js","shell/handlers/delivery_pin.js","shell/handlers/delivery_submitted.js","shell/handlers/is_key.js","shell/handlers/localize_content.js","shell/handlers/print_select.js","shell/handlers/row-is.js"],"shared":["shell/shared/chrome-ready.css","shell/shared/chrome.css","shell/shared/nav.css","shell/shared/address-formats.css"],"html":"screens/print.html","css":"shell/screens/print.css"},"ssr":"ssr","states":["ready"]},{"hatches":["window-print"],"path":"/about","prerender":true,"screen":"about","nav":{"key":"nav_about","label":"About"},"files":{"adapters":[],"handlers":[],"shared":["shell/shared/chrome-ready.css","shell/shared/chrome.css","shell/shared/nav.css"],"html":"shell/screens/about.html","css":"shell/screens/about.css"},"ssr":"ssg","states":["reading"]}],"tables":["card_art","card_set","card_translation","deck_level","deck_progress","deck_stats","deck_translation","favorite","favorite_count","flashcard","generation_draft","me"],"schema":{"card_art":{"durability":"live","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"card_id","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"set_id","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"run","type":"string","required":true},{"enum":["2","3"],"name":"level","type":"int32","required":true},{"bounds":{"intMin":1},"name":"position","type":"int32","required":true},{"defaulted":true,"default":"waiting","enum":["waiting","pending","drawn","failed","unknown"],"name":"status","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"detail","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"description","type":"string","required":true},{"bounds":{"intMin":0},"defaulted":true,"default":0,"name":"redraws","type":"int32","required":true}]},"deck_level":{"durability":"live","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"set_id","type":"string","required":true},{"enum":["2","3"],"name":"level","type":"int32","required":true},{"bounds":{"sizeMin":1},"name":"run","type":"string","required":true},{"bounds":{"intMin":0},"name":"total","type":"int32","required":true},{"bounds":{"intMin":0},"name":"drawn","type":"int32","required":true},{"bounds":{"intMin":0},"name":"failed","type":"int32","required":true},{"bounds":{"intMin":0},"name":"unknown","type":"int32","required":true},{"bounds":{"intMin":0},"name":"pending","type":"int32","required":true},{"defaulted":true,"default":"running","enum":["running","complete","partial","failed"],"name":"status","type":"string","required":true}]},"deck_progress":{"durability":"live","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"run","type":"string","required":true},{"defaulted":true,"default":"drafting","enum":["drafting","drawing2","drawing23","drawn2_complete","drawn2_partial","drawn2_failed","drawing3_complete","drawing3_partial","drawing3_failed","done","partial","failed"],"name":"status","type":"string","required":true}]},"card_set":{"durability":"offline","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"name","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"category","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"locale","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"region","type":"string","required":true},{"bounds":{"intMin":0},"name":"count","type":"int32","required":true},{"bounds":{"sizeMin":1},"name":"cover_emoji","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"details","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"device","type":"string","required":true},{"defaulted":true,"name":"owner","ref":"app_user","type":"uuid","required":false},{"defaulted":true,"default":"","enum":["","diff_toddler","diff_kids","diff_teens"],"name":"audience_key","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"audience","type":"string","required":true},{"bounds":{"intMin":0},"defaulted":true,"default":0,"name":"number","type":"int32","required":true}]},"flashcard":{"durability":"live","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"set_id","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"front","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"back","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"hint","type":"string","required":true},{"enum":["easy","medium","hard"],"name":"difficulty","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"emoji","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"color","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"description","type":"string","required":true},{"defaulted":true,"default":"settled","enum":["settled","drawing"],"name":"redraw","type":"string","required":true},{"defaulted":true,"name":"owner","ref":"app_user","type":"uuid","required":false}]},"me":{"durability":"live","fields":[{"name":"id","pk":true,"ref":"app_user","type":"uuid","required":true}]},"favorite":{"durability":"server","fields":[{"defaulted":true,"name":"id","pk":true,"type":"uuid","required":true},{"defaulted":true,"name":"user_id","ref":"app_user","type":"uuid","required":true},{"name":"deck_id","ref":"card_set","type":"string","required":true},{"defaulted":true,"name":"created_at","type":"timestamp","required":true},{"name":"deleted_at","type":"timestamp","required":false}],"uniques":[{"name":"uq_favorite_pair","cols":["user_id","deck_id"]}]},"favorite_count":{"durability":"live","fields":[{"name":"id","pk":true,"type":"string","required":true},{"name":"user_id","type":"uuid","required":true},{"name":"deck_id","type":"string","required":true},{"bounds":{"intMin":0,"intMax":1},"name":"mine_counted","type":"int32","required":true},{"bounds":{"intMin":0},"name":"total_at_read","type":"int32","required":true},{"name":"as_of_txid","type":"int64","required":false}],"uniques":[{"name":"uq_favorite_count_pair","cols":["user_id","deck_id"]}]},"deck_stats":{"durability":"live","fields":[{"name":"deck_id","pk":true,"type":"string","required":true},{"bounds":{"intMin":0},"defaulted":true,"default":0,"name":"favorite_count","type":"int32","required":true},{"bounds":{"intMin":0},"defaulted":true,"default":"0","name":"counted_txid","type":"int64","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"cover","type":"string","required":true}]},"deck_translation":{"durability":"offline","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"set_id","type":"string","required":true},{"enum":["pt","es","en","he","zh"],"name":"lang","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"name","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"category","type":"string","required":true}]},"card_translation":{"durability":"live","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"card_id","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"set_id","type":"string","required":true},{"enum":["pt","es","en","he","zh"],"name":"lang","type":"string","required":true},{"bounds":{"sizeMin":1},"name":"word","type":"string","required":true}]},"next_picture":{"durability":"tab","fields":[{"enum":["next"],"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":0},"name":"back","type":"string","required":true}]},"generation_ask":{"durability":"tab","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"set_id","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"run","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"input","type":"string","required":true},{"defaulted":true,"name":"created_at","type":"timestamp","required":true}]},"card_delete":{"durability":"tab","fields":[{"bounds":{"sizeMin":1},"name":"id","pk":true,"type":"string","required":true},{"defaulted":true,"default":"idle","enum":["idle","armed","confirmed"],"name":"state","type":"string","required":true}]},"localized_card":{"durability":"tab","fields":[{"name":"id","pk":true,"type":"string","required":true},{"name":"set_id","type":"string","required":true},{"name":"front","type":"string","required":true},{"name":"original_front","type":"string","required":true},{"name":"emoji","type":"string","required":true}]},"localized_deck":{"durability":"tab","fields":[{"name":"id","pk":true,"type":"string","required":true},{"name":"name","type":"string","required":true},{"name":"original_name","type":"string","required":true},{"name":"category","type":"string","required":true},{"name":"cover_emoji","type":"string","required":true},{"name":"count","type":"int32","required":true},{"name":"locale","type":"string","required":true},{"name":"region","type":"string","required":true},{"name":"owner","type":"string","required":true},{"name":"number","type":"int32","required":true}]},"play_session":{"durability":"tab","fields":[{"enum":["session"],"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"set_id","type":"string","required":true},{"bounds":{"intMin":0},"name":"card_index","type":"int32","required":true},{"enum":["no","yes"],"name":"flipped","type":"string","required":true},{"bounds":{"intMin":0},"name":"mastered","type":"int32","required":true},{"bounds":{"intMin":0},"name":"total","type":"int32","required":true},{"enum":["playing","fullscreen","login","completed"],"name":"status","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"front","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"back","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"hint","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"emoji","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"card_id","type":"string","required":true},{"name":"original_front","type":"string","required":true},{"name":"translation_failed_topic","type":"string","required":true},{"defaulted":true,"name":"library_query","type":"string","required":true},{"defaulted":true,"default":"","enum":["","yes"],"name":"finished","type":"string","required":true}]},"print_config":{"durability":"tab","fields":[{"enum":["config","press"],"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1},"name":"set_id","type":"string","required":true},{"enum":["a4","letter"],"name":"paper","type":"string","required":true},{"enum":["standard","mini","jumbo","poster"],"name":"card_size","type":"string","required":true},{"enum":["fold","duplex_h","duplex_v","2x2","3x3"],"name":"layout","type":"string","required":true},{"enum":["no","yes"],"name":"cut_lines","type":"string","required":true},{"enum":["portrait","landscape"],"name":"orientation","type":"string","required":true},{"enum":["print_at_home","print_shop","prodigi"],"name":"vendor","type":"string","required":true},{"enum":["gloss","mohawk"],"name":"stock","type":"string","required":true}]},"delivery_draft":{"durability":"device","fields":[{"enum":["draft"],"name":"id","pk":true,"type":"string","required":true},{"enum":["search","details","confirming"],"name":"step","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"text","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"search_q","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"address_q","type":"string","required":true},{"bounds":{"sizeMax":32},"name":"pin_latitude","type":"string","required":true},{"bounds":{"sizeMax":32},"name":"pin_longitude","type":"string","required":true},{"enum":["","gps","search","map"],"name":"pin_source","type":"string","required":true},{"bounds":{"sizeMax":64},"name":"pin_q","type":"string","required":true},{"bounds":{"sizeMax":64},"name":"near","type":"string","required":false},{"bounds":{"sizeMax":200},"name":"recipient","type":"string","required":true},{"bounds":{"sizeMax":40},"name":"phone","type":"string","required":false},{"bounds":{"sizeMax":254},"name":"email","type":"string","required":false},{"bounds":{"sizeMax":200},"name":"line1","type":"string","required":true},{"bounds":{"sizeMax":200},"name":"line2","type":"string","required":true},{"bounds":{"sizeMax":200},"name":"district","type":"string","required":false},{"bounds":{"sizeMax":200},"name":"city","type":"string","required":true},{"bounds":{"sizeMax":200},"name":"region","type":"string","required":true},{"bounds":{"sizeMax":40},"name":"postal_code","type":"string","required":true},{"name":"country","type":"string","required":true},{"bounds":{"sizeMax":1000},"name":"instructions","type":"string","required":true},{"enum":["","true","false"],"name":"pin_stale","type":"string","required":false},{"enum":["","true","false"],"name":"line2_stale","type":"string","required":false},{"bounds":{"sizeMax":200},"name":"line2_ghost","type":"string","required":false},{"enum":["","true","false"],"name":"search_stale","type":"string","required":false},{"bounds":{"sizeMax":64},"name":"order_id","type":"string","required":false}]},"delivery_choice":{"durability":"tab","fields":[{"enum":["a0","a1","a2","a3","a4","a5","a6","a7"],"name":"id","pk":true,"type":"string","required":true},{"enum":["search","pin"],"name":"source","type":"string","required":true},{"bounds":{"sizeMax":300},"name":"label","type":"string","required":true}]},"place_answer":{"durability":"tab","fields":[{"name":"id","pk":true,"type":"string","required":true},{"enum":["search","address","reverse"],"name":"kind","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"q","type":"string","required":true},{"bounds":{"sizeMax":8},"name":"lang","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"p0","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"p1","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"p2","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"p3","type":"string","required":true},{"bounds":{"sizeMax":2000},"name":"p4","type":"string","required":true}],"uniques":[{"name":"uq_place_answer_question","cols":["kind","q","lang"]}]},"place_suggestion":{"durability":"tab","fields":[{"enum":["s0","s1","s2","s3","s4","address","pin"],"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMax":300},"name":"label","type":"string","required":true},{"bounds":{"sizeMax":200},"name":"line1","type":"string","required":true},{"bounds":{"sizeMax":200},"name":"city","type":"string","required":true},{"bounds":{"sizeMax":200},"name":"region","type":"string","required":true},{"bounds":{"sizeMax":40},"name":"postal_code","type":"string","required":true},{"name":"country","type":"string","required":true},{"bounds":{"sizeMax":32},"name":"latitude","type":"string","required":true},{"bounds":{"sizeMax":32},"name":"longitude","type":"string","required":true},{"bounds":{"sizeMax":200},"name":"district","type":"string","required":false},{"bounds":{"sizeMax":2000},"name":"q","type":"string","required":true}]},"generation_form":{"durability":"device","fields":[{"enum":["draft"],"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":0},"name":"topic","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"category","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"locale","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"region","type":"string","required":true},{"bounds":{"intMin":0},"name":"card_count","type":"int32","required":true},{"enum":["idle","generating","done","partial","failed"],"name":"status","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"set_id","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"details","type":"string","required":true},{"defaulted":true,"default":"","enum":["","running","complete"],"name":"words","type":"string","required":true},{"bounds":{"intMin":0,"intMax":3},"defaulted":true,"default":0,"name":"next","type":"int32","required":true},{"defaulted":true,"default":"diff_kids","enum":["","diff_toddler","diff_kids","diff_teens"],"name":"audience_key","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"audience","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"run","type":"string","required":true}]},"device":{"durability":"device","fields":[{"enum":["device"],"name":"id","pk":true,"type":"string","required":true},{"bounds":{"regex":"^[0-9a-f]{16}$"},"name":"key","type":"string","required":true},{"defaulted":true,"default":"auto","enum":["auto","light","dark"],"name":"theme","type":"string","required":true}]},"generation_draft":{"durability":"live","fields":[{"bounds":{"regex":"^[0-9a-f]{16}:draft-(cheap|heavy)$"},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":0},"name":"topic","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"category","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"locale","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"region","type":"string","required":true},{"bounds":{"intMin":0},"name":"card_count","type":"int32","required":true},{"defaulted":true,"default":"idle","enum":["idle","drafting","illustrating","done","failed"],"name":"status","type":"string","required":true},{"bounds":{"sizeMin":0},"name":"set_id","type":"string","required":true},{"bounds":{"sizeMin":0},"defaulted":true,"default":"","name":"details","type":"string","required":true}]},"browser_draft":{"durability":"tab","fields":[{"bounds":{"sizeMin":1,"sizeMax":128},"name":"id","pk":true,"type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":128},"name":"topic","type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":32},"name":"locale","type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":32},"name":"status","type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":128},"name":"w0","type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":128},"name":"w1","type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":128},"name":"w2","type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":128},"name":"w3","type":"string","required":true},{"bounds":{"sizeMin":1,"sizeMax":128},"name":"w4","type":"string","required":true},{"bounds":{"sizeMax":128},"defaulted":true,"default":"","name":"set_id","type":"string","required":true},{"bounds":{"sizeMax":128},"defaulted":true,"default":"","name":"run","type":"string","required":true}],"uniques":[{"name":"uq_browser_draft_question","cols":["topic","locale","status","set_id","run"]}]}},"types":{"types":{"string":{"pg":"text","column":"plain","subset":true,"base":["text","varchar","bpchar","tsvector"],"json":"string","refuse":"\\x00","order":"text","beyond":["scalar-values"]},"bool":{"pg":"boolean","column":"plain","subset":true,"base":["bool","boolean"],"json":"boolean","order":"boolean","beyond":[]},"int32":{"pg":"integer","column":"plain","subset":true,"base":["int2","int4","integer","smallint"],"json":"number","min":-2147483648,"max":2147483647,"order":"number","beyond":[]},"int64":{"pg":"bigint","column":"domain","subset":false,"sql":"portable_int64","base":["int8","bigint"],"json":"string","pattern":"^(0|-?[1-9][0-9]*)$","order":"integer","beyond":["int64-range"]},"double":{"pg":"double precision","column":"checked","subset":true,"base":["float4","float8","double precision","real"],"json":"number","order":"number","beyond":[]},"bytes":{"pg":"bytea","column":"domain","subset":false,"sql":"portable_bytes","base":["bytea"],"json":"string","pattern":"^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$","order":"none","beyond":[]},"uuid":{"pg":"uuid","column":"plain","subset":true,"base":["uuid"],"json":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","order":"text","beyond":[]},"timestamp":{"pg":"timestamptz","column":"domain","subset":false,"sql":"portable_timestamp","base":["timestamptz","timestamp with time zone"],"json":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{6}Z$","order":"text","beyond":["calendar"]},"duration":{"pg":"interval","column":"domain","subset":false,"sql":"portable_duration","base":["interval"],"json":"string","pattern":"^PT(0|[1-9][0-9]*)(\\.[0-9]{0,5}[1-9])?S$","order":"duration","beyond":["duration-range"]},"decimal":{"pg":"numeric","column":"domain","subset":false,"base":["numeric","decimal"],"json":"string","pattern":"^(0|-?[1-9][0-9]*|-?(0|[1-9][0-9]*)\\.[0-9]*[1-9])$","order":"decimal","beyond":["decimal-profile"]},"date":{"pg":"date","column":"checked","subset":true,"base":["date"],"json":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$","order":"text","beyond":["calendar"]},"time":{"pg":"time(6)","column":"domain","subset":false,"sql":"portable_time","base":["time","time without time zone"],"json":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{6}$","order":"text","beyond":[]},"timezone":{"pg":"text","column":"checked","subset":true,"base":["text"],"json":"string","pattern":"^[A-Za-z0-9+_/-]+$","order":"none","beyond":["tzdb"]},"json":{"pg":"json","column":"checked","subset":false,"base":["json","jsonb"],"json":"value","order":"none","beyond":["scalar-values","finite-numbers"]},"geojson":{"pg":"json","column":"checked","subset":false,"base":["json","jsonb","geometry","geography"],"json":"value","order":"none","beyond":["scalar-values","finite-numbers","ring-closure"]}},"aliases":{"text":"string","int":"int32","bigint":"int64","timestamptz":"timestamp","tsvector":"string"}},"carriers":{"types":{"string":{"pg":"text","column":"plain","subset":true,"base":["text","varchar","bpchar","tsvector"],"json":"string","refuse":"\\x00","order":"text","beyond":["scalar-values"]},"bool":{"pg":"boolean","column":"plain","subset":true,"base":["bool","boolean"],"json":"boolean","order":"boolean","beyond":[]},"int32":{"pg":"integer","column":"plain","subset":true,"base":["int2","int4","integer","smallint"],"json":"number","min":-2147483648,"max":2147483647,"order":"number","beyond":[]},"int64":{"pg":"bigint","column":"domain","subset":false,"sql":"portable_int64","base":["int8","bigint"],"json":"string","pattern":"^(0|-?[1-9][0-9]*)$","order":"integer","beyond":["int64-range"]},"double":{"pg":"double precision","column":"checked","subset":true,"base":["float4","float8","double precision","real"],"json":"number","order":"number","beyond":[]},"bytes":{"pg":"bytea","column":"domain","subset":false,"sql":"portable_bytes","base":["bytea"],"json":"string","pattern":"^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$","order":"none","beyond":[]},"uuid":{"pg":"uuid","column":"plain","subset":true,"base":["uuid"],"json":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","order":"text","beyond":[]},"timestamp":{"pg":"timestamptz","column":"domain","subset":false,"sql":"portable_timestamp","base":["timestamptz","timestamp with time zone"],"json":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{6}Z$","order":"text","beyond":["calendar"]},"duration":{"pg":"interval","column":"domain","subset":false,"sql":"portable_duration","base":["interval"],"json":"string","pattern":"^PT(0|[1-9][0-9]*)(\\.[0-9]{0,5}[1-9])?S$","order":"duration","beyond":["duration-range"]},"decimal":{"pg":"numeric","column":"domain","subset":false,"base":["numeric","decimal"],"json":"string","pattern":"^(0|-?[1-9][0-9]*|-?(0|[1-9][0-9]*)\\.[0-9]*[1-9])$","order":"decimal","beyond":["decimal-profile"]},"date":{"pg":"date","column":"checked","subset":true,"base":["date"],"json":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$","order":"text","beyond":["calendar"]},"time":{"pg":"time(6)","column":"domain","subset":false,"sql":"portable_time","base":["time","time without time zone"],"json":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{6}$","order":"text","beyond":[]},"timezone":{"pg":"text","column":"checked","subset":true,"base":["text"],"json":"string","pattern":"^[A-Za-z0-9+_/-]+$","order":"none","beyond":["tzdb"]},"json":{"pg":"json","column":"checked","subset":false,"base":["json","jsonb"],"json":"value","order":"none","beyond":["scalar-values","finite-numbers"]},"geojson":{"pg":"json","column":"checked","subset":false,"base":["json","jsonb","geometry","geography"],"json":"value","order":"none","beyond":["scalar-values","finite-numbers","ring-closure"]}},"aliases":{"text":"string","int":"int32","bigint":"int64","timestamptz":"timestamp","tsvector":"string"}},"migrations":["services/database/migrations/000_extensions.sql","services/database/migrations/001_roles.sql","services/database/migrations/002_grants.sql","services/database/migrations/004_types.sql","services/database/migrations/006_policies.sql","services/database/migrations/007_txid.sql","services/database/migrations/008_publication.sql","services/database/migrations/803_blob_claims.sql","services/database/migrations/003_rls.sql","services/database/migrations/005_create_tables.sql","services/database/migrations/010_machines.sql","services/database/migrations/802_signals.sql","services/database/migrations/016_mecha_actors.sql","services/database/migrations/017_card_art_fan_out.sql","services/database/migrations/018_deck_level.sql","services/database/migrations/019_deck_advance.sql","services/database/migrations/020_owner_writes.sql","services/database/migrations/021_me_provision.sql","services/database/migrations/022_deck_favorites.sql","services/database/migrations/023_deck_number.sql","services/database/migrations/900_seed.sql"],"pipelines":[{"fold":"pipelines/favorite-recount.js","key":"deck_id","name":"favorite-recount","from":"favorite","projects":"favorite_count","to":"deck_stats","aggregate":"select=deck_id,txid,deleted_at","watermark":"counted_txid","dedupe":["user_id","deck_id"],"retracted":"deleted_at","pair":{"table":"favorite_count","counted":"mine_counted","total":"total_at_read","asOf":"as_of_txid"}},{"key":"deck_id","name":"deck-cover","from":"flashcard","shim":"pipelines/deck-cover.browser.js","to":"deck_stats","aggregate":"select=set_id,id,back"},{"key":"id","name":"favorite-count","from":"favorite","shim":"pipelines/favorite-count.browser.js","to":"favorite_count","aggregate":"select=user_id,deck_id,txid,deleted_at"}],"uniques":{"favorite":[["user_id","deck_id"]],"favorite_count":[["user_id","deck_id"]],"place_answer":[["kind","q","lang"]],"browser_draft":[["topic","locale","status","set_id","run"]]},"units":{"delivery-map":{"grants":["geolocation"],"isolation":"realm","ports":{"reads":["delivery_draft"],"raises":{"pin":{"type":"object","fields":{"latitude":{"type":"string","maxLength":32},"longitude":{"type":"string","maxLength":32},"source":{"type":"string","maxLength":3,"values":["","gps","map"]}}}}},"files":["shell/units/delivery-map/index.html","shell/units/delivery-map/vendor/maplibre-gl.js","shell/units/delivery-map/vendor/maplibre-gl.css"],"src":"shell/units/delivery-map/index.html"},"geocoder":{"isolation":"agent","memo":{"table":"place_answer","key":["kind","q","lang"],"columns":["kind","q","lang","p0","p1","p2","p3","p4"]},"ports":{"reads":["delivery_draft"],"raises":{"found":{"type":"object","fields":{"kind":{"type":"string","maxLength":65536},"q":{"type":"string","maxLength":2000},"lang":{"type":"string","maxLength":8},"p0":{"type":"string","maxLength":2000},"p1":{"type":"string","maxLength":2000},"p2":{"type":"string","maxLength":2000},"p3":{"type":"string","maxLength":2000},"p4":{"type":"string","maxLength":2000}}}}},"files":["shell/units/geocoder/unit.js"],"src":"shell/units/geocoder/unit.js"},"ai-browser":{"isolation":"agent","memo":{"table":"browser_draft","key":["topic","locale","status","set_id","run"],"columns":["topic","locale","status","w0","w1","w2","w3","w4","set_id","run"]},"ports":{"reads":["generation_form"],"raises":{"draft":{"type":"object","fields":{"topic":{"type":"string","maxLength":128},"locale":{"type":"string","maxLength":32},"status":{"type":"string","maxLength":32},"w0":{"type":"string","maxLength":128},"w1":{"type":"string","maxLength":128},"w2":{"type":"string","maxLength":128},"w3":{"type":"string","maxLength":128},"w4":{"type":"string","maxLength":128},"set_id":{"type":"string","maxLength":128},"run":{"type":"string","maxLength":128}}}}},"files":["shell/units/ai-browser/unit.js"],"src":"shell/units/ai-browser/unit.js"},"print-payment":{"grants":["payment"],"isolation":"realm","ports":{"reads":["delivery_draft"],"raises":{"checkout":{"type":"object","fields":{"outcome":{"type":"string","maxLength":16,"values":["completed","cancelled"]}}}}},"files":["shell/units/print-payment/index.html"],"src":"shell/units/print-payment/index.html","subdomain":"payments"}},"iceServers":[{"urls":"stun:stun.cloudflare.com:3478"}]}