This website requires JavaScript.
9622382579
fix(mcp): surface the database reason and code behind LINK_TX_DB_ERROR to the approver (#1807 )
Mattsson and Claude Fable 5
2026-08-23 01:57:24 +02:00
1f6dd778e5
fix(invoices): reminder emails use the per-currency payment account, never the SEK IBAN (#1806 )
Mattsson and Claude Fable 5
2026-08-23 01:17:27 +02:00
bf3104dd21
fix(mcp): query_journal text search runs two-step instead of the LATERAL embed (#1804 )
Mattsson and Claude Fable 5
2026-08-23 01:10:18 +02:00
2d22039461
fix(bank): renewal reuses IBAN-matched ledgers and keeps deselected accounts deselected (#1805 )
Mattsson and Claude Fable 5
2026-08-23 00:36:18 +02:00
e53b478833
fix(mcp): query_journal accepts scalar/number accounts instead of silently dropping the filter (#1803 )
Mattsson and Claude Fable 5
2026-08-23 00:13:30 +02:00
0040cadacc
feat(invoicing): opt-in invoice email from the company's own sending domain (#1802 )
Mattsson and Claude Fable 5
2026-08-23 00:07:30 +02:00
561e64afc7
docs(self-host): document which AI flows run on any model vs need Anthropic-family (#1801 )
2026-08-22 12:36:22 +02:00
dc5079a912
fix(providers): stop inventing 25% VAT on migrated invoices (#1745 )
2026-08-22 12:07:52 +02:00
51c815254a
feat(vat): oss momskod keeps unionsordningen sales out of the momsdeklaration (#1797 )
2026-08-22 10:49:07 +02:00
1f7acbf144
feat(agent): one-tap "clear the proposals I didn't approve" (BoXon feedback) (#1798 )
2026-08-22 10:42:22 +02:00
13b69a2056
fix(customers): personnummer via MCP lands in personal_number, masked everywhere; MCP payment terms follow settings (#1788 )
2026-08-21 18:32:17 +02:00
a5c8f55127
fix(settings): keep the Peppol access request inside the settings column (#1796 )
2026-08-21 18:12:31 +02:00
3af95bec3f
feat(peppol): receiving sits behind the access request, switch only once granted (#1795 )
2026-08-21 17:57:10 +02:00
3ac80edc96
feat(peppol): gate Peppol per company: request access, operator enables with a sending cap (#1794 )
2026-08-21 17:27:45 +02:00
9ef7de861f
feat(peppol): poll outbound delivery status + cap receiving registrations (#1793 )
2026-08-21 17:06:57 +02:00
a2c9a12cfc
docs(legal): align in-repo privacy and DPA pages with actual AI subprocessor facts (#1770 )
Mattsson and Claude Fable 5
2026-08-21 16:59:14 +02:00
f93152c397
feat(peppol): receive e-invoices via Qvalia: registration, inbound archive, inbox delivery (#1789 )
2026-08-21 16:56:32 +02:00
99a872987e
feat(reports): behandlingshistorik as PDF + systemdokumentation pointer and version (#1790 )
2026-08-21 16:47:19 +02:00
4be51aae67
feat(reports): behandlingshistorik report (BFL 5 kap. 11 §, BFNAR 2013:2 p. 9.16) (#1787 )
2026-08-21 16:45:39 +02:00
d3409183c0
fix(categorize): make confidence honest — backing-driven, not the model's word (#1791 )
2026-08-21 16:43:20 +02:00
316189675a
fix(peppol): read Qvalia's prefixed UBL-JSON keys, add incoming probe (#1786 )
2026-08-21 16:09:40 +02:00
72c81c21e7
feat(categorize): feed the selector the underlag, not just the bank line (#1785 )
2026-08-21 16:00:43 +02:00
704bf93e08
feat(categorize): confidence calibration engine + measurement loop (cascade step 4) (#1784 )
2026-08-21 15:55:26 +02:00
524d9978f1
fix(migration): resumable underlag import without inline extraction + same-origin MCP storage URLs (#1783 )
2026-08-21 15:28:37 +02:00
0531576807
feat(transactions): AI booking proposal in the quick-review dialog (cascade step 3) (#1782 )
2026-08-21 15:04:03 +02:00
e7a5e65ecf
feat(categorize): Tier 1 candidate gathering + the proposal route (#1781 )
2026-08-21 13:32:09 +02:00
b17878e58f
feat(categorize): provider-agnostic account selector (auto-booking cascade, Tier 2) (#1779 )
2026-08-21 13:19:46 +02:00
148ec0ce85
feat(agent): docked assistant sheet runs general.help on the single-call console (#1769 )
2026-08-21 13:13:54 +02:00
05c3c6ebd9
feat(peppol): Qvalia access-point adapter, send flow and delivery webhook (#1780 )
2026-08-21 12:45:11 +02:00
8249fcab5e
feat(mileage): suggest driving distance from the from/to addresses (#1778 )
Mattsson and Claude Fable 5
2026-08-21 12:19:35 +02:00
60920ec794
feat(skatteverket): expose filed VAT declarations and decisions via the v1 API (#1773 )
Mattsson and Claude Fable 5
2026-08-21 12:12:18 +02:00
0de766c6a4
fix(bokslut): stop step 3 (Dispositioner) from failing for every pre-2025 räkenskapsår (#1777 )
2026-08-21 11:47:29 +02:00
f11a78ec50
feat(providers): request the Fortnox attachment scopes now that the portal grants them (#1776 )
2026-08-21 09:20:28 +02:00
f3e4fdcf32
fix(providers): stop the Fortnox reconnect loop, and make the attachment scopes opt-in (#1761 )
2026-08-21 08:33:34 +02:00
c5b7716f74
revert(nav): keep company switching in the bottom user block only (#1775 )
2026-08-20 22:15:03 +02:00
577552ca94
docs(privacy): name Anthropic in the Bedrock row, state replay deny-by-default, pin disclosures to code (#1766 )
Mattsson and Claude Fable 5
2026-08-20 21:36:47 +02:00
72181e49bd
feat(nav): one-click company switching at the top of the sidebar (#1664 ) (#1765 )
Mattsson and Claude Fable 5
2026-08-20 21:30:57 +02:00
47c039453c
feat(import): undo a bank file import including ignored transactions (#1764 )
Mattsson and Claude Fable 5
2026-08-20 21:25:18 +02:00
ff4425d10e
feat(agent): let the single-call assistant read the ledger via read-only MCP tools (#1767 )
2026-08-20 21:18:21 +02:00
febb4cc0c2
fix(import): let provider re-sync re-import an earlier fiscal year after data deletion (#1763 )
Mattsson and Claude Fable 5
2026-08-20 21:11:15 +02:00
3f6f1ab06e
feat(chat): single-call console for general.help, persisted, runs on a local model (#1762 )
2026-08-20 20:35:16 +02:00
a071a0220b
feat(agent): provider-agnostic single-call assistant endpoint (runs on a local model) (#1759 )
2026-08-20 19:48:43 +02:00
4ecc888416
feat(ai): self-host enablement for BYO endpoints: poppler in the runner image, backend-agnostic smoke script, docs (#1743 )
2026-08-20 19:48:21 +02:00
c7a75d069d
feat(ai): job-shaped AI service with OpenAI-compatible backend, extraction-first; stop extracting every inbox document twice (#1740 )
2026-08-20 19:39:08 +02:00
fbf47649f2
chore(build): type-check what ships (tsconfig.build.json) and move to Next 16.3.1 (#1750 )
2026-08-20 15:27:13 +02:00
051f467406
fix(build): give the Vercel type-check worker a 6 GB heap so next build stops stalling at the 45-min cap (#1749 )
2026-08-20 15:13:49 +02:00
e733ab7c43
fix(arsredovisning): unblock the signing flow, accept foreign parent org nr, explain Fortnox underlag failures (#1738 )
2026-08-20 13:25:06 +02:00
5a8dd21931
feat(reconciliation): page-owned window, automatic matching, and a way out for unbookable rows (#1742 )
2026-08-20 13:14:31 +02:00
b5e908f9ea
feat(reconciliation): explain the difference instead of just printing it (#1737 )
2026-08-20 12:41:55 +02:00
a92c492dbe
refactor(ui): record detail pages as documents, not card piles (#1739 )
2026-08-20 12:29:43 +02:00
db14ac18cb
fix(nav): replace the expired Discord invite in the user menu (#1741 )
2026-08-20 12:24:46 +02:00
9a7db6bbdf
fix(providers): accept Bokio's flat company-information body (live API differs from spec) (#1735 )
2026-08-20 11:12:39 +02:00
e6c4fe2cf8
fix(customers): personnummer guard + personal_number on v1 + payment terms from settings (#1724 )
2026-08-20 10:41:24 +02:00
9fc05c383f
feat(notices): one aggregated notice line instead of stacked degraded-state banners (#1733 )
2026-08-20 10:27:52 +02:00
4cf227001d
fix(skattekonto): bound the sync to the first räkenskapsår, add an ignore path, EF-aware avdragen skatt (#1729 )
2026-08-20 10:22:13 +02:00
b77af371c4
fix(transactions): persist the source filter per company and stop the reset race (#1726 )
2026-08-20 10:08:40 +02:00
3de5dee553
fix(enable-banking): reconnect supersedes the old connection and stops duplicate imports (#1728 )
2026-08-20 10:08:04 +02:00
1ded1af8fe
fix(enable-banking): one primary action per connection state on /settings/banking (#1727 )
2026-08-20 10:07:04 +02:00
e1805125af
polish(dashboard): downgrade the build-assistant hero to the quiet-sentence promo (#1731 )
2026-08-20 10:06:24 +02:00
64fc7c783d
fix(periodisering): stop overselling automatic periodization to enskild firma (#1730 )
2026-08-20 10:06:01 +02:00
c402421908
feat(billing): make the expired-trial state visible with a clear upgrade path (#1725 )
2026-08-20 10:05:39 +02:00
834cc4d0e8
fix(ui): kill horizontal overflow in dialogs and cut the worst modal copy (#1732 )
2026-08-20 10:03:52 +02:00
68ca152127
fix(import): stop a Swedish Lunar export being parsed as Nordea (#1734 )
2026-08-19 22:18:58 +02:00
4e20c9dec4
fix(import): bulk-confirm the VAT-treatment review gate in account mapping (#1723 )
2026-08-19 21:26:04 +02:00
506d030bb1
fix(reconciliation): exclude ignored transactions from the bank total and bridge whitespace-drifted duplicate descriptions (#1705 )
2026-08-19 20:19:26 +02:00
6b9338f17e
feat(invoices): Betald-stämpel i faktura-PDF + betalningsbekräftelse till kund (#1700 )
2026-08-19 20:17:18 +02:00
926ca75fd3
fix(rattelse): let a bank-side strike land on the linked bank amount (#1701 )
2026-08-19 20:09:23 +02:00
06e554f3cc
feat(vat): show already-booked banner when opening momsdeklaration (#1703 )
Daniel Stenborg and Cursor
2026-08-19 20:08:31 +02:00
eb0df1722b
fix(salary): show the sysselsättningsgrad product next to the run salary input (#1702 )
2026-08-19 20:07:51 +02:00
f101bde6a8
fix(selfhost): stop NEXT_PUBLIC_* flags being constant-folded out of the Docker build (#1656 )
2026-08-19 19:52:31 +02:00
bd85395cd6
feat(billing): rebuild the Abonnemang page as a clean order summary (#1696 )
2026-08-19 19:51:31 +02:00
bb5fafe87b
fix(orders): book webshop orders against 1686 and stop the missing-account dead end (#1697 )
2026-08-19 19:51:02 +02:00
3a1b842e4a
feat: add safe owner-only migration reset (#1682 )
Mattsson
2026-08-19 12:04:24 +02:00
b07a4a4bca
fix(entitlements): trial seeding grants every paid capability, not the launch four (#1698 )
2026-08-19 11:09:10 +02:00
43cde6deb9
fix: unignore transactions during categorization (#1683 )
Mattsson
2026-08-19 11:00:02 +02:00
b069d9a9fe
fix(import): keep mapping confirmation visible (#1684 )
Mattsson
2026-08-18 23:20:23 +02:00
dfa7097f3a
fix(auth): secure white-label invite and reset links (#1680 )
Mattsson
2026-08-18 23:17:26 +02:00
3ec76d39db
fix(providers): correct Bokio v1 connection validation (#1681 )
Mattsson
2026-08-18 23:00:44 +02:00
9d59e509ab
fix(invoices): fold the ROT/RUT card into Detaljer and mask personnummer as YYYYMMDD-XXXX (#1699 )
2026-08-18 21:26:52 +02:00
72603abfd6
feat(invoices): show the ROT/RUT claim on the invoice detail page (#1690 )
2026-08-18 17:33:11 +02:00
83932f2e07
fix(salary): show the AGI kvittensnummer from agi_declarations regardless of who fetched it (#1692 )
2026-08-18 17:32:23 +02:00
7d56e0ec01
fix(mcp): use canonical VAT deadlines (#1679 )
Mattsson
2026-08-18 17:22:52 +02:00
d0640e0968
fix(settings): clarify bankgiro source on Foretag tab, offer IBAN prefill from bank connection (#1695 )
Mattsson and Claude Fable 5
2026-08-18 17:18:51 +02:00
1af5846adf
fix(skatteverket): let company members read data connected by another member (#1691 )
2026-08-18 16:40:10 +02:00
619b446c52
fix(invoices): make the Swish QR encode the amount to pay after ROT/RUT deduction (#1685 )
Mattsson and Claude Fable 5
2026-08-18 16:39:49 +02:00
ffa18019f4
fix(invoices): carry ROT/RUT deduction into the editor PDF preview (#1687 )
2026-08-18 16:32:32 +02:00
3ea03c0fe1
fix(import): stop the generic CSV mapper picking a time column as description (#1689 )
2026-08-18 16:22:14 +02:00
c84f8b04c2
fix(mcp): return a clear validation error when categorize_transaction lacks category (#1688 )
2026-08-18 16:17:37 +02:00
1000f18169
fix(invoices): real empty states in the editor pickers (#1678 )
2026-08-18 11:09:43 +02:00
bc357531cc
feat(shopify): port the order sync from the transactions feed to webshop_orders (#1676 )
Mattsson and Claude Fable 5
2026-08-18 10:57:01 +02:00
cfdddb2d7e
feat(mcp): customer_number on create_customer + Beta tags on webshop surfaces (#1677 )
Mattsson and Claude Fable 5
2026-08-18 10:46:34 +02:00
387e1fb7f1
fix(import): let a skattekontoutdrag that does not sum through a confirm gate (#1675 )
2026-08-18 10:33:51 +02:00
2b5b813b7a
feat(invoices): rebuild the invoice editor as the snabbflöde single column (#1654 )
2026-08-18 09:56:35 +02:00
93e99012d7
feat(supplier-invoices): dokument-forst editor rebuild (prototype shell + 4 flow optimizations) (#1653 )
2026-08-18 09:50:48 +02:00
dc311726de
feat(mileage): prefill distance and purpose from earlier trips on the same route (#1657 )
Mattsson and Claude Fable 5
2026-08-18 09:16:52 +02:00
798a76ed7a
fix(invoices): accept USD/GBP payment accounts without an IBAN (#1649 )
2026-08-17 22:23:36 +02:00
76b8d5c100
fix(pending): show the staged kontering and bank currency on the bulk_book_transactions approval card (#1648 )
2026-08-17 22:21:53 +02:00
15a1c96292
fix(matching): bring the MCP match-invoice commit path to parity with the dashboard route (#1646 )
2026-08-17 22:21:18 +02:00
e70718eea3
fix(matching): make match_batch_allocate commit from the MCP approval path (#1645 )
2026-08-17 22:20:52 +02:00
1470596591
feat(mcp): make agent feedback a read loop, advertise the tool, and stop over-promising (#1650 )
2026-08-17 22:18:43 +02:00