-
v1.7.0
StableAll checks were successfulcheck / commits (pull_request) Successful in 7scheck / go (pull_request) Successful in 3m26scheck / report (pull_request) Successful in 3scheck / web (pull_request) Successful in 3m27sandroid / build (pull_request) Successful in 11m28sandroid / report (pull_request) Successful in 3scheck / commits (push) Successful in 8scheck / go (push) Successful in 3m1scheck / report (push) Has been skippedcheck / web (push) Successful in 3m23sandroid / build (push) Successful in 13m26sandroid / report (push) Has been skippedtag / tag (push) Successful in 12m57srelease / binaries (push) Successful in 2m49srelease / docs (push) Successful in 3m43srelease / image (push) Successful in 5m16srelease / android (push) Successful in 9m31srelease / manifests (push) Successful in 1m42srelease / module (push) Successful in 1m8srelease / release (push) Successful in 17sreleased this
2026-08-18 17:01:08 +00:00 | 214 commits to main since this releaseFeatures
- feat(web): the owner's mark on every calendar surface (
99bc3d7) - feat(tui,mcp): General and Reminder event kinds (
2f52016) - feat(android): General and Reminder event kinds (
a9c5b83) - feat(web): General and Reminder event kinds (
c0609ff) - feat(proto): General and Reminder event types (ADR-0034) (
cdfb5d0) - feat(web): step assignees see the job on their boards (
e5f5ea1) - feat(android): render synced custom themes and the text size (
ab4165d) - feat(android): the full notification-kind list (
2bfc9bb) - feat(mcp): audit log, item editing, list reset and rota zone (
1f2451d) - feat(tui): a Meals tab (
eafd801) - feat(cli): a notification command group (
8ce668a) - feat(cli): meal and rota command groups (
a842712) - feat(cli): a list command group (
1dc43fc) - feat(cli): the system group reaches mcp and the release feed (
d0ea05b) - feat(tui): affordances from the permission matrix (
43271e7) - feat(authz): Update.other names who edits another member (
8f71476) - feat(authz): sub-verb rows for the manager, claim and export tiers (
db5009c) - feat(android): the job card redesigned — action bar below (
df2c54c) - feat(web): the job card redesigned — action bar below (
7fe172b) - feat(android): rename a list from its detail screen (
7a83886) - feat(web): rename a list from its detail page (
3e22bb8) - feat(user): mark the current session and hide idle-dead chains (
7971ae9) - feat(auth): bind session tokens to their refresh chain (
cdbb5d7)
Fixes
- fix(android): dress details from the web design canon (
5f49180) - fix(android): loading skeletons and the themed status line (
adb5ab6) - fix(android): the save arc on form primaries (
f6fa924) - fix(web): the admin surface joins the matrix (
9dc4001) - fix(android): every control gates on the verb it performs (
1f68cdf) - fix(web): every control gates on the verb it performs (
d857cd9) - fix(android): celebrate stays a state under reduced motion (
ef2ea60) - fix(android): honest up-for-grabs rows on Today (
61bf6b0) - fix(cli): list membership for items, no empty audited updates (
f53b101) - fix(cli): a logout that ends the session, and session commands (
91fbff6) - fix(mcp): honest verbs on complete_item, rota writes and update_event (
15dcaa4) - fix(android): edit and delete a job's linked reward from the job sheet (
bb6b20e) - fix(web): edit and delete a job's linked reward from the job sheet (
58fe936) - fix(android): honest session list and PIN routing on the switch sheet (
892c7b5) - fix(web): honest session list and PIN routing on the switch panel (
8dd93b8)
Other
- refactor(tui): the boards consume the shared rows (
e8aa66e) - refactor(tui): shared row renderers, one bounty sum (
089bb6d) - refactor(android): one Pill, one SectionHeading (
a95e95e) - refactor(android): one clamped balance, one wording for points (
a9109fa) - refactor(android): Today's event rows through the shared AgendaRow (
8c5f0b1) - refactor(android): Today consumes the shared JobCard (
a7c6070) - docs: entity renderings share one component per surface (
fd138d1) - refactor(web): retire the last shared-identity bypasses (
a9d2fc7) - refactor(web): one MemberSelect for every mark picker (
ede59ed) - refactor(web): one JobCard for every board (
6727aa3) - refactor(web): weekday names from one Intl source (
ec9add1) - refactor(web): one points module, one clamped balance (
f2a9cdd) - refactor(web): one deadline module for every due rendering (
3e0d364) - chore: true UncheckAll comment, drop dead isManager binding (
f992b10) - ci(release): sign the image so podman can verify it (
9a5f2bc)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.6.0...v1.7.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat(web): the owner's mark on every calendar surface (
-
v1.6.0
StableAll checks were successfulcheck / commits (pull_request) Successful in 8scheck / go (pull_request) Successful in 6m45scheck / report (pull_request) Successful in 3scheck / web (pull_request) Successful in 10m59sandroid / build (pull_request) Successful in 25m5sandroid / report (pull_request) Successful in 5scheck / commits (push) Successful in 6scheck / go (push) Successful in 5m18scheck / report (push) Has been skippedcheck / web (push) Successful in 9m25sandroid / build (push) Successful in 19m10sandroid / report (push) Has been skippedtag / tag (push) Successful in 17m47srelease / binaries (push) Successful in 10m32srelease / docs (push) Successful in 15m0srelease / android (push) Successful in 18m48srelease / image (push) Successful in 15m55srelease / manifests (push) Successful in 6m54srelease / module (push) Successful in 7m46srelease / release (push) Successful in 14sreleased this
2026-08-16 20:08:19 +00:00 | 267 commits to main since this releaseFeatures
- feat(web): show the release notes from the admin version check (
6c73a2d) - feat(android): what's-new sheet after an app update (
8d5d0db) - feat(web): what's-new sheet after a server update (
466c26b) - feat(system): serve release notes to every member (
184e6a5) - feat(android): edit a series' repeat rule from the event sheet (
c39fefb) - feat(web): edit a series' repeat rule from the event form (
435b466) - feat(events): edit a repeating event's rule (ADR-0032) (
3c71834) - feat(notify): event reminders with a per-event lead time (
2b2c5e8) - feat(android): delete an event or its series (
03716d4) - feat(android): channels for the due and overdue job kinds (
977c368) - feat(web): surface the due and overdue job kinds (
522b8d3) - feat(notify): job due and overdue reminders (
815eb2d) - feat(android): notification channel for the step-added kind (
cf0d1c5) - feat(web): surface the step-added kind (
579eea6) - feat(notify): tell a job's owner their job grew steps (
7539bfa) - feat(android): notification channel for the moved-event kind (
38f4148) - feat(web): surface the moved-event kind (
54491d7) - feat(notify): tell members when an event moves (
46e203e)
Fixes
- fix(web): clickable changelog links in the release notes (
d003d03) - fix(web): format the version card and render the notes' markdown (
320c3cd) - fix(android): confetti parity with the web, plus a buzz (
4a590d7) - fix(android): register events.update for offline replay (
579e78c)
Other
- ci(android): JaCoCo coverage in the test report (
b9971c6) - refactor(notify): extract the reminder ticker seam (
5734dfb)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.5.0...v1.6.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat(web): show the release notes from the admin version check (
-
v1.5.0
StableAll checks were successfulcheck / commits (pull_request) Successful in 5scheck / web (pull_request) Successful in 4m6scheck / go (pull_request) Successful in 4m54scheck / report (pull_request) Successful in 4scheck / commits (push) Successful in 8scheck / web (push) Successful in 2m7scheck / go (push) Successful in 3m9scheck / report (push) Has been skippedtag / tag (push) Successful in 3m46srelease / binaries (push) Successful in 1m54srelease / docs (push) Successful in 2m54srelease / image (push) Successful in 4m45srelease / android (push) Successful in 6m41srelease / manifests (push) Successful in 1m24srelease / module (push) Successful in 1m29srelease / release (push) Successful in 13sreleased this
2026-08-16 13:09:42 +00:00 | 291 commits to main since this releaseFeatures
- feat(android): notification channels for the event kinds (
2c966a9) - feat(web): surface the event notification kinds (
22ded91) - feat(notify): tell members about event adds and cancellations (
18e3829) - feat(android): offer only Me in New job's owner picker for takers (
f7ef9de) - feat(web): offer only Me in New job's owner picker for takers (
b4304c8) - feat(auth): guard assign-to-other with a matrix sub-verb (
544f141) - feat(android): gate New job on the Create.standalone sub-verb (
7a7d5e4) - feat(web): gate New job on the Create.standalone sub-verb (
790d1f3) - feat(auth): drive standalone job create from a matrix sub-verb (
2197548) - feat(android): hold push in a foreground service (
5f14b3d) - feat(android): render live notifications, drop UnifiedPush (
4435e65) - feat(android): collapse phone nav to four tabs plus More (
54ce324) - feat(web): collapse phone nav to four tabs plus More (
b05713c) - feat(android): compact month grid on narrow screens (
f7fa154) - feat(web): compact month grid on narrow screens (
b966f73) - feat(android): let members pin the calendar view at any width (
4c233dd) - feat(web): let members pin the calendar view at any width (
d3a6174) - feat(proto): add calendar_view to UserSettings (
8d6a2f2) - feat(android): card-tilt toggle, synced and rendered (
87c3d9b) - feat(web): card-tilt toggle, per-member and synced (
bf4116e) - feat(android): sync reduce-motion with the member record (
55d8347) - feat(web): sync text scale, motion and card-tilt (
74873d8) - feat(proto): sync text scale, motion and card-tilt in UserSettings (
5afb018)
Fixes
- fix(ci): ignore pull_request statuses in the tag sibling wait (
db1e0a7) - fix(android): pin form errors beside the sheet actions (
4d347ee) - fix(web): pin form errors to the sheet footer (
2c0640a) - fix(android): rebuild the member graph before holding the stream (
279d8d8) - fix(android): keep the push stream alive and catch up out loud (
cce194c) - fix(android): keep short events' names in the day view (
a01080b) - fix(web): keep short events' names in the day view (
bbe8f12) - fix(web): register events.update in the mutation queue (
70b9c6c)
Other
- docs(adr): record sub-verb matrix entries (0031) (
6139627) - docs(adr): record the push foreground service (#59) (
f147005) - docs(adr): record self-contained Android push (0030) (
4e59475) - docs(frontend): record the four-core phone nav collapse (
7f31026) - docs(frontend): record the compact phone month grid (
81e1b2a) - docs(frontend): record the calendar view toggle (
ea8ae4a) - docs(frontend): record card-tilt flat as a supported mode (
fe821cb) - docs: UI preferences sync via UserSettings, localStorage is a cache (
c656b3b) - docs(adr): record UI-preference sync via UserSettings (
3d8d39d)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.4.0...v1.5.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat(android): notification channels for the event kinds (
-
v1.4.0
StableAll checks were successfulcheck / commits (pull_request) Successful in 6scheck / go (pull_request) Successful in 3m8scheck / web (pull_request) Successful in 2m18sandroid / build (pull_request) Successful in 7m45scheck / report (pull_request) Successful in 4sandroid / report (pull_request) Successful in 5scheck / commits (push) Successful in 5scheck / web (push) Successful in 2m8scheck / go (push) Successful in 2m42scheck / report (push) Has been skippedandroid / build (push) Successful in 7m57sandroid / report (push) Has been skippedtag / tag (push) Successful in 7m2srelease / docs (push) Successful in 2m26srelease / binaries (push) Successful in 2m30srelease / android (push) Successful in 6m2srelease / image (push) Successful in 4m19srelease / module (push) Successful in 2m0srelease / manifests (push) Successful in 4m3srelease / release (push) Successful in 17sreleased this
2026-08-14 17:05:47 +00:00 | 331 commits to main since this releaseFeatures
- feat: edit recurring events, this-one or the whole series (
710402a) - feat(android): edit non-recurring events from the detail sheet (
c01afe6) - feat(android): gate affordances on the permission matrix (
5f37ec9) - feat(web): edit non-recurring events from the detail sheet (
8254991) - feat(web): gate UI affordances on the permission matrix (
6432948) - feat(system): expose the permission matrix over RPC (
d459018) - feat(authz): let children run shared lists and meals (
53d78cb)
Fixes
- fix(android): keep nav-bar labels on one line at large text scales (
f7b06bb) - fix(web): stop the offline strip flashing on Watch stream drops (
5cce5d1) - fix(android): theme the dinner strip like the web reward-strip (
943cc61)
Other
- ci(android): run on every PR and report test results (
c29d23a) - ci: report test coverage and results on pull requests (
812ccb0) - docs(fix): Reduce duplication and maintanence burdon by symlinking CLAUDE.md (
650b756) - docs: refresh stale README details (
2696327) - docs: add contributing guide and enforce conventional commits (
14b95ee)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.3.0...v1.4.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat: edit recurring events, this-one or the whole series (
-
v1.3.0
StableAll checks were successfulandroid / build (push) Successful in 4m47stag / tag (push) Successful in 4m7scheck / web (push) Successful in 1m35scheck / go (push) Successful in 1m53srelease / binaries (push) Successful in 1m40srelease / docs (push) Successful in 1m9srelease / image (push) Successful in 3m1srelease / module (push) Successful in 21srelease / manifests (push) Successful in 22srelease / android (push) Successful in 4m16srelease / release (push) Successful in 12sreleased this
2026-08-13 15:32:49 +00:00 | 346 commits to main since this releaseFeatures
- feat(android): give date and time fields real pickers (
0dec7d0) - feat(android): show the first-login tour (
36942b7) - feat(android): add the first-run welcome and founding-admin setup (
7c5f7d0)
Fixes
- fix(android): speak the member's language in overlays (
ff5fbbb) - fix(android): brand the footer and its siblings Eagraí Clainne (
865d562) - fix(android): keep the family tree's names readable (
65d2e46) - fix(android): latch session expiry and say why sign-in returned (
9c083ec) - fix(android): cancel scheduled work and queued writes on sign-out (
a0d0db4)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.2.0...v1.3.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat(android): give date and time fields real pickers (
-
v1.2.0
StableAll checks were successfultag / tag (push) Successful in 1m45scheck / web (push) Successful in 1m37srelease / binaries (push) Successful in 1m43scheck / go (push) Successful in 1m57srelease / docs (push) Successful in 1m7srelease / image (push) Successful in 2m55srelease / module (push) Successful in 17srelease / manifests (push) Successful in 18srelease / android (push) Successful in 3m55srelease / release (push) Successful in 11sreleased this
2026-08-13 12:43:56 +00:00 | 354 commits to main since this releaseFeatures
- feat(system): seal backup archives with an install HMAC (
21dde44) - feat(audit): record security events in the audit log (
3d94160)
Fixes
- fix(build): make the image build hermetic and drop dead catalogs (
16f79be) - fix(server): cap request bodies and import decompression (
00ce6ff) - fix(user): harden the first-boot setup window (
8e12cfc) - fix(user): equalise login timing for unknown emails (
e66b37a) - fix(user): lock out repeated failed password logins (
66fb969) - fix(webhook): guard deliveries against loopback and link-local SSRF (
4f429d6) - fix(svc): mask internal error text on the wire (
901a9fc) - fix(server): add security response headers (
2f8f843) - fix(svc): scrub streaming responses in the sanitize interceptor (
cfc070c) - fix(svc): clamp client list limits to a server ceiling (
3f1925a) - fix(system): only pass http(s) release URLs to clients (
c8ead55)
Other
- ci(release): pin the renamed compose image path (
a1e906f) - chore(deploy): point pull references at the new forge (
0b675fe) - ci: pin actions by digest and verify tool downloads (
a805eb4) - docs(deploy): mark the unsigned ZOT OCIRepository dev-only (
202acb2) - ci(tag): only tag when the push is still the head of main (
e0bc0e2)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.1.0...v1.2.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat(system): seal backup archives with an install HMAC (
-
v1.1.0
StableAll checks were successfulandroid / build (push) Successful in 4m39stag / tag (push) Successful in 4m21scheck / web (push) Successful in 1m36scheck / go (push) Successful in 1m48srelease / binaries (push) Successful in 1m40srelease / docs (push) Successful in 1m3srelease / image (push) Successful in 2m44srelease / module (push) Successful in 20srelease / manifests (push) Successful in 20srelease / android (push) Successful in 3m52srelease / release (push) Successful in 14sreleased this
2026-08-11 23:26:23 +00:00 | 372 commits to main since this releaseFeatures
- feat(cli): note the license in version output (
eea6ced) - feat(android): note the license in the board colophon (
aa3adcd) - feat(web): note the license and source in the colophon (
95a3226)
Fixes
- fix(deploy): create the app namespace before ntfy on sqlite deploys (
9dc7e3c)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.0.1...v1.1.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat(cli): note the license in version output (
-
v1.0.1
StableAll checks were successfulandroid / build (push) Successful in 10m40stag / tag (push) Successful in 8m28scheck / go (push) Successful in 2m50scheck / web (push) Successful in 2m55srelease / binaries (push) Successful in 3m17srelease / docs (push) Successful in 1m48srelease / android (push) Successful in 5m2srelease / image (push) Successful in 4m33srelease / module (push) Successful in 35srelease / manifests (push) Successful in 47srelease / release (push) Successful in 16sreleased this
2026-08-11 22:11:06 +00:00 | 376 commits to main since this releaseFixes
- fix: use the display name Eagraí Clainne in user-facing prose (
e334b69)
Full changelog: https://git.eagraiclainne.ie/eagraiclainne/app/compare/v1.0.0...v1.0.1
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- fix: use the display name Eagraí Clainne in user-facing prose (
-
v1.0.0
StableAll checks were successfultag / tag (push) Successful in 13m44scheck / go (push) Successful in 3m32scheck / web (push) Successful in 9m15srelease / binaries (push) Successful in 9m17srelease / docs (push) Successful in 9m52srelease / image (push) Successful in 11m7srelease / android (push) Successful in 14m8srelease / module (push) Successful in 3m56srelease / manifests (push) Successful in 4m54srelease / release (push) Successful in 24sreleased this
2026-08-11 21:21:22 +00:00 | 377 commits to main since this releaseBreaking changes
Features
- feat(docs): mount the app's real header widgets on /docs (
04b1142) - feat(docs): /docs header renders the app header proper (
3ed9c30) - feat(docs): serve embedded /docs inside the app shell (
a1e2f30) - feat(mcp): export_my_data tool, self-scoped and size-capped (
cfe333d) - feat(android): download my data from Settings (
261bbb5) - feat(web): personal data export in Settings and Admin (
287eaeb) - feat(cli): famorgasy user export (
f643831) - feat(system): per-user data export RPC (ADR-0027) (
cdd4db6) - feat(deploy): TrueNAS SCALE custom app compose (
557edcd) - feat(server): healthcheck subcommand for container probes (
288319e) - feat(android): points and owner on the quick-add step form (
203a09a) - feat(web): points field on the quick-add step form (
ff26dc9) - feat(android): points on steps in the job sheet (
3b54efe) - feat(web): points on steps in the job sheet (
912d1ef) - feat(web): Today's job cards open the job sheet (
32f2f80) - feat(android): points balance chip in the top bar (
56c0029) - feat(web): points balance chip in the header (
1745a7f) - feat(android): job sheet opens as a view before editing (
7effde9) - feat(web): job sheet opens as a view before editing (
06bf21d) - feat(mcp): sub-tasks on get_item and add_item (
6c3dccf) - feat(cli): sub-task management commands (
7da9b4f) - feat(android): sub-tasks in the job sheet (
1de7577) - feat(web): sub-tasks in the job sheet (
a4691ba) - feat(item): clone sub-tasks onto repeat successors (
85055f2) - feat(item): parent_uid field, SetParent RPC and sub-task guards (
3ecf7ce) - feat(docs): domain-grouped API sidebar with scroll tracking (
99aef39) - feat(web): docs entry in the me-menu (
ed4193d) - feat(docs): API reference sidebar and home link (
46d0315) - feat(web): publish docs-theme hint for the docs pages (
8c73d91) - feat(server): serve the docs site at /docs (
3105fb7) - feat(docs): generated docs site via cmd/docsgen (
eb541ca) - feat(cli): webhook commands (
465a36b) - feat(web): webhooks admin tab (
0eb6400) - feat(webhook): admin RPCs (
fad79dd) - feat(webhook): dispatch seam (
406353b) - feat(db): webhook table (
bfd88ab) - feat(proto): WebhookService for outbound event targets (
6c30919) - feat(system): admin toggle for the /mcp endpoint, default off (
d65fe47) - feat(web/a11y): skip-to-content link in the shell (
b395fc1) - feat(android): per-member language choice, synced like the web (
5ace462) - feat(android): server address in the colophon on every board (
07eee78) - feat(system): import and restore from backup archives (
798c8d3) - feat(system): admin data export, backup and portable modes (
2a9b053) - feat(deploy): sqlite PVC deployment, CNPG becomes the optional path (
e703bea) - feat(server): db-driver and db-path config, sqlite default (
d944d10) - feat(database): sqlite dialect with containment translation (
25ea2be) - feat(android): profile switching parity - parked tokens, PIN pad (
cea9f61) - feat(web): the switch-user sheet, PIN pad and parked profiles (
ae4c369) - feat(auth): quick profile switching with parked chains and PINs (
6ed37fe) - feat(web,android): the offline strip replaces the saved banner (
0146dab) - feat(android): offline parity — full write queue, sync chip (
7666f63) - feat(web): only the server ends a session (
53bf46b) - feat(web): offline writes — a FIFO queue with replay (
6172989) - feat(web): offline reads and service-worker shell (
95049cd) - feat(server): accept client-minted uids on creates (
3770116) - feat(rewards,family): close recorded parity gaps (
c2b4820) - feat(calendar): the Android calendar closes its 2026-08-06 parity gaps (
818c131) - feat(jobs): bring the full web job sheet and new-job flow to Android (
e74295f) - feat(shell): the sign-in screen reaches Android parity (
c0744b3) - feat(today): event sheet closes its two Today-board gaps (
90ba759) - feat(family): the Family page reaches Android parity (
7c68eab) - feat(shell): the web's motion canon arrives on Android (
915a03e) - feat(shell): boards learn the web's job-grid on wide screens (
d9b09dc) - feat(settings): the Settings page reaches Android parity (
abcadfe) - feat(shell): move sign out from settings into the me-menu (
03d0ef9) - feat(boards): every card joins the tilt (
922b649) - feat(shell): web header locks in place like the app's (
fae3fe8) - feat(shell): the me-menu converges across surfaces (
57193f2) - feat(rewards): the Rewards page reaches Android parity (
da44696) - feat(meals): the Meals page reaches Android parity; nav goes cal-nav (
48a8414) - feat(android): the Lists pages reach web parity (
d8fde22) - feat(android): the Watch stream brings live updates (
9eb7b05) - feat(android): jobs board becomes the web's two views (
8197ea5) - feat(calendar): back-to-today becomes a fixture between the arrows (
97aa202) - feat(android): the calendar agenda carries the whole day (
902e359) - feat(android): theme follows the member — settings sync lands (
039e92a) - feat(android): the calendar opens to a month from 900dp (
f098f39) - feat(android): port the web's Today board and Rewards claim flow (
ef26952) - feat(android): port the web shell — boards, header, me-menu, bell (
4bb3db1) - feat(android): the noticeboard look lands; Android 17 LAN fix (
00912a5) - feat(parity): the rule-1 gaps close (
1fa4c2c) - feat(make): the integration suite finds its Postgres (
3e11da7) - feat(android): marks arrive (
1243daf) - feat(ci,deploy): every artifact carries a seal (
839a4c2) - feat(android): the app reaches parity's edge (
ea38002) - feat(android,deploy): the phone hears the bell (
5ed0363) - feat(android,auth): the app signs in and pulls its weight (
e58774d) - feat(android): the app takes its first breath (
415bef6) - feat(auth): sessions learn to outlive their tokens (
9fb7ac7) - feat(web): the rota board goes up (
a452ae8) - feat(seed): the sample rota (
687f787) - feat(client,mcp): expose the meal rota to the assistant (
85408d9) - feat(reminder): the board learns to speak first (
a316205) - feat(mealrota,notify): the rota takes charge (
66e337d) - feat(db): shelves for the rota (
b500d9d) - feat(proto): the standing rota — MealRota and its service (
f3c0742) - feat(meal): the pantry opens for business (
8d0b44d) - feat(domain): meal helpers (
80f2a75) - feat(db): a meal shelf joins the pantry (
1809ba1) - feat(proto): add the meal library service (
ce0fbba) - feat(web): the board taps you on the shoulder (
4c2f79e) - feat(push): the whisper finds its voice (
0c7504e) - feat(push): the board learns to whisper beyond its walls (
ea2af8b) - feat(deploy): the board steps onto the LAN (
ee9df99) - feat(web): the board learns its own version (
a15f286) - feat(web): move language into the profile sheet (
0b72ea0) - feat(web): the name in the corner opens a pinned note (
1c156e3) - feat(i18n): the last strings pack their bags (
94a8941) - feat(i18n): the household translates (
d1f69c1) - feat(i18n): the calendar keeps ISO time but learns its month names (
e9eadbc) - feat(i18n): translate the working day (
62d082c) - feat(i18n): the front door greets in Irish (
1e60a67) - feat(i18n): the shell speaks (
9a2a221) - feat(i18n): the scaffolding goes up (
215471b) - feat(web): the noticeboard look moves in (
011282e) - feat(release): publish rendered manifests (
bd75202) - feat(release): the timoni module rides the registry too (
9115161) - feat(release): jobs pass the baton (
a8ab5fe) - feat(server): the server introduces itself (
920f075) - feat(release): flow versions from tag to binary (
619e67d) - feat(mcp): the tools answer follow-ups (
651f66a) - feat(svc): responses name their people (
447cf04) - feat(web): the admin page manages api keys (ADR-0016 p7) (
ecb0ee0) - feat(client): api keys reach the CLI (ADR-0016 p6) (
996e4c9) - feat(mcp): the server speaks MCP at /mcp (
436cfe9) - feat(auth): reward-bearing writes demand a human actor (ADR-0016 p4) (
92a5db6) - feat(apikey): mint, list and revoke keys (ADR-0016 p3) (
f0aed3e) - feat(auth): the interceptor speaks api_key (ADR-0016 p2) (
387a8f0) - feat(auth): api keys are records first (ADR-0016 p1) (
41a23f4) - feat(web): header mode toggle; tour mark step opens the 'My mark' sheet (
519495c) - feat(auth): password changes orphan every earlier token (
c59f34b) - feat(auth): the web session rides an httpOnly cookie (
d2564ad) - feat(auth): every request resolves its subject from the record (
cc5ae79) - feat(auth): the dev secret unpins and tokens live half a day (
02e329e) - feat(db): the server applies its own schema on boot (
92286c1) - feat(seed): the family command grows a whole tree on a fresh database (
9c0e571) - feat: the family name greets from the header, tab, sign-in and TUI (
c8e5781) - feat(calendar): who and what filters over the board (
f8dad3a) - feat(calendar): the span cancel confirm names its dates (
6c609ab) - feat(calendar): events span days — all day, one block, or daily times (
6896ea4) - feat(tour): theme pick step after the mark (
32f2005) - feat(admin): syntax highlighting on the raw JSON peeks (
de55599) - feat(admin): raw JSON peek for members and audit events (
d58160a) - feat(tour): role-based first-login walkthrough (
9649133) - feat(auth): sliding token renewal and session-expiry handling (
c9eb92b) - feat(admin): admin area — members, audit log, system settings (
793e849) - feat(users): manual ex-partner links and household halo in the tree (
9afb63e) - feat(events): repeating events — derived occurrences with overrides (
fb00ad8) - feat(items): takers see the whole jobs board (
bc63d3e) - feat(notify): live data feed — pages refresh over the stream (
f4fcf1e) - feat(notify): claim announcements and points in completion news (
57f48c5) - feat(notify): notifications — inboxes, live stream, bell, toasts (
a551e03) - feat(items): repeating jobs — close-out mints the successor (
7a4385e) - feat(users): self-service change password (
03ef537) - feat(web): mark menagerie, fitting room everywhere, settings as cards (
e7897c7) - feat(settings): sync theme and mark to the server (
06aa429) - feat(web): split tree-only members out of the family grid (
2c9cb78) - feat(web): tabs deep-link via ?view= in the URL (
5b93c86) - feat(web): unclaimed jobs lead the Everyone view (
9d1b587) - feat(web): up-for-grabs preview on the Today board (
4acc41d) - feat(users): record-only members — living family without login (
ac80488) - feat(tree): stronger family grouping in the tree layout (
e01395c) - feat(seed): lists and linked points rewards (
361e185) - feat(web): job points (
bacc78b) - feat(web): lists land — index, detail, quick-add (
6576c95) - feat(server): points auto-claim; reward link rules + LinkItem (
a9d3af4) - feat(server): item lists (
84ee4c0) - feat(rewards): claimed-only points balance; web reward delete (
3dc7b1c) - feat(proto): item lists — ListRef, SetList, ItemListService (
badf5aa) - feat(web): SVG chevrons for calendar navigation; wider day sheet (
e0ac4b0) - feat(web): SVG close icon for sheets (
19df759) - feat(web): day-view header with centred title, sticky above the clock (
2e435cf) - feat(web): previous and next day navigation in the day view (
fe0afae) - feat(web): calendar day timeline view (
bdd51cf) - feat(seed): busy calendar days with 3-5 events (
4aff303) - feat(seed): reusable dev-data seeder for the existing family (
c99316b) - feat(web): rewards UI catches up with the points ledger (ADR-0003) (
1d52017) - feat(web): job sheet and take-ownership UI (ADR-0014) (
875386c) - feat(items): job ownership and editing rules (ADR-0014, backend) (
2bab609) - feat(roles): widen role gates for members and children (
b2f2839) - feat(web): colour-coded tree lines, sibling arcs, and a legend (
6d3658f) - feat(web): family tree view (ADR-0005) (
ab63f8f) - feat(setup): first-time setup flow via SystemService/SetupStatus (
18f9d6f) - feat(domain): derive the family graph (ADR-0004) (
3fc146d) - feat(rewards): points ledger with costed claims (ADR-0003) (
02ed2ed) - feat(observability): provision the Grafana dashboard set (
8819b56) - feat(svc): entity mutation counter and domain event counters (
6acd5fe) - feat(auth): login, token and authorization-denial metrics (
f8cda8d) - feat(db): operation duration histogram and pool gauges (
d3b8df2) - feat(otel): global meter provider, runtime metrics, telemetry package (
eee85bb) - feat: service authz, CLI user reference, profile self-service (
3f9ea23) - feat(web): frontend foundation, sign-in profile picker, and Today board (
af5895d) - feat(domain): restrict user deletion on live references (
b2dd080) - feat(domain): extract entity behaviour into internal/domain (
ce7bd99) - feat(user): scrub password_hash via svc.SanitizeInterceptor (
adeec8e) - feat(observability): add config-driven OTLP exporters (
f021284) - feat(cli): implement table formatter and shell completion (
ed6eb47) - feat(api): add List RPCs across all services (
2f7936c) - feat(deploy): add Kubernetes deployment via kind, CNPG, Timoni and Flux (
4114dc0) - feat(reward): implement service handlers (
001de39) - feat(item): implement service handlers (
687055d) - feat(event): implement remaining service handlers (
4484728) - feat(user): implement Delete handler (
3ffd58b) - feat(database): add Delete primitive to Table and TxTable (
bb52583) - feat(cli): add Makefile targets for CLI build (
bc4b30d) - feat(cli): add all service commands (user, event, item, reward) (
068b029) - feat(cli): add login/logout commands and output formatters (
354d8c3) - feat(cli): add foundation with config and version command (
4e11e06) - feat(client): expose all proto fields in reward params structs (
12728be) - feat(rbac): define roles and permissions in protobuf (RFC 004) (
adc8326) - feat: add Go client package for CLI tools and applications (
ebe1db0) - feat(logging): add context-aware structured logging to reward service (
bc724e2) - feat(logging): add context-aware structured logging to item service (
69ba4fe) - feat(logging): add context-aware structured logging to event service (
463595c) - feat(logging): add context-aware structured logging (
372d89f) - feat(user): implement rfc-002 phase 4 role management (
2bd8a97) - feat(auth): implement rfc-002 phase 3 (interceptor) (
a20cfa9) - feat: implement rfc-002 phase 2 (AssignRoles, CompleteItem) (
03942c0) - feat(auth): implement rfc-002 phase 1 (permissions) (
be97e5e) - feat: implement RFC-001 (
99a4808) - feat: update version package to match semver spec (
4ded920) - feat: update services to work with new database structure (
fdedaad) - feat: refactor to use cobra (
4a48897) - feat: set up dagger and the version package (
c73781f) - feat: create internal service packages (
3f1cb67) - feat: create proto api and generate go code (
3e35382)
Fixes
- fix: update the cosign public key (
8144874) - fix(docs): concrete webhook envelope example in event reference (
57b053c) - fix(docs): guides at clean URLs, API TOC nested under its entry (
94ba31f) - fix(android): no refresh error line for the network's absence (
9b284a3) - fix(android): docs entry in the me-menu (
e9d27e9) - fix(android): Today job cards learn steps and open the job sheet (
ac2b695) - fix(android): reachability learns from traffic and a heartbeat (
e107e63) - fix(android): sync chip becomes a strip under the offline bar (
3bd68c2) - fix(web): sync chip becomes a strip under the offline bar (
5419d5b) - fix(android): keep Activity reachable through the member-locale context (
3ffde81) - fix(web): step editors open under their own row (
23fef05) - fix(web): day strip sits under the header; Today cards learn steps (
1e6e13d) - fix(web): day view nav icon and pinned all-day strip (
65eb2d1) - fix(audit): queue entries off the request path (
baa2e1f) - fix(mcp): authenticate before revealing the disabled state (
6532345) - fix(web/tree): let family-tree text follow the text-size setting (
45c24d9) - fix(web/a11y): tie validation errors to their fields (
09cbe80) - fix(web/a11y): announce save completion to screen readers (
0cc58f4) - fix(web/i18n): set document language on locale switch (
0a74e78) - fix(web,android): surface-on-danger for the offline strip (
fd4841d) - fix(web): the strip rises unprompted; 5xx reloads keep the shell (
f4fe28c) - fix(web,android): offline holes the real phone found (
7571c47) - fix(calendar): month cells take the web's fixed dress and day-spread (
e89f1a9) - fix(android): the bell hears its own stream — Subscribe joins Watch (
26ae3ce) - fix(notifications): make the bell's badge an accent dot (
bf20b6c) - fix(android): resolve every Material3 colour role via FamTokens (
a30693b) - fix(mealrota): the cook ref goes unnamed (
6440330) - fix(style): danger buttons get icons and the date canon its ruling (
6645381) - fix(auth): close the setup window behind the first admin (
566a1b1) - fix(android): every failure names its reason (
570e46b) - fix(notification): route MarkAllRead through the svc seams (
60fae06) - fix(android): the app wears its own face (
d7659b4) - fix(android,ci): derive APK version from the release tag (
b098829) - fix(android): give UnifiedPush the Activity it always wanted (
f39efd4) - fix(ci): the android platform learns its full name (
37cac9d) - fix(ci): absorb SIGPIPE from the sdkmanager license pipe (
4349c4c) - fix(web): failures name their reason (
8b39b7e) - fix(auth,web): the session survives a closed tab (
a84c49c) - fix(push,deploy): opening-night stumbles smoothed (
98c092d) - fix(web): narrow screens breathe (
421480f) - fix(web): the board's mark rides the bottom bar too (
c32bd26) - fix(i18n): family default reaches everyone who never chose (
2e84580) - fix(deploy): OTLP export ships off by default (
618fe4c) - fix(proto): codegen comes home (
05f3f1f) - fix(deploy): the published module serves ClusterIP (
27e2f1c) - fix(release): the module takes the plain name timoni under the org roof (
9234382) - fix(deploy): the module default follows the repo to its org (
f6d2852) - fix(release): artifacts speak v3 (
8fbb4a9) - fix(ci): the lint's one quibble yields; buf pins its version (
39b98e7) - fix(ci): caches wait for a reachable cache server (
8e9465c) - fix(web): focus rings survive their scroll boxes (
ed88d11) - fix(docs): the corner-pill tag sits above its positioned card (
82e3e0b) - fix(calendar): the who filter lists active members only (
8344965) - fix(calendar): the stretch cancel is called Cancel Span (
5e5bb73) - fix(calendar): the whole-stretch cancel stands in plain sight (
b5408a6) - fix(tour): steps pin heading and actions like the sheets (
ef703e5) - fix(admin): the Everyone filter chip wears a mark (
daf80e0) - fix(admin): audit filters wear the site's own controls (
52dbdf8) - fix(admin): Add member sits beside the page title (
edc7056) - fix(marks): prune departed members from the device caches (
2d8161b) - fix(items): repeat successors compute in the rule's own time zone (
661fac6) - fix(events): occurrence math runs in the family's timezone (
4f9cad8) - fix(items): shared list entries are visible to takers (
56552df) - fix(web): a deadline time without a date means today (
15a0be2) - fix(web): dedupe optimistic adds against live-refreshed data (
9ae7ca5) - fix(web): server verdicts reach the user instead of connection copy (
42fea8d) - fix(rewards): linked-claim guard and two display gaps (
a3f0d46) - fix(client): send explicit Complete=true in CompleteItem (
fd0ca24) - fix(web): fixed-width day nav pills (
478c63f) - fix(web): day-view header layout (
90f36c9) - fix(web): cap calendar day cells at three rows (
5ea8e80) - fix(web): keep the calendar grid inside the viewport (
708c8d1) - fix(web): sink rootless tree nodes; dash ex-partner arcs (
b7b8ad9) - fix(family): mirror partnerships in derived relations (
4901572) - fix(client): read the auth token at request time, not at New (
353df15) - fix(security): bump Go to 1.25.12 and patch vulnerable deps (
d3e5fef) - fix(user): persist uid on create and preserve identity fields on update (
0e04b81) - fix(auth): grant List RPCs the same roles as service Read (
1f0a1e9) - fix(database): quote reserved-word table identifiers and migrate to pgx (
29cb013) - fix(deploy): drop stray server subcommand arg from Timoni deployment (
53d8010) - fix: bump deps and replace interface{} with any (
afdf836) - fix: resolve golangci-lint errors in server, event, and logging (
8eedeeb) - fix: bind cobra flags to viper and add mapstructure tags to config (
87fe7b1) - fix: remove dep review as it needs a license (
215e34c) - fix(ci): bump the go version and repair the auth test (
96725ce) - fix: resolve golangci-lint errors (
1ebfe91) - fix(ci): align golangci-lint and the go version (
c80c82c) - fix: correct the go.mod module name (
f5b3535)
Other
- ci: derive registry and mail domain from server URL (
883112d) - refactor: purge residual fam- prefixes from icons and dashboards (
3c2cf59) - docs(site): promote webhook events page into the nav bar (
8c683cc) - docs(site): add webhook event trigger reference (
f0ce33e) - docs(site): drop TrueNAS install guide from docs site (
24cf210) - test(integration): per-user export end-to-end (
99ce1af) - docs: TrueNAS install guide and distribution ADR (
50c3961) - ci: attach TrueNAS compose to releases (
c361efb) - test(integration): sub-task lifecycle coverage (
84cd408) - docs: add ADR-0025 sub-tasks (
200f059) - ci: build and release the docs site (
4a50afd) - test(integration): webhook coverage over the wire (
bd33de7) - test(mcp): enable the endpoint before the integration specs speak MCP (
644fba6) - docs(adr): ADR-0024 outbound webhooks (
188d4f1) - i18n(web): extract the accessibility strings (
4ac9f01) - docs(frontend): use the real icon set throughout the plan page (
460a1d0) - docs(frontend): drop the build order from the plan (
caf3bcd) - docs(frontend): make the HTML plan the single canonical doc (
af82e7e) - docs(frontend): icon inventory section in the design plan (
6813f6b) - docs: record sqlite-default storage in the development guide (
a8a884f) - test(integration): hermetic sqlite harness default, postgres opt-in (
f844f5b) - refactor(database): introduce storage dialect seam (
c13f140) - docs(adr): profile switching and quick-switch PINs (ADR-0020) (
9309868) - docs(web): sketch the switch-user profile sheet in the frontend plan (
01c7137) - chore: refresh devbox.lock after a devbox update (
ac8c65c) - test(changes): the live-update hub gets its own specs (
2f43547) - chore(deploy): the last two moving images freeze (
63f2bb1) - docs(agents): the development guide finally enters the repo (
8061df7) - chore: everything states its version (
87eb7a1) - docs(parity): the deliberate gaps get their ledger (
9a96a80) - docs(adr): ADR-0017 writes the sessions story down (
b8a4a6b) - ci(release): republish exorcises the ghost (
76d58af) - ci(release): no seal, no ship — APK job demands signing secrets (
e4eedd6) - ci: an empty nudge to re-fire the workflows (
083b55e) - ci(tag): tag only when every sibling workflow is green (
e24a731) - ci: third-party actions state their address (
c1b867f) - ci: follow the runner's relabel from ubuntu-latest to Linux (
9b229cf) - chore(deploy,ci): the forge changes its name (
e405f33) - docs(agents): the law goes above the lore (
692cbf8) - ci(release): publish only after every artifact lands (
f751116) - ci(release): a half-dressed keystore refuses to sign (
937ad3d) - ci(release): no bell without a clapper — the APK gates the release (
91c9435) - ci(android): the generated clients answer for themselves (
a5404f1) - chore(deploy): a bell tower for testing — ntfy on the cluster (
48d139d) - ci(release): packages walk themselves home (
df169a1) - ci(release): the tag push wears a real token so the release wakes (
0a15719) - ci(gitea): the cache server answers at the LAN door (
68549c5) - ci(gitea): the NAS takes the checks (
2f40cb4) - refactor(roles): the auth shim retires (
435b419) - chore: root directory sheds its pre-kind era (
7696c36) - docs(adr): ADR-0016 accepted; api keys and /mcp reach the README (
af1adf7) - docs(demos): the scroll finds its tempo — quicker wheel ticks (
f98eea6) - docs(demos): add a gliding cursor and stepped scrolling (
dc876eb) - docs(demos): a scripted camera crew (
82706b5) - docs(adr): ADR-0016 proposes the MCP endpoint and admin-managed API keys (
88f44d7) - refactor(web): create/edit forms in sheets with pinned actions (
36ed823) - docs(adr): ADR-0015 item lists and points auto-claim (
d5fbda1) - revert(web): drop sibling arcs from the tree (
fce4c1b) - docs(adr): record the metrics instrumentation decision (ADR-0013) (
a562c3b) - docs: mark A–E shipped in integrity & intake review (closeout layout) (
f0fb12f) - refactor(domain): move the user intake rules onto the domain module (
be055b2) - refactor(services): absorb the create protocol into a svc.Create seam (
57753d7) - refactor(database): hoist the row protocol onto a runner seam (
525c7fc) - docs: add architecture review (integrity & intake proposal) (
711c78f) - docs: mark A–E shipped in edge & provenance review (closeout layout) (
308f59a) - refactor(services): drop dead ctx fields, unify Read error map (
8d2022f) - test(roles): prove the permission matrix covers every RPC (
3d475ca) - refactor(services): answer actor provenance once in svc (
5125265) - refactor(domain): speak verdicts in one shape (
40d6617) - refactor(cli): funnel the command run protocol through a run seam (
2c3357a) - refactor(server): extract handler assembly into internal/server (
552725c) - docs: add architecture review (edge & provenance proposal) (
2baf84a) - docs: reformat domain-behaviour review to match sibling closeout layout (
85922b5) - refactor(auth): centralise RPC authorization behind auth.Allow (
e949cce) - refactor(services): add svc.RequireFields validation seam (
f254041) - refactor(client): funnel unary calls through a generic invoke seam (
4485a68) - docs: add architecture review (domain-behaviour proposal) (
f690852) - docs: mark A–D shipped in architecture review (
b2ea624) - refactor(database): extract generic table constructors (
b4006f4) - refactor(user): propagate found bool from findUserByEmail (
663f485) - refactor(services): collapse List handlers onto svc.List seam (
7576742) - docs: add architecture review report (2026-07-22) (
4978668) - refactor(services): add Mutate/Delete seam for read-modify-write (
99bcd3f) - docs(adr): record JSONB query convention (ADR-0001) (
071d83f) - refactor(database): add query seam (List/Count/FindBy/FindAllBy) (
2f5854b) - refactor(database): add WithinTx transaction seam and sweep handlers (
b30a73a) - docs: add architecture review report (2026-07-21) (
c624790) - ci: run integration tests against a real Postgres service (
cbc4197) - test(integration): add real-Postgres integration test harness (
31b55ad) - build(devbox): add Timoni and Kubernetes tooling (
19a85ac) - chore: add /server to .gitignore (
ac0de89) - chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdoutmetric (
5d71df1) - chore(deps): bump github.com/onsi/gomega from 1.38.2 to 1.39.0 (
4aabd7b) - docs: add comprehensive local development configuration and automation (
5ec8fcb) - test: add comprehensive test coverage for reward service (
6977ebf) - test: add comprehensive test coverage for item service (
1615c46) - test: add comprehensive test coverage for event service (
7bfbcd6) - test: add comprehensive test coverage for untested packages (
9ca4e65) - refactor: move module path to famorgasy.ie (
d21d3d5) - chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.46.0 (
db1f376) - chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace (
1c888ac) - chore(deps): bump golang.org/x/crypto (
f9cf30c) - docs: complete rfc-002 phase 5 testing and documentation (
c38b01b) - chore: add Viper configuration management (
3b6d1e0) - chore(deps): bump golang.org/x/net from 0.46.0 to 0.47.0 (
3dd7d5a) - chore: update go version (
db6e25c) - chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdoutmetric (
9d491b5) - chore(deps): bump connectrpc.com/otelconnect from 0.7.2 to 0.8.0 (
d57a40b) - chore(deps): bump connectrpc.com/connect from 1.18.1 to 1.19.1 (
5460137) - chore: remove unsupported workflows (
23f5461) - chore: enable code scanning (
15e7b89) - ci: add the github workflows (
197a93f) - chore(deps): bump google.golang.org/protobuf from 1.36.6 to 1.36.10 (
6351f8b) - chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace (
d58d0fb) - chore: refine rfc-002 and rfc-003 (
f93595e) - docs: add rfcs for authN functionality (
f9e7cf7) - refactor(database): restructure the package (
f93a855) - chore: format code (
b47ead6) - chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdoutlog (
1aade87) - chore(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 (
2421c00) - chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace (
e582ee8) - chore(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdoutmetric (
3e27d8d) - chore(deps): bump go.opentelemetry.io/otel/sdk/log from 0.12.2 to 0.13.0 (
7b88bae) - chore(deps): bump go.opentelemetry.io/otel/sdk/metric (
76abc16) - chore: expand dagger pipeline (
53075dd) - ci: add dependabot config (
74b8a4d) - chore: add gitignore, license and readme (
5a3bd08)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- feat(docs): mount the app's real header widgets on /docs (