DoneWell

Changelog

What changed in DoneWell, newest first. Every entry corresponds to a release that reached production, tagged vYYYY.MM.DD (a second release on the same day gets .2, .3, …).

DoneWell is a hosted product, so there is one version — the one that is live. The public REST API is versioned separately by its own path (/api/v1) and does not move with these releases.

The format follows Keep a Changelog: Added for new capabilities, Changed for behaviour that already existed, Fixed for defects.

v2026.09.11.5 — 2026-09-11

Re-release of v2026.09.11.4: that tag reached main but its deploy was refused by CI on one test-timing defect, so nothing shipped. This one carries the same product changes.

Changed

  • No user-facing changes — a test fix only.

v2026.09.11.4 — 2026-09-11

Added

  • Help center — a public knowledge base for operators at /help: fifteen articles across Getting started, Clients & properties, Schedule, Quotes / Jobs / Invoices, Payments, Team & roles and Settings, with screenshots.
  • Task boards: Select mode — a Select switch on the board with hover checkboxes, shift-click ranges, select-all per column, and a bulk bar for Move to…, Assign, Priority, Due date, Labels, Complete/Reopen, Archive and Delete. Dragging a selected card moves the whole selection.
  • Stripe wallet opening balance — the Stripe wallet now opens at what Stripe already holds (including payouts in transit) instead of at zero, so its balance matches your Stripe dashboard from day one.
  • Leave a company — a "Your companies" card on your profile lets you leave a company you belong to; the owner and the last active admin are told why they cannot.

Changed

  • Invitations — opening an invite link no longer joins you silently: a signed-in invitee sees a "Join ?" confirmation naming the role and the account first, and an invite addressed to another account says so.
  • Installment invoices — an installment invoice now prints the parent job's or quote's whole payment plan priced against the parent total, with the row it bills marked "(this invoice)", instead of a percentage of its own amount.
  • Client portal — clients no longer see draft or void invoices, or quotes that are not live; a bad-debt invoice reads "Unpaid" rather than exposing the internal label. The portal's "Total due" no longer counts drafts.
  • Money pages — /payments/[id] and /payouts/[id] show the same "Access denied" as their lists for a role without the permission; status filters keep up with fast repeated clicks; validation and refusal messages are worded consistently.
  • Telnyx phone numbers — the unused "Connection ID (voice)" field is gone; the Phone numbers card now says where voice routing is actually configured.
  • Security — a stricter Content Security Policy is rolled out in report-only mode; /schedule/tasks/new now requires the schedule permission and shows client contacts only to members who may view clients.

Fixed

  • Stripe ledger — the processing fee is booked even when Stripe reports it after the payment succeeded (the wallet no longer sits at the gross amount until a payout); manual and instant payouts are reconciled correctly and land on the company's ledger day; a lost dispute books its fee and a returned platform fee reaches the wallet, and a chargeback is named as one; a signed test-mode event can no longer land in a live environment (and vice versa).
  • Quote and invoice PDFs printed "[object Promise]" where the company letterhead belongs — the header renders again in the print view, PDF and email attachment.
  • Jobs — "Assigned To" on the job list and the job's Team no longer read "Not assigned" when the crew was set on the visit only (a job converted from a quote): the first visit crew seeds the job roster.

v2026.09.11.3 — 2026-09-11

Re-release of v2026.09.11 (second attempt): one more CI-only test fix; same product changes.

Changed

  • No user-facing changes — a test fix only.

v2026.09.11.2 — 2026-09-11

Re-release of v2026.09.11: that tag reached main but its deploy was refused by CI on three test-environment defects, so nothing shipped. This one carries the same product changes.

Changed

  • No user-facing changes — CI and test fixes only.

v2026.09.11 — 2026-09-11

