-
b61e550d59
chore(deps): update dependency lint-staged to v17.0.5 (#167)
APF Portal Bot
2026-05-16 16:18:44 +02:00
-
0435fec10a
feat(portal-admin): jaeger deep link on trace_id + actor-pivot on actor_id_hash (#166)
julien
2026-05-16 03:36:40 +02:00
-
6f26bcdd65
feat(shared-ui): move the role label from the portal-shell sidebar into the user menu (#165)
julien
2026-05-16 03:09:56 +02:00
-
10c80f189d
feat(portal-shell): align theme switcher trigger with locale switcher shape (#164)
julien
2026-05-16 02:52:53 +02:00
-
bba1703622
fix(deps): scope the vite < 7 override to vitepress so @angular/build keeps vite 8 (#163)
julien
2026-05-16 02:07:43 +02:00
-
076cfb67a6
feat(portal-shell): move theme switcher to footer, drop redundant settings icon (#162)
julien
2026-05-16 01:14:36 +02:00
-
2dbf2d8ce4
fix(docs): cap vite below 7 (rolldown-vite) and pin mermaid transitives (#161)
julien
2026-05-15 23:57:57 +02:00
-
e3a495ab46
docs(development): refresh after phase-3a + add topology / trace diagrams (#160)
julien
2026-05-15 23:08:50 +02:00
-
a8f027f546
fix(deps): update dependency axios to v1.16.1 (#158)
APF Portal Bot
2026-05-15 22:38:43 +02:00
-
779061660b
chore(security): override vite + esbuild past vitepress's vulnerable transitives (#159)
julien
2026-05-15 22:18:07 +02:00
-
ed477aeb26
fix(deps): update dependency @scalar/nestjs-api-reference to v1.1.16 (#156)
APF Portal Bot
2026-05-15 20:04:13 +02:00
-
d94df427a1
fix(docs): pre-bundle mermaid deps so the dev server resolves dayjs/cytoscape (#157)
julien
2026-05-15 20:03:29 +02:00
-
abdfb8e1f4
fix(deps): update angular (#155)
APF Portal Bot
2026-05-15 19:38:25 +02:00
-
7579b25dfe
feat(docs): vitepress site for docs/, mermaid rendering, ci build workflow (#154)
julien
2026-05-15 19:14:14 +02:00
-
aa8ad97feb
fix(portal-admin): adr refs point at gitea, not the madr template repo (#153)
julien
2026-05-15 18:48:07 +02:00
-
035ea7c748
fix(portal-admin): adr refs point at gitea, not the madr template repo (#152)
julien
2026-05-15 18:47:14 +02:00
-
ee51efb688
feat(portal): /api/me/capabilities + cross-app menu links + real role label (#151)
julien
2026-05-15 16:11:26 +02:00
-
1160771061
feat(portal-admin): profile page on /profile guarded by authGuard (#150)
julien
2026-05-15 15:42:52 +02:00
-
a8ead65ea8
feat(shared-ui): user menu dropdown + integration on portal-shell + portal-admin (#149)
julien
2026-05-15 15:23:39 +02:00
-
e3e7800ecb
feat(portal-admin): header brand logo + sidebar background covers full column (#148)
julien
2026-05-15 13:59:16 +02:00
-
6120471b66
chore(workspace): tsconfig composite refs + axe-linter false-positive config (#147)
julien
2026-05-15 12:25:20 +02:00
-
636a1661f5
chore(deps): update typescript tooling to v8.59.3 (#146)
APF Portal Bot
2026-05-15 11:26:25 +02:00
-
2480d0dd6d
fix(portal-bff): align admin entra role name with Portal.Admin (#145)
julien
2026-05-15 10:33:54 +02:00
-
0335d992d9
chore(deps): update dependency vite to v8.0.13 (#144)
APF Portal Bot
2026-05-15 09:58:51 +02:00
-
1513ad327c
feat(portal-bff): openapi spec + scalar api reference UI (dev-only) (#143)
julien
2026-05-14 20:52:03 +02:00
-
e90e88ec45
feat(portal-admin): user directory viewer screen (#142)
julien
2026-05-14 20:15:21 +02:00
-
1df99cd800
feat(portal-bff): admin user-directory read endpoint (#141)
julien
2026-05-14 20:01:38 +02:00
-
aca9e8d155
feat(portal-bff): user directory upserted at sign-in (#140)
julien
2026-05-14 19:30:12 +02:00
-
96339cc99b
fix(portal-bff): serve /.well-known/jwks.json via express (path-to-regexp v8 ducks the dot) (#139)
julien
2026-05-14 19:12:38 +02:00
-
282a972346
feat(portal-bff): signed-assertion strategy + /.well-known/jwks.json (#138)
julien
2026-05-14 18:34:07 +02:00
-
d665c66c4e
feat(portal-bff): obo strategy + encrypted downstream token cache (#137)
julien
2026-05-14 18:13:30 +02:00
-
d86f3f9663
feat(portal-admin): audit log viewer screen (#136)
julien
2026-05-14 17:50:17 +02:00
-
71a098b154
fix(feature-auth): use AUTH_PATH_PREFIX to skip the /me endpoint in the 401 interceptor (#135)
julien
2026-05-14 17:23:44 +02:00
-
40741ce326
feat(portal-admin): spa auth wiring + admin shell skeleton (#134)
julien
2026-05-14 17:00:38 +02:00
-
aea395ae65
feat(ci): assert gzip transfer sizes against ADR-0017 budgets (#133)
julien
2026-05-14 16:22:54 +02:00
-
261203ec5a
feat(portal-bff): admin audit-log read endpoint + audit_reader-locked path (#132)
julien
2026-05-14 16:08:58 +02:00
-
77343e3113
fix(portal-bff): use the real portal-admin dev port (4300) in admin-flow references (#131)
julien
2026-05-14 15:40:07 +02:00
-
392a32c0fe
chore(deps): update analog monorepo to v2.5.1 (#130)
APF Portal Bot
2026-05-14 15:13:15 +02:00
-
fed905edc5
feat(portal-bff): distinct admin session + /api/admin/auth flow (#129)
julien
2026-05-14 02:21:47 +02:00
-
d51ccebe6a
feat(portal-bff): @RequireMfa decorator + freshness guard (ADR-0011) (#128)
julien
2026-05-14 01:34:45 +02:00
-
3ed6dae3a5
feat(portal-bff): admin module + role guard + /api/admin/me self-test (#127)
julien
2026-05-14 01:17:30 +02:00
-
f9f0151717
feat(portal-bff): extract Entra
roles claim onto AuthenticatedUser (#126)
julien
2026-05-14 00:30:37 +02:00
-
6a6bf90e7f
docs: refresh CLAUDE.md "Repository status" section (#125)
julien
2026-05-14 00:12:46 +02:00
-
da2bd6d481
docs(adr-0021): phase-2 security baseline (helmet, CORS, CSRF, rate-limit, error envelope) (#124)
julien
2026-05-13 23:54:45 +02:00
-
0e6c114ba7
feat(portal-bff): rate limiting + structured error filter (#123)
julien
2026-05-13 21:34:33 +02:00
-
5bbe2304ff
feat(portal-bff): helmet + env-driven CORS allowlist + double-submit CSRF (#122)
julien
2026-05-13 20:50:44 +02:00
-
a97be121e6
fix(portal-bff): audit writes use raw INSERT (audit_writer has no SELECT for RETURNING) (#121)
julien
2026-05-13 19:48:32 +02:00
-
940267e317
feat(portal-bff): wire ADR-0013 audit pipeline to the auth lifecycle (#120)
julien
2026-05-13 14:21:42 +02:00
-
4d4791a807
chore(deps): update dependency vite to v8.0.12 (#118)
APF Portal Bot
2026-05-13 13:07:55 +02:00
-
6aee56abe9
docs(architecture): refresh containers + nx boundaries diagrams, add local-infra diagram (#119)
julien
2026-05-13 11:15:03 +02:00
-
177f2f20c0
feat(portal-shell): authGuard + BFF http interceptors + /profile demo route (#117)
julien
2026-05-13 00:43:56 +02:00
-
c427e5d4fe
fix(portal-bff): set REDIS_URL + SESSION_* in auth.module.spec so ci:check passes on a clean runner (#116)
julien
2026-05-12 23:58:55 +02:00
-
c3de2340e7
feat(portal-bff): absolute-timeout middleware + user_sessions index per ADR-0010 (#115)
julien
2026-05-12 23:23:14 +02:00
-
0e4f0fc611
fix(portal-shell): send withCredentials on /me so the session cookie crosses SPA→BFF in dev (#114)
julien
2026-05-12 22:35:10 +02:00
-
9a9faf9a31
feat(portal-shell): wire SPA auth state to BFF /me + header login/logout widget (#113)
julien
2026-05-12 20:11:34 +02:00
-
0464ce3ac8
feat(portal-bff): close the auth loop — callback persists session, /me, RP-initiated /logout (#112)
julien
2026-05-12 19:46:38 +02:00
-
2e9605a078
chore(deps): pin protobufjs to >=8.0.2 to clear 7 transitive advisories (#111)
julien
2026-05-12 19:16:18 +02:00
-
758d723744
feat(portal-bff): session middleware with AES-256-GCM at rest per ADR-0010 (#110)
julien
2026-05-12 18:06:13 +02:00
-
d4b5ed1c5d
feat(portal-bff): redis client foundation per ADR-0010 (#109)
julien
2026-05-12 16:48:20 +02:00
-
bfa35d3283
fix(portal-bff): drop strict amr check — flow blocked when Entra omits the claim (#108)
julien
2026-05-12 15:31:57 +02:00
-
c50794eceb
feat(portal-bff): /auth/callback route — token exchange + amr check (#107)
julien
2026-05-12 12:16:39 +02:00
-
9443a52bb7
chore(brand): swap header logo to a real svg + ship favicons for portal-admin (#106)
julien
2026-05-12 11:59:04 +02:00
-
0eb404d111
feat(portal-bff): /auth/login route — pkce flow start + signed cookie (#105)
julien
2026-05-12 11:20:03 +02:00
-
b7093d61de
feat(portal-bff): msal confidential client provider in AuthModule (#104)
julien
2026-05-12 10:34:23 +02:00
-
abd651b697
chore(deps): update dependency @types/node to v24.12.4 (#103)
APF Portal Bot
2026-05-12 09:41:08 +02:00
-
58e3b65bd9
feat(portal-bff): entra config foundation — boot validator + auth module (#102)
julien
2026-05-12 02:27:55 +02:00
-
cb69a692e7
chore(ts): drop deprecated
baseUrl from tsconfig.base.json (#101)
julien
2026-05-12 02:06:23 +02:00
-
d962be838a
feat(portal-admin): skeleton app per ADR-0020 (#100)
julien
2026-05-12 01:49:19 +02:00
-
8329fa133d
refactor(libs): graduate Icon / LayoutStateService / brand tokens to libs/shared/* (#99)
julien
2026-05-12 01:17:30 +02:00
-
99522540a5
feat(portal-shell): ci gate — fail prod build on missing translations (#98)
julien
2026-05-12 00:30:27 +02:00
-
fe180fd125
feat(infra): local serve-static profile — Caddy reverse proxy for the prod build (#97)
julien
2026-05-12 00:06:33 +02:00
-
d118d09aba
fix(portal-shell): catch-all route prevents NG04002 on /fr in dev mode (#96)
julien
2026-05-11 22:12:24 +02:00
-
192cc483b6
feat(portal-shell): locale switcher in the footer (#95)
julien
2026-05-11 20:48:27 +02:00
-
8f84cc6389
feat(portal-shell): collapse accessibility routes into one i18n-marked route (#94)
julien
2026-05-11 20:18:28 +02:00
-
65fae7f963
feat(portal-shell): i18n string sweep — mark UI strings + FR translations (#93)
julien
2026-05-11 19:54:43 +02:00
-
04675b1b59
fix(ci): perf job — point Lighthouse at /fr/ and /en/, drop spa fallback (#92)
julien
2026-05-11 17:18:52 +02:00
-
29d16c7527
feat(portal-shell): wire @angular/localize plumbing per ADR-0019 (#91)
julien
2026-05-11 16:46:08 +02:00
-
8f125d2a90
feat(portal-shell): wire environment.ts per ADR-0018 (#90)
julien
2026-05-11 12:48:55 +02:00
-
c5e91f240b
docs(decisions): add ADR-0019 i18n + ADR-0020 portal-admin (#89)
julien
2026-05-11 12:29:54 +02:00
-
8b986f3dc3
feat(portal-shell): thin full-width footer with copyright + a11y links (#88)
julien
2026-05-11 11:07:36 +02:00
-
3a0a9c700d
fix(portal-shell): dark mode actually applies to component-scoped surfaces (#87)
julien
2026-05-11 10:45:39 +02:00
-
0ae7e0e23d
feat(portal-shell): light / dark / auto theme switcher (#86)
julien
2026-05-11 03:01:11 +02:00
-
b6aa17f6a0
feat(portal-shell): align header logo zone with the sidebar rail (#85)
julien
2026-05-11 01:14:42 +02:00
-
29f79d677e
feat(portal-shell): full favicon set + PWA manifest (#84)
julien
2026-05-11 01:03:05 +02:00
-
3371fbd613
feat(portal-shell): app-shell layout with collapsable sidebar (#83)
julien
2026-05-11 00:36:41 +02:00
-
a463199728
feat(infra): reactivate act_runner cache by sharing the runners network (#82)
julien
2026-05-10 19:03:58 +02:00
-
2d676cc279
feat(infra): add ci-runners.sh wrapper for the runner stack (#81)
julien
2026-05-10 06:37:07 +02:00
-
674c8b2f88
chore(deps): update dependency gitleaks/gitleaks to v8.30.1 (#79)
APF Portal Bot
2026-05-10 04:59:32 +02:00
-
4476cbb518
docs(decisions): add ADR-0018 — environment configuration strategy (#80)
julien
2026-05-10 04:58:02 +02:00
-
4473b1d4a4
chore(ci): track trivy and gitleaks binary versions via renovate custom manager (#78)
julien
2026-05-10 04:07:06 +02:00
-
922a44bb50
chore(ci): auto-merge low-risk renovate updates (#77)
julien
2026-05-10 03:58:01 +02:00
-
02ac44e498
feat(portal-bff): audit log foundation per ADR-0013 (#76)
julien
2026-05-10 03:44:01 +02:00
-
e2dd2e4dd8
fix(portal-shell): use .postcssrc.json so tailwind utilities are emitted (#75)
julien
2026-05-10 02:55:15 +02:00
-
0d31937aeb
feat(portal-shell): replace nx-welcome with real shell and home + budgets per ADR-0017 (#74)
julien
2026-05-10 02:38:42 +02:00
-
288610b9ba
docs(development): add observability dev-loop section (#73)
julien
2026-05-10 02:14:46 +02:00
-
8f2cd4e068
feat(portal-shell): wire spa-side opentelemetry tracing (#72)
julien
2026-05-09 23:23:18 +02:00
-
c3c15585ff
style(portal-bff): apply prettier to check-database-url.ts (#71)
julien
2026-05-09 22:45:10 +02:00
-
b74d3f1b9b
feat(portal-bff): observability foundations (Pino + CLS + OTel) (#70)
julien
2026-05-09 22:28:17 +02:00
-
80e35c6aab
chore(deps): update dependency lint-staged to v17.0.4 (#69)
APF Portal Bot
2026-05-09 22:13:56 +02:00
-
fc9b63f24a
feat(infra): add dev.sh wrapper for the local-dev compose stack (#68)
julien
2026-05-09 21:50:37 +02:00