Bug/gh issues fiz (#1103)

* refactor: optimize page loading and data fetching

* fix: resolve recurring production runtime errors

* feat: add MCP company and customer updates

* fix: handle year-end tax adjustments

* feat: harden annual report compliance

* fix: expand invoice logo and font support

* fix: sanitize API route error responses

* fix: sanitize user-facing error messages

* feat: persist onboarding and tax assessment notices

* fix: reduce cloud backup audit churn

* feat: refine invoice editor layout

* fix: show saved tax adjustments in INK2

* fix: complete annual report API mappings

* docs: record operational safeguards and decisions

* fix: harden annual report review findings

* fix: adjust column span for description based on VAT registration

* New css class name
This commit is contained in:
Mattsson
2026-07-21 23:00:15 +02:00
committed by GitHub
parent 702512437a
commit e11f70b347
467 changed files with 17569 additions and 2221 deletions
+3 -2
View File
@@ -18,6 +18,7 @@ import { useCapability } from '@/contexts/CompanyContext'
import { CAPABILITY } from '@/lib/entitlements/keys'
import { UpgradeNote } from '@/components/billing/UpgradeNote'
import ApprovalCard from './ApprovalCard'
import { getErrorMessage as getUserErrorMessage } from '@/lib/errors/get-error-message'
// Markdown parser loads on the first assistant message instead of with the
// chat surface itself; react-markdown + remark-gfm pull in the whole
@@ -259,7 +260,7 @@ export default function AgentChat({
})
} catch (err) {
if (signal.aborted) return
setErrorMessage(err instanceof Error ? err.message : 'Kunde inte nå assistenten.')
setErrorMessage(err instanceof Error ? getUserErrorMessage(err) : 'Kunde inte nå assistenten.')
setStreaming(false)
activeControllerRef.current = null
return
@@ -332,7 +333,7 @@ export default function AgentChat({
}
} catch (err) {
if (!signal.aborted) {
setErrorMessage(err instanceof Error ? err.message : 'Streamen avbröts.')
setErrorMessage(err instanceof Error ? getUserErrorMessage(err) : 'Streamen avbröts.')
}
} finally {
try {
+3 -1
View File
@@ -1,7 +1,9 @@
'use client'
import { createContext, useCallback, useContext, useMemo, useState } from 'react'
import AgentSheet from './AgentSheet'
import dynamic from 'next/dynamic'
const AgentSheet = dynamic(() => import('./AgentSheet'))
export interface AgentIdentity {
displayName: string | null
+4 -3
View File
@@ -11,6 +11,7 @@ import { CAPABILITY } from '@/lib/entitlements/keys'
import type { PendingOperationRejectionCategory } from '@/types'
import { cn } from '@/lib/utils'
import { formatCurrency } from '@/lib/utils'
import { getErrorMessage as getUserErrorMessage } from '@/lib/errors/get-error-message'
// Inline approval card for an agent-staged pending_operation.
//
@@ -144,7 +145,7 @@ export default function ApprovalCard({
setState('committed')
} catch (err) {
setState('error')
setErrorMessage(err instanceof Error ? err.message : 'Kunde inte godkänna.')
setErrorMessage(err instanceof Error ? getUserErrorMessage(err) : 'Kunde inte godkänna.')
}
}
@@ -169,7 +170,7 @@ export default function ApprovalCard({
await handleCommit()
} catch (err) {
setState('error')
setErrorMessage(err instanceof Error ? err.message : 'Kunde inte aktivera kontona.')
setErrorMessage(err instanceof Error ? getUserErrorMessage(err) : 'Kunde inte aktivera kontona.')
}
}
@@ -210,7 +211,7 @@ export default function ApprovalCard({
}
} catch (err) {
setState('error')
setErrorMessage(err instanceof Error ? err.message : 'Kunde inte avslå.')
setErrorMessage(err instanceof Error ? getUserErrorMessage(err) : 'Kunde inte avslå.')
}
}