This website requires JavaScript.
9b126d22b9
fix(reconciliation): server-side confidence floor for unattended auto-apply (#903 )
Jakob Wennberg and Claude Fable 5
2026-07-06 11:30:46 +02:00
b700108107
feat(mcp): add invoice_date_override to create_supplier_invoice_from_inbox (#848 )
Jonas Flodén
2026-07-06 11:24:05 +02:00
ac1529e413
fix(ui): block illegal VAT rates, honest opening-balance state, surface account-save errors (#902 )
Jakob Wennberg and Claude Fable 5
2026-07-06 11:20:46 +02:00
8e7e7201d3
fix(db): drop delete_user_account RPC that bypassed BFL retention (#901 )
Jakob Wennberg and Claude Fable 5
2026-07-06 11:20:34 +02:00
b5f568004f
fix(ci): fail loud when the compliance diff artifact is missing (#832 )
Jonas Flodén
2026-07-06 09:29:01 +02:00
f58b7a3602
fix(mcp): treat created_journal_entry_id as a terminal link in gnubok_list_unmatched_documents (#891 )
Jonas Flodén
2026-07-06 09:27:51 +02:00
c43c4a076c
feat(salary): allow recalling approval on a salary run (approved → review) (#894 )
Jakob Wennberg and Claude Fable 5
2026-07-05 19:44:22 +02:00
2c2743eb79
Check/salary bankid api (#892 )
Mattsson and Claude Opus 4.8
2026-07-05 03:05:09 +02:00
ec27228a8e
style: remove em/en dashes repo-wide, add CLAUDE.md rule against them (#890 )
Jakob Wennberg and Claude Sonnet 5
2026-07-04 15:58:06 +02:00
a5154ee884
docs(dimensions): post-merge review nits from #888 (#889 )
Jakob Wennberg and Claude Fable 5
2026-07-03 17:26:00 +02:00
86c924a6e9
fix(dimensions): exempt system source types from account dimension rules (#888 )
Jakob Wennberg and Claude Fable 5
2026-07-03 17:17:16 +02:00
764348e99c
feat(dimensions): PR10 advanced — custom dimensions, hierarchy, account rules, commit enforcement (#886 )
Jakob Wennberg and Claude Fable 5
2026-07-03 16:50:28 +02:00
70e893b8d4
fix(skattekonto): stop conflating live-call auth failures with "inte anslutet" + surface SKV connection first in tax settings (#887 )
Jakob Wennberg and Claude Fable 5
2026-07-03 16:35:09 +02:00
9f7c842a33
feat(skatt): setup gates + auto-loading momsdeklaration across Skatt & bokslut tabs (#885 )
Jakob Wennberg and Claude Fable 5
2026-07-03 16:12:51 +02:00
100a4d1291
feat(ux): create salary runs, employees & recurring schedules in modals (#883 )
Jakob Wennberg and Claude Fable 5
2026-07-03 15:18:20 +02:00
237b77a366
feat: custom inbound mail domains, rot/rut payout file, invoice email texts, security hardening (#878 )
Mattsson and Claude Fable 5
2026-07-03 13:57:59 +02:00
678f2ccffd
feat(mcp): P2 hygiene — honest category suggestions, skill-reference lint, cadence copy (#882 )
Jakob Wennberg and Claude Fable 5
2026-07-03 11:48:29 +02:00
b27f6cdb04
fix(db): NULL-safe tenant guards via caller_is_company_member + mechanical sweep (#881 )
Jakob Wennberg and Claude Fable 5
2026-07-03 11:48:09 +02:00
ea236cbcdf
fix(reconciliation): Bankavstämning phase 0 — correctness + feedback batch (+ nav IA regrouping) (#879 )
Jakob Wennberg and Claude Fable 5
2026-07-03 11:21:38 +02:00
59ecaee650
feat(mcp): qualified identifiers in all tool output schemas (P1-2) (#877 )
Jakob Wennberg and Claude Fable 5
2026-07-03 11:20:32 +02:00
21512db81a
feat(mcp): unify missing-document surfaces on one predicate (#876 )
Jakob Wennberg and Claude Fable 5
2026-07-03 10:56:14 +02:00
250cc7c450
feat(mcp): always-explicit retryable on structured errors + transient inference (P1-1) (#875 )
Jakob Wennberg and Claude Fable 5
2026-07-03 10:29:58 +02:00
001de3c844
feat(mcp): structured supplier-resolution failure with candidates in create_supplier_invoice_from_inbox (#873 )
Jakob Wennberg and Claude Fable 5
2026-07-03 10:14:16 +02:00
28827c2613
feat(dimensions): voucher-level retro-tagging workbench — reversal pairs hidden by default (#874 )
Jakob Wennberg and Claude Fable 5
2026-07-03 10:11:07 +02:00
45438d4d64
fix(mcp): SQL-side filtering and pagination for list_verifikat_without_documents (#872 )
Jakob Wennberg and Claude Fable 5
2026-07-03 09:42:02 +02:00
4b5fe9ee57
fix(mcp): add link_document_to_voucher to pending_operations CHECK constraint (#871 )
Jakob Wennberg and Claude Fable 5
2026-07-03 09:41:31 +02:00
fb3f0a9cee
feat(dimensions): PR9 cutover — cost_center/project become GENERATED columns, dual-write removed (#870 )
Jakob Wennberg and Claude Fable 5
2026-07-02 23:28:42 +02:00
163fbd8222
feat(dimensions): PR8 salary — employees.default_dimensions, per-employee cost lines, aggregation re-key (#869 )
Jakob Wennberg and Claude Fable 5
2026-07-02 22:21:46 +02:00
755e0f7e47
feat(dimensions): PR7 producers — auto-tagged documents (invoices, supplier invoices, bulk-book, templates, MCP) (#868 )
Jakob Wennberg and Claude Fable 5
2026-07-02 21:21:01 +02:00
816b1769c8
feat(dimensions): PR6 retro-tagging — audited retag carve-out, BulkTagWorkbench, staged MCP tool (#867 )
Jakob Wennberg and Claude Fable 5
2026-07-02 17:02:34 +02:00
fb3fe82a56
feat(dimensions): PR5 SIE round-trip — lossless dimension import + undo lockstep (#866 )
Jakob Wennberg and Claude Fable 5
2026-07-02 16:05:13 +02:00
c7f0db00c8
fix(invoices): allowlist forwarded params on the /new redirects (#861 review) (#864 )
Jakob Wennberg and Claude Fable 5
2026-07-02 15:30:21 +02:00
01dbef4015
feat(dimensions): PR4 reports — dimension-filtered P&L + Resultat per projekt/kostnadsställe (#862 )
Jakob Wennberg and Claude Fable 5
2026-07-02 15:20:47 +02:00
86071334cb
feat(invoices): create customer & supplier invoices in modals, matching the verifikat pattern (#861 )
Jakob Wennberg and Claude Fable 5
2026-07-02 14:04:52 +02:00
11126d6d56
feat(dimensions): PR3 tagging — voucher-form pickers, MCP dimension tools with resolve-don't-select, engine soft validation (#859 )
Jakob Wennberg and Claude Fable 5
2026-07-02 13:36:45 +02:00
6be6510d73
fix(entitlements): gate paid AI document OCR server-side (free-tier leak) (#852 )
Jakob Wennberg and Claude Opus 4.8
2026-07-02 13:36:15 +02:00
f675ae6565
fix(loops): committed playbook path + Sentry-first error source (#851 )
Jakob Wennberg and Claude Opus 4.8
2026-07-02 13:36:12 +02:00
8bb49c07a2
feat(dimensions): PR2 registry — CRUD API, register UI, settings toggle, SIE export on the new registry (#858 )
Jakob Wennberg and Claude Fable 5
2026-07-02 12:26:42 +02:00
8cc2efb083
feat(dimensions): PR1 substrate — SIE-native registry + dimensions JSONB on journal lines (#857 )
Jakob Wennberg and Claude Fable 5
2026-07-02 11:27:07 +02:00
f63d3e3100
Bug/open banking flow (#854 )
Mattsson and Claude Opus 4.8
2026-07-01 18:13:00 +02:00
2da9c71eb3
UI badge cleanup + /chart-of-accounts route + loop skills (#850 )
Jakob Wennberg and Claude Opus 4.8
2026-07-01 14:29:23 +02:00
d63d2aecf0
feat: UI slop cleanup, invoice icon/header polish + year-end in Rapporter, journal-list DataList refactor (#847 )
Jakob Wennberg and Claude Opus 4.8
2026-06-30 20:42:56 +02:00
db843a7a5b
fix(entitlements): gate paid MCP tools (send_invoice/agi_submit/vat_declaration_submit) server-side (#846 )
Jakob Wennberg and Claude Opus 4.8
2026-06-30 16:38:14 +02:00
5df6199bd1
fix(invoices): remaining_amount + invoice.paid on agent mark-paid path (#825 ) (#845 )
Jakob Wennberg and Claude Opus 4.8
2026-06-30 16:01:07 +02:00
46039f14f4
fix(reports): valid two-file NE-bilaga SRU submission (#318 , #319 ) (#844 )
Jakob Wennberg and Claude Opus 4.8
2026-06-30 16:01:02 +02:00
f8504f3bd0
fix: audit batch — pagination truncation, MFA/dead-code cleanup, mark-paid fail-closed (#841 )
Jakob Wennberg and Claude Opus 4.8
2026-06-30 14:34:23 +02:00
b800dcd403
style(ui): system-wide UX/UI polish pass — design-system conformance + copy cleanup (#835 )
Jakob Wennberg and Claude Opus 4.8
2026-06-30 13:14:13 +02:00
a8072f6423
feat: realtime updates for dashboard transactions (rebased reimplementation of #757 ) (#833 )
2026-06-30 08:58:01 +02:00
f8aef335c9
fix(ci): persist-credentials: false on the privileged compliance-review checkout (#831 )
Jakob Wennberg and Claude Opus 4.8
2026-06-30 08:57:58 +02:00
a68123bbe8
fix(ci): fork-safe compliance review (two-stage workflow_run) — safe alternative to #829 (#830 )
Jakob Wennberg and Claude Opus 4.8
2026-06-29 23:44:30 +02:00
1cd8863958
fix(transactions): resolve bank account from cash_account_id in booking dialog (#769 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-29 23:08:04 +02:00
5b4cefe8ab
feat(api): v1 endpoints to stamp invoice inbox items as consumed (#767 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-29 23:08:01 +02:00
7cd1a7388f
fix(customers): add columns the system-migration importer needs (address_line2, default_payment_terms, vat_number_validated) (#780 )
2026-06-29 22:59:58 +02:00
837f354d81
fix(sie): add ?encoding=cp437 for legacy bookkeeping software (#810 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-29 22:59:55 +02:00
37ee125b9b
fix(mcp): paginate trial-balance and VAT aggregations (1000-row truncation) (#806 )
2026-06-29 22:49:10 +02:00
e4a9fdb4a6
fix(reports): add missing allLines mock to SIE OB-exclusion test (#828 )
Jakob Wennberg and Claude Opus 4.8
2026-06-29 22:36:24 +02:00
6b4bf63fec
fix(reports): sort trial balance source lines by date then voucher_number (#763 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-29 22:14:10 +02:00
5e9aa52dea
feat(mcp): add gnubok_link_document_to_voucher tool (#804 )
Jonas Flodén
2026-06-29 22:14:07 +02:00
15af0cd7ea
feat(mcp): add per-line account overrides to create_supplier_invoice_from_inbox (#805 )
Jonas Flodén
2026-06-29 22:14:03 +02:00
4f96ce920a
fix(arcim-migration): dedup customers/suppliers by name when org-number is absent (#788 )
Jonas Hagberg
2026-06-29 22:13:59 +02:00
96989f1cde
fix(arcim-migration): treat 12-digit Swedish numbers as domestic + route personnummer to personal_number (#799 )
Jonas Hagberg
2026-06-29 22:13:55 +02:00
47f03f4238
feat(arcim): import Bokio underlag and link to verifikat (#786 ) (#813 )
Jonas Hagberg
2026-06-29 22:13:51 +02:00
da692c2898
fix(transactions): include 'overdue' in match-supplier-invoice CAS guard (#779 )
Jonas Flodén
2026-06-29 22:13:48 +02:00
b2aa79d553
fix(reports): exclude opening-balance entry from SIE #UB movement (#809 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-29 22:13:44 +02:00
d603042328
build(deps): bump The-PR-Agent/pr-agent from 0.37.0 to 0.38.0 (#818 )
dependabot[bot]
2026-06-29 22:13:40 +02:00
5cf23c180d
build(deps): bump alpine from a2d49ea to 28bd5fe in /docker (#819 )
dependabot[bot]
2026-06-29 22:13:36 +02:00
cb01b946fc
fix(bokslut): map computer/vehicle depreciation to standard 7832 so it resolves (#755 ) (#822 )
Jakob Wennberg and Claude Opus 4.8
2026-06-29 21:47:46 +02:00
663e1232a4
fix(bookkeeping): push grundbok series filter into the RPC so pagination total is honest (#798 ) (#823 )
Jakob Wennberg and Claude Opus 4.8
2026-06-29 21:47:42 +02:00
4872c0f242
fix(reports): stable total order on SIE-export fetchAllRows paging (#793 hardening) (#824 )
Jakob Wennberg and Claude Opus 4.8
2026-06-29 21:39:40 +02:00
0e8698f538
fix(entitlements): billing reachable in settings modal + conversion redesign (#821 )
Jakob Wennberg and Claude Opus 4.8
2026-06-29 16:51:31 +02:00
60e33c4b51
Fix/cus fee 28 (#820 )
Mattsson and Claude Opus 4.8
2026-06-29 16:34:51 +02:00
4f0a7b1db0
feat(entitlements): per-company capability paywall — gate, trial seeding, UI upsells, Stripe checkout (#815 )
Jakob Wennberg and Claude Opus 4.8
2026-06-29 15:56:19 +02:00
fce6faff2c
fix(api): stabilize report pagination + declare real { data, meta } envelope on v1 single/write endpoints (#811 )
Jakob Wennberg and Claude Opus 4.8
2026-06-28 13:42:50 +02:00
ae17b304d7
fix(import): add stable .order() to account-sync chart paging (#790 , #791 follow-up) (#812 )
Jakob Wennberg and Claude Opus 4.8
2026-06-28 13:42:41 +02:00
fc2b4d1e23
fix(api): declare the real { data, meta } envelope for v1 list endpoints (#802 )
Jakob Wennberg and Claude Opus 4.8
2026-06-26 15:30:48 +02:00
55ba66908b
feat(salary): let an enskild firma employ staff while blocking owner/board payroll (#797 )
Jakob Wennberg and Claude Opus 4.8
2026-06-26 15:30:03 +02:00
5bacda4839
fix(vat): drop personnummer century so enskild firma VAT number is SE+12 not SE+14 (#796 )
Jakob Wennberg and Claude Opus 4.8
2026-06-26 15:29:58 +02:00
9278221616
fix(api): guard params await so static v1 routes don't 500 (#795 )
Jakob Wennberg and Claude Opus 4.8
2026-06-26 15:29:54 +02:00
9ed0b9515a
Fix/invoice booking vat fixes (#778 )
Mattsson and Claude Opus 4.8
2026-06-25 15:54:35 +02:00
bc09cea07e
chore(scripts): add prod repair scripts for Arcim and Capelix incidents (#773 )
Jakob Wennberg and Claude Opus 4.8
2026-06-25 13:42:57 +02:00
10a0b1d8dd
fix(invoices): embed company logo as PNG so it renders on invoice PDFs (#772 ) (#776 )
Jakob Wennberg and Claude Opus 4.8
2026-06-25 13:42:53 +02:00
739f18fd1c
fix(reconciliation): drive bank avstämning period from the report header (#771 ) (#774 )
Jakob Wennberg and Claude Opus 4.8
2026-06-25 13:42:49 +02:00
43007fa869
feat(mcp): self-describing agent surface — staging _meta, company identity, clean skill summaries (#775 )
Jakob Wennberg and Claude Opus 4.8
2026-06-25 13:42:12 +02:00
d5abc8dd1c
fix(inbox): set_inbox_extracted_data should accept and persist accountSuggestion (#760 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-25 12:40:53 +02:00
6fe4164adc
fix(inbox): fall back to supplier.default_expense_account in create_supplier_invoice_from_inbox (#759 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-25 12:40:29 +02:00
a3491b6d89
fix(transactions): resolve bank account from cash_account_id in bulk-book and direct-book dialogs (#770 )
Jonas Flodén
2026-06-25 12:40:09 +02:00
a4da2d62df
feat: add ignore menu item to transaction inbox card (#758 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-25 12:40:05 +02:00
5279dfb494
fix(bookkeeping): gnubok_categorize_transaction now handles incoming expense refunds correctly (#761 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-25 12:40:01 +02:00
bbc8063f53
fix(bookkeeping): reverseEntry defaults to original entry_date, not today (#762 )
Jonas Flodén and Claude Sonnet 4.6
2026-06-25 12:39:56 +02:00
429ab7b230
build(deps): bump The-PR-Agent/pr-agent from 0.36.0 to 0.37.0 (#765 )
dependabot[bot]
2026-06-25 12:39:36 +02:00
be9bec6b0d
build(deps): bump actions/checkout from 6 to 7 (#764 )
dependabot[bot]
2026-06-25 12:39:32 +02:00
931f4fe36d
build(deps): bump alpine from 3.22 to 3.24 in /docker (#732 )
dependabot[bot]
2026-06-25 12:39:29 +02:00
26c5798b6e
build(deps): bump docker/login-action from 3 to 4 (#696 )
dependabot[bot]
2026-06-25 12:39:26 +02:00
027734ffc7
fix(reconciliation): scope bank avstämning to a fiscal period so the IB stops counting (#751 ) (#754 )
Jakob Wennberg and Claude Opus 4.8
2026-06-18 13:49:00 +02:00
241959513b
Fix/mcp and req (#753 )
Mattsson and Claude Opus 4.8
2026-06-18 11:49:33 +02:00
2d6ddeafc5
feat(import/export): article import + register export (xlsx/csv) (#750 )
Jakob Wennberg and Claude Opus 4.8
2026-06-17 14:38:44 +02:00
7aa37fd3b8
fix(mcp): return 405 (not 401) on GET /mcp to stop client re-auth storm (#747 )
Jakob Wennberg and Claude Opus 4.8
2026-06-17 14:26:13 +02:00
ca3ae65b12
fix(deps): bump ws to 8.21.0 to clear fixable HIGH CVE failing docker-publish (#745 )
Jakob Wennberg and Claude Opus 4.8
2026-06-16 22:14:13 +02:00
2a8bf9b42e
Bug/year end numbers (#744 )
Mattsson and Claude Opus 4.8
2026-06-16 18:22:09 +02:00
5c40fa9aeb
fix(docker): run runtime as nextjs so self-host boots under cap_drop: ALL (#737 )
Jonas Hagberg
2026-06-16 16:38:27 +02:00