Entries And Timer V1
Product Role
Entries is the agency-wide operational record of tracked work. Every entry belongs to a client account first and may also belong to a project. Timer is a capture utility for producing the same entry record; it is not a separate ownership domain.
V1 Flow
- Manual entry and timer capture both require a client account.
- Project association is optional and is constrained to the selected client.
- When a project is selected, work may optionally be attributed to one open project task. The same selector appears in manual entry, the timer workspace, the global timer dialog, and the active-timer quick view.
- Task attribution records what the time was spent on; saving time never silently completes the task. A task with linked time cannot be deleted, preserving historical attribution.
- Task attribution is optional, but using it adds task-level tracked, billable, and approved-billable summaries in the project workspace. Project time also provides a range-aware task breakdown.
- Work details remain optional when a task is selected. The task is the planned unit of work; work details capture the actual substeps or outcome without duplicating the task title.
- New work defaults to billable, while billing status remains an explicit labeled choice on every capture surface.
- Manual entry defaults to one hour and provides 15-minute, 30-minute, one-hour, and two-hour presets while retaining exact minute entry.
- Saving a timer creates the time entry, preserves its linked note and work log, clears the active timer, and offers an
Openhandoff from the success toast. - The active timer is stored on the server and mirrored locally for immediate shell updates. It survives refreshes, browser-data loss, sign-in on another device, and device handoff. One member may have only one active timer per organization; a second start request returns the existing timer instead of creating a competing clock. Every shell surface consumes one shared timer controller so the topbar, dialog, dock, Today, and entry actions display the same elapsed clock and mutation state.
- Stopping from the global timer chip is a one-action path with one unambiguous
Stop and trackcontrol. Destructive discard remains inside the opened timer behind confirmation; it is never layered over the stop control. Opening the timer still exposes the connected client, project, task, note, billable state, work log, pause, resume, and discard controls. - Capture completes immediately by default. Organizations may opt into staff review; under that policy, entries created by a member with time-review authority remain tracked immediately while other staff entries go directly to review.
- A reviewer may approve an entry or request changes with a reason. Saving a corrected returned entry sends it directly back to review without a separate submit step.
draftremains a compatibility state for older records rather than the normal capture outcome. Approved entries may be locked to prevent billing drift.
Workspace UX
- The Entries secondary bar owns status queues: All entries, Needs review, and Changes requested.
- The local toolbar owns search, billing-status filtering, and the selected date range.
- The table exposes client, project, member, billing status, workflow status, duration, and work log so commercial state is scannable without opening each record.
- Human-readable entry durations use hours and minutes (
1h 30min). Timer elapsed time continues to use a running clock because it represents live elapsed state. - The cross-client Entries page and client/project time surfaces expose week, month, quarter, and year presets directly. Custom dates use a focused popover. Entries totals cover the full selected range even when only the latest 100 matching rows are rendered.
- Entries automatically estimates hourly value from the selected range for members with invoice authority. Each entry resolves through project override, then client default; retainer, non-billable, and subscription-covered work is excluded, missing rates stay explicitly unpriced, and different currencies are never merged into one total. This estimate is passive context and never creates invoice data.
- The trend chart shows billable and non-billable time over the selected range.
- The bottom drawer is reserved for the detailed period breakdown; it no longer mixes range selection with analysis.
Integration Boundaries
- Client detail provides the simple time view for one client.
- Project detail provides project burn, estimate/cap context, and project-scoped time.
- Project overview provides a compact open-task snapshot and links into the full Tasks tab. The Tasks tab shows linked effort and invoice-ready time without changing task completion automatically. Project details also expose a lead and delivery team chosen from organization members who already have client access; responsibility assignment does not grant client access.
- Entries provides the cross-client operational queue.
- Unbilled tracked time may be shown as useful context in client and project time views, but it is not an alert or a required next step.
- Notes may be linked only to the current user's own entries; timer saves must preserve that link from every timer surface.
- Project visibility and tracked-time visibility are independent. Client-visible projects keep tracked-time totals internal by default and expose cumulative approved billable totals only when
Show tracked time in the client portalis explicitly enabled for that project. A task may then show only its own approved billable total. Portal surfaces must never expose active timers, draft or submitted time, non-billable time, member-level work logs, internal tasks, or internal projects. - Time permissions are independent from client-record management.
time.view_teamexposes teammate metadata and totals,time.reviewadds submitted-entry review and private work detail, andtime.manageadds edit/delete/lock authority over team entries. Staff without those permissions see and manage only their own time. - Tracked billable time becomes eligible for optional invoicing for non-retainer clients whether it belongs to a project or to general client work. Organizations that enable staff review require those entries to pass review first.
- Invoice creation remains manual-capable.
All invoicesconditionally offers a current-monthReady to billoverview with shared date controls and one client/currency row per eligible period.Prepare invoicecarries that client, currency, and exact range into an isolated draft without adding time. Selecting a client then surfaces one compact recommendation with total time, value, project count, and date range.Add to invoiceexplicitly adds the exact eligible entries.Reviewreveals the project/rate breakdown, entry selection, custom periods, and rate overrides. A client-wide invoice may include multiple independently priced project/general-work groups, while a project invoice accepts only time from that project. Manual line items remain first-class, and currency, service label, tax, PDF, memo, footer, and custom-field controls stay available behindAdditional options. - Invoice review identifies task-attributed entries. Client-visible task titles may enrich the resulting time line description; internal task titles never cross onto the client invoice.
- Reserved entries are locked against edits and duplicate billing. A failed invoice creation or voided draft releases reservations and any lock created by the allocation. Finalized, paid, or subsequently voided invoices retain their historical allocations.
- “Unbilled tracked time” means eligible entries without a reserved or invoiced allocation. It is an available billing input, not an obligation. An unrelated invoice never counts as time coverage.
- Hourly-rate resolution is project override, then client default, then a manually entered invoice override only when pricing is missing or intentionally changed. General client work uses the client default or a manual invoice override. New timer and manual entries snapshot their billing mode, rate source, rate, and currency when captured. A later client/project rate or currency change therefore creates a separate recommendation instead of repricing older work. Older entries that predate snapshots use current configuration as an explicit compatibility fallback because their historical price cannot be reconstructed safely.
- Retainer time remains part of utilization and delivery reporting and is never automatically converted into an additional hourly invoice line.
Deliberate Follow-Ups
- Entries use indexed cursor pagination in 30-row pages across date, client, approval, billing, and search filters. Range analytics remain a separate date-indexed query, so loading the ledger never silently stops at the former 100-row ceiling.
- Team-oriented batch review actions remain outside the v1 interaction model.
- Billable-by-default remains the explicit v1 capture policy; per-client capture defaults remain a future extension.
- Mixed-rate work within the same project is split automatically into separate internal invoice groups while the default recommendation remains one action.
- Continuing or duplicating a completed timer remains deferred.