1
0
Fork 0
Commit graph

216 commits

Author SHA1 Message Date
7180b0aa4c feat(missions): make code name optional, add UGC cover images
- Missions.codeName is now optional (still unique when set); migration included
- Campaign and side-op dialogs accept an optional cover image (uploadUgcImage)
- Reminder toasts, evaluation aggregates, calendar, cards and mission headers
  handle a null code name
- Mission read filter no longer hides drafts by status; visibility follows
  ownershipAndStatus.visibility only
2026-09-10 20:02:47 -04:00
f781e53dc1 feat(story): add chapter table of contents with hover reveal to chronicle page 2026-09-10 17:56:35 -04:00
de2ca66cec feat(voiceover): add hold-to-confirm spoiler gate on recording pages
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-10 16:14:02 -04:00
c48fee4b4d fix(missions): accept plain-text mod lists and keep side op narrative collapsed
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-10 16:13:59 -04:00
8668a59d06 feat(campaigns): split page into official and community sections with tactical official cards 2026-09-09 19:42:50 -04:00
0dd9673690 fix(eod): unlock custom minefields after clearing two sectors 2026-09-09 18:55:00 -04:00
cbe88c141b feat(opord): track per-tier best times with leaderboard column and par backfill 2026-09-09 11:37:51 -04:00
eb77f45b95 feat(opord): add par-anchored speed bonus to scoring 2026-09-09 11:28:39 -04:00
167ac22990 fix(radio): floor unlock-progress readout so it never overstates the threshold
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-09 00:03:36 -04:00
911fc31354 feat(minigames): hide UGC entry buttons until custom content unlocks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-09 00:03:29 -04:00
25975db23f refactor(minigames): move routes, components, and libs under minigames parents
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-09 00:02:59 -04:00
455d705eb9 feat(minigames): add UnlockNotice and wire into EOD and radio arenas
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-08 22:38:38 -04:00
bf491fc9cd feat(eod): add author exposure toggle and reduced-XP copy to custom play
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-08 15:57:01 -04:00
6d4b5ad297 feat(eod): restrict custom loss reveal and add question-mark fog to hidden cells
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-08 15:57:01 -04:00
1cf11745fe feat(radio): add custom radio test authoring, play, and leaderboard
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-08 14:41:18 -04:00
52328da8f9 feat(eod): add custom minefield authoring, play, and leaderboard
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-08 14:41:18 -04:00
251bb0506f docs(opord): rename veteran tier detail to extended order 2026-09-08 13:06:00 -04:00
8439dd7e17 docs(opord): drop the linking-question examples from the protocol card 2026-09-08 13:04:43 -04:00
baa1863c2f docs(opord): reframe protocol card copy around game mechanics 2026-09-08 13:03:43 -04:00
840bc27646 feat(opord): add draining timer bar to the 2s unlock countdown 2026-09-08 13:02:28 -04:00
246a5796f8 feat(opord): lock answering behind a 2s countdown per question 2026-09-08 13:00:43 -04:00
50b9b7e46c feat(opord): add garrison, ROE, intel, and secondary objectives with tier scaling 2026-09-08 12:53:36 -04:00
d8ee14ee8d feat(opord): dynamic abort contingency with six options 2026-09-08 12:39:57 -04:00
53dec0b127 fix(opord): wrap quiz option button text instead of overflowing 2026-09-08 12:35:25 -04:00
0996b9b7c2 feat(opord): scale tiers to 10/15/20 questions with expanded briefings 2026-09-08 12:34:37 -04:00
c8c0267d54 feat(opord): soften fairness copy to a polite ask 2026-09-08 12:18:43 -04:00
e52a637f96 feat(minigames): Esc/R reset keybind with hint text for OPORD Recall 2026-09-08 12:13:45 -04:00
5bde9707a3 feat(minigames): fairness note between briefing banner and OPORD canvas 2026-09-08 12:09:11 -04:00
3fefb8b4a3 feat(minigames): tier-scaled briefings with relational questions for OPORD Recall 2026-09-08 11:58:15 -04:00
95663924ea feat(minigames): anti-cheat pass for OPORD Recall
- briefing is now self-paced (player clicks Begin recall; no memo countdown)
- recall quiz has a hard server-validated time band per tier (45/60/75s limits, minimum plausible human time, 2.5s grace); scripted instant or over-limit submissions are rejected
- briefing is rendered on canvas: no selectable text in the DOM, copy/cut/context-menu/ctrl-a-c-x-s-p blocked; screenshots remain possible but burn quiz time
- ?seed=<n> URL param pins a deterministic scenario (no server meaning; used by the e2e spec to know the grid)
- e2e spec updated for the new flow and asserts no grid text leaks into the DOM
2026-09-08 11:46:53 -04:00
eaa0325b6d feat(minigames): add OPORD Recall briefing-recall minigame
- seeded OPORD generator (grid, azimuth, H-HOUR, phase lines, codewords, callsign, frequency) in pure lib src/lib/opord-recall.ts with per-tier memo windows (25/18/12s) and quiz sizes (4/6/8)
- server action submitOpordRecallResult validates input, recomputes score server-side, persists to Profiles progression.minigames.opordRecall, broadcasts XP, emits minigame:opord-recall event
- UI at /opord: briefing countdown, one-at-a-time quiz, debrief metres, tier radio group, SSE presence, REST leaderboard per tier
- profiles migration 20260908_152021 (7 additive columns) + XP hook wiring
- nav entries in command palette and NavUser Exercises submenu
- e2e spec plays a full round and asserts debrief + leaderboard row
2026-09-08 11:26:18 -04:00
caca11a60b feat(story): add Chronicle story beats system with reader states and reactions 2026-09-08 01:32:59 -04:00
b64f4b26f4 fix(intelligence): contain friday ops rows on mobile and credit side op hosts 2026-09-08 01:31:01 -04:00
949459647d style(roster): use hyphen in the A-Z roster tab label 2026-09-07 05:19:53 -04:00
9f80361d14 style(projects): replace dash separator in sprint date ranges 2026-09-07 05:19:53 -04:00
eb3dc0231c style(locker): replace dash placeholder for grid footprint 2026-09-07 05:19:53 -04:00
5f5072399b style(helpdesk): replace dash placeholder for missing ticket dates 2026-09-07 05:19:53 -04:00
d485a82fa6 style(minigames): replace dashes in leaderboard and radio UI 2026-09-07 05:19:53 -04:00
12b19b3d6a style(banking): replace dash placeholders in activity feed and timestamps 2026-09-07 05:19:53 -04:00
a4ea3ea387 style(intelligence): replace dashes with ASCII in mission and campaign views 2026-09-07 05:19:48 -04:00
47d338c868 style(events): replace dashes with ASCII in event log UI 2026-09-07 05:19:48 -04:00
dcb4893b10 feat(storage): split storage permissions and rework manage-storage UI
Deposits/withdrawals of stock (economy-mutating) are now superuser-only, while moving items around (transfer/place/collect) stays open to logistics-qualified users; seed roles updated to match. ManageStorageDialog reworked alongside its toolbar/button/view wrappers, and the structure page wires up the new permission split.
2026-09-07 05:07:53 -04:00
91dc48ad2c refactor(sidebar): group logistics nav into Assets/Operations/Personnel sections
Logistics entries are collapsed into collapsible groups, Personnel moves from its own sidebar section into Logistics, and an Event Log entry is added to Intelligence.
2026-09-07 05:07:51 -04:00
29f7e2b57a feat(events): add global event log page
New /events page rendering the full game event ledger (system + narrative events) with type/target/source/date filtering, backed by a shared shadcn table component.
2026-09-07 05:07:51 -04:00
227885daf7 feat(missions): let side op creators mark their op as Ready
Adds a 'Mark as Ready' control on the mission detail page (owner or missions:update gated) plus the markSideOpReady server action. Status-gated to Concept/Planning/Scheduled; emits a mission:ready event. Stops the daily ready-reminders and lets missionEmbeds post the roll-call.
2026-09-07 05:07:48 -04:00
ffb2c2c5d9 feat(missions): show op host on side op cards and mission pages
Side ops now credit their creator: mission cards get a 'Hosted by X' meta entry and the mission detail page gets a Host chip. Display name preferred over username; only shown for side ops with a populated createdBy.
2026-09-07 05:07:43 -04:00
1b422ba1c2 feat(voiceover): collect take descriptions and surface reviewer feedback
Submitters can attach an optional 300-char note to each take, and their own takes list now shows the description plus the reviewer feedback that was previously admin-only.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-07 04:37:08 -04:00
a2a5f7877b style: remove em-dashes from user-visible prose (wave 1) 2026-09-07 01:34:28 -04:00
d9d0f8f7ae feat(voiceover): add reading guidance panel to the teleprompter 2026-09-07 00:52:26 -04:00
db73170da1 feat(missions): schedule Friday side ops in the unit timezone
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-07 00:34:35 -04:00