@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
|
@@ -24,11 +24,9 @@
|
|
|
24
24
|
// A feed that fails leaves its part of the city out; it never draws sample
|
|
25
25
|
// data. Without gov-living.js the page draws the city it drew before.
|
|
26
26
|
//
|
|
27
|
-
// THE
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
// in, and a change here carries back to them. The drawing's faces come from
|
|
31
|
-
// the mode, so a toggle redraws the city from the last feeds (no refetch).
|
|
27
|
+
// THE MODE. The hall is dark only (task 1005192, ADR 0402), so the city has no
|
|
28
|
+
// light/dark switch and reads no stored choice: it draws its night faces. Day
|
|
29
|
+
// and night come back as art (the city and its sky), never as a control.
|
|
32
30
|
//
|
|
33
31
|
// MOTION is CSS only (city.css); nothing here animates. The scale write on
|
|
34
32
|
// resize is layout, not motion; the card changes a class.
|
|
@@ -42,9 +40,6 @@
|
|
|
42
40
|
'use strict';
|
|
43
41
|
var City = window.GovCity;
|
|
44
42
|
var SVG_NS = 'http://www.w3.org/2000/svg';
|
|
45
|
-
var THEME_KEY = 'hall-theme';
|
|
46
|
-
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';
|
|
47
|
-
var MOON = 'M11.5 8.6A5 5 0 0 1 5.4 2.5A5 5 0 1 0 11.5 8.6Z';
|
|
48
43
|
var FEEDS = {
|
|
49
44
|
docket: '/api/bongos/government/docket',
|
|
50
45
|
goals: '/api/bongos/goals',
|
|
@@ -72,54 +67,18 @@
|
|
|
72
67
|
};
|
|
73
68
|
|
|
74
69
|
var $ = function (id) { return document.getElementById(id); };
|
|
75
|
-
var media = window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;
|
|
76
70
|
var data = { docket: null, goals: [], rollups: [], loaded: false, raw: {} };
|
|
77
71
|
var model = null;
|
|
78
72
|
var openKey = null;
|
|
79
73
|
var drewLiving = false;
|
|
80
74
|
|
|
81
|
-
// ----------
|
|
82
|
-
//
|
|
83
|
-
// holds for this page view.
|
|
84
|
-
var chosen = null;
|
|
85
|
-
function storedTheme() {
|
|
86
|
-
try { var v = window.localStorage.getItem(THEME_KEY); if (v === 'dark' || v === 'light') return v; } catch (_) { /* blocked */ }
|
|
87
|
-
return chosen;
|
|
88
|
-
}
|
|
89
|
-
function effectiveTheme() { return storedTheme() || (media && media.matches ? 'dark' : 'light'); }
|
|
90
|
-
function applyTheme() {
|
|
91
|
-
var t = effectiveTheme();
|
|
92
|
-
document.documentElement.setAttribute('data-theme', t);
|
|
93
|
-
var btn = $('cityMode');
|
|
94
|
-
var label = t === 'dark' ? 'Switch to light mode' : 'Switch to dark mode';
|
|
95
|
-
if (btn) { btn.setAttribute('aria-label', label); btn.setAttribute('title', label); }
|
|
96
|
-
var icon = $('cityModeIcon');
|
|
97
|
-
if (icon) icon.setAttribute('d', t === 'dark' ? SUN : MOON);
|
|
98
|
-
return t;
|
|
99
|
-
}
|
|
100
|
-
function toggleTheme() {
|
|
101
|
-
var next = effectiveTheme() === 'dark' ? 'light' : 'dark';
|
|
102
|
-
chosen = next;
|
|
103
|
-
try { window.localStorage.setItem(THEME_KEY, next); } catch (_) { /* private mode: this page only */ }
|
|
104
|
-
draw(applyTheme());
|
|
105
|
-
syncShell();
|
|
106
|
-
}
|
|
107
|
-
// IN THE HALL (task 1004544) the shell's top bar carries the hall's own theme
|
|
108
|
-
// switch beside this one. Both write the same 'hall-theme' preference and the
|
|
109
|
-
// same html[data-theme]; each repaints when the other flips it, so the two
|
|
110
|
-
// icons and the drawing's faces never disagree.
|
|
75
|
+
// ---------- the mode: dark only (task 1005192, ADR 0402) ----------
|
|
76
|
+
// The drawing's faces come from the mode, and the hall has one.
|
|
111
77
|
var painted = null;
|
|
112
|
-
function
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
function watchShellTheme() {
|
|
118
|
-
if (typeof MutationObserver !== 'function') return;
|
|
119
|
-
new MutationObserver(function () {
|
|
120
|
-
var t = document.documentElement.getAttribute('data-theme');
|
|
121
|
-
if ((t === 'dark' || t === 'light') && t !== painted) { painted = t; chosen = t; draw(applyTheme()); }
|
|
122
|
-
}).observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });
|
|
78
|
+
function effectiveTheme() { return 'dark'; }
|
|
79
|
+
function applyTheme() {
|
|
80
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
81
|
+
return 'dark';
|
|
123
82
|
}
|
|
124
83
|
|
|
125
84
|
// ---------- fit the 1440 x 900 artboard to the window ----------
|
|
@@ -697,7 +656,9 @@
|
|
|
697
656
|
// 1 / 2 / 3 answer the card's ask, as on the deck
|
|
698
657
|
function cardKey(e) {
|
|
699
658
|
if (!e) return;
|
|
700
|
-
|
|
659
|
+
// Spent once it closed the card (task 1005188, found by ADR 0399 §3): without it the same press
|
|
660
|
+
// also brought the bars back, and in game mode would open the options menu (task 1005144).
|
|
661
|
+
if (e.key === 'Escape') { if (e.preventDefault) e.preventDefault(); closeCard(); return; }
|
|
701
662
|
if ((e.key === 'ArrowLeft' || e.key === 'ArrowRight') && !e.ctrlKey && !e.metaKey && !e.altKey && !(e.target && /^(INPUT|TEXTAREA)$/.test(String(e.target.tagName)))) { if (e.preventDefault) e.preventDefault(); flipCard(e.key === 'ArrowLeft' ? -1 : 1); return; }
|
|
702
663
|
var inText = e.target && /^(INPUT|TEXTAREA)$/.test(String(e.target.tagName));
|
|
703
664
|
// Tab is the next thing that needs you in this building, never the next button
|
|
@@ -745,9 +706,6 @@
|
|
|
745
706
|
if (start) start.setAttribute('href', '#decide');
|
|
746
707
|
if (start) start.addEventListener('click', function (e) { if (window.GovCityDecide && window.GovDeck) { if (e.preventDefault) e.preventDefault(); openDecide(null); } });
|
|
747
708
|
window.addEventListener('hashchange', function () { var h = window.location && window.location.hash; if (/^#decide/.test(h || '')) openDecide(h.split('=')[1] || null); });
|
|
748
|
-
var btn = $('cityMode');
|
|
749
|
-
if (btn) btn.addEventListener('click', toggleTheme);
|
|
750
|
-
if (media && media.addEventListener) media.addEventListener('change', function () { if (!storedTheme()) draw(applyTheme()); });
|
|
751
709
|
window.addEventListener('resize', fit);
|
|
752
710
|
var card = $('cityCard');
|
|
753
711
|
// the card's keys work wherever focus is while it is open (Tab never walks its buttons)
|
|
@@ -769,10 +727,13 @@
|
|
|
769
727
|
fit();
|
|
770
728
|
painted = applyTheme();
|
|
771
729
|
draw(painted);
|
|
772
|
-
watchShellTheme();
|
|
773
730
|
return load().then(function (r) { var h = window.location && window.location.hash; if (/^#decide/.test(h || '')) openDecide(h.split('=')[1] || null); return r; });
|
|
774
731
|
}
|
|
775
732
|
|
|
776
|
-
window.GovCityPage = { boot: boot, draw: draw, load: load, fit: fit, openCard: openCard, closeCard: closeCard, openDecide: function (scope, how) { openDecide(scope, how); return decide; }, FEEDS: FEEDS, LIVING_FEEDS: LIVING_FEEDS
|
|
733
|
+
window.GovCityPage = { boot: boot, draw: draw, load: load, fit: fit, openCard: openCard, closeCard: closeCard, openDecide: function (scope, how) { openDecide(scope, how); return decide; }, FEEDS: FEEDS, LIVING_FEEDS: LIVING_FEEDS };
|
|
777
734
|
window.GovCityPage.ready = boot();
|
|
735
|
+
// task 1005148: the Governor City as the visor's scene. No camera until R13, so no movement
|
|
736
|
+
// actions (ADR 0399 §2.2); the card's own keys are listed for the sheet.
|
|
737
|
+
window.__visorScene = { name: 'city', place: 'Governor city', keys: [{ label: 'On a card: answer', key: '1–9' }, { label: 'On a card: next', key: '← →' }] };
|
|
738
|
+
if (window.OTBVisor) window.OTBVisor.scene(window.__visorScene);
|
|
778
739
|
}());
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_": "THE GOVERNOR CITY's home (task 1004524, goal 1000125) through modules/ui-design/kit/render.js. The page draws GET /government/docket, GET /goals and GET /goals/rollups; against the kit's own stub none exists, so every state renders the city with no districts and no pins and the line saying the docket could not be read: a real state the floors must hold in. To look at the populated city, 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 4624 --fixture-me\n node modules/ui-design/kit/render.js --states modules/hall-ui/public/city.states.json --base-in http://localhost:4624 --base-out http://localhost:4624\n\nThe
|
|
2
|
+
"_": "THE GOVERNOR CITY's home (task 1004524, goal 1000125) through modules/ui-design/kit/render.js. The page draws GET /government/docket, GET /goals and GET /goals/rollups; against the kit's own stub none exists, so every state renders the city with no districts and no pins and the line saying the docket could not be read: a real state the floors must hold in. To look at the populated city, 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 4624 --fixture-me\n node modules/ui-design/kit/render.js --states modules/hall-ui/public/city.states.json --base-in http://localhost:4624 --base-out http://localhost:4624\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/city",
|
|
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/"
|
|
@@ -38,7 +43,6 @@
|
|
|
38
43
|
"#cityStage",
|
|
39
44
|
"#cityStart",
|
|
40
45
|
"#cityLine",
|
|
41
|
-
"#cityMode",
|
|
42
46
|
"#app-topbar",
|
|
43
47
|
"#fullscreen-toggle"
|
|
44
48
|
],
|
|
@@ -75,7 +79,6 @@
|
|
|
75
79
|
"visible": [
|
|
76
80
|
"#cityStage",
|
|
77
81
|
"#cityStart",
|
|
78
|
-
"#cityMode",
|
|
79
82
|
"#fullscreen-toggle"
|
|
80
83
|
],
|
|
81
84
|
"hidden": [
|
|
@@ -91,34 +94,6 @@
|
|
|
91
94
|
]
|
|
92
95
|
}
|
|
93
96
|
},
|
|
94
|
-
"switched": {
|
|
95
|
-
"auth": true,
|
|
96
|
-
"_": "The sun/moon switch pressed once: the other mode, the city redrawn in it.",
|
|
97
|
-
"actions": [
|
|
98
|
-
[
|
|
99
|
-
"wait",
|
|
100
|
-
600
|
|
101
|
-
],
|
|
102
|
-
[
|
|
103
|
-
"clickIfVisible",
|
|
104
|
-
"[data-craft-close]"
|
|
105
|
-
],
|
|
106
|
-
[
|
|
107
|
-
"click",
|
|
108
|
-
"#cityMode"
|
|
109
|
-
],
|
|
110
|
-
[
|
|
111
|
-
"wait",
|
|
112
|
-
400
|
|
113
|
-
]
|
|
114
|
-
],
|
|
115
|
-
"expect": {
|
|
116
|
-
"visible": [
|
|
117
|
-
"#cityStage",
|
|
118
|
-
"#cityStart"
|
|
119
|
-
]
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
97
|
"focus": {
|
|
123
98
|
"auth": true,
|
|
124
99
|
"_": "Keyboard: the start button focused, its ring drawn.",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/builders/style.css?v=2026-
|
|
11
|
+
<link rel="stylesheet" href="/builders/style.css?v=2026-11-11-helm">
|
|
12
12
|
<link rel="stylesheet" href="/builders/oversight.css">
|
|
13
13
|
<link rel="stylesheet" href="/builders/collab.css">
|
|
14
14
|
</head>
|
|
@@ -160,10 +160,10 @@
|
|
|
160
160
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
161
161
|
|
|
162
162
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
163
|
-
<script src="/builders/shell-game.js?v=2026-11-
|
|
163
|
+
<script src="/builders/shell-game.js?v=2026-11-11-helm"></script>
|
|
164
164
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
165
|
-
<script src="/builders/craft-mode.js?v=2026-11-
|
|
166
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
165
|
+
<script src="/builders/craft-mode.js?v=2026-11-10-visor"></script>
|
|
166
|
+
<script src="/builders/shell.js?v=2026-11-11-helm"></script>
|
|
167
167
|
<script src="/builders/hall-dialog.js"></script>
|
|
168
168
|
<script src="/builders/palette.js" defer></script>
|
|
169
169
|
<script src="/builders/collab-lib.js?v=2026-09-24-archive"></script>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_": "Collab — the two-sided ask board. ASKED OF YOU comes first because it is the half where someone is waiting, and the empty state of that half is the page's most common render. Written with the re-skin (task 1003307) so this page is MEASURED at three widths in both modes rather than looked at once; the redesign (task 1003471) put four asks and two of the viewer's own in the harness so the rows can be looked at.",
|
|
3
3
|
"page": "/builders/collab",
|
|
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",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/builders/style.css?v=2026-
|
|
11
|
+
<link rel="stylesheet" href="/builders/style.css?v=2026-11-11-helm">
|
|
12
12
|
<link rel="stylesheet" href="/builders/commands.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body data-page="commands" data-page-title="Commands">
|
|
@@ -52,10 +52,10 @@
|
|
|
52
52
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
53
53
|
|
|
54
54
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
55
|
-
<script src="/builders/shell-game.js?v=2026-11-
|
|
55
|
+
<script src="/builders/shell-game.js?v=2026-11-11-helm"></script>
|
|
56
56
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
57
|
-
<script src="/builders/craft-mode.js?v=2026-11-
|
|
58
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
57
|
+
<script src="/builders/craft-mode.js?v=2026-11-10-visor"></script>
|
|
58
|
+
<script src="/builders/shell.js?v=2026-11-11-helm"></script>
|
|
59
59
|
<script src="/builders/hall-dialog.js"></script>
|
|
60
60
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
61
61
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_": "The Commands page (task 1004473): every skill and every bongos CLI verb as two grouped ledgers, filled from GET /specialities/installed-skills and GET /cli/commands. Against the kit's stub both reads 404, so the page renders its 'not available' state, which the floors must hold too. The populated look was verified against a real local server (bongos dev), since both lists are read from disk.",
|
|
3
3
|
"page": "/builders/commands",
|
|
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",
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
THE BUTTON — `.btn` and three modifiers:
|
|
11
11
|
.btn primary: the accent fill with --accent-on, the DARK ink.
|
|
12
12
|
White on the salmon fails AA and DESIGN.md bans it.
|
|
13
|
-
46px
|
|
14
|
-
.btn--ghost the quiet sibling:
|
|
13
|
+
46px: DESIGN.md's door height.
|
|
14
|
+
.btn--ghost the quiet sibling: the press fill, one hairline, soft ink.
|
|
15
15
|
.btn--sm the row size, for a button that repeats down a list or
|
|
16
16
|
sits in a table: 30px, still over the 24px floor.
|
|
17
17
|
.btn--text a button that reads as a link: no fill, no edge, the
|
|
@@ -31,6 +31,21 @@
|
|
|
31
31
|
text .cb-ask__door
|
|
32
32
|
A new page writes `.btn` and its modifiers, never a new name.
|
|
33
33
|
|
|
34
|
+
THE SHAPE AND THE VOICE ARE HELM'S IN THE HALL (task 1005192, ADR 0402).
|
|
35
|
+
Anything you can press takes the CUT CORNER (top-left and bottom-right, the
|
|
36
|
+
hall tier's --cut-path) and names itself in the NAME VOICE (the display
|
|
37
|
+
face, wide tracked capitals: --name-face / --name-weight / --name-space-tight
|
|
38
|
+
/ --name-case). Every one of those is a hall-tier token spent with a
|
|
39
|
+
fallback, and the fallback is the pill and the lowercase body voice this
|
|
40
|
+
sheet drew before: the status page links this sheet without the hall's tier,
|
|
41
|
+
so there the fallbacks stand and nothing on it moves.
|
|
42
|
+
A clip-path clips an outline, so in the hall a cut button's focus is the
|
|
43
|
+
inset two-tone ring --press-focus (the focus colour on the edge, a band of
|
|
44
|
+
the ground inside it: one of the two reads on any fill). A cut also removes
|
|
45
|
+
the hairline at the two cut corners, so the ghost takes the press fill
|
|
46
|
+
(--press-fill) and reads as a shape rather than as a broken outline.
|
|
47
|
+
The text button is a link in a sentence: no cut, no capitals.
|
|
48
|
+
|
|
34
49
|
THE FIELD — one text input / select / textarea, `.input` for a field the
|
|
35
50
|
element selectors do not reach. 40px, a pill (a textarea takes the tile
|
|
36
51
|
corner), an edge that clears 3:1 against the card in both modes so the
|
|
@@ -54,17 +69,21 @@
|
|
|
54
69
|
min-height: 46px;
|
|
55
70
|
min-width: 46px;
|
|
56
71
|
padding: 0 var(--ds-space-md);
|
|
57
|
-
font-family: var(--font-body);
|
|
72
|
+
font-family: var(--name-face, var(--font-body));
|
|
58
73
|
font-size: var(--ds-text-lg);
|
|
59
|
-
font-weight: 500;
|
|
74
|
+
font-weight: var(--name-weight, 500);
|
|
60
75
|
line-height: 1.2;
|
|
61
|
-
|
|
76
|
+
letter-spacing: var(--name-space-tight, normal);
|
|
77
|
+
text-transform: var(--name-case, lowercase);
|
|
62
78
|
text-decoration: none;
|
|
63
79
|
white-space: nowrap;
|
|
64
80
|
/* transparent rather than absent: a modifier that sets only a border COLOUR
|
|
65
81
|
(collab.css's .btn--quiet) cannot paint an edge that was never reserved. */
|
|
66
82
|
border: var(--line) solid transparent;
|
|
67
|
-
border-radius: var(--radius-pill);
|
|
83
|
+
border-radius: var(--press-radius, var(--radius-pill));
|
|
84
|
+
clip-path: var(--cut-path, none);
|
|
85
|
+
/* the hall's :focus-visible rule (style.css) spends this in place of its halo */
|
|
86
|
+
--focus-ring: var(--press-focus);
|
|
68
87
|
cursor: pointer;
|
|
69
88
|
transition: background-color var(--ds-dur-fast) var(--ds-ease),
|
|
70
89
|
border-color var(--ds-dur-fast) var(--ds-ease),
|
|
@@ -97,7 +116,7 @@
|
|
|
97
116
|
.btn--ghost, .btn--quiet, .btn-ghost, .landing__btn--quiet, .td-btn, .wip__release,
|
|
98
117
|
.pbtn, .settings-btn, .sessions-row__end, .event-sound-preview {
|
|
99
118
|
color: var(--ink-soft);
|
|
100
|
-
background: transparent;
|
|
119
|
+
background: var(--press-fill, transparent);
|
|
101
120
|
border-color: var(--rule);
|
|
102
121
|
}
|
|
103
122
|
.btn--ghost:hover:not(:disabled), .btn--quiet:hover:not(:disabled), .btn-ghost:hover:not(:disabled),
|
|
@@ -105,7 +124,7 @@
|
|
|
105
124
|
.pbtn:hover:not(:disabled), .settings-btn:hover:not(:disabled),
|
|
106
125
|
.sessions-row__end:hover:not(:disabled), .event-sound-preview:hover:not(:disabled) {
|
|
107
126
|
color: var(--ink);
|
|
108
|
-
background: transparent;
|
|
127
|
+
background: var(--press-fill, transparent);
|
|
109
128
|
border-color: var(--ink-faint);
|
|
110
129
|
text-decoration: none;
|
|
111
130
|
}
|
|
@@ -142,6 +161,7 @@
|
|
|
142
161
|
min-width: 30px;
|
|
143
162
|
padding: 0 var(--ds-space-sm);
|
|
144
163
|
font-size: var(--ds-text-sm);
|
|
164
|
+
clip-path: var(--cut-path-sm, none);
|
|
145
165
|
}
|
|
146
166
|
|
|
147
167
|
/* text — a button that reads as a link: the sentence's own size and case, the
|
|
@@ -151,9 +171,13 @@
|
|
|
151
171
|
min-height: 24px;
|
|
152
172
|
min-width: 24px;
|
|
153
173
|
padding: 0 2px;
|
|
174
|
+
font-family: inherit;
|
|
154
175
|
font-size: inherit;
|
|
155
176
|
font-weight: inherit;
|
|
177
|
+
letter-spacing: inherit;
|
|
156
178
|
text-transform: none;
|
|
179
|
+
clip-path: none;
|
|
180
|
+
--focus-ring: initial;
|
|
157
181
|
color: var(--accent-ink);
|
|
158
182
|
background: transparent;
|
|
159
183
|
border-color: transparent;
|
|
@@ -166,16 +190,44 @@
|
|
|
166
190
|
}
|
|
167
191
|
.btn--text:disabled { color: var(--ink-faint); background: transparent; }
|
|
168
192
|
|
|
169
|
-
/* Focus keeps the
|
|
170
|
-
sets the tile corner for the general case; a pill under it
|
|
193
|
+
/* Focus keeps the button's own corner. The shell's two-tone ring (style.css
|
|
194
|
+
:focus-visible) sets the tile corner for the general case; a pill under it
|
|
195
|
+
would square off. In the hall the button is cut, and the cut clips that
|
|
196
|
+
outline and its halo away, so the ring is drawn INSIDE the shape instead:
|
|
197
|
+
the base rule hands --press-focus to the shell's ring as --focus-ring. */
|
|
171
198
|
.btn:focus-visible, .btn-accent:focus-visible, .btn-ghost:focus-visible,
|
|
172
199
|
.landing__btn:focus-visible, .task__claim:focus-visible, .td-btn:focus-visible,
|
|
173
200
|
.wip__release:focus-visible, .setup-gate__save:focus-visible, .pbtn:focus-visible,
|
|
174
201
|
.settings-btn:focus-visible, .sessions-row__end:focus-visible,
|
|
175
202
|
.event-sound-preview:focus-visible, button.craft-save:focus-visible {
|
|
176
|
-
border-radius: var(--radius-pill);
|
|
203
|
+
border-radius: var(--press-radius, var(--radius-pill));
|
|
177
204
|
}
|
|
178
205
|
|
|
206
|
+
/* ---------- the segment (task 1005192, ADR 0402) ----------
|
|
207
|
+
HELM'S PROGRESS: one small skewed bar per step, in a row. A step that is done
|
|
208
|
+
is filled with the soft ink (information you read); one still to come is an
|
|
209
|
+
outline; the accent fills only a step the reader can act on now (.seg--now).
|
|
210
|
+
Always beside words that say the same thing: a row of bars is never the only
|
|
211
|
+
reading. The measures are the hall tier's (--seg-*). */
|
|
212
|
+
.segs {
|
|
213
|
+
display: flex;
|
|
214
|
+
flex-wrap: wrap;
|
|
215
|
+
gap: var(--seg-gap);
|
|
216
|
+
margin: 0;
|
|
217
|
+
padding: 0 var(--seg-gap);
|
|
218
|
+
list-style: none;
|
|
219
|
+
}
|
|
220
|
+
.seg {
|
|
221
|
+
box-sizing: border-box;
|
|
222
|
+
flex: 0 1 var(--seg-w);
|
|
223
|
+
min-width: var(--seg-h);
|
|
224
|
+
height: var(--seg-h);
|
|
225
|
+
border: var(--line-strong) solid var(--rule);
|
|
226
|
+
transform: skewX(var(--seg-skew));
|
|
227
|
+
}
|
|
228
|
+
.seg--done { background: var(--ink-soft); border-color: transparent; }
|
|
229
|
+
.seg--now { background: var(--accent); border-color: transparent; }
|
|
230
|
+
|
|
179
231
|
/* ---------- the field ----------
|
|
180
232
|
The four element selectors the hall always styled keep their weight (0,1,1),
|
|
181
233
|
so nothing that leaned on them moves in the cascade. The other text types
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/builders/style.css?v=2026-
|
|
11
|
+
<link rel="stylesheet" href="/builders/style.css?v=2026-11-11-helm">
|
|
12
12
|
<link rel="stylesheet" href="/builders/oversight.css">
|
|
13
13
|
<link rel="stylesheet" href="/builders/copy-desk.css">
|
|
14
14
|
</head>
|
|
@@ -178,10 +178,10 @@
|
|
|
178
178
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
179
179
|
|
|
180
180
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
181
|
-
<script src="/builders/shell-game.js?v=2026-11-
|
|
181
|
+
<script src="/builders/shell-game.js?v=2026-11-11-helm"></script>
|
|
182
182
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
183
|
-
<script src="/builders/craft-mode.js?v=2026-11-
|
|
184
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
183
|
+
<script src="/builders/craft-mode.js?v=2026-11-10-visor"></script>
|
|
184
|
+
<script src="/builders/shell.js?v=2026-11-11-helm"></script>
|
|
185
185
|
<script src="/builders/hall-dialog.js"></script>
|
|
186
186
|
<script src="/builders/palette.js" defer></script>
|
|
187
187
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_": "Copy desk — the one-voice review queue. Its three dialogs are real <dialog>s, so their ::backdrop is the sheet's single sanctioned literal (black with alpha as a scrim). Written with the re-skin (task 1003307) so this page is MEASURED at three widths in both modes rather than looked at once; the redesign (task 1003471) put a queue, ten duplicates and a search's hits in the harness so the rows and the dialogs can be looked at; task 1003114 (R03) added the proposal composer and the `proposer` state that opens it.",
|
|
3
3
|
"page": "/builders/copy-desk",
|
|
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",
|