Skip to content
Changelog This Week in Miru QuickBooks Time Tracking

This Week in Miru: QuickBooks in Review, Configurable Timesheets, and Mobile Polish

May 20-June 2: configurable timesheet edit windows, mobile responsive cleanup, analytics alert fixes, dependency patches, and QuickBooks Online sync moving through review.

Vipul A M Vipul A M · · 6 min read
Tracking
Miru time tracking interface with timers and recent entries
This article is currently written in English. Navigation, dates, and calls to action follow your selected language.

This cycle was about two things: make the everyday app less brittle, and move accounting sync from idea to reviewable code.

May 20-June 2: miru-web merged 13 non-merge commits on develop. In parallel, QuickBooks Online sync moved into active review in PR #2332 with four focused commits on top of develop.

The distinction matters. Configurable timesheet edit windows, mobile polish, analytics scope fixes, and dependency patches are merged. QuickBooks is not being described as shipped yet; it is in review with a real implementation, specs, and manual smoke evidence.

This Week in Miru June 2 summary card showing merged work and QuickBooks review status

1) QuickBooks Online Sync Is In Review

The big forward-looking work this cycle is QuickBooks Online.

The open branch adds the foundation for connecting a Miru workspace to QuickBooks, exporting billing records, and keeping enough reference data to make future syncs auditable instead of guesswork.

What is in review:

  • encrypted QuickBooks OAuth token handling
  • connection, reference, sync-run, and sync-event tables
  • owner/admin status, connect, callback, disconnect, and settings APIs
  • QuickBooks connection state surfaced in payment settings
  • customer, invoice, and payment export services
  • stored QuickBooks references and SyncToken handling
  • payload digests so repeat exports can tell whether data changed
  • background export jobs
  • manual sync endpoints for workspace, invoice, and payment export
  • sanitized OAuth failure logging

QuickBooks sync preview showing Miru customers, invoices, and payments exported to QuickBooks with sync events

The product rule is the same one we use for CLI and MCP: money-facing automation needs traceable state. Exporting an invoice is not just an API call. Miru has to know what it sent, when it sent it, what QuickBooks returned, and whether a later export is a retry, an update, or a new record.

Related work:

  • QuickBooks connection foundation: 042cc77d
  • Export Miru records to QuickBooks: 43db0868
  • Export base simplification: 58a2f6dd
  • QuickBooks review coverage: 202810a6

2) Timesheet Edit Windows Are Now Configurable

The old default was blunt: standard users could not edit older timesheet entries past the hardcoded window.

That is too rigid for real teams. Some teams close time weekly. Some need a month. Some want a tighter policy once billing is active.

Miru now has a company-level timesheet_edit_days setting with a default of 30 days and a validated range of 1-365.

What changed:

  • organization settings can save the edit window
  • /api/v1/users/me includes the configured company value
  • entry cards and time entry displays read the real company setting
  • backend policies enforce the same configured window
  • bulk update and bulk destroy use the same lock rules
  • billed entries stay locked
  • admins and owners retain privileged access
  • locked messages preserve %{days} interpolation across locales
  • old entries show a clearer “Edit closed” state

Configurable timesheet edit window diagram showing company policy, user roles, and locked billed entries

This is the kind of change that needs both UI and policy work. A setting that only changes the screen is worse than no setting at all. The backend now enforces the same rule the user sees.

Related work:

  • Configurable timesheet edit window: cf1fee9e

3) Mobile Web Got A Real Responsiveness Pass

The mobile app is one surface. The web app still has to work on a narrow browser.

This pass fixed several places where the product was technically usable but visually fragile on 360px screens:

  • time tracking month and week views no longer overflow
  • dashboard header layout avoids hamburger and locale-switcher collisions
  • DataTable pagination is contained on narrow screens
  • floating timer no longer overlaps the entry form on mobile
  • leave calendar cells and padding scale down cleanly
  • settings, preferences, leaves, and profile pages behave better on mobile
  • expenses date picker state no longer leaks between add and edit dialogs
  • mobile payment transaction type dropdown has stronger keyboard and ARIA behavior
  • duplicate success toasts were removed
  • toast notifications now have a close button

Miru mobile dashboard and time tracking screenshot

