Commit graph

270 commits

Author SHA1 Message Date
Brad Groux
cce151e64b fix: add task ID to board and archive search filters 2026-01-29 14:27:26 -06:00
Brad Groux
f60b218c10 fix: add in-process FIFO queue to file-lock for deterministic ordering
File-based locking with wx flag doesn't guarantee ordering within the
same Node.js process — concurrent fs.writeFile calls race at the OS
level. Added a per-file Promise chain that serializes lock requests
in FIFO order within the same process. The file lock still provides
cross-process protection.

Fixes flaky withFileLock serialization test (was ~30% failure rate,
now 20/20 passes).
2026-01-29 07:43:54 -06:00
Brad Groux
f531fad829 chore: add .nvmrc, fix issue template link, update changelog links to BradGroux 2026-01-29 07:39:40 -06:00
Brad Groux
8c892d7c22 fix: replace console.* with structured pino logger, fix ESLint errors in k6 load tests 2026-01-29 07:35:48 -06:00
Brad Groux
76b93ebe85 docs: update documentation for agent CRUD, theme toggle, and bug fixes 2026-01-29 07:23:26 -06:00
Brad Groux
adc14a49e7 feat: agent CRUD — add, edit, remove agents from Settings UI 2026-01-29 07:19:54 -06:00
Brad Groux
0bd22dd0fc style: switch thumb white in dark mode, black in light mode 2026-01-29 07:10:55 -06:00
Brad Groux
061acea6d8 fix: move theme script inside <head> to fix HTML parse error 2026-01-29 07:09:08 -06:00
Brad Groux
57403c5c54 feat: light/dark mode toggle in Settings > General 2026-01-29 07:07:57 -06:00
Brad Groux
64910bba92 style: switch primary from violet to purple 2026-01-29 07:05:42 -06:00
Brad Groux
cf50386a0e fix: open-task fallback to API fetch for archived/deleted tasks 2026-01-29 07:02:50 -06:00
Brad Groux
5825b56456 fix: focus ring clipping in drill-downs + wire up open-task event for task navigation 2026-01-29 06:59:02 -06:00
Brad Groux
5830fd3b7e fix: dashboard overflow-hidden clipping focus rings on selects 2026-01-29 06:56:11 -06:00
Brad Groux
5f166cf0cf fix: bar chart hover cursor now subtle instead of white flash 2026-01-29 06:52:37 -06:00
Brad Groux
f7c7aed232 layout: daily activity 75% + recent status changes 25% side by side 2026-01-29 06:48:58 -06:00
Brad Groux
33c813cd22 fix: remove duplicate X close button from drill-down panels 2026-01-29 06:46:13 -06:00
Brad Groux
8c5cba0c40 fix: agent comparison using raw fetch instead of apiFetch (envelope not unwrapped) 2026-01-29 06:44:03 -06:00
Brad Groux
ead82c5cc5 style: vibrant cyan-teal rolling average line to contrast violet 2026-01-29 06:41:15 -06:00
Brad Groux
1b4146cc79 style: violet primary buttons + focus rings in dark mode 2026-01-29 06:38:21 -06:00
Brad Groux
def8d71927 fix: real-time cross-column drag with local state management 2026-01-29 06:34:04 -06:00
Brad Groux
3cbcb20ecd fix: cross-column drag-and-drop + suppress tooltip during drag 2026-01-29 06:31:07 -06:00
Brad Groux
0c0f5b344d security+quality: final codebase review fixes
Security (critical):
- Remove shell:true from preview-service spawn (command injection fix)
- Replace exec() with execFile() in github-service (no shell interpolation)
- Add SIGKILL fallback after SIGTERM timeout in worktree-service

Stability:
- Add process cleanup handlers (SIGTERM/SIGINT) for preview servers
- Add MAX_PREVIEW_SERVERS=5 limit to prevent resource exhaustion
- Memoize WebSocket context value to prevent unnecessary re-renders

Code quality:
- Remove hardcoded 'Brad' author → 'User' (3 files)
- Replace hardcoded localhost:3001 URLs with API_BASE (AttachmentsSection)
- Fix SECURITY-AUDIT.md date (2025 → 2026)
- Add license/repository/author to all 6 package.json files

