Releases
v0.6.0
Compare
Sorry, something went wrong.
No results found
0.6.0 (2026-11-10)
⚠ BREAKING CHANGES
archive the Rails application and decouple tests from it (#3028 )
auth: Start the Rust application with a new empty PostgreSQL 18 database and fresh accounts. Rails passwords, passkeys, authenticator enrolments, sessions and recovery tokens are not imported. Existing Rails sessions cannot authenticate to Rust. Clinical data transfer uses portable export/import into the fresh database, separately from new Better Auth credentials. Complete Rails-export compatibility is still being verified under #2702 ; this is not a promise that every historical export imports unchanged. There is no Rails schema adoption, password/passkey/session/auth-record conversion or reverse migration. Keep existing installations separate; do not reset their databases or assume Rails can consume Rust-created records. There is no supported rollback from 0.6 to Rails. A full Rails export at transition does not import data into Rust. A retained Rails site holds only pre-cutover state. Preserving data written in 0.6 requires a separate Rust-side export; no Rails importer or lossless switchback is promised.
Features
accounts: add verified signup, invitation onboarding and verification resend (5784650 )
add account-owned dose history reads (#2982 ) (a96f7e3 )
add disposable Loco canary seed (#2889 ) (63a08c2 )
add OpenTelemetry logs and traces to the Rust app (#3037 ) (41c1e6f )
add responsive login artwork (#2895 ) (230356f )
admin: add household overview and navigation (#2777 ) (41e57fb )
admin: add member details and history (#2852 ) (bc3a5d8 )
admin: browse household security audit (#2778 ) (0bdab09 )
admin: complete household member controls (#2846 ) (719b9fd )
admin: manage member access in bulk (#2856 ) (08f8e1e )
admin: recover orphaned minor guardians (#2849 ) (e3c2fc7 )
admin: track invitation sending status (#2854 ) (bc5dc13 )
allow profiles and history without households (#2955 ) (234e65a )
api-keys: add scoped expiring personal keys and revocation (5784650 )
api: add getCurrentProfile household me read (#2540 ) (00caaea )
api: add getHouseholdUiCapabilities read (#2541 ) (f4ebd51 )
api: add profile and notification settings (#2492 ) (2c8a476 )
api: cover getDosageOption contract responses (#2516 ) (e006489 )
api: cover getHouseholdAdminSettings contract responses (#2517 ) (4ced3c8 )
api: cover listMemberships contract responses (#2519 ) (93abddd )
api: cover listPersonMedications contract responses (#2518 ) (c48f653 )
api: cover remaining list endpoint contract responses (#2520 ) (6fe3b72 )
api: expose trace IDs in errors (#3042 ) (a5dde69 )
api: harden OpenAPI contract assertions (#2514 ) (1aead26 )
api: manage account sessions and logout (#2469 ) (8a9889f )
archive the Rails application and decouple tests from it (#3028 ) (95a5e07 )
auth: add password and verified passkey sign-in with optional TOTP (5784650 )
auth: complete Loco account security (5784650 )
capture invitation emails locally (#2966 ) (52d4e83 )
care: add person health and carer journeys (#2497 ) (b96762f )
care: complete care workflows and medication reviews (#2617 ) (672dbc0 )
care: improve medication care journeys (#2481 ) (f3e7c13 )
care: person-owned schedules and care sharing (#2684 , #2976 ; fixes #2994 , #2995 ) (#3013 ) (5d40772 )
care: sync changes and manage dose records (#2460 ) (f65b52a )
complete household invitations (#2785 ) (c92f44e )
dashboard: migrate Rails care layouts (#2505 ) (deb2b47 )
db: create complete databases through Loco (#2569 ) (090956d )
deliver dose-due reminders to managed dependants (#2788 ) (62ab855 )
doses: confirm scheduled dose decisions (#2555 ) (f38694f )
export application metrics (#3039 ) (4417964 )
households: open the active dashboard (#2776 ) (dcc44cc )
identity: add verified email changes and ZITADEL registration, linking and unlinking (5784650 )
identity: reuse people across households (#2781 ) (2f5d78f )
include declared dependants in missed-dose recipients (#2787 ) (fca01e8 )
loco: establish the migrated application baseline (3f4a7f9 )
nhs-dmd: complete catalogue import parity and timing logs (#2615 ) (99154e3 )
notifications: make browser reminders recoverable (#2564 ) (35fd333 )
passwords: reject common compromised passwords using a local blocklist (5784650 )
platform: add owner-approved support access (#2489 ) (1e2184f )
prepare household clinical transfers (#2990 ) (f1dc161 )
profile: add account-owned avatar API (#2755 ) (29f0b49 )
profile: add account-owned profile API (#2748 ) (5d1ec22 )
profile: add Gravatar support (#2527 ) (d704965 )
profile: port four-tab profile to Loco (#2504 ) (b50951e )
publish Loco beta images from main (#2980 ) (5852697 )
recovery: add acknowledged single-use recovery codes and secure email recovery (5784650 )
release: rehearse saved-state rollback (#2468 ) (01a8a93 )
reports: add health and review PDFs (#2470 ) (1c3c3da )
rust: add browser health-history PDF download page (#2388 ) (596cb6f )
rust: add NHS dm+d admin import slice (1db3993 )
scanner: add scan and stock journeys (#2525 ) (63d4f1b )
security: add operation-bound proof, session revocation and account closure (5784650 )
seed a synthetic platform administrator (#3048 ) (80f6941 )
simplify Compose and Helm setup (#3077 ) (0d76bf1 )
telemetry: emit API dose outcome events (#3043 ) (34d4bf8 )
trace dose refusals and confirmed rollbacks (#3046 ) (6836019 )
ui: restore app drawer and account menu (#2521 ) (a1e18b0 )
wear: add interactive navigation preview (#2926 ) (774d75c )
Bug Fixes
allow dismissing the canary warning (#2992 ) (c1527a8 )
android: preserve Loco API error details (#2925 ) (4075da6 )
api: classify account profile operations by resource (#2762 ) (780caff )
api: declare schedule 304 and 500 responses (#2979 ) (a621dbc )
api: describe implemented capabilities and mobile settings (#2639 ) (5cfcad1 )
api: distinguish missing households and protect UI responses (#2640 ) (ae1eef2 )
api: document the existing capabilities unavailable response (#2790 ) (9a97fa0 )
api: enforce shared GET and HEAD request limits (#2623 ) (1800d85 )
api: keep profile failures private (#2643 ) (73fa458 )
api: preserve account session lifecycle contracts (#2636 ) (2a34f46 )
api: preserve native v1 wire identifiers and publish accurate capabilities (5784650 )
api: require executed contract acceptance evidence (#2633 ) (9fd7280 )
api: retain request IDs on rate-limit responses (#2637 ) (55862d2 )
api: return 404 for out-of-scope preference reads (#2506 ) (5f4ece6 )
api: return 404 for out-of-scope profile reads (#2508 ) (484c35c )
api: validate age in application timezone (#2499 ) (ce02755 )
api: wrap malformed household path rejections in the error envelope (#2791 ) (e6a3bd5 )
auth: authenticate canonical accounts without clinical actors (#2760 ) (d5b534a )
auth: consume passkey challenges after first use (a349bdc )
auth: keep production authentication and CSRF cookies secure behind HTTP proxies (5784650 )
auth: retain split browser Cookie headers (#2772 ) (541617f )
auth: reuse the validated development key and reject missing connection metadata (5784650 )
auth: roll back recovery use and account changes when audit or notification writes fail (5784650 )
auth: upgrade compatible session libraries together (#2973 ) (f21b3b4 )
bind OAuth consent to selected household (#2885 ) (6201e5f )
care: reject incomplete frozen prescription adoption (#3029 ) (fe499d6 )
care: resolve medication occurrence timezone and calendar boundary gaps (#2783 ) (052ec4f )
care: stop legacy grants authorising edits (#2883 ) (04f9218 )
check local whitespace before commits (#2978 ) (3baf142 )
ci: provision each acceptance database (#2830 ) (2f53971 )
ci: read archive JUnit proof from workspace store (#2770 ) (b06c2a9 )
ci: retain browser fixture ports during setup and align dates with the account timezone (5784650 )
ci: reuse Rust coverage build cache (#2804 ) (216a23f )
ci: wait for the exact dashboard search trigger to regain focus after closing (5784650 )
clarify capacity on new person forms (#2920 ) (fb39790 )
clarify report summaries and empty days (#2923 ) (4574bb5 )
clarify schedule form validation (#2916 ) (1313eb4 )
clarify security audit events (#3057 ) (5453f7c )
clarify security entry forms (#2922 ) (22569a7 )
configure production account email (#3076 ) (5f06434 )
correlate database errors with requests (#2971 ) (2872057 )
deps: patch client TLS certificate checks (#2828 ) (6477e06 )
deps: update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.12.0 (#2815 ) (c0193cd )
deps: update navigation3 to v1.2.1 (#3041 ) (efa0772 )
deps: update okhttp to v5.5.1 (#2857 ) (16c2940 )
deps: update rust crate axum_csrf to v0.12.0 (#2878 ) (5bb9274 )
deps: update rust crate axum_session to v0.22.1 (#3008 ) (fe955dd )
deps: update rust crate base64 to v0.23.1 (#2465 ) (1de9343 )
deps: update rust crate cedar-policy to v4.13.0 (#2466 ) (6b07a09 )
deps: update rust crate cedar-policy to v4.14.1 (#3032 ) (9f5f3f3 )
deps: update rust crate headers to v0.4.2 (#2463 ) (9e70f64 )
deps: update rust crate loco-rs to v1.3.1 (#3059 ) (1cc1246 )
deps: update rust crate lopdf to 0.46 (#2839 ) (8a85e36 )
deps: update rust crate scraper to v0.27.0 (#2567 ) (94f9b88 )
deps: update rust crate scraper to v0.29.0 (#2841 ) (810f065 )
deps: update rust crate sghtmltopdf to v0.6.1 (#2840 ) (aa16fa0 )
deps: update rust crate ulid to v3 (#2467 ) (770fb58 )
deps: update rust crate webauthn-rs-core to v0.6.2 (#3023 ) (1f3a9f1 )
deps: update rust crate zip to v9.0.4 (#2750 ) (83437fc )
deps: update rust crate zip to v9.1.2 (#2934 ) (c0d6907 )
deps: update rust crate zip to v9.1.3 (#2960 ) (e8cb04f )
deps: update rust crate zip to v9.2.2 (#3024 ) (2215fc0 )
deps: update rust crate zip to v9.3.0 (#3036 ) (846bacc )
deps: update rust crate zip to v9.4.0 (#3054 ) (1c291f8 )
deps: update rust crate zip to v9.4.1 (#3058 ) (658729d )
deps: update rust crate zip to v9.5.0 (#3069 ) (1f71cdd )
docs: document fresh credentials and session limits (5784650 )
execute task commands and count routine dashboard work (#2135 ) (ecb4de2 )
fail closed when only non-human labels match a refresh term (#3002 ) (18059e9 )
finder: enable searches after handlers are ready (#2767 ) (591cc53 )
format the release introduction as paragraphs (#3075 ) (ab339a1 )
gate dependency licenses, bans and sources with cargo-deny (#2997 ) (e87f19e )
identify medicine and units in refills (#2918 ) (2c4dde2 )
improve barcode scanner feedback (#3063 ) (60103c6 )
improve security audit filters (#3055 ) (dcf33e4 )
keep medicine lookup feedback beside its search (#2919 ) (94572f0 )
let accounts create or join a household (#2847 ) (5ebda6e )
loco: isolate storage transports and stabilise CI fixtures (#2632 ) (fd24a22 )
logging: exclude credential-bearing queries while retaining request diagnostics (5784650 )
match account names to visible labels (#2886 ) (97ce3ec )
match dose stock by catalogue identity (#2983 ) (6b7c051 )
medications: wait for wizard readiness (#2768 ) (77ff468 )
nhs-dmd: preserve primary import failures (#2970 ) (fc74793 )
observability: retain safe database error diagnostics (#2745 ) (1acf91c )
own Rust build inputs (review manifests, web-push transport, ICU docs) (#2996 ) (d6a6f0f )
preserve care when deleting locations (#2879 ) (fb3e150 )
preserve conflicts for malformed dose retries (#2874 ) (ca68d06 )
preserve household choice button labels (#2887 ) (682320c )
preserve safe diagnostics for database and storage failures (#2998 ) (66d0a53 )
push: reject malformed VAPID private keys without panicking (#2385 ) (5f41f8c )
rails: build migration image for test preflight (#2743 ) (e238a18 )
recheck reminder authority immediately before provider send (#2786 ) (fd396cf )
recheck shared-care reminders and avoid duplicate reads (#3030 ) (4f77e4a )
recover from incomplete sign-in links (#2924 ) (36b1574 )
reject extra invitation fields (#3027 ) (062a90f )
render shared navigation header immediately (#3052 ) (ab3af2d )
reports: enforce authentication revocation during PDF downloads (5784650 )
restore dashboard focus after dose cancellation (#2917 ) (27ff1eb )
restore the established login layout (#2915 ) (ac1a3d7 )
reviews: wait for filter control readiness (#2766 ) (0672427 )
revoke legacy access grants when guardian authority is withdrawn (#3004 ) (c90469e )
run scheduled tasks in shell-free images (#2911 ) (8312ba9 )
rust: delegate auth and close write races (bb73d58 )
rust: scope contract storage overlay to defined services (#2379 ) (7a8e885 )
security: make browser session records and audit references non-reusable digests (5784650 )
security: remove RustCrypto RSA from push dependencies (85af9da )
seed: use native Loco entity fixtures (#2829 ) (e44bd5a )
serve the app favicon (#2880 ) (954bcf9 )
sessions: enforce seven-day idle and thirty-day maximum native login expiry (5784650 )
simplify navigation and profile settings (#3071 ) (a1527cf )
simplify signed-out navigation (#2993 ) (a4036c9 )
soften the login passkey outline (#2921 ) (17f1ac0 )
stop restoring portable location memberships (#2875 ) (bf4c241 )
support: expire sessions atomically with complete audit history (#2764 ) (5853367 )
test: confirm process exit after signal refusal (#2758 ) (8ad9e99 )
test: guard owned Compose fixtures (#2953 ) (d698569 )
ui: clarify care forms and actions (#2474 ) (7a8c6f6 )
ui: finish People and layout journeys (#2855 ) (82ca6d7 )
ui: improve report table readability and focus (#2940 ) (5f2f857 )
ui: keep success flash visible until navigation (#2380 ) (1e63a7f )
ui: move Appearance above login card (#2939 ) (1fde722 )
ui: separate health history export controls (#2938 ) (3e9770e )
ui: wrap account-security navigation without horizontal overflow on narrow screens (5784650 )
upgrade MedTracker to Loco 1.3 (#3045 ) (0932341 )
use DaisyUI navigation and search components (#2937 ) (0ad30eb )
use guardian authority for portable reads (#2869 ) (bf34de8 )
Performance Improvements
You can’t perform that action at this time.