Latest changes

What changed, day by day.

New countries, new versions of their rules, releases, features and fixes — newest first, as the repository records them.

  1. featurenot released yet

    A machine key reaches the API In the changelog

  2. featurenot released yet

    The version of the schema, asked on its own In the changelog

  3. featurenot released yet

    A financial statement asked for by kind In the changelog

  4. fixnot released yet

    isServiceRoleKey() read no key in a browser. In the changelog

  1. country

    New country: United Arab Emirates The country page

  2. country

    New country: Austria The country page

  3. country

    New country: Schweiz The country page

  4. country

    New country: Italia The country page

  5. country

    New country: 대한민국 The country page

  6. country

    New country: Polska The country page

  7. country

    New country: Portugal The country page

  8. country

    New country: Saudi Arabia The country page

  9. country

    New country: ประเทศไทย The country page

  10. country

    New country: 臺灣 The country page

  11. country

    New country: Việt Nam The country page

  12. release

    Ekwo OS 0.7.0 is released In the changelog

  13. release

    Ekwo OS 0.6.0 is released In the changelog

  14. release

    Ekwo OS 0.5.0 is released In the changelog

  15. feature

    Start with Claude. In the changelog

  16. feature

    One installation, companies in several countries, from the command line. In the changelog

  17. feature

    ekwo import --accept-suggestions In the changelog

  18. feature

    npm run e2e:supabase -- --multi-country In the changelog

  19. feature

    ekwo.json describes the installation In the changelog

  20. feature

    instance.country is nullable In the changelog

  21. feature

    An account of the old books is posted to an account of the new chart only once somebody has said so. In the changelog

  22. feature

    import_already_done says what the first import was In the changelog

  23. feature

    The import_books tool refuses more than 256 KiB of text In the changelog

  24. feature

    The documented command of the MCP server carries @latest In the changelog

  25. feature

    The documented command of the CLI carries @latest too In the changelog

  26. fix

    ekwo init sends a secret key of the newer form the way Supabase documents it. In the changelog

  27. feature

    An install demo in the README. In the changelog

  28. feature

    Books kept elsewhere come in with one command. In the changelog

  29. feature

    ekwo import camt.053 | coda | cfonb120 In the changelog

  30. feature

    An import names its source by format or by the software that wrote it. In the changelog

  31. feature

    Four country packs more, 44 in all. In the changelog

  32. feature

    The MCP server starts with nothing configured. In the changelog

  33. feature

    Ready for the official MCP registry. In the changelog

  34. feature

    No competing product is named. In the changelog

  35. feature

    /multi-country/ on the site: several countries, one set of books. In the changelog

  36. feature

    A silence a pack states is no longer printed as a gap. In the changelog

  37. feature

    A filed return settles outside Belgium and France. In the changelog

  38. feature

    ekwo pack check names a bank statement format nothing reads In the changelog

  39. feature

    A posted invoice goes back to draft where its country allows it and nothing about it has left. In the changelog

  40. feature

    A posted invoice is cancelled, and a posted entry reversed, in one call. In the changelog

  41. feature

    The site can be published, and says where it lives only when it is told. In the changelog

  42. feature

    A way in for somebody who already has an account. In the changelog

  43. feature

    The site has an icon. In the changelog

  44. feature

    The bot CONTRIBUTING.md promised, and what a pull request goes through. In the changelog

  45. feature

    ekwo pack describe [<cc>] — the whole of one country, in one object. In the changelog

  46. feature

    Three planned modules written down: carbon, crypto and sign. In the changelog

  47. feature

    What the packs do not say yet, listed in docs/international.md. In the changelog

  48. feature

    A home page for Ekwo, and a world map that is the argument. In the changelog

  49. feature

    apps/site — one page per country, prerendered, with no JavaScript. In the changelog

  50. feature

    Thirty-four country packs more, from 6 to 40 countries. In the changelog

  51. feature

    One SYSCOHADA chart for the OHADA member States. In the changelog

  52. feature

    The lists of packs outside packs/ are written from packs/. In the changelog

  53. feature

    A cadence of any whole number of months, and a box frozen at the unit of its form. In the changelog

  54. feature

    A supply measured against its seller. In the changelog

  55. feature

    The packs of the first countries go further. In the changelog

  56. feature

    Ekwo readable by an AI assistant. In the changelog

  57. feature

    One record per design decision. In the changelog

  58. feature

    The site at ekwo.ai is built outside this repository. In the changelog

  59. feature

    The site compares any two countries on one page. In the changelog

  60. feature

    ekwo cancel and the cancel_document tool choose, and say which. In the changelog

  61. feature

    A posted document has one way out of posted, and reversed is written at last. In the changelog

  62. feature

    The site lets the reader choose its colours, and leaves room for its languages. In the changelog

  63. feature

    The statement formats a reader exists for moved to @ekwo-ai/core. In the changelog

  64. feature

    The site is set in two typefaces, self-hosted, on one set of tokens. In the changelog

  65. feature

    The country-literal guard reads apps/ too. In the changelog

  66. feature

    Ekwo presents itself as open source data infrastructure, and says what it is not. In the changelog

  67. fix

    The site froze on the time of day it was opened at. In the changelog

  68. fix

    A cancelled invoice could be unmatched from its credit note, and then said cancelled and not_paid at once. In the changelog

  69. fix

    A fresh installation was called behind by the next command. In the changelog

  70. fix

    The midrib ran tip to tip, and cut the leaf into a pod. In the changelog

  71. fix

    ekwo invoice created any kind of document, which is what ekwo doc is called. In the changelog

  72. fix

    The animated demonstration on the home page showed a command that does not run. In the changelog

  73. fix

    The mark read as an equals sign. In the changelog

  74. fix

    A reader who asked for less motion was shown a heading that said "set free." and nothing else. In the changelog

  75. fix

    docs/releasing.md said one approval publishes every package. It took fifteen. In the changelog

  1. country

    New country: Australia The country page

  2. country

    New country: Burkina Faso The country page

  3. country

    New country: Bénin The country page

  4. country

    New country: République démocratique du Congo The country page

  5. country

    New country: Centrafrique The country page

  6. country

    New country: Congo The country page

  7. country

    New country: Côte d’Ivoire The country page

  8. country

    New country: Cameroun The country page

  9. country

    New country: Germany The country page

  10. country

    Estonia pack 1.10.0 The country page

  11. country

    España pack 0.2.0 The country page

  12. country

    New country: España The country page

  13. country

    France pack 1.15.0 The country page

  14. country

    New country: Gabon The country page

  15. country

    United Kingdom pack 0.8.0 The country page

  16. country

    New country: Guinée The country page

  17. country

    New country: Guinée équatoriale The country page

  18. country

    New country: Guinée-Bissau The country page

  19. country

    New country: Hong Kong The country page

  20. country

    Ireland pack 0.2.0 The country page

  21. country

    New country: Ireland The country page

  22. country

    New country: 日本 The country page

  23. country

    New country: Comores The country page

  24. country

    Luxembourg pack 1.9.0 The country page

  25. country

    New country: Mali The country page

  26. country

    New country: México The country page

  27. country

    New country: Niger The country page

  28. country

    New country: Nederland The country page

  29. country

    New country: New Zealand The country page

  30. country

    New country: Singapore The country page

  31. country

    New country: Sénégal The country page

  32. country

    New country: Tchad The country page

  33. country

    New country: Togo The country page

  34. country

    United States pack 0.8.0 The country page

  1. country

    Belgium pack 1.15.0 The country page

  1. country

    New country: United Kingdom The country page

  2. country

    New country: United States The country page

  3. release

    Ekwo OS 0.4.1 is released In the changelog

  4. release

    Ekwo OS 0.4.0 is released In the changelog

  5. feature

    The command line is published as ekwo-os, and the command it installs is still ekwo. In the changelog

  6. feature

    A company leaves an installation with its books, and arrives in another one alive. In the changelog

  7. feature

    @ekwo-ai/coda and @ekwo-ai/cfonb120 — the two formats of fixed positions the packs already named. In the changelog

  8. feature

    import_bank_statement() — a statement is imported once. In the changelog

  9. feature

    A posted invoice is sendable from the three views, with nothing told to the brick. In the changelog

  10. feature

    @ekwo-ai/camt053 — the first brick that reads. In the changelog

  11. feature

    npm run release:publish — what a release publishes is read from the workspaces. In the changelog

  12. feature

    The command line keeps books: contact, invoice, post, payment, match, doc. In the changelog

  13. feature

    @ekwo-ai/peppol-ubl — the invoice the packs already promised. In the changelog

  14. feature

    Books at volume: the plans are read, and the build breaks on their shape. In the changelog

  15. feature

    docs/firms.md — an accounting firm and its clients, on one page In the changelog

  16. feature

    The portfolio: every company somebody keeps, read at once. In the changelog

  17. feature

    ekwo login, logout, use and whoami — the command line learns who it is. In the changelog

  18. feature

    @ekwo-ai/vat-consignment 0.3.0 — a firm files for its clients, in one file. In the changelog

  19. feature

    A client preset: the person whose company it is, in the installation of whoever keeps their books. In the changelog

  20. feature

    The CLI answers a program as well as a person. In the changelog

  21. feature

    A first country walks the whole chain. In the changelog

  22. feature

    The proof, pack by pack. In the changelog

  23. feature

    A deposit, and what came back. In the changelog

  24. feature

    The file of a periodic VAT return, which existed for no country. In the changelog

  25. feature

    What moved after it went. In the changelog

  26. feature

    What a declaration owes. In the changelog

  27. feature

    A box of a filed declaration is a number and a kind. In the changelog

  28. feature

    When a declaration is due. In the changelog

  29. feature

    A declaration that was filed is a row, not a report. In the changelog

  30. feature

    What the money pays. In the changelog

  31. feature

    Who the money came from, and a memory of how we knew. In the changelog

  32. feature

    A tax follows the territory of the parties. In the changelog

  33. feature

    A box of a declaration may be a rate of another box, and a form may be printed in the order it is printed in. In the changelog

  34. feature

    A pack's claims about the arithmetic of its own form are read. In the changelog

  35. feature

    A vocabulary for a tax that is not a value added tax. In the changelog

  36. feature

    A cadence per declaration, and a ledger line that names its posting. In the changelog

  37. feature

    The United States, the first country with no value added tax. In the changelog

  38. feature

    A price that already holds its tax. In the changelog

  39. feature

    A tax posting names every box the form prints its amount in. In the changelog

  40. feature

    The United Kingdom, packs/gb/, and the first country outside the Union. In the changelog

  41. feature

    Ten assertions of the test suite were an unnamed country. In the changelog

  42. feature

    The document rules of a country cite the article behind them. In the changelog

  43. feature

    The core can say where the common system of VAT applies, and under which two letters. In the changelog

  44. feature

    intracom_triangular. In the changelog

  45. feature

    A conflict marker cannot be committed. In the changelog

  46. feature

    status, doctor, pack status and pack upgrade --json put their report under data. In the changelog

  47. feature

    Wrong arguments to ekwo init end on 2, not 1 In the changelog

  48. feature

    socleCode() moved from @ekwo-ai/mcp to @ekwo-ai/core In the changelog

  49. feature

    auto_settle() no longer stops on a line it cannot book. In the changelog

  50. fix

    Row level security cost nine to forty-five times the query it guarded — found by tests/load/. In the changelog

  51. fix

    suggest_contacts() scored every contact of the company for every statement line. In the changelog

  52. fix

    Two SECURITY DEFINER functions checked nobody — found by the sweep above. In the changelog

  53. fix

    @ekwo-ai/vat-consignment 0.2.0 — the schema was read, and it disagreed four times. In the changelog

  54. fix

    The tax point stopped being a word nobody read, and three packs stopped declaring a derogation as if it were their principle. In the changelog

  55. fix

    A chart, a statement and a statement line can be traced to the text they come from. In the changelog

  56. fix

    supabase/migrations/README.md lists every migration again. In the changelog

  57. fix

    A format library runs its own tests again. In the changelog

  58. fix

    An exemption reason code was demanded of a country the list does not reach. In the changelog

  59. fix

    packs/gb/ 0.1.1 In the changelog

  60. fix

    A VAT category came back padded with a space. In the changelog

  61. fix

    A document was reprinted in a language it was never sent in. In the changelog

  62. fix

    An entry is posted by post_entry(), and a document by post_document(). In the changelog

  63. fix

    A posted entry is immutable, in an open period too. In the changelog

  64. fix

    A posted document is immutable, by the database. In the changelog

  65. fix

    A session nobody prepared is not the installer. In the changelog

  1. country

    New country: Estonia The country page

  2. country

    New country: Luxembourg The country page

  3. release

    Ekwo OS 0.3.0 is released In the changelog

  4. feature

    The sources of a pack become a register somebody can open. In the changelog

  5. feature

    A treatment for a service bought from a supplier who is not established here, and a check that a tax's three code lists agree. In the changelog

  6. feature

    A document can be sent to the person it is addressed to, behind a link they open without an account. In the changelog

  7. feature

    The recapitulative statement of intra-Community supplies, as one function of the core and four format bricks. In the changelog

  8. feature

    A company opens on the part of its chart it actually works with. In the changelog

  9. feature

    How often a company files its VAT return is data, and the return reads it. In the changelog

  10. feature

    Luxembourg, as packs/lu/. In the changelog

  11. feature

    Estonia, as packs/ee/, a pack written from the outside in. In the changelog

  12. feature

    A pack declares the number its compiled seed carries, and a published number never changes. In the changelog

  13. feature

    ekwo doctor compares the database to an inventory of what the release defines. In the changelog

  14. feature

    A golden year of books per country pack, and a legal source on every tax and every box. In the changelog

  15. feature

    An end-to-end test: the same release installed two ways, and a whole financial year played out. In the changelog

  16. feature

    The country pack is documented end to end, and an installation says what it leaves for its operator to do. In the changelog

  17. feature

    A test may book in a country. It may not expect one. In the changelog

  18. feature

    A base is written once, and printed as often as the form likes. In the changelog

  19. feature

    The code and the type of an account stop moving once it is in use. In the changelog

  20. feature

    tax_report_templates.period is now periods, a list, with no default. In the changelog

  21. feature

    The real-project end-to-end run times every step. In the changelog

  22. fix

    ekwo pack check refuses a sign on a statement line computed from other lines. In the changelog

  23. fix

    ekwo pack upgrade left a company on the old version when the release changed nothing the difference compares. In the changelog

  24. fix

    ekwo status and ekwo doctor reported an ordinary installation as ahead of the CLI. In the changelog

  25. fix

    docs/schema.md no longer reorders its overloads on its own. In the changelog

  26. fix

    The schema grants its own rights, and the anonymous role holds none on any table. In the changelog

  1. country

    New country: Belgium The country page

  2. country

    New country: France The country page

  3. release

    Ekwo OS 0.2.0 is released In the changelog

  4. feature

    An append-only audit trail, and the first pack upgrade. In the changelog

  5. feature

    An amount is rounded at the decimals of its currency, by the method of its country. In the changelog

  6. feature

    Every label a user reads, in every language the country pack publishes. In the changelog

  7. feature

    The FEC carries its opening balances, and an unclosed year carries its result. In the changelog

  8. feature

    Modules: one Postgres schema each, and the ledger only through a function. In the changelog

  9. feature

    assets — fixed assets, their depreciation and their disposal. In the changelog

  10. feature

    budgets — what was planned, against what was booked. In the changelog

  11. feature

    A role is a preset, a capability is what a policy tests, and a company has a face. In the changelog

  12. feature

    Invitations. In the changelog

  13. feature

    User preferences, and one way to choose a label. In the changelog

  14. feature

    A company profile an invoice can be printed from. In the changelog

  15. feature

    Numbering reads the country pack. In the changelog

  16. feature

    Keys for machines. In the changelog

  17. feature

    The first financial year is a parameter. In the changelog

  18. feature

    The format libraries live here now, under packages/formats/, one MIT package per format and never one per country. In the changelog

  19. feature

    VAT falls due when the cash moves, and the exchange difference when it settles. In the changelog

  20. feature

    What a country requires on a document is data. In the changelog

  21. feature

    A country has charts of accounts, not one chart. In the changelog

  22. feature

    Financial statements are data. In the changelog

  23. feature

    One evaluator for both reports. In the changelog

  24. feature

    An appropriation entry is not a closing entry. In the changelog

  25. feature

    One tax engine, several kinds of tax. In the changelog

  26. feature

    tax_on_base, a posting that books non-deductible VAT on the account of the line. In the changelog

  27. feature

    Belgium and France gain the taxes that needed it In the changelog

  28. feature

    No currency and no language written into the code either. In the changelog

  29. feature

    No default country, anywhere. In the changelog

  30. feature

    Five country literals removed from published migrations. In the changelog

  31. feature

    Declaration boxes are data, and vat_return() holds no country. In the changelog

  32. feature

    Opening balances and a year-end close that is a parameter, not a branch In the changelog

  33. feature

    Ekwo maintains a pack; only an accountant reviews one. In the changelog

  34. feature

    Two columns Canada will need, added before Canada. In the changelog

  35. feature

    An installation knows which country pack it holds, and each company knows which one it copied. In the changelog

  36. feature

    Country packs, and the compiler that turns one into a seed. In the changelog

  37. feature

    products, in the core rather than in a module beside it. In the changelog

  38. feature

    A bank account at install time, and a tool to add one later. In the changelog

  39. feature

    The write path has a test under row level security. In the changelog

  40. feature

    npx @ekwo-ai/mcp In the changelog

  41. feature

    post_payment(payment_id) In the changelog

  42. feature

    npx ekwo init In the changelog

  43. feature

    ekwo migrate, ekwo status, ekwo doctor, ekwo demo. In the changelog

  44. feature

    ekwo register / ekwo unregister. In the changelog

  45. feature

    A migration history compatible with the Supabase CLI. In the changelog

  46. feature

    The schema travels with the package. In the changelog

  47. feature

    .env.example In the changelog

  48. feature

    A test suite for the installer In the changelog

  49. feature

    The postings of one side of a tax share out the amount of the group In the changelog

  50. feature

    document_tax_summary.tax_charged counts tax_on_base postings In the changelog

  51. feature

    The two constraints on a posting's account become one In the changelog

  52. feature

    list_taxes and the ekwo://companies/{id}/taxes resource expose the new columns In the changelog

  53. feature

    The repository is Ekwo-ai/ekwo-os In the changelog

  54. feature

    Eighty-five foreign keys had no index on the side that needs one. In the changelog

  55. feature

    The additive-migrations rule runs on every push, not only on a pull request. In the changelog

  56. feature

    docs/schema.md is checked to be the output of the generator. In the changelog

  57. feature

    @ekwo-ai/core/fec and the FEC re-exports of @ekwo-ai/core are gone. In the changelog

  58. fix

    A jsonb argument crossed the direct-Postgres route as a Postgres array. In the changelog

  59. fix

    --db-region built a pooler hostname and called it the answer. In the changelog

  60. fix

    Three columns of country_defaults had no reader. In the changelog

  61. fix

    A freshly installed company refused its first payment. In the changelog

  62. fix

    Nobody but the database owner could post an entry. In the changelog

  63. fix

    aged_balance reported any group it did not know as receivable. In the changelog

  64. fix

    A cash-basis tax whose posting named no declaration box never settled. In the changelog

  65. fix

    Seven columns defaulted to 'EUR' and one to 'fr'. In the changelog

  66. fix

    A negative half was rounded three different ways by three packages. In the changelog

  67. fix

    A connection that could not declare itself the installer carried on. In the changelog

  68. fix

    A machine key could do anything, because it has no session. In the changelog

  69. fix

    is_company_owner() and can_write_company() answered NULL to a stranger, and not NULL never raises. In the changelog

  70. fix

    EKWO_ACCESS_TOKEN was the second door for a service_role key. In the changelog

  71. fix

    A test now fails if any function of public is executable by PUBLIC. In the changelog

  72. fix

    A function created after 20260911210131 was open again. In the changelog

  1. release

    Ekwo OS 0.1.0 is released In the changelog

  2. feature

    The instance. In the changelog

  3. feature

    An instance-level role. In the changelog

  4. feature

    Schema. In the changelog

  5. feature

    account_type with eighteen values In the changelog

  6. feature

    post_document(id) In the changelog

  7. feature

    Numbering In the changelog

  8. feature

    Period locks In the changelog

  9. feature

    Bilateral matching In the changelog

  10. feature

    Reports In the changelog

  11. feature

    Country templates In the changelog

  12. feature

    Seeds In the changelog

  13. feature

    @ekwo-ai/core In the changelog

  14. feature

    Tests In the changelog

Nothing here is written by hand. Releases, features and fixes are read from the changelog, and countries from the packs themselves, so a country that lands in the repository is on this page the next time the site is built.