Products indiPDF indiAccounting indiBudget All Products Company Blog About Download
November 2, 2026 Matt Milano

indiDatabase 1.5: A Repeating Panel You Type Into, and Thirty-Two Points From One Reader

indiDatabasereleasedatabasesmall-businessLotus-ApproachLinuxFlatpakFileMaker-alternative

A ton of feedback from users helped shaped this release..

Much of the feedback came from offices still running Lotus Approach. They had seen the import, the macros and the structure summary, and then they asked about the one screen their day actually happens on: the invoice form, with its lines typed straight into a panel under the customer. In indiDatabase, that panel could show the lines. It couldn’t take them.

indiDatabase 1.5 is out today. It has the panel, and it has an answer to all the feedback we’ve received to date.

A repeating panel you type into

A form’s panel of related records now works the way Approach’s did.

  • Every related record is there, scrolling inside the panel’s box, in an order you choose in the form designer, with a count of how many there are.
  • Type straight into a row. The grid’s rules, permissions and record locks all apply. A row is saved when you leave it. Esc undoes the box, then the row. A refused row says why, beside it and in the unsaved-changes bar, with Show it to go back to it.
  • The blank row at the bottom adds a record with the join already filled in. On a new invoice, moving into it saves the invoice first. Nothing you type is lost while a line saves, even on a slow network.
  • Delete a row with Ctrl+Delete or its ✕, after a question, and undo it if you change your mind. A total of the lines, such as the invoice’s, follows every change.
  • A panel can be read only, set in the designer, and it is read only anyway for anyone whose role can’t change that table. A printed panel says how many lines didn’t fit.

Two smaller changes came from the same offices. Button and macro steps can now read calculated fields, so “only if Total > 1000” works, using the value the screen shows. And an Access file’s tables are listed A to Z when you import them.

Several windows, and a window that says what it is

  • More than one window. Choose New window in the list of recent databases, or Open in a new window…. Each database opens in one window, so two windows never fight over a file. Closing a window that is sharing its database asks first, and says how many computers would lose their connection.
  • A useful window title. It names the database and what’s open, the way the email suggested: indiDatabase | Eugene’s Books | TABLE Customers, or FORM, FIND, MACRO and REPORT. With several windows open, the taskbar now tells them apart.
  • The database’s name is at the top of the side panel, under the logo. When you’re working in a database another computer shares, that’s said in a blue card at the foot of the panel, with Disconnect. It used to be a strip across the top of the window, taking height from your records.
  • Macros have their own section, level with tables, finds, forms and reports. The entry you’re on stands out more clearly, with a blue bar beside it.
  • The side panel can hide itself. Tick Hide the side panel when not in use under Settings → General → Appearance, and it becomes a narrow strip. Click the strip, or press Ctrl+Shift+L (even while typing), and it slides out over the window. The window can then be as narrow as 720 pixels: useful for a database that stays open beside your other work all day.
  • More text sizes: 85, 90, 100, 110, 120, 135, 150 and 175%.

Pick from a list, one value or several

A field’s Rules… can now hold a list of values. Wherever you type into the field (the grid, a form, a panel, Find), the list opens under it. Typing narrows it, and the arrow keys and Enter pick.

Tick Can hold several of these, and a record can hold any number of the values. A click, Ctrl+click or Space ticks them, and they show in a row: Red, Blue. However they’re written (by a person, an import, a button, another program), they’re kept in the list’s own order, each once. The file itself refuses a value that isn’t on the list.

Dates the way you write them

  • Settings → General → Dates offers 2026-02-08, 08.02.2026, 08/02/2026 and 02/08/2026, each shown with today’s date. A date typed in another shape is refused, never read the wrong way round.
  • A calendar of our own is in every date box. Enter or a double-click chooses a day, Esc closes it, and Alt+Down opens it from the keyboard. The week starts on Monday where that’s the custom. It replaces the browser’s own picker, whose tiny triangle was hard to hit.
  • “The moment it is made” was an hour out in the Flatpak, because the part of indiDatabase that keeps the database couldn’t see the time zone, and used UTC. It now takes the clock of the computer you’re typing on. Report a problem now includes the time zone, in case anything still looks wrong.

Ä where it belongs

Until now, text was sorted by character code, so a German name starting with Ä landed after Zebra.

1.5 sorts text in dictionary order: ä with a, ö with o, ü with u, and ß as ss; é with e, ñ with n, and so on. “Ärger” now comes straight after “Arg”. This is the order German dictionaries use (DIN 5007-1), and the one most programs on your computer use. It’s the same for every language and every computer, so two desks sharing a database always see the same list. Numbers inside text sort as numbers, so “Item 2” comes before “Item 10”. And finds now ignore capitals in every alphabet, not just A to Z.

The grid itself got easier to use, too:

  • Column widths. Drag a heading’s edge, double-click it to fit what the column shows, or use Shift+Left and Shift+Right. Widths are kept on your computer, for each table, until you Reset column widths.
  • Sort arrows you can see. Every heading shows a faint pair, and the column you sort by shows one filled blue arrow.
  • Tall text stays tall. A Long text box on a form shows every line, at its full size, whether or not you’re typing in it. A Text box you make taller does the same.

