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