@bongos/core 1.24.79 → 1.24.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +554 -394
- package/.claude/skills/ask-for-help/SKILL.md +1 -1
- package/.claude/skills/builder-sequence/SKILL.md +1 -1
- package/.claude/skills/design/SKILL.md +1 -1
- package/.claude/skills/goal-create/SKILL.md +1 -1
- package/.claude/skills/planning-session/SKILL.md +1 -1
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +8 -0
- package/clients/bongos-client/index.cjs +8 -0
- package/clients/bongos-client/index.d.ts +11 -0
- package/clients/bongos-client/index.mjs +8 -0
- package/docs/adr/0274-one-kernel-three-role-packs.md +2 -2
- package/docs/adr/0399-the-visor-is-glass-over-the-scene-and-owns-no-camera.md +91 -0
- package/docs/adr/0400-a-chain-reserves-work-and-each-sub-quest-is-still-claimed-alone.md +109 -0
- package/docs/adr/0401-one-options-menu-opens-every-settings-screen-in-a-frame.md +53 -0
- package/docs/adr/0402-helm-is-the-halls-look-and-the-hall-is-dark-only.md +142 -0
- package/docs/adr/README.md +4 -0
- package/docs/api/openapi.json +195 -3
- package/docs/api-reference.md +8 -4
- package/docs/architecture.md +7 -3
- package/docs/copy-inventory.md +393 -378
- package/docs/copy-registry.json +722 -578
- package/docs/design/characters/character-sprites-source.webp +0 -0
- package/docs/file-map.md +7 -8
- package/docs/module-api-changelog.md +4 -0
- package/docs/modules-contract.md +5 -0
- package/docs/onboarding/slash-commands.md +1 -1
- package/docs/packs/{engineer.md → artisan.md} +5 -5
- package/docs/packs/artist.md +50 -4
- package/docs/page-inventory.json +16 -7
- package/docs/page-readings.json +3184 -3338
- package/docs/{packs/ideator.md → recipes/ideation-playbook.md} +5 -48
- package/migrations/core_296_crafts_artisan_artist.sql +72 -0
- package/migrations/core_297_builder_character.sql +30 -0
- package/modules/copy-desk/proposals.js +1 -1
- package/modules/economy/credits-by-craft.js +29 -15
- package/modules/hall-ui/public/ai-studio.html +6 -4
- package/modules/hall-ui/public/ai-studio.states.json +1 -0
- package/modules/hall-ui/public/atlas.html +5 -5
- package/modules/hall-ui/public/atlas.js +3 -1
- package/modules/hall-ui/public/atlas.states.json +1 -0
- package/modules/hall-ui/public/blockers.html +5 -5
- package/modules/hall-ui/public/board-room.html +4 -4
- package/modules/hall-ui/public/board-room.states.json +1 -0
- package/modules/hall-ui/public/characters/artisan.png +0 -0
- package/modules/hall-ui/public/characters/artist.png +0 -0
- package/modules/hall-ui/public/characters/patron.png +0 -0
- package/modules/hall-ui/public/city.css +3 -4
- package/modules/hall-ui/public/city.html +9 -9
- package/modules/hall-ui/public/city.js +17 -56
- package/modules/hall-ui/public/city.states.json +7 -32
- package/modules/hall-ui/public/collab.html +4 -4
- package/modules/hall-ui/public/collab.states.json +1 -0
- package/modules/hall-ui/public/commands.html +4 -4
- package/modules/hall-ui/public/commands.states.json +1 -0
- package/modules/hall-ui/public/controls.css +63 -11
- package/modules/hall-ui/public/copy-desk.html +4 -4
- package/modules/hall-ui/public/copy-desk.states.json +1 -0
- package/modules/hall-ui/public/craft-mode.js +258 -64
- package/modules/hall-ui/public/deploy.html +4 -4
- package/modules/hall-ui/public/deploy.states.json +1 -0
- package/modules/hall-ui/public/diagram-viewer.js +2 -1
- package/modules/hall-ui/public/dom-utils.js +1 -1
- package/modules/hall-ui/public/goal-map.html +9 -6
- package/modules/hall-ui/public/goals.html +5 -5
- package/modules/hall-ui/public/goals.states.json +1 -0
- package/modules/hall-ui/public/government.html +4 -4
- package/modules/hall-ui/public/government.states.json +1 -0
- package/modules/hall-ui/public/hall-render.js +3 -1
- package/modules/hall-ui/public/home-city-draw.js +3 -3
- package/modules/hall-ui/public/home-city.css +4 -0
- package/modules/hall-ui/public/home-city.js +17 -9
- package/modules/hall-ui/public/home-gallery.js +8 -1
- package/modules/hall-ui/public/home-idea-box.css +2 -2
- package/modules/hall-ui/public/home-idea-box.js +3 -3
- package/modules/hall-ui/public/idea.html +5 -5
- package/modules/hall-ui/public/idea.states.json +1 -0
- package/modules/hall-ui/public/ideas.html +5 -5
- package/modules/hall-ui/public/ideas.states.json +1 -0
- package/modules/hall-ui/public/index-founding.states.json +1 -0
- package/modules/hall-ui/public/index-genesis-decide.states.json +1 -0
- package/modules/hall-ui/public/index-genesis-demo.states.json +1 -0
- package/modules/hall-ui/public/index-genesis.states.json +1 -0
- package/modules/hall-ui/public/index.html +11 -7
- package/modules/hall-ui/public/index.states.json +1 -0
- package/modules/hall-ui/public/market-watch-item.html +4 -4
- package/modules/hall-ui/public/market-watch-item.states.json +1 -0
- package/modules/hall-ui/public/market-watch-rules.html +4 -4
- package/modules/hall-ui/public/market-watch-rules.states.json +1 -0
- package/modules/hall-ui/public/market-watch.html +6 -9
- package/modules/hall-ui/public/market-watch.js +22 -45
- package/modules/hall-ui/public/market-watch.states.json +1 -0
- package/modules/hall-ui/public/modules.html +4 -4
- package/modules/hall-ui/public/modules.states.json +1 -0
- package/modules/hall-ui/public/money.html +4 -4
- package/modules/hall-ui/public/money.states.json +1 -0
- package/modules/hall-ui/public/my-agents.html +4 -4
- package/modules/hall-ui/public/my-agents.states.json +1 -0
- package/modules/hall-ui/public/options-menu.js +409 -0
- package/modules/hall-ui/public/paintbrush.js +3 -3
- package/modules/hall-ui/public/palette.js +11 -13
- package/modules/hall-ui/public/primer.html +5 -5
- package/modules/hall-ui/public/primer.states.json +1 -0
- package/modules/hall-ui/public/profile-crafts.js +1 -1
- package/modules/hall-ui/public/profile-roles.js +23 -19
- package/modules/hall-ui/public/profile.css +1 -1
- package/modules/hall-ui/public/profile.html +19 -18
- package/modules/hall-ui/public/profile.js +19 -18
- package/modules/hall-ui/public/profile.states.json +5 -4
- package/modules/hall-ui/public/project-settings.html +4 -4
- package/modules/hall-ui/public/roster.html +4 -4
- package/modules/hall-ui/public/roster.js +3 -3
- package/modules/hall-ui/public/roster.states.json +1 -0
- package/modules/hall-ui/public/settings.css +24 -4
- package/modules/hall-ui/public/settings.html +21 -17
- package/modules/hall-ui/public/settings.js +44 -44
- package/modules/hall-ui/public/settings.states.json +1 -0
- package/modules/hall-ui/public/shell-game.css +110 -0
- package/modules/hall-ui/public/shell-game.js +316 -3
- package/modules/hall-ui/public/shell.js +15 -66
- package/modules/hall-ui/public/sky-interaction.js +7 -0
- package/modules/hall-ui/public/speciality-tools.js +1 -2
- package/modules/hall-ui/public/street-card.states.json +1 -0
- package/modules/hall-ui/public/street-inside.js +3 -4
- package/modules/hall-ui/public/street.css +1 -5
- package/modules/hall-ui/public/street.html +6 -10
- package/modules/hall-ui/public/street.js +8 -59
- package/modules/hall-ui/public/street.states.json +7 -32
- package/modules/hall-ui/public/studio.html +5 -5
- package/modules/hall-ui/public/studio.states.json +1 -0
- package/modules/hall-ui/public/style.css +197 -112
- package/modules/hall-ui/public/task-detail.js +5 -4
- package/modules/hall-ui/public/task.html +5 -5
- package/modules/hall-ui/public/task.states.json +1 -0
- package/modules/hall-ui/public/thinking.css +10 -0
- package/modules/hall-ui/public/thinking.html +9 -6
- package/modules/hall-ui/public/thinking.states.json +1 -0
- package/modules/hall-ui/public/tweak-editor.html +5 -5
- package/modules/hall-ui/public/tweak-editor.js +5 -1
- package/modules/hall-ui/public/tweak-editor.states.json +1 -0
- package/modules/hall-ui/public/update-pill.js +91 -2
- package/modules/hall-ui/public/visor.css +80 -0
- package/modules/hall-ui/public/visor.js +316 -0
- package/modules/hall-ui/public/watch-repo-invite.js +159 -0
- package/modules/hall-ui/public/watch.html +6 -5
- package/modules/hall-ui/public/watch.js +17 -2
- package/modules/hall-ui/public/watch.states.json +1 -0
- package/modules/hall-ui/public/welcome-boot.js +15 -6
- package/modules/hall-ui/public/work-founding.states.json +1 -0
- package/modules/hall-ui/public/work.html +5 -5
- package/modules/hall-ui/public/work.states.json +1 -0
- package/modules/hall-ui/records/builders-roster.md +2 -2
- package/modules/hall-ui/records/craft-mode.md +13 -11
- package/modules/hall-ui/records/game-mode.md +2 -2
- package/modules/hall-ui/records/governor-street.md +1 -1
- package/modules/hall-ui/records/home-city.md +3 -1
- package/modules/hall-ui/records/market-watch-settings.md +2 -0
- package/modules/hall-ui/records/options-menu.md +15 -0
- package/modules/hall-ui/records/profile-roles.md +11 -11
- package/modules/hall-ui/records/sky.md +3 -3
- package/modules/hall-ui/records/start-screen.md +25 -0
- package/modules/hall-ui/records/tweak-editor.md +1 -1
- package/modules/hall-ui/records/update-pill.md +12 -0
- package/modules/hall-ui/records/visor.md +23 -0
- package/modules/hall-ui/records/welcome-tower.md +5 -5
- package/modules/hall-ui/specimens/components.states.json +2 -1
- package/modules/ideas/ideator-stats.js +3 -1
- package/modules/ideas/inbox.js +2 -2
- package/modules/lifecycle/activity.js +1 -1
- package/modules/lifecycle/cascade.js +4 -4
- package/modules/lifecycle/goal-spec-task.js +1 -1
- package/modules/lifecycle/help-requests.js +19 -15
- package/modules/lifecycle/kickoff-checklist.js +3 -3
- package/modules/lifecycle/kickoff-seed.js +1 -1
- package/modules/lifecycle/migrations/lifecycle_021_crafts_artisan_artist.sql +29 -0
- package/modules/lifecycle/mingle.js +4 -4
- package/modules/lifecycle/page-tweak-write.js +1 -1
- package/modules/lifecycle/routes/task-write-routes.js +3 -1
- package/modules/lifecycle/routes/tasks.js +3 -3
- package/modules/lifecycle/ship-card.js +2 -3
- package/modules/lifecycle/task-classifier.js +39 -29
- package/modules/lifecycle/tests/cascade.mjs +7 -7
- package/modules/onboarding/founding-mode.js +3 -0
- package/modules/onboarding/genesis-home.js +21 -1
- package/modules/onboarding/routes/onboarding.js +2 -0
- package/modules/page-notes/notes.js +3 -2
- package/modules/page-notes/split.js +1 -1
- package/modules/platform-identity/craft-rollup.js +35 -7
- package/modules/platform-identity/migrations/platform_identity_036_crafts_artisan_artist.sql +45 -0
- package/modules/platform-identity/platform-identity.js +2 -2
- package/modules/platform-identity/routes/community-leaderboard.js +2 -1
- package/modules/platform-identity/routes/community-search.js +2 -1
- package/modules/platform-identity/routes/sso.js +2 -1
- package/modules/platform-identity/tests/platform-identity.mjs +6 -6
- package/modules/public-landing/public/community.html +3 -5
- package/modules/public-landing/public/index.html +1 -1
- package/modules/public-landing/public/projects.html +1 -1
- package/modules/specialities/migrations/specialities_004_crafts_artisan_artist.sql +30 -0
- package/modules/specialities/routes/specialities.js +2 -2
- package/modules/status-ui/public/status.js +1 -1
- package/modules/ui-design/kit/fixtures/community-leaderboard.json +10 -10
- package/modules/ui-design/kit/fixtures/community-search.json +2 -2
- package/modules/ui-design/kit/fixtures/scouting-recruiter.json +1 -1
- package/modules/ui-design/public/brand.html +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +76 -0
- package/scripts/bongos/autobongos-loop.js +1 -1
- package/scripts/bongos/discipline-modes.json +7 -12
- package/scripts/bongos/fitness.js +1 -1
- package/scripts/bongos/gen-hall-sitemap.js +7 -7
- package/scripts/bongos/grade-smoke.js +2 -2
- package/scripts/bongos/init.js +2 -2
- package/scripts/bongos/newcomer-floor.config.json +1 -2
- package/scripts/bongos/newcomer-floor.js +4 -3
- package/scripts/bongos/newcomer-floor.templates.json +10 -12
- package/scripts/bongos/newcomer-floor.test.js +47 -38
- package/scripts/bongos/role-pack-guard.js +5 -4
- package/scripts/bongos/seed-tasks.example.json +3 -3
- package/scripts/bongos/setup.js +20 -107
- package/scripts/bongos/start.js +2 -2
- package/scripts/bongos/task.js +5 -4
- package/scripts/bongos/triage.js +1 -1
- package/scripts/bongos/worktree.js +16 -4
- package/scripts/hall-preview/README.md +2 -3
- package/scripts/setup-builder.js +6 -46
- package/src/bongos/auth-admission.js +8 -8
- package/src/bongos/craft-mode.js +2 -0
- package/src/bongos/db.js +39 -1
- package/src/bongos/github-repos.js +78 -0
- package/src/bongos/module-scope-map.js +22 -0
- package/src/bongos/role-stats.js +27 -11
- package/src/bongos/routes/github.js +100 -2
- package/src/bongos/routes/me.js +33 -0
- package/src/bongos/serve-internal.js +33 -11
- package/src/crafts.js +66 -0
- package/src/hall-helm.js +79 -0
- package/src/module-api.js +6 -1
- package/src/module-loader/manifest-schema.js +16 -0
- package/src/modules.js +2 -2
- package/src/role-responsibilities.js +6 -5
- package/tests/acclaim_feed_evidence_db.mjs +1 -1
- package/tests/activity_rollup_as_of.mjs +1 -1
- package/tests/api_alias_caller_ratchet.mjs +3 -3
- package/tests/application_lifecycle.mjs +1 -1
- package/tests/artist_review.mjs +1 -1
- package/tests/artist_review_goal.mjs +1 -1
- package/tests/blocker_hall_live_proof.mjs +1 -1
- package/tests/blocker_tasks_named_db.mjs +2 -2
- package/tests/canonical_profile_url.mjs +1 -1
- package/tests/cap_newcomer_tasks.mjs +13 -13
- package/tests/character_creation.mjs +294 -0
- package/tests/claim_gate_open_blocker.mjs +2 -2
- package/tests/claim_gate_rebase.mjs +6 -6
- package/tests/claude_materialize.mjs +1 -1
- package/tests/clawback_confirmed_backlog.mjs +3 -3
- package/tests/collab_page.mjs +8 -9
- package/tests/collab_self_settling.mjs +2 -2
- package/tests/community_leaderboard_route.mjs +13 -5
- package/tests/community_proof_db.mjs +3 -0
- package/tests/community_search_route.mjs +7 -6
- package/tests/conductor.mjs +1 -1
- package/tests/conductor_main_e2e.mjs +8 -8
- package/tests/copy_desk_flags_db.mjs +1 -1
- package/tests/copy_desk_page_approve.mjs +2 -2
- package/tests/copy_desk_page_claim.mjs +2 -2
- package/tests/copy_desk_page_next.mjs +1 -1
- package/tests/copy_desk_page_release.mjs +1 -1
- package/tests/copy_desk_page_submit.mjs +2 -2
- package/tests/core_258_box_session_claims_db.mjs +1 -1
- package/tests/craft_mode.mjs +48 -34
- package/tests/craft_mode_home.mjs +20 -20
- package/tests/craft_mode_looks.mjs +16 -15
- package/tests/craft_mode_nav.mjs +31 -29
- package/tests/craft_review_mode.mjs +46 -41
- package/tests/crafts_vocabulary.mjs +70 -0
- package/tests/cross_discipline_priority_direction.mjs +5 -5
- package/tests/design_reference.mjs +1 -1
- package/tests/fitness.mjs +7 -11
- package/tests/funded_project_pays_proof_db.mjs +1 -1
- package/tests/genesis_home.mjs +21 -1
- package/tests/github_chip.mjs +3 -3
- package/tests/github_repo_invite.mjs +379 -0
- package/tests/goal_criterion_confirm_ui.mjs +1 -1
- package/tests/goal_invite_consent.mjs +1 -1
- package/tests/goal_map_page.mjs +2 -2
- package/tests/goal_sort_staleness.mjs +1 -1
- package/tests/goal_spec_task.mjs +1 -1
- package/tests/goal_spec_task_db.mjs +3 -3
- package/tests/grade_engine.mjs +2 -2
- package/tests/grader_no_artifact.mjs +1 -1
- package/tests/grader_prompt_fencing.mjs +1 -1
- package/tests/grader_prompt_window_bound.mjs +1 -1
- package/tests/grader_reader_lens.mjs +2 -2
- package/tests/grader_severity_gate.mjs +1 -1
- package/tests/grader_unbacked_score.mjs +1 -1
- package/tests/hall_approval_queue.mjs +1 -1
- package/tests/hall_board_world.mjs +2 -2
- package/tests/hall_builders_page_pass.mjs +3 -2
- package/tests/hall_city.mjs +16 -30
- package/tests/hall_controls.mjs +52 -4
- package/tests/hall_fullscreen.mjs +27 -3
- package/tests/hall_helm.mjs +187 -0
- package/tests/hall_kit_charts.mjs +1 -1
- package/tests/hall_landing_boot.mjs +1 -1
- package/tests/hall_my_agents.mjs +16 -16
- package/tests/hall_nav.mjs +22 -15
- package/tests/hall_options_menu.mjs +247 -0
- package/tests/hall_oversight_world.mjs +1 -1
- package/tests/hall_palette.mjs +8 -9
- package/tests/hall_profile_world.mjs +3 -3
- package/tests/hall_record_world.mjs +6 -4
- package/tests/hall_settings_world.mjs +2 -1
- package/tests/hall_sitemap.mjs +6 -5
- package/tests/hall_start_screen.mjs +307 -0
- package/tests/hall_street.mjs +15 -28
- package/tests/hall_street_inside.mjs +17 -9
- package/tests/hall_studio_world.mjs +3 -3
- package/tests/hall_topbar_320.mjs +4 -2
- package/tests/hall_visor.mjs +224 -0
- package/tests/help_requests.mjs +47 -15
- package/tests/helpers.mjs +4 -4
- package/tests/home_city.mjs +6 -4
- package/tests/home_city_widget.mjs +33 -14
- package/tests/home_gallery_widget.mjs +4 -4
- package/tests/home_idea_box.mjs +6 -6
- package/tests/hub_community_page.mjs +3 -3
- package/tests/hub_craft_rollup.mjs +75 -36
- package/tests/hub_recent_ships.mjs +3 -2
- package/tests/idea_cascade.mjs +2 -2
- package/tests/idea_credit_streams_db.mjs +1 -1
- package/tests/idea_detail_page.mjs +1 -1
- package/tests/idea_ideate_full.mjs +5 -2
- package/tests/idea_spark_hall.mjs +1 -1
- package/tests/init.mjs +3 -3
- package/tests/instance_manifest.mjs +2 -2
- package/tests/kickoff_checklist.mjs +1 -1
- package/tests/leaderboard_roles.mjs +34 -25
- package/tests/lifecycle_claim_ladder_refs.mjs +55 -0
- package/tests/lightbulb.mjs +14 -10
- package/tests/main_discipline.mjs +8 -8
- package/tests/markdown_line_endings.mjs +1 -1
- package/tests/market_watch_pages.mjs +52 -74
- package/tests/me_streak_leaderboard_queries.mjs +3 -3
- package/tests/migration_allocation.mjs +1 -1
- package/tests/mingle.mjs +36 -21
- package/tests/module-scope-map.mjs +22 -2
- package/tests/module_api.mjs +1 -0
- package/tests/module_contributions.mjs +13 -13
- package/tests/module_manifest.mjs +29 -0
- package/tests/module_skills_hook.mjs +2 -2
- package/tests/modules.mjs +14 -7
- package/tests/nav_permission_atoms.mjs +2 -1
- package/tests/needs_rebase.mjs +1 -1
- package/tests/newcomer_restock.mjs +13 -13
- package/tests/page_notes_panel.mjs +22 -22
- package/tests/page_tweak_no_block.mjs +1 -1
- package/tests/paintbrush.mjs +7 -7
- package/tests/privacy_matrix.mjs +1 -0
- package/tests/profile_activity.mjs +20 -23
- package/tests/profile_earnings.mjs +1 -1
- package/tests/profile_nudge_prefs.mjs +4 -4
- package/tests/profile_role_headline.mjs +73 -46
- package/tests/profile_role_stats.mjs +55 -45
- package/tests/profile_rollup_consent.mjs +19 -6
- package/tests/profile_route.mjs +12 -12
- package/tests/profile_ui_cross_project.mjs +4 -4
- package/tests/project_invite_suggestions.mjs +2 -2
- package/tests/promote_goal_id.mjs +1 -1
- package/tests/publish_manifest.mjs +1 -1
- package/tests/rank_floor_wiring.mjs +1 -1
- package/tests/regrade_actual_minutes.mjs +1 -1
- package/tests/removal_proposal.mjs +2 -2
- package/tests/reward_gate.mjs +4 -4
- package/tests/reward_mode_cost_plus_only.mjs +1 -1
- package/tests/role_responsibilities.mjs +18 -12
- package/tests/role_stats_db.mjs +17 -16
- package/tests/scouting_rollup_fanout.mjs +5 -5
- package/tests/seed_tasks.mjs +5 -2
- package/tests/session_earnings_mirror_db.mjs +1 -1
- package/tests/session_reward_on_land_db.mjs +1 -1
- package/tests/session_reward_reconcile_db.mjs +2 -2
- package/tests/sessions_kit_pager.mjs +1 -1
- package/tests/settings_art_key_absent.mjs +2 -2
- package/tests/settings_main_role.mjs +21 -20
- package/tests/setup_flow.mjs +3 -3
- package/tests/setup_smoke.mjs +20 -0
- package/tests/ship_card.mjs +6 -6
- package/tests/specialities.mjs +16 -4
- package/tests/speciality_db_shape.mjs +6 -6
- package/tests/speciality_injection.mjs +17 -17
- package/tests/speciality_offer_ui.mjs +5 -5
- package/tests/speciality_offered.mjs +6 -5
- package/tests/speciality_session_skills.mjs +7 -7
- package/tests/speciality_skills.mjs +11 -11
- package/tests/speciality_walkthrough_ui.mjs +2 -2
- package/tests/sso_checkin_identity_spoof.mjs +2 -1
- package/tests/task_classifier_vocab.mjs +10 -0
- package/tests/task_cli.mjs +11 -3
- package/tests/task_criteria_unlink_db.mjs +2 -2
- package/tests/task_discipline_required.mjs +38 -16
- package/tests/task_goal_required.mjs +4 -4
- package/tests/task_needs_db.mjs +1 -1
- package/tests/tweak_replaces_artist_review.mjs +1 -1
- package/tests/update_pill.mjs +153 -2
- package/tests/upkeep_home.mjs +1 -1
- package/tests/v3_c1_options_proof.mjs +145 -0
- package/tests/visual_review.mjs +3 -3
- package/tests/watch_applications_queue.mjs +8 -5
- package/tests/watch_sealed_floor.mjs +3 -1
- package/tests/welcome_boot.mjs +12 -9
- package/tests/welcome_boot_browser.mjs +13 -13
- package/tests/worktree_helper.mjs +16 -1
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<!-- The faces (Manrope, JetBrains Mono) come from the branding pack's font
|
|
11
11
|
links, injected into this head by the server like every hall page's
|
|
12
12
|
(tests/hall_tokens.mjs: no hall page hardcodes a web-font stylesheet). -->
|
|
13
|
-
<link rel="stylesheet" href="/builders/style.css?v=2026-
|
|
14
|
-
<link rel="stylesheet" href="/builders/street.css?v=2026-
|
|
13
|
+
<link rel="stylesheet" href="/builders/style.css?v=2026-11-11-helm">
|
|
14
|
+
<link rel="stylesheet" href="/builders/street.css?v=2026-11-11-helm">
|
|
15
15
|
<link rel="stylesheet" href="/builders/street-card.css?v=2026-10-04-record1">
|
|
16
16
|
<link rel="stylesheet" href="/builders/street-deck.css?v=2026-10-17-tidy">
|
|
17
17
|
</head>
|
|
@@ -92,10 +92,6 @@
|
|
|
92
92
|
<span class="street-hud__n" id="hudShare">—</span>
|
|
93
93
|
</div>
|
|
94
94
|
</div>
|
|
95
|
-
<button type="button" class="street-mode" id="streetMode" aria-label="Switch to light mode" title="Switch to light mode">
|
|
96
|
-
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" aria-hidden="true"><path id="streetModeIcon" d=""></path></svg>
|
|
97
|
-
<span id="streetModeWord">light</span>
|
|
98
|
-
</button>
|
|
99
95
|
</div>
|
|
100
96
|
|
|
101
97
|
<div class="street-window" id="streetWindow">
|
|
@@ -229,10 +225,10 @@
|
|
|
229
225
|
</div>
|
|
230
226
|
|
|
231
227
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
232
|
-
<script src="/builders/shell-game.js?v=2026-11-
|
|
228
|
+
<script src="/builders/shell-game.js?v=2026-11-11-helm"></script>
|
|
233
229
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
234
|
-
<script src="/builders/craft-mode.js?v=2026-11-
|
|
235
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
230
|
+
<script src="/builders/craft-mode.js?v=2026-11-10-visor"></script>
|
|
231
|
+
<script src="/builders/shell.js?v=2026-11-11-helm"></script>
|
|
236
232
|
<script src="/builders/hall-dialog.js"></script>
|
|
237
233
|
<script src="/builders/palette.js" defer></script>
|
|
238
234
|
<script src="/builders/gov-living.js?v=2026-10-09-positions1"></script>
|
|
@@ -246,6 +242,6 @@
|
|
|
246
242
|
<script src="/builders/street-amend.js?v=2026-10-02-amend1"></script>
|
|
247
243
|
<script src="/builders/street-deck.js?v=2026-10-13-glass1"></script>
|
|
248
244
|
<script src="/builders/street-office.js?v=2026-10-17-tidy"></script>
|
|
249
|
-
<script src="/builders/street.js?v=2026-
|
|
245
|
+
<script src="/builders/street.js?v=2026-11-11-helm"></script>
|
|
250
246
|
</body>
|
|
251
247
|
</html>
|
|
@@ -28,10 +28,8 @@
|
|
|
28
28
|
// A feed that fails leaves its part out (no pins, no districts, "—" for the
|
|
29
29
|
// share) and the page says the docket could not be read; it never draws sample data.
|
|
30
30
|
//
|
|
31
|
-
// THE
|
|
32
|
-
//
|
|
33
|
-
// hall page. The drawing's faces are drawing data in the mode, so a toggle
|
|
34
|
-
// redraws the street from the last feeds (no refetch).
|
|
31
|
+
// THE MODE. The hall is dark only (task 1005192, ADR 0402), so the street has
|
|
32
|
+
// no light/dark switch and reads no stored choice: it draws its night faces.
|
|
35
33
|
//
|
|
36
34
|
// MOTION is CSS only (street.css); nothing here animates. The scale write on
|
|
37
35
|
// resize is layout, not motion.
|
|
@@ -64,9 +62,6 @@
|
|
|
64
62
|
'use strict';
|
|
65
63
|
var S = window.GovStreet;
|
|
66
64
|
var SVG_NS = 'http://www.w3.org/2000/svg';
|
|
67
|
-
var THEME_KEY = 'hall-theme';
|
|
68
|
-
var SUN = 'M7 1.5V3M7 11v1.5M1.5 7H3M11 7h1.5M3.1 3.1l1 1M9.9 9.9l1 1M3.1 10.9l1-1M9.9 4.1l1-1M9.5 7A2.5 2.5 0 1 1 4.5 7A2.5 2.5 0 1 1 9.5 7Z';
|
|
69
|
-
var MOON = 'M11.5 8.6A5 5 0 0 1 5.4 2.5A5 5 0 1 0 11.5 8.6Z';
|
|
70
65
|
var FEEDS = {
|
|
71
66
|
docket: '/api/bongos/government/docket',
|
|
72
67
|
goals: '/api/bongos/goals',
|
|
@@ -88,7 +83,6 @@
|
|
|
88
83
|
var CARD_W = 390;
|
|
89
84
|
|
|
90
85
|
var $ = function (id) { return document.getElementById(id); };
|
|
91
|
-
var media = window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;
|
|
92
86
|
var data = { docket: null, goals: [], rollups: [], earnings: null, loaded: false, tasks: {}, room: null, constitution: null };
|
|
93
87
|
// ask: the act whose chips stand open; more: the detail is open in place;
|
|
94
88
|
// pick: which of the review queue the queue's card shows (task 1004566)
|
|
@@ -108,52 +102,12 @@
|
|
|
108
102
|
var today = { day: '', n: 0 };
|
|
109
103
|
var todayDrawn = null; // the count the meter's pips last drew: they are rebuilt only when it moves
|
|
110
104
|
|
|
111
|
-
// ----------
|
|
112
|
-
var chosen = null;
|
|
113
|
-
function storedTheme() {
|
|
114
|
-
try { var v = window.localStorage.getItem(THEME_KEY); if (v === 'dark' || v === 'light') return v; } catch (_) { /* blocked */ }
|
|
115
|
-
return chosen;
|
|
116
|
-
}
|
|
117
|
-
function effectiveTheme() { return storedTheme() || (media && media.matches ? 'dark' : 'light'); }
|
|
118
|
-
function paintSwitch(t) {
|
|
119
|
-
var btn = $('streetMode');
|
|
120
|
-
var label = t === 'dark' ? 'Switch to light mode' : 'Switch to dark mode';
|
|
121
|
-
if (btn) { btn.setAttribute('aria-label', label); btn.setAttribute('title', label); }
|
|
122
|
-
var icon = $('streetModeIcon');
|
|
123
|
-
if (icon) icon.setAttribute('d', t === 'dark' ? SUN : MOON);
|
|
124
|
-
var word = $('streetModeWord');
|
|
125
|
-
if (word) word.textContent = t === 'dark' ? 'light' : 'dark';
|
|
126
|
-
}
|
|
105
|
+
// ---------- the mode: dark only (task 1005192, ADR 0402) ----------
|
|
127
106
|
function applyTheme() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
paintSwitch(t);
|
|
131
|
-
return t;
|
|
132
|
-
}
|
|
133
|
-
function toggleTheme() {
|
|
134
|
-
var next = effectiveTheme() === 'dark' ? 'light' : 'dark';
|
|
135
|
-
chosen = next;
|
|
136
|
-
try { window.localStorage.setItem(THEME_KEY, next); } catch (_) { /* private mode: this page only */ }
|
|
137
|
-
painted = applyTheme();
|
|
138
|
-
draw();
|
|
139
|
-
var shell = window.OTBShell;
|
|
140
|
-
if (shell && typeof shell.applyTheme === 'function' && storedTheme() === painted) shell.applyTheme();
|
|
141
|
-
}
|
|
142
|
-
// IN THE HALL (task 1004544) the shell's top bar carries the hall's own theme
|
|
143
|
-
// switch beside this one, as on the city. Both write the same 'hall-theme'
|
|
144
|
-
// preference and html[data-theme]; each repaints when the other flips it.
|
|
145
|
-
var painted = null;
|
|
146
|
-
function watchShellTheme() {
|
|
147
|
-
if (typeof MutationObserver !== 'function') return;
|
|
148
|
-
new MutationObserver(function () {
|
|
149
|
-
var t = document.documentElement.getAttribute('data-theme');
|
|
150
|
-
if ((t === 'dark' || t === 'light') && t !== painted) { painted = t; chosen = t; paintSwitch(t); draw(); }
|
|
151
|
-
}).observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });
|
|
152
|
-
}
|
|
153
|
-
function currentMode() {
|
|
154
|
-
var t = document.documentElement.getAttribute('data-theme');
|
|
155
|
-
return t === 'light' || t === 'dark' ? t : effectiveTheme();
|
|
107
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
108
|
+
return 'dark';
|
|
156
109
|
}
|
|
110
|
+
function currentMode() { return 'dark'; }
|
|
157
111
|
|
|
158
112
|
// ---------- the address ----------
|
|
159
113
|
function here() { return S.parseHash(window.location && window.location.hash); }
|
|
@@ -316,7 +270,6 @@
|
|
|
316
270
|
function draw() {
|
|
317
271
|
var mode = currentMode();
|
|
318
272
|
view.mode = mode;
|
|
319
|
-
paintSwitch(mode);
|
|
320
273
|
var h = here();
|
|
321
274
|
var inside = $('streetInside');
|
|
322
275
|
var sizerEl = $('streetSizer');
|
|
@@ -1465,8 +1418,6 @@
|
|
|
1465
1418
|
}
|
|
1466
1419
|
|
|
1467
1420
|
function boot() {
|
|
1468
|
-
var btn = $('streetMode');
|
|
1469
|
-
if (btn) btn.addEventListener('click', toggleTheme);
|
|
1470
1421
|
var close = $('streetCardClose');
|
|
1471
1422
|
if (close) close.addEventListener('click', function () { closeCard(true); });
|
|
1472
1423
|
window.addEventListener('keydown', onKey);
|
|
@@ -1479,8 +1430,7 @@
|
|
|
1479
1430
|
if (am) am.addEventListener('click', amend);
|
|
1480
1431
|
var win = $('streetWindow');
|
|
1481
1432
|
if (win) win.addEventListener('scroll', placeCard);
|
|
1482
|
-
|
|
1483
|
-
painted = applyTheme();
|
|
1433
|
+
applyTheme();
|
|
1484
1434
|
today = readToday();
|
|
1485
1435
|
// the decision deck (#deck) and the government inside each building, over the
|
|
1486
1436
|
// street's own senders (street-deck.js, street-office.js; task 1004685)
|
|
@@ -1490,10 +1440,9 @@
|
|
|
1490
1440
|
// an answer in the deck moves the header's counts as it moves the deck's
|
|
1491
1441
|
if (window.GovFeeds) window.GovFeeds.onChange(function () { if (data.loaded) draw(); });
|
|
1492
1442
|
draw();
|
|
1493
|
-
watchShellTheme();
|
|
1494
1443
|
return load();
|
|
1495
1444
|
}
|
|
1496
1445
|
|
|
1497
|
-
window.GovStreetPage = { boot: boot, draw: draw, load: load, fit: fit, openCard: openCard, closeCard: closeCard, actOn: actOn, pickFloor: pickFloor, deskAct: deskAct, goStreet: goStreet, amend: amend, fileDraft: fileDraft, FEEDS: FEEDS
|
|
1446
|
+
window.GovStreetPage = { boot: boot, draw: draw, load: load, fit: fit, openCard: openCard, closeCard: closeCard, actOn: actOn, pickFloor: pickFloor, deskAct: deskAct, goStreet: goStreet, amend: amend, fileDraft: fileDraft, FEEDS: FEEDS };
|
|
1498
1447
|
window.GovStreetPage.ready = boot();
|
|
1499
1448
|
}());
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_": "THE STREET (task 1004525, goal 1000125) and inside every building and district (task 1004526) through modules/ui-design/kit/render.js. The page draws GET /government/docket, GET /goals, GET /goals/rollups and the viewer's GET /builders/:id/earnings; against the kit's own stub none exists, so every state renders the bare street (the nine civic buildings, no districts, no pins) with the readings saying the docket could not be read: a real state the floors must hold in. To look at the populated street, run it against the hall-preview harness, whose government__docket.json fixture carries the reference design's seven sample matters (3 need you, 2 moving, 2 settled) and whose goals fixtures carry the open goals:\n\n node scripts/hall-preview/server.js --port 4625 --fixture-me\n node modules/ui-design/kit/render.js --states modules/hall-ui/public/street.states.json --base-in http://localhost:4625 --base-out http://localhost:4625\n\nThe
|
|
2
|
+
"_": "THE STREET (task 1004525, goal 1000125) and inside every building and district (task 1004526) through modules/ui-design/kit/render.js. The page draws GET /government/docket, GET /goals, GET /goals/rollups and the viewer's GET /builders/:id/earnings; against the kit's own stub none exists, so every state renders the bare street (the nine civic buildings, no districts, no pins) with the readings saying the docket could not be read: a real state the floors must hold in. To look at the populated street, run it against the hall-preview harness, whose government__docket.json fixture carries the reference design's seven sample matters (3 need you, 2 moving, 2 settled) and whose goals fixtures carry the open goals:\n\n node scripts/hall-preview/server.js --port 4625 --fixture-me\n node modules/ui-design/kit/render.js --states modules/hall-ui/public/street.states.json --base-in http://localhost:4625 --base-out http://localhost:4625\n\nThe hall is dark only (task 1005192, ADR 0402): the page has no light/dark switch, so this file names the one mode.",
|
|
3
3
|
"page": "/builders/street",
|
|
4
|
+
"modes": ["dark"],
|
|
4
5
|
"_storage": "The hall asks a first-visit question (the session mode picker, craft-mode.js) over every page; seeding \"already asked\" renders the page a returning builder sees (task 1005080).",
|
|
5
|
-
"storage": {
|
|
6
|
+
"storage": {
|
|
7
|
+
"session": {
|
|
8
|
+
"hall-craft-asked": "1"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
6
11
|
"surface": "hall-ui",
|
|
7
12
|
"stub": {
|
|
8
13
|
"prefix": "/builders/",
|
|
@@ -40,7 +45,6 @@
|
|
|
40
45
|
"visible": [
|
|
41
46
|
"#streetBoard",
|
|
42
47
|
"#streetSigns",
|
|
43
|
-
"#streetMode",
|
|
44
48
|
"#streetHome",
|
|
45
49
|
"#app-topbar",
|
|
46
50
|
"#fullscreen-toggle"
|
|
@@ -78,7 +82,6 @@
|
|
|
78
82
|
"visible": [
|
|
79
83
|
"#streetBoard",
|
|
80
84
|
"#streetSigns",
|
|
81
|
-
"#streetMode",
|
|
82
85
|
"#fullscreen-toggle"
|
|
83
86
|
],
|
|
84
87
|
"hidden": [
|
|
@@ -122,34 +125,6 @@
|
|
|
122
125
|
]
|
|
123
126
|
}
|
|
124
127
|
},
|
|
125
|
-
"switched": {
|
|
126
|
-
"auth": true,
|
|
127
|
-
"_": "The light/dark switch pressed once: the other mode, the street redrawn in it.",
|
|
128
|
-
"actions": [
|
|
129
|
-
[
|
|
130
|
-
"wait",
|
|
131
|
-
600
|
|
132
|
-
],
|
|
133
|
-
[
|
|
134
|
-
"clickIfVisible",
|
|
135
|
-
"[data-craft-close]"
|
|
136
|
-
],
|
|
137
|
-
[
|
|
138
|
-
"click",
|
|
139
|
-
"#streetMode"
|
|
140
|
-
],
|
|
141
|
-
[
|
|
142
|
-
"wait",
|
|
143
|
-
400
|
|
144
|
-
]
|
|
145
|
-
],
|
|
146
|
-
"expect": {
|
|
147
|
-
"visible": [
|
|
148
|
-
"#streetBoard",
|
|
149
|
-
"#streetSigns"
|
|
150
|
-
]
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
128
|
"focus": {
|
|
154
129
|
"auth": true,
|
|
155
130
|
"_": "Keyboard: the wordmark back to the city focused, its ring drawn.",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
|
|
13
13
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
14
14
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
15
|
-
<link rel="stylesheet" href="/builders/style.css?v=2026-
|
|
15
|
+
<link rel="stylesheet" href="/builders/style.css?v=2026-11-11-helm">
|
|
16
16
|
<link rel="stylesheet" href="/builders/studio.css?v=2026-10-09-day">
|
|
17
17
|
<link rel="stylesheet" href="/builders/approval-queue.css?v=2026-09-29-aqfix">
|
|
18
18
|
<link rel="stylesheet" href="/builders/home-gallery.css?v=2026-11-04-studio">
|
|
@@ -222,10 +222,10 @@
|
|
|
222
222
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
223
223
|
|
|
224
224
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
225
|
-
<script src="/builders/shell-game.js?v=2026-11-
|
|
225
|
+
<script src="/builders/shell-game.js?v=2026-11-11-helm"></script>
|
|
226
226
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
227
|
-
<script src="/builders/craft-mode.js?v=2026-11-
|
|
228
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
227
|
+
<script src="/builders/craft-mode.js?v=2026-11-10-visor"></script>
|
|
228
|
+
<script src="/builders/shell.js?v=2026-11-11-helm"></script>
|
|
229
229
|
<script src="/builders/hall-dialog.js"></script>
|
|
230
230
|
<script src="/builders/palette.js" defer></script>
|
|
231
231
|
<!-- The kit, for its ONE renderer: the full-size ship-time visual figure
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
<script src="/builders/studio-lib.js?v=2026-10-09-day"></script>
|
|
244
244
|
<script src="/builders/ai-studio-lib.js?v=2026-10-29-ais1"></script>
|
|
245
245
|
<script src="/builders/studio.js?v=2026-10-09-day"></script>
|
|
246
|
-
<script src="/builders/home-gallery.js?v=2026-11-
|
|
246
|
+
<script src="/builders/home-gallery.js?v=2026-11-10-options"></script>
|
|
247
247
|
<script src="/builders/home-studio.js?v=2026-11-04-studio"></script>
|
|
248
248
|
</body>
|
|
249
249
|
</html>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_": "The studio home (task 1003971 / BV2.TW16), built 1:1 on docs/design/mocks/tweak-mode/Main.dc.html: the night room, the greeting and its sub-line (editable in place as a tweak of builders:studio), the tally, Resume, and three quick actions opening glass panels (the Tweak/CopyWrite Flow, the Approval queue, Artist Review Status). Behind a quiet door, the older reviews (R06 of goal 1000074, task 1003117; retired in TW14) still answer the reviews filed before Tweak Mode. Against the kit's own stub the page renders its unread states (no copy-desk feeds). TO SEE IT POPULATED, point the kit at the hall-preview harness: `node scripts/hall-preview/server.js --port 4636 --fixture-me` then `render.js --base-in http://builders.localhost:4636 --base-out http://builders.localhost:4636`. The harness answers the tally, the pages and the next page from copy-desk__tally.json, copy-desk__pages.json and copy-desk__next.json (built by the real composers), Resume's counter from copy-desk__pages__draft.json, the studio's own lines from copy-desk__pages__draft-studio.json, the claim and the draft save from its CANNED WRITES, and the older reviews from tasks.json (whose first row IS a cascade artist review).",
|
|
3
3
|
"page": "/builders/studio",
|
|
4
|
+
"modes": ["dark"],
|
|
4
5
|
"_storage": "The hall asks a first-visit question (the session mode picker, craft-mode.js) over every page; seeding \"already asked\" renders the page a returning builder sees (task 1005080).",
|
|
5
6
|
"storage": { "session": { "hall-craft-asked": "1" } },
|
|
6
7
|
"surface": "hall-ui",
|