Added

  • Visit reports for clients — a job's visit can be shared as a report page (photos, notes, what was done) through a link you send from the visit; the visit page also shows a QR code to continue on a phone.
  • Visit photos — capture zones with a step-by-step wizard on site, larger stored originals, and a marketing export that only includes photos the client has consented to, with an optional watermark.
  • Mobile Today — a "Mine / All" switch, the active visit pinned on top, actions inside the visit card, and a persistent active-visit strip above the tab bar while a visit is running.
  • Task boards — nested sub-cards (up to three levels), a tree view of a board, typed "Related items" links between cards, a short card address (/tasks/T-142) for sharing, drag-to-reorder card sections with per-section "show" and "required" switches, and labels in the card header. Boards can now be configured over the API (section template, required sections, pinned properties); creating a card over the API warns about likely duplicates.
  • Schedule → card — clicking a task chip on the calendar opens the kanban card itself.
  • Profile — change your sign-in email: confirm from the new address, then it swaps; Google sign-in links only to an address you have verified.
  • Public documentation — the product changelog at /changelog and the API reference at /developers.

Changed

  • Charts and KPIs follow the company's calendar — dashboard "Revenue by month", the Insights revenue comparison and sliding windows, and the payouts "this month / this week" tiles now bucket by the company timezone instead of the server's.
  • Deleting a property that a quote, job or invoice refers to is refused, with a warning in the dialog; a client delete leaves such addresses in place.
  • Deleting a phone number keeps its conversations; the default sending number stays consistent across all lines.
  • Pending invitations lists only the invitations that currently hold a seat.
  • Uploads are stored in object storage and served only to the company that owns them; orphaned files are swept by a scheduled job.

Fixed

  • Payment schedules: a percentage installment on a job is billed from the job total (not from earlier invoices), and installments survive converting a quote to a job or duplicating a job.
  • Multi-line email templates can be reset to the shipped default again.
  • Blank equipment names are rejected on both the equipment form and the equipment-purchase expense.
  • Date pickers no longer accept six-digit years, and every date field has an upper bound.
  • Mobile: the email-templates page no longer scrolls sideways; deep-linked dialogs open as bottom sheets at phone width; a refund confirmation no longer disappears if the dialog closes; a false "Discard unsaved changes?" after creating a visit is gone.
  • Dashboard tiles measure the current status, not the events of the period.
  • Defect sweeps across Clients, Requests, Quotes, Jobs, Invoices, Payments, Schedule and Visits (dozens of small fixes found by the regression audit).
  • Security: a company administrator can no longer set a password or change the email of a person who also belongs to another company (a reset link is sent instead); re-enabling an HQ staff account needs the same permission as disabling it; the job PDF route checks the job permission; a card on a private board no longer reveals its title through a link from another board; complaint photos from the review funnel are served privately.

v2026.09.01 — 2026-09-01

Baseline. This is the first tagged release; releases before it were not recorded, so this entry describes what the product does as of this date rather than what changed to get here. Everything after it is a real diff.

Added

  • Clients, requests, quotes, jobs and invoices — the full document chain, with line items, discounts, promo codes, per-location pricing and fees, tax charged inside or on top of the price, deposits and payment schedules.
  • Scheduling — a team calendar with visits, recurring jobs, crews with a named lead, availability and double-booking warnings, business hours, and a subscribable calendar feed.
  • Payments — card and manual payments, refunds, wallets and a ledger, payouts, and a public payment page customers can open from an emailed invoice.
  • Payroll — hourly, commission, hybrid and salary pay, time entries recorded when a visit is completed, pay runs and payouts.
  • Client portal — customers sign in through a magic link to see their documents, approve a quote and pay an invoice.
  • Inbox — SMS, email and in-app conversations with clients, on the company's own phone number.
  • Public pages — every company gets its own address: a home hub, quick links, a price-list calculator that turns an estimate into a request, and a review funnel.
  • Task boards — kanban boards with cards, sub-cards, checklists, notes, labels, dependencies and attachments.
  • Marketing — email campaigns, review collection, referrals.
  • Equipment and rentals, mileage logging, expenses and accounting codes, reports and dashboards.
  • Public REST API v1 — scoped dw_live_… keys over /api/v1; see the API reference.
  • Plans, modules and roles — per-plan feature modules, per-company overrides, custom roles and granular permissions.