Commit Graph
73 Commits
Author SHA1 Message Date
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.woltjeandClaude 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.woltjeandClaude 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.woltjeandClaude 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.woltjeandClaude 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 WoltjeandClaude 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.woltjeandClaude 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 WoltjeandClaude 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 WoltjeandClaude 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 WoltjeandClaude 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 WoltjeandClaude 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.woltjeandClaude 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.woltjeandClaude 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