Data hygiene:
- Untrack all runtime data files (.veritas-kanban/*.json, telemetry, activity)
- Simplify .gitignore: .veritas-kanban/* except .gitkeep
- Removed ~15,700 lines of runtime data from git history
2026-01-29 06:13:10 -06:00
Brad Groux
c95500507e docs: clean up docs folder, update test counts
- Removed 13 sprint files (internal dev history)
- Removed 4 dated audit files + settings-architecture.md (internal working docs)
- Kept: DEPLOYMENT.md, FEATURES.md, security.md
- Updated FEATURES.md: 61 test files, 1,143 tests (was 51 files)
- Updated CHANGELOG.md: corrected test counts for v1.0.0
2026-01-29 06:02:18 -06:00
Brad Groux
e59c5072cf fix: resolve infinite render loop in useKeyboard test + memoize context value
Two bugs fixed:
1. TestConsumer's default param (tasks=[]) created a new array ref every render,
   causing an infinite useEffect loop with setTasks. Fixed with stable EMPTY_TASKS constant.
2. KeyboardProvider's context value was a new object literal every render.
   Wrapped in useMemo to prevent unnecessary consumer re-renders.
3. Destructured useKeyboard() return in test to use stable callback refs
   instead of the whole context object as useEffect deps.

Also: added root vitest.config.ts with workspace projects for mono-repo test runs.
2026-01-29 05:54:22 -06:00
Brad Groux
7ca26016e3 fix(server): increase agent status idle timeout from 5 to 15 minutes 2026-01-29 05:15:48 -06:00
Brad Groux
9aae5bc579 fix(web): use apiFetch in all hooks to unwrap API response envelope 2026-01-29 05:14:43 -06:00
Brad Groux
aa0c79e9ea test: add k6 load testing suite with 5 scenarios 2026-01-29 05:09:14 -06:00
Brad Groux
a005020bc5 feat(web): improve frontend accessibility to WCAG 2.1 AA 2026-01-29 05:06:26 -06:00
Brad Groux
99be1f6017 feat(server): add Prometheus-compatible metrics export endpoint 2026-01-29 05:05:18 -06:00
Brad Groux
46eff13fa3 feat(server): add circuit breaker pattern for external service calls 2026-01-29 05:01:15 -06:00
Brad Groux
d36ee28a5d feat(server): abstract file storage behind repository interface 2026-01-29 05:00:30 -06:00
Brad Groux
6bdb01f2bd feat(server): standardize API response envelope and error format 2026-01-29 04:57:27 -06:00
Brad Groux
eac0546485 feat(server): add Zod schema validation to all mutating API routes 2026-01-29 04:57:02 -06:00
Brad Groux
858263875d feat(server): add immutable audit log with hash chain for sensitive operations 2026-01-29 04:49:49 -06:00
Brad Groux
61c24462e1 chore: gitignore backup directory 2026-01-29 04:49:11 -06:00
Brad Groux
1ef983bfdf feat(server): add data integrity checks and automatic backup on startup 2026-01-29 04:48:51 -06:00
Brad Groux
f3cc8610a1 feat: add WebSocket heartbeat, reconnection, and connection limits 2026-01-29 04:44:00 -06:00
Brad Groux
6640c4986d feat(server): implement per-route rate limiting with tiered thresholds 2026-01-29 04:43:47 -06:00
Brad Groux
2eef45a5cd feat(web): add React error boundaries with graceful fallback UI 2026-01-29 04:39:30 -06:00
Brad Groux
28a7d9e395 feat(server): add file write locking to prevent race conditions 2026-01-29 04:37:24 -06:00
Brad Groux
16d52c25e5 feat(server): add request timeout middleware to prevent hung connections 2026-01-29 04:33:53 -06:00
Brad Groux
5cfd9d88c2 fix(security): audit dependencies and add automated vulnerability scanning 2026-01-29 04:32:23 -06:00
Brad Groux
a67a7f9393 feat(server): upgrade health endpoint with liveness, readiness, and deep checks 2026-01-29 04:29:33 -06:00
Brad Groux
c8182de131 fix(ui): move idle description to bottom of agent status popover 2026-01-29 04:22:00 -06:00
Brad Groux
ab9493ed2a feat(ui): add description to agent indicator popover and link activity history to sidebar 2026-01-29 04:20:20 -06:00
Brad Groux
9f0ddd8a0e feat(ui): add click popover to WebSocket indicator with status explanation 2026-01-29 04:17:11 -06:00
Brad Groux
d8169f6914 fix(ci): remove explicit pnpm version to resolve packageManager conflict 2026-01-29 04:15:06 -06:00
Brad Groux
a490a8d5dd fix(ci): remove explicit pnpm version to resolve packageManager conflict 2026-01-29 04:15:03 -06:00
Brad Groux
43e2b79418 docs: add Roadmap section linking to v1.1 milestone and GitHub issues 2026-01-29 04:10:00 -06:00
Brad Groux
20d18b597f docs: add Agentic AI Safety section with best practices 2026-01-29 03:56:12 -06:00