jason.woltje
2c8d0a8daf
feat(web): RBAC access guard on users settings page (MS21-RBAC-002/003/004) ( #580 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 23:24:20 +00:00
jason.woltje
c939a541a7
feat(web): gate settings nav by workspace role (MS21-RBAC-001) ( #579 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 23:06:23 +00:00
jason.woltje
895ea7fd14
feat(web): add user edit dialog to admin users page (MS21-UI-002) ( #578 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 22:57:26 +00:00
jason.woltje
e93e7ffaa9
feat(web): wire workspace member management UI (MS21-UI-004) ( #577 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 22:12:05 +00:00
jason.woltje
307639eca0
feat(web): add teams settings page (MS21-UI-005) ( #576 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 22:12:04 +00:00
jason.woltje
5cd6b8622d
feat(web): add admin users settings page (MS21-UI-001) ( #573 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 20:50:11 +00:00
jason.woltje
20c9e68e1b
feat(web): wire workspaces settings page to real API (MS21-UI-003) ( #574 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 20:48:24 +00:00
jason.woltje
ffc10c9a45
feat(api): add MS21 user fields for admin, local auth, and invitations ( #553 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 17:47:03 +00:00
jason.woltje
128431ba58
fix(api,web): separate workspace context from auth session ( #551 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-28 15:14:29 +00:00
jason.woltje and Claude Sonnet 4.6
1667f28d71
feat(web): implement credential management UI
...
Enable Add Credential button, implement add/rotate/delete dialogs,
wire CRUD operations to existing /api/credentials endpoints.
Displays credentials in responsive table/card layout (name, type,
scope, masked value, created date). Supports all credential types
(API_KEY, OAUTH_TOKEN, ACCESS_TOKEN, SECRET, PASSWORD, CUSTOM) and
scopes (USER, WORKSPACE, SYSTEM).
Co-Authored-By: Claude Sonnet 4.6 <[email protected] >
2026-02-27 05:13:03 -06:00
jason.woltje
833662a64f
feat(api): implement /users/me/preferences endpoint
...
Implements GET/PATCH/PUT /users/me/preferences. Fixes profile page 'Preferences unavailable' error by correcting the /api prefix in frontend calls and adding PATCH handler to controller.
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-27 10:51:28 +00:00
jason.woltje
b3922e1d5b
feat(web): add dedicated /terminal page route ( #538 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-27 10:43:14 +00:00
jason.woltje
dd0568cf15
fix(web): add workspace context to domain and project creation ( #536 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-27 10:28:40 +00:00
jason.woltje
edcff6a0e0
fix(api,web): add workspace context to widgets and auto-detect workspace ID ( #532 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-27 04:53:07 +00:00
jason.woltje
8b4c565f20
feat(web): add kanban board filtering with URL param persistence ( #502 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 02:09:37 +00:00
jason.woltje
ff5a09c3fb
feat(web): add widget config dialog and layout management controls ( #499 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 01:11:47 +00:00
jason.woltje
f93fa60fff
feat(web): add widget picker drawer for dashboard customization ( #498 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 00:59:45 +00:00
jason.woltje
cc56f2cbe1
feat(web): migrate dashboard to WidgetGrid with layout persistence ( #497 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 00:50:24 +00:00
jason.woltje
90c3bbccdf
feat(web): add theme selection UI in Settings > Appearance ( #495 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 14:18:16 +00:00
jason.woltje
37cf813b88
fix(web): update calendar and knowledge tests for real API integration ( #483 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 05:04:55 +00:00
jason.woltje
3d5b50af11
feat(web): add profile page with user info and preferences ( #482 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 04:50:44 +00:00
jason.woltje
f30c2f790c
feat(web): add file manager page with list/grid views ( #481 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 04:39:19 +00:00
jason.woltje
05b1a93ccb
feat(web): add logs and telemetry page with filtering and auto-refresh ( #480 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 04:38:15 +00:00
jason.woltje
a78a8b88e1
feat(web): add project workspace page with tasks and agent sessions ( #479 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 04:29:39 +00:00
jason.woltje
172ed1d40f
feat(web): add kanban board page with drag-and-drop ( #478 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 04:26:25 +00:00
jason.woltje
ee2ddfc8b8
feat(web): add projects page with CRUD operations ( #477 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 04:13:26 +00:00
jason.woltje
5a6d00a064
feat(web): wire knowledge pages to real API data ( #476 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 04:12:14 +00:00
jason.woltje
ffda74ec12
test(web): update tasks page tests for real API integration ( #475 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 03:59:56 +00:00
jason.woltje
f97be2e6a3
feat(web): wire calendar page to real API data ( #474 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 03:51:15 +00:00
jason.woltje
97606713b5
feat(web): wire tasks page to real API data ( #473 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 03:51:08 +00:00
jason.woltje
d0c720e6da
feat(web): add custom 404 pages for global and authenticated routes ( #472 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 03:43:55 +00:00
jason.woltje
64e817cfb8
feat(web): add settings root index page with category cards ( #471 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 03:42:01 +00:00
jason.woltje
458cac7cdd
Phase 3: Agent Cycle Visibility ( #461 ) ( #462 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 01:07:29 +00:00
jason.woltje
7581d26567
Phase 2: Task Ingestion Pipeline ( #459 ) ( #460 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 00:54:55 +00:00
jason.woltje
07f5225a76
Phase 1: Dashboard Polish + Theming ( #457 ) ( #458 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 00:16:45 +00:00
jason.woltje
b43e860c40
feat(web): Phase 3 — Dashboard Page ( #450 ) ( #453 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 21:18:50 +00:00
jason.woltje
a5ed260fbd
feat(web): MS15 Phase 1 — Design System & App Shell ( #451 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 20:57:06 +00:00
jason.woltje
af299abdaf
debug(auth): log session cookie source
2026-02-18 21:36:01 -06:00
Jason Woltje
758b2a839b
fix(web-tests): stabilize async auth and usage page assertions
2026-02-17 15:15:54 -06:00
jason.woltje and Claude Opus 4.6
a943ae139a
fix( #375 ): resolve lint errors in usage dashboard
...
- Fix prettier formatting for Tooltip formatter props (single-line)
- Fix no-base-to-string by using typed props instead of Record<string, unknown>
- Fix restrict-template-expressions by wrapping number in String()
Refs #375
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-15 02:25:51 -06:00
jason.woltje and Claude Opus 4.6
8e27f73f8f
fix( #375 ): resolve recharts TypeScript strict mode type errors
...
- Fix Tooltip formatter/labelFormatter type overload conflicts
- Fix Pie label render props type mismatch
- Fix telemetry.ts date split array access type
Refs #375
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-15 02:21:54 -06:00
jason.woltje and Claude Opus 4.6
a5ee974765
feat( #375 ): frontend token usage and cost dashboard
...
- Install recharts for data visualization
- Add Usage nav item to sidebar navigation
- Create telemetry API service with data fetching functions
- Build dashboard page with summary cards, charts, and time range selector
- Token usage line chart, cost breakdown bar chart, task outcome pie chart
- Loading and empty states handled
- Responsive layout with PDA-friendly design
- Add unit tests (14 tests passing)
Refs #375
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-15 02:10:22 -06:00
Jason Woltje and Claude Opus 4.6
e8a9a3087a
fix(ci): fix pipeline #366 — web @mosaic/ui build, Dockerfile find bug, event handler types
...
Three root causes resolved:
1. .woodpecker/web.yml: build-shared step was missing @mosaic/ui build,
causing 10 test suite failures + 20 typecheck errors (TS2307)
2. apps/orchestrator/Dockerfile: find -o without parentheses only deleted
last pattern's matches, leaving spec files with test fixture secrets
that triggered 5 Trivy false positives (3 CRITICAL, 2 HIGH)
3. 9 web files had untyped event handler parameters (e) causing 49 lint
errors and 19 typecheck errors — added React.ChangeEvent<T> types
Verification: lint 0 errors, typecheck 0 errors, tests 73/73 suites pass
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-12 17:50:41 -06:00
jason.woltje and Claude Opus 4.6
6a5a4e4de8
feat(web): add credential management UI pages and components
...
Add credentials settings page, audit log page, CRUD dialog components
(create, view, edit, rotate), credential card, dialog UI component,
and API client for the M7-CredentialSecurity feature.
Refs #346
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-10 09:42:41 -06:00
Jason Woltje and Claude Opus 4.6
bfeea743f7
fix(CQ-WEB-10): Add loading/error states to pages with mock data
...
Convert tasks, calendar, and dashboard pages from synchronous mock data
to async loading pattern with useState/useEffect. Each page now shows a
loading state via child components while data loads, and displays a
PDA-friendly amber-styled message with a retry button if loading fails.
This prepares these pages for real API integration by establishing the
async data flow pattern. Child components (TaskList, Calendar, dashboard
widgets) already handled isLoading props — now the pages actually use them.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-06 18:40:21 -06:00
Jason Woltje and Claude Opus 4.6
1005b7969c
fix(SEC-WEB-37): Gate federation mock data behind NODE_ENV check
...
Replace exported const mockConnections with getMockConnections() function
that returns mock data only when NODE_ENV === "development". In production
and test environments, returns an empty array as defense-in-depth alongside
the existing ComingSoon page gate (SEC-WEB-4).
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-06 18:22:12 -06:00
Jason Woltje and Claude Opus 4.6
65b078c85e
fix(SEC-WEB-26+29): Remove console.log + fix formatTime error handling
...
- Remove debug console.log from workspaces page and teams page
- Fix formatTime to return "Invalid date" fallback instead of empty string
when date parsing fails (handles both thrown errors and NaN dates)
- Export formatTime and add unit tests for error handling cases
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-06 15:29:32 -06:00
Jason Woltje and Claude Opus 4.5
587272e2d0
fix( #338 ): Gate mock data behind NODE_ENV check
...
- Create ComingSoon component for production placeholders
- Federation connections page shows Coming Soon in production
- Workspaces settings page shows Coming Soon in production
- Teams page shows Coming Soon in production
- Add comprehensive tests for environment-based rendering
Refs #338
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-02-05 17:15:35 -06:00
jason.woltje and Claude Sonnet 4.5
9582d9a265
fix( #298 ): Fix async response handling in dashboard
...
Replaced setTimeout hacks with proper polling mechanism:
- Added pollForQueryResponse() function with configurable polling interval
- Polls every 500ms with 30s timeout
- Properly handles DELIVERED and FAILED message states
- Throws errors for failures and timeouts
Updated dashboard to use polling instead of arbitrary delays:
- Removed setTimeout(resolve, 1000) hacks
- Added proper async/await for query responses
- Improved response data parsing for new query format
- Better error handling via polling exceptions
This fixes race conditions and unreliable data loading.
Fixes #298
Co-Authored-By: Claude Sonnet 4.5 <[email protected] >
2026-02-03 22:51:25 -06:00
jason.woltje and Claude Sonnet 4.5
0669c7cb77
feat( #42 ): Implement persistent Jarvis chat overlay
...
Add a persistent chat overlay accessible from any authenticated view.
The overlay wraps the existing Chat component and adds state management,
keyboard shortcuts, and responsive design.
Features:
- Three states: Closed (floating button), Open (full panel), Minimized (header)
- Keyboard shortcuts:
- Cmd/Ctrl + K: Open chat (when closed)
- Escape: Minimize chat (when open)
- Cmd/Ctrl + Shift + J: Toggle chat panel
- State persistence via localStorage
- Responsive design (full-width mobile, sidebar desktop)
- PDA-friendly design with calm colors
- 32 comprehensive tests (14 hook tests + 18 component tests)
Files added:
- apps/web/src/hooks/useChatOverlay.ts
- apps/web/src/hooks/useChatOverlay.test.ts
- apps/web/src/components/chat/ChatOverlay.tsx
- apps/web/src/components/chat/ChatOverlay.test.tsx
Files modified:
- apps/web/src/components/chat/index.ts (added export)
- apps/web/src/app/(authenticated)/layout.tsx (integrated overlay)
All tests passing (490 tests, 50 test files)
All lint checks passing
Build succeeds
Co-Authored-By: Claude Sonnet 4.5 <[email protected] >
2026-02-03 20:24:41 -06:00