-
v0.11.0
Stablereleased this
2026-08-07 19:08:31 +02:00 | 87 commits to main since this releaseChangelog
0724fa1Merge pull request 'Release v0.11.0' (#491) from release/v0.11.0 into main
4c8256eRelease v0.11.0
8030e59Merge pull request 'fix(kb): declutter the article screen and fix Cancel' (#490) from fix/MAPPS-423-kb-article-screen-declutter into main
aadc97afix(kb): declutter the article screen and fix Cancel
52beb43Merge pull request 'chore(lint): clear the two clippy failures on a current toolchain' (#489) from chore/clippy-current-toolchain into main
76addd0chore(lint): clear the two clippy failures on a current toolchain
506b0daMerge pull request 'feat(kb): show the measured duration on the article' (#488) from feat/PMS-732-article-measured-duration into main
4641b0ffeat(kb): show the measured duration on the article
c84a1b5feat(kb): add the measured-duration DTO
0bef34bMerge pull request 'feat(forms): send a client a request-form link' (#487) from feat/PMS-730-send-request-link into main
e735f4dfeat(forms): send a client a request-form link from their company
67d7dc9feat(forms): add request-link DTOs
4990741Merge pull request 'feat(forms): request-form builder' (#486) from feat/PMS-731-admin-form-builder into main
3f6e8d6feat(routes): route /admin/forms and add its nav entry
48bbe24feat(forms): add the request-form builder page
d8fb9e7feat(forms): add form-definition client DTOs
95dc128feat(fetch): add a typed PATCH
78bfcd6Merge pull request 'feat(forms): public client request-form page' (#485) from feat/PMS-730-public-request-form-page into main
47aa333feat(routes): route /request-forms/:token and gate the emailed link
8fa3599feat(forms): add the public client request-form page
8b2eabafeat(fetch): add an unauthed typed GET
b5a746bMerge pull request 'fix(ui): wire theme-token guard into CI and tokenize grays' (#484) from fix/MAPPS-401-theme-token-ci into main
159cfbefix(ui): wire theme-token guard into CI and tokenize grays
bab7562Merge pull request 'fix(ui): migrate the timesheet grid onto the shared Table kit' (#483) from fix/MAPPS-415-timesheet-grid into main
47bc1f0style(ui): block-form the compact padding let-if in table
6d9e5d0fix(ui): migrate the timesheet grid onto the shared Table kit
7e897ecMerge pull request 'fix(ui): replace em-dash in theme-picker WCAG-lock label' (#482) from fix/MAPPS-419-theme-picker-emdash into main
e2894d1Merge pull request 'fix(ui): extract shared ErrorBanner and migrate inline banners' (#481) from fix/MAPPS-418-error-banner into main
fa354c1Merge pull request 'fix(ui): route component-site link chips through Button{Link}' (#480) from fix/MAPPS-416-link-chips into main
d9c94b0fix(ui): replace em-dash in theme-picker WCAG-lock label
13c7bf9style(ui): rustfmt repack of components imports after ErrorBanner
5062ea8fix(ui): extract shared ErrorBanner and migrate inline banners
d47ce69fix(ui): route component-site link chips through Button{Link}
d9ff7daMerge pull request 'fix(ui): standardize non-busy label ellipsis to single character' (#479) from fix/MAPPS-417-placeholder-ellipsis into main
932a662fix(ui): standardize non-busy label ellipsis to single character
190d390Merge pull request 'fix(ui): unify error-banner recipe, portal chrome tokens, portal name, 404' (#478) from fix/MAPPS-412-copy-token into main
ecc761ffix(ui): unify error-banner recipe, portal chrome tokens, portal name, 404
dd4a86eMerge pull request 'fix(ui): hover feedback on clickable rows and Secondary button' (#477) from fix/MAPPS-411-hover-feedback into main
6eb6589fix(ui): hover feedback on clickable rows and Secondary button
fe1df8fMerge pull request 'fix(ui): one busy-button pattern and one ellipsis glyph' (#476) from fix/MAPPS-410-busy-labels into main
499439afix(ui): one busy-button pattern and one ellipsis glyph
a39dd2aMerge pull request 'fix(a11y): announce auth errors, th scope,Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.10.0
Stablereleased this
2026-08-04 14:15:20 +02:00 | 152 commits to main since this releaseChangelog
1a5ef7fMerge pull request 'Release v0.10.0' (#464) from release/v0.10.0 into main
553580aRelease v0.10.0
28742a9Merge pull request 'feat(types): adopt shared mokosh-types crate (MAPPS-378, rebased, supersedes #445)' (#463) from feat/MAPPS-378-adopt-mokosh-types-rebased into main
daa5d13feat(types): adopt shared mokosh-types crate via HTTPS git dep
683e878Merge pull request 'feat(ui): show only the version in the left menu, linked to status (PMS-712)' (#462) from feat/PMS-712-version-only-footer into main
e8c4327feat(ui): show only the version in the left menu, linked to status (PMS-712)
276be02Merge pull request 'ci: run Check on the dev runner label' (#461) from chore/MAPPS-398-check-dev-runner-label into main
bb77a2cci: run Check on the dev runner label
4dfadaaMerge pull request 'refactor(portal): gate the route guard on a session predicate' (#460) from feat/MAPPS-395-portal-session into main
d679632refactor(portal): gate the route guard on a session predicate
c09676ffeat(portal): give the SPA a portal session
64808c7Merge pull request 'feat(portal): add the set-password page the setup email links to' (#459) from feat/MAPPS-396-portal-set-password into main
fa1fdfdfeat(portal): add the set-password page the setup email links to
f1af926Merge pull request 'feat(login): handle the emailed sign-in approval code' (#458) from feat/MAPPS-397-spa-login-approval-code into main
a713853feat(login): handle the emailed sign-in approval code
ae80257Merge pull request 'feat(models): source contacts + time_tracking DTOs from mokosh-types' (#457) from feat/MAPPS-383-adopt-mokosh-types-contacts-time into main
f468d58feat(models): source contacts + time_tracking DTOs from mokosh-types
514c6b2Merge pull request 'fix(oci): pre-stage wasm-opt where dx 0.7.7 looks for it' (#456) from fix/MAPPS-381-wasm-opt-prestage-path into main
1919c2afix(oci): pre-stage wasm-opt where dx 0.7.7 looks for it
72e25e8Merge pull request 'ci: warn loudly when the public image mirror is skipped (PSA-58)' (#455) from fix/PSA-58-warn-on-skipped-mirror into main
6dd6026ci: warn loudly when the public image mirror is skipped (PSA-58)Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.9.1
Stablereleased this
2026-07-30 18:53:31 +02:00 | 173 commits to main since this releaseChangelog
ac1cec2Merge pull request 'Release v0.9.1' (#454) from release/v0.9.1 into main
f8c8008Release v0.9.1
2f63cd0Merge pull request 'fix(caddy/oci): no-cache SPA routes + ship theme-init.js (PMS-687)' (#453) from fix/PMS-687-spa-cache-and-theme-init into main
8dcba3bfix(oci): ship theme-init.js so /assets/theme-init.js serves as JS (PMS-687)
b73a2b1fix(caddy): no-cache SPA routes so a stale callback page is never pinned (PMS-687)Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.9.0
Stablereleased this
2026-07-30 18:16:29 +02:00 | 178 commits to main since this releaseChangelog
6405a44Merge pull request 'Release v0.9.0' (#452) from release/v0.9.0 into main
1e1f738Release v0.9.0
dec9924Merge pull request 'fix(ui): scope table-row hover to interactive rows only (MAPPS-389)' (#451) from fix/MAPPS-389-scope-row-hover into main
2120018fix(ui): scope table-row hover to interactive rows only (MAPPS-389)
8a669a7Merge pull request 'fix(ui): de-box list page filters and center table empty states (MAPPS-388)' (#450) from fix/MAPPS-388-header-box-empty-states into main
fc5e29efix(ui): remove oversized filter box on Projects/Companies/Contacts (MAPPS-388)
df0032dfix(ui): center left-aligned table empty states (MAPPS-388)
0dd2f27feat(ui): add centered full-width TableEmptyRow with a render test (MAPPS-388)
263f708Merge pull request 'fix(calendar): keep the 12 AM row clear of the sticky header (MAPPS-387)' (#449) from fix/MAPPS-387-midnight-row-clipped into main
08088c2fix(calendar): keep the 12 AM row clear of the sticky header (MAPPS-387)
7ddf2b4Merge pull request 'feat(calendar): full-day scheduling grid that scrolls in its box (MAPPS-387)' (#448) from feat/MAPPS-387-full-day-scheduling-grid into main
8f95d6cfeat(calendar): full-day dispatch timeline with off-hours shading (MAPPS-387)
7a00edcfeat(calendar): scroll day/week grid in its box and shade off-hours (MAPPS-387)
ae8740ffeat(calendar): full-day grid geometry and working-hours window (MAPPS-387)
823ca09Merge pull request 'fix(ui): let the user-menu icon inherit hover color (MAPPS-384 follow-up)' (#447) from fix/MAPPS-384-profile-icon-hover-color into main
a46db43fix(ui): let the user-menu icon inherit hover color (MAPPS-384 follow-up)
ccf6054Merge pull request 'fix(ui): user-menu hover, tooltip, and dismiss behavior (MAPPS-384)' (#446) from fix/MAPPS-384-user-menu-hover-dismiss into main
f1f323eci: run the gcc install through sudo
e76e08fci: install gcc on the openSUSE runner so cargo can link
274b368fix(ui): user-menu hover, tooltip, and dismiss behavior (MAPPS-384)Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.8.0
Stablereleased this
2026-07-24 18:05:08 +02:00 | 198 commits to main since this releaseChangelog
2684168Merge pull request 'Release v0.8.0' (#444) from release/v0.8.0 into main
adf41e8Release v0.8.0
0e7ffadMerge pull request 'Sync drifted shared DTO fields, drop vestigial ticket copies (MAPPS-378)' (#443) from fix/MAPPS-378-mokosh-types into main
f76f419Merge pull request 'fix(hooks): call hooks unconditionally before early returns (MAPPS-377)' (#442) from fix/MAPPS-377-rules-of-hooks into main
ecdd6d0Merge pull request 'fix(auth): re-enable real GET /v1/auth/memberships call (MAPPS-379)' (#441) from fix/mapps-379-memberships into main
8abfd0eMerge pull request 'fix: align id_token claims, surface mutation errors, drop dead user() (MAPPS-380)' (#440) from fix/mapps-380-review-cleanup into main
cec5d47fix(models): sync drifted shared DTO fields, drop vestigial copies
4374407fix(hooks): call hooks unconditionally before early returns
134d2b5fix(auth): re-enable real GET /v1/auth/memberships call
389a34cfix: align id_token claims, surface mutation errors, drop dead user()
1e49bccMerge pull request 'fix(layout): hoist AppLayout into a persistent AppShell router layout (MAPPS-366)' (#439) from fix/MAPPS-366-persistent-app-shell into main
318c298fix(layout): hoist AppLayout into a persistent AppShell router layout (MAPPS-366)
6a4443fMerge pull request 'fix(settings): correct Import & Export copy (MAPPS-376)' (#438) from fix/MAPPS-376-import-export-copy into main
2ed25bfMerge pull request 'feat(settings): Load demo data button in Settings -> Data (PMS-679)' (#437) from feat/PMS-679-load-demo-data-button into main
aba014dstyle(settings): drop the dash in the Load demo data copy (PMS-679)
8abecc1fix(settings): correct Import & Export copy (MAPPS-376)
8527fa9feat(settings): add "Load demo data" button to Settings -> Data (PMS-679)
3f510e0Merge pull request 'feat(quotes): staff and portal Quotes UI (PMS-675)' (#436) from feat/PMS-675-quotes-ui into main
201024cfeat(quotes): routes and Quotes nav entry (PMS-675)
2ebd5c5feat(portal): client quote view with accept and decline (PMS-675)
4ea3033feat(quotes): staff quote list, detail, and editor (PMS-675)
117f128refactor(approvals): parameterise ApprovalsSection by entity (PMS-675)
c633069feat(quotes): client DTOs and the status vocabulary (PMS-675)
8561604Merge pull request 'fix(auth): silently refresh standalone (non-OIDC) sessions (MAPPS-374)' (#435) from fix/MAPPS-374-standalone-silent-refresh into main
e5c2c3cfix(auth): silently refresh standalone (non-OIDC) sessions (MAPPS-374)Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.7.3
Stablereleased this
2026-07-15 19:38:11 +02:00 | 223 commits to main since this releaseChangelog
57f3ec3Merge pull request 'Release v0.7.3' (#434) from release/v0.7.3 into main
9cad904Release v0.7.3
d52d673Merge pull request 'fix(version): judge API/client skew at minor granularity, not patch (MAPPS-372)' (#433) from fix/MAPPS-372-minor-version-skew into main
b680ee2fix(version): judge API/client skew at minor granularity, not patchDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.7.2
Stablereleased this
2026-07-15 18:36:19 +02:00 | 227 commits to main since this releaseChangelog
f483298Merge pull request 'Release v0.7.2' (#432) from release/v0.7.2 into main
710fab2Release v0.7.2
c94a50eMerge pull request 'fix(release): sync Cargo.lock in create-release so it stops drifting (MAPPS-371)' (#431) from fix/MAPPS-371-create-release-lock-sync into main
14815b9fix(release): sync Cargo.lock in create-release so it stops drifting (MAPPS-371)
034fa99Merge pull request 'fix(version): gate update banner on semver ordering, not string inequality (MAPPS-370)' (#430) from fix/MAPPS-370-update-banner-semver-compare into main
2539588feat(version): surface a "server behind client" banner for the reverse skew
7e83439fix(version): gate update banner on semver ordering, not string inequalityDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.7.1
Stablereleased this
2026-07-15 17:06:44 +02:00 | 234 commits to main since this releaseChangelog
0cc0de6Merge pull request 'Release v0.7.1' (#429) from release/v0.7.1 into main
fe8a521Release v0.7.1
838fb7fMerge pull request 'fix(csp): scope connect-src to API/OIDC origins so all sub-paths are allowed (MAPPS-369)' (#428) from fix/MAPPS-369-csp-connect-src-origin into main
b562424fix(csp): scope connect-src to API/OIDC origins so all sub-paths are allowedDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.7.0
Stablereleased this
2026-07-15 14:18:13 +02:00 | 238 commits to main since this releaseChangelog
de527bdMerge pull request 'Release v0.7.0' (#427) from release/v0.7.0 into main
9a47aeaRelease v0.7.0
54f50d2Merge pull request 'feat(auth): standalone username/password login when no bunyip is configured (MAPPS-368)' (#426) from feat/MAPPS-368-standalone-login into main
c7efeecfix(auth): recover expired standalone session, accept MFA on standalone login
d0648bcfeat(auth): standalone username/password login when no bunyip/OIDC is configured (MAPPS-368)
17b2196Merge pull request 'docs(auth): record accepted-risk decision for SPA OIDC token storage (MAPPS-362)' (#425) from docs/MAPPS-362-oidc-token-storage into main
6e7f646docs(auth): record accepted-risk decision for SPA OIDC token storage
719b448Merge pull request 'feat/mapps-364-import-export' (#424) from feat/mapps-364-import-export into main
edc3829docs(settings): drop stale group count after adding the Data group
bfdc78erefactor(settings): move Import & Export into its own "Data" group
857b733Merge pull request 'feat(settings): admin-only Import & Export page for tenant data' (#423) from feat/mapps-364-import-export into main
39f7baefix(settings): harden data export/import per code review
4fb7648feat(settings): admin-only Import & Export page for tenant data
b948abfMerge pull request 'feat(billing): masked write-only Stripe/gateway key in the config UI' (#422) from feat/mapps-363-stripe-masked-key into main
c99a6bcfix(billing): associate the API-key label and align gateway status wording
7833a50feat(billing): masked write-only Stripe/gateway key in the config UI
d480794Merge pull request 'fix(release): preserve Cargo.toml comments in create-release' (#421) from fix/create-release-preserve-cargo-comments into main
7c2afb1fix(release): preserve Cargo.toml comments in create-releaseDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.6.0
Stablereleased this
2026-07-07 16:59:27 +02:00 | 256 commits to main since this releaseChangelog
78be16eMerge pull request 'Release v0.6.0' (#420) from release/v0.6.0 into main
23771f5fix(release): restore Cargo.toml comments stripped by create-release
1c4e135Release v0.6.0
465954aMerge pull request 'feat(assets): add/remove UI for asset relationships' (#419) from feat/MAPPS-233-asset-relationships-add-remove into main
559fdc5feat(assets): add/remove UI for asset relationships
32a6e2fMerge pull request 'feat(spa): distinct sidebar icons and per-category color accents' (#418) from feat/MAPPS-359-sidebar-icons-category-colors into main
4ef5a18feat(spa): distinct sidebar icons and per-category color accents
084ffe2Merge pull request 'feat(spa): collapse sidebar to Dashboard-only while server is down' (#417) from feat/MAPPS-358-server-down-sidebar into main
f1da628feat(spa): collapse sidebar to Dashboard-only while server is down
9c3ab0bMerge pull request 'feat(time): show reviewable submit/change/approve history in approvals' (#416) from feat/MAPPS-340-timesheet-approval-history into main
3793751feat(time): show reviewable submit/change/approve history in approvals
f1429d9Merge pull request 'feat(spa): retrofit remaining data-driven pages onto explicit server-down UX' (#415) from feat/MAPPS-357-retrofit-remote-resource-pages into main
d212d32feat(spa): retrofit remaining data-driven pages onto explicit server-down UX
1c3f466Merge pull request 'fix(spa): clean up three CSP + manifest console errors on msp.a8n.systems' (#414) from fix/MAPPS-356-console-errors into main
548064bfix(spa): clean up three CSP + manifest console errors on msp.a8n.systems
813f637Merge pull request 'feat(auth): auto-retry OIDC callback storage errors + 30s /auth/me heartbeat' (#413) from feat/MAPPS-355-auth-callback-retry-plus-heartbeat into main
cdd6574feat(auth): auto-retry OIDC callback storage errors + 30s /auth/me heartbeat
994f08aMerge pull request 'feat(ui): explicit server-unavailable state + auto-refetch on reconnect (MAPPS-351)' (#412) from feat/MAPPS-351-server-down-ux into main
9e4b49afeat(ui): explicit server-unavailable state + auto-refetch on reconnect
77aff3fMerge pull request 'feat(auth): render terminal modal on 410 Gone (ACCOUNT_DELETED) and force logout' (#411) from feat/MAPPS-348-terminal-modal-on-account-deleted into main
21287dafeat(auth): render terminal modal on 410 Gone (ACCOUNT_DELETED) and force logout
b9c2eb3Merge pull request 'fix(forms): keep inline validation errors rendering on empty submit' (#410) from fix/MAPPS-347-form-validation-inline-errors into main
39872abfix(forms): keep inline validation errors rendering on empty submit
b028b7dMerge pull request 'MAPPS-346: consistent even spacing across collapsed sidebar icons' (#409) from feat/MAPPS-346-collapsed-nav-even into main
c39157ffeat(sidebar): even icon spacing on the collapsed rail
e0a587fMerge pull request 'MAPPS-346: spread collapsed sidebar to fill spare height (current density as minimum)' (#408) from feat/MAPPS-346-collapsed-nav-fill into main
584a49ffeat(sidebar): spread collapsed rail across spare height, tight as minimum
b59dc2eMerge pull request 'MAPPS-346: tighten collapsed sidebar density so the rail fits without scrolling' (#407) from feat/MAPPS-346-collapsed-nav-density into main
ad94958feat(sidebar): tighten collapsed rail density so it fits without scrolling
a52815eMerge pull request 'MAPPS-346: sidebar collapse as a half-circle edge handle, hide rail scrollbar' (#406) from feat/MAPPS-346-sidebar-edge-handle into main
e3f0df7feat(sidebar): move collapse toggle to a half-circle edge handle
c9944d1Merge pull request 'MAPPS-346: collapse global search to an icon + top bar/sidebar polish' (#405) from feat/MAPPS-346-collapsible-search into main
dfb12cbfeat(topbar): collapse global search to an expand-on-click icon
f6cbdb2Merge pull request 'feat(sla): show schedule/holiday JSON validation errors inline' (#404) from feat/PMS-604-sla-json-inline-errors into main
177d192feat(sla): show holiday JSON validation errors inline on the field
d6f7a9cfeat(sla): show schedule JSON validation errors inline on the field
99f7daaMerge pull request 'fix(spa): tab title stuck on Loading… (re-render + unicode ellipsis)' (#403) from fix/MAPPS-287-tab-title-stuck-loading into main
29d3970fix(spa): set tab title on every render so it advances past "Loading…"
a53e9d1Merge pull request 'fix(spa): serve favicon/manifest at root + stop tab sticking on Loading...' (#402) from fix/MAPPS-favicon-manifest-and-loading-title into main
a1414c6fix(spa): serve favicon/manifest at root + stop tab sticking on "Loading..."Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)