The honest build map

Where are we now?

A workspace that grows with a busier life.

e-f brings tasks, projects, calendars, capture and time tracking into a personal workspace. Custom views, appearance and immersive scenes are built locally, alongside client records, communication preferences and Zola drafts grounded in checked facts. Exact CRM contacts hold conflicting mail cleanup; selected emails can become saved, quoted reviews and editable replies. Meeting requests now have calendar choices, saved availability preferences and locally tested invitation review, scoped Zoom linking, confirmed calendar booking and provider recovery receipts. Synthetic database/provider and browser checks pass. The review, meeting-plan and booking migrations, Zoom setup, deployment and a signed-in full-process pilot remain. Pasted meeting notes now also have locally checked source passages, reviewed ownership and dates, durable task receipts and duplicate prevention. The notes migration and signed-in pilot remain. Reviewed meeting decisions, open questions and waiting items now feed client updates locally, with separate approval, source edits and durable receipts. The additional facts migration and signed-in verification remain. Private pages now use compact headers, an ordered customizable icon menu and a locally built Control panel. Dashboard tabs group actions above the canvas, calendar views share a chosen shortlist of filters, and scene images can be uploaded. These interface changes have local automated and synthetic browser evidence; deployment and signed-in device checks remain. Full threads, connected transcripts, dependable reminders, learned voice and habits, scheduled preparation and Apple companions remain ahead. Shared ownership and native sign-in still precede native writes.

Last updated

Whole journey

39of 85 milestones landed

Proven complete46%
39 landed19 in motion8 up next19 later

The useful short version

Now, next, not forgotten

Active work comes first. “Next” means queued—not secretly abandoned.

In motionEveryday gravity

Apple Music and local MP3 library

