Skip to main content

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 Open handoff 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 track control. 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.
  • draft remains 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 portal is 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_team exposes teammate metadata and totals, time.review adds submitted-entry review and private work detail, and time.manage adds 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 invoices conditionally offers a current-month Ready to bill overview with shared date controls and one client/currency row per eligible period. Prepare invoice carries 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 invoice explicitly adds the exact eligible entries. Review reveals 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 behind Additional 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.