The Home page an agent opens every morning, on its second pass. The first version got the order right: who is waiting on me, what am I doing next, what else could I take. What it got wrong was the top of the page. The greeting said nothing, the date line said nothing the strip now says better, and the four figures in the rail repeated the numerals already sitting in the section rails a few inches to their left. This pass makes the top of the page earn its place and gives the sheet a pulse without giving it a carousel.
The structure held. The redundancy did not.
The same sheet, with a top that reads the day and a rail that only says what the sheet does not.
?date=.
All asked for after the first deploy, on 2026-09-05 (commits e15878d, 5373b32, 26c6bfe, c9de832 and 87a619a).
supabase/notifications-migration.sql, to be run once in the SQL editor) adds the table to the realtime publication, adds a link column so each notice knows its page, rewrites the trigger copy in the app's words ("New application", "You're booked"), and adds the notice applicants never got when they were passed over. The panel itself: rows are buttons that mark themselves read and open the page, unread rows sit first under New, dismiss appears on hover and stays on touch, and the Close button is gone.| File | What changed |
|---|---|
| src/pages/Index.tsx | The lede, the strip in the rail, the rebuilt figures, the spotlight with the diary of the rest beneath it, entrance motion, miles on nearby rows. |
| src/components/WeekStrip.tsx | New. Seven days, a mark per job, today on the amber disc, every day a button. |
| src/components/NextUpCard.tsx | New. The spotlight card, the "Starts in 18 h 40 min" wording, and the cursor-driven reveal of the second photo. |
| src/components/NotificationsPopover.tsx | Rewritten: rows are buttons that open their page, New and Earlier groups, dismiss on hover, no footer. |
| src/lib/notifications.ts | New. Where a notice goes (its link, else a page by type) and the short relative time. |
| src/hooks/useNotifications.ts, src/components/AppHeader.tsx, src/components/AppSidebar.tsx | Polling once a minute; the bell's dot only with unread; the phone menu's search box removed. |
| supabase/notifications-migration.sql | New, not yet run: link column, trigger copy, the rejection notice, realtime publication. |
| src/components/ApplicationsDialog.tsx | Rewritten in the booked-job dialog's order: facts strip, hairline applicant list, asking figure per row, relative dates, skeleton loading, no badges. |
| src/demo/demo-data.ts | The demo's next job gains a second photo so the reveal has something to show. |
| src/hooks/useNow.ts | New. The clock behind the countdown, once a minute. |
| src/components/AgendaList.tsx | Optional per-day ids so the strip can scroll to a day. |
| src/components/ApplicantsWaiting.tsx | Dates within three days read in ink, "in 2 days" past tomorrow. |
| src/components/OpenWorkList.tsx | Miles under the pay; the badge row is no longer inside a paragraph. |
| src/components/SummaryFigures.tsx | A figure can take a grid placement class. |
| src/pages/Calendar.tsx | Opens on ?date=YYYY-MM-DD. |
| src/index.css | The drift keyframes, held still under reduced motion. |