Skip to content
Changelog This Week in Miru Mobile Desktop App CLI

This Week in Miru: Mobile Beta, Signed Desktop, CLI Invoices, and Safer Billing

Apr 29-May 19: 199 non-merge commits across Miru web, mobile, desktop, and marketing. Mobile beta work, signed desktop builds, CLI invoice creation, invoice taxes, signatures, payment downloads, search highlighting, and auth hardening.

Vipul A M Vipul A M · · 6 min read
Billing
Miru invoicing screen with invoice status and totals
This article is currently written in English. Navigation, dates, and calls to action follow your selected language.

This cycle: simplify capture, harden billing, and ship only what we can verify.

Apr 29-May 19: 199 non-merge commits across miru-web, miru-mobile, miru-time-desktop, and miru-marketing-website.

Miru Time Tracking desktop timer with profile avatar and sanitized local work details

1) Mobile Moved From Preview To Working Beta Surface

Mobile stopped being just a roadmap sentence.

The new saeloun/miru-mobile repo now has a standalone Expo app wired to the Miru API. The app defaults to the production API, stores sessions with native-safe storage, and keeps the scope focused on capture and lightweight operations.

What landed:

  • auth: phone OTP, team email/password, sign-up, and browser-based Google sign-in
  • capture: timer lifecycle, automatic sync, and quick manual entries for 15m, 30m, 1h, and custom durations
  • work context: recent entries, assigned projects, team, profile, payments, and Razorpay settings
  • expenses: submission, status filters, approve, reject, and mark-paid actions
  • billing helpers: invoice filters, overdue reminders, Razorpay payment links, and India pro SMS payment-link actions
  • release path: EAS build and submit flows for TestFlight and Android internal testing

Mobile is beta. Capture-first only.

Block GA until offline behavior and retry logic are boring: measure sync failures, create tickets, and do not promise admin flows.

Related mobile work:

The web app picked up the API side too:

2) Desktop Became A Public, Signed Release

Miru Time Tracking is now public as a local-first desktop timer.

Desktop is for capture. Web is for review, billing, expenses, payments, reports, and team workflows. That split is still the product rule.

Since the last weekly post, desktop shipped multiple release cuts and reached v0.1.8 with:

  • Apple Silicon, Intel macOS, Linux x64, and Windows x64 ZIPs
  • signed and notarized macOS release builds
  • clearer compact timer layout
  • calmer running-timer state
  • better idle recovery actions
  • default Miru-style avatar fallback
  • refreshed screenshots from the packaged Electron app
  • release verification docs for macOS signing

Miru Time Tracking account and sync popover

This is the right amount of desktop: keep the timer visible, survive normal laptop behavior, and sync back to Miru. Do not rebuild the whole admin product in a tray window.

Related work:

  • Desktop launch pages and screenshots: ec7fe4c
  • Desktop content refresh: 3b6b5f7
  • Desktop profile avatar preview: 1a4f47c
  • Desktop download links updated to v0.1.8: b489aaf
  • Miru Time Tracking 0.1.8: f57c17c
  • Signed macOS release verification: 5a92caa

3) Capture Surfaces Started Talking To Each Other

A timer that lives in five places has to behave like one product.

The web dashboard now understands MiruTime desktop timer state better. We tightened the desktop current-timer API, improved the floating timer and dashboard timer controls, and added coverage around the sync path.

The CLI moved forward too: miru invoice create landed through the CLI/MCP tool path. That is a meaningful shift. Terminal and agent workflows can now move closer to invoice creation without relying on brittle browser clicks.

Guardrail stays the same: writes need explicit user intent. Automation should prepare billing work for review, not silently mutate money-facing state.

Related work:

4) Invoices Got More Flexible And More Correct

Billing correctness is not a nice-to-have.

This cycle added the pieces that make invoices less fragile:

  • flexible invoice taxes
  • signed invoice options
  • project-level aggregation for invoice time entries
  • EIN on clients and invoices
  • invoice number editing and auto-update on client change
  • draft edit actions
  • cleaner invoice preview layout
  • PDF download layout aligned with browser preview
  • safer invoice signature handling during upload and deletion
  • stable line item editor state

Miru invoices view

These changes are not decoration. They reduce manual invoice cleanup, especially for teams billing across clients with different tax and signature requirements.

