Minor Changes and Improvements
April 2026
Global search
A command palette is now available from every page in the dashboard — press ⌘K (or Ctrl+K on Windows) to open it instantly, or click the Search button in the top bar.
- Searches across passes, clients, and files in one query — results appear as you type, grouped by type.
- Fully keyboard-navigable: ↑ / ↓ to move through results, ↵ to open, Esc to close.
- Available on mobile via a search icon in the header alongside the desktop pill button.
- Query fires at two or more characters; results are cached for 10 seconds to keep things snappy.
Passes
Bulk actions
You can now select multiple passes and act on all of them at once.
- Check the box on any pass row to select it, or use the select all checkbox at the top of the list to grab everything currently visible — including partial selections shown with an indeterminate state.
- A floating action bar appears at the bottom of the screen when passes are selected, with three actions: Archive, Set status (Not Started → Complete), and Assign to a team member.
- Selection clears automatically when you switch between the Active, My Passes, and Archived tabs.
- The bar shows how many passes are selected and includes a Clear shortcut to deselect without scrolling.
Files
Category filter
The Files page now lets you narrow down to a specific file type without hunting through the full list.
- A dropdown filter lets you choose from Brief, Draft, Final, Invoice, Contract, Reference, Asset, or Other.
- Every file row now shows a colour-coded category badge — green for Final, blue for Invoice, violet for Brief, and so on — so the type is visible at a glance even without filtering.
- A result count and Clear filters link sit in the filter bar so you always know how many files match and can reset with one click.
Reports (Agency plan)
Functional date range picker
The date range control in Agency Reports was cosmetic before — it now actually filters the data.
- Four presets: Last 7 days, Last 30 days, Last 90 days, and Last 12 months. Click the period label to open the dropdown; it closes when you pick a preset or click away.
- All four tabs — Overview, Team, Clients, and Revenue — respond to the selected period. Completed pass counts, client activity, and paid revenue all scope to the chosen window.
- The Team tab card header now reflects the selected period (e.g. "Last 7 days") instead of permanently reading "Last 30 Days".
Time tracking
A new Time page in the sidebar gives you a workspace-wide view of every hour logged across all your passes.
- Filter by period (same four presets as Reports), team member, specific pass, or billed / unbilled status. Filters combine, so you can ask for "all unbilled hours from a specific person in the last 30 days" in a few clicks.
- Four summary cards at the top show total time, unbilled time, billed time, and estimated earnings for the current filter — earnings are calculated from per-entry rates, falling back to your workspace default hourly rate.
- Each row in the table links directly to the pass it was logged on so you can jump to context immediately.
- Export CSV downloads all visible entries with columns for date, pass, client, team member, note, duration (minutes), hourly rate, earnings, and billed status — ready to drop into an invoice or hand to your accountant. The export runs client-side with no upload or server round-trip.
Dashboard overview
Revenue at a glance
Two new stat cards sit below the pass stats on the Overview page — no extra data fetching, they're bundled into the same request that already powers the other cards.
- Revenue This Month shows the total value of invoices marked as paid in the current calendar month, in green.
- Outstanding shows the combined value of all sent or overdue invoices, highlighted in amber when non-zero.
- Both cards are clickable and link through to the Revenue page for the full breakdown.
Client satisfaction
A satisfaction summary panel now appears at the bottom of the Overview page whenever your clients have submitted scores.
- A 1–5 star distribution chart visualises how your scores cluster — each bar is colour-coded from rose (1) through emerald (5) and scales to the highest bucket so differences are easy to read.
- The panel header shows your all-time average and a separate 30-day average side by side so you can spot whether satisfaction is trending up or down.
- The five most recent scores are listed below the chart, each with the client name, project name, and any comment the client left — clicking a row goes straight to that pass.
- The panel renders only when at least one score exists and stays hidden otherwise so it doesn't create empty-state clutter.
Under the hood
A handful of correctness and performance fixes shipped alongside the features above.
SortIconinline component in the Clients page was defined inside the parent component, causing React to treat it as a new type on every render. Moved to module scope.BrandKitTabstate initialisation in the Clients page replaced auseEffectthat synced server data into local form state (an anti-pattern that can cause stale-state flickers) with a lazyuseStateinitialiser. Akeyprop on the tab ensures the form resets cleanly when switching between clients.- Unused code — a dead
tabLabelsconstant in the Reports page and an unconnected date-range-label string in the Team tab have been removed.
Notes
- Bulk actions and CSV export have no item limit enforced in the UI, but bulk mutations are capped at 100 passes per operation server-side.
- The Time page and satisfaction panel both appear regardless of plan tier — the underlying data is collected across all plans.
- Reports (including the date range picker) remains gated to the Agency plan as before.