What's New
See what's changed in recent updates to Ditsy OS.
Pages open faster when you point at them
Hovering over a link in the sidebar, the dashboard, or the invoice list starts loading that page early, so it is often already there by the time you arrive. Going back keeps what was already loaded instead of flashing a loading state again.
Loading screens hold their shape
The PDF preview, the invoice form, and Settings now show placeholders shaped like the content that replaces them, so the page no longer collapses and then jumps when the real content arrives. The PDF preview reserves the full page box and names the stage, so you can tell whether it is still generating the file or just loading it. Loading indicators also feel snappier throughout the app.
Editing an invoice no longer opens a blank form
Opening an existing invoice could briefly show an empty, editable form while its items were still loading. Anything you typed in that moment was discarded when the items arrived, and if loading the items failed, the page sat blank with no error and nothing to retry. The form now waits for both the invoice and its items, and either failure shows an error you can retry.
Small polish you'll notice
- Amounts on the dashboard, the invoice list, and item and grand totals now line up instead of shifting width as numbers change.
- Hover over a cut-off cell in the invoice list, or a shortened breadcrumb, to see the full text.
- The delete confirmation button now clearly says Delete invoice.
- Switching between light and dark theme no longer flashes or animates the colors, and text renders a little smoother.
- Connection and error messages are announced politely to screen readers.
Import the same file you export
You can now export your invoices to CSV or Excel, edit the file, and import it straight back without changing anything. Each item sits on its own row, so an invoice with two items takes two rows that share the same customer and date. The template in Settings now shows this layout, with one invoice split across two item rows.
Files that still use the old single "Items" column are clearly rejected, with a message pointing you to the current template or a fresh export.
Imports no longer save a half-finished invoice
If any row for an invoice can't be read, the whole invoice is skipped and shown as an error instead of being imported with items missing. An item row with no name but a quantity or price is flagged rather than quietly dropped, and an invoice needs at least one named item before it can be saved or imported.
The import preview tells you the truth
Previously every row looked new and duplicates always showed as zero. The preview now counts the new invoices, the duplicates that will be skipped, and the rows with errors, so you know what will happen before you confirm.
Dates are correct wherever you are
Some dates appeared or printed a day off, and on the first of a month a month off, depending on your timezone. Dates now stay consistent in the list, the PDF, and the suggested invoice number. The dashboard's day, month, and year totals also follow your own clock instead of the server's.
Amounts are exact
Item totals in exports now match the PDF. Valid prices like 0.07 and 1.15 are accepted again, and a price such as 1500.5 shows as Rp1.500,5 instead of rounding to Rp1.501.
Other fixes
- Breadcrumbs on deeper pages no longer link to the wrong place.
- Excel files re-imported after export no longer pick up a stray apostrophe in item names that start with a special character.
- The dashboard opens a little faster.
- The mobile browser bar now matches the app's purple accent.
Search your invoices
The invoice list now has a search box. Type part of an invoice number (like "042/VI/2026"), a customer name, phone number, address, status, or total, and the list filters as you type. Existing invoices are searchable too, once the search-text backfill for your account has completed.
Filter and page through the list
Filter by status — draft, sent, or paid — and by a specific month, on top of searching. With many invoices, the list now pages through results at 10, 25, or 50 per page, so it stays fast no matter how many invoices you have.
Your numbers are kept exactly as you enter them
Unit prices and quantities are now saved exactly as you typed them instead of being rounded when the invoice is stored. Line totals are calculated as quantity × unit price, rounded once, and the invoice total is the exact sum of the line totals — so the amounts in the PDF always add up. Values the system can't handle safely (like negative or absurdly large amounts) are rejected with a clear message.
Your invoice number is always respected
If you type your own invoice number, it's kept — even when the suggested number arrives a moment later, it won't overwrite what you entered. The confirmation message shows the number that was actually saved.
Row padding from Settings applies right away
The global row padding you saved in Settings now takes effect as soon as you open the invoice form. Previously the form started with the built-in default and only switched to your setting after you adjusted it yourself.
Behind-the-scenes
- The app frame now appears instantly from a pre-rendered shell instead of a blank page while the app loads.
- Invoice search is backed by a native search index, so results stay fast.
Creating a new invoice is smoother
The New Invoice page no longer triggers validation errors while it loads. Previously the page asked for the invoice it was about to create — which doesn't exist yet — and that request failed behind the scenes. Starting a fresh invoice is now clean.
Form fields are easier to see
Inputs inside cards and dialogs — item names, quantities, unit prices, row padding, the status selector, and confirmation fields — now have clearer contrast against their backgrounds, so it's easier to tell where to type.
CSV imports are more forgiving
CSV files saved by Excel (which add a byte-order mark and Windows line endings) now import correctly — no more files that silently fail or read garbled rows.
Column headers are also matched exactly. Previously a header that merely contained a keyword could be picked up for the wrong field; now only an exact match counts.
If a row's total can't be read as a non-negative number, you'll see a clear error in the import preview instead of the amount silently becoming zero.
Smarter help when your invoice number is taken
Saving an invoice with a number that's already used this month now points out exactly which number is the problem, right on the field. When you're creating an invoice, the field is reset to the next free number — so you can fix and save in one step instead of hunting for a free one yourself.
Behind-the-scenes fixes
- Invoice numbers must now be positive whole numbers — the server rejects anything else with a clear message.
Smoother PDF Preview
The invoice preview updates as you type, so your typing stays smooth with no lag or interruptions.
Faster Dashboard
The dashboard loads faster and now shows year-to-date and all-time totals alongside the daily and monthly stats.
More Reliable Invoice Numbers
Invoice sequence numbers are now assigned server-side, so you never get duplicate numbers — even when creating invoices at the same time.
Editable Company Info
You can now edit your company name, logo URL, bank accounts, and thank-you message directly from the Settings page.
Safer Number Handling
Line item totals are calculated precisely — no more rounding surprises. Quantities are whole numbers and unit prices are clean two-decimal values, keeping your invoices tidy and accurate.
Form fields no longer get stuck on old values
When you navigated from one invoice to another in edit mode, the quantity, unit price, and sequence number fields kept showing the data from the previous invoice instead of updating to the new one. That's fixed. Fields now show the right values for whichever invoice you're editing.
Changelog dates are now human-readable
Dates in the What's New page were previously displaying as "2026-06-27". They now show as "27 Jun 2026" — easier to read at a glance.
Invoice numbers are now editable
The invoice number field was locked in the previous release. You can now type whatever number you need. When you create a new invoice, the server suggests the next sequence number automatically, but you can override it. If another invoice already uses that number in the same month, you'll get a clear error message when you save — no more duplicates slipping through.
This is useful if you skipped a number and need to fill in the gap, or if you're continuing a manual numbering system from outside Ditsy OS. The server still guides you, but you're in control.
Export columns renamed to plain sequence numbers
If you use the export or import feature, there's a change to know about. The column header in CSV and Excel files is now "Sequence No" instead of "Invoice No", and values are plain numbers like "42" instead of formatted strings like "042/VI/2026". Old CSV exports from previous versions won't import without updating the header and values.
Server errors are now more descriptive
When the server rejects a save — like when the invoice number you typed is already taken — you'll now see a clear message explaining what went wrong. Instead of a generic "Failed to save" toast, you'll see something like "Sequence number already taken for this month."
The Save button won't let an unready invoice through
A gap in the form validation meant you could hit Save even on an incomplete invoice — no items, empty fields, whatever — and it would go through as a zero-rupiah draft you'd have to clean up later. That's fixed. If something isn't right, you'll see what needs attention, and nothing gets saved until it is.
CSV import handles Indonesian prices correctly
If your spreadsheet uses dots as thousands separators (like "1.500" for 1,500 Rupiah), the CSV import now reads the price correctly instead of giving you 1.50.
Other fixes
- CSV files import faster because the XLSX reader only kicks in when actually needed.
- XLSX files exported from Ditsy OS are safer to open in Excel and other spreadsheet apps, with extra protection against potentially harmful formulas.
- Error messages in the crash recovery screen now render with a visible background.
Switching to the preview on mobile is noticeably faster
If you use Ditsy OS on your phone, switching from the form tab to the preview tab used to trigger a slow re-render — a noticeable pause while the PDF rebuilt itself from scratch, even if you hadn't changed anything. You don't see it anymore. The PDF preview now only regenerates when your form data actually changes, so tab switches are instant.
In practice this means you can tweak a line item, flip to preview to check the alignment, and flip back — all without the preview going blank for a second each time. And if something does go wrong loading the PDF, you'll get a clear error message instead of a silent white box.
Page navigation is now instant
Moving between invoices, settings, and the dashboard used to show a brief loading flash — especially when going back to a page you'd already visited. You don't see it anymore. The app now keeps pages alive for several minutes after you leave them, so navigation feels instant.
In practice this means you can check an invoice, jump to the dashboard to look at stats, and flip back to the invoice without any loading spinner.
This release turns invoice creation into a single smooth loop — type it, share it, see your stats.
Share invoices straight to WhatsApp
You can now share an invoice directly from the preview. No more downloading, switching apps, hunting for the right contact, and attaching a file. Tap Share as PDF to send the document, or Share as Images to send each page as a photo. Both options open your phone's share sheet so you can send to WhatsApp, email, or any other app in one step.
On phones that support it, the share buttons appear automatically in the Export menu. If your browser doesn't support sharing, the familiar download options are still there.
Invoice numbers are now automatic
The invoice sequence number no longer needs to be typed. Every new invoice gets the next number in the sequence, and it resets to 001 at the start of each month. No more remembering where you left off, no more duplicates.
The sequence field is now read-only so it's clear you don't need to touch it.
A dashboard that actually tells you something
The home screen now shows live invoice stats instead of a static welcome. You get today's count and total, yesterday's numbers, a 7-day view, and a monthly summary — all at once. Below the cards, a breakdown shows today's draft, sent, and paid counts.
The dashboard also shows how you're doing compared to yesterday: "3 today (+2 vs yesterday)" in green. Everything adjusts to your screen — two columns on a phone, four on a desktop. The Today card stands out so it's the first thing you notice.
If you haven't created any invoices yet, you'll see a prompt to make your first one. If data is loading, a clean placeholder appears — and if something goes wrong, you'll get a retry option.
Instant updates — no waiting
Change an invoice's status or edit its details and the list updates immediately. No waiting for the server — the change shows up right away and syncs in the background.
If your connection drops while you're working, a small banner lets you know. Changes are retried automatically when the connection comes back.
Export and import your data
A new Settings page gives you full control over your invoice data. Export everything as CSV or Excel — each line item gets its own row so you can analyse totals, quantities, and customer data in a spreadsheet.
Importing is just as straightforward. Upload a CSV or Excel file, and the app shows you a preview before anything is saved. It checks the file format, validates the data, flags any issues, and skips invoices that already exist. A downloadable template shows the exact format: one row per invoice, with items written like "Tas Vintage x1 @150000, Topi x2 @75000" in a single cell.
Typing in the invoice form is now smooth and responsive, and updates download faster than before.
Typing is now smooth
The invoice form used to feel sluggish because the PDF preview regenerated on every keystroke. Now you can type freely without any lag - it's smooth and responsive.
Updates download faster
When the app updates, you only download the parts that actually changed. Everything else stays cached from your previous visit, so updates land faster and the app feels snappier.
The app no longer flashes a white screen in dark mode, keyboard navigation is smoother, and the 404 page shows something useful.
No more color-mode flash on load
If you use dark mode, a white screen would briefly appear before the correct theme kicked in. That flash is gone now - what you see first is what you get.
Better keyboard navigation
A skip-to-content link appears when you tab into the page, form inputs have clearer labels, and interactive elements have visible focus states. Navigating by keyboard is more predictable.
404 page is no longer blank
Visiting a URL that doesn't exist now shows a proper page with a message and a link back home, instead of a broken layout.
Custom row padding no longer disappears when you save, and the app starts faster by loading the PDF viewer only when needed.
Custom row padding finally stays put
Row padding you set on a line item is now saved correctly. Before, if you adjusted the vertical padding on a row (to push content to the next page) and saved the invoice, the padding would disappear. Come back to edit that invoice later and your layout work was gone. That was a data-loss bug - the kind where the app silently throws away something you carefully set. It's fixed now. Set the padding once, it stays. Close the invoice, reopen it, the padding is still there.
Faster app startup
The PDF viewer is now loaded only when you open an invoice preview, not before. This means the app starts faster and feels snappier, especially on slower devices or when you first open the page. If you never view an invoice as PDF, the viewer engine never loads at all. No change to how the PDF looks or works - it just doesn't slow you down until you need it.
Behind-the-scenes fixes
- More reliable invoice numbering.
- More consistent total calculations.
- General reliability improvements.
More space for your invoice preview and less chance of losing one by accident.
Improvements
- Wider invoice preview - The preview panel now takes 60% of the screen on desktop (up from 50%), with the row padding fields moved to their own line so you've got room to breathe.
- Full-width PDF preview - The PDF preview now fills its container completely instead of being capped at a tiny fixed width. Bigger, clearer, better.
- Two-step deletion - Deleting an invoice now asks you to confirm and type the invoice number before it goes through. One fewer thing to worry about.
Better form layout when you're adding items on your phone. The quantity and price fields are now easier to tap, and each input has more room to show your numbers clearly.
We've been tuning things under the hood to make the app quicker and more stable.
Improvements
- Updated development tools — Better performance and fewer edge cases.
- More reliable updates — Updates reach you with less friction.
Bug Fixes
- Fixed a rare issue in invoice calculations.
You can now rearrange line items in your invoice - no need to delete and re-add.
New Features
- Item reordering - Drag or tap the up/down arrows to rearrange items in any order you want. The subtotals update automatically.
Improvements
- Cleaner item cards - Each line item now has its own card with better separation, making it easier to scan a long list.
- Refined typography - Better text sizing and spacing throughout the form for a more polished look.
Now you can save invoices to the cloud and pick up where you left off.
New Features
- Save to database - Your invoices are no longer temporary. Save them and come back later to continue editing or print again.
- Error protection - If something goes wrong while saving, the app will automatically retry so you don't lose your work.
- Error tracking - We've added monitoring to catch and fix issues faster behind the scenes.
Improvements
- Live subtotals - See your line item total update instantly as you type the quantity or price.
- Better date picker - The invoice date field now works reliably across all browsers.
- Form auto-save - Your draft won't disappear if you accidentally close the page.
Bug Fixes
- Fixed a crash some users experienced on certain browsers when opening the invoice form.
- Restored form data that wasn't being saved correctly when creating a new invoice.
Keep track of every invoice you've sent.
New Features
- Invoice history - Browse all your past invoices in one place. See who they were for, how much, and what status they're in.
- Invoice status - Mark invoices as Draft, Sent, or Paid so you always know where things stand.
- Cloud storage - Your invoices are now stored in the cloud, making them accessible across sessions.
Improvements
- Stable connection - The app stays connected reliably when saving and loading invoices.
- Better navigation - The sidebar now shows a direct link to your invoice history.
Welcome to Ditsy Invoice Generator - a simple, warm way to create professional invoices right from your phone or computer.
What's Included
- Create invoices - Fill in your customer's details, add line items with quantities and prices, and see the total calculated automatically.
- Live preview - See exactly how your invoice looks as you build it, with a clean, print-ready layout.
- Save as PDF - Download a real PDF file you can email or print.
- Save as PNG - Export a high-resolution image of your invoice for quick sharing.
- Print - Print directly from your browser.
- Dark mode - Works in light and dark themes, whichever you prefer.