Related work:

  • Flexible invoice taxes: 212e6192
  • Signed invoice options: 8f60165c
  • Aggregate invoice time entries by project: bfc35f83
  • EIN on invoices: 29d5adcc
  • Invoice number editing and client-change auto-update: 3db5e5d2

5) Payments, Emails, And Search Got Less Annoying

Money workflows need boring affordances.

Payments now support bulk download for selected rows. Payment selection actions are visible again. UPI settings got a stability pass. Stripe Link CLI metadata was added for payment links.

Transactional emails got a real pass too: refreshed templates, organization logos, and inline logo attachments across invoice, payment, reminder, and related mailers.

Search got easier to scan with highlighted matching text across searchable pages. Small change, large daily payoff.

Miru payments view for month-end collection workflows

Related work:

  • Bulk download for selected payments: 347a6f02
  • Payment selection actions: 7a790571
  • UPI settings stability: 58ddee34
  • Stripe Link CLI payment metadata: 7ddfac20
  • Transactional email templates: 8bba4672
  • Organization logo in emails: 2341b0d1
  • Inline company logos in email templates: b0488200
  • Search text highlighting: 18362180

6) Guardrails Tightened Around Accounts, Teams, And Analytics

The best product fixes are often the ones users never have to notice.

This batch tightened several risk areas:

  • comprehensive phone number validation for users, companies, and clients
  • last workspace owner can no longer delete their own team member record
  • billing now warns when client portal users affect seat count
  • SPA auth token fallback is more stable
  • analytics utilization durations are normalized
  • analytics threshold alerts send weekly
  • holiday calendar edits persist
  • team delete confirmation is more stable
  • discarded employments are excluded from dashboard team summaries

Related work:

  • Phone number validation: 3ed515d3
  • Prevent last workspace owner self-delete: 1856d04f
  • Client portal seat-count alert: 4bde26b2
  • SPA token fallback: 5559ef17
  • Analytics utilization durations: 4c9e304f
  • Weekly analytics threshold alerts: a34cba27

By The Numbers (Apr 29 To May 19)

  • 199 non-merge commits across four Miru repos
  • 134 non-merge commits in miru-web
  • 29 non-merge commits in miru-time-desktop
  • 27 non-merge commits in miru-mobile
  • 9 non-merge commits in miru-marketing-website
  • 1 new Expo mobile app repo now wired to Miru API workflows
  • 1 public desktop release line at v0.1.8
  • 1 CLI invoice creation path
  • 3 major invoice data improvements: taxes, signatures, project aggregation
  • 1 payment bulk-download workflow
  • 1 auth-token fallback hardening pass

What This Means

Miru is becoming less dependent on one browser surface.

That is the product direction:

  • web for review, admin, billing, reports, and payment operations
  • desktop for local-first capture
  • mobile for quick capture and lightweight operational actions
  • CLI for terminal workflows
  • API and MCP for structured automation
  • marketing/docs/llms files for public, agent-readable product truth

The hard part is not adding surfaces. The hard part is keeping them honest.

Time entries still need to become invoices correctly. Invoices still need the right tax, signature, identity, line items, and payment context. Agents and CLI tools still need review-first write paths. Mobile still needs beta discipline before broad claims.

That is the work.

Watchlist

  1. Mobile beta scope. Keep it capture-first. Acceptance: no broad admin surface in the beta build, and sync failures become tickets instead of anecdotes.
  2. Desktop release quality. Keep verifying signed macOS ZIPs and release links. Acceptance: automated notarization checks plus manual smoke checks on Apple Silicon and Intel.
  3. CLI invoices. Do not auto-send. Acceptance: CLI-created invoice drafts are auditable, and payment-facing actions require explicit confirmation.
  4. Invoice coverage. Add end-to-end coverage where taxes, signatures, EIN, and project aggregation cross PDF, email, API, and UI boundaries.
  5. SPA auth and analytics. Watch production after the fallback and alert changes. Acceptance: token fallback regressions and threshold-alert drift trigger visible alerts.

Start with Miru at app.miru.so/signup, read the desktop launch at miru.so/blog/miru-desktop-app-launch, 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.

Billing
Miru invoicing screen with invoice status and totals
Invoicing Miru