Updating
Omnipacto tells you when a new version is out. Updating takes a minute and does not touch
your data: it lives in the data/ folder next to the compose file and stays where it is.
How it works
In the folder that holds the docker-compose.yml:
docker compose pull
docker compose up -d
That is all. The first command fetches the new version, the second starts it. Any changes to the database run by themselves on start.
Back up first? Never hurts and is quick: copy the
data/ folder while the app is stopped (docker compose down). To go
back, restore the folder and put the previous version into the compose file, for example
ghcr.io/maaatze/omnipacto:0.4.8 instead of :latest.
One thing that can go wrong
Do not simply raise the PostgreSQL major version in the compose file.
PostgreSQL will not open a data directory created by an older major version. The container
then restarts endlessly and its log says database files are incompatible with server.
To switch: download a backup with the old version (Settings, Backup), stop Omnipacto,
rename data/postgres, change the version, start, restore the backup. Unless you
have a reason, leave the line as it is: Omnipacto ships the matching version.
What changed
Generated from the release notes inside the app. The German page aktualisieren.html is written by hand and also covers the versions before 0.3.3.
0.5.0
New
- Cloud: The withdrawal function (section 356a BGB) is reachable as “Withdraw contract”, without signing in, on the login page, at registration and in settings. You pick Plus or the licence, give your name and email address and confirm. The receipt appears on screen with date and time (to print or save as PDF) and arrives as email with the same lines. A withdrawal decides nothing on its own: plan and subscription stay until we have processed it. If the function is down, the page names the provider’s email address and phone number.
- Cloud: The login page, registration and Settings, Account show imprint, privacy, terms, withdrawal notice, “Withdraw contract” and “Cancel contracts here”. “Cancel contracts here” leads to the same confirmation page on the website everywhere, also from the sidebar, and appears only once on a page. Registration links the terms and privacy notice and points out that the cloud is meant for private use only. Self-hosted, none of this appears.
- Cloud: Directly in the Plus card, before the way to checkout, it says what the contract is: price of €4.99 a month (no VAT under section 19 UStG), term, monthly cancellation, free months and what follows, defect rights, right of withdrawal and the provider with phone number. The checkout carries a “Pay” button instead of “Subscribe”, asks for the tick for the terms with a link and repeats the key details at the button. The payment method is collected even with a 100 % voucher, so that Plus does not end silently after the free months.
- Cloud: When a Plus subscription with a 100 % voucher (free months) is about to end, Omnipacto sends exactly one email at most seven days before: after that Plus costs €4.99 a month, cancelling until then costs nothing, and the way is “Manage subscription”. There is no email for a partial discount, without an end date or when the subscription is already cancelled.
- Cloud: As soon as a Plus subscription exists, Omnipacto sends one contract confirmation per subscription (section 312f BGB) to the account: contracting party with address, phone and email, price, start, term, free months, cancellation, defect rights, the withdrawal notice as worded on the website and the model withdrawal form. The terms and the notice are attached as HTML. If outgoing mail is not set up, the email is sent as soon as it works.
- At /.well-known/security.txt the server names the contact address and policy for security issues; every other address under /.well-known/ answers 404 instead of the start page. The daily run writes one line at the start and a summary per run (duration, reminders checked, sent, failed, letters, steps with errors), errors with a stack trace. An expired licence key is rejected with a clear message when entered; a stored key that has since expired stays visible.
- Cloud: Receipts from “Withdraw contract” are deleted on 1 January of the fourth year after receipt, once the limitation period has ended. An address gets at most one confirmation per 24 hours, also with additions like “+1” before the @. Per connection at most three withdrawals per hour and ten per day go through, even when many requests arrive at once.
- Above the cost tabs it says how many running contracts without a price are not included, with a link to the filtered contract list. The number of included contracts is unchanged.
- In the household the tab, and everywhere it is mentioned, is called “Checklists” instead of “Lists”: New checklist, Create checklist, All checklists, Delete checklist.
- Checklists with steps from several areas carry sub-headings: contracts, utilities (meter reading, connection) and authorities & daily life with the number of steps. There is no extra level, the filter keeps working, and areas without a visible step are omitted.
- Under “Next up” a jump line shows the numbers of the action plan; each number jumps to its group. The key figures are flatter, “Why am I seeing this?” sits in the header line, and on a 1350 by 900 screen three instead of two tasks of the plan are fully visible.
- Cloud: Through “Withdraw contract” at most 60 receipt confirmations per hour leave by email in total, on top of the limit per connection and per address. Before, anyone with many connections could trigger any number of emails to other people's addresses. The withdrawal itself is still always accepted, stored, confirmed on screen and reported to the operator. Once the limit is reached, the page says the email confirmation will follow shortly; it is sent as soon as there is room again, with the time of receipt. The summary email to the operator names the number of postponed confirmations.
- Cloud: The cancellation button accepts a language (German or English, German if omitted). The confirmation email and the time of receipt in the reply are in that language; the log for the operator stays German and names the language.
- If Omnipacto detects a rule conflict for a contract (for example a renewal that is too long under section 309 no. 9 BGB), the overview, contract header, scenario, reminder, monthly letter and cancellation dialog all say the same: “According to the details entered it would be another €358.80. The renewal or notice rule is legally questionable, please check.” The cancellation day counts as calculated from the details entered, the early date stays, and a personal confirmation does not hide the note. For such documented cancellations the benefit report still counts the saving, but no avoided commitment.
- The upkeep item on the overview becomes a guided upkeep round: it always shows one case with the contract, current price, last check and supporting documents, and offers “Price is still correct”, “Change price”, “Later” and “Open contract”. The progress is shown at the top (“Case 1 of 18”), and an area filter narrows the round to one group of contracts. Anyone who pauses continues at the same place later: the place is stored on the server, per household and person, and survives reloading and switching devices. Confirmed cases leave the round and stay in the history of the contract, “Later” moves a case to the end without confirming it, and Undo works as before. There is deliberately no bulk confirmation. The long list stays as the full overview under Household, State.
- The “To do” list below the action plan is gone: it named the same contracts a second time. Missing prices and documents, open findings, unlinked documents and the sender address now form the group “Upkeep” in the plan, outdated details one single upkeep round. Handing a case over to a person and “Why am I seeing this?” are there too. Every case appears exactly once, and the figure, plan, household and family count the same source.
- Lists for changing accounts and life events can be created from the empty state, also in the demo; anyone who may only read gets an explanation instead of a request. The family page also shows, per person, the action plan cases they are responsible for, kept apart from explicit family tasks; the counter on the tab names both.
- Numbers, percentages and units follow the language of the interface, not the browser: 2,668 kWh, 8.98 kWh a day and −4.4 %. Amounts in check notes read like everywhere else, such as “€16.40”. Each contract is rounded to the cent before summing; the yearly projection is the monthly total times twelve, and the calculation says so. While costs load, placeholders replace preliminary amounts.
- Outdated prices are asked about later or earlier depending on area and payment interval (yearly fees later, energy earlier). “Price is still correct” sets a check date on the contract, creates no price entry, appears in the history and can be undone. The note only returns after the matching period.
- One contract state: draft, active, decision due, cancellation planned, sent, confirmation missing, confirmed, runs until contract end, ended, dormant and unclear. Tasks, reminders, cost effect and allowed actions are defined per state in one place (docs/ZUSTAENDE.md). After a sent or confirmed cancellation “Can be cancelled until” no longer appears anywhere, and reminders, calendar, dossier, export and search follow the same state.
- Plausibility check: end before start, confirmation before sending, price before contract start, cancelled without end, ended with running costs, duplicate prices and deleted payment methods are reported. Outdated details (price for 24 months, contact, payment method, bill, meter reading) appear as a request to take a look, never as an error. Every note leads to the field and can be marked done, ignored and reopened.
- “Why am I seeing this?”: deadlines, renewal costs, reminders, tasks, the projection and the special right to cancel explain their calculation and basis, for example “confirmed by you on …”. The note opens and closes with the keyboard.
- Preview and undo: ending, reactivating, marking a cancellation as sent or confirmed, deleting a contract or price say first what changes, for example “no longer counted in the monthly costs, the history stays”. Afterwards Undo stays for ten seconds. Status changes and cancellation steps can also be undone permanently.
- Delivery centre under Settings, Reminders: next reminder with contract, day and method, last successful delivery per method, failed deliveries with reason and test message. A delivery method can be set as fallback, the order is selectable. It only gets a message when no normal method delivered, on success there is no duplicate.
- Paperless status under Settings, Documents: reachable or not, last successful connection, number of linked documents, links pointing nowhere, recently read documents and “Test connection”. During an outage it says the contract data stays available, and “Try again” appears when opening and assigning.
- This installation shows version, build and build date, the state of email, archive and daily run, the last successful backup check, known limitations and the addresses for bugs and security reports.
- People on a contract now have roles. Besides the policyholder, who stays the main person and the sender of cancellations, there are other contract parties (co-borrowers, co-owners of a joint account, co-policyholders), insured people and people with power of attorney. The labels follow the line, for example “Other borrowers” or “Other account holders”. The people page shows “Contract party on …” and “Power of attorney for …”, the emergency dossier has a section for powers of attorney, and backup and data export carry the roles. Existing insured people are kept unchanged. The example household has a joint account with two holders and a power of attorney.
- Notifications: next to every delivery method (ntfy, webhook, email, browser) there is a button that sends a test message at once, in the edit dialog even before saving. If sending fails, the reason is shown with the status and text of the receiver, for example “HTTP 401”, instead of a silent failure.
- Details from documents: the new button “Mark all as reviewed” settles all read documents of a contract at once, also in the summary and also without a language model. The number of details to review on the overview then drops to zero.
- Paperless: the document picker shows whether and with which contract a document is already linked, plus the filter “Only not yet linked”. The owner of a document can appear as a chip next to the tags and works as a filter like a tag; without the permission “View users” in Paperless it reads “Owner no. 3”, and the settings name the missing permission. New and off by default: Omnipacto marks linked documents in Paperless with a tag (default “Omnipacto”) and removes it when the last link goes. The Paperless user needs write permissions for that; before you switch it on, Omnipacto shows what is allowed without writing anything. If tagging fails, linking in Omnipacto is unaffected. Whoever leaves the option off keeps read-only access.
- Payment route: a current account or credit card may pay for itself. Under “Paid via” the contract itself can be chosen when it is a finance contract, and everywhere it reads “debited from the account itself”. For other contracts the self reference stays blocked.
- Object on property insurance: the object picker now exists for every insurance that insures things, including lines you created yourself, for example for a solar system. Insurance on people such as liability, legal protection or disability still has none. New standard line “Solar & electronics”, also in existing households.
- “Since your last visit”: changes by people come first, bundled per contract and dated. Automatic changes such as a first import appear below as “8 prices updated” and expand on click. A filter separates people and automatic changes. Your own changes do not count as new.
- After the first contract Omnipacto states what is confirmed and what is only a suggestion, whether and from when it reminds you, and exactly one next step with a button. The third step fits the contract type: document, meter reading only for electricity, gas, water and heat, or “Not relevant”.
- Customise overview: sections below the tasks can be shown and hidden. It is remembered on the server, per household and person. Search finds words such as account, credit card, broker and power of attorney and leads to the section under People & objects.
- Action plan on the overview: Now, This week, Soon and All in order. Every entry says what happens if you do nothing, for example “renews on 01 Jan 2027 for 12 months, which is €480.00”. Cancel, keep and later can be decided right at the entry, with a preview first and undo afterwards. Later can never push past the deadline.
- Household status: a calm statement (all in order, notes, action needed) and four work lists: missing documents, unclear contracts, outdated details and check notes. Every row leads to the field where it is fixed.
- Family tasks: tasks per person, decisions several people make together, and questions to a family member. Done records who did it and when, with the answer for questions. A one-person household does not see any of this.
- Account-change assistant: from the old to the new account, with every contract paid through it, to tick off. A notice template per contract, and in the end the payment route switched, with a way back. In the same pattern: move, name change, separation, death, new vehicle, birth and moving out with the contracts concerned.
- Contract check: once a year Omnipacto shows price, number, document and payment route per contract and asks whether it fits. It is off until the household switches it on, overridable per contract, with no required fields, no warning colour and never under “Now”. At most three checks appear in the plan at once.
- Benefit report in the yearly review: cancelled with a stored confirmation, the renewal prevented as a result, and price changes with a price letter. What no document backs stands apart as an estimate and does not count towards the total.
- Origin per detail: price, term, notice period, renewal and cancellation day state their origin in plain words, on request with date, name and the place in the document. “Confirmed” and “backed” stand apart. Where Omnipacto does not know the origin it says “Origin not recorded”.
- Scenarios per contract: renewal, falling away and a price increase by a freely chosen percentage, each with an expandable calculation and its assumptions.
- Lighter contract page: the head shows cost, state, next action and the key document. All other sections are collapsed but remember what you opened. “Expand all sections” opens them at once. Jumps from the check and the work lists open the section by themselves.
- The cancellation letter names all contracting parties and leaves a signature line for each. With several parties the letter says “we”.
- A current account or credit card can pay for itself already when created: “This contract” is selectable under “Paid via”.
- The contract list also shows linked objects such as a vehicle or flat in the “Object / person” column.
- New document type “Application”: selectable on documents, in the filter, recognised in the archive and named in the emergency dossier. An application counts as a document but does not back a deadline.
- If a contract reads “Taken over from the import”, “Entered via the interface” or “Entered”, each “not confirmed by you”, the button “Matches my documents” sits next to it. One click writes its own line to the log; from then on it reads “Confirmed by you” with the date.
- An active contract from which no cancellation day can be calculated shows one sentence with the way to the missing field on its page (“Saved, but no cancellation reminder is possible yet”, plus “Add start”). The duplicate badge “To do: clear up notice period” is gone. In the contract list the “Cancel by” column now says “No reminder possible” instead of a dash, and on “Deadlines and dates” a section “Contracts without a calculable deadline” leads straight to the missing field. It all comes from the same calculation on the server.
- Below the total “Ongoing payments per month” the overview and the costs page now show the sentence “Includes instalments and savings contributions. Actual consumption costs may differ.” Until now the explanation sat only behind the info dot on the costs page.
Fixed
- Deadlines, prices, readings, documents, objects, fields, channels and sessions carried the same names for edit, delete and done in lists. Anyone going through the controls with a screen reader could not tell the targets apart. Now every name says which entry it is, such as “Edit Wartung Gastherme”, “Edit price from 01.04.2026” or “Delete reading from 07.11.2026 (with value)”. The window titles name the same entry. For a repeating deadline the button name already says which date it moves to, and the message after marking it done repeats it. The server calculates that date with the same rule it uses to move the deadline.
- Accessibility: buttons and links whose name for assistive technology differed from the visible text now contain the visible text, for example “Open contract: FiberNet 250” on the overview, and the account menu includes the initials. If you use voice control, you can say what you see. The care round wraps on phones instead of running past the card edge.
- Costs and overview: The figure was called “Current monthly costs” although it adds up payments: an instalment for electricity or gas is money transferred, not consumption, and a savings contribution such as Riester is a payment but not money used up. It is now called “Ongoing payments per month”, and the explanation says so explicitly, as do the monthly letter, the help and the notes when ending or reactivating a contract. The consumption calculation of the instalment balance is never added to the instalments.
- Costs, yearly view: Three yearly figures answer three questions. A sentence before the chart says that the figure above carries on for twelve months from today and that the chart shows the calendar year with the months payments actually fall in. The history over the years claimed to use the price from mid-year; since 17 September 2026 it has counted month by month with the price that applied then, and the text now says so.
- Costs, “What is due when”: Above the items there is a selector with the twelve months, each with year and estimated amount, for example “September 2026 · €245.00”. Mouse on the bar, keyboard and touch choose the same month and show the same amount, bar and list come from the same data. Before, the bar could only be reached with a mouse and was called “Sep”.
- Meters, instalment balance: For “3,153 kWh × 31.9 ct + €149.00 standing charge” the card showed €1,154.80 although those figures give €1,154.81; the amount had been cut off. The same rule now applies as for the monthly values: commercial rounding to the cent, once at the end. The unit price is shown with all stored digits, and the note names the rounding. The forecast is no more precise than before, only reproducible.
- When you activate a draft, Omnipacto first asks if the start date or price is missing: without a start date there is no reminder to cancel, without a price the contract is missing from the cost total. “Add details” opens the form at the first missing field, “Record as active anyway” stays possible. After activating there is “Undo” back to draft.
- If an active contract lacks a start date, end date or renewal period, it reads “Active, notice period unknown” in the list, on the contract and on the people page. The next action is “Add start date” instead of “Nothing to do”, and the plan lists it under upkeep, not under “All in order”. The task goes away as soon as the notice period can be computed.
- Notice templates end according to their content: questions with “Please let me know briefly.”, pure notices with a request for confirmation, mixed ones with both. “Stays in my ownership” asks to confirm the new address and to answer the question, “Still open” to confirm receipt and to name the next steps. Connection, meter reading, death, benefit, co-insurance and vehicle now have the fitting ending too.
- The account button now always names the initials unless they already stand as a word of their own in the name. Until now they were missing for “Abel Becker” because “ab” is inside the name, and the voice command “AB” hit nothing.
- In the recommendations on a contract, the name of the “doesn’t exist” button now reads as a sentence, for example “the contract number doesn’t exist for this contract”. The visible text remains part of the name.
- When storage runs low, the wide bar shows the hint as text below the bar; the bar itself is purely decorative. In the narrow bar, where only an icon remains, a text for screen readers and voice control reads out the figure and the hint. The colour test now accepts decorative areas only if their meaning is stated as text in the same block.
- The focus rings of input field, text area, select, checkbox, password field and calendar were semi-transparent and reached only about 1.9 to 1 in every accent. They are now opaque, also in the error state. In the dark theme the graphite accent had only 2.4 to 1 and was improved; all accents, light and dark, are checked for at least 3 to 1.
- The upkeep round takes up cases that arrive on every write request and closes on saving when none of its cases is open any more, also after a new price, “Done” in the review or a deleted contract. Viewing the round no longer writes anything to the database. Two starts at the same moment, for example from a double click or two windows, used to end in a server error; now the second one gets the running round.
- Under “If the price rises” and “Why am I seeing this?” it now says “Linked contract document: …” instead of “Backed by: … (policy)”. The type is called “policy” only for insurance, otherwise “contract document”; terms and amendment carry their own names. The chosen percentage is stated as an assumption that comes from no document.
- Pure questions in the templates (household contents, person, building stays, is sold or a new one is added) end with “Please send me a short reply.” instead of asking to confirm a change; notices keep their confirmation. The answer to the question of a process step appears in the log, without its content. The interface says “renewal or notice rule” everywhere, also when only the notice period applies.
- For building insurance the move list shows a neutral check and asks whether the building stays in your ownership, is sold or a new one is added; each answer has its own note and template (for a sale with a reference to section 95 VVG). The templates for meters, connections, leases, births, vehicles and separations no longer assume anything the list did not ask.
- An empty price reads “Not recorded” instead of “entered by hand”, and when the start is missing every note names that one cause. The missing sender address has the action “Add address” with a return in the action plan and the family view; the cancellation dialog shows whether a letter can only be planned or is also ready to send.
- Numbers and the words they count follow the plural forms of the language everywhere: “1 case assigned” instead of “1 cases assigned”, “1 document”, “in 1 day”, “1 session ended”. This applies to visible text as much as to tooltips and the names read out by screen readers, in German and English. Reminders, the weekly letter and the log export also write “in 1 day”. A test checks 0, 1, 2 and many and reports every new place that joins a number with a word without a plural form.
- The sidebar no longer scrolls as a whole: household, New contract, system state, storage, version and help stay fixed, and only the navigation in between has its own scroll area with arrows and a fade at the edge while something is still hidden there. At very low height, such as 200 % zoom on a window 600 pixels high, the whole sidebar scrolls in one piece again. Every item stays reachable by keyboard and nothing is covered, not even when Tab wraps around after the last element.
- Explanation windows (“Why am I seeing this?”, info dots, help, system state) have a visible Close button at the top right, close with Esc and with a click outside, and focus returns to the trigger. They used to get stuck when the fade-out animation did not run, for example in a background tab.
- Installation: the preview writes a build identifier like the image, so commit and build date are no longer “unknown”. “Latest version” is never lower than the running one; if the running one is newer than the published one, the page says so. The login page starts in the language of the installation. “Reactivate” removes the end date, and Undo restores it.
- Special right to cancel: an old price entered later triggered a fresh right “from the day of entry”. The reference is now the date of the notice, otherwise the day the price takes effect. If the deadline has passed no open right appears. The notice date can optionally be entered on the price.
- Quick start: the step “Term and notice period” stayed open for indefinite contracts without a way to complete it. Now it leads to the contract, and confirming works without a start date.
- Detected contracts: after the first contract from a provider's documents the provider vanished from the list, even when the policy of a second contract was still free. Omnipacto now counts per suggestion which documents are linked to no contract. If at least one free policy is left, the provider stays with the note “Another contract possible” and the number of free documents, and counts on the tab. That also holds after reloading. Dismissed suggestions stay dismissed. Free invoices alone do not keep a provider open, otherwise every utility with unlinked monthly invoices would stay in the list for good.
- Overview and deadlines: the most urgent task was cut off, “responsible: Jo…” lost the name. Urgency, reason and responsible person now stand completely in a wrapping line, even with very long names, small windows and 200 % zoom. Long deadline descriptions are shortened at word boundaries and open with “Show more”.
- Price notice: “about 28 % per year” left open what the number refers to. Now the extra amount is given in the billing rhythm, for example “€26.00 more per month since 01.04.2026, about 28 % more than before”, with the twelve month assumption below. Fluctuating usage bills no longer count as a price rise.
- “Has the bill arrived?” can be answered. The button “Bill has arrived” removes the question for that year from the overview and the email, and the contract history records it.
- The end of the upkeep round now has a clear finish with one button, “Finish round”. A round without open cases no longer offers “resume” anywhere, even if you navigated away without clicking. If new cases appear later, a new round begins. Undo after finishing keeps working. When the round starts, focus lands on the first case, and “Pause” leads back to the household status.
- The “keep this time?” window showed a raw key under “Then:”; the consequences of “Keep” and “Stop keeping” are now translated in both languages, and a test checks every key the server can deliver. Also: the weekly brief reads “in den nächsten 45 Tagen”, the notifications region is named in the interface language, the “To decide” line names the same groups as the action plan, the price on outdated details names its rhythm, “Price is still correct” looks like a button, chart axes have round values, dossiers show “€” instead of “EUR”, the family page shows display names instead of email addresses, an unknown tab in the household falls back to “Status”, and the start page also answers HEAD requests.
- Next to “Active, notice period unknown” and “Missing: the start” the contract page showed a green “Nothing to do”. Now the unknown notice period counts as an open task (“To do: work out the notice period”), as in the action plan, and the list no longer says “All good” there. Also, a contract without any document said “Confirmed by you against your documents”; now it says just “Confirmed by you”.
- If you set a draft to “Active” in the edit window, the page kept showing “Draft” and “Activate” after saving, and a click on it ended in “Something went wrong”. Now this path works like “Activate”: if the start or the price is missing, the question with the consequences comes first, afterwards the whole page is correct. If a contract is already active (second tab, another person), the page says so and reloads instead of showing an error.
- A single finding, for example a second household contents contract, pushed the “Stands out” card in front of the action plan, and on a 1350 by 900 screen only one task stayed visible. Now “Stands out” is one line with the number of notes below the tasks; a click expands the notes.
- Cloud: The receipt of a cancellation named the time in the server's time zone, so next to “(Germany)” it could be wrong. Time and the end of Plus are now always in German time, as already with the withdrawal.
- Costs, Tax relevant briefly said “No premiums in marked lines for 2025” and had the CSV button disabled until the answer arrived; then the items appeared. Likewise Household, Checklists briefly said “No checklist yet”. Now a loading indicator shows while loading, a message with “Try again” on an error, and “no premiums” only after an answer without items. When you change the year, the total of the previous year never stands under the new year.
- If a contract had been activated in another window meanwhile, the edit form sent the old status “Draft” along when you chose to overwrite, and reset the active contract. Now the status is sent only if you changed it in the form yourself. The interface also leaves the status unchanged if an update does not name it; before, it became “active”.
- A contract from the CSV import or the interface showed “Entered via import or interface” and “Confirmed by you” at the same time. Entries on term and notice period still count as entered, without turning into a “Confirm term” task. But you have not confirmed them, and that is what the page now says: “Taken over from the import” or “Entered via the interface”, each with “not confirmed by you”. “Confirmed by you” appears only once you have confirmed it on the contract page. From now on the import writes one log line per contract for this; for earlier imports the origin cannot be recognised afterwards. If a document that does not back term and notice period is linked to the contract, the line says so explicitly.
- When applying, applying all or undoing a finding in the document analysis, the interface sent the contract without variable price, prepaid, prepaid term, “Hide until” and “Hide forever”. The server silently filled in the defaults: a contract with a variable price then counted as fixed, a permanently hidden one reappeared. The edit form, which does not know “Hide until” and “Hide forever”, was hit the same way. Now the server changes only what is in the request body. The analysis also no longer sends the status and names the state it has seen: if someone else saved meanwhile, nothing is overwritten and the message says so.
- A contract with no creation entry and no confirmation in the log, for example from an old import or the example family, counted as “Confirmed by you” although nobody had confirmed anything. Now it says “Entered, not confirmed by you” with the button “Matches my documents”. No task appears in the plan. In the example family Anna confirmed the insurances and energy contracts; Riester pension, AutoClub Plus and FitZone are only entered.
- If a document is linked that cannot back term and notice period (invoice, price letter), the health line said “Confirmed by you based on your documents”. Now it says “Confirmed by you, the linked document does not back the term and notice period”. With no document at all it says only “Confirmed by you”.
- In the settings, an open section was torn down and rebuilt on every redraw of the page, for example when the sign-in status was reloaded after saving an address. Whatever you had just typed, such as the user name and password for Paperless, was gone, and “Fetch token” stayed disabled. The section now stays, and so does your input.
- The “Cancel” button in the action plan and at the top of the contract page only created a cancellation case and sent nothing, yet it sounded final. It is now “Plan cancellation”, like the Cancellation section, and the dialog asks “Plan the cancellation of …?”. “Send cancellation” follows as the next action, marked “Not sent yet”. “Cancel” remains only where something is really sent or marked as sent. The same goes for the button in the reminder by email and push, which opens the contract page, and for the answer in the contract check (“Want to cancel”, which only records your intention).
- Two documents or recycle bin entries with the same title (the same letter filed twice, two drafts deleted) carry different names for screen readers and voice control: “Title, no. 2 of 2”, counted per section. In the recycle bin the name also gives the kind, for example “Restore: Contract Title” and “Restore: Document Title”, so a contract and a document with the same title are not mixed up. “Delete account” and the role in the member list name the member, with the email address if two share a name, and so do the fields of the lines. The eye button in the password field reads its name after every rebuild and so follows a change of language.
- Whether term and notice period were confirmed by you, from the import or via the interface was recorded only in the change log. The log is emptied after the retention you set, and a contract you had confirmed then showed “Entered, not confirmed by you”. The kind of confirmation is now stored on the contract itself. On update it is filled in from the log that still exists; contracts with no trace at all stay “Entered”. The backup includes it. The retention of the log stays as you set it.
- After applying a finding the button was free again at once, but the contract was only up to date after reloading. The second apply sent the old state and got the message that someone else had changed the contract, although nobody had. The analysis now remembers the state from the server's reply and carries on with it. If someone else really saved, nothing is overwritten, as before.
Please check after updating
- Before every migration Omnipacto saves the database (vor-update-*.zip). Until now it lay inside the container and was gone as soon as you replaced the container to go back to the old version. New installations mount the folder. If you update and keep your old docker-compose.yml, add the line “- ./data/sicherungen:/data/sicherungen” under app → volumes. Until then Omnipacto writes a second copy to data/files/vor-update, which survives replacing the container. New: the command “docker compose run --rm app omnipacto vor-update-einspielen --ja” restores the database including its schema to that state; the old version then starts again. The steps are in the README under “When an update goes wrong”.
- Cloud: The terms of use have their own version (dated 06.11.2026). They say what is true in the cloud: the data lies with the provider in Frankfurt, there is no database in your hands and no LICENSE file, and use is private. Accounts that agreed to the self-hosting version are asked once more before they continue. Self-hosted installations keep their previous version and are not asked again.
- Self-hosted: Omnipacto now believes the X-Forwarded-For header only from loopback and private networks (127.0.0.1, ::1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, fc00::/7). Before, anyone who reached the port directly could invent an address to get around the limit on sign-in and cancellation. A proxy on the same machine (also in Docker) or in your home network works unchanged. If your proxy reaches you from a public address (for example Cloudflare), set FORWARDED_ALLOW_IPS in the .env to its address or network, otherwise the limit counts all visitors under the proxy's address. The bundled docker-compose.yml therefore publishes the port over IPv4 only (OMNIPACTO_BIND in the .env, default 0.0.0.0): over IPv6, Docker passed connections on with the address of its bridge, which is in this list, so a client on the internet could have made up an address. If you publish the port yourself, name the address (-p 0.0.0.0:8000:8000), never just -p 8000:8000. The session list shows the connection address instead of the claimed one.
- Self-hosted with Docker Compose: port 8000 is now published over IPv4 only. If you reached Omnipacto over IPv6 directly on port 8000 so far, you no longer can. The way out is an IPv6-capable reverse proxy in front that talks to Omnipacto over IPv4 or the local network and passes the visitor's real address on in X-Forwarded-For. You can also publish the port over IPv6 on purpose (OMNIPACTO_BIND=[::] or your own port line; it then answers over IPv6 only, IPv4 needs a second port line). Then you need to know: Docker passes IPv6 connections on with the address of its bridge, which is trusted. A client on the internet can then give itself any address in X-Forwarded-For, and the limit on sign-in can be bypassed over IPv6.
- Interface: PUT /api/v1/tenants/{id}/contracts/{id} now changes only the fields in the request body. Until now every missing field silently took its default: provider, policyholder, objects, insured persons, start, end, term, notice periods, note, variable price, prepaid and hiding were cleared or reset. To clear a field, send it explicitly: null, false or an empty list. line_id and title remain required. Scripts that send the whole contract behave as before. Scripts that relied on omitting a field to reset it must now send the field. The rules on renewal and end (auto_renew needs renewal_months, fixed_end needs end_date) apply to the stored state: end_date: null alone on a fixed_end contract is rejected with 422, while renewal_kind: auto_renew on a contract with a stored renewal period goes through. Only what the body touches is checked.
0.4.8
New
- Payment route: a bank or card contract now holds its accounts and cards, each with a name and optionally the last four digits. In a contract you choose the bank under “Paid via” and then the account or card, created right there if needed. The “Payment methods” overview, the bank's page, the emergency dossier and the data export separate by account and card. Omnipacto deliberately does not store the full IBAN or card number.
- Keep instead of “turn reminder off”: if you keep a contract, you record it, this time or for good. The contract page says “Kept, next question before …” instead of “Can be cancelled until”, the contract list shows “Kept” instead of a red deadline, and the calendar export no longer includes the deadline. Tapping “keep” in a reminder now names the right day Omnipacto asks again; before, it named the deadline that was just passing.
- Search: a contract with that name comes before contracts whose provider has that name. In documents it matters where the word stands: the body text beats the letterhead every letter from an insurer carries. The snippet shows the place in the text instead of the header line.
- Payment methods: for contracts without one, “Assign” opens the form with the payment method field already selected. Amounts there are labelled as monthly averages. Search finds contacts and accounts or cards, also by their last four digits, and words like “card” or “broker” lead to the right section. Documents from your own storage are now called that in the results instead of “file”.
- Cancelling: your personal contact, such as your broker, now appears with phone and email right next to “Reach the provider”. The contract type “Car” is now called “Car insurance”; in existing households the app shows the new name unless the type was renamed.
- Overview: an expected additional payment or refund for a finished year now appears as a question whether the bill has arrived, instead of asking you to check the instalment. The same applies to the reminder email.
- Consumption: the yearly chart names the measured part and the projection to year end in a legend, and the table says that the current year is compared with the same period of the previous year. The expected bill names refund and additional payment instead of using a sign. Payment schedule, renewal notice and pending cancellation confirmation are worded more carefully. At high zoom the consumption page scrolled sideways; that is fixed.
Fixed
- New contact in the contract form: the name field swallowed every space, so a name like “Petra Muster” could not be typed. Now the same dialog as under People & objects opens, with role, company, phone and email, and the new contact is assigned to the contract straight away.
- Contract form: in minimum term and notice period a 0 could not be deleted, the empty field showed 0 again at once. Typing 3 gave 03. Now the field may be empty while typing; saved empty it counts as 0.
- Cancelled contracts: if a contract was marked “cancelled” without the cancellation running through Omnipacto, Omnipacto kept calculating with it. The contract page showed “Can be cancelled until”, a renewal with its cost and the “Plan cancellation” button, and the person showed “Cancel by”. Now every view says how long it still runs and that no further cancellation is needed. Reminders and the calendar leave it out as well.
- Completeness and evidence now agree: count, bar and tick only include required details; contract number, document and person are called “recommended”. A green “Complete” used to sit next to “4 of 5 entries”. “Backed” now needs a policy, terms or amendment on the contract; a cancellation confirmation or invoice does not back the term.
- Example household: the older price step ended on the start day of the new one, “until 01.04.2026” next to “from 01.04.2026”. It now ends the day before. The correct price was already used in calculations.
- First steps: the quick start promised “Omnipacto reminds you from …” even when no way to reach you was set up. It now names the cancellation day and leads to the setup. When adding a reminder channel, email is preselected once outgoing mail is configured, and the list says “E-Mail” instead of “email”. A reminder about a deadline not yet checked against your documents now says so. The page after “Keep” or “Confirmation arrived” in a reminder now shows proper umlauts.
0.4.7
New
- Tags from Paperless: Omnipacto shows tags on linked documents, in search results when linking and with detected contracts. There, all documents of a suggestion can be expanded and chosen yourself, by tag with one click. This turns one insurer's documents into several contracts when detection cannot tell them apart: whatever is not linked to a contract yet stays as a suggestion for the next one. Can be switched off under Settings → Documents.
- Payment method and contacts: each contract can record its payment method and the account or card, also as a link to your own current account or credit card contract. That contract's page then shows everything paid through it and the monthly total; the new “Payment methods” tab under People & objects shows it for all accounts and cards and lists contracts without a payment method. Contacts such as brokers, advisers or case handlers are kept once under People & objects and assigned in the contract, with phone and email one tap away.
- The emergency dossier and the documents for moving, death and separation now show for each contract what it is paid through and the contacts with phone numbers. At the end they list every account and card with what runs through it, and all contacts. The insurance overview for a consultation lists the contacts. The provider's phone number is now included too. In the data export, the contract table has columns for payment method, account and contacts, plus a separate table of contacts.
Fixed
- Details from documents: the cross for dismissing a suggestion and “Mark as reviewed” did nothing, and the screen did not say why. Dismissing was affected everywhere, reviewing for everyone reading by rules without a language model. Dismissed suggestions no longer count as open details on the overview; in the summary the next best finding from another document takes their place.
- Price history: entering an older price after a newer one left two open prices side by side, and the older one showed “from” instead of “from to”. Now each price ends the day before the next, whatever order it was entered in, and a price added between two existing ones shortens the one before. Prices already saved are put in order once during the update. Deleting the last price makes the previous one apply again.
- Dark mode: with an accent other than blue, the main button and the active menu item stayed turquoise. Both now follow the chosen accent.
Older versions (0.3.3 to 0.4.6)
0.4.6
New
- Detected contracts: detection reads up to 50,000 documents instead of 5,000, newest first; if it still stops short of the archive, it says “x of y documents scanned”. If a provider has several contracts, household contents and liability with the same insurer, electricity and gas with the same utility, landline and mobile, there are separate suggestions, each with its own documents and hideable on its own. Notices with “Berechnung” or “Anrechnung” (calculation) in the title no longer count as invoices.
- New “Consumption” page (in the menu as soon as there is a meter): every meter in the household over the years, across every change of supplier. Per meter the years with change versus the previous year, for the current year against the same period last year, and costs at the tariff that applied back then; the months as year against previous year and as a grid across all years. Values between readings far apart are marked as spread. For gas and heat the weather can be included: degree days at your own place, consumption converted to a typical winter. Only postcode and town plus rounded coordinates leave the server for that; off until you switch it on.
- “Since your last visit” now also appears on your first visit: the card then shows what others in the household did in the past week, or explains what will appear there from next time.
Fixed
- Connecting Paperless-ngx: detected contracts now appear right after connecting, before, it kept saying “Connect your document archive” until the page was reloaded. With two-factor sign-in in Paperless, Omnipacto asks for the code when fetching the token instead of wrongly reporting “Username or password are wrong”. The access token from Paperless can now also be entered directly.
- New contract by hand: after “Create”, the new contract opens. Before, you stayed on the choice of three ways and had to look for it in the list. A household without contracts now sees “No contracts yet” in the list instead of “No results for the active filters”.
- People who may only view a household no longer see buttons that would only be refused on click: completing, editing, deleting and adding dates, attaching and detaching documents, changing contract numbers.
- Overview: “Add your postal address” dropped out of the to-do list as soon as enough deadlines were due, exactly when no cancellation letter would have a sender without it. The task now comes first. The “no notification channel” notice is large enough to tap.
- Example household (demo): the pending cancellation, the maintenance date and the special cancellation right had fixed dates that had passed. They now depend on the day the example household is created.
- Settings: fields with an extra note next to them, such as “Address” for the document archive, were not connected to their label; a screen reader only read out the placeholder.
- Notices take you to where you fix them: a click on an item in the system status, in “Set up securely?” or on a notice like “address missing” opens the right settings area, jumps to the spot, highlights it briefly and puts the focus there. Before, the security items landed on the collapsed settings overview.
- System status items say what is: “Backup never checked for completeness” instead of “… checked” next to “Action needed”. A delivery error of the notification channel reads as a sentence, the technical reason on hover.
- Without a connection: if the network drops while saving or uploading, it now says “No connection to the server, nothing was saved”, and your input stays. Before, it only said “Something went wrong”. Switching to another page while offline shows “No connection” with “Try again”, before, the app disappeared behind the browser's error page.
- At 400 % zoom no page scrolls sideways any more (key figures, legal, backup, select fields wrap). Status colours stay readable with red-green colour blindness. The jump bar in “This installation” marks the right card after jumping from a notice.
0.4.5
New
- For families: the overview shows “Since your last visit”, new prices with amounts, new and changed contracts, cancellation steps, completed deadlines, new documents, each with a name. Tasks can be handed over to a person (as a deadline with responsibility and date); a completed deadline records who did it. Under “People & objects → Documents for …” there is, besides the emergency dossier, a moving list, a person's contracts for the case of death, a list by policyholder for a separation and an insurance overview for a consultation.
- Summary: optionally every Monday instead of the 1st of the month, now with open tasks and new findings (price jumps, back payments, avoided renewals). “Help & contact” at the bottom of the sidebar and in “What can I do here?”: where to find answers, a prepared message to support and technical details without contract data.
- Year in review: the new card “What Omnipacto did for you” counts cancellations sent in time, what their next renewal would have cost (clearly marked as calculated), spotted price increases and filed documents. The overview shows the avoided renewal as its own line.
- Overview: the card “What Omnipacto is keeping an eye on” ends with a line to the year in review and its most telling figure. In the contract form the “proposal” marks turn into “confirmed” as soon as “matches my documents” is ticked.
- Quick start: right after the first contract it says when Omnipacto will remind you and what a renewal without cancelling costs, or what is still missing for a reminder.
- Plain language: “Confirmed by you against your documents” or “Backed by a linked document” instead of “reconciled”, “Check backup for completeness”, “Supply point ID (metering point)”, “Top up instead of bills (prepaid)”. “What's new” shows one short line per highlight at the top.
- Clearer words: delivery errors in plain language instead of technical messages, “unverified” instead of “assumption” on calculated deadlines, “installation” instead of “instance”, and the hints lead to where you change it.
- A new household no longer shows reassuring zeros, just the quick start; on phones the tasks appear higher up.
- Contract details: the provider now shows address, email, phone and customer portal, with a pencil to correct them, without going through a cancellation. Documents suggest these details; your own address is never offered as the provider's.
- Contract health by severity: if only a contract number, document or assignment is missing it says “Add details” instead of “Incomplete”, and each such recommendation can be marked as “doesn't exist”.
- One state model for system status: OK · action needed · deliberately not set up · information, with the same totals in the sidebar, the pop-up and “Set up securely?”, split into security and operations.
- Clear names: the deadlines page is called “Due soon” and says what it contains; “To do” appears once on the overview, with its count; “People & objects” is named the same everywhere. In the cancellation dialog “Copy address” copies the recipient.
- Every contract says in three words how it stands: complete (or what is missing), reconciled (terms checked) and whether an action is open, briefly in the list, in full on the contract.
- Meters: next to the forecast is the calculation (consumption × unit price + standing charge against the instalments), how many readings it rests on and how far it may vary.
- Search: results show the contract status or the date and source of the document. Tasks name who is in charge; a contract without a document is a task of its own with “Add document”.
- The contract history can be filtered: all, changes, documents, cancellation, price. At the top right, “What can I do here?” explains each page in three sentences. Three new accent colours (teal, indigo, graphite) and a third density “Spacious”; density now also applies to cards and tables.
- Cancellation by email: the recipient address now appears only once, as text in “Goes to:”, with “Copy address” and “edit”. The input only appears when editing or when the address is missing; planning is then blocked and the reason is shown at the field.
- Clearer words: “To do” instead of “Needs attention”, “Further cancellation dates”, “Cancel by” on the people cards, “No dates of your own” pointing to the notice period, “Renewal” with its unit, and the cancellation steps say what each one means.
- “New contract” is now also in its usual place on contract pages.
- Settings → Legal: licence notices for every third-party component in the image (with a source offer for LGPL, MPL and GPL parts) and the test status of this version, what was checked before release and what was not.
Fixed
- Naming: “Contract list” without a number on the tab (the count stands with the active filter below the title), “More actions” instead of “more”, tab “Tax-relevant”, the coverage overview shows gaps first and explains without referring to colours. A fully typed date counts immediately, “Save” no longer needs a second click.
- “Undo” in notifications: the notification now stays for ten seconds instead of four (longer while hovered), and undoing confirms itself, or reports that it failed. Before, the notification was often gone before you could click, and a failure stayed silent.
- Details from documents: collapsed, it says “1 document not read yet” (or “being read”, “could not be read”) instead of “all applied” while a document is unread. The sidebar counter reads “System: 3 to check”, it counts the setup, not the tasks. On the costs page the tab is called “Costs over the year” so it is not confused with the year in review.
- Source of the term: “Confirmed by you against your documents” and “Backed by a linked document” are now two states, before, a ticked box sounded like evidence even without a document in Omnipacto. A deleted contract number can be brought back.
- Contract history: the filter appears as soon as there are two kinds of entries, before, only from seven entries on, although the help promised it. The choice is kept in the address and survives a reload.
- Controls: no button is smaller than 24 × 24 pixels any more (delete number, history pencils, info dots). On phones every button responds to a 44 × 44 pixel finger area, and the history pencils are visible without a mouse pointer.
- Colours: amber now reaches 3.3 : 1 for the focus ring instead of 2.4 : 1, and focus rings are opaque in every accent instead of half transparent.
- A contract number marked as “does not exist” now reads “No contract number exists” in the header instead of “not recorded”; the cancellation dialog no longer asks you to add it.
- Easier to read: all colours now meet the minimum contrast, links, “OK”, deadlines and profile pictures were too faint in the light scheme (measured in all eight accent colours, light and dark).
- With large text, on tablets and phones no page scrolls sideways any more; tasks and the “Costs by area” legend are no longer shortened.
- After closing a dialog, keyboard focus returns to where it was, no longer to the top of the page.
- A corrected provider address now also appears in “Plan cancellation”, before, the dialog still showed the old one.
- Backup: prepaid, confirmed term, retention date, variable price, a person's address and picture, provider phone, object details, custom field options, document labels and withdrawn cancellations were not restored. Now they are, a test compares every column after each round trip.
- Costs: the yearly figure is now called “Projected over 12 months” and is exactly that, today's monthly costs times twelve, as on the overview. Before, the card calculated the calendar year and the explanation something else; for the example family 78 € lay between them. Below it says what the figures consist of. The calendar year remains in the year overview and the year in review.
- A cancellation that was sent but not yet confirmed now shows in the contract history as “Expected end of contract, not yet confirmed” instead of a definite end. The history separates what is upcoming from what has happened.
- A contract document is only called a “policy” for insurance; for internet or gym contracts it is a “contract document”, in the emergency dossier too.
- Screen readers: colour scheme, accent and density announce which option is selected; the font size is announced in percent.
0.4.4
New
- Overview: “What Omnipacto is keeping an eye on for you” replaces the example links. At most three things from your own records, the deadline with the most at stake, a price jump, an instalment that falls short, what dropped contracts save, each with period, source and the way there. If nothing is due, the card says so with figures.
- New household: a three-step quick start, add a first contract, check the deadline against your documents, add a document or meter reading. Each step ticks itself off, whichever way you get there; then your first insight appears in your own figures. “Later” hides it, Settings → Household brings it back.
- Print or pass on the year in review: it first shows what is included and what is not. Names of contracts, providers and household as well as amounts per contract can be switched off, the page then shows exactly what gets printed. The summary to copy or share never contains names, only totals and counts.
- Settings → This installation has a jump bar: every card, licence, security status, Home Assistant, backup, storage, legal, is one click away, and the position survives a reload.
- Items to review can now be closed: “Fine as is”, “Schedule comparison” (creates a real entry under deadlines and dates; once it is due or done, the notice is open again) or “Hide” with a reason. Handled items stay below with date and name and can be reopened; the contract's timeline records the decision. The next increase of the same contract is a new item.
- Share: an invoice or policy can be passed on straight from the viewer, through your device's share menu to mail, WhatsApp or whoever. Omnipacto creates NO share link and uploads nothing; the file travels, not an address.
- “Deadlines” is now “Deadlines and dates”, it also holds your own dates and the follow-up of pending confirmations. And actions are called “To do” everywhere instead of alternating wordings.
- Contract list with working filters: person, object, without document, unconfirmed proposals, due within 30/90/180 days, combinable, in the address (shareable) and as a named saved view.
- Creating a contract: term, renewal and notice from the contract type's proposal now carry a “Proposal” mark on the field, and a checkbox “checked against my documents” turns them into a confirmation. The contract page separates completeness from reliability: “all details present” no longer means “all verified”.
- The form is calmer: sections Contract · Term · Costs, the status as a line instead of a select, “price valid from” only after the price, minimum term and renewal only for the matching model. The contract-type picker shows the eight common types first, the rest via “Show all” or search.
- Drafts: a band on the contract page says a draft does not count anywhere, with a button “Set to active”; the list points to existing drafts under “currently running”.
- The example family (demo, “load sample data”) now has electricity, gas and water meters with two years of readings, consumption chart, year-on-year comparison and instalment balance are visible in the showcase.
- Settings show whether they are saved: “Saving …”, “Saved at 12:03” or “Not saved” with Try again, your input stays. Leaving the page with an unsaved change asks first.
- The log has a retention (default one year, set under This installation); technical lines drop after 14 days. Viewers no longer see the log, it names who was in when.
- Devices and sessions: Settings → My account shows where you are signed in (browser, system, address, since when), sign out one device or all others; they are out immediately. The second factor can get new recovery codes.
- Legal hints by reference catalogue: contracts from before March 2022 are measured against the limits of that time (12 months renewal, 3 months notice) rather than today's law; for mobile contracts the one-month notice of § 56 TKG also applies to old contracts renewed since December 2021; for residential leases the calculation says the date is an approximation (§ 573c BGB). 26 reference cases with sources ship as a versioned catalogue.
- Passkeys: sign in with Face ID, Touch ID, Windows Hello or a security key, no password, no second factor. Settings → My account → Passkeys; every key named and revocable on its own.
Fixed
- If the connection dropped briefly while opening, Omnipacto stayed on the loading spinner forever. Now a failed load says what happened, with “Reload”.
- Backup: anyone who had moved a contract to the trash got “incomplete” for every backup check, that contract's meters, cancellations and dates travelled along, the contract itself did not. They now stay with the contract, restoring no longer creates orphaned dates, and older backups count as complete again.
- If a CSV upload breaks off, Omnipacto immediately retries the same content a second way, with some browsers and extensions the usual form never went out at all. If that fails too, the message names an identifier that locates the attempt in the server log.
- Screen readers: search, input and select fields now carry a name everywhere, in many places it just said “edit field” without saying what for. The contract-type search also announces how many types match.
- Dark mode: a white flash appeared briefly when reloading. The colour scheme is now set before the page is drawn.
- Planning a cancellation: exactly one labelled recipient field per channel, at the top of the box, email address, portal address or postal address. The remaining provider details are one click away.
- Meters: electricity no longer asks for a kWh conversion factor, only gas needs one. The “Table” button is now “Import readings from a table”, and the contract number sits with the contract instead of under “Costs”.
- The build identifier in the sidebar was cut off after twelve characters. Under Settings → This installation it is now shown in full and can be copied, for support requests and sign-offs.
- Meter readings: the date field shows “23/09/2026” in full again (the year was cut off), long metering-point codes no longer break mid-number, and the table separates “measured so far” from the projection to the end of the year.
- “Metering point/meter number” was one label for two different things. The long DE code is now “metering point (market location)”, the number on the device stays “meter number”, with an explanation when entering it.
- While the price history is still loading, the contract chain no longer says “no price recorded”, a claim about missing data that was not missing.
- Planning a cancellation now says where it goes, right at the channel: “Goes to: service@provider.com (from the entry for …)”, or, in red, “No recipient”. An address without @ or a portal address without a dot no longer counts; checked in the interface and on the server.
- If a CSV upload breaks off, it says so, “the file was not transferred completely, nothing was imported”, with “Try again” for the same file. Before it said “no answer from the server” although the server never saw anything.
- Settings show a skeleton while loading instead of an empty area with a spinner.
- The sidebar now separates “Version 0.4.4”, “Build …” and “What's new”, the last means unread release notes, not an available update.
- CSV import: the column “contract type” (also Vertragsart, category …) is mapped, before it was silently ignored and every row created as “Other”. Rows without a recognised type and filled columns set to “ignore” now show a warning and require confirmation before importing.
- Planning a cancellation: the provider's email and address are prefilled, even when the provider list arrived after the contract page (the field then stayed empty although the address was shown two cards above).
- Security status: the sidebar says “of these security 2, operations 1”, the card “2 to check, plus 1 not set up, a decision, not a defect”. Before, “3 items” stood against “2 items” unexplained.
- The settings search finds visible titles and everyday words (“take your data”, “forgot password”, “remind on phone”, “passkey”, “sessions” …), before only the names of the areas.
- Contract types, custom fields and coverage on the phone: one card per row instead of a table that squeezed the name field to two letters and pushed area and switches off screen. Checked at 320 pixels wide.
- Planning a cancellation: what is missing now depends on the chosen channel, an email needs the provider's address, a letter the full postal address and your sender, the portal its URL. Before, an email cancellation could be planned with an empty recipient.
- Meters and their readings were missing from the backup, found during the restore proof with real data. Backup, verification and restore now include them.
- “The import failed … this reference helps: ?”, instead of the question mark there is now a reference that also appears in the log.
- A bookmark to a deleted contract said “the server did not respond” with a retry button that never helped. Now: “this contract does not exist” and the way to the list.
- The sidebar said “2 items to check” while three were visible, the open security items did not count. Now one count, one source.
0.4.3
New
- Meter readings on energy and water contracts: add a meter, enter readings by hand, paste a table from your spreadsheet or take meter number, readings and tariff from the invoices, every value with its source.
- Consumption per year with comparison to the previous year, the current year projected, across the whole contract chain, so a change of supplier does not break the chart.
- Instalment balance: unit price, standing charge and instalment against consumption, whether an additional payment or a refund is to be expected.
- Reminder “read the meter” per meter (monthly to yearly), as a deadline and in the calendar feed. And a reporting address through which Home Assistant or a script enters the reading automatically.
0.4.2
New
- Cancellations go out from your own mailbox, with your address as sender, the provider's reply lands with you. Without one: “From my mail program” with the text and PDF ready.
- Reminders as browser notifications, even when the app is closed. Settings → Reminders → “Notifications in this browser”. On the iPhone only from the home screen.
- A contract from a document already in Paperless: “From a document” → “Search Paperless”, pick it, let it read, save.
- Delete your own account: Settings → My account. Households where you are the only owner go with it; shared ones stay with the others.
- The cloud edition: sign up, five contracts free, Plus as a subscription, contracts above the limit stay visible but locked after Plus ends.
Fixed
- On the phone the upload card appears right below “From a document”, before it sat below all tiles, off screen.
- An email reminder channel from the settings never sent anything, it required its own mail server, which the interface never asked for. It now uses the installation's outbound mail.
- The delivery-failure warning stayed although the same channel had long been delivering again.
- The list import ignored the free limit, it now imports up to the limit and says how many rows are waiting.
Please check after updating
- After the update the installation sends reminders to email channels that used to fail silently. Anyone who set one up will now receive mail.
0.4.1
New
- A contract can cover several people and several objects, legal insurance applies to the whole family.
- A bar per contract shows what is still missing, and leads to the field where it is entered.
- Search says why a hit matches: contract number, plate, tariff or the passage in the document.
- The monthly letter can be viewed before it goes out, with your own data, recipients and date.
- Setup ends where the benefit begins: at the next cancellation deadline.
- A system status in the sidebar: backup, document archive, language model and reminder channel at a glance.
- Access keys for calendar and status can be created and revoked one by one.
- Import lists from spreadsheets: the third way to a contract, next to document and by hand.
- Extraction now explains what “grounded”, “check” and “inferred” mean, without an invented percentage.
- A value applied by mistake can be taken back; “Data from documents” can be collapsed.
- A contract's history as a timeline: start, price steps, documents, cancellation.
- Uploaded the same document twice? Omnipacto notices and says so instead of filing it twice.
- New members join through an invitation link, no more starting password travelling by message.
- The time of the daily reminder can be set to the minute.
- The browser tab names the page and the installation, ten open tabs are tellable apart again.
- With the keyboard, the first tab stop leads straight to the content, past logo and menu.
- Values under “Details” copy with one click; notes without a detour through the form.
Fixed
- A withdrawn cancellation did not appear in the history, as if it had never been planned.
- System status reported “not set up” although the language model and document archive were connected.
- Person recognition suggested product names as the insured person (“personal liability insurance”).
- The history showed the service account’s technical name instead of what had happened.
- “Hide” sounded as if the contract disappeared, what is hidden is the cancellation reminder.
- Two people on the same contract no longer overwrite each other silently, whoever saves last is asked.
- “Terms confirmed” appeared on contracts without a single entry about terms.
- A contract marked “keep” no longer sits on the start page as a task.
- In the running year the review says “Expected cost”, the figure is partly projected.
Please check after updating
- If you had set a reminder time, please check it once. It is now set for the whole installation, not per household.
0.4.0
New
- “Your year in numbers”: what was paid, what got more expensive, what fell away.
- Finish a cancellation, by email too, where the provider accepts it.
- The cancellation day shows how it was calculated: start, minimum term, renewals, notice.
- The required form is stated, an email is not enough for a residential tenancy.
- Contracts billed monthly by consumption: base and usage shares kept apart.
- Read out all documents of a contract in one go.
- A price increase recognises itself and creates a price step.
- “Keep” becomes “Hide”, with a choice of how long.
Fixed
- The cancellation letter was unusable: missing letterhead, missing postcode, English terms in a German letter.
- An invoice covering two months counted twice, the yearly figure was too high.
- Extraction jobs hung, and two figures claimed the same thing differently.
Please check after updating
- Prepaid contracts are topped up and expire, they are not cancelled.
0.3.6
New
- An uploaded policy turns into an almost complete contract, without a language model too.
- Newly read: tariff name, policyholder, insured person, insured location and delivery address.
- Photographed paperwork: label and value are matched up again, even when text recognition separates them.
- Four reading errors fixed, among them a membership number being entered as a name.
0.3.5
New
- An uploaded document fills in the contract, without a language model too, and even when one is busy.
- The contract type is derived from tariff name, provider and contract number; close calls offer alternatives.
- “Contracts” now has four areas: all contracts, new contract, detected contracts, documents.
- All documents at a glance, with contract, role and date, searchable down to the recognised text.
- A document without a contract can be attached to one or turned into a new contract.
- Deadlines and costs are untangled: one view at a time instead of everything stacked.
- Costs by area break down, energy shows gas, electricity and water with their contracts.
- “9 contracts without a price” opens the list with exactly those nine.
- A contract whose cancellation is already sent is recognisable everywhere, not just as “Active”.
- Notices stay longer, and the version number links to the changes.
0.3.4
New
- A connected Paperless-ngx is actually used, previously “Discover” stayed empty despite a green connection test.
- Document upload works again; in some installations it answered with a server error.
- Settings are reorganised: seven areas instead of ten tabs, with a search field.
- Free disk space is shown at the bottom of the sidebar.
- People can have a photo; it stays in your database.
- The log has four levels and can be exported as a text file.
- Nothing scrolls sideways on a phone any more.
0.3.3
New
- Photographed and scanned documents are now read (OCR).
- Upload documents and turn them into contracts, now on “Discover” as well, without an archive.
- Search inside a document: matches are counted and jumped to.
- Objects have their own fields, number plate, year built, IBAN, chip number.
- Objects can be attached to more contract types, including ones you added yourself.
- Example data at the push of a button for an empty household.
- Two-factor sign-in with any authenticator app, plus recovery codes.
- Invite and remove users, no detour via the command line.
- Deadlines: one shared list “To do now” covering cancellations and appointments.
- A cancellation already sent counts as done and stops nagging.
- Term and notice period taken from a template are marked as a suggestion until confirmed.
- Entry points on the dashboard instead of an empty area.
- Search also finds words that are not on the label, “car” leads to vehicle.
- Search across everything: contracts, providers, people, number plates, and the text inside documents (Ctrl/⌘ + K).
- The menu can be collapsed to icons only.
- Monthly amounts are summed without rounding errors.