Repository navigation
OpenConstructionERP v16.9.0
The dashboard now leads with the cases written for the country the reader works in. Eighty of the 220 guided cases name a market, and until now nothing on the front page said so: a site manager in Germany opened seventeen tiles of which none was necessarily German, while thirteen German cases sat in the catalogue behind a market row they had to know to look for. The new card decides which market to lead with in three steps and says out loud which one answered. An applied regional pack goes first, because switching a pack on is a plainer statement about where somebody works than the language their software is in, and a German speaker on a United States job is not a rare shape. Then the country the language registry declares, through the same helper the catalogue already orders itself by, so the hub and the dashboard can never disagree about what a language means. Then, and only for a language whose own country has no cases, the nearest market its readers work to. That third step is a suggestion and it is worded as one: a reader in Chile is offered the Spanish cases under a heading that says cases by market rather than cases for your market, because telling somebody in Santiago that Spanish payment law is theirs would be worse than saying nothing. Below the cases sits every market that has any, the reader's own first and the rest by how many they hold, as chips that switch the list in place. Pressing a chip is looking rather than choosing, so it does not quietly narrow the catalogue the reader opens next; only the button that names a market hands one to the hub. A case whose market has a pack on disk that is switched off says which pack it needs, in the same words the catalogue's own strip uses.
A quantity can now be measured by hand, with no drawing and no model. Not every quantity comes from a file, and the ones that do not were the ones the product had nothing to say about: a length paced on site, a count made from a photograph, a figure a subcontractor gave over the phone. They were typed into the bill as a number with the working kept somewhere else, usually a spreadsheet nobody else can find, and a figure whose derivation is missing is a figure that cannot be checked, which is the whole premise of measurement. A bill position now carries a measurement sheet. Each line has a description, how many times it repeats, up to three dimensions and a plus or minus, and shows its own subtotal; the sheet shows the measured total beside the position's current quantity and says by how much the two differ, and applying it writes the total into the quantity while keeping the lines under the position, so the number can be traced back to where it came from. A locked bill shows the sheet and lets nobody change it. The engine behind this had shipped several releases ago, measurement lines, a safe formula evaluator, the REB 23.003 and OENORM A 2063 presets and both endpoints, and nothing in the interface had ever called any of it, which is a particular kind of waste: the hard half was done and the answer to the person asking was still no.
The case catalogue now speaks the reader's language in far more of it. Card strings for the newest market cases went into thirty locales, the ten Indian cases were finished in Bengali, the Spanish market steps were written in Chilean and Colombian Spanish, and eighty cards were translated for both of those locales. The card tier is genuinely complete in twenty nine languages now, which is what the reader meets first: a case whose title and description arrive in English tells a reader in Warsaw or Bangkok that this catalogue was not written for them, whatever the steps inside it say. A ratchet records what each locale already answers and fails the build when a locale answers less, so the work cannot quietly regress, and the floor is measured from the committed tree rather than from anybody's working copy, which it has to be: measured from a working copy it twice recorded translations that were never committed and then failed every push over a regression that had not happened.
Two desktop faults are fixed. Showing a file in its folder did nothing at all, because the command that does it had been registered inside the test module rather than in the handler list, so the build carried the code and never exposed it. And a forced stop used to leave its unpacked copies behind, which accumulate, so the sweep clears them and the launcher no longer forces the stop that produced them.
Six locale bundles were briefly committed in a state where they could not be parsed at all, which is worth recording because the fix is a gate rather than an apology. The strings were correct on disk every time. They were staged through a patch taken with no context lines, and a patch like that carries only line numbers, so when it is applied to an index that does not share the working tree's line numbers the keys land past the brace that closes the translations, some of them after the file's export. Every check that ran read the working tree, where nothing was wrong. There is now a check that reads what is actually being committed, and the compiler's own parser answers it, since the compiler is the only reader whose opinion decides whether the application starts.
Smaller corrections, each found by reading rather than by a gate. Five words were wrong in shipped locales. The last of the geographic base layer keys and a lock label were still resolving to English. The Geo Hub's second step shipped without its accents in Chilean and Colombian Spanish, where the words it uses carry them and the versions without are different words. And the measurement sheet's add or deduct column is written the same way in every language we ship, so it is recorded as a symbol rather than being reported forever as an untranslated string. Czech lost its accents in two places and has them back: ten module names in the catalogue, which offered Rizeni projektu and Seznam nedodelku while the same file spells those words with their accents everywhere else, and seven help texts around the development and clash pages. Each one is written out by hand in the spelling the file already uses in quantity, rather than by a pass over the file that restores marks by rule, which is exactly the pass that once turned the German locale into non words.
The build machinery moved forward in two places that had been left behind: the frontend builds on Node 24 everywhere the container image already did, and the desktop packaging action is on its current major version.
Full Changelog: v16.8.3...v16.9.0