This website requires JavaScript.
8f68421fef
feat(skatteverket): expose skattekonto row booking via MCP staged operations (#2039 )
Mattsson and Claude Fable 5
2026-08-30 16:38:30 +02:00
3cf2e10740
feat(reminders): per-company reminder text overrides with per-field reset (#2038 )
Mattsson and Claude Fable 5
2026-08-30 16:06:00 +02:00
e313bfa8ec
fix(invoices): ROT/RUT kontantmetoden invoices could not be marked paid (#2040 )
Mattsson and Claude Fable 5
2026-08-30 15:12:37 +02:00
355723c566
fix(import): make SIE upload Safari-safe with visible file-type errors (#2032 )
Mattsson and Claude Fable 5
2026-08-30 12:25:30 +02:00
d39a9719a3
fix(peppol): say Peppol send is gated per company, never absent (#546 ) (#2021 )
Jakob Wennberg
2026-08-30 12:19:03 +02:00
d11d0a2e90
feat(reconciliation): match one bank event to several verifikationer (1:N) (#1553 ) (#2029 )
Jakob Wennberg
2026-08-30 11:56:15 +02:00
749f90fe62
feat(inbox): direct-to-storage upload for files over the hosted body limit (#1551 ) (#2030 )
Jakob Wennberg
2026-08-30 11:55:42 +02:00
523fba0419
feat(email): SMTP mailer behind the EmailService seam (EMAIL_PROVIDER=smtp); Resend stays the hosted default (#1746 )
Jakob Wennberg
2026-08-30 11:54:47 +02:00
8ec12fefc7
feat(members): always return the company invite link so it can be shared without a mail provider (#1710 ) (#2020 )
Jakob Wennberg
2026-08-30 11:53:13 +02:00
521f437072
feat(migration): link migrated invoices to their registration voucher (#1463 ) (#2024 )
Jakob Wennberg
2026-08-30 11:52:14 +02:00
683314b439
fix(vat): restore least-privilege ACL on get_vat_ruta_source_lines after #2016 (#2026 )
Jakob Wennberg
2026-08-30 11:51:27 +02:00
24614c19ff
fix(cash-accounts): rebind movable transactions when remapping a PSD2 ledger (#2023 )
Jakob Wennberg and Daniel Stenborg
2026-08-30 11:23:15 +02:00
cc7050f6cb
fix(pdf): keep the minus sign on losses in standard-font PDFs (#1982 ) (#1987 )
Jakob Wennberg
2026-08-30 11:22:05 +02:00
4b7343d5ec
fix(errors): keep the SQLSTATE when wrapping database errors (#2027 )
2026-08-30 10:48:05 +02:00
7e76961da1
fix(inbox): preview underlag via the inline document proxy (#1753 )
Daniel Stenborg and Daniel Stenborg
2026-08-29 10:05:32 +02:00
338ac4e913
fix(vat): make the ruta drill-down reconcile with the figure it explains (#2016 )
2026-08-29 00:29:11 +02:00
4e1eb3d662
fix(cash-accounts): never propose or accept an orphaned twin ledger as counter-account; match and re-point across sibling ledgers (#1643 ) (#2010 )
2026-08-29 00:26:47 +02:00
1a8fe36bc4
fix(reconciliation): direction-aware NULL-link settlement for transfer legs (#2018 )
Mattsson and Claude Fable 5
2026-08-28 23:51:27 +02:00
7f0f25b558
feat(account): self-service login email change with double confirmation (#2017 )
Mattsson and Claude Fable 5
2026-08-28 22:12:20 +02:00
a1cafe495f
fix(invoice-inbox): read whole PDFs (last-page slice + truncation retry) (#2014 )
Mattsson and Claude Fable 5
2026-08-28 18:57:02 +02:00
e8aa0670ca
feat(salary): agent path to set this month's per-run salary (#2015 )
Mattsson and Claude Fable 5
2026-08-28 18:14:31 +02:00
a4ceaafa4f
feat(inbox): per-item underlag anchoring status and a daily reconcile cron for stranded underlag (#1548 ) (#2012 )
2026-08-28 17:45:10 +02:00
ad8566f1ae
feat(settings): per-company data-analysis opt-in gating the calibration corpus (#1346 ) (#2007 )
2026-08-28 17:38:36 +02:00
33a58bec51
fix(webshop-orders): shared effective-rate helper and order-context refusal for the rate-0 slot (#1912 ) (#2008 )
2026-08-28 17:22:38 +02:00
22f0647d6c
feat(bookkeeping): make inline rattelse discoverable on the verifikat page (#1554 ) (#2011 )
2026-08-28 17:15:25 +02:00
ca93ef3fb6
fix(salary): surface employee-save failures and a typed 503 for the missing encryption key (#1996 ) (#2009 )
2026-08-28 16:57:54 +02:00
89ce837947
fix(arsredovisning): losses lost their minus sign in the PDF (#2013 )
Mattsson and Claude Fable 5
2026-08-28 16:55:41 +02:00
b4b11c33ca
fix(arcim-migration): require a completed SIE import for Fortnox too (#2000 ) (#2006 )
2026-08-28 16:52:12 +02:00
7993700589
fix(enable-banking): only hard-warn about sibling connections at observed one-session banks (#2005 )
Mattsson and Claude Fable 5
2026-08-28 15:31:38 +02:00
57d4359d1a
feat(booking-templates): per-company opt-in hiding of system templates (#2004 )
Mattsson and Claude Fable 5
2026-08-28 12:12:47 +02:00
5720632832
fix(transactions): stop inbox row markers overlapping Belopp on mobile (#2003 )
Mattsson and Claude Fable 5
2026-08-28 12:04:33 +02:00
52e99295de
fix(white-label): accept byrå-team invites before landing, so admins reach /clients (#2002 )
Mattsson and Claude Fable 5
2026-08-27 23:08:04 +02:00
89d0e1b994
fix(mcp): promote gnubok_update_customer to the default tools/list catalog (#1986 )
2026-08-27 22:28:14 +02:00
17caf9d80a
feat(mcp): article-aware invoice updates with gnubok_get_invoice round trip and rebooking preview (#1993 )
2026-08-27 22:27:02 +02:00
273af39994
fix(whatsapp): company question falls back to numbered text and ignores archived companies (#1992 )
2026-08-27 22:26:38 +02:00
57ff2eda96
fix(whatsapp): unknown-sender quota RPC fails open to the throttled greeting path (#1991 )
2026-08-27 22:25:29 +02:00
f0af4ad4ee
fix(transactions): categorize fails closed when the verifikat cannot be created (#1990 )
2026-08-27 22:25:11 +02:00
cb9ae15d46
fix(storno): return stornoed bank transactions to Att bokfora (#1985 )
2026-08-27 22:24:55 +02:00
533df34369
fix(payments): make supplier payment batch creation atomic via create_supplier_payment_batch RPC (#1989 )
2026-08-27 22:24:36 +02:00
4f939ebb21
fix(payroll): expose jämkning percentage and validity on the employee tax form (#1988 )
2026-08-27 22:24:16 +02:00
175bb8bd92
fix(bookkeeping): book a negative line-pattern rounding diff on 3740 opposite the business side (#1898 ) (#1994 )
2026-08-27 22:23:52 +02:00
04406edb0f
fix(mfa): hard-navigate after TOTP enrolment so the user is not stranded on the QR screen (#1948 ) (#1984 )
2026-08-27 22:19:20 +02:00
fca57dc470
fix(vat): momsdeklaration defaults respect the configured cadence and persist manual changes (#1998 )
Mattsson and Claude Fable 5
2026-08-27 19:09:47 +02:00
4f6ecad549
feat(white-label): invite-only signup for brand domains (#1995 )
Mattsson and Claude Fable 5
2026-08-27 18:32:52 +02:00
325c827322
test(mcp): run the tools against a real PostgREST, not a fake supabase (#1983 )
2026-08-27 18:11:41 +02:00
5fe3ae71a1
feat(mcp): surface documents that are attached to nothing on the attention resource (#1979 )
2026-08-27 18:00:27 +02:00
304baf1089
chore(ci): ratchet TypeScript errors, because npm test does not typecheck (#1980 )
2026-08-27 17:53:04 +02:00
e41cf50afe
fix(bookkeeping): verifikat views show company account names for off-catalog accounts (#1997 )
Mattsson and Claude Fable 5
2026-08-27 17:45:52 +02:00
12ce693eb6
feat(mcp): make search-only read tools reachable, and put the payload ceiling into reverse (#1976 )
2026-08-27 17:45:40 +02:00
3447da027a
feat(api): agent-substrate quick wins: worked examples in the spec, honest Retry-After, and a payload guard that covers the namespace new installs get (#1974 )
2026-08-27 17:35:47 +02:00
c0ecb34a2b
fix(company): migration reset no longer blocks on existing vouchers, sequences, or invoices (#1977 )
2026-08-27 14:35:19 +02:00
dfed55cb6c
feat(periods): undo klarmarkera so an externally closed year can be reopened (#1978 )
2026-08-27 14:34:02 +02:00
c981384a0e
fix(transactions): keep the assistant usable through the whole booking flow (#1975 )
Mattsson and Claude Fable 5
2026-08-27 14:22:20 +02:00
99c94d467a
fix(white-label): back-to-clients link points at the byra cockpit's home domain (#1973 )
Mattsson and Claude Fable 5
2026-08-27 13:44:23 +02:00
a860c690ed
feat(white-label): WL-14 cockpit landing for BankID and OAuth/magic-link logins (#1972 )
Mattsson and Claude Fable 5
2026-08-27 13:37:20 +02:00
b30c71086e
feat(byra): gate the automatic cockpit landing to owner/admin (#1970 )
Mattsson and Claude Fable 5
2026-08-27 11:49:00 +02:00
23776337c8
feat(onboarding): the hosted checklist closes with Connect to Claude (#1971 )
2026-08-27 11:35:47 +02:00
5e9cd6f761
fix(enable-banking): unstarve the daily bank sync cron (#1969 )
Mattsson and Claude Fable 5
2026-08-26 23:39:29 +02:00
98aff7c577
fix(transactions): keep booking dialog open while typing in the agent sheet (#1966 )
Mattsson and Claude Fable 5
2026-08-26 23:21:29 +02:00
ff88e3de05
fix(bookkeeping): remove false 1580 tax-receivable label, let company account names win (#1968 )
Mattsson and Claude Fable 5
2026-08-26 23:11:05 +02:00
dae0aac26a
fix(mcp): reconcile_match callable + two-phase efterkontroll + instant value for web-onboarded users (#1967 )
2026-08-26 23:04:57 +02:00
b160f7290d
docs(plugin): starter prompt nudges the connector's onboarding guide (#1965 )
2026-08-26 22:48:10 +02:00
c2f055b903
fix(bank): 90-day lookback is the default: long PSD2 requests make some banks kill the session (#1964 )
2026-08-26 22:36:06 +02:00
53c4d0d194
feat(mcp): approve the SIE import in the drop card + post-import efterkontroll in the skill (#1963 )
2026-08-26 21:57:45 +02:00
84e6b1eb17
fix(ui): cap DialogContent grid track so nowrap children cannot widen modals (#1962 )
Mattsson and Claude Fable 5
2026-08-26 21:14:06 +02:00
ff84c8f316
fix(mcp): widget-bearing tools must be read-only: Claude.ai drops write-annotated interactive tools (#1961 )
2026-08-26 20:47:22 +02:00
9bad3aee06
fix(build): bound Turbopack build memory so Vercel's standard container stops OOM-killing builds (#1958 )
Mattsson and Claude Fable 5
2026-08-26 20:13:18 +02:00
d8244ecaff
feat(mcp): connect_migration: one-click card into the previous-system wizard (#1960 )
2026-08-26 19:19:24 +02:00
5715dd3def
docs(mcp): onboarding skill branches on the named previous system (#1959 )
2026-08-26 19:04:22 +02:00
0f7625535b
feat(mcp): drag-and-drop SIE import card: exact bytes via tools/call, no model in the byte path (#1957 )
2026-08-26 17:06:30 +02:00
fdb5f6f891
feat(white-label): byra white-label infrastructure: brands, cockpit, home domains, branded email (#1956 )
Mattsson and Claude Fable 5
2026-08-26 16:56:39 +02:00
6f0f4d1eea
fix(mcp): flow-order signals in tool results: ask the bank, import history first (#1955 )
2026-08-26 16:35:12 +02:00
cd9fb5b717
feat(mcp): byte-exact SIE upload path + brevity and memory-first onboarding (#1954 )
2026-08-26 16:11:11 +02:00
dcb5d329a3
fix(skatteverket): show a banner when the connection is dead (#1925 )
Mattsson and Claude Fable 5
2026-08-26 15:56:25 +02:00
4af7469523
feat(onboarding): minimal input: orgnr + moms period is the whole ask (#1952 )
2026-08-26 15:15:09 +02:00
4ac7b45c8a
perf(layout): dashboard layout in two waves, nav flags as one RPC, local JWT verification (#1946 )
2026-08-26 15:14:49 +02:00
1a41119682
perf(bundle): drop the BAS chart and the Node crypto polyfill from the shared client baseline (#1942 )
2026-08-26 15:07:49 +02:00
e7e4efbfbc
feat(oauth): one-click consent: all scopes pre-selected, list collapsed, Allow above the fold (#1953 )
2026-08-26 15:06:46 +02:00
41424a1650
feat(ux): one silhouette from route fallback to detail content (#1944 )
2026-08-26 15:02:26 +02:00
3ee3565d6d
perf(reference-data): sweep the remaining raw reads onto the session cache, ratchet to 0 (#1941 )
2026-08-26 14:56:37 +02:00
4560ccbfc9
perf(forms): supplier-invoice form, register forms and review dialogs read the session cache (#1938 )
2026-08-26 14:50:26 +02:00
40e773548c
perf(invoices): the invoice editor renders on the first paint from the session cache (#1937 )
2026-08-26 14:43:09 +02:00
567fae654c
perf(bookkeeping): booking dialogs render populated on open from the session cache (#1935 )
2026-08-26 14:37:28 +02:00
ec9cab24cc
feat(mcp): ask the bank first: connect link deep-starts the named bank's consent (#1951 )
2026-08-26 14:31:45 +02:00
9a56b7aff9
perf(bookkeeping): fiscal-year pickers and cash accounts read the session cache (#1934 )
2026-08-26 14:24:24 +02:00
b436d47b64
feat(mcp): onboarding flow v2: migration-first SIE import in chat, one-confirm momentum, extended first-year heuristic (#1949 )
2026-08-26 14:16:40 +02:00
52bfd7a399
perf(auth): skip the MFA factor lookup once the session is at AAL2 (#1933 )
2026-08-26 14:15:22 +02:00
47fe193c48
feat(perf): session-cached reference data layer, server-seeded, with a raw-fetch ratchet (#1932 )
2026-08-26 14:14:54 +02:00
a8980a3a41
perf(hem): stream the home page in three sections and trim its query plan (#1945 )
2026-08-26 14:02:09 +02:00
a3326a0296
perf(nav): hover-intent prefetch for the dashboard nav + 30 s client router cache (#1943 )
2026-08-26 14:01:37 +02:00
c31933b15b
perf(api): write routes stop re-resolving the active company (#1928 )
2026-08-26 13:55:48 +02:00
b2e15bbd2a
feat(perf): measure the auth proxy per request (Server-Timing + proxy completed log) (#1922 )
2026-08-26 13:55:42 +02:00
6dd0e951e6
ci: publish accounted-mcp and gnubok-mcp to npm when their version changes (#1920 )
2026-08-26 13:36:17 +02:00
9396e54965
docs: correct stale product facts (arkivplan, architecture, agents, self-hosting, extensions, database map) (#1931 )
2026-08-26 13:36:05 +02:00
188816652d
docs(api,mcp): tool counts, changelog backfill, version-header honesty, lazy auth, endpoint map (#1929 )
2026-08-26 13:35:54 +02:00
b8605aabfc
fix(settings): derive API-key scope groups and tool counts from the scope catalogue (#1924 )
2026-08-26 13:35:42 +02:00
f338850bd0
fix: hide API-archived customers and suppliers from lists and pickers (#1927 )
2026-08-26 13:35:27 +02:00
1185ab4294
fix(mcp): honest tool text and build-derived server version (#1923 )
2026-08-26 13:35:15 +02:00
1a27b5bd4a
fix(auth): route document integrity, transaction delete/list and agent categorize through withRouteContext (#1926 )
2026-08-26 13:34:31 +02:00
d3869e6694
fix(api): register the v1 stamp endpoint scope and derive the webhook event catalogue from one source (#1930 )
2026-08-26 13:34:27 +02:00