None of this is headline-glamorous. It is the difference between “Miru supports mobile” and “I can fix this invoice/time entry from my phone without fighting the layout.”

Related work:

4) Payment And Profile Polish Removed Small Daily Frictions

Two smaller UI fixes landed after the responsive pass:

  • profile page alignment and dropdown highlight issues were cleaned up
  • the payment modal invoice field label now matches the floating-label pattern

Small form inconsistencies compound. Billing screens should feel predictable because people use them when they are already doing careful work.

Related work:

  • Profile alignment and dropdown polish: 6d7aafce
  • Payment invoice field label: 3f975b95

5) Analytics Alerts Got The Right Scope

Utilization threshold alerts got a scope correction.

The fix is small in code and important in behavior: alerts should evaluate the right workspace/team context, not drift because the schedule or analytics query is looking at the wrong shape of data.

We also added specs around the schedule, team productivity analytics, and threshold evaluator.

Related work:

6) Dependencies And Repo Hygiene Moved Forward

Four dependency updates landed:

  • faraday from 2.14.1 to 2.14.2
  • brace-expansion from 5.0.5 to 5.0.6 in apps/mobile
  • js-cookie from 3.0.5 to 3.0.7
  • jwt from 2.7.0 to 3.2.0

We also removed repo-local Codex and vendored modern-web guidance files from miru-web. That is not product UI, but it keeps the application repo cleaner and reduces instructions that do not belong in the product codebase.

7) E2E Coverage Needs A Smaller Permanent Shape

A large Playwright E2E suite was added and then reverted the same day.

That is worth saying plainly. The direction is right; broad user-flow coverage matters. The implementation was too large to accept as a permanent baseline in that form.

The useful lesson: keep the high-value regressions, but land them in smaller slices with stable fixtures and clear ownership. A 340-test drop is easy to admire and hard to maintain.

By The Numbers (May 20 To June 2)

  • 13 merged non-merge commits on miru-web develop
  • 4 QuickBooks PR commits in active review
  • 52 files touched by configurable timesheet edit windows
  • 37 files touched by the mobile responsive pass
  • 22 non-English locales updated for edit-window lock messages
  • 4 dependency updates
  • 1 large E2E suite intentionally reverted before becoming baseline

What This Means

Miru is getting stricter where billing needs strictness and more flexible where teams need policy control.

Configurable timesheet windows let companies choose their close policy without lying to the backend. Mobile web fixes make routine capture and cleanup less painful. Analytics alerts are less likely to fire from the wrong scope. QuickBooks sync is moving through review with the right primitives: encrypted tokens, references, sync runs, events, digests, jobs, and explicit endpoints.

The direction is boring in the right way: fewer silent assumptions, more auditable workflows.

Watchlist

  1. QuickBooks review. Acceptance: sandbox-tested exports, clear failure states, no token leakage, and user-visible sync history before calling it shipped.
  2. Timesheet edit policy. Acceptance: no mismatch between UI lock state, single-entry API policy, and bulk action policy.
  3. Mobile web. Acceptance: keep testing at 360px width for time tracking, dashboard, payments, expenses, leaves, and settings.
  4. Analytics alerts. Acceptance: production alerts reflect the intended workspace/team scope.
  5. E2E rebuild. Acceptance: smaller permanent specs around the highest-risk billing and time-tracking flows.

Start with Miru at app.miru.so/signup, or follow the source at github.com/saeloun/miru-web.

Share:
Vipul A M

Vipul A M

Co-founder at Saeloun. Building Miru. Rails contributor. Shipping from Pune, India.

Put it to work

Run one cleaner billing cycle in Miru.

If this article is about tracking time, billing clients, comparing tools, or automating work, Miru is the product version of that idea. Start free, invite the team, and send the next invoice from tracked work.

What you get

  • Time tracking, invoices, expenses, and payments in one place.
  • Free for up to 5 users. Pro is $1/member/month.
  • Open source, with CLI, API, MCP, and self-hosting paths.
See Miru

The article is the argument. Miru is the workflow.

Track the work, approve the hours, send the invoice, and get paid without bolting together three separate tools.

Tracking
Miru time tracking interface with timers and recent entries
Time Tracking Miru