Repository navigation
Count every commune's notices and put what needs you first (app review batch 5, Home and notices) - #32
Merged
Conversation
Migration 0039 adds unreadNotices to the commune list and to the snapshot's commune, so the bell can count every commune from the list the app already reads each minute, and a public.my_unread_notices() read for Notices to show unread notices from other communes, in the snapshot's shape with the sender's name and a pledge notice's open fund. Each activity event in the snapshot now carries recordType (expense, repayment, fund, pledge, contribution, recurring, template, task, event, note, member or announcement), and the overview summary keeps a share's pending payment report so Home can list it for the bill payer. The shared functions are patched in place with checked anchors. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
…mune The bell counted only the open commune's notices, so a notice from another commune showed nothing, even on Home. The commune list the app already reads each minute now carries each commune's unread count (0039), and the bell adds them up on every screen. Notices lists the open commune first, then each other commune with unread notices under its name, read from the new GET /api/notices/unread (my_unread_notices on Neon) only when Notices opens. Opening a notice from another commune marks it read there, refreshes that commune and switches to it before opening the record. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
Activity rows read "Inspection: Created" without saying whether it was a task, event, note or expense, and with no time of day. Each row now carries the record type the snapshot names (0039), falling back to the event's area, and shows it as a coloured icon chip and a word (money in slate, plans in sage, shared things in cream). Activity and All activity group their rows under Today, Yesterday or the date and show the time each was recorded; Home's recent activity shows the type with the day and time. Notices' commune headings share the new day heading style. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
Home listed every open expense you paid for alongside your unpaid shares, late jobs and pledges, sorted only by date, and This Hub built its list another way. One rule (needsYou) now builds both: payments someone says they have sent, which only the bill payer can confirm, then your unpaid shares, your tasks that are late or due today, then your pledges due, the earliest date first within each. What others owe you, and payments you said you sent, sit in a quieter Waiting on others group with nothing to do. The counts on This Hub include only what needs you. Home reads other communes' pending payment reports from their summaries (0039). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
Settle, expenses, templates, recurring bills, pledges, announcements, notices, note and task history fell back to "Former member", "Member" or "the bill payer" for someone who had left, because they looked people up among current members only, while the snapshot keeps everyone's name (0031). One helper, personName, now names anyone the snapshot knows, adds "(left)" where it matters that they are no longer a member (who owes or is owed, shares, template participants, bill payers, pledges), and keeps the generic words only for someone the snapshot does not know. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
… reminders are sent A name with no letters now shows "?" in its avatar instead of "MC". The allowance leaves the sidebar's account line, which now shows only the role. The meter stays in account settings and on an expense its payer can nudge from, and the confirmation still shows what is left. Once a fifth of the allowance or less is left, Settle's You're owed column, the expense window and an admin's fund window say how many are left, or when the next one comes back. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
The Active and Archived filters were toolbar buttons, which the toolbar pushed apart, and both looked the same whichever was on. They now use the chip control Funds uses, side by side, with the selected one marked. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
Measured over a white stand-in photo, the label, title and buttons on Home's cards and the Hub hero dropped to between 1.6:1 and 2.7:1. The shade under each photo is now darkest where the text sits, measured up from the bottom so it follows the text, while the top of the photo is as light as before. The type labels and the Hub's buttons have their own small dark backdrop, the Home status lines and a trip's Area and Stay are a little less faded. Small text now reaches at least 4.6:1, large text 3.2:1 and the buttons 5.1:1, even over white. tests/cover-contrast.test.ts measures each line from the stylesheets. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
The sidebar's account line now shows the role alone, with the reminder allowance where reminders are sent, so the HTML reference shows "Admin" where it showed "Admin · 58 reminders left", and its test checks that. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
- infra/neon/README.md: 0039 joins the local-only range and the release steps, with what it adds and when to deploy the client. - infra/local/README.md: 0039 in the local setup order. - DESIGN-LANGUAGE.md: the contrast rule for text over cover photos, which the owner approved, activity rows with a type chip, and filter chips. - HANDOFF.md: a Start here entry for notices across communes, Needs you, activity types, former members' names, the reminder allowance and the photo shade. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Owner
Author
|
The Vercel preview for Generated by Claude Code |
EmotiveImpact
changed the base branch from
claude/app-review-navigation
to
main
October 12, 2026 02:01
EmotiveImpact
marked this pull request as ready for review
October 12, 2026 02:01
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This branch had an error being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before: the bell counted only the open commune's notices, so a reminder or payment report from another commune showed nothing, even on Home. Home's Needs you listed every open expense you paid for alongside your unpaid shares, late jobs and pledges, sorted only by date, and This Hub built its list another way. Activity rows read "Inspection: Created" without saying whether it was a task, event, note or expense, and with no time of day. Screens showing someone who had left wrote "Former member" or "the bill payer", although the snapshot keeps their name. The sidebar carried the reminder allowance under your name, a blank name showed "MC" in its avatar, the saved splits filters sat apart without showing which was selected, and text over a bright commune photo dropped to between 1.6:1 and 2.7:1.
After: the bell adds up every commune's unread notices on every screen, and Notices lists the open commune first, then each other commune under its name. Needs you puts what only you can do first (payments someone says they sent, your unpaid shares, your late tasks and your pledges due) and keeps what others owe you in a quieter "Waiting on others" group, built by one rule on Home and This Hub. Activity rows name the record's type with a coloured chip, show the time and are grouped by day. Former members are named, with "(left)" where it matters. The reminder allowance shows where reminders are sent, a blank name shows "?", the saved splits filters match Funds' chips, and text over a white stand-in photo now measures at least 4.6:1 for small text.
This is the last of three pull requests for batch 5 of the app review fixes. It is built on #31 (getting around), so review that first; the diff here shows only this part.
What changed, by finding
my_unread_notices()returns the unread notices of every commune the caller belongs to, with the sender's name. The bell adds up every commune's count on every screen. Notices lists the open commune first, then each other commune with unread notices under its name, fetched only when Notices opens; a failed fetch offers Try again. Opening another commune's notice marks it read, refreshes that commune and switches to it before opening the record.needsYou()inapps/web/src/live/model.ts, builds Needs you on Home and This Hub: payments someone says they have sent, which only the bill payer can confirm, then your unpaid shares (marked overdue when late), your tasks that are late or due today, then your pledges due, the earliest first within each. What others owe you, and payments you said you sent, sit in a quieter "Waiting on others" group. Home shows up to 6 actions and 4 waiting rows with "And N more", This Hub's count covers actions only, and Home lists pending payment reports for communes that aren't open (0039).personName, names anyone the snapshot knows and adds "(left)" where it matters that they are no longer a member: Settle, the expense, pay and breakdown windows, Funds, Recurring, saved splits, Members, announcements, Notices, and note and task history. "Former member" remains only for someone the snapshot does not know.Not in this batch: Home's Recent activity is typed but not grouped by day, and the grey text on Hub panels (
--hub-muted, about 4.2:1) stays as it is for now.Releasing
Nothing hosted was touched. Migration 0039 is local only and follows 0038. Everything in it adds to what is there, so the previous client keeps working. Apply it and refresh the Data API schema cache before deploying this client, which calls
my_unread_noticeswhen another commune has unread notices.Needs the owner
apps/web/reference/design-language/index.html) now shows "Admin" alone in the account line, where it showed "Admin · 58 reminders left", to match the sidebar. Say if you would rather the reference stayed as it was.How it was checked
On the final branch:
notices-across-communes(8),needs-you(4),activity-log(5),former-members(6),reminder-allowance(5) andcover-contrast(14). The contrast test fails against the old stylesheets.run-local.sh, including the newnotices_and_activity.sql; 2 more need a Neon branch.notices-and-activity.mjs, and the reminder worker's unit tests and 4 database suites.In Chromium, on a disposable database with three communes: the bell read "Notifications, 4 unread" from Home, and Notices listed 14 Park Street first, then Studio East and Lisbon long weekend under their names. This Hub's Needs you put Jordan's reported payment first, then the shares owed, with Rent, Electricity and the sofa under Waiting on others. An older expense named "Lena Fischer (left)". Covers were compared over bright and dark photos before and after. No page errors.
How
needsYou()works only from the snapshot and the commune summaries, so Home and This Hub share it and its tests. 0039 changes the shared database functions in place with checked anchors, so it fails loudly instead of applying if one of them has changed underneath it. The contrast test reads the shade and colour values from the stylesheets and lays them over white, so a later style change that drops below the rule fails CI.docs/HANDOFF.md,docs/DESIGN-LANGUAGE.md,infra/neon/README.mdandinfra/local/README.mdrecord the changes and migration 0039.🤖 Generated with Claude Code
https://claude.ai/code/session_01A6P7aTcMBccooYYr4xYnVS
Generated by Claude Code