1
0
Fork 0
Commit graph

521 commits

Author SHA1 Message Date
53d053b3b2 chore(db): refresh generated schema 2026-08-28 00:20:58 -04:00
450697416b test(auth): cover session token expiry parsing 2026-08-28 00:20:58 -04:00
64babe2608 feat(intelligence): track mission completion and campaign modes 2026-08-28 00:20:47 -04:00
d94da34af2 feat(intelligence): add mission feedback reminders 2026-08-28 00:20:41 -04:00
c2a16120cc feat(auth): handle expiring sessions in frontend 2026-08-28 00:20:35 -04:00
f6d42399d4 fix(bot): refresh roll-call date changes 2026-08-28 00:20:24 -04:00
055db8d0f0 docs(todo): refresh application roadmap
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:11 -04:00
ddca600f04 docs(deploy): document Coolify deployment flow
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:11 -04:00
a82ab415af build(deploy): remove legacy deploy hook
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:11 -04:00
7ca8cd8551 feat(version): expose build metadata
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:11 -04:00
7490f34267 feat(version): add build metadata fields
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:11 -04:00
d518b13f36 feat(xp): show experience descriptions
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:11 -04:00
523b19ee52 feat(xp): expose experience descriptions
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:11 -04:00
21f61ca33f feat(evaluations): add permissions and event logging
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
22b7343fa8 feat(evaluations): register collection and generated types
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
6bbafc7c5a feat(profile): integrate evaluations into profile pages
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
b8ba036965 feat(profile): add leadership evaluation controls
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
959f65b51e feat(evaluations): add profile evaluation actions
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
a21770e54e feat(evaluations): add evaluation service
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
15145f613a feat(evaluations): add evaluations collection and migration
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
9955c376f9 feat(evaluations): define performance levels
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-27 18:36:04 -04:00
2be1081e92 test(int): fix pre-existing tickets and market spec failures
tickets: makeUser now assigns roleDocs because getStaffUserIds queries the RBAC relationship and the legacy roles select field is not synced at runtime. Both specs: teardown deletes profiles (and user-notifications in market) before users, since those relationships are NOT NULL.
2026-08-27 14:01:16 -04:00
9323a7ce08 feat(notifications): notify users when awards are granted via profile edit
Add a Profiles afterChange hook that diffs progression.awards against previousDoc (row id, falling back to award+date composite key) and sends an award:granted notification including the grant reason and issuer. Register award:granted as a muteable notification type.
2026-08-27 14:01:16 -04:00
503e7a35f9 feat(import): add Arma library importer with PBO icon extraction
- importArmaLibrary: upsert Arma export catalog into assets/vehicles via
  Payload, materialize .paa thumbnails (convertPaaToPng) and link uploads,
  resolve Fuel resource for vehicle fuel defaults
- extractArmaIcons: ref-driven PBO .paa extraction into a --paa-root tree
  shaped like inventory icon ref paths