Rules you can change your mind about

Required and No duplicates are now the first two settings in a field’s Rules…, and you can turn either one on or off at any time. Before, “Make unique” couldn’t be taken back.

Turning one on is refused while records break it, and indiDatabase names them: “records 2, 4, 6”, or “‘B7’ on 3 records”. So you can fix them first. Text that’s only spaces counts as empty, so Required always means a real value.

No duplicates still allows empty fields, as every database does: an empty field has no value to repeat. That surprised our reader, so the setting now says it, beside the box. Tick Required as well when a value must be both present and unique.

Reports as web pages

Save as web page…, on the Reports screen and in Preview, writes the report as one HTML file that any browser opens, with no scripts and nothing loaded from anywhere else. Links in your fields stay real links.

Or fill it into a template of your own. Write {{title}}, {{date}} and {{report}} where they belong, or a part between <!--each record--> and <!--end each--> to repeat for every record, with {{Field name}} for its values. Your markup is kept exactly. Everything filled in is written as text, never as code.

Save to the same file again updates the page with one click, so a reload in Firefox brings it up to date. A button or a macro can do the same.

Your data, from other programs

indidatabase-cli comes with the Flatpak. It lets a shell script, a cron job or another program read and change single fields:

indidatabase-cli get Orders 1042 City
indidatabase-cli set Orders 1042 Status "Sent"
indidatabase-cli append Paints 12 Colours Blue
indidatabase-cli find Orders City=Berlin

append adds to the end of a text, or a value to a list of several. There are also prepend, remove (one value from such a list) and clear. Add --json for answers another program can read. It pairs with your database exactly like another computer in the office, then signs in as one of your users. So it can do only what that person may do, every change is in the record’s history under their name, and every other desk sees it at once.

Links work the other way, too. Settings → General → Links lets each computer add kinds of link of its own, such as obsidian:, alongside web, mail, file and indiDatabase’s own record links. Kinds that could run a program, reach a network share or open a terminal can never be added. The button that opens a link is bigger now, and grows with the text size.

Help you can read

Our reader’s first language isn’t English, and our help was hard going. That was a fair point. We rewrote all of it in plain English: shorter sentences, everyday words, no idioms.

There’s now a ”?” in more than fifty places in the window, each opening the help at the part that explains it. And the new Formula Guide covers every function with a worked example, and the messages you may see. A Formula help link sits beside every box where you type a formula.

A few smaller points from the same email:

  • Settings opens under the heading General, as it should have done all along.
  • New table… has a Fields heading, and Delete table lives on the Schema screen only.
  • Pairing a computer allows fifteen minutes, not five. That’s enough time to open a firewall on two machines.
  • In the Flatpak, Settings → About now says that Flathub keeps indiDatabase up to date. Its Check for updates button looked at our website rather than at Flathub, so it’s gone there.

Since 1.3

We didn’t write up 1.4, so in short: form fields can wear named text styles, reports have their own text size, a typed field can become a calculated one (after a preview of what would change), and every list in the window is A to Z. You get all of it with 1.5.

The second month, handled

As every release does, we ran 1.5 the way an office does in its second month, and fixed what broke before shipping:

  • A value can’t become code in a web page. A template may place a field’s address inside a link’s quotes, but nowhere else in a tag, and never in a script, a style or an attribute such as onclick. A template that tries is refused, naming the line.
  • A page you chose stays yours. Where each report’s web page was saved is kept on your own computer, not in the shared design. So a colleague’s button can’t write over a page you chose for another report.
  • An older desk can’t undo a list of several. A computer still on 1.4 that saves a field’s rules at a 1.5 host keeps the list able to hold several values.
  • A dangerous link stays closed. A file: link to a program or a script is refused on every system, and the never-opened list is longer.
  • indidatabase-cli keeps its pairing safe. It refuses a password file other people can read, and a pairing folder that isn’t safely yours.

Before you update

1.5 is a free update for everyone on 1.x, and it doesn’t change the file format: a database opened in 1.5 still opens in 1.4.

Update every computer in the office, though. A computer on 1.5 now learns which version the computer sharing the database runs, and says in words when that one is too old for something, instead of disconnecting. A computer on an older version at a 1.5 host can still read and type. But they show some new messages in English, and can’t change the design of a table that has a list of several values.

Getting it

indiDatabase 1.5 is on our download page for Windows 10 and 11 (code-signed) and Linux: Flathub, AppImage, .deb and .rpm. indidatabase-cli comes with the Flatpak. macOS is coming later.

Single-user is $199. Multi-user, with every computer in the office, is $399. Upgrade from single-user for the $200 difference, never full price twice. Updates are free for all of 1.x.

Every copy starts with a 30-day free trial with everything turned on, sharing included, and no credit card.

And if you’ve written to us: thank you. Thirty-two points from one careful reader made this release better for everyone. Keep them coming.

Buy it once. It keeps working.

← All Posts