6a0ba9faaa
Merge pull request 'feat(toolchain): W4-slutvåg — mise task-kontrakt + lefthook + template-pin + dokumentation' (#2) from feat/selected-toolchain-w4 into main
main
admin2026-09-15 00:38:13 +00:00
42241a9ad3
feat(toolchain): W4-slutvåg — mise task-kontrakt (genererad ur toolchain-discovery) + lefthook + template-pin + dokumentation
admin2026-09-15 02:30:45 +02:00
500806f001
fix(agent): the assistant reaches earlier räkenskapsår: period resolved from dates, years listed in the grounding (#2436)
Jakob Wennberg
2026-09-08 21:32:38 +02:00
20925f6c65
feat(worklist): the next Skatteverket payment with bankgiro, OCR and due date under Att göra on Hem (#2435)
Jakob Wennberg
2026-09-08 21:25:01 +02:00
a7dcaac6ad
feat(kpi): monthly revenue, expenses and result table under Nyckeltal, toggle in Anpassa (#2433)
Jakob Wennberg
2026-09-08 21:19:19 +02:00
5e2498bc2f
feat(transactions): pick several ROT/RUT begäran by hand for one Skatteverket transfer (#2431)
Jakob Wennberg
2026-09-08 21:05:52 +02:00
d5373cd66c
feat(invoices): ROT/RUT begäran status as a column and filter in the invoice list (#2434)
Jakob Wennberg
2026-09-08 20:56:52 +02:00
9782f80db0
feat(invoices): offert to kundorder, the missing step in offert, order, faktura (#2442)
Mattsson
2026-09-08 18:29:37 +02:00
32721b9f61
feat(invoices): diagonal UTKAST/DRAFT watermark on draft PDFs instead of the top-margin banner (#2441)
Mattsson
2026-09-08 18:11:43 +02:00
2d49a81508
fix(bookkeeping): negative item rows book on the opposite side, never as negative amounts (#2439)
Mattsson
2026-09-08 18:10:34 +02:00
c091a7f28e
fix(ui): clip the flexible list cell on the rows #2003 missed (#2284)
bjornbergenheim
2026-09-08 17:07:33 +02:00
2f787a2b3c
fix(bookkeeping): send each missing-underlag lookup chunk once per URL (#2430)
Mattsson
2026-09-08 16:35:41 +02:00
b2b714f829
fix(invoice-inbox): make the extraction prompt fill invoiceDate on receipts (#2429)
Jakob Wennberg
2026-09-08 16:26:09 +02:00
26e29f47bc
feat(company): ideell förening as a third legal form, behind a flag (#2072 step 1) (#2423)
Mattsson
2026-09-08 14:47:50 +02:00
1157ff1b66
feat(onboarding): the orgnr field also accepts a company name (#2421)
Mattsson
2026-09-08 14:23:05 +02:00
5987523a25
fix(migrations): re-issue the 12xx label backfill inside an explicit transaction block (#2422)
Mattsson
2026-09-08 14:14:51 +02:00
59d5b7b366
fix(bookkeeping): name 1249/1259/1269 after their BAS 2026 free heads, drop retired 12xx sub-accounts (#2419)
Mattsson
2026-09-08 13:34:50 +02:00
2303f75a7b
fix(suppliers): one 10-digit org number key for matching and storage (#2405)
Mattsson
2026-09-08 10:59:20 +02:00
eea410c42b
fix(bookkeeping): correctEntry moves bank anchors to the correction; deleting the correction returns them (#2406)
Mattsson
2026-09-08 10:34:15 +02:00
25b969183c
fix(invoices): wrap the Visa PDF handler so the click event is not read as options (#2403)
Mattsson
2026-09-08 01:32:21 +02:00
4e8d649b2f
fix(invoices): Ej skickade view and a prompt before downloading a draft-stamped PDF (#2401)
Mattsson
2026-09-08 01:10:14 +02:00
477b59453f
fix(enable-banking): flatten Enable Banking's bank_transaction_code object to a string (#2398)
Mattsson
2026-09-08 00:37:23 +02:00
5d735097a1
fix(period): let klarmarkera close a migrated year whose native vouchers are balance-sheet only (#2393)
Jakob Wennberg
2026-09-07 20:10:41 +02:00
57a5af1310
fix(woocommerce): return the wc-auth browser leg to the brand host the connect started on (#2386)
Mattsson
2026-09-07 18:40:45 +02:00
f047c3d7d1
fix(skatteverket): finish the BankID consent on the initiating origin, bound to the initiating user (#2373)
Mattsson
2026-09-07 16:43:38 +02:00
cb962fae88
fix(auth): resolve BankID confirmation and email-hook link hosts through the trusted-origin registry (#2380)
Mattsson
2026-09-07 16:29:29 +02:00
e0244b95a7
fix(woocommerce): require both verified keys and browser confirmation to activate a connection (#2375)
Mattsson
2026-09-07 15:54:28 +02:00
a769bc9d03
feat(migration): Björn Lundén activation through Lundify's redirect flow (#2374)
Jakob Wennberg
2026-09-07 15:38:07 +02:00
8aa5d54510
chore(domains): add solbo.accounted.se to the production host inventory (#2378)
Mattsson
2026-09-07 15:25:34 +02:00
d29a5bda14
fix(auth): resolve auth-link hosts from the brands table, drop NEXT_PUBLIC_WHITELABEL_DOMAINS (#2376)
Mattsson
2026-09-07 15:12:22 +02:00
c634cf9ae0
fix(banking): return Enable Banking consent callbacks to the initiating brand host (#2371)
Mattsson
2026-09-07 14:14:36 +02:00
9879fb53e9
fix(billing): return from Stripe to the brand domain the user started on (#2370)
Mattsson
2026-09-07 13:49:16 +02:00
0016732232
feat(invoices): let the invoice list read by row tone without the status column (#2353)
Jakob Wennberg
2026-09-06 21:24:28 +02:00
bf7773d74b
feat(settings): standard verifikationsserier for new companies, opt-in action for existing (#2358)
Jakob Wennberg
2026-09-06 21:18:22 +02:00
4fce2d7b94
feat(salary): repay utlägg with the salary as a tax-free payslip line (#2361)
Jakob Wennberg
2026-09-06 21:17:46 +02:00
0069a3f59a
feat(reconciliation): suggest and book Skatteverkets bundled ROT/RUT payout against several begäran (#2360)
Jakob Wennberg
2026-09-06 21:13:53 +02:00
4bc007cdeb
fix(reports): periodisk sammanställning nets a stornoed or corrected EU invoice voucher (#2354)
Jakob Wennberg
2026-09-06 21:10:11 +02:00
6a5fd6cd00
feat(supplier-invoices): Inlagd i banken mark for payments entered by hand (#2220) (#2356)
Jakob Wennberg
2026-09-06 21:05:43 +02:00
6906bc4aa2
feat(compliance): InvoiceRowsCompleted behandlingshistorik event for migrated invoice rows (#2312) (#2357)
Jakob Wennberg
2026-09-06 21:04:53 +02:00
ebbe50c0f3
feat(supplier-invoices): "Vem betalade?" control replaces the paid privately switch and books an open utlägg (#2362)
Jakob Wennberg
2026-09-06 21:04:17 +02:00
6776cb4fc6
feat(reconciliation): propose the explaining voucher set for a bank row before offering Bokför (#2359)
Jakob Wennberg
2026-09-06 21:03:42 +02:00
fcda4a75dd
feat(parties): fill customer and supplier forms from the register on a valid org number (#2355)
Jakob Wennberg
2026-09-06 21:03:06 +02:00
3b9daf2606
fix(expenses): review follow-ups from #2333 (#2352)
Jakob Wennberg
2026-09-06 20:19:18 +02:00
1a725c121a
fix(whatsapp): four #1991/#1992 hardening residuals in the receipt channel (#2349)
Mattsson
2026-09-06 20:14:06 +02:00
92a734f2b3
fix(transactions): repair pre-#1990 stranded rows through a dry-run-first, per-company RPC (#2350)
Mattsson
2026-09-06 19:59:32 +02:00
3c033e466f
fix(bookkeeping): storno of a residual booking's main verifikat releases the bank row whole (#2348)
Mattsson
2026-09-06 19:45:03 +02:00
7448490fb7
fix(underlag): a verifikat a customer invoice points at is backed by it; PS follows the invoice link (#2298) (#2347)
Jakob Wennberg
2026-09-06 19:04:30 +02:00
cce0de5704
feat(mcp): already-explained voucher guard at stage and commit for match_batch_allocate (#2294) (#2346)
Jakob Wennberg
2026-09-06 18:56:36 +02:00
39d409d257
fix(invoices): write migrated invoice rows through one locking RPC so two writers cannot double them (#2313) (#2340)
Jakob Wennberg
2026-09-06 18:55:42 +02:00
9cb1d105e3
fix(agent): hide Anthropic-only assistant surfaces where the provider cannot run them (#2204) (#2343)
Jakob Wennberg
2026-09-06 18:54:47 +02:00
272d19b287
fix(supplier-invoices): duplicate-payment guard matches abbreviated bank text and shares one detector with the customer side (#2299) (#2345)
Jakob Wennberg
2026-09-06 18:53:34 +02:00
82d25b7dee
fix(invoices): migrated paid invoice no longer reads as unpaid under Betalningar (#2213) (#2344)
Jakob Wennberg
2026-09-06 18:50:57 +02:00
b2d3a3e273
feat(settings): rename or re-date an existing räkenskapsår from the fiscal-year list (#2287) (#2337)
Jakob Wennberg
2026-09-06 18:48:27 +02:00
162de2128a
fix(import): show "created on import" as the mapping target for source accounts the chart lacks (#2342)
Jakob Wennberg
2026-09-06 18:39:36 +02:00
ea4da0eb07
fix(invoices): scope-check article ids in buildInvoiceWriteData so every invoice write refuses a foreign company's article (part of #2059) (#2339)
Jakob Wennberg
2026-09-06 18:39:08 +02:00
8313f527c9
fix(migration): complete-invoice-lines cron visits registers smallest first (#2341)
Jakob Wennberg
2026-09-06 18:38:31 +02:00
b71f2bf425
feat(expenses): repay utlägg from the bank line (#2333)
Jakob Wennberg
2026-09-06 18:16:51 +02:00
238cbe13f9
feat(invoices): choose the first invoice date on recurring schedules (#2338)
Mattsson
2026-09-06 16:49:29 +02:00
0c854ac54f
feat(settings): let a company name each verifikationsserie letter (#2336)
Mattsson
2026-09-06 16:20:42 +02:00
0e3c0af841
fix(sie-import): refuse a closed or locked target year up front and point at Öppna igen (#2334)
Jakob Wennberg
2026-09-05 19:13:28 +02:00
0ecf1d7fc4
fix(expenses): no help line for "Företaget" in the Vem betalade select (#2330)
Jakob Wennberg
2026-09-05 18:07:01 +02:00
c0eda46354
feat(mail): withhold new Gmail consents on hosted unless the company is allowlisted (#2320)
Jakob Wennberg
2026-09-05 17:51:45 +02:00
3e5670f978
fix(expenses): "Vem betalade?" as a compact select in the Underlag rail (#2327)
Jakob Wennberg
2026-09-05 17:27:12 +02:00
b0b995c77c
fix(tab-guard): name the company the other tab switched to (#2328)
Jakob Wennberg
2026-09-05 17:27:08 +02:00
473b1fd2eb
fix(providers): name the real Björn Lundén connect failure (integration not activated, not bad credentials) (#2322)
Jakob Wennberg
2026-09-05 17:20:08 +02:00
41a5728ca7
fix(expenses): review follow-ups from #2317 (#2326)
Jakob Wennberg
2026-09-05 16:43:53 +02:00
eb2ae1da17
fix(invoices): render statutory PDF notices in the document language (#2321)
Mattsson
2026-09-05 16:32:48 +02:00
cbe5580886
feat(expenses): utlägg as an answer to "Vem betalade?" in Underlag, not a page (#2317)
Jakob Wennberg
2026-09-05 15:57:14 +02:00
bff44e5757
fix(parties): one "från SCB" note per contact section (#2316)
Jakob Wennberg
2026-09-05 14:53:13 +02:00
971952fe19
fix(mail): request gmail.readonly alone, mailbox address via Gmail profile (Google verification) (#2301)
Jakob Wennberg
2026-09-05 14:42:21 +02:00
0ad83b8d71
feat(parties): the register fills the row, a compact Företagsuppgifter, and the party for agents (v1 expand + MCP) (#2315)
Jakob Wennberg
2026-09-05 14:33:20 +02:00
f33628f005
feat(import): say in the SIE wizard that the chart and fiscal year come along (#2307)
Mattsson
2026-09-05 13:56:54 +02:00
04898c3178
feat(parties): company details on the supplier and customer pages, the registry name becomes the displayed name (#2306)
Jakob Wennberg
2026-09-05 13:43:34 +02:00
f7f40c04e4
fix: return provider OAuth callbacks to the initiating brand domain (#2305)
Mattsson
2026-09-05 13:35:11 +02:00
287828a850
fix(payments): refuse to book a bank row that unlinked vouchers already explain (#2300)
Jakob Wennberg
2026-09-05 11:59:59 +02:00
9418de585f
fix(invoices): say what is missing when an invoice preview cannot be rendered (#2303)
Mattsson
2026-09-05 11:55:45 +02:00
34bf5a7387
fix(providers): Fortnox freight and fee as rows, text rows as text, string quantities as numbers (#2304)
Jakob Wennberg
2026-09-05 11:41:17 +02:00
e80ea74e76
fix(providers): map Fortnox VAT-inclusive rows net of VAT, and refuse migrated rows that contradict their header (#2302)
Jakob Wennberg
2026-09-05 10:53:48 +02:00
7c36d471b5
fix(sandbox): use posting engine and recover failed seeds (#2297)
Mattsson
2026-09-05 10:42:14 +02:00
8e1f9d5201
fix(migration): complete the rows of migrated sales invoices the hydration budget did not reach (#2291)
Jakob Wennberg
2026-09-05 10:20:10 +02:00
0bd3c27fba
fix(assistant): the salary fact follows the ledger, never the column default (#2290)
Jakob Wennberg
2026-09-05 09:49:21 +02:00
e684606b23
fix(supplier-invoices): a credit note is never a payable, so it never waits for attest (#2289)
Jakob Wennberg
2026-09-05 09:43:00 +02:00
1e1e1d5d17
fix(enable-banking): connector-hop failures no longer park a connection in error (#2296)
Mattsson
2026-09-05 00:28:27 +02:00