What's New — v4 (Setup, Projects, Columns, Deadlines & Reminders)
Shipped July 20, 2026 — web app + TestFlight. This doc covers the v4 feature batch requested after build 6.
1. The gear tab is now “Setup”
The old “More” tab is renamed Setup and is now the app’s configuration hub. Everything you could only do during first-run onboarding can now be done any time:
Profession pack, Team (add members and edit anyone’s hourly rate inline — tap the rate, type, Save), Viewing as, Projects (full details), Reminders, Plan tier, document scanning, QuickBooks sync, Security & Compliance, and Data tools all live here.
2. Editable hourly rates — any staff, any time
The setup wizard’s first step now includes a Your hourly rate field (defaults to $100), and every member's rate can be changed later from **Setup → Team**: tap the underlined `$X/h ✎` next to any member, enter the new rate, Save. Rates drive billing immediately — logged value, MoneyFinder, and invoices all recompute.
3. Rename any issue / task
Open an item and tap its title (marked with ✎). Type the new name, Save. Available on every item, both packs.
4. Projects are now full records, not just names
A project/client now carries: description, contact email, contact phone, budget ($), billing notes (terms, PO#, rate overrides), deadline (YYYY-MM-DD), and Active/Archived status. Tap a project row in Setup → Projects to expand and edit. The onboarding wizard still only asks for names — details are added later here. Old workspaces migrate automatically (plain name lists become full records).
5. Configurable columns — add, remove, and pick the Start column
Board → Columns now supports more than renaming: add a new column (e.g. “Blocked”), remove one (its cards move to the previous column — nothing is lost), and mark which column is the ▸ Start column — the one a job moves into when an assignee taps “▸ Start job”. Minimum one column; Reset restores the pack defaults.
6. Explicit “Complete” status
Every card now has a ☐ Done / ✓ Done toggle (on the card and on the item detail screen). Completion is stored as its own flag, deliberately decoupled from column position — so reorganizing columns never silently “un-completes” work, and a completed card shows a strikethrough title + green ✓ chip wherever it sits.
7. Client field is a real picker
Creating an item now shows every known client/project as tappable chips plus a + New chip that opens an inline “add client” field — the new name is saved to Projects and selected in one tap. No more retyping client names.
8. Members added any time (already shipped, now easier to find)
Setup → Team — name, rate, role (Worker / Manager / Admin), Add. This has worked since v3; the tab rename makes it discoverable.
9. Billing visibility by role — “Viewing as”
Setup → Viewing as selects who is currently holding the device. Admin / Manager see everything. Member / Worker see time and progress only: no $ figures, no MoneyFinder, no logged-value chart, no rate chips — and the Billing and Invoices tabs disappear entirely. Honest limitation: this is a stand-in until true per-person login exists (doc 23 §6) — anyone can switch the viewer back; it prevents accidental exposure, not determined snooping.
10. Deadlines & Reminders (time management)
Admins can set a deadline (and budget) on every project. The Dashboard gains an Upcoming deadlines card — soonest first, amber inside the reminder window, red when overdue. Setup → Reminders configures deadline reminders: master switch, channel toggles (Email / SMS text / Voice call — delivered to the project’s contact email/phone), and lead time (1 / 3 / 7 / 14 days before deadline).
Prototype note: reminders are computed and shown in-app today. Real email/SMS/voice sending requires a small server-side sender (e.g. Twilio + a scheduled function) — that’s the same server prerequisite as the agent API (doc 24) and is planned, not built.
11. AI agents — direct database access (path chosen)
Instead of the Blaze-gated Cloud Functions API (doc 24), agent access is being wired via direct Firestore access: agents get their own credential and read/write the workspace document directly from wherever they run (no hosted server needed). Humans keep using the app/web UI as normal — this path is agent-only. Details and status live in doc 24’s updated implementation section.
Under the hood (for future maintenance)
New/changed state: Project objects (auto-migrated from
string[]), startCol per pack,
WorkItem.completed, activeViewerId,
reminders settings — all normalized defensively in
repo.ts so old saved workspaces load cleanly. Column
removal remaps card positions; start-column index is clamped whenever
columns change.