# 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.