- package.json: add import:arma script
2026-08-27 11:25:28 -04:00
d740d43800 feat(eod): update difficulty selection in EOD components and bump version to 0.2.0 2026-08-26 23:55:03 -04:00
7a34c3901e feat(eod): add best times tracking for training, perimeter, and supply road games 2026-08-26 23:24:24 -04:00
a247e61fa9 feat(eod): add high-contrast toggle, improved leaderboard, new effects on bad-flag cells 2026-08-26 22:36:06 -04:00
b99520bc64 feat(version): add version bump script for CI deployments 2026-08-26 22:13:24 -04:00
2922df23dd chore(db): add EOD profile migration 2026-08-26 22:04:48 -04:00
3e82ef4ed9 feat(profiles): track EOD minesweeper progress 2026-08-26 22:04:48 -04:00
512cdd62ad feat(eod): add minesweeper clearance game 2026-08-26 22:04:48 -04:00
3112b72972 feat(profiles): adjust experience points calculation for kills 2026-08-26 18:12:34 -04:00
287a0f7db8 feat(server): add stale presence monitoring 2026-08-26 18:05:57 -04:00
3dfdc8916d feat(arma): track player kills from sync events 2026-08-26 18:05:51 -04:00
d4060c06f0 feat(campaigns): include cover images in frontend queries 2026-08-26 18:05:41 -04:00
413a677306 chore(.gitignore): add development environment files to ignore list 2026-08-26 00:55:49 -04:00
b22a1836e4 chore(migrations): track schema snapshots and require explicit apply 2026-08-26 00:53:57 -04:00
83f203d736 feat(shims): add targeted client-side injections 2026-08-26 00:53:31 -04:00
0771424446 feat(campaigns): let members create and own campaigns 2026-08-26 00:53:17 -04:00
d6b2ffa5d2 chore(access-control): scaffold empty isAuthor helper stub 2026-08-25 13:27:48 -04:00
f1dd3c67ce feat(campaigns): add Zeus campaign-creation CTA to campaigns header 2026-08-25 13:27:48 -04:00
802873c7fa feat(structures): hero image header on structure detail page
When the structure type has an image, render it as a full-bleed
cover behind the page header with vertical and horizontal gradient
overlays; text shifts to white for contrast. Headers without an
image keep the previous plain layout.
2026-08-25 12:34:35 -04:00
fff9e82d62 feat(tools): scaffold reset-password CLI
Add src/tools/cli with a CliFlow helper (boxed headers, labeled log
lines) and a reset-password command stub wired to the prompt package.
Runnable via 'bun run u:reset-password'; interactive flow to follow.
2026-08-25 12:32:03 -04:00
41b9d62e15 feat(sidebar): add sparkle accent to mini XP display
Show a sparkle icon next to the XP number in the collapsed sidebar
XP strip; inline the level-name/XP spans per prettier.
2026-08-25 12:31:54 -04:00
3348466f3b fix(roster): tighten tab icon spacing and allow org chart scroll
Add gap-1.5 to the roster tab triggers so icons and labels are not
glued together, and let the org chart tab scroll horizontally instead
of overflowing the page.
2026-08-25 12:31:53 -04:00
7cfb650095 style(bot): capitalize attendance embed field labels
Title-case 'Operation Type' and 'Max Players' in the RSVP embed and
apply prettier formatting to the listener error log call.
2026-08-25 12:31:20 -04:00
9b909e85e6 refactor(arma-bridge): extract shared server guard and json coercion
requireArmaServer (src/lib/arma-bridge/server.ts) wraps the shared
bridge auth + game-servers lookup that every v1 route repeated;
asJson (json.ts) narrows untrusted request values to what Payload's
json field validation accepts (strings normalize to the fallback
instead of failing the write). All four v1 routes now use both.

Also document the ARMA_BRIDGE_API_KEY env var missed when the bridge
routes landed.
2026-08-25 12:30:50 -04:00
c628f8a90b feat(missions): auto-complete past missions via mission-tick bin
Add the mission-tick Payload bin (external cron): sweeps missions
whose status is Scheduled/Active and whose scheduled calendar day
(classification.startDateTime, server-local) has fully passed and
sets them to Completed, emitting a mission:auto-complete event per
mission. Draft and terminal statuses are never touched; idempotent.
Notifies clients via the game-tick SSE path.

Logic lives in src/lib/intelligence/missionLifecycle.ts with an
integration test in tests/int/mission-lifecycle.int.spec.ts.
2026-08-25 12:30:04 -04:00
de1230a757 fix(generate-mission): strip array row ids when cloning missions
Cloning a mission whose array rows still carry the source doc's row
ids trips a unique-constraint violation in the drizzle adapter,
surfacing as 'ValidationError: The following field is invalid: id'.
Walk the collection's field schema (groups, tabs, rows, nested
arrays) and strip row ids before create — schema-driven so Lexical
richText blobs are cloned verbatim.

Also adopt the bin file logger and the standard fatal-error exit
path.
2026-08-25 12:29:26 -04:00
e72b849774 feat(scripts): tee bin script logs to daily files
Add createBinLogger (src/scripts/lib/binFileLogger.ts): every log call
is appended synchronously to logs/<bin-key>/<YYYY-MM-DD>.log (UTC) in
addition to the console logger — sync writes because bin scripts
process.exit() immediately. Bin bodies are wrapped in try/catch so a
fatal error is logged to file and exits code 1. Override the directory
with BIN_LOG_DIR. logs/ is gitignored.

game-tick, market-tick, and processShipmentTick adopt the logger;
generate-mission follows with its clone fix; mission-tick lands with
its feature. Document BIN_LOG_DIR in .env.example and the logging in
AGENTS.md / README.
2026-08-25 12:29:07 -04:00