Focus audio now has three sources behind one volume slider: the original browser-made noise, Streams — internet-radio and other audio you add yourself by name and https address (there is deliberately no built-in station list: a SomaFM terms check showed curated lists need the provider's written permission) — and Library — your own music played straight off a self-hosted Subsonic-compatible server like Navidrome, with the password stored encrypted and the audio proxied so seeking works without the password ever reaching the browser. Library tracks report to last.fm under its own play-length rules, with failures that can never interrupt the music; streams carry no track metadata and say so. A security pass has since hardened the plumbing: the server address must be a public internet host (private, loopback, and link-local addresses are refused and re-checked through DNS before every fetch), and the last.fm connect flow binds its callback to a short-lived cookie so a cross-site page can't link the account. The pieces are built and unit-verified: what remains is proving live audio against a real connected Navidrome, and Apple Music stays a documented plan until a real MusicKit developer token exists. A Synamp integration is now planned around a proven playback contract; the embedded-player issue remains open until that connection works end to end.

In motionThe visual universe

Views for each part of your day

Create Morning, Client work, Deep focus or Evening from a starting layout, or add a blank dashboard. Ordered tabs now sit directly above the canvas with a small add control and a menu on each tab. Rename, widget creation, layout editing, appearance, schedules, location rules, scene design, duplication and deletion are available there; right-click and keyboard canvas menus provide the relevant actions too. The misplaced bottom add-widget bar and hero jump counters are removed. Each dashboard retains independent appearance, scene, widgets and optional local schedules. Model and synthetic browser checks cover creation, rename, duplication, pointer and keyboard ordering, targeted widget additions and reload. Widget scrolling still passes the earlier local wheel checks. Deployment, signed-in behavior and native momentum/touch checks remain.

In motionThe visual universe

Navigation that belongs to the whole workspace

Private pages share one workspace provider and a persistent icon menu. The logo goes to the dashboard. Choose and order top-bar pages through Customize menu or drag selected links; More lists the remaining pages without duplicates and opens the same customization dialog. Preferences survive the owned snapshot and reload. Compact headers replace introductory copy, repeated titles, dashboard backlinks and header add-widget buttons across the private sections. A small top-right save indicator distinguishes online, local, pending and failed saves. Contract and synthetic browser checks cover selection, ordering, reload, phone layout and recovery from full local storage. Deployment, signed-in navigation and native device checks remain.

In motionThe visual universe

A dashboard glance and a focused workspace for each feature

A shared catalog connects current widgets with focused private pages. Calendar now combines month, week, three-day, day and list views; older calendar-list links open the canonical Calendar page. Calendar settings choose the shortlist shown as compact toggles, and every calendar view uses the same enabled choices. Hidden calendars stay out of the views without deleting their cached events. The separate task, project and calendar date horizon is named Agenda and supports multiple project filters; Capture inbox is now To sort. Mail, Time and Findings keep glances based on existing records with loading and incomplete state visible. Fresh model and synthetic browser checks cover filters, date ranges, cached records, aliases, preference reload and compact headers. The existing provider event window, richer dedicated editors, deployment and signed-in touch verification remain.

In motionThe visual universe

Keep the detail you just checked beside your work

Built locally: the Control panel stays available across private pages with up to eight copies of Tasks, Agenda, Calendar list, Clients, Lists, Notes and Time. Its header is compact, and a full-height edge supports pointer and keyboard resizing with a saved width. Per-copy settings, heights and ordering remain independent of dashboard copies. Desktop opening floats over the page; pinning creates a column, navigation retains the pin, and closing clears it so reopening starts as an overlay. Phones use a dismissible modal with focus return. Snapshot, desktop and phone browser checks cover sizing, pinning, navigation, close/reopen and compact controls. Deployment, signed-in cross-device behavior, native touch/accessibility checks and richer system controls remain.

In motionThe visual universe

An immersive scene you can make your own

The scene editor opens through a dashboard menu and previews atmosphere, background images, depth, motion and quiet mode before Save or Cancel. PNG, JPEG and WebP files can now be uploaded; the browser resizes them and saves a bounded raster image with that dashboard. HTTPS image links still work. Upload results stay with the dashboard being edited, and cancelling or superseding an upload prevents it from replacing a later choice. Model checks cover saved image validation and duplication; a browser upload and reload verify the actual image flow. Delayed upload races still need dedicated browser coverage. The exposed Customize scene and Pause switching buttons have been removed from the main dashboard while a future focus control is planned. Synamp playback integration, bringing remaining design controls together, deployment and signed-in touch checks remain.

Just landed

Recent checkpoints

The technical work, translated into why it matters.

  1. A quieter interface puts the work closer to the top

    Private page headers now show the page name and useful actions without introductory copy or add-to-dashboard buttons. The logo returns to the dashboard; selected icon links can be ordered and the More menu lists the remaining pages once. The former reference desk is now the Control panel with a full-height resize edge. Dashboard tabs sit above the canvas with an add control, drag and keyboard ordering, and per-dashboard menus for widgets, layout, settings, schedules, scene design, duplication and deletion. Right-click and keyboard canvas menus replace the misplaced bottom add-widget bar. Calendar combines month, week, three-day, day and list views with compact shared toggles for only the calendars chosen in settings; Agenda names the separate dates and follow-ups view, now with multiple project filters. Uploaded raster scene images are resized, saved and restored, while a full browser cache reports a failed local save without losing the previous copy. Fresh model checks and synthetic browser checks cover filtering, hidden-calendar cache retention, upload/reload, menus, tab ordering, pinning, project filters and compact private pages at phone width. The existing calendar provider fetch window, deployment, signed-in sync and native touch checks remain.

  2. Scrolling over dashboard widgets reaches the page again

    Widget bodies now allow vertical scrolling to continue onto the dashboard when they have no overflowing content or reach either edge. Longer widgets retain their own scrolling; horizontal containment, separate drawer/popover boundaries and dedicated drag handles remain. Local browser wheel checks reproduce the former trap and verify internal scrolling plus page movement at both edges and over a non-overflowing widget. Narrow-layout checks preserve native panning and zoom permissions. Native trackpad momentum, phone/tablet touch gestures, deployment and signed-in device checks remain to verify.

  3. A quick reference glance opens without moving the page

    The local reference desk now floats over the current page by default. Pin open explicitly creates a column beside the work; Unpin restores the full page while keeping the desk open. Closing clears the pin, so reopening starts as a glance. Desktop navigation keeps an active pin, and resizing a pinned desk moves the shared edge. Phones retain their modal overlay without a pin control. Local browser checks cover page dimensions, pinning, unpinning, close/reopen, navigation and retained wording. Deployment, signed-in sync and native touch verification remain.

  4. A shared workspace shell and a reference desk take shape locally

    Work, Capture and Personal sections now have persistent navigation across private pages. Every existing widget has a focused destination, and each section can add its matching dashboard widget; Mail, Time and Findings gain honest glances. A customizable reference desk keeps dates, tasks and notes beside the active work, with separate copies, filters, card heights, ordering and a saved width. The desktop page gives it room; narrow layouts use a dismissible overlay. Fresh model and owned snapshot checks cover old layouts, malformed preferences and isolation. Synthetic browser checks exercise working controls and navigation. Deployment, signed-in sync, real-device accessibility and the upcoming full-process pilot remain. Two focused sections with retained editor drafts are planned next; no automatic mail delivery, live provider writes or native app is claimed shipped.

  5. Checked meeting facts reach client updates locally

    The meeting review now has a separate project-fact review that works before or after task confirmation. Suggested decisions and questions start unselected; a follow-up can be reviewed as a waiting dependency or a manual fact can be added. Literal passages stay attached while the user chooses wording, meaning and any exact date. Saving a review changes no update sources. Explicit approval saves an owned receipt and makes selected facts available to manual updates, Zola writing and new client email replies. Agreed decisions stay in their reporting window; unresolved questions and waiting items carry forward until resolved or removed. Later edits flag existing drafts without rewriting their saved wording. Revision checks, receipt reuse and authoritative hydration prevent stale snapshots and repeat confirmations from restoring removed sources. Fresh local SQL/route checks cover ownership, context changes, concurrent approval, failures, lost responses and selected writing context. Synthetic desktop and narrow browser checks cover approval, receipts, updates and conflict recovery. The additional migration, deployment, a signed-in full-process pilot, real wording quality and native touch remain; no live mail is sent or new provider access added.

  6. Pasted meeting notes get reviewed follow-ups locally

    The client workspace now reserves an owned review before asking Zola to suggest actions, decisions and questions from pasted notes. Every suggestion needs a literal source passage; mentioned owners and relative timing stay words. Personal task ownership starts unchecked and exact dates stay unset until chosen. Saving a review creates no tasks. Explicit confirmation atomically creates selected tasks in Next, a preserved source copy and durable receipts. Exact source reimports reuse the review, including after task deletion. Revision conflicts preserve unsaved browser wording, and late AI results cannot replace recovered manual choices. Current client/project checks, SQL rollback, account isolation, concurrent imports/confirmations, provider HTTP, timeouts and stale-snapshot hydration have local evidence. Synthetic desktop checks cover editing, approval, receipts and reload; a narrow document checks source review and cross-tab conflicts without horizontal overflow. The new notes migration, deployment, signed-in pilot, real wording quality and native touch remain. Connected transcripts and reviewed decisions/waiting items as update sources are still ahead.

  7. Reviewed invitations get a local booking and recovery flow

    Saved client email reviews now show an editable meeting invitation, selected client attendees, the primary Google organizer and the Zoom host. Booking requires confirmation that the client agreed to the exact time and approval to send the shown invitations. The server checks current contacts and preferences, calendar permissions and fresh buffered availability. Account-owned operations save intent before each provider write and keep Zoom's result before requesting calendar invitations. Unknown results require read-based reconciliation; checking provider results never sends an invitation. Local SQL/route and synthetic HTTP checks cover ownership, concurrent confirmations, conflicts, OAuth state and encrypted token refresh, lost responses, refusals and partial recovery. Synthetic browser checks cover explicit confirmations, receipt reload, independent reply edits and narrow review layout. The three migrations, HTTPS Zoom setup, deployment, real OAuth/calendar/invitation checks and native touch remain. Provider acceptance does not establish inbox delivery. Rescheduling, cancellation and meeting-note follow-ups remain ahead.

  8. Reviewed meeting requests get calendar choices locally

    A saved client email review now offers dated calendar options with explicit time zones. Per-review preferences include working hours, weekdays, duration, buffers, advance notice, skipped dates and selected calendars; new reviews start with the current client's meeting length. Google free/busy reads reveal no event titles. Partial or failed availability stays unknown, and a preferred time is checked again before saving. Its proposed wording can be added to the reply while preserving manual edits. Account-scoped SQL and revision checks prevent cross-account reads and late checks overwriting newer choices. Local route/database and provider HTTP checks plus synthetic desktop and narrow-document checks cover saved plans, reload, busy-time conflicts, calendar errors and daylight-saving boundaries. The review and meeting-plan migrations, deployment, a signed-in process pilot and controlled real-calendar/native checks remain. These observations do not hold a time, send mail, create Zoom meetings or deliver invitations; confirmed booking is next.

  9. A client email becomes a saved space to think and reply locally

    An explicit Prepare with Zola action now checks the original mailbox source again, requires a chosen matched client/contact and linked project, and uses only checked project facts with saved writing preferences. Request suggestions carry literal quotes from the reading copy; relative dates remain unconfirmed phrases. The original thought, source copy, context, generation result and usage estimate live in an owned review record created before the AI call. Duplicate retries reuse that record, and manual edits use revisions so an older tab cannot overwrite newer wording. Missing or invalid AI output preserves a manual draft. Local checks exercise the actual migration and SQL, account isolation, stale context, duplicate requests, provider HTTP and timeouts, escaped rendering, and synthetic browser editing, reload, conflicts, shared-client choices and interrupted-response recovery. A 390-pixel document fits without horizontal overflow. The new table still needs applying to the configured database; deployment, a signed-in full-process pilot, real-provider wording quality and native touch checks remain. The subsequent local meeting layer adds availability proposals and saved preferred times; sending, Zoom booking and follow-up tasks are still ahead.

  10. Selected client messages open a text reading copy locally

    An explicit Open message action now checks the signed-in owner's enabled mail account, current saved CRM contacts, folder identity and exact message location before reading one inline text part. Plain text is preferred; HTML-only content becomes inert text with paragraphs and quotes. Attachments and remote images are omitted, read status stays unchanged, and oversized or unsupported content has an explicit notice. Changed folder identities, moved or vanished messages, removed contacts and failures do not return a misleading body. Local checks cover MIME decoding, size and time limits, actual read-only IMAP command construction, account isolation and escaped rendering. Synthetic desktop and narrow browser checks cover opening, closing, retry, keyboard focus and selection changes. Results are temporary; no content is sent to an AI provider. Deployment, signed-in real-account reads and native touch checks remain. Durable threads and explicitly enabled source-linked Zola analysis are next layers.

  11. A first client mail attention view reads recent headers locally

    The Client mail tab manually reads recent Inbox and existing Quarantine headers from enabled accounts, matches saved exact CRM contacts, and lets a client workspace open its own filter. Each result shows its source location, unresolved matches and quoted scheduling, decision, timing or question mentions from the subject. Review needs precede subject cues without claiming urgency or dates. Coverage makes caps, missing messages and failed or unattempted sources visible. Session ownership, disabled/foreign selections, private-field exclusion, exact capped UID reads, read-only folders and stalled connections have fresh local checks. An interactive synthetic component fixture proves filtering, failure/retry, coverage, source details and narrow layout. No mail flags, cleanup state or client associations are written; results are temporary. Deployment, full signed-in interaction, controlled real-account reads and native touch checks remain. Durable threads, safe body display and Zola intent analysis are still planned.

  12. Exact CRM contact matches hold automatic junk actions locally

    Hosted sweep/backfill and the synced CLI now read an account-scoped identity projection from saved active CRM contacts, excluding private notes and project context. Exact matches hold automatic quarantine and deletion; domain-level unsubscribe choices are held when that sender group contains a client contact. Saved junk verdicts remain available for unrelated addresses and conflicts are visible in review. Shared addresses and multiple From addresses need a client/sender choice; an address match does not verify identity. Failed context or sync stops connected cleanup before a mail connection. Local engine, actual CLI and isolated route/database checks cover protection, account isolation, archived contacts, conflicts and confirmed explicit restoration. A synthetic desktop component preview checks the new notices. Deployment, signed-in interaction, phone/touch and controlled live-account checks remain; full message intake and priority suggestions are still planned.

  13. Client preferences and a first Zola writing flow work locally

    Clients now keep additional contacts and roles, goals, audience, approved context, private notes, tone/detail/channel, response windows and separate meeting/update rhythms. Projects inherit defaults or use explicit overrides. The writing flow saves the exact original thought before requesting a rewrite, supplies only the selected client/project and checked facts, and keeps questions and sources with editable wording. A live synthetic provider rewrite, reviewed save/reopen, preference retention and project overrides work in the local browser. Account-scoped route and storage checks cover private-note exclusion, stale context, foreign source keys and provider failure. Voice learning, real client review, deployment and signed-in device checks remain. Client email recognition and protection, message intake, calendar slot choices, confirmed Zoom invitations and reviewed tasks from meeting notes are now ordered follow-ups; none of those integrations is claimed shipped.

  14. Existing client tools inform the next writing and review workflows

    A source review of existing design-review and client-portal tools identified reusable workflows for client preferences, project overrides, four-hour estimate blocks, visual directions, and version-specific feedback. The next manual writing slice will help turn rough thoughts into clear explanations, updates, and decision requests tailored to an explicitly selected client. It will preserve the original thought, show sources and missing context, and keep private notes out of client copy. Estimates should use explicit project dates and editable meeting rhythms rather than silently infer a schedule from work hours. These are documented plans: no plugin features have been ported, no client content has been published, and no email has been sent. Durable client contracts still precede unattended preparation or native writes.

  15. A first client workspace turns recorded work into reviewable update drafts

    Clients now have contact details, stable personal-project links, last contact, next follow-up, and an explicit cadence. Dated records capture completed work, progress, waiting items, decisions, and milestones; archive and restore preserve history. A dashboard glance opens the client workspace, and follow-up dates plus unresolved milestones join Commitments. Manual drafts use recorded facts and deadlines in a chosen reporting window, show their source snapshots, ask about missing context, preserve wording edits through save/reload, and flag changed or resolved facts. Greeting, opening, sign-off, and format are editable separately from client facts. Focused checks cover dates, rename/deletion, project ownership, client separation, stale sources, and old snapshots; isolated storage checks prove the actual workspace routes preserve drafts and refuse anonymous access. Synthetic browser checks cover capture, preparation, editing, reload, cadence, missing context, archive/restore, dashboard integration, text export, and phone-width review without horizontal overflow. These records use the existing personal snapshot today. Authoritative client/project sync, deployment, signed-in device checks, voice examples, reminder delivery, scheduled preparation, and sending remain ahead.

  16. A first immersive scene editor, with quiet mode and switching pause

    Each dashboard now previews five atmospheres, a linked photo or artwork, and flat, soft, or layered depth. Changes are temporary until Save; Cancel restores the previous scene. Ambient motion is opt-in and respects reduced motion, while quiet mode preserves the chosen atmosphere for later. Automatic view changes can be paused until resumed, including after reload. Local tests cover old snapshots, safe image addresses, independent settings, duplication, reload, reset, and manual navigation during a pause. Browser checks cover preview, cancel, save, quiet-mode recovery, independent views, photo loading, and the phone-width panel. The existing theme, spacing, layout, and widget filters remain available. Synamp is now an explicit music-integration follow-up; a real playback bridge, local photo uploads, deployment, and signed-in touch checks remain ahead.

  17. Mail review follows confirmed actions, with older recovery and bounded sweeps

    A saved not-junk verdict now leaves mail visibly awaiting recovery until the server confirms its return to the inbox. Failed moves do not create quarantine records, partial batches keep only confirmed counts, and confirmed restores and purges reconcile the review queue across folder UID changes. Old allowed mail is recovered through a rotating quarantine scan; active review records no longer disappear during history pruning. Observed quarantine mail rebuilds a missing review record after a failed storage write without counting a new move, and missing Message-IDs cannot overwrite different mail after a UID reset. Failed inbox work keeps its date checkpoint for retry, explicit ranges preserve ordinary progress, and sweep/backfill reset UIDs after folder validity changes. Local engine checks and isolated database checks cover failures, missing message IDs, ambiguous records, account isolation, and verdict preservation. Slow network calls and unsubscribe requests obey wall-clock deadlines, and hosted work shares one invocation budget with fairer account selection and time to save results. The standard one-click unsubscribe header is now recognized and redirects no longer count as completion. Browser fixtures cover pending recovery, a failed retry, and clearing the queue after confirmation. Deployment, the ordering migration, and controlled live writes plus a recorded scheduled invocation remain; full-mode cleanup and unsubscribe authentication are still not claimed verified.

  18. A mail hygiene check finds and repairs gaps behind quiet run history

    The mail audit reproduced a sweep waiting on its own mailbox lock, batches reading messages outside the selected UID set or date window, and a backfill exceeding its message cap. Local fixes now pass regression checks using the real IMAP lock queue. Cron authentication now requires the scheduler's bearer secret and refuses spoofed headers or missing configuration. Real server connections and bounded read-only sweeps succeeded without moving, deleting, restoring, or unsubscribing mail. A new activity check distinguishes stale or missing per-account sweeps from recent results, and service failures no longer appear as an empty review queue. The configured database still needs the ordering migration; deployment, scheduler configuration, real quarantine/restore persistence, review lifecycle reconciliation, and a recorded scheduled invocation remain before unattended cleanup is called verified.

  19. A first commitments horizon, with follow-ups that stay connected to tasks

    A new Commitments panel gathers open task due dates, active project deadlines, and upcoming or ongoing calendar events, with the source shown for each date. Each instance keeps its own project filter and date window. A follow-up becomes a normal personal task in Next, and can be brought into Now, rescheduled, or completed from the horizon. Projects now expose deadline and context editing, including restoring a cleared deadline. Automated checks cover local-day boundaries, both daylight-saving transitions, ongoing and all-day events, explicit filters, invalid dates, and task-contract compatibility. Local browser checks prove capture, reload, independent settings, rescheduling, completion, project date restoration, and adding the panel to existing views. Long follow-up titles and controls stay within phone and tablet widths. The add-widget flow exposed an existing deferred-event crash; its trigger capture is corrected and both the picker and widget settings reopen successfully. Client work starting layouts retain Agenda for calendar refresh. This is locally verified groundwork: dedicated client/waiting records, notification delivery, deployment, and signed-in sync/touch proof remain.

  20. Views for a busier day, and a concrete client-work and Apple plan

    Morning, Client work, Deep focus, and Evening now have starting layouts that show the work already in the account. Each view can have its own theme, accent, and spacing, with an optional editable local-time schedule. Saved digest schedules now say clearly that notification delivery is still planned. The next work is written down in order: immersive scene controls, client commitments and important dates, reliable reminders, source-linked drafts in the user's voice, scheduled draft preparation, and iPhone, Apple Watch, and widget companions. Automated checks and local browser checks cover creating views, independent settings, duplication, reload, shared task visibility, schedules, and phone-width panels. A regression check also protects custom layouts after the original dashboard is removed. Deployment and signed-in touch checks remain before the new view flow is complete. No client email automation, learning engine, or native app is claimed as shipped.

  21. Three proofs live on the deployed site — and two platform bugs found and fixed on the way

    The migrations ran in production, the new build shipped, and a repeatable probe (npm run verify:deployed-sync) signed a throwaway session into the real site and exercised the genuine routes: a list was created, renamed, conflict-checked, and deleted with its rows, with the compatibility snapshot and the change feed agreeing at every step; a session that had slept through several changes resumed from its saved cursor and saw exactly what happened after it; and a second signed-in session was refused a new timer while the first was running, watched it on refresh, and stopped it from its side. Three items move to complete. Getting there surfaced two hosting-platform behaviours that would have bitten every outbox, not just lists: a conditional create's success comes back as 304 with the body stripped, and a successful guarded delete without an ETag comes back as 412 — both after the write already ran. The client now learns the revision from the surviving ETag, successful deletes echo the tag they satisfied, and deleting a whole account no longer trips the feed trigger. The probe cleans up every record it creates, feed entries included.

  22. Lists become durable records with their own shield

    The lists people design themselves — and every row in them — stopped riding along in the workspace snapshot and became real database records. Each list and row carries a revision, so a save from a stale device is refused and both versions are shown for a person to choose, exactly as tasks, captures, and calendar events already behave. Deleting a list removes its rows in the same statement, edits made offline queue safely and replay, and sharing or unsharing a list with the Home space moves its records across the boundary deliberately. Every change also lands in the durable catch-up feed that sleeping devices will follow. The work is proven against an isolated database covering conflicts, account boundaries, and feed ordering; applying the migration in production and checking it from the deployed workspace remain.

  23. Real hands, real iPad, real second account — three items proven

    Three in-progress items were sitting on a single remaining step each, and all three checks happened for real this cycle. The free-move dashboard and per-widget shaping both held up under actual touch on an iPad, not just local browser checks — resize handles, drag, and the add-widget picker all behave. Separately, two real signed-in accounts exercised shared-item conflict protection live in production: stale saves were refused and both versions surfaced correctly when the same item changed in two places at once. All three move to complete.

  24. A dashboard you can shape per widget, and mail in the order it arrived

    This cycle opens two streams of work. On the dashboard, each widget gains a shape of its own: layout options beyond one rectangle per view, per-widget filters so a panel can show only the project or lane it is for, and the freedom to keep more than one copy of a widget — a second Today for home and a second for work — instead of one fixed instance per view. Narrow widgets now wrap long titles instead of spilling into the next column, and the add-widget picker no longer hides a widget that is already on the view. In mail hygiene, the sweep reads newest-first by default and can check a chosen date range, so the senders waiting for a verdict are the ones you actually care about rather than an arbitrary oldest-first pile.

  25. Narrow widgets make room instead of talking over themselves

    The dashboard shell no longer creates a page-wide horizontal scrollbar at phone and tablet widths. Focus audio moves its play control and dense option groups onto new rows based on the widget’s own width, while agenda titles, locations, calendar names, and supporting labels can wrap rather than overlap or disappear behind ellipses. Regression checks cover the wrapping contract, and local browser checks at 768px and 480px confirm the page and controls stay inside the viewport.

  26. Sleeping devices get a durable trail to follow

    A new signed-in cursor endpoint now lists which personal tasks, captures, and events changed, including delete tombstones, without putting the private documents themselves in the feed. Database triggers append that metadata in the same transaction as each record change, and isolated Postgres checks cover ordered pagination, account boundaries, deletion, and rollback. The additive production migration and a deployed reconnect check remain before this is complete.

  27. Account boundaries pass against the live database

    The automated route audit is now backed by a production-database proof: two temporary accounts could read their own records but not each other’s tasks, captures, events, or workspace; a non-member could not reach shared data; membership opened only the shared snapshot; and stale writes were refused while current writes succeeded. The probe also confirmed that all temporary records are removed after the run.

  28. Task time reaches the signed-in production workspace

    The personal time ledger migration is now applied in production and the September 9 build is live on e-f.online. A real signed-in task started and stopped from the production workspace, and the stopped interval was verified in the production ledger; the deployed route still refuses signed-out access and Vercel reported no errors during the check. A second signed-in device still needs to prove that the one-running-timer rule and refresh behavior hold across devices before this milestone is called complete.

  29. Task time becomes a report you can export

    Tasks now have a Track time button, with one running timer per account and a timer bar that stays available across workspace pages. After four hours it asks whether you are still working; you can set the real stop time before saving a forgotten session. The new Time report groups stopped sessions by project, clips time to your chosen dates, and exports CSV. Local browser checks cover start, reload, review, reporting and export, and isolated Postgres tests cover concurrent starts, retries and account isolation. The separate personal time ledger still needs its database migration and a signed-in production check before this is complete.

  30. Shared edits gain conflict protection

    Shared saves now check the version a device read before replacing anything. Edits to different records combine automatically; competing versions of the same record stay visible until someone chooses, including a deletion versus an edit. Pending drafts survive reload, saves run one at a time, and reconnecting or returning to the page checks for newer shared work. Local Postgres tests prove stale writes are refused, while two browser fixtures prove the comparison, reload recovery, choice, and catch-up flow. Deployment and a check with two real signed-in accounts remain before this is called complete.

  31. A fresh dashboard starts with room for every widget

    New workspaces now receive widget positions before their first render, so their panels no longer pile up in the top-left corner until a layout edit or reload. Older saved widths and columns still migrate correctly. Regression tests cover the starting layout and legacy settings; a local browser check found no overlapping visible widgets on first load, after reload, or at tablet width. Actual iPad touch verification remains open for the broader free-move layout.

  32. Free-move resizing stops collapsing on the first drag

    Resizing now starts from the widget’s original size and follows how far you drag, so grabbing an edge or corner no longer suddenly shrinks it. Scrolling is included in the calculation, a second pointer cannot take over, and cancelling or leaving the dashboard cleans up the gesture. Regression tests reproduce the old jump and pass with the fix; local browser checks cover all three handles at desktop and tablet widths. The broader layout work stays open: a fresh local workspace showed overlapping starting widgets, and a real iPad touch check is still needed.

  33. Settings folds down to the part you need

    The settings sheet no longer opens as one very long document. Appearance, theme, dopamine break, account connections, editing, and widget visibility are native collapsible sections with short descriptions, and links that open settings still expand the right destination automatically. Account details take less room too: sync is one quiet status row, Google access can fold away, duplicate scope labels are removed, and large calendar collections sit in a collapsed multi-column grid instead of a full-width card for every calendar.

  34. Text capture can tell whose inbox a phone belongs to

    The household SMS number, production credentials, and inbound webhook are now in place, and the app no longer funnels every text into one globally configured account. Each signed-in person can link their own mobile number, then prove possession by texting the exact short-lived LINK message shown on screen; normal thoughts are accepted only after that step. Verification codes are hashed, expire after fifteen minutes, and are consumed rather than filed as thoughts. The first production account has reached the pending-link stage with Twilio and the app configured, but no phone has completed verification or produced a capture yet. The settings checker now refreshes quietly instead of making the panel flash every four seconds. Twilio describes the remaining A2P registration as a requirement for sending, not this receive-only path; a verified real text into each account is the remaining proof before this can be called complete.

  35. Security pass over the change set, fixes applied

    A security review of the recent work, with its findings fixed: a saved Subsonic server address must now be a public internet host — loopback, private, and link-local addresses (including the cloud metadata service), localhost, and dotless LAN names are refused, and hostnames are resolved and re-checked before every server call, with upstream redirects refused rather than followed. The last.fm connect flow now plants a short-lived HttpOnly cookie that its callback demands before exchanging any token, so a cross-site page can no longer link someone's e-f account to a stranger's last.fm. Smaller catches from the same review: an invalid focus-audio source is now actually stripped from saved snapshots, IMAP connection errors also redact URL-encoded and case-mangled credentials, and two docs now describe what the code really does (transient unsubscribe states, the SMS webhook's replay protection and dedup trade-off).

  36. Focus audio learns to play real music — streams, your own server, last.fm

    The Focus widget grew a source picker alongside the noise generator: Streams plays internet-radio and other audio you add yourself by https address — an early built-in station list was removed the same day it shipped, after a terms check found SomaFM does not permit third-party clients or embedded streams, so the widget now carries only streams you add and vouch for — and it stops itself loudly when a stream dies instead of playing silent dead air. Library connects to a self-hosted Subsonic-compatible server (Navidrome-ready) — credentials are proven against the server before saving, sealed with AES-256-GCM, and the audio streams through e-f so seeking works while the password stays in the database. Library tracks scrobble to last.fm under its 50%-or-4-minute rules with a fire-and-forget client that can never interrupt playback. Only one sound plays at a time across noise, streams, and library, sharing one volume. Apple Music remains a written plan, not a promise, until a real MusicKit developer token exists; live audio against a real connected Navidrome is the remaining verification.

  37. A wider wardrobe: three new themes and eight accents

    The workspace can finally go light: Paper is a calm daylight theme built on warm paper tones rather than white glare, and Moss and Plum join the dark side of the wardrobe. On top of any theme, a new accent picker recolors buttons, highlights, and active edges — eight curated swatches, each carrying its own dark and light variant plus a matching ink so contrast holds everywhere, verified by tests that check every accent against every theme's real surfaces. The theme chips in settings, the type system, and the stylesheet now read from one shared catalog, and the invalid pre-hydration default theme that could render the wrong look has been corrected.

  38. Break streams you can edit without JSON

    The dopamine break's image sources now have a visual editor: every animal gets its own section where a source is picked by kind — a template URL with a live size preview, a list of direct images, or an album page that resolves when you save — with add, reorder, and remove controls and a small preview that admits when a picture doesn't load. Suggested starting points cover the animals that had none. Anyone who preferred the raw JSON keeps it behind an Advanced panel that stays in step with the form.

  39. The unsubscribe loop closes

    Approving or declining an unsubscribe now happens right where the mail is — on each quarantined message and on every sender in the ledger — and the engine records the attempt itself: requested while the one-click is in flight, completed or failed once the sender answers, with the last attempt time shown on the sender. Each mail account gains a connection test that proves the sign-in and lists the folders before anything is swept, and Run now reports classified, quarantined, purged, and unsubscribe counts per account instead of one quiet line. Checking it all against the live mail servers is still the step before the first real unsubscribes go out.

  40. Mail hygiene moves into the app

    Mail accounts can now be added in a settings screen — passwords sealed with AES-256-GCM before they touch the database — so the junk filter runs hosted on a daily schedule for anyone with an account, no local setup. The engine runs in serverless-sized passes that resume where the last one stopped, and the same verdicts-always-win rules govern both the hosted runner and the local command-line path.

  41. Mail hygiene engine and training screen

    The mail work opens with junk, not composing: a nightly engine connects to any IMAP account, sorts bulk mail from receipts and renewals using rules that a person's verdicts always outrank, and holds suspects in a quarantine folder before anything is deleted. One-click unsubscribes go out only to senders approved once in the new /app/mail screen, real spam is never unsubscribed at all, and a resumable backlog mode clears years of old mail in batches a slow server can survive. Live-account verification is next.

  42. A way out of every task

    Every task card now carries Focus and Move, plus one slot for the destination specific to that task — open the brief, hand it to Zola. Zola proposes that step when a thought already says where it goes, drops anything that looks invented rather than guessing, and marks her suggestion as a suggestion. Setting it by hand lives in the edit panel.

  43. Where voice capture is going

    Transcription will live on the device itself in the phone and Mac apps — nothing sent away, nothing metered, nothing to keep running. In a browser it stays limited by what that browser allows, and e-f now says which ones can't do it at all rather than failing quietly.

  44. Voice capture tells you what it is doing

    Recording waits through a pause instead of stopping the moment you go quiet, a meter shows that sound is actually arriving, and stopping tells you how many words were caught rather than leaving you to guess.

  45. Voice capture stops interrupting you

    Recording used to end by itself after a few seconds of quiet, because that is what browsers do. It now keeps listening through a pause and only stops when you say so. Choosing which microphone is still not possible in a browser; e-f now says so plainly instead of leaving you hunting for a setting that does not exist.

  46. Lists you design yourself

    Make a list of anything — books, packing, films — and choose what it records: text, one-of options, tags, dates, numbers, or a link to a task. Every list lives in one place.

  47. Somewhere to put what we find

    Bugs and Ideas are built-in shared lists with their own page, so anything that misbehaves or any wish either of us has gets written down in seconds instead of forgotten.

  48. Tasks can be rearranged and edited by hand

    Drag a task anywhere, on a touchscreen as much as a laptop, or move it with the arrow keys. Everything about a task is editable in one visible place, and a wrong move can be undone.

  49. Tasks and inbox thoughts stopped overwriting each other

    Every personal record now carries a revision, so a phone that was offline cannot silently replace a newer edit made on a laptop.

  50. A conflict now asks instead of guessing

    When two versions collide, both stay on screen — quietly, without a popup — until a person picks one. Neither version is thrown away first.

  51. One account cannot reach another, and it is checked automatically

    Every data route is audited on each change for a missing sign-in check or an unscoped query, with a separate proof that runs against the real database.

  52. A public, plain-English roadmap

    This page now turns the technical build into an honest visual journey and updates from one checked-in source.

  53. Calendar edits gained a conflict shield

    Personal events now carry revisions so a stale phone or browser cannot silently replace a newer edit.

  54. Personal calendar events became durable records

    Twenty-two existing events were reconciled into normalized storage while the compatibility snapshot stayed intact.

  55. The public site and private workspace separated

    e-f.online is public, /app is protected, and returning signed-in people go directly to their workspace.

The full journey

Nine layers, in order

Open a layer when you want the details. The current backend layer stays open for you.

  1. Layer in motion

    Everyday gravity

    16/18

    Make e-f useful and pleasant enough to leave open all day.

    See the milestones18 total
    • A steady free-move dashboardLanded

      Widgets have grips, edge and corner resize handles, and keyboard layout controls. The first-drag resizing jump and overlapping widgets on a fresh workspace are fixed. Narrow widgets reflow their controls and wrap long labels instead of colliding or forcing the whole page sideways. Local browser checks cover resize handles, first load, reload, phone, and tablet widths; regression tests also cover scrolling, cancelled gestures, and older saved layouts. Verified by hand on an actual iPad.

    • A dashboard you can shape per widgetLanded

      Widgets stop being one fixed instance per view. Each gains layout options for what it shows — for Today, side-by-side lanes or a single stacked list — plus per-widget filters (a project or a lane) and the freedom to keep more than one copy of a widget, each with its own filters, size, and colour. The add-widget picker no longer hides a widget that is already on the view, and long task titles now wrap instead of overlapping the neighbouring column. Built, locally verified, and confirmed by hand on a real iPad.

    • Kitten breakLanded

      A real dopamine break is part of the product, not an afterthought — and its image streams are edited visually now, one section per animal with live previews, suggested sources, and an advanced JSON panel for anyone who liked the old way.

    • Offline focus soundsLanded

      Brown, pink, and white noise work without an account or subscription.

    • Capture, Today, and Now/NextLanded

      Messy input can land quickly and become a manageable next step.

    • Rearranging the day by handLanded

      Drag a task to a new position or a different lane — with a finger on a tablet as readily as a mouse — or move it with the arrow keys and hear where it landed.

    • Editing a task where you are already lookingLanded

      Title, project, due date, lane, and effort all change in one visible panel instead of hiding behind a right-click.

    • Fast dumping, bulk moves, and undoLanded

      Type a whole brain-dump without re-clicking, move a batch of tasks at once, and take back a mis-tap without hunting for it.

    • Lists you design yourselfLanded

      Create a list and choose its fields — text, one-of options, tags, dates, numbers, checkboxes, or a link to a task — then drill into any entry for the details and notes.

    • Bugs and ideas, written down togetherLanded

      Two shared lists and a page of their own, so a thing that broke or a wish either of us has takes seconds to record while we are still using the app.

    • Voice capture that waits through a pauseLanded

      Recording no longer stops itself the moment you go quiet to think. It keeps listening until you press stop, and a pause is treated as thinking rather than as something going wrong.

    • Proof that the microphone is hearing youLanded

      While recording, a small meter shows sound arriving and says so in words — including when nothing is arriving at all, which is usually a microphone chosen somewhere else rather than anything wrong with e-f. Stopping now says how many words were caught and what to do with them.

    • Saying when a browser simply can'tLanded

      Brave deliberately leaves out the service that turns speech into text, but still looks like it supports it — so recording appeared to work and silently produced nothing. e-f now checks for this and says so before you press record, instead of letting you hunt through microphone settings that were never the problem.

    • Choosing which microphoneUp next

      The browser's speech recognition gives a website no say in which microphone it listens to, so for now e-f explains where to change the system default rather than offering a picker that would not work. A real choice needs a different recording engine — the same one the phone and desktop apps will need.

    • Editing a task you can actually seeLanded

      Opening a task for editing now turns it into a full-width block, with the grip, tick box and buttons moving into a header above it, instead of squeezing a whole form into a column one word wide.

    • A way out of every taskLanded

      Each task gets a button for whatever comes next — hand it back to Zola, open the thing it refers to, start focusing on it, or send it somewhere else — with Zola proposing the one that fits when she can tell, and quietly saying so when the button came from a guess.

    • A timer you can invoice fromLanded

      Track time from a task, stop it from the timer bar, and review totals per project for a chosen date range with CSV export. A four-hour check offers to keep timing or record when you actually stopped. Running time is excluded from totals, and signed-in sessions use a separate personal ledger with one active timer per account and safe retries. The ledger migration is applied, a real signed-in production start and stop succeeded, and two concurrent signed-in sessions on the deployed site proved the cross-device rule: the second session's start was refused while the first device was timing, its refresh showed the first device's running timer, and either session could stop it and see the stopped interval.

    • Apple Music and local MP3 libraryIn motion

      Focus audio now has three sources behind one volume slider: the original browser-made noise, Streams — internet-radio and other audio you add yourself by name and https address (there is deliberately no built-in station list: a SomaFM terms check showed curated lists need the provider's written permission) — and Library — your own music played straight off a self-hosted Subsonic-compatible server like Navidrome, with the password stored encrypted and the audio proxied so seeking works without the password ever reaching the browser. Library tracks report to last.fm under its own play-length rules, with failures that can never interrupt the music; streams carry no track metadata and say so. A security pass has since hardened the plumbing: the server address must be a public internet host (private, loopback, and link-local addresses are refused and re-checked through DNS before every fetch), and the last.fm connect flow binds its callback to a short-lived cookie so a cross-site page can't link the account. The pieces are built and unit-verified: what remains is proving live audio against a real connected Navidrome, and Apple Music stays a documented plan until a real MusicKit developer token exists. A Synamp integration is now planned around a proven playback contract; the embedded-player issue remains open until that connection works end to end.

  2. Layer in motion

    The visual universe

    3/12

    Push the design further without making a noisy brain work harder.

    See the milestones12 total
    • Views for each part of your dayIn motion

      Create Morning, Client work, Deep focus or Evening from a starting layout, or add a blank dashboard. Ordered tabs now sit directly above the canvas with a small add control and a menu on each tab. Rename, widget creation, layout editing, appearance, schedules, location rules, scene design, duplication and deletion are available there; right-click and keyboard canvas menus provide the relevant actions too. The misplaced bottom add-widget bar and hero jump counters are removed. Each dashboard retains independent appearance, scene, widgets and optional local schedules. Model and synthetic browser checks cover creation, rename, duplication, pointer and keyboard ordering, targeted widget additions and reload. Widget scrolling still passes the earlier local wheel checks. Deployment, signed-in behavior and native momentum/touch checks remain.

    • Navigation that belongs to the whole workspaceIn motion

      Private pages share one workspace provider and a persistent icon menu. The logo goes to the dashboard. Choose and order top-bar pages through Customize menu or drag selected links; More lists the remaining pages without duplicates and opens the same customization dialog. Preferences survive the owned snapshot and reload. Compact headers replace introductory copy, repeated titles, dashboard backlinks and header add-widget buttons across the private sections. A small top-right save indicator distinguishes online, local, pending and failed saves. Contract and synthetic browser checks cover selection, ordering, reload, phone layout and recovery from full local storage. Deployment, signed-in navigation and native device checks remain.

    • A dashboard glance and a focused workspace for each featureIn motion

      A shared catalog connects current widgets with focused private pages. Calendar now combines month, week, three-day, day and list views; older calendar-list links open the canonical Calendar page. Calendar settings choose the shortlist shown as compact toggles, and every calendar view uses the same enabled choices. Hidden calendars stay out of the views without deleting their cached events. The separate task, project and calendar date horizon is named Agenda and supports multiple project filters; Capture inbox is now To sort. Mail, Time and Findings keep glances based on existing records with loading and incomplete state visible. Fresh model and synthetic browser checks cover filters, date ranges, cached records, aliases, preference reload and compact headers. The existing provider event window, richer dedicated editors, deployment and signed-in touch verification remain.

    • Keep the detail you just checked beside your workIn motion

      Built locally: the Control panel stays available across private pages with up to eight copies of Tasks, Agenda, Calendar list, Clients, Lists, Notes and Time. Its header is compact, and a full-height edge supports pointer and keyboard resizing with a saved width. Per-copy settings, heights and ordering remain independent of dashboard copies. Desktop opening floats over the page; pinning creates a column, navigation retains the pin, and closing clears it so reopening starts as an overlay. Phones use a dismissible modal with focus return. Snapshot, desktop and phone browser checks cover sizing, pinning, navigation, close/reopen and compact controls. Deployment, signed-in cross-device behavior, native touch/accessibility checks and richer system controls remain.

    • Two focused sections beside each otherUp next

      Next UI slice after the shared shell and Control panel: open two focused workspaces with a saved divider, clear focus and navigation ownership, retained drafts and selected records, and a warning before closing unsaved work. Both panes must share authoritative records through one provider. Phones need a safe switch between retained panes. This is planned; the reference drawer is the first working foundation.

    • An immersive scene you can make your ownIn motion

      The scene editor opens through a dashboard menu and previews atmosphere, background images, depth, motion and quiet mode before Save or Cancel. PNG, JPEG and WebP files can now be uploaded; the browser resizes them and saves a bounded raster image with that dashboard. HTTPS image links still work. Upload results stay with the dashboard being edited, and cancelling or superseding an upload prevents it from replacing a later choice. Model checks cover saved image validation and duplication; a browser upload and reload verify the actual image flow. Delayed upload races still need dedicated browser coverage. The exposed Customize scene and Pause switching buttons have been removed from the main dashboard while a future focus control is planned. Synamp playback integration, bringing remaining design controls together, deployment and signed-in touch checks remain.

    • Theme and daylight foundationsLanded

      The app already has shared colors, surfaces, type, density, and time-of-day shifts.

    • Visual public roadmapLanded

      A matter-of-fact progress view makes the invisible backend journey followable.

    • A wider wardrobe of themes and accentsLanded

      Paper is the first real light theme, Moss and Plum extend the dark family, and a picked accent recolors buttons and highlights while staying readable in every theme. Settings, types, and the stylesheet share one catalog, checked by tests.

    • Liquid glass and layered depthIn motion

      The dashboard now has three scene depth choices and theme-colored readable surfaces. A coherent dimensional system across the rest of the product and signed-in visual verification remain.

    • Low-stimulation and reduced-motion modesIn motion

      A quiet setting removes decorative motion and background detail while keeping the same capabilities. The local dashboard scene editor now offers this quiet setting, restores the chosen atmosphere when it is turned off, and suppresses ambient motion through the device’s reduced-motion preference. Existing larger-text controls continue to apply. Product-wide coverage, deployment, and signed-in accessibility checks remain.

    • Rare galaxy surprisesLater

      Planets, aliens, a toaster, the TARDIS, Cheez-Its, and friends drift by slowly and sparingly.

  3. Layer in motion

    Client work that stays in view

    0/12

    Keep commitments, follow-ups, and useful progress updates moving as work gets busier.

    See the milestones12 total
    • Clients, projects, and what is waitingIn motion

      A first client workspace is built locally with contacts, stable personal-project links, dated progress/waiting/decision/milestone records, last contact, next follow-up, and explicit cadence. Clients can be archived and restored. Client follow-ups and unresolved milestones join the existing task/project/calendar horizon with their source shown. Project links survive renaming and shared household work stays outside client updates. Model, isolated storage, and synthetic browser checks pass. These records still use the personal snapshot: authoritative client/project contracts, per-client horizon lenses, deployment, and signed-in sync/touch checks remain.

    • Client preferences with project overridesIn motion

      Built locally: additional contacts and roles, client goals/audience, approved tailoring context, tone/detail/channel, response windows and independent meeting/update rhythms with project overrides. Private notes stay out of writing prompts. Model, actual-route storage and synthetic browser checks cover save/reload, inheritance and retention through ordinary contact edits. These settings do not book meetings. Deployed signed-in verification and real client checks remain.

    • Messy thoughts into clear client wordingIn motion

      A local writing flow saves the original thought, then asks Zola for editable client wording using the chosen client/project and checked facts. A selected client email now has its own owned, saved review with quoted request suggestions, the chosen contact’s recipient/greeting, an editable reply and conflict-aware saves. The original thought and source remain available, duplicate preparation retries reuse the saved result, and provider failure preserves manual wording. Local SQL/provider and synthetic browser checks cover preparation, editing, reload and competing edits. Draft meaning and unsupported claims still need review. Applying the review migration, deployment, signed-in full-process/device checks, real voice examples and authoritative CRM sync remain; no email is sent.

    • Client mail recognized and kept in viewIn motion

      Built locally: exact saved CRM contacts are protected from automatic junk actions, and Client mail reads recent Inbox and Quarantine headers and selected bounded text copies without changing read status. An explicit Zola review rechecks the source, requires a matched client/contact and linked project, quotes proposed requests and saves an editable reply with the original thought and checked facts. Shared addresses require a client choice; an address match and a literal quote do not authenticate the sender or prove intent. Owned review records prevent duplicate AI calls and stale edit overwrites. Local engine, SQL/provider and synthetic browser checks cover these boundaries, recovery and narrow layout. Applying the new review migration, deployment, a signed-in full-process pilot, real-account/provider and native touch checks remain. Full threads, original authentication signals, normalized CRM writes and unattended intake remain ahead.

    • Meeting requests into calendar choices and Zoom invitationsIn motion

      Built and checked locally: quoted client meeting requests offer saved Google calendar preferences and freshly rechecked times, then an editable invitation with explicitly selected client attendees, a confirmed primary organizer and scoped Zoom host. The user confirms client agreement and approves the exact invitation before booking. Fresh buffered checks precede Zoom and calendar writes. Owned durable operations, revisions and worker leases record provider results; lost responses stay unknown until a matching read, and recovery checks never create meetings or send invitations. Only participant join links are saved. Local migration/SQL, route/provider HTTP and synthetic desktop/narrow browser checks cover ownership, consent, changed contacts/times, concurrency, OAuth, refresh and partial recovery. Applying all three new migrations, HTTPS Zoom setup, deployment, a signed-in full-process pilot, controlled real-provider checks and native touch remain. Inbox delivery, rescheduling, cancellation and meeting-note follow-ups are still ahead.

    • Meeting notes into reviewed follow-up tasksIn motion

      Built and checked locally: pasted notes become an account-owned saved review before generation. Suggested decisions, actions and questions show literal passages; owner/date mentions are quoted, every personal ownership choice starts unchecked, and calendar dates require user input. Saving has no task effects; explicit approval atomically creates chosen source-linked tasks in Next with durable receipts. Exact duplicate notes reuse their review, stale edits are blocked and later task deletion is respected. Local migration/SQL, production routes, provider HTTP, desktop editing/receipt reload and narrow cross-tab conflict checks pass. Apply the notes migration, deploy and verify the signed-in full process and real wording quality. A separate locally checked fact review now promotes approved decisions, questions and waiting items into update sources; source edits and resolution retain receipt identities. Apply the additional facts migration and verify the signed-in flow. Connected Zoom transcripts and native touch remain ahead.

    • Important dates that reach you in timeUp next

      Deliver reminders even when the dashboard is closed, with lead time, quiet hours, time zones, snooze, cancellation, and a receipt that prevents repeated alerts. Saved Digest schedules are preferences today; dependable notification delivery is not built yet.

    • An editable writing voiceIn motion

      Manual drafts have editable greeting, opening, sign-off, and bullets/paragraphs. The new local Zola writing flow also uses client tone/detail preferences and project overrides. Wording stays separate from facts and saved drafts keep their edits. Local model and browser checks pass. Learning from user-approved examples, richer phrasing controls and review of real voice samples remain ahead.

    • Progress and follow-up drafts grounded in real workIn motion

      A first manual studio prepares editable updates from dated project records, open waiting items and decisions, milestones, and explicit deadlines. Each prepared fact has a visible source snapshot; missing progress or recipient context becomes a review question. Edited drafts save/reopen and download as text, while changed facts flag older drafts. Reviewed meeting decisions, questions and waiting items now have durable owned source records, with explicit approval and literal passages. Open waiting items carry across windows; agreed choices stay dated, source edits flag saved wording, and stale snapshots cannot restore removed facts. Manual updates and new Zola writing/email reviews read these facts locally. Local model, actual-route storage, and synthetic browser checks pass. Apply the additional facts migration and verify the signed-in process. Task-derived completion history, authoritative draft sync, deployed signed-in verification, and review of real client drafts remain. No email is sent and no progress is inferred from time logs or quiet projects.

    • Updates prepared on a scheduleLater

      Prepare weekly updates or due follow-up drafts in your voice, keep one draft per reporting window, and refresh its facts before review. Draft preparation can run automatically after the manual flow is proven. Sending remains a separate confirmed action with the account and recipient visible.

    • Four-hour scope blocks with visible communication effortLater

      Build estimates from reusable simple, standard and custom feature blocks. Show meetings, preparation, updates and admin effort using explicit project dates and editable client preferences. Recalculation replaces generated overhead, while accepted scope keeps its version. Existing calculation patterns have been inspected; the e-f quote builder and recurrence checks are still planned.

    • A visual room for design explanations and feedbackLater

      Prepare design directions with prototypes, palette, typography and clear rationale beside the relevant work. Preserve feedback against stable topics and specific versions; any approval is an explicit event for the reviewed version. Begin with private preparation, then prove scoped access before adding an external client portal. Existing review-room patterns have been inspected; this interface is still planned for e-f.

  4. Layer in motion

    Zola’s first complete loop

    4/5

    Let nonlinear thoughts become safe, reviewable actions without guessing.

    See the milestones5 total
    • Tangled-thought captureLanded

      Type or dictate the all-over-the-place version first.

    • Reflect, clarify, confirmLanded

      Zola says what she understood and asks before creating anything.

    • Durable task receiptsLanded

      Retries cannot accidentally create the same task twice.

    • AuDHD speech-style testsLanded

      Restarts, pauses, corrections, asides, and trailing thoughts are part of the test set.

    • Patient live voice turn-takingUp next

      Zola waits through real pauses and keeps the thread during long, nonlinear speech.

  5. Layer landed

    Private product shell

    5/5

    Make sign-in feel normal while keeping the public story and private workspace distinct.

    See the milestones5 total
    • Public home, private /appLanded

      Visitors see the product; signed-in people go straight to their own workspace.

    • Google sign-in with Auth.js and NeonLanded

      An e-f account exists independently from whether Calendar is currently connected.

    • Account-safe browser storageLanded

      Two people using the same browser cannot inherit one another’s private workspace cache.

    • Safe prototype-data importLanded

      Older local work is offered for review instead of silently adopted or deleted.

    • Authentication decision checkpointLanded

      Keep Auth.js now; revisit Clerk when native clients need it instead of migrating accounts just for fashion.

  6. Layer in motion

    Durable, multi-device brain

    10/11

    Keep every device current without losing edits, duplicating actions, or crossing accounts.

    See the milestones11 total
    • Durable personal tasksLanded

      Tasks are real database records, not only one giant browser snapshot.

    • Durable capturesLanded

      Inbox thoughts keep their lifecycle, source, snooze state, and Zola provenance.

    • Durable personal calendar eventsLanded

      Personal and Google-projected events have their own safe, queryable records.

    • Event conflict protectionLanded

      Stale clients get a conflict instead of silently overwriting a newer calendar edit.

    • Task and capture conflict protectionLanded

      Tasks and inbox thoughts now carry the same revision shield calendar events have.

    • A humane conflict screenLanded

      Both versions stay visible and you choose; nothing is thrown away first, and it never interrupts with a popup.

    • Shared items stop overwriting each otherLanded

      Shared saves now refuse stale versions, combine independent record edits, and show both versions when the same item changed in two places. Pending drafts survive reload and failed requests, and a choice is checked again if another edit arrives before it saves. Isolated Postgres and two-browser fixtures pass, and two real signed-in accounts have proven it live in production.

    • Catch-up feed for every deviceLanded

      A signed-in device can resume from a saved cursor and learn which tasks, captures, events, lists, or list rows changed, including deletions, without relying on an always-on connection. The feed is transaction-bound, ordered, and account-scoped. The migration ran in production, and the deployed site proved the reconnect story end to end: a session that slept through several changes woke, paged through the feed from a cursor, and saw exactly the edits that happened after it — metadata only, no private documents in the feed.

    • Signed-in isolation testsLanded

      Every data route is checked automatically for a missing sign-in check or a query that forgets whose data it is. A production-database proof also confirms that two accounts stay separate, shared data requires membership, and stale writes cannot erase newer work.

    • Lists as durable recordsLanded

      Lists and every row in them are real database records rather than passengers in the workspace snapshot: each carries a revision, a stale save is refused with both versions shown, and deleting a list removes its rows in the same statement. Offline edits queue in a replay-safe outbox, schema rewrites and drag-reorders send only the rows that changed, and moving a list into or out of the shared Home space carries its records across the boundary. Every change lands in the same durable catch-up feed as tasks, captures, and events. Proven against an isolated database, and then live: the migration ran in production, and a signed-in session on the deployed site created, conflict-checked, and deleted a list with its rows through the real routes, snapshot and feed included.

    • Household ownership and syncUp next

      Shared items get equally explicit ownership rules before native devices can change them.

  7. Planned layer

    iPhone arm

    0/7

    A fast native companion for capture, Today, decisions, Zola, and notifications.

    See the milestones7 total
    • Apple companion design and shared contractsUp next

      Plan a SwiftUI iPhone app, WidgetKit extension, and Apple Watch companion around the same records, account boundaries, offline queue, and action receipts. The screen scopes and implementation backlog are written down. Native sign-in and authoritative project/view contracts still need to be specified before an Xcode app is created.

    • Fast text and voice captureLater

      Catch the thought before the thought disappears.

    • Today and inbox decisionsLater

      See Today, upcoming commitments, inbox decisions, and a project glance with comfortable native controls. The phone shares the same work and shows its refresh state; it does not duplicate the whole desktop dashboard.

    • Home and Lock Screen widgetsUp next

      Configurable Now/Next, upcoming commitment, due follow-up count, and quick-capture entry points. Widgets use Apple's refresh rules and show when information is old; reminders use a separate notification path. Planned alongside the first iPhone slice.

    • Native reminder actionsLater

      Bring important-date and client-follow-up reminders to the phone with permissions, quiet hours, snooze, completion, and cancellation tied to the same reminder records as the web workspace.

    • A running timer on the Lock ScreenLater

      A Live Activity keeps the current focus step and running timer available without opening the app, using the existing one-timer ledger rather than a second clock.

    • Native Zola conversationLater

      Continue the same safe proposal and confirmation loop away from the web app.

  8. Planned layer

    Watch and Mac arms

    0/5

    Put the smallest useful version exactly where attention already is.

    See the milestones5 total
    • Watch Now/Next glanceLater

      See Now/Next, the next meaningful date, and the running timer in an Apple Watch companion. Native phone/watch checks must prove freshness and the shared timer rule before this is complete.

    • Watch capture and completionLater

      Dictate a short thought, complete the current step, or snooze a reminder from the wrist, with offline actions retained until the shared service acknowledges them.

    • Watch complications and Smart StackLater

      Put the next meaningful item on the watch face and in the Smart Stack through WidgetKit, with visible refresh state and safe handoffs into the companion app.

    • Always-present Mac companionLater

      A compact widget for Now/Next, capture, timer, focus audio, and Zola status.

    • Dependable local music accessLater

      The Mac app can remember a folder you chose without uploading hundreds of gigs of MP3s.

  9. Planned layer

    Context, memory, and integrations

    0/7

    Help Zola remember with sources and work across the services life actually uses.

    See the milestones7 total
    • Source-linked morning briefUp next

      Prepare a useful overview without turning it into a nagging loop.

    • Learning your rhythms with your permissionLater

      Observe view choices, focus sessions, completed work, and reminder feedback only when you opt in. Suggest useful schedules or timing changes with evidence you can inspect, accept, dismiss, or delete. Saved rules remain your choice; a learning engine is still planned.

    • Goal-aware memoryLater

      Remember why something matters and show where that memory came from.

    • Gmail plus custom-domain emailIn motion

      Add mail accounts in the app with encrypted credentials, test their connection, review sender verdicts and unsubscribe approvals, and inspect per-account run counts. Local engine checks and isolated database checks now prove confirmed quarantine, restoration, and purge records, failure and partial-batch handling, recovery of older allowed mail, and matching across folder UID changes. Activity checks and pending-recovery messages expose missing results and failed moves. Hosted work shares a deadline, interrupts slow network calls, and prioritizes accounts waiting longest. The standard one-click header is recognized and redirects are refused as completion. Real read-only sweeps have changed no mail. The ordering migration, deployment, controlled live quarantine/restore persistence, and a recorded scheduled invocation remain. Full-mode deletion, actual unsubscribe delivery, and cryptographic unsubscribe authentication remain unverified.

    • Mail hygiene reads newest-first with a date rangeIn motion

      Choose newest-first or oldest-first, save a default, or run a chosen date window from the app or command line. Parked older work resumes later. Regression checks now prove the engine fetches exactly the selected messages, excluding already-examined gaps and mail outside the date window; backfill stops at its exact cap. Real read-only sweeps checked the corrected path. The CLI settings sync reads the saved order. Quarantine recovery also rotates through bounded batches, resetting its cursor if folder UIDs change. The ordering migration still needs applying to the configured database, followed by deployment and a real persisted sweep before this is complete.

    • Text the brain inIn motion

      Texting a thought to the household number can land it in the right person's inbox like any other capture: the webhook proves Twilio, checks the owned destination, resolves a verified mobile number to that signed-in person's account, answers provider retries exactly once, and files the text with the same protected write every capture gets. The number, production credentials, saved webhook, per-account linking, database table, settings, documentation, and tests are in place. One account has started linking but has not yet sent the exact one-time LINK message, so no production capture has passed end to end. The settings checker now refreshes that pending state without flashing the panel. A verified real text into each account is still needed before this is complete; A2P registration stays separate unless e-f later sends replies.

    • Reply-from-the-right-address safetyLater

      Every draft remembers its source account; sending always requires a separate confirmation.

  10. Planned layer

    Public launch and portfolio story

    1/3

    Explain the product beautifully with real proof instead of speculative promises.

    See the milestones3 total
    • Quiet public placeholderLanded

      The root site already explains the core promise and routes returning people into /app.

    • Full product storyLater

      Use real screenshots, working features, and purposeful animation when the product is ready to show off.

    • Portfolio-ready case studyLater

      Tell the design and engineering story—including the hard invisible parts—in a way you can proudly share.