Changelog
Это содержимое пока не доступно на вашем языке.
Every Mildport release, in plain words. Version numbers here are the same ones you see on self-host images and Helm charts, so “what am I running?” and “what changed?” always line up.
0.17.0
Section titled “0.17.0”- Some suppliers bill for two things in one letter — a notary charging for two deeds, an agency invoicing two projects. A file like that used to import as a single invoice: one number and one total won, and the rest of the document went quietly missing. Such files are now recognised for what they are, and you check each invoice in turn — the fields and the highlights on the page follow the one you are looking at, and nothing can be sent off until every one of them is complete.
Fixes & improvements
Section titled “Fixes & improvements”- Drawing a box around just an invoice number used to pull in the rest of the line — the field name, the date, everything printed next to it. A selection now takes only the words you actually boxed, so numbers, dates and amounts land in the right fields without a cleanup pass.
- Zooming a document with every detected field visible used to slide those highlights off the words they belonged to. The boxes now stay on the text at every zoom level, so you can magnify a page and still click the right value.
0.16.0
Section titled “0.16.0”- After you pay, the license used to wait on someone to forward it. The receipt now lands in your inbox as soon as payment clears — the key, the one-time bind code, and where to paste them. Renewals send the new key the same way.
- E-invoices now fill the whole document, not just what a page scan can read. When a PDF carries an embedded e-invoice (ZUGFeRD/Factur-X/XRechnung), the invoice number, dates, currency, buyer, seller, VAT id and totals arrive as verified document fields straight from the attachment’s exact data — on a typical invoice the verify screen opens with nearly every field already filled. Values that also appear on the page are highlighted in place; the rest are clearly marked as coming from the attachment.
- Rules can now do arithmetic. Where a rule compares a field against another field or a fixed value, it can also compare against the product or the sum of two fields — so “Line total must equal quantity × unit price” is one dropdown away, no formulas to type and no code to write. Comparisons are money-aware: values that agree to the cent pass even when the document shows rounded figures. The invoicing preset ships with this check switched on as a gentle advisory, so new catalogs demonstrate it out of the box.
- Signing up for the waitlist, hitting a usage limit, or resetting a panel password used to produce a different-looking message than the purchase receipt — or no message at all. Every Mildport note now comes from one sender, in the same design, so the product sounds like itself from first hello through renewal.
- Reviewing a document import now reads like the document itself. Each section header shows how many of its fields are filled, and every field leads with a mark that says where its value came from — found in the document, extracted without a location, typed by hand, or still missing. The line-item block previews the mapped rows in place and confirms when their sum agrees with a document total. And on the final step you choose what you receive: one document row, one row per line item with the document fields on each, or both — the preview and CSV follow your choice instantly.
Fixes & improvements
Section titled “Fixes & improvements”- Table annotation on scans got sharper on real-world layouts. Line items that used to drop out or pick up the tax block underneath stay in the right place, and the invoicing starter catalog recognizes more of the column headings those invoices actually print.
0.15.0
Section titled “0.15.0”- Invoices that look like documents — a letterhead, an address block, and the positions table twenty rows down — used to arrive with every column unnamed and nothing mapped. The importer now finds a table header wherever it sits on the sheet, and the “Invoices & customers” preset understands line items out of the box: Pos., Bezeichnung, Menge, Einzelpreis and their English counterparts map on first upload. Headers like “Grand total” or “Gesamtbetrag” now land on your total field in any catalog, and e-invoice PDFs (ZUGFeRD/Factur-X) fill both the invoice fields and the line items without any manual mapping.
Fixes & improvements
Section titled “Fixes & improvements”- The engine used to fail to start in one local runtime, before it ever listened for traffic. It now boots there the same as in the shipped image.
- Detected amounts on European invoices used to be noise — page furniture showed up as money while the real net, VAT and grand totals were missed. The importer now reads amounts the way those documents write them, so the totals arrive as proper detected fields, and numeric table columns are no longer mistaken for phone numbers in stored previews. Detected-field cards also keep their name and value visibly separate in every rendering.
0.14.0
Section titled “0.14.0”- The monthly allowances on the plan cards now actually count. Every license carries its plan’s monthly imports and rows, usage is tallied as you go, and the 80%/100% heads-up mails track the same numbers. On plans with published overage rates nothing ever blocks — you keep importing and overage is settled on your bill. On hard-capped plans the limit is enforced cleanly: a clear “monthly pool exhausted” answer, nothing silently dropped, and imports resume automatically next month. Existing license keys are untouched until their next renewal.
Fixes & improvements
Section titled “Fixes & improvements”0.13.7
Section titled “0.13.7”Fixes & improvements
Section titled “Fixes & improvements”- One rate card, everywhere. Plan names, monthly allowances, per-file limits, prices, and overage rates now come from a single published table, and every place that prints them — the shop, the pricing pages in both languages, the account panel, license presets — either reads that table or is checked against it on every change. What you see on the pricing page is exactly what your license carries; the two can no longer drift apart.
0.13.6
Section titled “0.13.6”Fixes & improvements
Section titled “Fixes & improvements”- Getting access to the private Mildport registries used to end in “we’ll get back to you” — no stated turnaround, and the npm instructions promised a token that arrived whenever onboarding did. Both now say exactly what happens: nominate the GitHub account that should pull, and access is granted within one business day — for container images from the Self-hosting page of your account, and for the npm packages by mailing licensing@ with your username. You always pull with your own GitHub token; nothing shared ever changes hands.
0.13.5
Section titled “0.13.5”Fixes & improvements
Section titled “Fixes & improvements”- Hitting a monthly plan allowance used to be something you discovered only when a feature paused — no heads-up, no numbers. Mildport now emails the account owner when a month’s usage passes 80% of an allowance, and again if the limit is reached, with the numbers and a link to the Usage page in your account. One mail per threshold per month, and never after — no reminder storms.
0.13.4
Section titled “0.13.4”Fixes & improvements
Section titled “Fixes & improvements”- Drawing a box around a value in a PDF could quietly grab a neighbour too: a tight box around an invoice total sometimes pulled in the tax line above it, leaving two amounts crammed into one field. A drawn box now captures only what it really covers.
- Dark-theme polish for the cloud panel: on the Learning & recipes, Deliveries and Changesets pages, buttons no longer render white-on-white and headings no longer sink into the background — destructive actions now read clearly too. License cards also stay in their own lane: a long tenant id no longer spills under the neighbouring card.
- The Playground used to grey PDFs out in the file picker even though the importer handles them — while the upload hint promised “Documents: PDF” all along. The Playground now opens the full ingest surface, PDFs included: drop an invoice or a bank statement and walk it through extraction exactly like a customer embed would. And the drop-zone hint now tells the truth everywhere — it only mentions PDF when the import actually accepts it.
- Tenants used to show up everywhere as long machine identifiers — fine for computers, useless for telling Production from a quick experiment. You can now give each tenant a name: set it when you create one, or rename it any time from the Licenses page, and the tenant switcher, Licenses, Usage and Self-hosting pages all call it that. The technical id stays one click away behind “Copy id” for support and integrations, and your keys never change.
0.13.3
Section titled “0.13.3”Fixes & improvements
Section titled “Fixes & improvements”- Working in your Mildport account used to mean pasting your license key into every page that talks to the engine — and again after every reload. No more: pick a tenant in the top bar and the Playground, Catalogs, AI settings, Learning & recipes, Deliveries and Changesets pages sign themselves in with an automatic short-lived key. Your real key stays exactly where you put it — still shown only once, never stored — and pasting keeps working whenever you prefer it. Accounts with several licenses now switch tenants in one place instead of juggling keys.
- Regenerating a license key now sets the right expectation: on Mildport cloud the replaced key may stop being accepted at any time once its successor is minted, so the account pages and docs now say to swap the key in your embed right away instead of promising an overlap. Self-hosted deployments are unaffected — their keys keep their full term.
0.13.2
Section titled “0.13.2”Fixes & improvements
Section titled “Fixes & improvements”- Tuning the AI side of your importer — which provider it talks to, which models the switcher offers — used to live only on a separate admin page. Your Mildport account now has an AI settings page alongside Catalogs: paste a key (a fresh mint lands there by itself) and manage the connection and model roster in place, with changes applying to your tenant immediately.
- Auditing what the importer learned, checking webhook deliveries, or reverting a merged changeset used to mean a side trip to the engine’s admin pages. Those three screens — Learning & recipes, Deliveries, Changesets — now live in your Mildport account beside Catalogs and AI settings, and each ships as an embeddable element (
<mildport-learned-aliases>,<mildport-deliveries>,<mildport-changesets>) you can mount in your own admin area with just an API base and a license key. One implementation everywhere, so the account view, the engine’s admin pages, and your embeds always match.
0.13.1
Section titled “0.13.1”Fixes & improvements
Section titled “Fixes & improvements”- Managing catalogs from your Mildport account used to mean a detour to a separate admin page. The panel now has a Catalogs page of its own: paste a key (a fresh mint lands there by itself) and the full editor opens in place — preset gallery on a new account, field editing, drafting from an API spec, and publish with a diff, with changes live for every embed on its next load.
0.13.0
Section titled “0.13.0”- Setting up an import used to start with homework: define a target catalog before anything could run. Mildport now ships preset catalogs — contacts & companies, a CRM with deals, invoices & customers, products, plus CRM-flavored starters. Pick one when you create your license and your first catalog is published before you’ve copied the key; a fresh account can also adopt one with a single click in the Playground or the catalog editor, cloud or self-hosted alike. An adopted preset becomes an ordinary catalog of your own — reshape or delete it any time, and re-adopting never overwrites what you changed.
Fixes & improvements
Section titled “Fixes & improvements”- The catalog and AI bar at the top of the importer used to appear only when there was a catalog to name or AI preferences to switch. It now stays visible so you always know where you are; hosts that want a tighter embed can hide it with hide-context-bar.
- A plan with only one catalog used to hide the picker and look like there was nothing to choose. The importer now keeps the dropdown, shows that you have one catalog, and offers “Need more catalogs?” — which opens the guide to adding another or upgrading the plan.
- A brand-new account used to open the catalog editor onto an empty page and a blinking cursor. It now greets you with ready-made catalogs — contacts, CRM, invoices, products and more — and one click publishes your pick as an import-ready catalog you can reshape immediately.
- Choosing what a file becomes used to depend on how the importer was embedded. The “Importing into” picker now appears in every embed — including ones whose catalogs live on your account — so people can aim an upload at contacts, invoices, or any record type the catalog offers, let detection decide, or shape their own fields on the spot. Switching catalogs resets the aim cleanly, and when the catalog list can’t be reached the importer no longer pretends the account has no catalogs.
- Embeds used to download every interface language with the importer, whichever one the visitor actually needed. Translations now load on demand — the importer ships English and fetches the selected language as a small extra file — cutting the embedded bundle by about a quarter. Hosts that read label catalogs from the package now use
loadImportSuiteLabels(lang)(async) in place of the previous synchronous helper. - A long sample value on the mapping step used to stretch the importer sideways past its host. Samples now wrap to two lines inside the column, and if the rest is cut off you can hover to read the full text.
0.12.0
Section titled “0.12.0”- A leaked import key used to keep working until it expired — and regenerating issued a new one without stopping the old. You can now revoke a key from your account; hosted imports stop accepting it within a few minutes. If you run Mildport yourself, you still control the denylist on your own engine — nothing phones home.
Fixes & improvements
Section titled “Fixes & improvements”0.11.0
Section titled “0.11.0”- Cancelling a plan, or getting a refund, used to leave the next month able to issue another key — and paying again didn’t extend anything you could see. Paid licenses now follow the subscription: a new billing period issues a fresh key, and a cancel or refund stops further keys from being minted. The key you already have keeps working until it expires; we don’t reach into your deployment.
0.10.0
Section titled “0.10.0”- A key from the shop used to arrive as a loose token — nothing to attach it to your account, and no warning before it expired. Paid licenses now come with a one-time code to bind them in your account, and we email you before they run out.
- Paying for a plan used to have no way to open a license that was yours alone — checkout could not tell which customer had bought. Each purchase from the shop now starts its own checkout and issues a key for that sale, still delivered by email after payment.
- A license used to be labeled with an internal name that did not match the plan you bought. Starter and Pro licenses now carry those names on the key itself, so the shop, your account, and the license all say the same thing.
Fixes & improvements
Section titled “Fixes & improvements”Fixes & improvements
Section titled “Fixes & improvements”- Copy-paste destination guides used to leave the importer empty: they asked you to define the schema in host code, which is the awkward exception, not the product. Those pages now pin a published catalog — you edit fields in the catalog editor, publish, and the widget loads them. A public first-import walkthrough takes a running engine through catalog, embed, review, and a signed webhook, and a troubleshooting page names the four failures that eat a first deploy (images, license, browser origins, a pod that never becomes Ready). Localized licensing pages send you to your account for a key; they no longer tell you to mint one yourself.
Fixes & improvements
Section titled “Fixes & improvements”- You could not tell, from outside, whether the container you pulled was the one we built. Every release now ships a software bill of materials you can check — including from a machine with no internet.
Fixes & improvements
Section titled “Fixes & improvements”- You could not tell, from outside, whether the container you pulled was the one we built. Every release now ships a software bill of materials you can check — including from a machine with no internet.
- The one-container image for a simple or air-gapped install was named in the docs and in your account, but a pull found nothing on the registry. It is published with every release now, on the same tags as the engine image, so that path is a real install rather than a promise.
Fixes & improvements
Section titled “Fixes & improvements”- Trying the engine used to mean standing up a durable database and a pile of services, even when you only wanted a five-minute look. There is now a throwaway shape: one command, nothing stored, gone when you stop it.
- Self-hosting used to mean standing up MongoDB even when the rest of the estate already ran Postgres. You can now point the engine at FerretDB as a verified experimental backend — the same protocol, your existing database. It is not a production database we staff a support queue for. The first customer who runs it in production is what turns experimental into a supported backend.
- Two copies of the engine starting at the same moment could fail to agree on a signing key and refuse to come up. They now settle on one key and keep going.
Fixes & improvements
Section titled “Fixes & improvements”- The compact self-host install used to behave like a different product: matching help could vanish without a word, and the air-gap instructions under-counted what you actually had to mirror. It now runs the same engine as every other Mildport install. Matching help stays an optional piece you can turn on instead of disappearing, and the docs list every image the install really needs.
Fixes & improvements
Section titled “Fixes & improvements”- A fresh Helm install could stall in ImagePullBackOff before doing any work: the chart’s default image references pointed at a registry we don’t publish to, so every pod sat waiting for images that weren’t there. The defaults now point at GitHub Container Registry, where releases actually live — a first install pulls cleanly with no overrides. Installs that already pin a private or mirrored registry are unaffected, and the air-gap mirror list now names every image the default stack runs.
- Three documented command-line tools — the self-host preflight, AI settings, and offline receipt verification — failed with a file-not-found error when run inside the shipped container image, which cut off the documented path for enabling AI on a self-hosted deployment. All three now run out of the box, exactly as the docs describe.
- A first self-host could look healthy and still fail in ways that felt like product bugs: the engine would crash with no database URL, every browser embed could be refused once the production image was running, and Compose versus Kubernetes disagreed about where uploaded files live. The pre-flight check now names those gaps before you go live — missing database is a hard stop, an empty browser-origin list is a clear warning if you embed the widget, and the docs spell out that Compose starts with in-memory files while the cluster chart expects your object storage. Server-to-server callers are unchanged.
- Every signature Mildport produces — license keys, import receipts, portable import contracts — now verifies the same way, so a security review has one story. Your instance migrates by itself on first signing after this upgrade, with nothing to configure. BREAKING: receipts and contracts signed before this release no longer verify with current tooling — if you hold any and need them checked, the public spec repository’s v0.1.0 tag keeps the earlier verifier available permanently.
- License keys now verify through a hardened custody chain. You pin one public key on your instance; we can rotate the keys we sign with without an update or a config change on yours, and verification stays fully offline with no phone-home, exactly as before. Keys in the older format are no longer accepted; if you hold one from an early evaluation, request a re-issue and it will drop in with no other changes.
Fixes & improvements
Section titled “Fixes & improvements”Fixes & improvements
Section titled “Fixes & improvements”- Cross-origin access is now something you grant rather than something you inherit.
Set
app.allowedOriginsto the sites that embed your importer, and browser requests from anywhere else are refused — a control the self-hosted chart did not previously expose at all. If you run with none set, production now refuses cross-origin calls instead of accepting them, so list your origins before you upgrade.
- PDF forms used to come back nearly empty unless an AI model was configured — an uploaded registration form would fill in the email and nothing else. Now the import reads labelled documents on its own: fields your catalog already knows are filled from the page, with in-document highlights so you can see exactly where each value came from. It works entirely offline — no model, no extra setup — and those fills are marked as found on the page, not by AI. Configuring an AI model remains worthwhile for free-form documents that don’t label their fields.
Fixes & improvements
Section titled “Fixes & improvements”Fixes & improvements
Section titled “Fixes & improvements”- The hosted pages now use the same polished review grid as the embedded widget: the catalog editor’s live preview and the panel Playground render imports in the full-featured grid — draggable column widths, smoother in-cell editing and selection — instead of the simplified fallback table.
- The hosted catalog admin no longer needs a separate setup step: the official service images now ship with the catalog editor and AI-models pages ready to serve. Open
/admin/catalogsor/admin/aion your deployment, paste your license key, and manage target catalogs and AI models right away — no extra assets to install.
Fixes & improvements
Section titled “Fixes & improvements”Fixes & improvements
Section titled “Fixes & improvements”- Column mapping now hands back a finished decision, not just scored guesses. The mapping response includes the engine’s per-header verdict — mapped or deliberately left for you — decided with the same calibrated confidence the review board and the question ledger use, so every surface (widget, API, agents) sees one consistent answer. Agent integrations get the same upgrade: the propose-mapping tool now returns the decided mapping directly instead of leaving each agent to re-derive it.
Fixes & improvements
Section titled “Fixes & improvements”- Columns that merely look like a match no longer map themselves. A header that resembles a field name but whose values belong somewhere else used to slip into the wrong field — the kind of mistake you only notice after the import. Those columns now wait for your review instead of guessing, while genuinely matching columns map exactly as before. Phone columns also match more of the formats documents actually use.
Fixes & improvements
Section titled “Fixes & improvements”- Very large imports no longer hit the changeset ceiling: a single staged changeset can now carry up to one million row operations — five times the previous limit — and reading one stays fast at any size, because paged reads fetch only the slice they need instead of the whole sequence. Existing stored changesets keep working unchanged, and cleanup still removes every trace when a record’s retention window closes.
- The transform API now speaks the full cleanup vocabulary. Dry-run and headless execution accept recipes with computed columns, multi-column conditions, row filtering, fill-down, dedup, per-group aggregates, and reference-table lookups. Lookup tables come inline or straight from another sheet of the same uploaded file, every response now reports which rows were removed and why — nothing shrinks silently — and the AI cleaning assistant can propose these structural fixes from a plain-language request, with the same guardrails as before: it only ever writes a reviewable recipe, never code, and only against columns and tables you declared.
Fixes & improvements
Section titled “Fixes & improvements”- Monitoring used to stop at the main service while the document-decoding helpers stayed a blind spot. Their health and workload now show up in the same metrics feed, and self-host deployments gain a ready-made starter set of alerts — off by default, adoptable by your monitoring stack as-is — so the first sign of trouble is a page, not a support ticket.
- Big imports used to hit an invisible ceiling: past a certain size, the set of changes an import produced could be rejected as too large — stopping exactly the migrations that needed Mildport most. That ceiling is gone. Change sets of any size now flow through review and delivery, so a six-figure-row cleanup lands as smoothly as a hundred-row one.
- A confidence score is only useful if you can trust it. The engine now tunes its scoring against real outcomes and raises a flag when its picture of your data starts to drift, so “high confidence” keeps meaning exactly what you think it means — with no knobs for you to babysit.
- Teams running Mildport in their own infrastructure asked a fair question: how do we watch it? The service and its control plane now expose standard operational metrics out of the box, so queue health and load fit straight into the monitoring dashboards you already run — no sidecar scripts, no guesswork.
Fixes & improvements
Section titled “Fixes & improvements”- Sending a cleanup recipe with a small mistake used to earn a flat “not valid” with no clue where to look — especially frustrating for AI agents that could fix it themselves if told what was wrong. Rejections now name the exact step and field that failed, and recipes arriving as JSON text are accepted as-is, so a first-day integrator or an agent can self-correct in one try. Mapping requests that accidentally supply data rows where per-column sample values belong are now caught at the door with a plain explanation instead of being silently accepted, and an empty catalog list finally answers the obvious next question — how to publish your first catalog — right in the response.
Earlier releases
Section titled “Earlier releases”- 0.2.0 — internal development release.
- 0.1.0 — internal development release.
- 0.0.3 — internal development release.
- 0.0.2 — internal development release.
- 0.0.1 — internal development release.