512a29a240
fix(web): QA fixes on users settings page (MS21-UI-001-QA) ( #599 )
...
ci/woodpecker/push/ci Pipeline was successful
fix(web): QA fixes on users settings page (MS21-UI-001-QA)
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-01 13:52:15 +00:00
6521f655a8
feat(web): add teams page and RBAC navigation/route gating (MS21-UI-005, RBAC-001, RBAC-002) ( #595 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-01 04:54:25 +00:00
7106512fa9
feat(web): add user edit/invite dialogs and workspace member management (MS21-UI-002, MS21-UI-004) ( #592 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-01 03:54:32 +00:00
2c8d0a8daf
feat(web): RBAC access guard on users settings page (MS21-RBAC-002/003/004) ( #580 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 23:24:20 +00:00
c939a541a7
feat(web): gate settings nav by workspace role (MS21-RBAC-001) ( #579 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 23:06:23 +00:00
895ea7fd14
feat(web): add user edit dialog to admin users page (MS21-UI-002) ( #578 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 22:57:26 +00:00
e93e7ffaa9
feat(web): wire workspace member management UI (MS21-UI-004) ( #577 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 22:12:05 +00:00
307639eca0
feat(web): add teams settings page (MS21-UI-005) ( #576 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 22:12:04 +00:00
5cd6b8622d
feat(web): add admin users settings page (MS21-UI-001) ( #573 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 20:50:11 +00:00
20c9e68e1b
feat(web): wire workspaces settings page to real API (MS21-UI-003) ( #574 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 20:48:24 +00:00
ffc10c9a45
feat(api): add MS21 user fields for admin, local auth, and invitations ( #553 )
...
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 17:47:03 +00:00
128431ba58
fix(api,web): separate workspace context from auth session ( #551 )
...
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-28 15:14:29 +00:00
1667f28d71
feat(web): implement credential management UI
...
ci/woodpecker/push/web Pipeline was successful
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 <noreply@anthropic.com >
2026-02-27 05:13:03 -06:00
833662a64f
feat(api): implement /users/me/preferences endpoint
...
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
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 <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-27 10:51:28 +00:00
b3922e1d5b
feat(web): add dedicated /terminal page route ( #538 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-27 10:43:14 +00:00
dd0568cf15
fix(web): add workspace context to domain and project creation ( #536 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-27 10:28:40 +00:00
edcff6a0e0
fix(api,web): add workspace context to widgets and auto-detect workspace ID ( #532 )
...
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-27 04:53:07 +00:00
8b4c565f20
feat(web): add kanban board filtering with URL param persistence ( #502 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-24 02:09:37 +00:00
ff5a09c3fb
feat(web): add widget config dialog and layout management controls ( #499 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-24 01:11:47 +00:00
f93fa60fff
feat(web): add widget picker drawer for dashboard customization ( #498 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-24 00:59:45 +00:00
cc56f2cbe1
feat(web): migrate dashboard to WidgetGrid with layout persistence ( #497 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-24 00:50:24 +00:00
90c3bbccdf
feat(web): add theme selection UI in Settings > Appearance ( #495 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 14:18:16 +00:00
37cf813b88
fix(web): update calendar and knowledge tests for real API integration ( #483 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 05:04:55 +00:00
3d5b50af11
feat(web): add profile page with user info and preferences ( #482 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 04:50:44 +00:00
f30c2f790c
feat(web): add file manager page with list/grid views ( #481 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 04:39:19 +00:00
05b1a93ccb
feat(web): add logs and telemetry page with filtering and auto-refresh ( #480 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 04:38:15 +00:00
a78a8b88e1
feat(web): add project workspace page with tasks and agent sessions ( #479 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 04:29:39 +00:00
172ed1d40f
feat(web): add kanban board page with drag-and-drop ( #478 )
...
ci/woodpecker/push/web Pipeline failed
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 04:26:25 +00:00
ee2ddfc8b8
feat(web): add projects page with CRUD operations ( #477 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 04:13:26 +00:00
5a6d00a064
feat(web): wire knowledge pages to real API data ( #476 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 04:12:14 +00:00
ffda74ec12
test(web): update tasks page tests for real API integration ( #475 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 03:59:56 +00:00
f97be2e6a3
feat(web): wire calendar page to real API data ( #474 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 03:51:15 +00:00
97606713b5
feat(web): wire tasks page to real API data ( #473 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 03:51:08 +00:00
d0c720e6da
feat(web): add custom 404 pages for global and authenticated routes ( #472 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 03:43:55 +00:00
64e817cfb8
feat(web): add settings root index page with category cards ( #471 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 03:42:01 +00:00
458cac7cdd
Phase 3: Agent Cycle Visibility ( #461 ) ( #462 )
...
ci/woodpecker/push/api Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 01:07:29 +00:00
7581d26567
Phase 2: Task Ingestion Pipeline ( #459 ) ( #460 )
...
ci/woodpecker/push/api Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 00:54:55 +00:00
07f5225a76
Phase 1: Dashboard Polish + Theming ( #457 ) ( #458 )
...
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-23 00:16:45 +00:00
b43e860c40
feat(web): Phase 3 — Dashboard Page ( #450 ) ( #453 )
...
ci/woodpecker/push/web Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-22 21:18:50 +00:00
a5ed260fbd
feat(web): MS15 Phase 1 — Design System & App Shell ( #451 )
...
ci/woodpecker/push/web Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-02-22 20:57:06 +00:00
af299abdaf
debug(auth): log session cookie source
ci/woodpecker/push/infra Pipeline was successful
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
2026-02-18 21:36:01 -06:00
Jason Woltje
758b2a839b
fix(web-tests): stabilize async auth and usage page assertions
ci/woodpecker/push/web Pipeline was successful
2026-02-17 15:15:54 -06:00
a943ae139a
fix( #375 ): resolve lint errors in usage dashboard
...
ci/woodpecker/push/web Pipeline was successful
- 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 <noreply@anthropic.com >
2026-02-15 02:25:51 -06:00
8e27f73f8f
fix( #375 ): resolve recharts TypeScript strict mode type errors
...
ci/woodpecker/push/web Pipeline failed
- 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 <noreply@anthropic.com >
2026-02-15 02:21:54 -06:00
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 <noreply@anthropic.com >
2026-02-15 02:10:22 -06:00
Jason Woltje
e8a9a3087a
fix(ci): fix pipeline #366 — web @mosaic/ui build, Dockerfile find bug, event handler types
...
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
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 <noreply@anthropic.com >
2026-02-12 17:50:41 -06:00
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 <noreply@anthropic.com >
2026-02-10 09:42:41 -06:00
Jason Woltje
bfeea743f7
fix(CQ-WEB-10): Add loading/error states to pages with mock data
...
ci/woodpecker/push/woodpecker Pipeline was successful
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 <noreply@anthropic.com >
2026-02-06 18:40:21 -06:00
Jason Woltje
1005b7969c
fix(SEC-WEB-37): Gate federation mock data behind NODE_ENV check
...
ci/woodpecker/push/woodpecker Pipeline was successful
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 <noreply@anthropic.com >
2026-02-06 18:22:12 -06:00
Jason Woltje
65b078c85e
fix(SEC-WEB-26+29): Remove console.log + fix formatTime error handling
...
ci/woodpecker/push/woodpecker Pipeline was successful
- 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 <noreply@anthropic.com >
2026-02-06 15:29:32 -06:00