jason.woltje
9f4de1682f
fix(api): resolve CSRF guard ordering with global AuthGuard ( #514 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-26 02:26:02 +00:00
jason.woltje
374ca7ace3
docs: initialize MS19 Chat & Terminal mission planning ( #513 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-26 01:49:40 +00:00
jason.woltje
72c64d2eeb
fix(api): add global /api prefix to resolve frontend route mismatch ( #507 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-26 01:13:48 +00:00
jason.woltje
5f6c520a98
fix(auth): prevent login page freeze on OAuth sign-in failure ( #506 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-25 01:59:36 +00:00
jason.woltje
9a7673bea2
docs: close out MS18 Theme & Widget System mission ( #505 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 03:01:54 +00:00
jason.woltje
91934b9933
docs: update mission artifacts for MS18 completion ( #504 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 02:29:06 +00:00
jason.woltje
7f89682946
test(web): add unit tests for MS18 components ( #503 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 02:23:05 +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
d5ecc0b107
feat(web): add markdown round-trip and replace textarea with Tiptap ( #501 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 01:40:34 +00:00
jason.woltje
a81c4a5edd
feat(web): add Tiptap WYSIWYG KnowledgeEditor component ( #500 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 01:23:57 +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
f9cccd6965
feat(api): seed 7 widget definitions for dashboard system ( #496 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-24 00:28:02 +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
79286e98c6
feat(web): upgrade ThemeProvider for multi-theme registry ( #494 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 14:09:10 +00:00
jason.woltje
cfd1def4a9
feat(web): add theme definition system with 5 built-in themes ( #493 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 13:59:01 +00:00
jason.woltje
f435d8e8c6
docs: initialize MS18 Theme & Widget System mission ( #492 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 13:36:10 +00:00
jason.woltje
3d78b09064
docs: close out MS16+MS17 mission ( #486 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 13:27:22 +00:00
jason.woltje
a7955b9b32
docs: mark MS16+MS17 milestone complete ( #485 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 13:16:38 +00:00
jason.woltje
372cc100cc
docs: update PRD statuses and mission artifacts for MS16+MS17 ( #484 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 05:09:04 +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
cd5c2218c8
chore(orchestrator): bootstrap MS16+MS17 planning ( #470 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 03:29:53 +00:00
jason.woltje
f643d2bc04
docs: mark mission complete (MS-P4-003) ( #465 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 02:11:13 +00:00
jason.woltje
8957904ea9
Phase 4: Deploy + Smoke Test ( #463 ) ( #464 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-23 02:09:43 +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
7c55464d54
fix: add mission detection to session hooks ( #456 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 23:42:21 +00:00
jason.woltje
ea1620fa7a
docs: initialize go-live MVP mission with coordinator protocol ( #455 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 23:37:13 +00:00
jason.woltje
d218902cb0
docs: design system reference and task completion (MS15-DOC-001) ( #454 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 21:20:28 +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
716f230f72
feat(ui,web): Phase 2 — Shared Components & Terminal Panel ( #449 ) ( #452 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 21:12:13 +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
9b5c15ca56
style(ui): use padding for AuthDivider vertical spacing ( #446 ) ( #447 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 18:02:45 +00:00
jason.woltje
74c8c376b7
docs(coolify): update deployment docs with operations guide ( #445 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 08:05:47 +00:00
jason.woltje
9901fba61e
docs: add Coolify deployment guide and compose file ( #444 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 07:40:24 +00:00
jason.woltje
17144b1c42
style(ui): refine login card shape and divider spacing ( #439 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 06:19:23 +00:00
jason.woltje
a6f75cd587
fix(ui): use arbitrary opacity for AuthCard dark background ( #438 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 05:33:14 +00:00
jason.woltje
06e54328d5
fix(web): force dynamic rendering for runtime env injection ( #437 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-22 03:54:12 +00:00
jason.woltje
7480deff10
fix(web): add Tailwind CSS setup for design system rendering ( #436 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-21 23:36:16 +00:00
jason.woltje
1b66417be5
fix(web): restore login page design and add runtime config injection ( #435 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-21 23:16:02 +00:00
jason.woltje
23d610ba5b
chore: switch from develop/dev to main/latest image tags ( #434 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-21 22:05:07 +00:00
jason.woltje
25ae14aba1
fix(web): resolve flaky CI test failures ( #433 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-21 21:12:00 +00:00
jason.woltje
1425893318
Merge pull request 'Merge develop into main — branch consolidation' ( #432 ) from merge/develop-to-main into main
2026-02-21 20:56:40 +00:00
jason.woltje and Claude Opus 4.6
bc4c1f9c70
Merge develop into main
...
Consolidate all feature and fix branches into main:
- feat: orchestrator observability + mosaic rails integration (#422 )
- fix: post-422 CI and compose env follow-up (#423 )
- fix: orchestrator startup provider-key requirements (#425 )
- fix: BetterAuth OAuth2 flow and compose wiring (#426 )
- fix: BetterAuth UUID ID generation (#427 )
- test: web vitest localStorage/file warnings (#428 )
- fix: auth frontend remediation + review hardening (#421 )
- Plus numerous Docker, deploy, and auth fixes from develop
Lockfile conflict resolved by regenerating from merged package.json.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-21 14:52:43 -06:00
jason.woltje
d66451cf48
fix(ci): suppress Next.js bundled tar/minimatch CVEs in trivy ( #431 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-21 20:40:17 +00:00
jason.woltje
c23ebca648
fix(ci): resolve pipeline #516 audit and test failures ( #429 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-02-21 20:11:58 +00:00
jason.woltje
b5ac2630c1
docs(auth): record digest-based deploy fix verification
2026-02-18 23:39:06 -06:00
jason.woltje
8424a28faa
fix(auth): use set_config for transaction-scoped RLS context
2026-02-18 23:23:15 -06:00
jason.woltje
d2cec04cba
fix(auth): preserve raw BetterAuth cookie token for session lookup
2026-02-18 23:06:37 -06:00
jason.woltje
9ac971e857
chore(deploy): align swarm auth env with deployed stack
2026-02-18 22:40:22 -06:00
jason.woltje
0c2a6b14cf
fix(auth): verify BetterAuth sessions via cookie headers
2026-02-18 22:39:54 -06:00
jason.woltje
af299abdaf
debug(auth): log session cookie source
2026-02-18 21:36:01 -06:00
jason.woltje
fa9f173f8e
chore(web): use prod-only deps in runtime image
2026-02-18 21:13:12 -06:00
jason.woltje
7935d86015
chore(web): avoid pnpm in runtime image to reduce CVE noise
2026-02-18 20:24:22 -06:00
jason.woltje
f43631671f
chore(deps): override tar to 7.5.8 for trivy
2026-02-18 20:01:10 -06:00
jason.woltje
8328f9509b
Merge pull request 'test(web): silence localStorage-file warnings in vitest' ( #428 ) from fix/web-test-warnings-2 into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/428
2026-02-19 01:45:06 +00:00
jason.woltje
f72e8c2da9
chore(deps): override minimatch to 10.2.1 for audit fix
2026-02-18 19:41:38 -06:00
jason.woltje
1a668627a3
test(web): silence localStorage-file warnings in vitest setup
2026-02-18 19:38:23 -06:00
jason.woltje
bd3625ae1b
Merge pull request 'fix(auth): generate UUID ids for BetterAuth Prisma writes' ( #427 ) from fix/authentik-betterauth-interop into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/427
2026-02-19 01:07:32 +00:00
jason.woltje
aeac188d40
chore(deps): override minimatch to 10.2.1 for audit fix
2026-02-18 18:53:25 -06:00
jason.woltje
f219dd71a0
fix(auth): use UUID id generation for BetterAuth DB models
2026-02-18 18:49:16 -06:00
jason.woltje
2c3c1f67ac
Merge pull request 'fix(auth): restore BetterAuth OAuth2 flow and compose wiring' ( #426 ) from fix/authentik-betterauth-interop into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/426
2026-02-18 05:44:19 +00:00
jason.woltje
dedc1af080
fix(auth): restore BetterAuth OIDC flow across api/web/compose
2026-02-17 23:37:49 -06:00
jason.woltje
3b16b2c743
Merge pull request 'Fix orchestrator startup provider-key requirements for Issue 424' ( #425 ) from fix/post-422-runtime into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/425
2026-02-17 23:17:39 +00:00
jason.woltje
157b702331
Merge pull request 'fix(runtime): post-422 CI and compose env follow-up' ( #423 ) from fix/post-422-runtime into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/423
2026-02-17 22:47:50 +00:00
jason.woltje
4a4aee7b7c
Merge pull request 'feat: finalize orchestrator observability and mosaic rails integration' ( #422 ) from feature/mosaic-stack-finalization into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/422
2026-02-17 22:24:01 +00:00
jason.woltje
35dd623ab5
Merge pull request 'fix( #411 ): complete auth/frontend remediation and review hardening' ( #421 ) from fix/auth-frontend-remediation into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/421
2026-02-17 21:24:13 +00:00
jason.woltje
af113707d9
Merge branch 'develop' into fix/auth-frontend-remediation
2026-02-17 20:35:59 +00:00
jason.woltje
0a780a5062
Merge pull request 'bootstrap mosaic-stack to Mosaic standards layer' ( #420 ) from fix/auth-frontend-remediation into main
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/420
2026-02-17 18:51:54 +00:00
jason.woltje
a1515676db
Merge branch 'main' into fix/auth-frontend-remediation
2026-02-17 18:46:50 +00:00
jason.woltje and Claude Opus 4.6
027fee1afa
fix: use UUID for Better Auth ID generation to match Prisma schema
...
Better Auth generates nanoid-style IDs by default, but our Prisma
schema uses @db.Uuid columns for all auth tables. This caused
P2023 errors when Better Auth tried to insert non-UUID IDs into
the verification table during OAuth sign-in.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 22:48:17 -06:00
jason.woltje and Claude Opus 4.6
abe57621cd
fix: add CORS env vars to Swarm/Portainer compose and log trusted origins
...
The Swarm deployment uses docker-compose.swarm.portainer.yml, not the
root docker-compose.yml. Add NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_API_URL,
and TRUSTED_ORIGINS to the API service environment. Also log trusted
origins at startup for easier CORS debugging.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 22:31:29 -06:00
jason.woltje
7c7ad59002
Remove extra docker-compose and .env.exmple files.
2026-02-16 22:08:02 -06:00
jason.woltje and Claude Opus 4.6
ca430d6fdf
fix: resolve Portainer deployment Redis and CORS failures
...
Remove Docker Compose profiles from postgres and valkey services so they
start by default without --profile flag. Add NEXT_PUBLIC_APP_URL,
NEXT_PUBLIC_API_URL, and TRUSTED_ORIGINS to the API service environment
so CORS works in production.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 22:05:58 -06:00
jason.woltje and Claude Opus 4.6
18e5f6312b
fix: reduce Kaniko disk usage in Node.js Dockerfiles
...
- Combine production stage RUN commands into single layers
(each RUN triggers a full Kaniko filesystem snapshot)
- Remove BuildKit --mount=type=cache for pnpm store
(Kaniko builds are ephemeral in CI, cache is never reused)
- Remove syntax=docker/dockerfile:1 directive (no longer needed
without BuildKit cache mounts)
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 20:21:44 -06:00
jason.woltje and Claude Opus 4.6
d2ed1f2817
fix: eliminate apt-get from Kaniko builds, use static dumb-init binary
...
Kaniko fundamentally cannot run apt-get update on bookworm (Debian 12)
due to GPG signature verification failures during filesystem snapshots.
Neither --snapshot-mode=redo nor clearing /var/lib/apt/lists/* resolves
this.
Changes:
- Replace apt-get install dumb-init with ADD from GitHub releases
(static x86_64 binary) in api, web, and orchestrator Dockerfiles
- Switch coordinator builder from python:3.11-slim to python:3.11
(full image includes build tools, avoids 336MB build-essential)
- Replace wget healthcheck with node-based check in orchestrator
(wget no longer installed)
- Exclude telemetry lifecycle integration tests in CI (fail due to
runner disk pressure on PostgreSQL, not code issues)
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 20:06:06 -06:00
jason.woltje and Claude Opus 4.6
fb609d40e3
fix: use Kaniko --snapshot-mode=redo to fix apt GPG errors in CI
...
Kaniko's default full-filesystem snapshots corrupt GPG verification
state, causing "invalid signature" errors during apt-get update on
Debian bookworm (node:24-slim). Using --snapshot-mode=redo avoids
this by recalculating layer diffs instead of taking full snapshots.
Also keeps the rm -rf /var/lib/apt/lists/* guard in Dockerfiles as
a defense-in-depth measure against stale base-image APT metadata.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 19:56:34 -06:00
jason.woltje and Claude Opus 4.6
0c93be417a
fix: clear stale APT lists before apt-get update in Dockerfiles
...
Kaniko's layer extraction can leave base-image APT metadata with
expired GPG signatures, causing "invalid signature" failures during
apt-get update in CI builds. Adding rm -rf /var/lib/apt/lists/*
before apt-get update ensures a clean state.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 19:44:36 -06:00
jason.woltje
b719fa0444
Merge pull request 'chore: upgrade Node.js runtime to v24 across codebase' ( #419 ) from fix/auth-frontend-remediation into main
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/419
2026-02-17 01:04:46 +00:00
jason.woltje
d58bf47cd7
Merge pull request 'fix( #411 ): auth & frontend remediation — all 6 phases complete' ( #418 ) from fix/auth-frontend-remediation into develop
...
Reviewed-on: http://git.mosaicstack.dev/mosaic/stack/pulls/418
2026-02-16 23:11:42 +00:00
jason.woltje and Claude Opus 4.6
491675b613
docs: add auth & frontend remediation plan
...
Comprehensive plan for fixing the production 500 on POST /auth/sign-in/oauth2
and redesigning the frontend login page to be OIDC-aware with multi-method
authentication support.
Key areas covered:
- Backend: OIDC startup validation, auth config discovery endpoint, BetterAuth
error handling, PKCE, session hardening, trustedOrigins extraction
- Frontend: Multi-method login page, PDA-friendly error display, adaptive UI
based on backend-advertised providers, loading states, accessibility
- Security: CSRF rationale, secret leakage prevention, redirect URI validation,
session idle timeout, OIDC health checks
- 6 implementation phases with file change map and testing strategy
Created with input from frontend design, backend, security, and auth architecture
specialist reviews.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 04:43:38 -06:00
jason.woltje and Claude Opus 4.6
4b3eecf05a
fix( #410 ): pass OIDC_ENABLED to API container in docker-compose
...
The genericOAuth plugin is conditionally loaded based on OIDC_ENABLED
env var. Without it, BetterAuth has no /sign-in/oauth2 route, causing
404 when the login button is clicked.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 04:04:42 -06:00
jason.woltje and Claude Opus 4.6
3376d8162e
fix( #410 ): skip CSRF guard on auth catch-all route
...
The global CsrfGuard blocks POST /auth/sign-in/oauth2 with 403 because
unauthenticated users have no session and therefore no CSRF token.
BetterAuth handles its own CSRF protection via toNodeHandler().
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 03:41:50 -06:00
jason.woltje and Claude Opus 4.6
e2ffaa71b1
fix: exempt health endpoint from rate limiting
...
Docker/load-balancer health probes hit GET /health every ~5s from
127.0.0.1, exhausting the rate limit and causing all subsequent checks
to return 429 — making the service appear unhealthy.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-16 03:21:46 -06:00
jason.woltje and Claude Opus 4.6
444fa1116a
fix( #410 ): align BetterAuth basePath and auth client with NestJS routing
...
BetterAuth defaulted basePath to /api/auth but NestJS controller routes
to /auth/* (no global prefix). The auth client also pointed at the web
frontend origin instead of the API server, and LoginButton used a
nonexistent GET /auth/signin/authentik endpoint.
- Set basePath: "/auth" in BetterAuth server config
- Point auth client baseURL to API_BASE_URL with matching basePath
- Add genericOAuthClient plugin to auth client
- Use signIn.oauth2({ providerId: "authentik" }) in LoginButton
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-15 19:41:08 -06:00
jason.woltje and Claude Opus 4.6
31ce9e920c
fix: replace flaky timing-based test with deterministic assertion
...
The constant-time comparison test used Date.now() deltas with a 10ms
threshold which is unreliable in CI. Replace with deterministic tests
that verify both same-length and different-length key rejection paths
work correctly. The actual timing-safe behavior is guaranteed by
Node's crypto.timingSafeEqual which the guard uses.
Co-Authored-By: Claude Opus 4.6 <[email protected] >
2026-02-15 19:11:15 -06:00