9fa1f39e13docs: the two backup code lists share encrypt_failed and invalid_name
main
le king fu
2026-10-12 20:18:45 -0400
329d83e4e5feat(backups): pass the files[] block of status.json through GET /backups
le king fu
2026-10-12 20:04:12 -0400
3f0abc1871test(backups): an invalid offsite retention is dropped
le king fu
2026-10-12 19:14:59 -0400
1b619249e2feat(backups): GET /backups and POST /backups/pull
le king fu
2026-10-10 19:43:07 -0400
5208957ce9fix(agent): nothing the VPS sends deletes or alters a pulled backup
le king fu
2026-10-10 19:13:27 -0400
f81a80e325fix(agent): anchor the backup rotation on the newest backup, not today
le king fu
2026-10-10 19:03:48 -0400
b87b3d7253fix(agent): run the backup pull under busybox, catch an empty filter
le king fu
2026-10-10 18:56:05 -0400
59b963220dfeat(agent): daily pull of the encrypted PostgreSQL backups
le king fu
2026-10-10 16:18:17 -0400
c5ded9e6f8fix(server): archive by latest date, never a day past reception
le king fu
2026-10-08 21:34:54 -0400
b136749552docs: document the Claude usage history archive, its route and backfill
le king fu
2026-10-08 20:44:45 -0400
cf72292967feat(agent): one-shot backfill of the Claude usage history from local transcripts
le king fu
2026-10-08 20:44:45 -0400
9084d90609feat(server): archive closed Claude usage days by month, serve them on /claude-usage/history
le king fu
2026-10-08 20:41:30 -0400
f694677a1atest(agent): pin ENOENT as a read error below the root, note the subagent-copy limit
le king fu
2026-10-07 20:53:27 -0400
ca33f10b85docs: document the read-error freeze rule and count the #54 cases
le king fu
2026-10-07 20:30:20 -0400
123b3c3c8cfix(agent): no double count across midnight, no freeze on a read error, bounded limits read
le king fu
2026-10-07 20:29:29 -0400
e2a24d768bfix(server): require a full ISO receivedAt on read, cover the temp-file cleanup
le king fu
2026-10-07 20:25:26 -0400
719d65129adocs(claude-md): count the threshold and prototype cases of the rebased #49 fix
le king fu
2026-10-04 15:26:20 -0400
7f01e6afe5docs(agent): document the claude-usage agent install and its guarantees
le king fu
2026-10-04 09:28:33 -0400
e274ca7ed5feat(agent): add the claude-usage agent: plan limits, local cache, push
le king fu
2026-10-04 09:28:33 -0400
c888f7c633fix(agent): take the scan threshold from the open days, key maps without prototype
le king fu
2026-10-04 15:25:43 -0400
5cb9182911fix(agent): collapse doubled slashes in cwd before project mapping
le king fu
2026-10-04 09:11:46 -0400
7d55e30ffdfeat(agent): aggregate Claude usage from local transcripts
le king fu
2026-10-04 09:10:51 -0400
ef8558e90etest(claude-usage): cover the routes, the sanitizer and the new write surface
le king fu
2026-10-04 09:16:11 -0400
e1224e0df4feat(claude-usage): add POST and GET /claude-usage behind a third token kind
le king fu
2026-10-04 09:16:05 -0400
67d40c83c3test(ci): pin the two ends of the port range and the end anchor (#46)
le king fu
2026-10-02 14:15:03 -0400
75ed6dd324fix(test-curl): fix the two tokens, refuse bad ports on both variables (#46)
le king fu
2026-10-02 14:06:01 -0400
2c7886dbfefix(test-curl): take the two ports from the environment (#46)
le king fu
2026-10-01 21:41:37 -0400
7427577053test(ci): pin the non-HTTP occupant and the wait deadline of test-curl.sh (#41)
le king fu
2026-10-01 21:18:25 -0400
193635a68efix(test-curl): refuse a port already taken before starting (#41)
le king fu
2026-10-01 20:51:42 -0400
096f95da05fix(test-curl): keep the socket pass off the environment (#41)
le king fu
2026-10-01 20:12:57 -0400
5912f08e41test(writes): count every write, drop the stack attribution (#40)
le king fu
2026-10-01 20:01:09 -0400
198e1cf586test(hosts): pin the symlink guard and the regex anchor of the temp sweep (#38)
le king fu
2026-10-01 18:10:49 -0400
d7120063adtest(ci): check the load-late detector on its own (#35)
le king fu
2026-10-01 17:42:01 -0400
13d46e05efdocs: correct two comments of the CI pins (#35)
le king fu
2026-10-01 17:40:38 -0400
a03e4d4296docs: keep the escaped-key example escaped, bound the holes list (#35)
le king fu
2026-10-01 16:13:55 -0400
92bfb426catest(ci): close the gaps found in the review of PR #42 (#35)
le king fu
2026-10-01 15:56:32 -0400
ae27c7d504docs: record the known holes of the column-0 require pin (#35)
le king fu
2026-09-30 20:54:06 -0400
32db0f81d5test(ci): catch continue-on-error in any YAML spelling (#35)
le king fu
2026-09-30 20:53:13 -0400
fef9f69fc0fix(ci): keep every curl of the boot check off environment proxies (#35)
le king fu
2026-09-30 20:51:57 -0400
48c9a408f6docs: bound the write guard's claims and name the owning group (#36)
le king fu
2026-09-30 19:59:44 -0400
7523b397f0test: cover degraded paths and shell commands in the write guard (#36)
le king fu
2026-09-30 19:59:44 -0400
6a2f7fec04docs: record the read-only Defenseurs mounts (#36)
le king fu
2026-09-29 22:06:39 -0400
aeb941b2c0test: pin that the API writes only under HOSTS_DIR (#36)
le king fu
2026-09-29 22:06:39 -0400
523d90bf7cfix(hosts): require 3 loadAvg values and sweep orphan temp files (#25)
le king fu
2026-09-29 20:30:07 -0400
156ca818caci: pin the review follow-ups of the CI workflow (#33)
le king fu
2026-09-27 20:54:47 -0400
93a59a29a2ci(demo): drop metrics.js from COPY - expected red, throwaway branch
le king fu
2026-09-27 20:23:37 -0400
4e7879da6cci: add a Forgejo Actions workflow with a boot-from-COPY check (#24)
le king fu
2026-09-27 20:22:48 -0400
2b35b78a0bMerge pull request 'fix(auth): compare HEALTH_TOKEN in constant time via tokenMatches' (#30) from issue-17-timing-safe-health-token into mainmaximus2026-09-27 23:27:44 +0000
f006a1c05etest(auth): pin the single space after the Bearer scheme
le king fu
2026-09-27 19:23:50 -0400
5074f95d0atest(auth): guard tokenMatches itself and close the pin's blind spots
le king fu
2026-09-27 16:13:16 -0400
f70a7e928ffix(auth): compare HEALTH_TOKEN in constant time via tokenMatches
le king fu
2026-09-27 16:06:04 -0400
8eef50d517Merge pull request 'feat(defenseurs): GET /defenseurs/state serves findings-state.json' (#28) from issue-27-defenseurs-state into mainmaximus2026-09-25 01:41:35 +0000
7c14e581cbtest(defenseurs): cover GET /defenseurs/state in the socket-level pass
le king fu
2026-09-24 20:42:56 -0400
a5d1bcdedbfeat(defenseurs): serve the Sergent's findings state at GET /defenseurs/state
le king fu
2026-09-24 20:31:26 -0400
00e1743c9dMerge pull request 'test(hosts): extend the socket-level pass to the two workstation routes' (#26) from issue-16-hosts-monitoring-commissioning into mainmaximus2026-09-25 00:42:08 +0000
50a829beb3test(hosts): extend the socket-level pass to the two workstation routes
le king fu
2026-08-18 20:18:53 -0400
e181a9691cfix(review): close the three gaps found in stack review
le king fu
2026-08-16 14:24:43 -0400
e24f5b6f00feat(agent): push workstation metrics to /hosts/<id> from cron
le king fu
2026-08-16 12:21:59 -0400
56ee580167test(hosts): grow the workstation API smoke pass into a full matrix
le king fu
2026-08-16 12:05:31 -0400
fedb1c81dcfeat: ingest and serve workstation snapshots (POST /hosts/<id>, GET /hosts)
le king fu
2026-08-16 11:49:36 -0400
babfd1f4b9test(auth): cover the 401 gate on all four read routes
le king fu
2026-08-16 11:36:05 -0400
79cb813767refactor: extract CPU/RAM/disk collection into metrics.js
le king fu
2026-08-16 11:30:03 -0400
39a55fad93docs: sync CLAUDE.md with real Coolify mounts and manual deploy trigger
le king fu
2026-07-15 20:47:17 -0400
17f071b1f7Merge pull request 'feat(defenseurs): add GET /defenseurs/findings?project=X route' (#9) from issue-3-defenseurs-findings into mainmaximus2026-07-16 00:45:09 +0000
e88a044711feat(defenseurs): add GET /defenseurs/findings?project=X route
le king fu
2026-05-12 20:56:56 -0400
ac21fd7f4bMerge pull request 'feat(reports): scan archive/ subdir as fallback to handle post-07:30 UTC window' (#8) from feat/reports-scans-archive-fallback into mainmaximus2026-05-11 00:44:25 +0000
2e756557fffeat(reports): scan archive/ subdir as fallback to handle post-07:30 UTC window
le king fu
2026-05-10 16:53:14 -0400
09a4ddeb34Merge PR #6: feat(reports): add GET /reports/scans endpoint for defenseur-automaximus2026-05-08 01:04:41 +0000
6eda076a25feat(reports): add GET /reports/scans endpoint for defenseur-auto
le king fu
2026-05-07 20:50:29 -0400
f88f44e347Merge PR #5: docs: warn HEALTH_TOKEN must be runtime-only on Coolifymaximus2026-05-03 20:12:24 +0000