@accounter/server
Version:
Accounter GraphQL server
7,953 lines • 548 kB
Markdown
# @accounter/server
## 0.2.0-alpha-20260819194013-dcbb6aebad214e81bc64f34f6babc7ffeac3cc21
### Minor Changes
- [#4139](https://github.com/Urigo/accounter-fullstack/pull/4139)
[`73fa00a`](https://github.com/Urigo/accounter-fullstack/commit/73fa00a411451695ca0d1e2f5b56762d5f685e4b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Batch add/remove tags across selected
charges from the charges table.
Server: new
`batchUpdateChargesTags(chargeIds: [UUID!]!, addTagIds: [UUID!], removeTagIds: [UUID!])` mutation.
It adds and/or removes the given tags on every listed charge while leaving each charge's other
tags untouched (additive/subtractive — unlike `batchUpdateCharges(fields.tags)`, which replaces a
charge's whole tag set). Inserts are idempotent and processing is bounded-concurrency. Consistent
with the existing convention, a tag-only change does **not** degrade accountant approval.
Client: the charges table's selection-column bulk-actions menu gains a "Change tags" action
opening a dialog with Add/Remove modes and a tag multi-select, applied to all selected charges in
one request.
- [#4121](https://github.com/Urigo/accounter-fullstack/pull/4121)
[`b28d745`](https://github.com/Urigo/accounter-fullstack/commit/b28d745456f135d952437ca5ad7056f6188aae33)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Support batch ledger-record regeneration
from the charges table.
The `regenerateLedgerRecords` mutation now accepts a list of charge ids (`chargeIds: [UUID!]!`)
and returns a `GeneratedLedgerRecords` result per charge, in order. Each charge is regenerated
independently, so a single failure surfaces as a per-charge `CommonError` instead of aborting the
whole batch.
On the client, the charges table's selection-column header now exposes a bulk-actions menu with a
"Regenerate ledger" option that regenerates the ledger for all selected charges (with the same
confirmation modal as the per-charge button). The existing per-charge regenerate button calls the
same mutation with a single-element array.
- [#3851](https://github.com/Urigo/accounter-fullstack/pull/3851)
[`a91e4a0`](https://github.com/Urigo/accounter-fullstack/commit/a91e4a0726fed53dda22dfb57b6919411bbeaba3)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Add the Charge Matching Review Screen: a
guided side-by-side UI for pairing document-based and transaction-based charges and merging them
one by one.
- Server: new `chargesAwaitingMatchQueue` GraphQL query that returns a paginated queue of
unmatched base charges with on-the-fly match suggestions, filterable by business, date range and
mode (`DOC_BASE`/`TRANSACTION_BASE`) and sortable `BY_DATE` or `BY_SCORE` (score evaluation
capped at the 100 most recent unmatched charges).
- Client: new `/charges/matching` screen with a filter/sort header, collapsible queue sidebar with
per-item pending/matched/skipped status, side-by-side base-vs-suggestion comparison cards,
alternative-suggestion switching, and accept (merge) / skip actions.
- [#3761](https://github.com/Urigo/accounter-fullstack/pull/3761)
[`837d95c`](https://github.com/Urigo/accounter-fullstack/commit/837d95c0985ade04cf31cc7f956d409a1a7463e5)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Deprecate the legacy gmail-listener email
path now that the v2 multi-tenant `@accounter/email-ingestion-gateway` pipeline (Cloudflare →
Gateway → Server) covers it.
- The server GraphQL fields `businessEmailConfig` (query) and `insertEmailDocuments` (mutation)
are marked `@deprecated` (non-breaking — the legacy listener keeps working for rollback) and
scheduled for removal after cutover. Their resolvers carry matching `@deprecated` JSDoc.
- `@accounter/gmail-listener` is marked deprecated (README banner + package description) and
superseded by the gateway. It is kept only for rollback during the cutover.
- Docs updated to acknowledge the migration (root `CLAUDE.md`, `packages/server/CLAUDE.md`).
The `gmail_listener` auth role and the package itself are intentionally retained for rollback;
hard removal (and `npm deprecate` of the published package) is a follow-up once the cutover is
complete.
- [#4110](https://github.com/Urigo/accounter-fullstack/pull/4110)
[`156c8b1`](https://github.com/Urigo/accounter-fullstack/commit/156c8b11844b4fada6f649a55ec00cc0ef68f92e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Enrich the `documentsByFilters` query and
expose per-document validation info.
Added a `validation: DocumentValidationInfo` field to the `FinancialDocument` interface (and its
concrete implementers). Its resolver runs all three document validations — basic required-fields,
VAT and allocation — and combines them into a single informative response with per-check results
(`basicValidation`, `vatValidation`, `allocationValidation`), an aggregated `issues` list and an
overall `isValid` flag.
Added new optional filters to `documentsByFilters`:
- `type`: include only documents of the given document types.
- `missingCounterparty`: include only documents missing a creditor or debtor.
- `missingInfo`: include only documents that fail basic information validation.
- `freeText`: free text search across serial number, total amount (raw and normalized),
description, remarks and creditor/debtor (counterparty) business names.
- [#4196](https://github.com/Urigo/accounter-fullstack/pull/4196)
[`e89ac13`](https://github.com/Urigo/accounter-fullstack/commit/e89ac136787926cb76db2ab4731a5d2a7201405f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Show the traded security's details on
foreign-securities charges.
`accounter_schema.poalim_securities` has held Poalim's static securities reference list since the
ingestion work landed, but nothing read it. Expanding a `FOREIGN_SECURITIES` charge showed
transactions with opaque descriptions like `ניע"ז מכירה 0005129523` and nothing about _which_
paper was traded. This adds the first read path out of that table: a "Foreign Securities"
accordion item under charge extended info, peer to Bank Deposit and CreditCard Transactions.
`server` gains a `foreign-securities` module exposing `ForeignSecuritiesCharge.securities`, a list
of `ChargeSecurity` — the security key each of the charge's transactions references, the matching
`Security` reference details, and the transactions that resolved to that key. The key is parsed
out of `transactions.source_description`, where Poalim embeds it zero-padded (`0005129523` →
security key `5129523`). The padding is what makes the key distinguishable from the other digit
runs descriptions carry, so a leading zero is required rather than incidental; the normalization
rule is now shared with the `cron-jobs` reference-merge helper that already relied on it.
Two details of the lookup worth knowing:
- The query carries no `owner_id` predicate. The table is `FORCE ROW LEVEL SECURITY` with a
`tenant_isolation` policy, so going through `TenantAwareDBClient` is what scopes it — which also
means the provider must never be handed a raw `DBProvider`.
- The dedup key is `(owner_id, bank_number, branch_number, account_number, security_key)`, so one
tenant holding the same paper in two accounts has two rows for one key. The lookup collapses
them to the most recently scraped row rather than picking arbitrarily.
Keys with no matching row are returned as unresolved entries — rendered with their key and a "not
found in the ingested securities list" note — instead of being dropped, so a stale or missing
scrape is visible rather than silently hiding a transaction's instrument.
`client` renders each security with its English and Hebrew names, symbol, and exchange / currency
/ instrument-type badges, above that key's transactions. The section rides on the existing
deferred charge-expansion fragment, so non-securities charges are unaffected and pay nothing for
it.
- [#4204](https://github.com/Urigo/accounter-fullstack/pull/4204)
[`6f837fe`](https://github.com/Urigo/accounter-fullstack/commit/6f837fea7c2e079f7b0ecda6c32e00fadba41607)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Show the ingested Poalim portfolio
executions alongside a foreign-securities charge's bank transactions.
`accounter_schema.poalim_securities_transactions` was written by the scraper ingestion but never
read back, so a foreign-securities charge showed only the security's static reference details and
the cash movement — not the trade behind it. The securities section of the charge now renders a
"Portfolio activity" table under the existing (now labelled) "Bank transactions" table, with the
trade/value dates, direction, quantity, price, net value, commission and tax of each matched
execution.
The executions table carries no link to `accounter_schema.transactions`, so the pairing is derived
at query time by the new `matchSecurityExecutions` helper: same security key, same Poalim account
tuple (bank/branch/account, resolved from the transaction's `account_id`), an execution date
within a few days of the transaction's event or debit date, **and** a matching amount. The amount
is what makes it safe — a security can be executed several times on the same day, so date alone
would attach all of them to every cash movement; a candidate in the window that matches no amount
is dropped rather than shown as a maybe.
Schema: `ChargeSecurity.executions: [SecurityExecution!]!` and a new `SecurityExecution` type
exposing a curated subset of the ~100 source columns, normalized to the codebase's own vocabulary
rather than the bank's:
- dates are `TimelessDate` (the columns are `DATE`), quantities and prices are `Float`;
- every amount is a `FinancialAmount` built with `formatFinancialAmount` — trade-currency values
carry the execution's own currency, the bank's NIS-suffixed columns carry `Currency.Ils`;
- `formatCurrency` now recognizes the securities feed's Hebrew currency labels (`שקל חדש`,
`דולר ארה"ב`);
- `tradeType`, `transactionType` and `paymentType` are GraphQL enums mirroring the closed
vocabularies the scraper already validates against (`TRADE_TYPES`, `TRANSACTION_TYPES`,
`PAYMENT_TYPES` in `hapoalim-securities-transactions-schema.ts`). A value the scraper accepts
but the translation map does not know about raises a named error pointing at both definitions,
rather than being silently dropped.
- [#4165](https://github.com/Urigo/accounter-fullstack/pull/4165)
[`0af7271`](https://github.com/Urigo/accounter-fullstack/commit/0af7271b93affd33a48dfdaada9b41b7ee71a91b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Add filterable ledger-record and contract
queries, and expose them as dedicated MCP tools.
Server:
- `ledgerRecordsByFilters(filters: LedgerRecordsFilters)` filters ledger records by invoice date,
value date or either, by the financial entity in any of the four debit/credit account slots, by
owner and by charge.
- `LedgerRecord` now exposes `ownerId` and `chargeId`.
- `contractsByFilters(filters: ContractsFilters)` filters contracts by owning (admin) business,
client, contract id and active state.
- `Contract` now exposes `ownerId` (matching the platform-wide row-owner field name).
MCP server: new read-only `accounter_get_ledger_records` and `accounter_get_contracts` tools built
on those queries, following the existing business-scoping and output-shaping conventions.
- [#4163](https://github.com/Urigo/accounter-fullstack/pull/4163)
[`2b407d4`](https://github.com/Urigo/accounter-fullstack/commit/2b407d43b48dfa1cc3dc17cc634bdb22e663a320)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Complete the MCP tools' input surface,
rename the scope field to membership terminology, and put an owner on every row.
**Full filter coverage.** The tools wrapped only part of each upstream filter input, and the gap
was silent — a predicate the schema supports was simply unreachable through MCP.
- `accounter_search_charges` exposed 5 of 23 `ChargeFilter` fields; it now takes every predicate
upstream honors (charge types, accountant status, counterparty and business trips, ordering, the
`without*`/`with*` document/transaction/ledger flags), flat alongside its existing arguments.
Both charge tools build their filter from one shared definition (`tools/charge-filters.ts`).
- Date semantics are now separable and documented: `fromDate`/`toDate` remain the _overlap_ pair
(upstream `fromAnyDate`/`toAnyDate`), and `fromMainDate`/`toMainDate` expose the narrower
_containment_ pair. `sortBy` is caller-overridable, still defaulting to newest-first.
- Pagination reaches results that were previously unreachable: `accounter_get_charges` takes
`page`/`pageSize` (it was pinned to the first page of `allCharges`), and
`accounter_list_businesses` takes `page` and forwards `limit`/`page` to `allBusinesses`. Both
echo `pagination`.
- `businessTrip`, `byFinancialAccounts` and `unbalanced` are deliberately **not** accepted:
upstream takes them and never passes them to the SQL, and a filter that silently matches
everything is worse for a model than an absent one.
- New contract tests compare each tool's input keys against `input ChargeFilter` /
`DocumentsFilters` / `TransactionsFilters` in the generated schema, so a field added upstream
fails the suite instead of quietly becoming unreachable.
**Membership terminology (breaking tool-input change).** The scope field was `businessIds`, one
letter from the charge filter `byBusinesses` and the documents filter `businessIds` — both
_counterparty_ predicates, a confusion that previously caused a real scoping bug. Every tool now
takes `memberBusinessIds` (`memberBusinessId`, singular and required, on
`accounter_balance_report`), responses echo `scope.memberBusinessIds`, and
`accounter_list_business_memberships` emits `memberBusinessId` rows. Internals follow
(`AuthorizedReadScope`, `BusinessMembership`, the policy and executor parameters). The
`x-business-scope` header and the upstream payload keys are unchanged — they are contracts with
the GraphQL server, not MCP vocabulary. **Callers passing `businessIds` now get a
`VALIDATION_ERROR` rather than silently unscoped results.**
**Owner on every row.** A caller with several memberships got a merged list it could not
attribute: transactions carried no owner at all, and documents dropped theirs.
- Server: `Charge`, `Document` and `Transaction` expose `ownerId: UUID!`, served off the row each
type's shared DataLoader already fetches, so no query is added per row.
- MCP: charges, transactions, documents, balance rows and the charge-nested `transactions` /
`documents` all carry `ownerId`. `accounter_get_transactions` can now apply the same
defense-in-depth owner filter as the charge and document tools, which previously relied on RLS
alone.
**Server, also:** `allCharges` now forwards `fromDate`/`toDate` to the provider. The SQL always
had the containment predicate, but only the `*AnyDate` pair was wired up, so a caller passing
`fromDate`/`toDate` got an unfiltered result instead of a narrower one.
- [#4194](https://github.com/Urigo/accounter-fullstack/pull/4194)
[`4eb395f`](https://github.com/Urigo/accounter-fullstack/commit/4eb395fc0436adeca029f2a8bb49e0aef8f22c66)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Ingest static foreign-securities reference
data from Bank Hapoalim.
Poalim's "mytrade" portfolio app exposes the static details of every security held in a trading
account — name, symbol, exchange, currency, instrument type. Accounter already had a
`FOREIGN_SECURITIES` account type and recognised securities fees, but had no record of _which_
securities an account holds, so securities transactions could not be resolved against instrument
metadata. This adds the full ingestion path for that list. Live portfolio balances
(`View.Account`, `View.Account.AccountPosition.Balance`) and open orders (`View.Orders`) are out
of scope; nothing reads the stored rows yet.
`modern-poalim-scraper` gains `getSecurities(account)`, following the same
`{ data, isValid, errors }` contract as its siblings, plus the exported `HapoalimSecurities` /
`PoalimSecurity` types. Two things about this endpoint differ from the rest of the Poalim surface
and are worth knowing:
- It addresses the account as `branch-account` (no bank number), unlike the three-part `accountId`
every other method uses.
- It is only served to callers running on the mytrade SPA's own page, and requires a `session`
header holding a **server-issued** key — inventing one is rejected with
`InvalidSessionException`. So the request is issued from a short-lived sibling tab on the
logged-in browser context, and `captureMytradeSession` listens for the SPA's own `/mytrade/api/`
call to harvest the real `session` / `csession` headers rather than guessing where the SPA
stores them.
Accounts with no securities portfolio omit `View.Meta.Security` entirely; that is treated as an
empty portfolio rather than a malformed response, so it no longer fails the whole Poalim run.
`server` gains `uploadPoalimSecurities(securities: [PoalimSecurityInput!]!)` on the
scraper-ingestion module, backed by a new `accounter_schema.poalim_securities` table (migration
`2026-08-11T12-00-00.add-poalim-securities-table`) that mirrors the source fields one-to-one. The
table is owner-scoped with RLS and a `tenant_isolation` policy, and deduplicates on
`(bank_number, branch_number, account_number, security_key)`. Re-scrapes are no-ops, and changed
attributes are reported through the shared `changedTransactions` result — `as_of_date` is excluded
from that comparison since it moves on every scrape and would otherwise flag every row. These rows
are reference data, not cash movements, so there is deliberately no insert trigger and no
`transactions_raw_list` wiring.
`scraper-app` gets a per-source "Fetch foreign securities" option (off by default — the endpoint
is portfolio-specific), a `securities` column in the run progress table, and the fetch/upload
steps.
Also tightens two things that this work surfaced: the shared XSRF lookup now reads cookies from
the browser context instead of the deprecated page-level cookie API, filtered by cookie domain —
all scrapers share the default browser context, so an unfiltered lookup could pick up another
bank's `XSRF-TOKEN`.
- [#4203](https://github.com/Urigo/accounter-fullstack/pull/4203)
[`9a38125`](https://github.com/Urigo/accounter-fullstack/commit/9a3812588d0ed0ebcee304122073950e9990abc8)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Ingest securities portfolio activity from
Bank Hapoalim.
The previous securities work stored _what_ an account holds; this adds _what happened_ in it —
buys, sells, dividend and interest payments, redemptions, deposit transfers and other corporate
actions — from the "mytrade" order executions history
(`/mytrade/api/v2/json2/order/executions/history`). Nothing reads the stored rows yet.
Because there are now two securities feeds, the static one is renamed throughout so the two are
never confused:
- `modern-poalim-scraper`: `getSecurities` → `getSecuritiesInfo`; `HapoalimSecuritiesSchema` →
`HapoalimSecuritiesInfoSchema`; the `HapoalimSecurities` / `PoalimSecurity` types →
`HapoalimSecuritiesInfo` / `PoalimSecurityInfo`. **Breaking** for direct consumers of those
exports.
- `scraper-app`: payload type `poalim-securities` → `poalim-securities-info`,
`poalimSecuritiesVars` → `poalimSecuritiesInfoVars`, WebSocket `txnType` `securities` →
`securitiesInfo`.
The server's `uploadPoalimSecurities` mutation and the `accounter_schema.poalim_securities` table
keep their names — they are persisted API and schema, and read fine as the reference feed
alongside the new table.
`modern-poalim-scraper` gains `getSecuritiesTransactions(account, range?)`, following the same
`{ data, isValid, errors }` contract as its siblings, plus the exported
`HapoalimSecuritiesTransactions` / `PoalimSecurityTransaction` types. It shares the sibling-tab
and `captureMytradeSession` mechanics with `getSecuritiesInfo` (both now go through a common
`fetchFromMytrade` helper), with two differences: this endpoint is a **GET** — sending it as POST
returns nothing, so `fetchPoalimMytradeWithinPage` took a `method` parameter — and it takes a
`ddMMyyyy` date range, defaulting to the scraper's configured `duration` window.
The response schema is strict rather than permissive, on both the scraper and the scraper-app
side: closed enums for the bank's own vocabularies (transaction and trade types, payment types,
currencies, security groups, the `כן`/`לא` flags), formats for timestamps, ISIN, security numbers
and branch/account strings, ranges for percentages and non-negative amounts, and the cross-field
invariants the bank's data obeys — a buy/sell `TradeType` iff the matching `TransactionType`, the
`PaymentType`/`PaymentDate`/`ExDate` block filled all-or-nothing and never on a trade, the
`FinancialAccount*` strings agreeing with `Branch`/`Account`, one currency across issue/trade/
settlement, and `IsUSEquity` agreeing with the issuer country. The intent is that a bank-side
change is a loud, located failure rather than a silently mis-typed column: every constraint
carries a message naming the field, the offending value and what to widen, and
`describeSecuritiesTransactionsError` annotates each issue with the security and trade date of the
row it came from (the raw Zod path points at `Account.Execution.37.TradeType`, which says nothing
about which execution that is). `PayloadValidationError` now prints a capped `path: message` list
instead of dumping the whole `ZodError` as JSON.
`server` gains
`uploadPoalimSecuritiesTransactions(transactions: [PoalimSecurityTransactionInput!]!)` on the
scraper-ingestion module, backed by a new `accounter_schema.poalim_securities_transactions` table
(migration `2026-08-13T12-00-00.add-poalim-securities-transactions-table`) that mirrors the source
fields one-to-one, bank misspellings included (`israe_tax_value`, `peyment_pecentage`,
`trade_currnecy_rate`, `last_tranaction_date`, `fund_plus_accumulated_inerest_value`) so the
mapping stays mechanical. It is owner-scoped with RLS and a `tenant_isolation` policy, and joins
to `poalim_securities` on `security` / `security_key`. The response carries no per-execution id,
so deduplication uses the natural key — account, security, the trade/value/settlement dates, trade
and transaction type, quantity, price, net value and the corporate-action dates — with
`NULLS NOT DISTINCT`, since most of those are null on a plain trade. That key is verified unique
across a full year of real executions; shorter keys are not (two same-day dividends on one
security collide). Re-scrapes are no-ops and restated values are reported through the shared
`changedTransactions` result. Like `poalim_securities`, these rows are not cash movements: no
insert trigger, no `transactions_raw_list` wiring.
The date columns are `DATE`, matching every other `poalim_*` table. The bank sends calendar dates
dressed as instants — always midnight, carrying the Israel offset of that date — so storing them
as `TIMESTAMPTZ` (as the first cut did, fixed by migration
`2026-08-14T10-00-00.poalim-securities-transactions-calendar-dates`) put the stored instant at
21:00 or 22:00 UTC the day before, and anything rendering it outside Israel time reported the
wrong day. For the same reason the ingestion provider compares and queries these as calendar dates
rather than converting through `Date`, which would shift the day on any server not running on
Israel time.
`scraper-app` fetches and uploads both securities feeds under the existing per-source option (now
labelled "Fetch securities portfolio (info + activity)"), with separate progress columns for each.
Also extends the foreign-transactions `metadata.messages[].messageCode` lists, which the
enumerated unions rejected on an account whose informational banners differed from the ones
already listed.
- [#3941](https://github.com/Urigo/accounter-fullstack/pull/3941)
[`b828023`](https://github.com/Urigo/accounter-fullstack/commit/b82802376c5f1f4acc5de274b58348d87fcbe553)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Add a `myMemberships` query that returns
the authenticated caller's own business memberships (`MyBusinessMembership`: composite `id`,
`businessId`, `roleId`, `businessName`), gated by
`@requiresAnyRole(["business_owner", "accountant"])`.
The memberships are resolved per request from `accounter_schema.business_users` (the same
DB-resolved auth context used everywhere else), so callers get an accurate, up-to-date scope
without relying on token claims. This backs the MCP server's server-side membership resolution: an
authenticated caller receives their businesses, and a caller with none receives an empty list
rather than an error.
- [#4111](https://github.com/Urigo/accounter-fullstack/pull/4111)
[`cd1c480`](https://github.com/Urigo/accounter-fullstack/commit/cd1c480b782f9091e163badd7e872b997dc74a97)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Add a `transactionsByFilters` query to the
transactions module. It fetches transactions filtered by transaction ids, charge ids, owners
(scoped to the authorized read scope), counterparty ids, date ranges (event date, debit date, or
any date), missing counterparty, missing info (fails transaction validation), and free text
(source description / reference, amount, counter account, origin key, and counterparty name).
- [#4190](https://github.com/Urigo/accounter-fullstack/pull/4190)
[`798c141`](https://github.com/Urigo/accounter-fullstack/commit/798c141d7ae9fc874b9a22a53f5b7b96f9571907)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Route authenticated users who are not
linked to any business to a dedicated `/welcome` screen, instead of an empty dashboard behind
failing queries.
An Auth0 identity with no row in `business_users` resolves to a `null` auth context, so every
`@requiresAuth` field threw `UNAUTHENTICATED`. The client read that as a token failure and ran
`refreshAuth` — which succeeds, because the token was never bad — optionally prompting an
interactive re-login, while every failed operation raised its own error toast.
Server: `@requiresAuth` now distinguishes the two cases, throwing `ONBOARDING_REQUIRED` for a
verified JWT identity that maps to no membership and keeping `UNAUTHENTICATED` for missing or
invalid credentials. A new `viewer` query — deliberately unauthenticated-safe, like
`acceptInvitation` — reports the caller's own provisioning state (`ACTIVE`, `EMAIL_UNVERIFIED` or
`NO_WORKSPACE`) from its own token claims, and nothing more. Membership takes precedence over
email verification, so a linked caller stays `ACTIVE` even with an unverified address.
`getJwtIdentity()` is now memoized per operation, since the directive calls it on every guarded
field that fails to resolve a context.
Client: a new `OnboardingGuard` inside `ProtectedRoute` sends a non-`ACTIVE` viewer to `/welcome`,
which explains the invitation-only model (or asks for email verification) and offers _Check again_
and _Sign out_. It fails open on a query error, rendering the app rather than trapping the user,
and says the check failed rather than asserting "No workspace yet" when the viewer state is
unknown. `ONBOARDING_REQUIRED` no longer raises an error toast per failed operation.
### Patch Changes
- [#3763](https://github.com/Urigo/accounter-fullstack/pull/3763)
[`606c8d7`](https://github.com/Urigo/accounter-fullstack/commit/606c8d7ba94f272659341b4baadd03593d363d5e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.13.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.13.0) (from
`5.12.0`, in `dependencies`)
- [#3768](https://github.com/Urigo/accounter-fullstack/pull/3768)
[`7a7dc71`](https://github.com/Urigo/accounter-fullstack/commit/7a7dc71ba2dc9a660f150340f2352704d571f367)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.86` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.86) (from
`3.0.85`, in `dependencies`)
- Updated dependency [`ai@6.0.209` ↗︎](https://www.npmjs.com/package/ai/v/6.0.209) (from `6.0.208`,
in `dependencies`)
- Updated dependency [`playwright@1.61.1` ↗︎](https://www.npmjs.com/package/playwright/v/1.61.1)
(from `1.61.0`, in `dependencies`)
- [#3776](https://github.com/Urigo/accounter-fullstack/pull/3776)
[`b3761d9`](https://github.com/Urigo/accounter-fullstack/commit/b3761d9fa853bd7bb26b41796fdff96af5f45863)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.87` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.87) (from
`3.0.86`, in `dependencies`)
- Updated dependency [`ai@6.0.210` ↗︎](https://www.npmjs.com/package/ai/v/6.0.210) (from `6.0.209`,
in `dependencies`)
- [#3778](https://github.com/Urigo/accounter-fullstack/pull/3778)
[`02dc27e`](https://github.com/Urigo/accounter-fullstack/commit/02dc27e172538c66f4f9af228ea2d419d0e81141)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.1` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.1) (from
`3.0.86`, in `dependencies`)
- Updated dependency [`ai@7.0.2` ↗︎](https://www.npmjs.com/package/ai/v/7.0.2) (from `6.0.209`, in
`dependencies`)
- [#3789](https://github.com/Urigo/accounter-fullstack/pull/3789)
[`e26256c`](https://github.com/Urigo/accounter-fullstack/commit/e26256c2e4cd3ba51042446a4617b996d49a9e0c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.4` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.4) (from
`4.0.1`, in `dependencies`)
- Updated dependency
[`@graphql-tools/utils@11.1.1` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.1.1)
(from `11.1.0`, in `dependencies`)
- Updated dependency [`ai@7.0.9` ↗︎](https://www.npmjs.com/package/ai/v/7.0.9) (from `7.0.2`, in
`dependencies`)
- [#3790](https://github.com/Urigo/accounter-fullstack/pull/3790)
[`1f016b8`](https://github.com/Urigo/accounter-fullstack/commit/1f016b8739573311dc0d56ee4fe1a3570ba65428)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.1` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.1) (from
`3.0.87`, in `dependencies`)
- Updated dependency [`ai@7.0.2` ↗︎](https://www.npmjs.com/package/ai/v/7.0.2) (from `6.0.210`, in
`dependencies`)
- [#3825](https://github.com/Urigo/accounter-fullstack/pull/3825)
[`cc16f94`](https://github.com/Urigo/accounter-fullstack/commit/cc16f9472b79c3991d1b8fd186a1a75d2b9e26e1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.220.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.220.0)
(from `0.219.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/resources@2.9.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.9.0)
(from `2.8.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.220.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.220.0)
(from `0.219.0`, in `dependencies`)
- [#3832](https://github.com/Urigo/accounter-fullstack/pull/3832)
[`bf8ed3b`](https://github.com/Urigo/accounter-fullstack/commit/bf8ed3b88f5e2abdb045361b7d33ead0a10c352f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.78.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.78.0)
(from `0.77.0`, in `dependencies`)
- [#3834](https://github.com/Urigo/accounter-fullstack/pull/3834)
[`77222b7`](https://github.com/Urigo/accounter-fullstack/commit/77222b7052ffb094db5df5c9065ed93e9dc21bf2)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.7` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.7) (from
`4.0.4`, in `dependencies`)
- Updated dependency [`ai@7.0.14` ↗︎](https://www.npmjs.com/package/ai/v/7.0.14) (from `7.0.9`, in
`dependencies`)
- [#3836](https://github.com/Urigo/accounter-fullstack/pull/3836)
[`059b638`](https://github.com/Urigo/accounter-fullstack/commit/059b638702116701a5a0062a7ac3a58a28eeb004)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.7` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.7) (from
`4.0.4`, in `dependencies`)
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.78.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.78.0)
(from `0.77.0`, in `dependencies`)
- Updated dependency [`ai@7.0.14` ↗︎](https://www.npmjs.com/package/ai/v/7.0.14) (from `7.0.9`, in
`dependencies`)
- [#3837](https://github.com/Urigo/accounter-fullstack/pull/3837)
[`465eefe`](https://github.com/Urigo/accounter-fullstack/commit/465eefe4062076ecdf9f0a447637ddc797039572)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.220.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.220.0)
(from `0.219.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/resources@2.9.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.9.0)
(from `2.8.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.220.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.220.0)
(from `0.219.0`, in `dependencies`)
- [#3846](https://github.com/Urigo/accounter-fullstack/pull/3846)
[`d382eb2`](https://github.com/Urigo/accounter-fullstack/commit/d382eb20cf27b76ef80d235080bead1ba66b1e77)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.8` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.8) (from
`4.0.7`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.48.2` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.48.2) (from
`0.48.1`, in `dependencies`)
- Updated dependency [`ai@7.0.16` ↗︎](https://www.npmjs.com/package/ai/v/7.0.16) (from `7.0.14`, in
`dependencies`)
- Updated dependency [`iconv-lite@0.7.3` ↗︎](https://www.npmjs.com/package/iconv-lite/v/0.7.3)
(from `0.7.2`, in `dependencies`)
- [#3853](https://github.com/Urigo/accounter-fullstack/pull/3853)
[`a17149a`](https://github.com/Urigo/accounter-fullstack/commit/a17149a90ce064eae93bb88143732174e5875c4c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-tools/utils@11.2.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.2.0)
(from `11.1.1`, in `dependencies`)
- [#3866](https://github.com/Urigo/accounter-fullstack/pull/3866)
[`dd31186`](https://github.com/Urigo/accounter-fullstack/commit/dd311865528c83422d9c5805ebe75005260b765c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/semantic-conventions@1.42.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/semantic-conventions/v/1.42.0)
(from `1.41.1`, in `dependencies`)
- [#3872](https://github.com/Urigo/accounter-fullstack/pull/3872)
[`a809750`](https://github.com/Urigo/accounter-fullstack/commit/a809750d9028f7a3305d4e5fccc1be247341fac3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.9` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.9) (from
`4.0.8`, in `dependencies`)
- Updated dependency [`ai@7.0.17` ↗︎](https://www.npmjs.com/package/ai/v/7.0.17) (from `7.0.16`, in
`dependencies`)
- [#3873](https://github.com/Urigo/accounter-fullstack/pull/3873)
[`246b1e4`](https://github.com/Urigo/accounter-fullstack/commit/246b1e4d41a6424c4b9f251ff0b8cf36c774ab30)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.10` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.10) (from
`4.0.8`, in `dependencies`)
- Updated dependency
[`@opentelemetry/semantic-conventions@1.43.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/semantic-conventions/v/1.43.0)
(from `1.42.0`, in `dependencies`)
- Updated dependency [`ai@7.0.18` ↗︎](https://www.npmjs.com/package/ai/v/7.0.18) (from `7.0.16`, in
`dependencies`)
- Updated dependency [`auth0@5.14.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.14.0) (from
`5.13.0`, in `dependencies`)
- [#3885](https://github.com/Urigo/accounter-fullstack/pull/3885)
[`41b8dc2`](https://github.com/Urigo/accounter-fullstack/commit/41b8dc269929e2e7132ea1d043a6eb227de916ba)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.10` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.10) (from
`4.0.9`, in `dependencies`)
- Updated dependency [`ai@7.0.18` ↗︎](https://www.npmjs.com/package/ai/v/7.0.18) (from `7.0.17`, in
`dependencies`)
- [#3906](https://github.com/Urigo/accounter-fullstack/pull/3906)
[`8f87877`](https://github.com/Urigo/accounter-fullstack/commit/8f87877fc2aec3a37d1b61836d2454803626ef58)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/semantic-conventions@1.43.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/semantic-conventions/v/1.43.0)
(from `1.42.0`, in `dependencies`)
- [#3909](https://github.com/Urigo/accounter-fullstack/pull/3909)
[`8458c4a`](https://github.com/Urigo/accounter-fullstack/commit/8458c4aa5b7b6a3733360553fc056882a77e6e7b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.14.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.14.0) (from
`5.13.0`, in `dependencies`)
- [#3913](https://github.com/Urigo/accounter-fullstack/pull/3913)
[`6d29a1e`](https://github.com/Urigo/accounter-fullstack/commit/6d29a1ecfc84e1519165e7775aaa90ed3cb4071f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.12` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.12) (from
`4.0.10`, in `dependencies`)
- Updated dependency [`ai@7.0.22` ↗︎](https://www.npmjs.com/package/ai/v/7.0.22) (from `7.0.18`, in
`dependencies`)
- [#3928](https://github.com/Urigo/accounter-fullstack/pull/3928)
[`ee7df50`](https://github.com/Urigo/accounter-fullstack/commit/ee7df5089190a89094aa36013ab9d1d02828c096)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.14` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.14) (from
`4.0.12`, in `dependencies`)
- Updated dependency [`ai@7.0.26` ↗︎](https://www.npmjs.com/package/ai/v/7.0.26) (from `7.0.22`, in
`dependencies`)
- [#3936](https://github.com/Urigo/accounter-fullstack/pull/3936)
[`5b2ffbb`](https://github.com/Urigo/accounter-fullstack/commit/5b2ffbbec76719fb0b6cd17dbe535755a830287d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.15` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.15) (from
`4.0.14`, in `dependencies`)
- Updated dependency [`ai@7.0.28` ↗︎](https://www.npmjs.com/package/ai/v/7.0.28) (from `7.0.26`, in
`dependencies`)
- [#3943](https://github.com/Urigo/accounter-fullstack/pull/3943)
[`e61ed55`](https://github.com/Urigo/accounter-fullstack/commit/e61ed5561353766e72c180a0da5cd6c8b0a25d99)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@6.0.0` ↗︎](https://www.npmjs.com/package/auth0/v/6.0.0) (from
`5.14.0`, in `dependencies`)
- [#3955](https://github.com/Urigo/accounter-fullstack/pull/3955)
[`bdcc700`](https://github.com/Urigo/accounter-fullstack/commit/bdcc7001ddaa78524310952919ebf30d331447eb)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@7.0.29` ↗︎](https://www.npmjs.com/package/ai/v/7.0.29) (from `7.0.28`, in
`dependencies`)
- [#3961](https://github.com/Urigo/accounter-fullstack/pull/3961)
[`a77d758`](https://github.com/Urigo/accounter-fullstack/commit/a77d758d5e9e98491b5759a7cc421b28af54d61f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.16` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.16) (from
`4.0.15`, in `dependencies`)
- Updated dependency
[`@graphql-tools/utils@11.2.2` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.2.2)
(from `11.2.0`, in `dependencies`)
- Updated dependency [`ai@7.0.31` ↗︎](https://www.npmjs.com/package/ai/v/7.0.31) (from `7.0.29`, in
`dependencies`)
- [#3964](https://github.com/Urigo/accounter-fullstack/pull/3964)
[`49cd281`](https://github.com/Urigo/accounter-fullstack/commit/49cd281e9aa63832cd1eda409472d6074ad83ba4)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`ai@7.0.29` ↗︎](https://www.npmjs.com/package/ai/v/7.0.29) (from `7.0.28`, in
`dependencies`)
- Updated dependency [`auth0@6.0.0` ↗︎](https://www.npmjs.com/package/auth0/v/6.0.0) (from
`5.14.0`, in `dependencies`)
- [#3965](https://github.com/Urigo/accounter-fullstack/pull/3965)
[`24cb271`](https://github.com/Urigo/accounter-fullstack/commit/24cb271b6c7a62d1e97e6e591fdf0c9bf4863e95)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.16` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.16) (from
`4.0.15`, in `dependencies`)
- Updated dependency
[`@graphql-tools/utils@11.2.2` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.2.2)
(from `11.2.0`, in `dependencies`)
- Updated dependency [`ai@7.0.31` ↗︎](https://www.npmjs.com/package/ai/v/7.0.31) (from `7.0.29`, in
`dependencies`)
- [#4007](https://github.com/Urigo/accounter-fullstack/pull/4007)
[`a549838`](https://github.com/Urigo/accounter-fullstack/commit/a549838ec8d2b909dadb73115171949065b6e842)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.17` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.17) (from
`4.0.16`, in `dependencies`)
- Updated dependency [`ai@7.0.33` ↗︎](https://www.npmjs.com/package/ai/v/7.0.33) (from `7.0.31`, in
`dependencies`)
- [#4018](https://github.com/Urigo/accounter-fullstack/pull/4018)
[`078e11a`](https://github.com/Urigo/accounter-fullstack/commit/078e11aa265af271c7d9b75de3464f1027144105)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/resources@2.10.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.10.0)
(from `2.9.0`, in `dependencies`)
- [#4029](https://github.com/Urigo/accounter-fullstack/pull/4029)
[`9337ae5`](https://github.com/Urigo/accounter-fullstack/commit/9337ae5bc529ccb6b761e0083f1264fe8f9d077c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@6.1.0` ↗︎](https://www.npmjs.com/package/auth0/v/6.1.0) (from `6.0.0`,
in `dependencies`)
- [#4035](https://github.com/Urigo/accounter-fullstack/pull/4035)
[`dc246b3`](https://github.com/Urigo/accounter-fullstack/commit/dc246b37cb08aa58f02ccea01795b167fe101659)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.79.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.79.0)
(from `0.78.0`, in `dependencies`)
- [#4037](https://github.com/Urigo/accounter-fullstack/pull/4037)
[`e3f2337`](https://github.com/Urigo/accounter-fullstack/commit/e3f233710a581a48dee6e45e956170dc3c2799c3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`playwright@1.62.0` ↗︎](https://www.npmjs.com/package/playwright/v/1.62.0)
(from `1.61.1`, in `dependencies`)
- [#4042](https://github.com/Urigo/accounter-fullstack/pull/4042)
[`a71f169`](https://github.com/Urigo/accounter-fullstack/commit/a71f16930752deda421e7a8cd280e2ba1c42a79f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.23` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.23) (from
`4.0.17`, in `dependencies`)
- Updated dependency [`ai@7.0.41` ↗︎](https://www.npmjs.com/package/ai/v/7.0.41) (from `7.0.33`, in
`dependencies`)
- Updated dependency [`jose@6.2.4` ↗︎](https://www.npmjs.com/package/jose/v/6.2.4) (from `6.2.3`,
in `dependencies`)
- [#4043](https://github.com/Urigo/accounter-fullstack/pull/4043)
[`244f33b`](https://github.com/Urigo/accounter-fullstack/commit/244f33bbfc2d334ef03ea5d8b94d937da1e1badd)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.79.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.79.0)
(from `0.78.0`, in `dependencies`)
- Updated dependency [`auth0@6.1.0` ↗︎](https://www.npmjs.com/package/auth0/v/6.1.0) (from `6.0.0`,
in `dependencies`)
- [#4047](https://github.com/Urigo/accounter-fullstack/pull/4047)
[`4226dd7`](https://github.com/Urigo/accounter-fullstack/commit/4226dd7d9691a539643d7b39991caf849ed26e40)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.221.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.221.0)
(from `0.220.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.221.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.221.0)
(from `0.220.0`, in `dependencies`)
- [#4057](https://github.com/Urigo/accounter-fullstack/pull/4057)
[`9d7b4ff`](https://github.com/Urigo/accounter-fullstack/commit/9d7b4ff93bcbd19146aca8a6957625632ad1a53d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.49.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.49.0) (from
`0.48.2`, in `dependencies`)
- [#4066](https://github.com/Urigo/accounter-fullstack/pull/4066)
[`3910f54`](https://github.com/Urigo/accounter-fullstack/commit/3910f548f6da8ec4130878766853ec326df37b94)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.27` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.27) (from
`4.0.23`, in `dependencies`)
- Updated dependency [`ai@7.0.48` ↗︎](https://www.npmjs.com/package/ai/v/7.0.48) (from `7.0.41`, in
`dependencies`)
- Updated dependency [`jose@6.2.7` ↗︎](https://www.npmjs.com/package/jose/v/6.2.7) (from `6.2.4`,
in `dependencies`)
- Updated dependency [`playwright@1.62.1` ↗︎](https://www.npmjs.com/package/playwright/v/1.62.1)
(from `1.62.0`, in `dependencies`)
- [#4075](https://github.com/Urigo/accounter-fullstack/pull/4075)
[`93cafae`](https://github.com/Urigo/accounter-fullstack/commit/93cafaec6c761736c6a38e460807776ba785a879)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.49.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.49.0) (from
`0.48.2`, in `dependencies`)
- [#4081](https://github.com/Urigo/accounter-fullstack/pull/4081)
[`f899b37`](https://github.com/Urigo/accounter-fullstack/commit/f899b37a1561ef168398d122f214d9802178707d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.27` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.27) (from
`4.0.23`, in `dependencies`)
- Updated dependency [`ai@7.0.48` ↗︎](https://www.npmjs.com/package/ai/v/7.0.48) (from `7.0.41`, in
`dependencies`)
- Updated dependency [`jose@6.2.7` ↗︎](https://www.npmjs.com/package/jose/v/6.2.7) (from `6.2.4`,
in `dependencies`)
- Updated dependency [`playwright@1.62.1` ↗︎](https://www.npmjs.com/package/playwright/v/1.62.1)
(from `1.62.0`, in `dependencies`)
- [#4101](https://github.com/Urigo/accounter-fullstack/pull/4101)
[`0e724c3`](https://github.com/Urigo/accounter-fullstack/commit/0e724c318b801b9ec616732cc1391da8915946c6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`jose@6.2.8` ↗︎](https://www.npmjs.com/package/jose/v/6.2.8) (from `6.2.7`,
in `dependencies`)
- [#4113](https://github.com/Urigo/accounter-fullstack/pull/4113)
[`2d738fe`](https://github.com/Urigo/accounter-fullstack/commit/2d738fe60312d39215227cff0e545d6c5ca45007)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@174.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/174.0.0)
(from `173.0.0`, in `dependencies`)
- [#4118](https://github.com/Urigo/accounter-fullstack/pull/4118)
[`6215b22`](https://github.com/Urigo/accounter-fullstack/commit/6215b223e860e2aa6d9c0a5c56f4f44037f6eaab)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`basic-auth@3.0.0` ↗︎](https://www.npmjs.com/package/basic-auth/v/3.0.0)
(from `2.0.1`, in `dependencies`)
- [#4120](https://github.com/Urigo/accounter-fullstack/pull/4120)
[`73316d3`](https://github.com/Urigo/accounter-fullstack/commit/73316d3a7704b22a493d5357097a283baf3567ea)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.34` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.34) (from
`4.0.27`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.49.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.49.1) (from
`0.49.0`, in `dependencies`)
- Updated dependency [`ai@7.0.56` ↗︎](https://www.npmjs.com/package/ai/v/7.0.56) (from `7.0.48`, in
`dependencies`)
- Updated dependency [`auth0@6.2.0` ↗︎](https://www.npmjs.com/package/auth0/v/6.2.0) (from `6.1.0`,
in `dependencies`)
- Updated dependency [`googleapis@174.0.1` ↗︎](https://www.npmjs.com/package/googleapis/v/174.0.1)
(from `174.0.0`, in `dependencies`)
- [#4121](https://github.com/Urigo/accounter-fullstack/pull/4121)
[`b28d745`](https://github.com/Urigo/accounter-fullstack/commit/b28d745456f135d952437ca5ad7056f6188aae33)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`jose@6.2.8` ↗︎](https://www.npmjs.com/package/jose/v/6.2.8) (from `6.2.7`,
in `dependencies`)
- [#4128](https://github.com/Urigo/accounter-fullstack/pull/4128)
[`d9d3145`](https://github.com/Urigo/accounter-fullstack/commit/d9d3145793b2ea883fbeda26b659bbeb69f3cb5a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@google-cloud/pubsub@6.0.0` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/6.0.0)
(from `5.3.1`, in `dependencies`)
- [#4131](https://github.com/Urigo/accounter-fullstack/pull/4131)
[`4cdb553`](https://github.com/Urigo/accounter-fullstack/commit/4cdb553058e07928815b9fedfd1ff7fb86e6e702)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.30` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.30) (from
`4.0.27`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.49.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.49.1) (from
`0.49.0`, in `dependencies`)
- Updated dependency [`ai@7.0.52` ↗︎](https://www.npmjs.com/package/ai/v/7.0.52) (from `7.0.48`, in
`dependencies`)
- [#4141](https://github.com/Urigo/accounter-fullstack/pull/4141)
[`16b88ca`](https://github.com/Urigo/accounter-fullstack/commit/16b88ca48ee1006f9d969bf7168455bfbe641eb5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@6.2.0` ↗︎](https://www.npmjs.com/package/auth0/v/6.2.0) (from `6.1.0`,
in `dependencies`)
- [#4145](https://github.com/Urigo/accounter-fullstack/pull/4145)
[`e8120c7`](https://github.com/Urigo/accounter-fullstack/commit/e8120c7d3a92dd0dd1a22926b6e3f5d66e70e4c7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@6.2.0` ↗︎](https://www.npmjs.com/package/auth0/v/6.2.0) (from `6.1.0`,
in `dependencies`)
- [#4146](https://github.com/Urigo/accounter-fullstack/pull/4146)
[`4b3cddc`](https://github.com/Urigo/accounter-fullstack/commit/4b3cddc633e8bcd1e4bf352623b8d59ecf0971e5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.34` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.34) (from
`4.0.30`, in `dependencies`)
- Updated dependency [`ai@7.0.56` ↗︎](https://www.npmjs.com/package/ai/v/7.0.56) (from `7.0.52`, in
`dependencies`)
- Updated dependency [`googleapis@174.0.1` ↗︎](https://www.npmjs.com/package/googleapis/v/174.0.1)
(from `174.0.0`, in `dependencies`)
- [#4149](https://github.com/Urigo/accounter-fullstack/pull/4149)
[`40e131e`](https://github.com/Urigo/accounter-fullstack/commit/40e131ea47520879f220c4c7bec2f0b58a52d729)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.36` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.36) (from
`4.0.34`, in `dependencies`)
- Updated dependency [`ai@7.0.58` ↗︎](https://www.npmjs.com/package/ai/v/7.0.58) (from `7.0.56`, in
`dependencies`)
- [#4151](https://github.com/Urigo/accounter-fullstack/pull/4151)
[`eb09479`](https://github.com/Urigo/accounter-fullstack/commit/eb09479067ea9d968f43b210e52252e11cd384c6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.23.0` ↗︎](https://www.npmjs.com/package/pg/v/8.23.0) (from `8.22.0`, in
`dependencies`)
- [#4157](https://github.com/Urigo/accounter-fullstack/pull/4157)
[`6f33e4e`](https://github.com/Urigo/accounter-fullstack/commit/6f33e4e51df1eefc5d4efe9f3a649066007b16de)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@7.0.59` ↗︎](https://www.npmjs.com/package/ai/v/7.0.59) (from `7.0.58`, in
`dependencies`)
- [#4187](https://github.com/Urigo/accounter-fullstack/pull/4187)
[`b56c9b4`](https://github.com/Urigo/accounter-fullstack/commit/b56c9b42f69eb2a01c90ea096ffc99bdce281a5b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`graphql-scalars@1.26.0` ↗︎](https://www.npmjs.com/package/graphql-scalars/v/1.26.0) (from
`1.25.0`, in `dependencies`)
- [#4197](https://github.com/Urigo/accounter-fullstack/pull/4197)
[`2fd175a`](https://github.com/Urigo/accounter-fullstack/commit/2fd175a9a1d62fb0341a6194a1297da7cd64a6a4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-tools/utils@12.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/12.0.0)
(from `11.2.2`, in `dependencies`)
- [#4199](https://github.com/Urigo/accounter-fullstack/pull/4199)
[`0b4702f`](https://github.com/Urigo/accounter-fullstack/commit/0b4702fc3ef6fd9729ef5f13b8242868d18584e1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.21.3` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.21.3)
(from `3.21.2`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.21.3` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.21.3) (from `5.21.2`,
in `dependencies`)
- [#4200](https://github.com/Urigo/accounter-fullstack/pull/4200)
[`d6e2cfb`](https://github.com/Urigo/accounter-fullstack/commit/d6e2cfbecb411a7a57e72e6f68236bf4546e32b0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.38` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.38) (from
`4.0.36`, in `dependencies`)
- Updated dependency
[`@graphql-tools/utils@11.2.2` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.2.2)
(from `12.0.0`, in `dependencies`)
- Updated dependency [`ai@7.0.64` ↗︎](https://www.npmjs.com/package/ai/v/7.0.64) (from `7.0.59`, in
`dependencies`)
- [#4209](https://github.com/Urigo/accounter-fullstack/pull/4209)
[`34d4c12`](https://github.com/Urigo/accounter-fullstack/commit/34d4c126f017b92d02b56de4b473f3075baa1996)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@4.0.38` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/4.0.38) (from
`4.0.36`, in `dependencies`)
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.21.3` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.21.3)
(from `3.21.2`, in `dependencies`)
- Updated dependency [`ai@7.0.64` ↗︎](https://www.npmjs.com/package/ai/v/7.0.64) (from `7.0.59`, in
`dependencies`)
- Updated dependency
[`graphql-yoga@5.21.3` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.21.3) (from `5.21.2`,
in `dependencies`)
- [#4225](https://github.com/Urigo/accounter-fullstack/pull/4225)
[`6299076`](https://github.com/Urigo/accounter-fullstack/commit/6299076c1f06d9c822eb77bcb097983029ff9491)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-tools/utils@12.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/12.0.0)
(from `11.2.2`, in `dependencies`)
- [#4049](https://github.com/Urigo/accounter-fullstack/pull/4049)
[`9c3a01b`](https://github.com/Urigo/accounter-fullstack/commit/9c3a01bf8d6124baa92778888c4c45cb9e665f1a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Notify when a charge's main document and
main transaction settle in different currencies. The ledger `validate` resolver now surfaces an
error (shown by the client's `ChargeErrors` component) when a charge's main financial document
currency differs from its main transaction currency while the `invoice_payment_currency_diff` flag
is off, prompting the user to turn on the "Invoice-Payment currency difference" switch. The check
is display-only — it does not alter ledger record generation or storage, only fires when each side
resolves to a single differing currency, and falls back to no extra errors if the underlying meta
lookups fail.
- [#3979](https://github.com/Urigo/accounter-fullstack/pull/3979)
[`e3c844b`](https://github.com/Urigo/accounter-fullstack/commit/e3c844b49da2a7bec4094c7ed8f5052fe71504dc)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Exclude charge types that never require
document matching from the awaiting-match queue. Only COMMON, BUSINESS_TRIP and untyped charges
(which resolve to one of those) are expected to hold both documents and transactions;
BANK_DEPOSIT, CREDITCARD_BANK, DIVIDEND, FOREIGN_SECURITIES, INTERNAL, VAT, PAYROLL, CONVERSION
and FINANCIAL charges are now skipped.
- [#3983](https://github.com/Urigo/accounter-fullstack/pull/3983)
[`8ce1562`](https://github.com/Urigo/accounter-fullstack/commit/8ce1562f19af6cf35ec36a9a9c1be85d8e62f9f0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Score charge-match candidates in parallel.
`findMatches` previously scored candidates in a sequential `await` loop, which serialized the
per-candidate client and issued-document-status DataLoader lookups inside `scoreMatch` into an
N+1. Scoring now runs with `Promise.all` so those loads batch. Ordering is unaffected (results are
sorted afterwards), so match output is unchanged.
- [#3982](https://github.com/Urigo/accounter-fullstack/pull/3982)
[`b97de0e`](https://github.com/Urigo/accounter-fullstack/commit/b97de0e153fcfa35ef598c9a99a908a934afc0ec)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Speed up the `chargesAwaitingMatchQueue`
query by building the match candidate pool once per request instead of once per queued charge.
`ChargesMatcherProvider` now exposes a batch `findMatchesForCharges`, which loads and classifies
the shared candidate pool a single time and scores every source charge against it in memory (the
per-source ±12-month window is still applied in-memory, so results are unchanged). This removes
the previous per-charge re-query and re-hydration of the candidate pool — the dominant cost,
especially for `BY_SCORE` which evaluated up to 100 charges.
Candidate charges are also filtered by `chargeRequiresMatch` before hydration, so charge types
that never require a document match (e.g. `BANK_DEPOSIT`, `CREDITCARD_BANK`, `VAT`) are no longer
loaded or offered as suggestions — mirroring the same filter already applied to the queue's source
charges.
- [#4161](https://github.com/Urigo/accounter-fullstack/pull/4161)
[`c6ba7c2`](https://github.com/Urigo/accounter-fullstack/commit/c6ba7c23d64fa3cc4c173817d0eff68ad44ec94e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix `allCharges` sorting by `AMOUNT` /
`ABS_AMOUNT` for receipt-only and proforma-only charges.
The sort key (`event_amount` in `getChargesByFilters`) took the receipts sum only when the
counterparty business had `can_settle_with_receipt = true`, and never considered proforma
documents. Charges backed solely by such documents got a `NULL` amount, so they collapsed onto the
`id` tiebreak and were emitted in an arbitrary block at the head/tail of the result — while the
client still displayed their receipt amount, making the list look unsorted.
The documents amount now follows the same precedence the client displays
(`getChargeDocumentsMeta`): invoices (incl. invoice-receipts and credit invoices) when any exist,
else receipts, else proforma, else fall back to the transactions sum.
- [#3816](https://github.com/Urigo/accounter-fullstack/pull/3816)
[`6963a16`](https://github.com/Urigo/accounter-fullstack/commit/6963a166897f794d86fad9bed173a31879e3e0db)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Enrich the charges `freeText` filter
(`allCharges` query) so it matches more than just text descriptions. In addition to the existing
`user_description` / transaction / document description matches, the `search_matches` CTE in
`ChargesProvider.getChargesByFilters` now also matches:
- **Amounts** — transaction `amount` and document `total_amount` / `vat_amount`. Both the raw and
`ABS()` values are compared so signed and unsigned inputs match. Thousands separators are
stripped from the search term (via a resolver-computed `freeTextNumeric` param) so both
`1,234.56` and `1234.56` match the plain value stored in the DB.
- **Counterparty business names** — by joining `financial_entities` on the business ids referenced
by the charge's transactions (`business_id`) and documents (`creditor_id`, `debtor_id`). The
document match is split into separate creditor/debtor `UNION` branches so the planner can use
the foreign-key indexes.
- [#3794](https://github.com/Urigo/accounter-fullstack/pull/3794)
[`ffcbb95`](https://github.com/Urigo/accounter-fullstack/commit/ffcbb9576241d6c31f4db2461b1ec12ca85b8b94)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Contract-generated document descriptions
now reflect the billing cycle: monthly contracts keep the billed-month label (`… - May 2026`),
while annual contracts use the contract's start & end dates
(`… January 15th, 2025 → January 14th, 2026`). Also parse `issueMonth` as local midnight to avoid
an off-by-one-month shift in timezones west of UTC.
- [#3850](https://github.com/Urigo/accounter-fullstack/pull/3850)
[`8d765c8`](https://github.com/Urigo/accounter-fullstack/commit/8d765c883a4457b2f22de5be0f95d0bd457d24f7)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - **Conversion charges with multiple
transactions per side**: conversion ledger generation no longer requires exactly two main
transactions. A single conversion can now be split across two or more transactions on the base or
quote side (for example two ILS credits against one USD debit).
- Main transactions are grouped by sign; each side is validated to be single-currency and the two
sides to differ in currency, with failures recorded as ledger errors instead of aborting
generation.
- Each side is aggregated into one representative entry (`aggregateConversionSideEntries`) that
feeds the existing fee and exchange-revaluation calculations, so the classic two-transaction
case is unchanged.
- [#3863](https://github.com/Urigo/accounter-fullstack/pull/3863)
[`35b1125`](https://github.com/Urigo/accounter-fullstack/commit/35b112532514b1447d615826943d192ed8a0d19f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Add a "Pull Deel Documents" button to the
user nav menu, next to "Add Balance Charge", that triggers the `fetchDeelDocuments` mutation on
demand.
Also improves the underlying Deel invoice fetch/matching logic:
- Distinguishes newly-seen invoices from previously-fetched invoices that are still unmatched, so
a later run can pick up a payment match for an invoice it already recorded (via a new
`updateDeelInvoiceRecords` update path) instead of only ever inserting.
- Reuses an already-matched charge for a given receipt when creating charges from payment
breakdowns, avoiding duplicate charges for invoices that share a receipt.
- Extends the Deel invoice schema/table with `billing_type` and `document_type`, and refines
several payment-receipt and payment-breakdown Zod schemas to match the Deel API more closely.
- [#3873](https://github.com/Urigo/accounter-fullstack/pull/3873)
[`246b1e4`](https://github.com/Urigo/accounter-fullstack/commit/246b1e4d41a6424c4b9f251ff0b8cf36c774ab30)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New helper function
`isSelfIssuedSenderEvidence()`** in `email-ingestion-issuer.helper.ts`: Detects when an email's
only determinable issuer is a known provider (Morning, Sumit) or the tenant's own forwarding
address, indicating no external counterparty. Reuses existing `selectIssuerEmail()` logic to
ensure consistency with issuer resolution.
- **Self-issued binding in control resolver** (`email-ingestion-control.resolver.ts`): When
`isSelfIssuedSenderEvidence()` returns true, the grant's `businessId` is set to the tenant's own
ID instead of the recognized business. This signals to the ingest step that the issuer is the
tenant itself. Also returns `null` for `businessEmailConfig` to spare the gateway needless
document work (link-fetch, body→PDF conversion).
- **Early short-circuit in ingest provider** (`email-ingestion-ingest.provider.ts`): After grant
validation, checks if `grant.businessId === tenantId`. If true, returns `DUPLICATE` outcome with
new `SELF_ISSUED` reason code, skipping all document processing (Cloudinary upload, OCR, dedup
queries, insert queries). Runs before `prepareDocuments()` to avoid unnecessary work.
- **New `IngestReasonCode.SELF_ISSUED`** constant in both `contracts.ts` files (server and
gateway): Distinguishes self-issued skips from content re-deliveries in duplicate outcomes.
- **Comprehensive test coverage**: Added test suites for the new helper function and ingest
behavior, verifying that self-issued emails are detected correctly, grants are consumed, and no
document work or database writes occur.
- [#3938](https://github.com/Urigo/accounter-fullstack/pull/3938)
[`2a0c041`](https://github.com/Urigo/accounter-fullstack/commit/2a0c041b0dc6104039304598f932e7990e84c2c0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Automatically degrade a charge's accountant
approval (`APPROVED` → `PENDING`) whenever its underlying data changes, so an already-approved
charge is re-flagged for accountant review.
A shared `degradeChargesAccountantApproval` helper (built on
`AccountantApprovalProvider.degradeChargeAccountantApproval`) is now invoked from every
charge-mutating operation:
- **Documents** — upload / batch-upload / Google-Drive batch-upload / insert / update (former and
new charge) / delete / charge-spread.
- **Transactions** — `updateTransaction` and `updateTransactions`, degrading both the former and
the new charge.
- **Misc expenses** — insert / bulk-insert / update (former and new charge) / delete.
- **Charges** — `updateCharge`, `batchUpdateCharges` and `mergeCharges`. Tag-only changes and
explicit accountant-approval changes are intentionally excluded.
- **Ledger** — `regenerateLedgerRecords`.
- **Cron** — `mergeChargesByTransactionReference`.
The helper de-duplicates ids and ignores empty / `EMPTY_UUID` values (degrading a non-approved
charge is a no-op), and returns the freshly-degraded charges so mutations respond with the
up-to-date `PENDING` status rather than a stale one.
- [#4209](https://github.com/Urigo/accounter-fullstack/pull/4209)
[`34d4c12`](https://github.com/Urigo/accounter-fullstack/commit/34d4c126f017b92d02b56de4b473f3075baa1996)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Drop the charge row when deleting or
unlinking its last document empties it. The server already deletes a charge that is left with no
documents and no transactions, but it never told the client, which then refetched a charge that no
longer exists and kept rendering a stale "shadow charge". `deleteDocument` now returns a
`DeleteDocumentResult` (`success`, `chargeId`, `deletedChargeId`) instead of a bare `Boolean`, and
`UpdateDocumentSuccessfulResult` carries a `deletedChargeId` for the unlink path. The charge
expansion forwards that signal up to the charges table, which removes the charge instead of
refetching it, and the edit-document drawer now closes after a successful delete or unlink.
Also fixes a hang on that unlink path: the deferred `postUpdateActions` closure in
`updateDocument` ended by calling itself, so unlinking a charge's last document never resolved and
re-ran the charge deletion in a loop.
- [#3948](https://github.com/Urigo/accounter-fullstack/pull/3948)
[`f933c8c`](https://github.com/Urigo/accounter-fullstack/commit/f933c8cdc8a9dc5378ebb24d332af11079835c1b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Pre-fill financial fields when switching an
"other"/"unprocessed" document to a financial type in the edit-document modal.
A document can be inserted carrying full financial data (date, amount, VAT, serial number,
debtor/creditor, etc.) while still categorized as `OTHER`/`UNPROCESSED`. Previously, editing such
a document and switching its type to a financial one (e.g. invoice) showed all extended attribute
fields empty — the stored values only appeared after saving and reopening the modal, once the
document re-resolved as a `FinancialDocument`.
The financial fields were only exposed on the `FinancialDocument` GraphQL types, so the edit query
could never fetch the already-stored values for `Unprocessed`/`OtherDocument`. These fields
(`vat`, `serialNumber`, `date`, `amount`, `vatReportDateOverride`, `noVatAmount`,
`allocationNumber`, `exchangeRateOverride`, `debtor`, `creditor`) are now exposed on the
`Unprocessed` and `OtherDocument` types and fetched by the client, and the edit form reads its
financial defaults from the document regardless of its current type — so switching to a financial
type immediately pre-fills the stored values.
- [#3836](https://github.com/Urigo/accounter-fullstack/pull/3836)
[`059b638`](https://github.com/Urigo/accounter-fullstack/commit/059b638702116701a5a0062a7ac3a58a28eeb004)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Add `exemptDealer`, `optionalVAT`,
`isReceiptEnough`, `isDocumentsOptional` and `isActive` to `BatchUpdateBusinessInput` in
`financial-entities/typeDefs/businesses.graphql.ts`.
- No resolver change is needed: these fields are already handled by the shared
`updateSingleBusiness` helper (`helpers/update-business.helper.ts`), and
`BatchUpdateBusinessInput` remains a strict structural subset of `UpdateBusinessInput`, so it is
still passed straight through. `isActive` flows to the core financial-entity update via
`hasFinancialEntitiesCoreProperties`; the rest map to the business row update. Tags and
description were already supported through the existing `suggestions` input.
- [#4127](https://github.com/Urigo/accounter-fullstack/pull/4127)
[`5bdeb5c`](https://github.com/Urigo/accounter-fullstack/commit/5bdeb5c61ef2ffc46d93e786cbd1afff0113c68d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix email-ingestion falsely marking
forwarded supplier invoices as self-issued (SELF_ISSUED DUPLICATE) and silently dropping them.
When a supplier (e.g. Aiven) emails a tenant's Accounts-Payable Google Group, the mailing list
rewrites the quoted `From:` to the group's own forwarding address
(`'Aiven Billing' via Account Payables <ap@…>`). The real issuer's address survived only as a body
contact/footer `mailto:` link, which the issuer-candidate extractor did not harvest — so the only
recognized address was the forwarder, hard-coded as a self-issuing provider. The email was bound
to the tenant's own business and skipped at ingest as a `DUPLICATE` (`SELF_ISSUED`), inserting
nothing.
- **Gateway `mime-extractor.ts`**: harvest any body `mailto:` link (not only header-anchored
`From:`/`Reply-To:`/`Sender:` addresses) as lower-priority issuer candidates, so a real issuer
reachable only through a contact/footer link is still recovered for server-side recognition.
- **Server `email-ingestion-control.resolver.ts`**: a positive _external_ business recognition now
wins over the single-address self-issued heuristic. When recognition identifies a real
counterparty (any business other than the tenant), the documents are attributed to it and the
self-issued check is skipped, so a supplier invoice routed through the tenant's own forwarding
group is no longer misclassified.
- **Server `email-ingestion-ingest.provider.ts`**: the self-issued / tenant-matched path now
**QUARANTINEs** (recorded, visible, reprocessable) instead of silently returning `DUPLICATE`
with nothing written, so a misclassification is never silent data loss. The `SELF_ISSUED` reason
code now pairs with the `QUARANTINED` outcome.
- [#4124](https://github.com/Urigo/accounter-fullstack/pull/4124)
[`3f3c0bd`](https://github.com/Urigo/accounter-fullstack/commit/3f3c0bd2b29e6e7beaf370a41eb54cd87e5f10c0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix v2 email ingestion stranding emails on
a failed document upload. The server consumed the single-use grant in its own committed
transaction before the fallible, non-transactional document preparation (Cloudinary upload, OCR),
so any failure there left the grant burned with **nothing** persisted — no document, no charge, no
quarantine, no idempotency record — and every retry then hit the already-consumed grant
(`GRANT_INVALID` → `REJECTED`). The underlying error was also swallowed by the ingest resolver,
making the failure invisible server-side.
Now the server validates the grant read-only up front, prepares documents while the grant is still
intact, and consumes the grant **atomically inside the write transaction**, so a failure rolls the
consume back and the email stays retryable. A Cloudinary/prep failure is turned into a new
`UPLOAD_FAILED` quarantine (recorded and reprocessable) instead of throwing raw, while unexpected
errors still surface with the grant unconsumed. The ingest resolver now logs the real cause (keyed
by `correlationId`) rather than returning a bare `CommonError`.
- [#4184](https://github.com/Urigo/accounter-fullstack/pull/4184)
[`d6fa2d0`](https://github.com/Urigo/accounter-fullstack/commit/d6fa2d002226930e0bbd20fd3fced9543c03455a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Classify incoming email as `DIRECT` /
`RELAYED` / `FORWARDED` / `SELF_ISSUED` before recognizing an issuer, so **manually forwarded**
supplier invoices stop being withheld as self-issued and **self-issued** copies are detected for
every tenant rather than one hard-coded one.
Issuer recognition was sound for mail sent straight to the tenant, but collapsed on two shapes
that dominate real inboxes. A hand forward rewrites `From` to the forwarder, drops the original
`Reply-To`, and sets no `X-Original-*`; when the quoted headers are themselves a mailing-list
rewrite (`'No Reply - Mailchimp' via Account Payables <ap@…>`), _every_ recoverable address
belongs to the tenant — so recognition matched the tenant's own business and ingest withheld the
document. A forwarded Mailchimp invoice was indistinguishable from a genuine self-issued one.
Separately, self-issued detection fired only because `INVOICE_ISSUING_PROVIDER_EMAILS` hard-coded
one specific tenant's forwarding group (`ap@the-guild.dev`); no other tenant had any detection at
all.
- **Server `email-ingestion-classify.helper.ts`** (new, replaces
`email-ingestion-issuer.helper.ts`): a single `classifyEmail(evidence, tenantContext)` returning
`{ kind, issuerCandidates, forwarder, issuerNameHint }`, absorbing `selectIssuerEmail` /
`selectIssuerCandidates` / `isSelfIssuedSenderEvidence` and the branching that lived in the
control resolver. Kind is decided first-match-wins, with "a quoted forward block exists"
outranking "arrived via an invoice platform": a person deliberately forwarding into the ingest
alias signals intent to ingest, whereas self-issued confirmations always arrive by automatic
relay, never by hand. Issuer candidates are tiered (innermost quoted `From` → `Reply-To` →
`X-Original-From` → `From` → body `mailto:`, with invoice-platform addresses held back to last),
and the tenant's own addresses, its mailing-list addresses and the forwarder are excluded at
every tier. `issuerNameHint` carries the sender's display name for the case where a list rewrite
leaves no usable address at all — the only signal the name-based matcher and OCR can work from.
- **Server `EmailIngestionControlProvider.loadTenantMailContext`** (60 s TTL cache): derives the
tenant's own addresses from its active ingest aliases plus the emails on its **own** business
row — deliberately `b.id = tenant`, not `b.owner_id = tenant`, since the latter is every
counterparty in the workspace and would exclude every supplier from recognition. Colleagues
registered nowhere are covered by new optional `suggestion_data.emailIngestion` config
(`ownDomains`, `extraPlatformSenders`), a schema-only addition with no DDL.
- **Server: self-issued mail is now `IngestOutcome.IGNORED`, not `QUARANTINED`.** It is still
recorded and reprocessable, but routine self-issued copies no longer fill the operator triage
queue. The signal is the new `email_ingestion_grants.classification` column bound at control
time, replacing the `business_id = owner_id` inference that conflated the two cases in the first
place; grants issued before the column fall back to that comparison.
- **Gateway `forwarded.ts`** (new): structural parsing of quoted
`---------- Forwarded message ---------` blocks across both the text and HTML parts. Forwards
nest, and the block nearest the original sender is the innermost one — ordering the previous
flat address scrape could not express. The extractor now ships `fromDisplayName`,
`originalSender`, `listId`, `listAddresses` and `forwardedBlocks` as additive sender evidence;
the gateway still holds no tenant knowledge.
- **Gateway `treatment.ts`**: a `SELF_ISSUED` email produces no documents at all, skipping a
Chromium render per message and — more importantly — never fetching whatever sits behind its
links.
- Two parsing defects fixed along the way: `addressParser` strips `(via Paddle.com)` as an RFC
5322 comment, so quoted display names are now sliced rather than parsed; and `headerValue`
returned the first match, letting `X-Original-From` shadow `X-Original-Sender` — the most
reliable "arrived via an invoice platform" signal. They are separate evidence fields now.
**Deploy the server before the gateway.** GraphQL rejects unknown fields on input objects at
validation, so a gateway sending the new `SenderEvidenceInput` fields to an un-upgraded server
gets an error that `server-client` maps to `TRANSIENT_UPSTREAM` and retries — stalling all inbound
mail. The reverse is safe: an upgraded server receiving old evidence degrades to header-only
classification. `ap@the-guild.dev` remains in the global invoice-platform list so behavior is
unchanged until that tenant's `emailIngestion.ownDomains` config is populated and verified in
production; remove it then.
Forward-only: emails already quarantined as `SELF_ISSUED` are not reclassified.
- [#4129](https://github.com/Urigo/accounter-fullstack/pull/4129)
[`d140951`](https://github.com/Urigo/accounter-fullstack/commit/d140951209c69661324fb0e5ddcc7f6aac847680)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix `UPLOAD_FAILED` quarantine
(`Missing businessId in AuthContext`) when ingesting a recognized foreign supplier invoice through
the email-ingestion gateway.
The gateway ingest runs under a `gateway_control_plane` context with no auth session, so it
deliberately uses `withTenantContext` (raw pool + pinned RLS) instead of `TenantAwareDBClient`.
But the shared `getDocumentFromUrlsAndOcrData` helper's foreign-counterparty VAT-0 fallback
reached into the auth-coupled `BusinessesProvider` / `AdminContextProvider` loaders, whose
`TenantAwareDBClient` throws `Missing businessId in AuthContext` in that context. The throw became
a `DocumentPreparationError` → `UPLOAD_FAILED` quarantine, so any recognized **foreign** supplier
invoice (VAT null) forwarded through the gateway was quarantined instead of inserted.
- `getDocumentFromUrlsAndOcrData` now accepts an optional `vatFallbackContext`
(`{ counterpartyCountry, adminLocality }`); when provided it drives the VAT-0 fallback instead
of the auth-coupled loaders. The legacy path (no argument) is unchanged.
- `EmailIngestionIngestProvider.prepareDocuments` resolves the counterparty country and the
tenant's admin locality via the raw pool under the tenant's RLS context (alongside the existing
hash-dedup read) and passes them in — so the control-plane ingest never touches the auth-coupled
providers.
- [#4175](https://github.com/Urigo/accounter-fullstack/pull/4175)
[`3014b9c`](https://github.com/Urigo/accounter-fullstack/commit/3014b9cbc95f22e7e88bf818f93abfe38d65ba9f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Recognize the issuing business from the
**document itself** when ingesting email documents, so invoices that arrive through an
aggregator/forwarder no longer land with an empty creditor/debtor.
Recognition on the ingest path was sender-address-only: `recognizeBusinessFromEvidence` looks the
sender up in `businesses.suggestion_data->'emails'` and pins the result into the grant. When mail
arrives via an aggregator (e.g. `sync@wellybox.com`) nothing matches, and the OCR name/VAT matcher
that should have covered it was silently inert — `getOcrData` loads its business list through the
auth-coupled `BusinessesProvider` / `AdminContextProvider`, whose `TenantAwareDBClient` throws
`Missing businessId in AuthContext` under the gateway control-plane context, and both fetchers
swallowed the error into an empty list. With no businesses, `matchBusiness` bails immediately and
the LLM match fallback is gated off, so `suggestedIssuer` was always null.
`resolveOwnerSideFromUuids` — which turns those matches into `counterpartyId` / `isOwnerIssuer` —
was also only ever called from the manual-upload path. Net effect: the issuer's legal name was
extracted correctly and stored in the document's `remarks`, then discarded, even when a business
with exactly that name existed.
- `getOcrData` accepts an optional `matchContext` (`{ businesses, owner }`) that bypasses the
auth-coupled loaders, mirroring the existing `vatFallbackContext` escape hatch. Callers that
omit it (manual upload) are unchanged.
- `EmailIngestionIngestProvider.prepareDocuments` loads the tenant's businesses and locality via
the raw pool under the tenant's RLS context (alongside the existing hash-dedup read), passes
them to the matcher, then applies `resolveOwnerSideFromUuids`. The grant's email-matched
business stays authoritative and the OCR match only fills the gap; a disagreement between the
two is logged. The counterparty country for the VAT-0 fallback now comes off that same list
against the final counterparty, replacing a separate query.
- `isOwnerIssuer` can now be set on this path, so an OCR-identified owner-issued document gets
`creditor = tenant, debtor = counterparty` instead of the previous unconditional orientation.
- The failed business/owner loads are now logged instead of being swallowed silently.
- `resolveOwnerSideFromUuids` no longer lets the owner become its own counterparty. An OCR result
naming the owner on both sides used to be written into `counterpartyId`, collapsing both
document sides onto the owner (`creditor === debtor`); such a contradictory match is now treated
as carrying no side information, so it can't invert an already-resolved counterparty either.
This also fixes the manual-upload path, which shared the helper.
Forward-only: documents already inserted with a null creditor are not backfilled.
- [#3809](https://github.com/Urigo/accounter-fullstack/pull/3809)
[`533a7ec`](https://github.com/Urigo/accounter-fullstack/commit/533a7ec00bcbb722759531b3b607ad5a5c109c47)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Recognize the issuing business for
**manually forwarded** invoice emails. The real issuer address often survives only inside the
quoted "Forwarded message" header block (e.g. the original `Reply-To`), which the gateway
previously ignored. The gateway now also recovers `From`/`Reply-To`/`Sender` addresses from
forwarded-header blocks, and the server tries every candidate (case-insensitively) until one
matches a business — so a forwarded Cloudflare invoice is attributed to the right business and its
email-processing config (e.g. "ignore the body") is applied instead of falling back to default
treatment.
- [#4065](https://github.com/Urigo/accounter-fullstack/pull/4065)
[`b218e17`](https://github.com/Urigo/accounter-fullstack/commit/b218e17e1f96d9e12f6c9a825dd8bba7a32f6af6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Align the MAX credit card ingestion path
with what MAX actually returns.
The Zod payload schema for MAX was `.loose()` and covered only a handful of fields, so the nested
`dealData`, `merchantData` and `runtimeReference` blocks were never validated and were passed
through to the GraphQL mutation unflattened. `max.schema.ts` now models the full transaction
strictly, and `maxVars` flattens those nested blocks into the `MaxTransactionInput` columns the
server expects.
MAX omits large parts of `dealData` for some transaction types, so the `MaxTransactionInput`
fields backing those columns are now nullable, and the numeric ones (`dealDataAmount`,
`dealDataAmountIls`, `dealDataExchangeRate`, `originalAmount`, …) are typed as `Float` rather than
`String`. Boolean fields backing `bit` columns are converted to `1`/`0` via a new
`convertBooleanToBit` helper — previously a JS boolean was sent to a `bit` column, which Postgres
rejects.
Also fixes a few typing gaps in `scraper-app` that surfaced alongside this: the upload client
derives its result types from the generated mutation types instead of a hand-maintained
`ScraperUploadResult`, `filterPayload` handles the two `otsar-hahayal` source types instead of
falling through, the config screen gets an explicit `CONFIGURABLE_SOURCE_TYPES` list, and the
package's tsconfig resolves `@accounter/modern-poalim-scraper` to its build output.
- [#3778](https://github.com/Urigo/accounter-fullstack/pull/3778)
[`02dc27e`](https://github.com/Urigo/accounter-fullstack/commit/02dc27e172538c66f4f9af228ea2d419d0e81141)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix false `GRANT_INVALID` rejections in v2
email ingestion. A slow Cloudinary upload could make the gateway's ingest call time out and retry
after the server had already consumed the single-use grant, so the retry was rejected even though
the first attempt had succeeded. The server now performs an early idempotency check before
consuming the grant (returning `DUPLICATE` on retry), the gateway no longer retries ingest on
timeout, and the ingest timeout was raised from 10s to 30s.
- [#3762](https://github.com/Urigo/accounter-fullstack/pull/3762)
[`50ca939`](https://github.com/Urigo/accounter-fullstack/commit/50ca939661d9eb5b31e134c54d12015e524fac1c)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Email ingestion: set a descriptive charge
description matching the legacy gmail-listener —
`Email documents: <subject> (from: <sender>, <date>)` — instead of the bare
`email-ingestion: <messageId>`. The email subject, sender, and received date are threaded through
`IngestEmailInput` (new optional `subject`/`sender`/`receivedAt` fields) → the `ingestEmail`
resolver → `EmailIngestionIngestProvider`, with graceful fallback to the message id when any field
is missing. The received date is formatted in UTC so the same email produces a stable description
across dev/CI/prod.
- [#3896](https://github.com/Urigo/accounter-fullstack/pull/3896)
[`36f8d49`](https://github.com/Urigo/accounter-fullstack/commit/36f8d49c1fff95afea466a23b33eba7c0db004a8)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Server**:
`recordsByFinancialEntityIdAndSortCodeValidations`
(`packages/server/src/modules/reports/helpers/misc.helper.ts`) now collects the contributing
ledger records (deduplicated by record ID) alongside the per-entity amount aggregation.
- **GraphQL schema**: `ReportCommentarySubRecord` gains a `ledgerRecords: [LedgerRecord!]!` field,
so the details are delegated to the client. This applies to both the Profit & Loss and Tax
reports, which share these commentary types.
- [#3812](https://github.com/Urigo/accounter-fullstack/pull/3812)
[`c8d5560`](https://github.com/Urigo/accounter-fullstack/commit/c8d5560b0210d4a0095a4254db406f9d402a8e4b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **A1 — `sortCode: Int`**: new field on
`LtdFinancialEntity`. The value already rides on the joined `financial_entities` row
(`sort_code`), so the resolver is a direct mapping.
- **A2 — `taxCategory` returns `null` when unmatched**: the field is nullable, but the resolver
previously threw a `GraphQLError` when a business had no tax category match. The management
screen lists every business (including uncategorized, auto-generated ones), so one missing match
would fail the whole query. Now returns `null`.
- **A3 — `isClient: Boolean!` and `isAdmin: Boolean!`**: simple boolean columns for the client and
admin/owner extension tags, reusing the loaders that already back `clientInfo`
(`ClientsProvider.getClientByIdLoader`) and `adminInfo`
(`AdminBusinessesProvider.getAdminBusinessByIdLoader`).
- **B1 — `BusinessUsageProvider`**: new `@Injectable()` provider
(`providers/businesses-usage.provider.ts`) exposing
`getUsageByBusinessIds(ids): Map<id, { transactions, documents, miscExpenses, ledgerRecords }>`.
One grouped count query per source. For sources where a business can appear in more than one
column, each id-bearing column is projected into a common `business_id` via `UNION ALL` before
grouping, so counts attribute to the correct id (a single `OR … GROUP BY business_id` would
not):
- `transactions` → `business_id`
- `documents` → `debtor_id` ∪ `creditor_id`
- `misc_expenses` → `debtor_id` ∪ `creditor_id`
- `ledger_records` → `debit_entity1/2` ∪ `credit_entity1/2`
Every requested id defaults to zero so unused businesses are represented. Column names confirmed
against the `replaceBusiness` merge query and the misc-expenses provider.
- **B2 — `businessesUsage` query**: new typeDef + resolver returning `[BusinessUsage!]!`, wired
into the financial-entities module (typeDef, resolver, provider registration, pgtyped types
re-export).
```graphql
type BusinessUsage {
businessId: UUID!
totalTransactions: Int!
totalDocuments: Int!
totalMiscExpenses: Int!
totalLedgerRecords: Int!
}
extend type Query {
businessesUsage(ids: [UUID!]!): [BusinessUsage!]! @requiresAuth
}
```
- **C1 — `deleteBusiness` mutation**: exposes `deleteBusiness(businessId: UUID!): Boolean!`
(`@requiresAuth`, `@requiresAnyRole(["business_owner", "accountant"])`) wrapping the existing
`BusinessesOperationProvider.deleteBusinessById`. That provider already validates the business
is not an employee / pension-or-training fund / business-trip attendee / dividends receiver
(throwing per case) and cleans up its dependent rows (unbalanced-ledger businesses,
balance-cancellation, green-invoice client, tax-category match) before deleting the `businesses`
row.
The resolver returns `true` on success; the provider's guard errors propagate as GraphQL errors
with their original messages. No new guards are added — the provider is the hard backstop, and
the screen disables delete when usage > 0 (Phase I).
- **D1 — extract `updateSingleBusiness` helper** (refactor, no schema change): the per-business
body of the `updateBusiness` mutation (core financial-entity fields, business fields,
suggestions, tax-category match, green-invoice sync) moves into
`helpers/update-business.helper.ts`. It returns the refreshed business and throws on failure.
The `updateBusiness` resolver now wraps the helper and maps thrown errors to `CommonError`,
preserving observable behavior (the success path is byte-for-byte the same; failures keep the
`Failed to update business ID="…": …` format).
- **D2 — `batchUpdateBusinesses` mutation**:
```graphql
input BatchUpdateBusinessInput {
country: CountryCode
city: String
zipCode: String
sortCode: Int
taxCategory: UUID
irsCode: Int
pcn874RecordType: Pcn874RecordType
suggestions: SuggestionsInput
}
extend type Mutation {
batchUpdateBusinesses(businessIds: [UUID!]!, fields: BatchUpdateBusinessInput!): [Business!]!
@requiresAuth
@requiresAnyRole(roles: ["business_owner", "accountant"])
}
```
The input is the subset of fields safe to apply to many businesses at once (locality,
categorization, suggestions). The resolver resolves the owner from the admin context and applies
`updateSingleBusiness` to each id, returning the updated businesses; a failure on any id rejects
the whole mutation. `BatchUpdateBusinessInput` is a strict structural subset of
`UpdateBusinessInput`, so it is passed straight to the shared helper.
- [#4081](https://github.com/Urigo/accounter-fullstack/pull/4081)
[`f899b37`](https://github.com/Urigo/accounter-fullstack/commit/f899b37a1561ef168398d122f214d9802178707d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Coherent owner/business scoping for the MCP
connector.
The connector handled multi-business ownership three inconsistent ways and never forwarded the
caller's business scope upstream, so scope-less queries could not be narrowed at all and results
were not attributable to a business.
**Server** — expose `Tag.ownerId` (`UUID!`), backed by a migration that appends `owner_id` to the
`accounter_schema.extended_tags` view.
**MCP server**
- Forward the resolved read scope upstream as `x-business-scope` on every tool call, so RLS on the
Accounter server is the enforcement point. The upstream context is built once where the scope is
known, so a tool handler cannot omit it. The membership bootstrap (`myMemberships`) is
deliberately never scoped — it is the query that discovers the scope.
- Fix charges scoping: filter by `byOwners` (the owner predicate) instead of `byBusinesses` (the
counterparty predicate, from which upstream removes the owner), which had been returning only
inter-company charges. The balance report now uses the requested `businessId` rather than the
first id in scope.
- Add `accounter_list_businesses`, a read-only discovery tool listing the caller's businesses and
role in each. Registered first so it leads `tools/list`; the internal `accounter_smoke_ping` is
no longer advertised, though it remains dispatchable.
- Uniform scoping contract: every business-scoped tool takes the same optional `businessIds`, rows
carry `ownerId` (charges also `ownerName`), and responses echo the effective
`scope.businessIds`. Out-of-scope ids are rejected rather than silently dropped.
- Extend GraphQL codegen document discovery to `src/upstream/*.ts`, so the membership query is
validated against the schema like the tool queries.
- [#4107](https://github.com/Urigo/accounter-fullstack/pull/4107)
[`c8e336f`](https://github.com/Urigo/accounter-fullstack/commit/c8e336fa5f1d7e5b79c697983e9d772a135b40dc)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Export MCP server traces to OpenTelemetry
(Grafana Tempo) and link them with the backend.
The MCP server's tracing was previously a dependency-free stub. It now emits real OpenTelemetry
spans over OTLP/HTTP to the same Grafana Tempo backend as the main server, using the same `OTEL_*`
configuration (disabled by default; enable with `OTEL_ENABLED=1` and an
`OTEL_EXPORTER_OTLP_ENDPOINT`). Spans come from Node auto-instrumentation (incoming `POST /mcp`,
and the outbound `fetch` to the upstream GraphQL API) plus the existing `withSpan` units of work
(`auth:verify`, `tool:<name>`, `upstream:graphql`), each tagged with an `accounter.correlation_id`
attribute.
MCP and backend traces are linked two ways: the outbound `fetch` propagates the W3C `traceparent`
header, so the Accounter server continues the same distributed trace; and a new
`correlationIdPlugin` on the server records an inbound `X-Correlation-Id` as the
`accounter.correlation_id` span attribute, so both services' traces are searchable by the same
business-level id in Grafana.
- [#4174](https://github.com/Urigo/accounter-fullstack/pull/4174)
[`a83bc37`](https://github.com/Urigo/accounter-fullstack/commit/a83bc3762a592c9cddb2976598f9c4541a88c8d9)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Add filters to the Missing Info Charges
screen.
The screen previously listed every charge with missing required info and offered no way to narrow
it. It now has the same `ChargeFilter` set as All Charges — owners, financial entities, tags,
income/expense, charge types, business trips, sorting, accountant status, free text and the
missing-information switches — with one exception: the date range is optional here, so the filter
modal opens with empty From/To dates instead of the "last year" default, and old unresolved
charges are not hidden.
The merge-charges action was removed from this screen; merging stays available on All Charges.
`chargesWithMissingRequiredInfo` now accepts `filters: ChargeFilter`. The `allCharges` filter,
sort and pagination logic moved into a shared `fetchFilteredCharges` helper that the missing-info
query reuses with the missing-info charge ids as an id restriction, so both screens filter, sort
and paginate identically. The read scope is applied as the owner filter, so the pagination counts
cover only the charges the request may see, and an unsorted request keeps the screen's
newest-first order.
Also fixes the `allCharges` `page` argument defaulting to `1` while the resolver paginates from
`0`: a caller that omitted `page` (such as the charts screen) asked for the _second_ page and got
an empty result. Both queries now default to `page: 0`.
- [#3773](https://github.com/Urigo/accounter-fullstack/pull/3773)
[`2f1e974`](https://github.com/Urigo/accounter-fullstack/commit/2f1e9746533d297cac8bd4d80c668c2c9d9fe823)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **VAT extraction**: adds
`issuerVatNumber` / `recipientVatNumber` to the Claude extraction schema so VAT/registration
numbers are pulled from the document in the same LLM call (near-zero extra cost).
- **Server-side matching**: new pure helper `business-matcher.helper.ts` resolves extracted
names/VAT numbers to business UUIDs in three priority tiers: (1) VAT exact match, (2)
name/Hebrew-name substring, (3) `suggestion_data.phrases` sorted by priority.
- **LLM fallback**: for financial document types (INVOICE, RECEIPT, INVOICE_RECEIPT,
CREDIT_INVOICE, PROFORMA) where one or both sides remain unmatched after server-side matching, a
second LLM call reuses the existing conversation context — no file re-send — and asks Claude to
pick the closest business from the full businesses list.
- **UUID-based side resolution**: `getDocumentFromFile` now resolves `isOwnerIssuer` and
`counterpartyId` from the UUID matches, replacing the previous hardcoded `"the guild"` text
check.
- **Graceful fallback**: `fetchBusinessesForMatching` wraps the `BusinessesProvider` call in
try/catch, so email-ingestion paths (gateway auth, no tenant context) continue to work
unchanged.
- [#4234](https://github.com/Urigo/accounter-fullstack/pull/4234)
[`bb8cc37`](https://github.com/Urigo/accounter-fullstack/commit/bb8cc3743043d2bb11595ccc8f49e6e52eccedfc)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Accept the Poalim securities feed's non-USD
currencies, and page past its 150-execution response cap
The executions schema only knew `שקל חדש` and `דולר ארה"ב`, so any non-US listing failed
validation; `אירו`, `לירה שטרלינג` and `ין יפני` are now accepted and mapped to `Currency` on
read. The endpoint also caps a response at 150 executions without saying it truncated, so a full
page is re-requested with the window's ceiling pulled back to the oldest day that page reached,
and the pages are merged and deduplicated.
- [#3847](https://github.com/Urigo/accounter-fullstack/pull/3847)
[`3109f03`](https://github.com/Urigo/accounter-fullstack/commit/3109f03cb36df30f01ec76d2a7016e833d743fb5)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Replace
`new URL('.', import.meta.url).pathname` with `fileURLToPath(new URL('.', import.meta.url))`
everywhere it's used to resolve `__dirname` in ESM.
- `.pathname` breaks on Windows (prepends an extra leading slash before the drive letter, e.g.
`/C:/...`) and doesn't decode URL-encoded characters (e.g. `%20` for spaces). `fileURLToPath`
from the built-in `url` module is the standard, cross-platform way to do this.
- Applied across all 34 GraphQL server modules' `index.ts` files, the root and server
`vitest.config.ts`, and the `graphql-module` skill's scaffold template (so newly generated
modules follow the same convention).
- [#4028](https://github.com/Urigo/accounter-fullstack/pull/4028)
[`5fd5993`](https://github.com/Urigo/accounter-fullstack/commit/5fd5993d7213c1dc6b947f2e49dd8bf05f07467b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Update charge meta helpers to accept
either a charge id or a loaded charge row (`ChargeRef`) and use an enriched fast path when
available.
- Short-circuit multiple GraphQL field resolvers to use precomputed aggregates already present on
enriched charge rows.
- Extend the filters SQL query to return additional precomputed aggregates and prime the
charge-by-id DataLoader with enriched rows.
- [#4026](https://github.com/Urigo/accounter-fullstack/pull/4026)
[`d7614eb`](https://github.com/Urigo/accounter-fullstack/commit/d7614eb90aea120846a51558767923a07218411c)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Make `TenantAwareDBClient` hold one pooled
connection and one open transaction per GraphQL request instead of per query.
Previously every stand-alone query paid `BEGIN` → RLS `set_config` → query → `COMMIT` — four to
five round trips for one logical read. The client now opens a session lazily on the first query,
sets the RLS variables once, and reuses it for the rest of the request, collapsing that to roughly
one round trip per query. On the AllCharges screen, which issues ~90 logical queries per request,
this is the dominant cost. Queries are still serialized through the existing mutex (one connection
per request), so the win is fewer round trips, not parallel execution.
Semantics are preserved:
- Data-modifying stand-alone queries and the outermost explicit `transaction()` scope commit
immediately, so a mutation response always reflects durable state.
- Nested `transaction()` scopes keep their SAVEPOINT isolation.
- A failed statement rolls the session back, and the next query starts a fresh one.
- `dbCleanupPlugin` disposes the client once the response — including any `@defer`/`@stream` tail
— is fully sent, committing any open read session and releasing the connection.
Clients constructed outside the GraphQL request lifecycle (no `CONTEXT` injection — test
harnesses, scripts) default to the previous commit-and-release-per-operation behavior, since
nothing would ever call `dispose()` and the held connection would otherwise leak from the pool.
- [#4241](https://github.com/Urigo/accounter-fullstack/pull/4241)
[`4434da9`](https://github.com/Urigo/accounter-fullstack/commit/4434da97b8ba3c2c26e47b70ffde59bba8f20e75)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix the IDE TypeScript server restart loop
and the `yarn lint` out-of-memory crash, both caused by the root `tsconfig.json` having no
`include`.
Without `include`, and with `allowJs: true`, the root config globbed the entire monorepo into a
single program — 9854 files, ~4.3 GB peak heap, 79s to check. VS Code launches `tsserver` with
`--max-old-space-size=3072`, so the root project could never fit: it OOM'd and was respawned
continuously, which is what left the editor stuck on `Initializing 'tsconfig.json'` and
`Loading IntelliSense status`. The same whole-repo program made `yarn lint` die at 4.08 GB.
- **Root `tsconfig.json`** now sets `include` to the root-level scripts and config files it is
actually responsible for. It remains the `extends` base for every package. The root project
drops to 2238 files, 0.56 GB, 2.6s.
- **`green-invoice-graphql`, `hashavshevet-mesh`, `israeli-vat-scraper`, `payper-mesh` and
`pcn874-generator`** gain an explicit `"include": ["src"]`. They had none and would otherwise
inherit the root's, which is scoped to root paths. No emit change — these packages have no `.ts`
outside `src/`, and each already pinned `rootDir: ./src`.
- **`@accounter/server`**: the `declare global { namespace GraphQLModules }` augmentation moves
out of `modules-app.ts` into `src/shared/types/graphql-modules.d.ts`. A global augmentation
buried in a heavyweight entry file only applies when that file is in the program, so anything
importing server sources without pulling in the whole module graph lost `GlobalContext` and
failed on `dbClientsToDispose`. As a `.d.ts` it is cheap for other projects to include.
Identical type surface; the now-unused `RawAuth` import is dropped.
- **`.vscode/settings.json`** raises the `tsserver` memory ceiling (the client project alone needs
~1.9 GB), pins the workspace TypeScript version, and uses fsevents-based watching. Uses the
current `js/ts.*` setting IDs, since the `typescript.*`-prefixed ones are deprecated.
**Type-aware ESLint was broken independently** and is fixed here too, because scoping the root
project exposed it. `parserOptions.project` listed `'*/tsconfig.json'`, which resolves to
`packages/tsconfig.json` — a file that does not exist. No package tsconfig was ever in the project
list; every file under `packages/` was typed solely via the root glob-everything project. Replaced
with `projectService: true`, which resolves the nearest `tsconfig.json` per file and cannot
silently miss a package. Files that no tsconfig includes (`**/tests/`, `**/.storybook/`,
`vite.config.ts`, `vitest.config.ts`, `packages/*/scripts/`, `packages/*/tools/`) are added to
`ignores`, matching the existing `**/__tests__/` and `**/tsup.config.ts` entries. The root `lint`
script raises the Node heap to 8 GB — the client and server programs coexist in one process and
exceed the ~4 GB default.
`yarn lint` now exits 0 (852 pre-existing warnings, 837 of them the intentionally-`warn`
`no-console` rule). Type resolution is verified working, not merely quiet: a floating-promise
probe under `@typescript-eslint/no-floating-promises` errors as it should.
- [#3775](https://github.com/Urigo/accounter-fullstack/pull/3775)
[`7e07190`](https://github.com/Urigo/accounter-fullstack/commit/7e07190447f277b1b744f1d83d19d0a78c8007da)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - automated business matching for extracted
document data using local heuristics (VAT, name, and phrase matching) and an LLM fallback
- [#4031](https://github.com/Urigo/accounter-fullstack/pull/4031)
[`83e9ca1`](https://github.com/Urigo/accounter-fullstack/commit/83e9ca1d43e57d899634c46cebf913f14b0291cd)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Short-circuit
`ChargeMetadata.invalidLedger` to `VALID` for empty common-type charges (no transactions,
documents, ledger records or misc expenses), skipping full ledger generation. The emptiness probe
reads counts only — from the enriched charge row when available, otherwise from the existing
per-charge loaders.
- Memoized derived charge types per request in `getChargeType`, so a null-typed charge resolves
its type once instead of on every `__isTypeOf` probe, validation and suggestion call.
- `isChargeLocked` now passes the charge row (rather than its id) to the meta helpers, letting
enriched rows skip redundant child-table loads.
- [#4240](https://github.com/Urigo/accounter-fullstack/pull/4240)
[`e7b92ad`](https://github.com/Urigo/accounter-fullstack/commit/e7b92adf922a1040edc71e255abc09c98a1f7227)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix Postgres connection leak that wedged
the server on cancelled requests
A request cancelled mid-execution never fired `onExecuteDone`, so its pooled connection was never
released and its transaction never closed — Postgres kept the session `idle in transaction`
indefinitely. Since urql aborts the in-flight query on every keystroke, each cancelled search
leaked one connection permanently; once the leaks reached `POSTGRES_MAX_CLIENTS`, every request
hung in `pool.connect()` until the process was restarted.
Clients are now disposed on the request's `AbortSignal`, with three independent backstops: a
watchdog that reclaims connections idle beyond a ceiling, pool-level timeouts
(`connectionTimeoutMillis`, `statement_timeout`, `idle_in_transaction_session_timeout`, TCP
keepalive) so exhaustion errors loudly instead of hanging, and an `'error'` listener on
checked-out clients that returns a broken connection to the pool instead of losing the slot.
Adds a `db-pool-heartbeat` log line reporting pool saturation, connection holders, and event-loop
delay, plus `application_name` on connections so app sessions are identifiable in
`pg_stat_activity`. New optional env vars: `POSTGRES_CONNECTION_TIMEOUT_MS`,
`POSTGRES_STATEMENT_TIMEOUT_MS`, `POSTGRES_IDLE_IN_TRANSACTION_TIMEOUT_MS`,
`POSTGRES_CLIENT_MAX_IDLE_MS`, `POSTGRES_WATCHDOG_INTERVAL_MS`, `POSTGRES_MONITOR_INTERVAL_MS` —
all defaulted, see `docs/operations/db-connection-pool.md`.
- [#3903](https://github.com/Urigo/accounter-fullstack/pull/3903)
[`fda1331`](https://github.com/Urigo/accounter-fullstack/commit/fda13312351a0edce6b531bbf52fa601d5c4ccc0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Refactored Merge Logic**: Extracted the
complex merge planning logic for charges by transaction reference into a dedicated helper
function, improving maintainability and testability.
- **Added Dry Run Support**: Introduced a `dryRun` parameter to the
`mergeChargesByTransactionReference` mutation, allowing users to preview merge plans before
execution.
- **Enhanced Transaction Data**: Updated the SQL query to include `origin_user_description` by
joining additional transaction tables, providing more context for matching logic.
- **Comprehensive Test Suite**: Added a new test file covering various scenarios, including
recurring payments, foreign securities, and fee associations, to ensure robust merge planning.
- [#4178](https://github.com/Urigo/accounter-fullstack/pull/4178)
[`ab60c6d`](https://github.com/Urigo/accounter-fullstack/commit/ab60c6dde41c49d4fceb8a861be7aeea08fd9139)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Import `TransactionDirection` in
`transactions/resolvers/common.ts` from `shared/enums.js` instead of from
`__generated__/types.js`.
The generated module only re-exports the enum from `shared/enums.js`, but it is a build artifact —
so a _value_ import of it (unlike the `import type` used everywhere else) made this module, and
every test that reaches it, fail to resolve whenever GraphQL codegen had not produced
`packages/server/src/__generated__/types.ts`:
```
Cannot find module '../../../__generated__/types.js' imported from
packages/server/src/modules/transactions/resolvers/common.ts
```
Behavior is unchanged — it is the same enum object — and this was the only runtime import of the
generated types in the server package.
- [#3914](https://github.com/Urigo/accounter-fullstack/pull/3914)
[`35a6c4d`](https://github.com/Urigo/accounter-fullstack/commit/35a6c4de58fbaea67d466b53403c232270328557)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Schema updates**: Added `sortCode: Int`
field to the `DynamicReportNodeData` GraphQL type and Zod validation schema
- **GraphQL query**: Updated the dynamic report query to fetch the `sortCode` field from template
data
- **Tests**: Added comprehensive test coverage for parsing and validating sort-code-branch nodes
with sortCode fields, plus a test verifying sortCode is read from template data (not derived
from UUID IDs)
- [#4043](https://github.com/Urigo/accounter-fullstack/pull/4043)
[`244f33b`](https://github.com/Urigo/accounter-fullstack/commit/244f33bbfc2d334ef03ea5d8b94d937da1e1badd)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Optimize the VAT monthly report and the
flows backed by `getVatRecords` (monthly-VAT ledger validation, description suggestions, and
PCN874 generation):
- `getVatRecords` now accepts an `includeChargeBuckets` option (default `true`). The
ledger-generation, monthly-VAT-suggestion and PCN874 callers read only `income`/`expenses`, so
they pass `false` to skip the per-charge `validateCharge` + business-trip pass that builds the
`missingInfo` / `differentMonthDoc` / `businessTrips` buckets those callers discard.
- `adjustTaxRecord` passes the enriched charge row (instead of its id) to the transaction/document
meta helpers, serving the precomputed aggregates from the fast path instead of firing extra
DataLoader batches per record.
- `validateCharge` is memoized per request (injector-keyed), so the VAT report's bucketing pass
and the `Charge.validationData` field resolver share a single validation per charge rather than
computing it twice.
- The VAT report screen dedupes its query document once at module load, keeping a stable query
reference across renders.
- [#3880](https://github.com/Urigo/accounter-fullstack/pull/3880)
[`02362ec`](https://github.com/Urigo/accounter-fullstack/commit/02362ecad8f161285d98a238fbd4fef374cebfd3)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - * **VAT Suggestion Logic**: Implemented a
new suggestion resolver that identifies missing VAT charge descriptions by comparing transaction
amounts against monthly VAT reports.
- **Ledger Validation**: Added validation logic to the ledger generation process to ensure monthly
VAT charges have valid descriptions and that the VAT amount matches the transaction sum.
- **Helper Utilities**: Introduced helper functions to calculate monthly VAT totals and verify
them against transaction amounts within a defined tolerance.
- [#3837](https://github.com/Urigo/accounter-fullstack/pull/3837)
[`465eefe`](https://github.com/Urigo/accounter-fullstack/commit/465eefe4062076ecdf9f0a447637ddc797039572)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - **Wildcard business-recognition emails**:
`suggestion_data.emails` now accepts wildcard patterns (e.g. `*@cloudflare.com`) alongside
concrete addresses, so suppliers that send invoices from a unique address per invoice (such as
`qr45uf@cloudflare.com`) can be recognized by a single entry.
- The suggestion-data schema validates wildcard patterns (`*` allowed anywhere in an email-shaped
entry) while still rejecting over-broad values like a bare `*`.
- Both recognition lookups (`BusinessesProvider.getBusinessByEmail` and the email-ingestion
control provider) translate `*` to a `LIKE` wildcard in SQL, escaping `_`, `%` and `\` so
literal entries keep matching exactly. Matching stays case-insensitive.
- New `email-pattern.helper.ts` is the source of truth for the pattern shape and provides an
in-process matcher used by tests.
- [#3793](https://github.com/Urigo/accounter-fullstack/pull/3793)
[`0ffbebd`](https://github.com/Urigo/accounter-fullstack/commit/0ffbebde245e8d1c12c76202bdaf1d889e0b4b40)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **sort-codes.provider.ts**: Modified
`updateSortCode` to retrieve the verified admin context and pass the `ownerId` to the query via
`reassureOwnerIdExists` helper
- **sort-codes.provider.test.ts**: Added comprehensive test coverage for both `updateSortCode` and
`addSortCode` methods, including:
- Regression test verifying `owner_id` is included in update query values
- Test confirming all parameters (key, name, defaultIrsCode, ownerId) are forwarded correctly
- Test verifying cache is cleared after updates
- Test for `addSortCode` ensuring `owner_id` is injected into insert queries
- Updated dependencies
[[`a549838`](https://github.com/Urigo/accounter-fullstack/commit/a549838ec8d2b909dadb73115171949065b6e842),
[`9d7b4ff`](https://github.com/Urigo/accounter-fullstack/commit/9d7b4ff93bcbd19146aca8a6957625632ad1a53d),
[`3a2b7a9`](https://github.com/Urigo/accounter-fullstack/commit/3a2b7a94e595b68b11ae324da99ac833359df0c8),
[`886c168`](https://github.com/Urigo/accounter-fullstack/commit/886c1689697d5f770d2bd043d2fd7cc1012c4f4a),
[`f899b37`](https://github.com/Urigo/accounter-fullstack/commit/f899b37a1561ef168398d122f214d9802178707d),
[`ea402d9`](https://github.com/Urigo/accounter-fullstack/commit/ea402d9b473152e6e6822dcf4366b291b5f0ddf6),
[`9a2a475`](https://github.com/Urigo/accounter-fullstack/commit/9a2a475b70132c9934ed9b2294e581e3449750ca),
[`2a8a770`](https://github.com/Urigo/accounter-fullstack/commit/2a8a770021e4f8da3ead4e0346f4f0e65ad569c2),
[`233be0b`](https://github.com/Urigo/accounter-fullstack/commit/233be0b01cd0eded279573b42219112bc2083d3f),
[`0be1ce2`](https://github.com/Urigo/accounter-fullstack/commit/0be1ce2377dad3e3585bf0d6fb703fc18d5c605d),
[`0e724c3`](https://github.com/Urigo/accounter-fullstack/commit/0e724c318b801b9ec616732cc1391da8915946c6),
[`b28d745`](https://github.com/Urigo/accounter-fullstack/commit/b28d745456f135d952437ca5ad7056f6188aae33),
[`34d4c12`](https://github.com/Urigo/accounter-fullstack/commit/34d4c126f017b92d02b56de4b473f3075baa1996),
[`b4555eb`](https://github.com/Urigo/accounter-fullstack/commit/b4555eb3a98e92681046c545669f961ee7eade7d),
[`1e66aa0`](https://github.com/Urigo/accounter-fullstack/commit/1e66aa03f07f64656399d48ff76460200905fa65),
[`99659b9`](https://github.com/Urigo/accounter-fullstack/commit/99659b96fee622f019e86d2c4d05a2ff34f6e89c),
[`054e1c1`](https://github.com/Urigo/accounter-fullstack/commit/054e1c13515635c0f0c3666cdaacdf80cd9b5a8d),
[`8293aa9`](https://github.com/Urigo/accounter-fullstack/commit/8293aa9eec6df08105b42b063d7f903bcd6f2b67),
[`76eec71`](https://github.com/Urigo/accounter-fullstack/commit/76eec7195a0b05d3d0e020d36df5fe5bdc716ad3),
[`29c8c4f`](https://github.com/Urigo/accounter-fullstack/commit/29c8c4f5e66493a8499e95b6188ec572a2585bd4),
[`d382eb2`](https://github.com/Urigo/accounter-fullstack/commit/d382eb20cf27b76ef80d235080bead1ba66b1e77),
[`d382eb2`](https://github.com/Urigo/accounter-fullstack/commit/d382eb20cf27b76ef80d235080bead1ba66b1e77)]:
- @accounter/green-invoice-graphql@0.8.7-alpha-20260819194013-dcbb6aebad214e81bc64f34f6babc7ffeac3cc21
- @accounter/shaam-uniform-format-generator@0.2.7-alpha-20260819194013-dcbb6aebad214e81bc64f34f6babc7ffeac3cc21
- @accounter/shaam6111-generator@0.1.9-alpha-20260819194013-dcbb6aebad214e81bc64f34f6babc7ffeac3cc21
## 0.1.0
### Minor Changes
- [#3743](https://github.com/Urigo/accounter-fullstack/pull/3743)
[`7cc5c7d`](https://github.com/Urigo/accounter-fullstack/commit/7cc5c7d10015fafec12c3c3fe1e8c6d4d04b19c9)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Email ingestion v2 — document bytes
transport & persistence (Workstream D).
The gateway now inlines each treated document's bytes (base64, Option B) into the `ingestEmail`
mutation, and the server ingest step persists them: under the grant tenant's RLS context it
uploads each document to Cloudinary, creates a charge, and inserts the documents — attributed to
the recognized issuing business (read back from the grant's `business_id`, never trusted from
gateway input) as the document counterparty, with the legacy per-document hash dedup skip.
Documents are stored as `UNPROCESSED` (classification/OCR happens later via the normal flow).
Because the gateway control-plane caller has no auth session, persistence uses inline,
tenant-pinned SQL rather than the auth-coupled `DocumentsProvider` / `ChargesProvider` /
`getDocumentFromFile` (the same constraint behind the existing idempotency/dedup/quarantine
writes). Metadata-only ingest calls (no inline bytes) remain a no-op for persistence.
### Patch Changes
- [#3276](https://github.com/Urigo/accounter-fullstack/pull/3276)
[`6edc9b2`](https://github.com/Urigo/accounter-fullstack/commit/6edc9b27187a9b891b58ae08abdbddff9dcb1fde)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.21.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.21.0)
(from `3.18.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.21.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.21.0) (from `5.18.1`,
in `dependencies`)
- [#3277](https://github.com/Urigo/accounter-fullstack/pull/3277)
[`a584921`](https://github.com/Urigo/accounter-fullstack/commit/a58492135ab1cac146b0a04885bc968b5c5579e8)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv@17.4.1` ↗︎](https://www.npmjs.com/package/dotenv/v/17.4.1) (from
`17.3.1`, in `dependencies`)
- [#3281](https://github.com/Urigo/accounter-fullstack/pull/3281)
[`917f31e`](https://github.com/Urigo/accounter-fullstack/commit/917f31e956d267704f6d74fb7f3a22d366062135)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.66` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.66) (from
`3.0.64`, in `dependencies`)
- Updated dependency [`ai@6.0.146` ↗︎](https://www.npmjs.com/package/ai/v/6.0.146) (from `6.0.141`,
in `dependencies`)
- Updated dependency [`playwright@1.59.1` ↗︎](https://www.npmjs.com/package/playwright/v/1.59.1)
(from `1.59.0`, in `dependencies`)
- [`623ed2b`](https://github.com/Urigo/accounter-fullstack/commit/623ed2b39788764e206241a9c3a628dfec25889e)
Thanks [@renovate[bot]](https://github.com/renovate%5Bbot%5D)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.68` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.68) (from
`3.0.66`, in `dependencies`)
- Updated dependency
[`@graphql-tools/utils@11.0.1` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.0.1)
(from `11.0.0`, in `dependencies`)
- Updated dependency [`ai@6.0.154` ↗︎](https://www.npmjs.com/package/ai/v/6.0.154) (from `6.0.146`,
in `dependencies`)
- [`82f07c2`](https://github.com/Urigo/accounter-fullstack/commit/82f07c25cd88fbcef8d29ef3d32230cfce168caa)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.21.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.21.0)
(from `3.18.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.21.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.21.0) (from `5.18.1`,
in `dependencies`)
- [`49651b7`](https://github.com/Urigo/accounter-fullstack/commit/49651b79e6b2cd8b1c01d4c10d12f3be43859d99)
Thanks [@renovate[bot]](https://github.com/renovate%5Bbot%5D)! - dependencies updates:
- Updated dependency [`auth0@5.6.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.6.0) (from `5.5.0`,
in `dependencies`)
- [#3309](https://github.com/Urigo/accounter-fullstack/pull/3309)
[`7b2c89c`](https://github.com/Urigo/accounter-fullstack/commit/7b2c89c6b655a4f8337d202aecefc688ec99af14)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.69` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.69) (from
`3.0.68`, in `dependencies`)
- Updated dependency [`ai@6.0.158` ↗︎](https://www.npmjs.com/package/ai/v/6.0.158) (from `6.0.154`,
in `dependencies`)
- Updated dependency [`dotenv@17.4.2` ↗︎](https://www.npmjs.com/package/dotenv/v/17.4.2) (from
`17.4.1`, in `dependencies`)
- [#3331](https://github.com/Urigo/accounter-fullstack/pull/3331)
[`28718a0`](https://github.com/Urigo/accounter-fullstack/commit/28718a0a0985ebb2a12c6c6dce8301285d420858)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.69` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.69) (from
`3.0.68`, in `dependencies`)
- Updated dependency [`ai@6.0.158` ↗︎](https://www.npmjs.com/package/ai/v/6.0.158) (from `6.0.154`,
in `dependencies`)
- Updated dependency [`dotenv@17.4.2` ↗︎](https://www.npmjs.com/package/dotenv/v/17.4.2) (from
`17.4.1`, in `dependencies`)
- [#3333](https://github.com/Urigo/accounter-fullstack/pull/3333)
[`a5e6d19`](https://github.com/Urigo/accounter-fullstack/commit/a5e6d19bf96173dde9097985a8df0065b9c3e499)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.71` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.71) (from
`3.0.69`, in `dependencies`)
- Updated dependency [`ai@6.0.168` ↗︎](https://www.npmjs.com/package/ai/v/6.0.168) (from `6.0.158`,
in `dependencies`)
- [#3355](https://github.com/Urigo/accounter-fullstack/pull/3355)
[`e4eaa04`](https://github.com/Urigo/accounter-fullstack/commit/e4eaa04de797962d545890b92a84bb9b76acf5bf)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.7.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.7.0) (from `5.6.0`,
in `dependencies`)
- [#3356](https://github.com/Urigo/accounter-fullstack/pull/3356)
[`87afe7a`](https://github.com/Urigo/accounter-fullstack/commit/87afe7a48b76506079e792f492618d53bb6c36fa)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.215.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.215.0)
(from `0.214.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/resources@2.7.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.7.0)
(from `2.6.1`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.215.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.215.0)
(from `0.214.0`, in `dependencies`)
- [#3357](https://github.com/Urigo/accounter-fullstack/pull/3357)
[`f1c33df`](https://github.com/Urigo/accounter-fullstack/commit/f1c33df3dee170eefa5f8b6c3c15f5ae0e1d1705)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.73.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.73.0)
(from `0.72.0`, in `dependencies`)
- [#3387](https://github.com/Urigo/accounter-fullstack/pull/3387)
[`46f9fc5`](https://github.com/Urigo/accounter-fullstack/commit/46f9fc5592590a765770592efab440a0374e9bde)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.8.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.8.0) (from `5.7.0`,
in `dependencies`)
- [#3399](https://github.com/Urigo/accounter-fullstack/pull/3399)
[`2310fd3`](https://github.com/Urigo/accounter-fullstack/commit/2310fd3f4737e939491b095457267389625b1d35)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-tools/utils@11.1.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.1.0)
(from `11.0.1`, in `dependencies`)
- [#3406](https://github.com/Urigo/accounter-fullstack/pull/3406)
[`40cbee3`](https://github.com/Urigo/accounter-fullstack/commit/40cbee3b08a16be72e526d3f001d1f2dee3d5dd0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.10.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.10.0)
(from `2.9.0`, in `dependencies`)
- [#3421](https://github.com/Urigo/accounter-fullstack/pull/3421)
[`85390ee`](https://github.com/Urigo/accounter-fullstack/commit/85390ee74f9f84247d572150236acdf95a378740)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`jose@6.2.3` ↗︎](https://www.npmjs.com/package/jose/v/6.2.3) (from `6.2.2`,
in `dependencies`)
- [#3434](https://github.com/Urigo/accounter-fullstack/pull/3434)
[`42e1646`](https://github.com/Urigo/accounter-fullstack/commit/42e1646407fd0c620d4558244770daeb920dc36c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.72` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.72) (from
`3.0.71`, in `dependencies`)
- Updated dependency [`ai@6.0.169` ↗︎](https://www.npmjs.com/package/ai/v/6.0.169) (from `6.0.168`,
in `dependencies`)
- [#3437](https://github.com/Urigo/accounter-fullstack/pull/3437)
[`7e7c2aa`](https://github.com/Urigo/accounter-fullstack/commit/7e7c2aa5d2154b06962a1efa984c3941fc621d66)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.74.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.74.0)
(from `0.73.0`, in `dependencies`)
- [#3438](https://github.com/Urigo/accounter-fullstack/pull/3438)
[`632c726`](https://github.com/Urigo/accounter-fullstack/commit/632c7265ef63af3a41fab9d96d2b256ba733aa9d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.216.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.216.0)
(from `0.215.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.216.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.216.0)
(from `0.215.0`, in `dependencies`)
- [#3440](https://github.com/Urigo/accounter-fullstack/pull/3440)
[`1ad8a10`](https://github.com/Urigo/accounter-fullstack/commit/1ad8a10f3dd92b38c04ccea15b90cc7f9dc43887)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.4.2` ↗︎](https://www.npmjs.com/package/zod/v/4.4.2) (from `4.3.6`, in
`dependencies`)
- [#3441](https://github.com/Urigo/accounter-fullstack/pull/3441)
[`2f426cb`](https://github.com/Urigo/accounter-fullstack/commit/2f426cb804fc51c05a06a1e4b6a38bb11a71981f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.9.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.9.0) (from `5.8.0`,
in `dependencies`)
- [#3454](https://github.com/Urigo/accounter-fullstack/pull/3454)
[`0b654ef`](https://github.com/Urigo/accounter-fullstack/commit/0b654ef08495e1632ccc75942d6a1a3142924d9f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.75` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.75) (from
`3.0.72`, in `dependencies`)
- Updated dependency
[`@opentelemetry/resources@2.7.1` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.7.1)
(from `2.7.0`, in `dependencies`)
- Updated dependency [`ai@6.0.175` ↗︎](https://www.npmjs.com/package/ai/v/6.0.175) (from `6.0.169`,
in `dependencies`)
- Updated dependency [`auth0@5.9.1` ↗︎](https://www.npmjs.com/package/auth0/v/5.9.1) (from `5.9.0`,
in `dependencies`)
- Updated dependency [`zod@4.4.3` ↗︎](https://www.npmjs.com/package/zod/v/4.4.3) (from `4.4.2`, in
`dependencies`)
- [#3478](https://github.com/Urigo/accounter-fullstack/pull/3478)
[`8425d70`](https://github.com/Urigo/accounter-fullstack/commit/8425d70751f1abbbd1195d45fc1ee86ee2f7a49a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.75.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.75.0)
(from `0.74.0`, in `dependencies`)
- [#3479](https://github.com/Urigo/accounter-fullstack/pull/3479)
[`1bf66e2`](https://github.com/Urigo/accounter-fullstack/commit/1bf66e264e8ea2d3c1b75cab8097dc583205cf67)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`graphql@16.14.0` ↗︎](https://www.npmjs.com/package/graphql/v/16.14.0) (from
`16.13.2`, in `dependencies`)
- [#3480](https://github.com/Urigo/accounter-fullstack/pull/3480)
[`3c07e11`](https://github.com/Urigo/accounter-fullstack/commit/3c07e11ca246b78f66d23a9f588e38f4190d44ff)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.217.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.217.0)
(from `0.216.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.217.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.217.0)
(from `0.216.0`, in `dependencies`)
- [#3503](https://github.com/Urigo/accounter-fullstack/pull/3503)
[`dab1752`](https://github.com/Urigo/accounter-fullstack/commit/dab17529ee68305203d59d8a195763191baea3d5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.76` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.76) (from
`3.0.75`, in `dependencies`)
- Updated dependency [`ai@6.0.177` ↗︎](https://www.npmjs.com/package/ai/v/6.0.177) (from `6.0.175`,
in `dependencies`)
- [#3506](https://github.com/Urigo/accounter-fullstack/pull/3506)
[`b68dc3a`](https://github.com/Urigo/accounter-fullstack/commit/b68dc3ab5b3653de616077734ffa6ae9401d4307)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.76` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.76) (from
`3.0.75`, in `dependencies`)
- Updated dependency [`ai@6.0.177` ↗︎](https://www.npmjs.com/package/ai/v/6.0.177) (from `6.0.175`,
in `dependencies`)
- [#3523](https://github.com/Urigo/accounter-fullstack/pull/3523)
[`0766292`](https://github.com/Urigo/accounter-fullstack/commit/076629232304ce0849cbe7ed482490f4fb7142d3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`playwright@1.60.0` ↗︎](https://www.npmjs.com/package/playwright/v/1.60.0)
(from `1.59.1`, in `dependencies`)
- [#3529](https://github.com/Urigo/accounter-fullstack/pull/3529)
[`c5fa247`](https://github.com/Urigo/accounter-fullstack/commit/c5fa2473b65541be39353e33f981fb6421bb2067)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.218.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.218.0)
(from `0.217.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.218.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.218.0)
(from `0.217.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/semantic-conventions@1.41.1` ↗︎](https://www.npmjs.com/package/@opentelemetry/semantic-conventions/v/1.41.1)
(from `1.40.0`, in `dependencies`)
- [#3533](https://github.com/Urigo/accounter-fullstack/pull/3533)
[`26e9fe8`](https://github.com/Urigo/accounter-fullstack/commit/26e9fe8afc31b5b2c01e7248a8cf665e4c541ef8)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.10.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.10.0) (from
`5.9.1`, in `dependencies`)
- [#3534](https://github.com/Urigo/accounter-fullstack/pull/3534)
[`54c0e4b`](https://github.com/Urigo/accounter-fullstack/commit/54c0e4b840e1efea5744647745a1b031cfa0f5de)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.77` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.77) (from
`3.0.76`, in `dependencies`)
- Updated dependency [`ai@6.0.180` ↗︎](https://www.npmjs.com/package/ai/v/6.0.180) (from `6.0.177`,
in `dependencies`)
- [#3535](https://github.com/Urigo/accounter-fullstack/pull/3535)
[`e5bd5da`](https://github.com/Urigo/accounter-fullstack/commit/e5bd5da7521a7b114f383334433d61ea5b552d52)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.76.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.76.0)
(from `0.75.0`, in `dependencies`)
- [#3536](https://github.com/Urigo/accounter-fullstack/pull/3536)
[`c4ea865`](https://github.com/Urigo/accounter-fullstack/commit/c4ea865b58cf1d25c32aca53f71b69cff0252504)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.78` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.78) (from
`3.0.77`, in `dependencies`)
- Updated dependency [`ai@6.0.184` ↗︎](https://www.npmjs.com/package/ai/v/6.0.184) (from `6.0.180`,
in `dependencies`)
- [#3548](https://github.com/Urigo/accounter-fullstack/pull/3548)
[`c6555f5`](https://github.com/Urigo/accounter-fullstack/commit/c6555f5d6a731b05f26ae58a47c485a905e4ec55)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@4.2.1` ↗︎](https://www.npmjs.com/package/date-fns/v/4.2.1) (from
`4.1.0`, in `dependencies`)
- [#3549](https://github.com/Urigo/accounter-fullstack/pull/3549)
[`53a4629`](https://github.com/Urigo/accounter-fullstack/commit/53a4629c4cd2ce346f4a8740117994f3f0913981)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.21.0` ↗︎](https://www.npmjs.com/package/pg/v/8.21.0) (from `8.20.0`, in
`dependencies`)
- [#3551](https://github.com/Urigo/accounter-fullstack/pull/3551)
[`9d9ce57`](https://github.com/Urigo/accounter-fullstack/commit/9d9ce57f4058c0d66b8c1ea383030a57692fe607)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@4.2.1` ↗︎](https://www.npmjs.com/package/date-fns/v/4.2.1) (from
`4.1.0`, in `dependencies`)
- Updated dependency [`pg@8.21.0` ↗︎](https://www.npmjs.com/package/pg/v/8.21.0) (from `8.20.0`, in
`dependencies`)
- [#3553](https://github.com/Urigo/accounter-fullstack/pull/3553)
[`ae5aa31`](https://github.com/Urigo/accounter-fullstack/commit/ae5aa311e4beb3d5b9ded7a0c0fadaf00b796e2e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.79` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.79) (from
`3.0.78`, in `dependencies`)
- Updated dependency [`ai@6.0.191` ↗︎](https://www.npmjs.com/package/ai/v/6.0.191) (from `6.0.184`,
in `dependencies`)
- [#3555](https://github.com/Urigo/accounter-fullstack/pull/3555)
[`ab8788f`](https://github.com/Urigo/accounter-fullstack/commit/ab8788f53772712f092e2d0407db9e97ab7c8d93)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@172.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/172.0.0)
(from `171.4.0`, in `dependencies`)
- [#3559](https://github.com/Urigo/accounter-fullstack/pull/3559)
[`43b3575`](https://github.com/Urigo/accounter-fullstack/commit/43b3575f981c01e3caafc7170cb30358ed227c3b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@4.3.0` ↗︎](https://www.npmjs.com/package/date-fns/v/4.3.0) (from
`4.2.1`, in `dependencies`)
- [#3597](https://github.com/Urigo/accounter-fullstack/pull/3597)
[`6f771a1`](https://github.com/Urigo/accounter-fullstack/commit/6f771a1b9cb28b7ad9e7d474c7e8c3d8d11b4c76)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`graphql-modules@3.1.2` ↗︎](https://www.npmjs.com/package/graphql-modules/v/3.1.2) (from
`3.1.1`, in `dependencies`)
- [#3599](https://github.com/Urigo/accounter-fullstack/pull/3599)
[`4405b3a`](https://github.com/Urigo/accounter-fullstack/commit/4405b3abf883827c5580131abdeba32552d82196)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`iconv-lite@0.7.2` ↗︎](https://www.npmjs.com/package/iconv-lite/v/0.7.2) (to
`dependencies`)
- [#3602](https://github.com/Urigo/accounter-fullstack/pull/3602)
[`d7bf0d0`](https://github.com/Urigo/accounter-fullstack/commit/d7bf0d0ffcf090a9cddb0e72b8c341fc4481ba0a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.11.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.11.0) (from
`5.10.0`, in `dependencies`)
- [#3603](https://github.com/Urigo/accounter-fullstack/pull/3603)
[`cca7787`](https://github.com/Urigo/accounter-fullstack/commit/cca778797ff2252e52bf9dcf0777e2d385ac68d3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@4.4.0` ↗︎](https://www.npmjs.com/package/date-fns/v/4.4.0) (from
`4.3.0`, in `dependencies`)
- [#3607](https://github.com/Urigo/accounter-fullstack/pull/3607)
[`6da07f4`](https://github.com/Urigo/accounter-fullstack/commit/6da07f4608d42de0883cd868595db4f36ec9dcff)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@173.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/173.0.0)
(from `172.0.0`, in `dependencies`)
- [#3613](https://github.com/Urigo/accounter-fullstack/pull/3613)
[`7397aad`](https://github.com/Urigo/accounter-fullstack/commit/7397aad6a9bf7d120218e6a8274a539eb1e76160)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.81` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.81) (from
`3.0.79`, in `dependencies`)
- Updated dependency [`ai@6.0.196` ↗︎](https://www.npmjs.com/package/ai/v/6.0.196) (from `6.0.191`,
in `dependencies`)
- Updated dependency [`graphql@16.14.1` ↗︎](https://www.npmjs.com/package/graphql/v/16.14.1) (from
`16.14.0`, in `dependencies`)
- [#3622](https://github.com/Urigo/accounter-fullstack/pull/3622)
[`727b0c5`](https://github.com/Urigo/accounter-fullstack/commit/727b0c5ad0bdf367ded4679732e9e824eff29957)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.21.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.21.1)
(from `3.21.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.21.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.21.1) (from `5.21.0`,
in `dependencies`)
- [#3631](https://github.com/Urigo/accounter-fullstack/pull/3631)
[`41dca35`](https://github.com/Urigo/accounter-fullstack/commit/41dca350ddec11ae86fa82735ca3d1de0387f119)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@google-cloud/pubsub@5.3.1` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/5.3.1)
(from `5.3.0`, in `dependencies`)
- Updated dependency [`ai@6.0.197` ↗︎](https://www.npmjs.com/package/ai/v/6.0.197) (from `6.0.196`,
in `dependencies`)
- [#3652](https://github.com/Urigo/accounter-fullstack/pull/3652)
[`73620a0`](https://github.com/Urigo/accounter-fullstack/commit/73620a012315439962fb2e161143b08db1d6dba0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.21.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.21.2)
(from `3.21.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.21.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.21.2) (from `5.21.1`,
in `dependencies`)
- [#3654](https://github.com/Urigo/accounter-fullstack/pull/3654)
[`86b253d`](https://github.com/Urigo/accounter-fullstack/commit/86b253d5c2164b3c255cde626f8861fb5c5717b8)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.198` ↗︎](https://www.npmjs.com/package/ai/v/6.0.198) (from `6.0.197`,
in `dependencies`)
- [#3662](https://github.com/Urigo/accounter-fullstack/pull/3662)
[`ba2ac1a`](https://github.com/Urigo/accounter-fullstack/commit/ba2ac1a6aae3bb17d8d28e37ef496367c8959481)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.82` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.82) (from
`3.0.81`, in `dependencies`)
- Updated dependency [`ai@6.0.199` ↗︎](https://www.npmjs.com/package/ai/v/6.0.199) (from `6.0.198`,
in `dependencies`)
- Updated dependency [`graphql@16.14.2` ↗︎](https://www.npmjs.com/package/graphql/v/16.14.2) (from
`16.14.1`, in `dependencies`)
- [#3683](https://github.com/Urigo/accounter-fullstack/pull/3683)
[`a19aa30`](https://github.com/Urigo/accounter-fullstack/commit/a19aa3051d2971210a0cc37af71d3db6e3904c0a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.84` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.84) (from
`3.0.82`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.48.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.48.1) (from
`0.48.0`, in `dependencies`)
- Updated dependency [`ai@6.0.205` ↗︎](https://www.npmjs.com/package/ai/v/6.0.205) (from `6.0.199`,
in `dependencies`)
- [#3686](https://github.com/Urigo/accounter-fullstack/pull/3686)
[`d3ee089`](https://github.com/Urigo/accounter-fullstack/commit/d3ee089369df5ec84e858caedcfc218f2425fc05)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.12.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.12.0) (from
`5.11.0`, in `dependencies`)
- [#3698](https://github.com/Urigo/accounter-fullstack/pull/3698)
[`2df2d72`](https://github.com/Urigo/accounter-fullstack/commit/2df2d7242ec7d671ad7b90735caf1b1ff670631c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/exporter-trace-otlp-http@0.219.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.219.0)
(from `0.218.0`, in `dependencies`)
- Updated dependency
[`@opentelemetry/resources@2.8.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.8.0)
(from `2.7.1`, in `dependencies`)
- Updated dependency
[`@opentelemetry/sdk-node@0.219.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.219.0)
(from `0.218.0`, in `dependencies`)
- [#3699](https://github.com/Urigo/accounter-fullstack/pull/3699)
[`fed5553`](https://github.com/Urigo/accounter-fullstack/commit/fed5553c11d9b2ba8cc2f2f54010589bf959a6dd)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@opentelemetry/auto-instrumentations-node@0.77.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.77.0)
(from `0.76.0`, in `dependencies`)
- [#3703](https://github.com/Urigo/accounter-fullstack/pull/3703)
[`fb74946`](https://github.com/Urigo/accounter-fullstack/commit/fb7494648b7e0a73d72e802c4dbff791e3583767)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`playwright@1.61.0` ↗︎](https://www.npmjs.com/package/playwright/v/1.61.0)
(from `1.60.0`, in `dependencies`)
- [#3705](https://github.com/Urigo/accounter-fullstack/pull/3705)
[`ede5450`](https://github.com/Urigo/accounter-fullstack/commit/ede5450e183c15b058af595030aeed0e2e7565bd)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.206` ↗︎](https://www.npmjs.com/package/ai/v/6.0.206) (from `6.0.205`,
in `dependencies`)
- [#3720](https://github.com/Urigo/accounter-fullstack/pull/3720)
[`452d0ed`](https://github.com/Urigo/accounter-fullstack/commit/452d0ede302ac26f9aad5d76afc53e72d6d99977)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.85` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.85) (from
`3.0.84`, in `dependencies`)
- Updated dependency [`ai@6.0.208` ↗︎](https://www.npmjs.com/package/ai/v/6.0.208) (from `6.0.206`,
in `dependencies`)
- [#3737](https://github.com/Urigo/accounter-fullstack/pull/3737)
[`c1618a5`](https://github.com/Urigo/accounter-fullstack/commit/c1618a506e72e0dcffb01e6168d9eecd8c817bc7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.22.0` ↗︎](https://www.npmjs.com/package/pg/v/8.22.0) (from `8.21.0`, in
`dependencies`)
- [#3599](https://github.com/Urigo/accounter-fullstack/pull/3599)
[`4405b3a`](https://github.com/Urigo/accounter-fullstack/commit/4405b3abf883827c5580131abdeba32552d82196)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New SHAAM File Import Feature**:
Introduced a new `importShaamFile` resolver and `ShaamImportProvider` to facilitate onboarding by
importing SHAAM uniform-format files.
- **Encoding Support**: Added `iconv-lite` to handle Windows-1255 encoding, ensuring correct
processing of legacy SHAAM file formats.
- **Database Enhancements**: Updated `BusinessesProvider`, `FinancialEntitiesProvider`, and
`SortCodesProvider` to support transactional inserts with custom `PoolClient` instances.
- [#3616](https://github.com/Urigo/accounter-fullstack/pull/3616)
[`1c90011`](https://github.com/Urigo/accounter-fullstack/commit/1c900116aecf46c79dd45c471ba1082d37fc5a15)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - tracking and displaying maximum dates
(event, debit, and document dates) alongside minimum dates across charges, ledger records, and
transactions. It updates the GraphQL schema, helper functions, and the frontend DateCell component
to display date ranges when they differ.
- [#3608](https://github.com/Urigo/accounter-fullstack/pull/3608)
[`0c07b61`](https://github.com/Urigo/accounter-fullstack/commit/0c07b61aa16ed7f69d578301f61e1183d12f5383)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Migrations and backend updates to support
Otsar Hahayal bank accounts and credit cards within the user context
- [#3532](https://github.com/Urigo/accounter-fullstack/pull/3532)
[`2aaf98f`](https://github.com/Urigo/accounter-fullstack/commit/2aaf98f3ae68b26f367e179d99447c5ce04fd67f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Add per-tenant provider credentials system
with encrypted storage. Includes a new `provider_credentials` database table, AES-256-GCM
encryption helpers, payload schemas for credential types, a `ProviderCredentialsProvider` with
full CRUD operations, and a GraphQL module exposing queries and mutations for managing provider
credentials per tenant.
- [#3324](https://github.com/Urigo/accounter-fullstack/pull/3324)
[`c83b2b8`](https://github.com/Urigo/accounter-fullstack/commit/c83b2b83326b8bedd10070ced91c2aa271ef4b0d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Update**: Added an
`is_locked` column to the `dynamic_report_templates` table to support template locking
functionality.
- **New Annual Audit Step**: Implemented Step 09 in the annual audit flow, allowing users to
select and lock a final dynamic report template for a specific fiscal year.
- **Template Management**: Added new mutations and provider methods to lock and unlock dynamic
report templates, with logic to prevent modification of locked templates.
- **Audit Status Tracking**: Enhanced the `annual_audit_step_status` table to include an
`evidence_json` field for storing step-specific metadata, such as the locked template name.
- [#3691](https://github.com/Urigo/accounter-fullstack/pull/3691)
[`cfe4575`](https://github.com/Urigo/accounter-fullstack/commit/cfe4575d249a35b8c9929b1976d1eb320d05658b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Backend Schema & Logic**: Extended the
GraphQL schema to support `listBusinessUsers`, `listInvitations`, `removeBusinessUser`, and
`revokeInvitation`. Implemented corresponding providers and resolvers with strict tenant-based
scoping and RBAC enforcement.
- **Security & Reliability**: Added comprehensive audit logging for sensitive actions, implemented
tenant-isolation guards in database queries, and ensured robust error handling for API
interactions.
- [#3743](https://github.com/Urigo/accounter-fullstack/pull/3743)
[`7cc5c7d`](https://github.com/Urigo/accounter-fullstack/commit/7cc5c7d10015fafec12c3c3fe1e8c6d4d04b19c9)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Recognize the issuing business in the v2
email-ingestion control step: the `requestIngestControl` flow now resolves the provider business
from gateway-supplied sender evidence under the tenant's RLS context, loads its email-listener
config, and binds the recognized business into the ingest grant (new nullable
`email_ingestion_grants.business_id` column) so downstream stages can attribute documents without
trusting gateway input. Adds `IngestControlInput.senderEvidence` and
`IngestControlDecision.businessEmailConfig` to the schema.
- [#3596](https://github.com/Urigo/accounter-fullstack/pull/3596)
[`afcb4fb`](https://github.com/Urigo/accounter-fullstack/commit/afcb4fb58c9ffd614b3d442b40ac0aa5463027df)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Charge Type Filtering**: Added a new
multi-select filter that allows users to filter charges by their specific concrete type (e.g.,
SalaryCharge, ConversionCharge) instead of just income/expense.
- **Business Trip Filtering**: Introduced a searchable multi-select filter to narrow down charges
associated with specific business trips.
- **Missing Counterparty Detection**: Added a toggle to identify charges with missing counterparty
information, specifically targeting transactions without a business or documents missing
creditor/debtor details.
- [#3765](https://github.com/Urigo/accounter-fullstack/pull/3765)
[`9329f5e`](https://github.com/Urigo/accounter-fullstack/commit/9329f5e8255c74cbec3d425c7000bbf479ee8ac3)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **OCR at ingest time**:
`prepareDocuments` now calls `getOcrData` to classify documents via Anthropic, matching the legacy
upload path.
- **Remarks override**: Email ingestion documents now override the OCR-derived remarks with an
email identifier (`email-ingestion: {messageId}`), consistent with the legacy resolver.
- **Test coverage**: Updated tests to mock `AnthropicProvider.extractInvoiceDetails` and verify
that documents are classified (INVOICE) rather than UNPROCESSED, and that the recognized
business is attributed as the creditor.
- [#3599](https://github.com/Urigo/accounter-fullstack/pull/3599)
[`4405b3a`](https://github.com/Urigo/accounter-fullstack/commit/4405b3abf883827c5580131abdeba32552d82196)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Encoding Support**: Added `iconv-lite`
to handle Windows-1255 encoding, ensuring correct processing of legacy SHAAM file formats.
- [#3651](https://github.com/Urigo/accounter-fullstack/pull/3651)
[`d4b5bb5`](https://github.com/Urigo/accounter-fullstack/commit/d4b5bb5a7c969c4112720b0e772dd988e46d8e98)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Multi-tenant Email Ingestion
Architecture**: Implemented a new v2 email ingestion pipeline routing inbound mail through
Cloudflare Email to a private Gateway, with authoritative tenant resolution and data persistence
handled by the Server.
- **Security and Authenticity**: Added cryptographic authenticity verification (HMAC-SHA256) for
Cloudflare-to-Gateway requests, alongside nonce-based replay protection and IP allowlisting.
- **Tenant Isolation and RLS**: Hardened server-side ingestion writes by pinning transactions to
the grant-validated tenant's RLS context, ensuring that `tenant_isolation` policies are enforced
as defense-in-depth.
- **Greenfield Gateway Service**: Scaffolded a new, independent `packages/email-ingestion-gateway`
service that avoids runtime coupling with the legacy `gmail-listener` package.
- **Server Module Migration**: Renamed shared ingestion logic to the `email-ingestion` module and
established a backward-compatible shim for the legacy listener.
- [#3330](https://github.com/Urigo/accounter-fullstack/pull/3330)
[`6557915`](https://github.com/Urigo/accounter-fullstack/commit/6557915a9be166ab3959525adfcfe75c90ccf1b7)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Annual Audit Steps**: Implemented
Step 10 (Export Trial Balance) and Step 11 (Depreciation Report) into the annual audit workflow.
- **Shared Logic Abstraction**: Introduced a reusable hook `useSetAnnualAuditStepStatus` to
centralize status update logic and added utility functions for depreciation report filters.
- **Enhanced Reporting**: Added PDF printing capabilities to the depreciation report and updated
routing to support dynamic filter parameters.
- [#3591](https://github.com/Urigo/accounter-fullstack/pull/3591)
[`c4fabc7`](https://github.com/Urigo/accounter-fullstack/commit/c4fabc77f760bb222fd560e05254a1b0dc1bd3a9)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Multi-Business Tenancy Foundation**:
Implemented a foundational shift from a single-business model to a request-level business scope
model, enabling multi-business reads while maintaining strict single-business write targeting.
- **Auth Context & Scope Resolution**: Updated authentication providers to resolve all user
memberships and introduced a `ScopeProvider` to handle read-scope precedence (args ⊆ header ⊆
memberships) and write-target validation.
- **Database RLS Migration**: Added `app.current_business_scope` session variables and updated RLS
policies to support multi-business reads via `ANY` predicates, while keeping write operations
pinned to a single business.
- **GraphQL Contract Hard-Cut**: Replaced the legacy `adminBusinessId` field in `userContext` with
a robust `memberships` and `activeReadScope` structure, requiring a hard-cut migration of
server-side consumers.
- **Module Migrations & Guardrails**: Migrated high-traffic modules (charges, reports, ledger,
salaries) to use the new scope helper and added a repository-wide lint guard to prevent future
regressions to single-business admin context fallbacks.
- [#3527](https://github.com/Urigo/accounter-fullstack/pull/3527)
[`0543dc3`](https://github.com/Urigo/accounter-fullstack/commit/0543dc39d252524120bfb70890e21fc0c191d317)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Super-Admin Infrastructure**:
Introduced a `super_admins` database table and associated RLS policies to manage platform-level
administrative privileges, preventing unauthorized self-promotion.
- **Client Onboarding**: Implemented the `bootstrapNewClient` GraphQL mutation, enabling the
automated, transactional provisioning of new client tenants, including business entities, tax
categories, and user contexts.
- **Security & RLS Enhancements**: Refined Row-Level Security (RLS) policies to support the
bootstrap flow, including a root-level insert policy and read-only access for super-admin
verification.
- **Code Refactoring**: Moved deterministic UUID generation to a shared utility module and
introduced `EntityEnsureProvider` to standardize the creation of financial entities across the
system.
- [#3315](https://github.com/Urigo/accounter-fullstack/pull/3315)
[`6147f4f`](https://github.com/Urigo/accounter-fullstack/commit/6147f4f271db1f76e54185c679a7ca65f0f59f06)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema**: Added a new table
`annual_audit_step_status` to track the status of annual audit steps, including support for notes
and evidence.
- **GraphQL Module**: Introduced a new `annual_audit` GraphQL module to manage audit step
statuses, including queries for fetching statuses and mutations for updating them.
- [#3595](https://github.com/Urigo/accounter-fullstack/pull/3595)
[`ff84f71`](https://github.com/Urigo/accounter-fullstack/commit/ff84f71ad6e3c5e5f002f4d906154a423c0df70b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **Backend Context Resolution**: Updated
the AdminContextProvider to dynamically resolve the owner ID based on the active read scope,
improving support for multi-business environments.
- **User Context Enrichment**: Enhanced the user context resolver to fetch and display business
names for memberships by integrating with the FinancialEntitiesProvider.
- [#3462](https://github.com/Urigo/accounter-fullstack/pull/3462)
[`37ab0a3`](https://github.com/Urigo/accounter-fullstack/commit/37ab0a37e8a8cbe600d19322470a360ea909659f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Scraper Ingestion Module**:
Introduced a new server module to handle scraper data ingestion, including GraphQL resolvers,
providers, and type definitions.
- **Database Migrations**: Added new database migrations to implement unique constraints for
various transaction tables to improve data deduplication.
- **Validation Logic**: Implemented helper functions to validate and map incoming transaction data
from various scrapers before database insertion.
- [#3327](https://github.com/Urigo/accounter-fullstack/pull/3327)
[`9f8c7d3`](https://github.com/Urigo/accounter-fullstack/commit/9f8c7d3e03c40e33ed700ddfcc4536efa07dc895)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Refactoring**:
Introduced a dedicated `bank_deposits` table to centralize deposit information, moving fields like
`account_id` out of the `charges_bank_deposits` junction table.
- **GraphQL API Updates**: Updated GraphQL queries and mutations to support the new
`bank_deposits` structure, including new fields for deposit metadata and improved deposit
creation flows.
- **Enhanced Deposit Management**: Added new hooks and logic to better handle relevant deposits
for charges, including conflict detection and improved assignment workflows.
- [#3317](https://github.com/Urigo/accounter-fullstack/pull/3317)
[`9a2e63f`](https://github.com/Urigo/accounter-fullstack/commit/9a2e63feb0769e4ddc776ec8584031c5fbfcabea)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Opening Balance Step Activation**:
Implemented the logic and UI for the 'Opening Balance' step in the annual audit flow, including
user type classification (New, Migrating, Continuing).
- **Backend Integration**: Added a new GraphQL query to fetch the opening balance status and a
mutation to save accountant approvals for this step.
- **UI Components**: Introduced new UI components, including an 'ApprovalControl' for status
updates and an 'Alert' component for displaying configuration or status information.
- [#3600](https://github.com/Urigo/accounter-fullstack/pull/3600)
[`498dbdd`](https://github.com/Urigo/accounter-fullstack/commit/498dbddfa7ed716da5d4f1e7fb1a980b92600c6d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Write-Target Logic Update**: Updated
the `TenantAwareDBClient` to prioritize a single business ID from the `X-Business-Scope` header as
the write-target, falling back to the primary tenant business only when necessary.
- **Enhanced Integration Testing**: Added a comprehensive integration test suite that validates
RLS enforcement across various membership and scope combinations, ensuring data integrity during
write operations.
- **Test Coverage Improvements**: Expanded unit tests for `TenantAwareDBClient` to cover edge
cases where the primary business ID is absent but a single scoped business is present.
- [#3466](https://github.com/Urigo/accounter-fullstack/pull/3466)
[`249ad87`](https://github.com/Urigo/accounter-fullstack/commit/249ad87809e104c6c0ffc02971f3cee5dac478b1)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Scraper Enhancements**: Updated
currency rate and Poalim scrapers to accept specific date ranges, improving flexibility and data
accuracy.
- **Transaction Ingestion Logic**: Implemented advanced transaction diffing and change detection
for Isracard, Amex, and currency rates to identify updates to existing records rather than just
inserting new ones.
- **Data Type Normalization**: Standardized card identifiers to strings across the ingestion
pipeline and updated GraphQL schemas to reflect these changes.
- [#3545](https://github.com/Urigo/accounter-fullstack/pull/3545)
[`89cd003`](https://github.com/Urigo/accounter-fullstack/commit/89cd003eb5fc0a59184bb9c3518dd81423217c70)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - adds
`updateDeposit(id, name?, openDate?, closeDate?)` GraphQL mutation — merges provided fields with
existing record so omitted fields are preserved. The provider's `updateBankDeposit` method was
already in place; only the schema and resolver were missing.
- [`82f07c2`](https://github.com/Urigo/accounter-fullstack/commit/82f07c25cd88fbcef8d29ef3d32230cfce168caa)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Developer Authentication Bypass**:
Introduced a new development-only authentication mechanism that allows bypassing Auth0. This
enables developers to impersonate seeded demo users by setting specific environment variables and
passing an `X-Dev-Auth` header.
- **Client-Side Integration**: Modified the client application to conditionally use the new dev
authentication flow, affecting how authentication tokens are provided to URQL and how user
context and protected routes are handled. New environment variables (`VITE_DEV_AUTH`,
`VITE_DEV_AUTH_USER_ID`) were added for client-side configuration.
- **Server-Side Authentication Plugin**: Updated the server's authentication plugin to detect and
prioritize the `X-Dev-Auth` header when the `ALLOW_DEV_AUTH` environment variable is enabled. A
new `handleDevBypassAuth` function was implemented to resolve user context based on the provided
user ID from the dev auth header.
- **Enhanced Demo Data Seeding**: The demo data seeding script (`seed-demo-data.ts`) was updated
to automatically seed deterministic demo users (admin and accountant) and print their IDs. This
facilitates easy setup for local development using the new dev authentication bypass.
- **Documentation Update**: The `demo-staging-guide.md` documentation was updated with clear
instructions on how to set up and use the local development authentication bypass, including
environment variable configuration and role switching.
- [#3598](https://github.com/Urigo/accounter-fullstack/pull/3598)
[`df97c5a`](https://github.com/Urigo/accounter-fullstack/commit/df97c5a07c23befddb48404ffc592f68fc70b828)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **Database Schema Update**: Updated the
`sort_codes` table to use a composite primary key of `(key, owner_id)` to prevent multi-tenant ID
collisions.
- **API and Data Loader Refactoring**: Refactored `SortCodesProvider` and associated GraphQL
resolvers to support multi-tenant lookups by `ownerId`, replacing single-key lookups with
composite key loaders.
- [#3629](https://github.com/Urigo/accounter-fullstack/pull/3629)
[`4c184a9`](https://github.com/Urigo/accounter-fullstack/commit/4c184a98a938e1b3e6554a6c233b15863b27fd66)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Bump Node.js runtime to v26.3.0; update
@types/node to 25.9.2 and replace ts-node with tsx for Node 26 ESM loader compatibility.
- [#3554](https://github.com/Urigo/accounter-fullstack/pull/3554)
[`5d1b2a3`](https://github.com/Urigo/accounter-fullstack/commit/5d1b2a373dd76f12186fff325d57d80bfd286fec)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Scraper Implementation**: Added a
comprehensive scraper for Otsar Hahayal, supporting ILS, foreign currency, and credit card
transactions.
- **Database Schema & Migrations**: Introduced new database tables for Otsar Hahayal transactions
and updated the ingestion pipeline with necessary triggers and constraints.
- **Infrastructure Integration**: Integrated the new scraper into the existing system, including
GraphQL mutation updates and UI configuration support.
- [#3693](https://github.com/Urigo/accounter-fullstack/pull/3693)
[`4964253`](https://github.com/Urigo/accounter-fullstack/commit/49642538e56f3982382738aac792cba2803cc46f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Refactors Row-Level Security (RLS) testing
infrastructure by extracting shared role-management utilities into a reusable helper module, and
adds comprehensive integration tests for the read-side (USING clause) of the tenant_isolation
policy.
- [#3311](https://github.com/Urigo/accounter-fullstack/pull/3311)
[`b201e9e`](https://github.com/Urigo/accounter-fullstack/commit/b201e9eae9a6c8be4d3aba338448cffc40403956)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Update**: Added
'date_established' and 'initial_accounter_year' columns to the 'user_context' table via a new
migration.
- **API and Type Updates**: Updated GraphQL type definitions, resolvers, and internal TypeScript
types to include the new business context fields.
- **Testing**: Updated integration tests and context builders to support and verify the new
business date fields.
- [`1388d18`](https://github.com/Urigo/accounter-fullstack/commit/1388d1853c367ea777f79aa2f72970c05a46a2ba)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Claude Code Configuration**: Added
comprehensive configuration for Claude Code, including root instructions, path-scoped rules, and
team-shared settings to ensure consistent behavior across the monorepo.
- **Domain-Specific Skills and Agents**: Implemented custom skills for issue fixing and GraphQL
module management, along with specialized agents for code review and schema analysis to improve
developer productivity.
- **Package-Level Conventions**: Introduced package-specific CLAUDE.md files for server and client
packages to provide targeted guidance on architecture, testing, and development workflows.
- **Slash Commands**: Added slash commands for common tasks like scaffolding new GraphQL modules,
running code generation, and executing module-specific tests.
- [#3385](https://github.com/Urigo/accounter-fullstack/pull/3385)
[`ad314b8`](https://github.com/Urigo/accounter-fullstack/commit/ad314b85a198434e55aa302b09cb3581032e8b7e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Backend Schema Migration**: Updated the
GraphQL schema and Zod validation to use an explicit-node format, replacing legacy hint arrays
with a clear nodeType-based structure.
- **Legacy Template Migration**: Implemented an in-memory migration helper to automatically
convert legacy templates to the new explicit-leaf format upon loading.
- **Tree Data Model**: Refactored the report tree to treat financial entities as explicit leaf
nodes, ensuring consistent state management and single-presence enforcement.
- Updated dependencies
[[`917f31e`](https://github.com/Urigo/accounter-fullstack/commit/917f31e956d267704f6d74fb7f3a22d366062135),
[`623ed2b`](https://github.com/Urigo/accounter-fullstack/commit/623ed2b39788764e206241a9c3a628dfec25889e),
[`a5e6d19`](https://github.com/Urigo/accounter-fullstack/commit/a5e6d19bf96173dde9097985a8df0065b9c3e499),
[`bc2920d`](https://github.com/Urigo/accounter-fullstack/commit/bc2920d07ce3071c37ad8d3e2d733c9d8414e626),
[`0b654ef`](https://github.com/Urigo/accounter-fullstack/commit/0b654ef08495e1632ccc75942d6a1a3142924d9f),
[`1bf66e2`](https://github.com/Urigo/accounter-fullstack/commit/1bf66e264e8ea2d3c1b75cab8097dc583205cf67),
[`7397aad`](https://github.com/Urigo/accounter-fullstack/commit/7397aad6a9bf7d120218e6a8274a539eb1e76160),
[`ba2ac1a`](https://github.com/Urigo/accounter-fullstack/commit/ba2ac1a6aae3bb17d8d28e37ef496367c8959481),
[`a19aa30`](https://github.com/Urigo/accounter-fullstack/commit/a19aa3051d2971210a0cc37af71d3db6e3904c0a),
[`1ad8a10`](https://github.com/Urigo/accounter-fullstack/commit/1ad8a10f3dd92b38c04ccea15b90cc7f9dc43887),
[`0b654ef`](https://github.com/Urigo/accounter-fullstack/commit/0b654ef08495e1632ccc75942d6a1a3142924d9f),
[`1ad8a10`](https://github.com/Urigo/accounter-fullstack/commit/1ad8a10f3dd92b38c04ccea15b90cc7f9dc43887),
[`0b654ef`](https://github.com/Urigo/accounter-fullstack/commit/0b654ef08495e1632ccc75942d6a1a3142924d9f),
[`1ad8a10`](https://github.com/Urigo/accounter-fullstack/commit/1ad8a10f3dd92b38c04ccea15b90cc7f9dc43887),
[`0b654ef`](https://github.com/Urigo/accounter-fullstack/commit/0b654ef08495e1632ccc75942d6a1a3142924d9f),
[`161c8f9`](https://github.com/Urigo/accounter-fullstack/commit/161c8f9a5bc755a488b1a14125c2c14425765e59),
[`4405b3a`](https://github.com/Urigo/accounter-fullstack/commit/4405b3abf883827c5580131abdeba32552d82196),
[`a1b5a9a`](https://github.com/Urigo/accounter-fullstack/commit/a1b5a9ad9ddfab18cc747e1f6c25d8b599aaf56a)]:
- @accounter/green-invoice-graphql@0.8.6
- @accounter/pcn874-generator@0.6.7
- @accounter/shaam-uniform-format-generator@0.2.6
- @accounter/shaam6111-generator@0.1.8
## 0.0.11
### Patch Changes
- [#3034](https://github.com/Urigo/accounter-fullstack/pull/3034)
[`88e8bb9`](https://github.com/Urigo/accounter-fullstack/commit/88e8bb914be1965333e0b899537562c8877782a1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.12` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.12) (from
`1.2.11`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.42.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.42.1) (from
`0.42.0`, in `dependencies`)
- Updated dependency [`zod@3.25.28` ↗︎](https://www.npmjs.com/package/zod/v/3.25.28) (from
`3.25.14`, in `dependencies`)
- [#2954](https://github.com/Urigo/accounter-fullstack/pull/2954)
[`79fef66`](https://github.com/Urigo/accounter-fullstack/commit/79fef668ca7a7f2b2411ae5f5d4d0bdc5bb2fa2b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.23` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.23) (from
`3.0.17`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.47.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.47.1) (from
`0.47.0`, in `dependencies`)
- Updated dependency [`ai@6.0.49` ↗︎](https://www.npmjs.com/package/ai/v/6.0.49) (from `6.0.42`, in
`dependencies`)
- Updated dependency [`zod@4.3.6` ↗︎](https://www.npmjs.com/package/zod/v/4.3.6) (from `4.3.5`, in
`dependencies`)
- [#2962](https://github.com/Urigo/accounter-fullstack/pull/2962)
[`8dca87f`](https://github.com/Urigo/accounter-fullstack/commit/8dca87f957b5cbb1ee3c4683a8e785fa442d44bb)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`playwright@1.58.0` ↗︎](https://www.npmjs.com/package/playwright/v/1.58.0)
(from `1.57.0`, in `dependencies`)
- [#2978](https://github.com/Urigo/accounter-fullstack/pull/2978)
[`8f6d661`](https://github.com/Urigo/accounter-fullstack/commit/8f6d66108bd088388673e7cd53d1c1016d03c762)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.50` ↗︎](https://www.npmjs.com/package/ai/v/6.0.50) (from `6.0.49`, in
`dependencies`)
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.39` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.39) (from
`3.0.36`, in `dependencies`)
- Updated dependency [`ai@6.0.77` ↗︎](https://www.npmjs.com/package/ai/v/6.0.77) (from `6.0.70`, in
`dependencies`)
- Updated dependency [`dotenv@17.2.4` ↗︎](https://www.npmjs.com/package/dotenv/v/17.2.4) (from
`17.2.3`, in `dependencies`)
- Updated dependency [`googleapis@171.4.0` ↗︎](https://www.npmjs.com/package/googleapis/v/171.4.0)
(from `171.3.0`, in `dependencies`)
- Updated dependency [`playwright@1.58.2` ↗︎](https://www.npmjs.com/package/playwright/v/1.58.2)
(from `1.58.1`, in `dependencies`)
- Added dependency [`jose@6.1.3` ↗︎](https://www.npmjs.com/package/jose/v/6.1.3) (to
`dependencies`)
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`jose@6.1.3` ↗︎](https://www.npmjs.com/package/jose/v/6.1.3) (to
`dependencies`)
- [#2988](https://github.com/Urigo/accounter-fullstack/pull/2988)
[`3c2df4f`](https://github.com/Urigo/accounter-fullstack/commit/3c2df4f4cb79ec90fc5cfe372f7cede5e56f27e7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.36` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.36) (from
`3.0.23`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.47.2` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.47.2) (from
`0.47.1`, in `dependencies`)
- Updated dependency [`ai@6.0.69` ↗︎](https://www.npmjs.com/package/ai/v/6.0.69) (from `6.0.50`, in
`dependencies`)
- Updated dependency [`playwright@1.58.1` ↗︎](https://www.npmjs.com/package/playwright/v/1.58.1)
(from `1.58.0`, in `dependencies`)
- [#2989](https://github.com/Urigo/accounter-fullstack/pull/2989)
[`bb647ea`](https://github.com/Urigo/accounter-fullstack/commit/bb647eaa753e23431bc21994f4c4887002530b72)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@171.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/171.0.0)
(from `170.1.0`, in `dependencies`)
- [#2990](https://github.com/Urigo/accounter-fullstack/pull/2990)
[`357ab5a`](https://github.com/Urigo/accounter-fullstack/commit/357ab5ac83c0735c7a8dd1f6963b77cbba84ee29)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.18.0` ↗︎](https://www.npmjs.com/package/pg/v/8.18.0) (from `8.17.2`, in
`dependencies`)
- [#2998](https://github.com/Urigo/accounter-fullstack/pull/2998)
[`11736c9`](https://github.com/Urigo/accounter-fullstack/commit/11736c9dd2b065f4a78da3a31fa5bf3d37f2ad54)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@171.2.0` ↗︎](https://www.npmjs.com/package/googleapis/v/171.2.0)
(from `171.0.0`, in `dependencies`)
- [#2999](https://github.com/Urigo/accounter-fullstack/pull/2999)
[`1f9675e`](https://github.com/Urigo/accounter-fullstack/commit/1f9675e5ae7e516770b7a052a79bbcfcd758b748)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.36` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.36) (from
`3.0.23`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.47.2` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.47.2) (from
`0.47.1`, in `dependencies`)
- Updated dependency [`ai@6.0.69` ↗︎](https://www.npmjs.com/package/ai/v/6.0.69) (from `6.0.50`, in
`dependencies`)
- Updated dependency [`googleapis@171.2.0` ↗︎](https://www.npmjs.com/package/googleapis/v/171.2.0)
(from `171.0.0`, in `dependencies`)
- Updated dependency [`playwright@1.58.1` ↗︎](https://www.npmjs.com/package/playwright/v/1.58.1)
(from `1.58.0`, in `dependencies`)
- [#3004](https://github.com/Urigo/accounter-fullstack/pull/3004)
[`253c49d`](https://github.com/Urigo/accounter-fullstack/commit/253c49d03828a90426386cea5e1a58e080f759f9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.70` ↗︎](https://www.npmjs.com/package/ai/v/6.0.70) (from `6.0.69`, in
`dependencies`)
- [#3007](https://github.com/Urigo/accounter-fullstack/pull/3007)
[`0a8cfcb`](https://github.com/Urigo/accounter-fullstack/commit/0a8cfcb862c24bd0c4c450b8adbbaa0d0ca3582b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@171.3.0` ↗︎](https://www.npmjs.com/package/googleapis/v/171.3.0)
(from `171.2.0`, in `dependencies`)
- [#3025](https://github.com/Urigo/accounter-fullstack/pull/3025)
[`0b5b2ea`](https://github.com/Urigo/accounter-fullstack/commit/0b5b2ea65abe31286a97615a46cad149da72f235)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.39` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.39) (from
`3.0.36`, in `dependencies`)
- Updated dependency [`ai@6.0.77` ↗︎](https://www.npmjs.com/package/ai/v/6.0.77) (from `6.0.70`, in
`dependencies`)
- Updated dependency [`dotenv@17.2.4` ↗︎](https://www.npmjs.com/package/dotenv/v/17.2.4) (from
`17.2.3`, in `dependencies`)
- Updated dependency [`playwright@1.58.2` ↗︎](https://www.npmjs.com/package/playwright/v/1.58.2)
(from `1.58.1`, in `dependencies`)
- [#3026](https://github.com/Urigo/accounter-fullstack/pull/3026)
[`b07a629`](https://github.com/Urigo/accounter-fullstack/commit/b07a62943ed2a73355b62d740fe27deede7d0099)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@171.4.0` ↗︎](https://www.npmjs.com/package/googleapis/v/171.4.0)
(from `171.3.0`, in `dependencies`)
- [#3029](https://github.com/Urigo/accounter-fullstack/pull/3029)
[`80ecd47`](https://github.com/Urigo/accounter-fullstack/commit/80ecd47f6f2d7bceaa87c2e6fd33a5ca00a8c976)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.78` ↗︎](https://www.npmjs.com/package/ai/v/6.0.78) (from `6.0.77`, in
`dependencies`)
- [#3031](https://github.com/Urigo/accounter-fullstack/pull/3031)
[`211446a`](https://github.com/Urigo/accounter-fullstack/commit/211446a6757b501d71131f2b4689bcefcf46d580)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.40` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.40) (from
`3.0.39`, in `dependencies`)
- [#3034](https://github.com/Urigo/accounter-fullstack/pull/3034)
[`88e8bb9`](https://github.com/Urigo/accounter-fullstack/commit/88e8bb914be1965333e0b899537562c8877782a1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.44` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.44) (from
`3.0.40`, in `dependencies`)
- Updated dependency
[`@google-cloud/pubsub@5.2.3` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/5.2.3)
(from `5.2.2`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.47.3` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.47.3) (from
`0.47.2`, in `dependencies`)
- Updated dependency [`ai@6.0.86` ↗︎](https://www.npmjs.com/package/ai/v/6.0.86) (from `6.0.78`, in
`dependencies`)
- [#3039](https://github.com/Urigo/accounter-fullstack/pull/3039)
[`6c5f52c`](https://github.com/Urigo/accounter-fullstack/commit/6c5f52ca44eefe53e301482f0781d0d2a3540357)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@11.1.1` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/11.1.1)
(from `11.1.0`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@9.1.1` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/9.1.1)
(from `9.1.0`, in `dependencies`)
- [#3057](https://github.com/Urigo/accounter-fullstack/pull/3057)
[`cac79a9`](https://github.com/Urigo/accounter-fullstack/commit/cac79a983189c61e40d9e66a6a7a0da133aff31a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`async-mutex@0.5.0` ↗︎](https://www.npmjs.com/package/async-mutex/v/0.5.0) (to
`dependencies`)
- [#3041](https://github.com/Urigo/accounter-fullstack/pull/3041)
[`352ee1b`](https://github.com/Urigo/accounter-fullstack/commit/352ee1b16018745057219979280d49a86e645d4c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv@17.3.1` ↗︎](https://www.npmjs.com/package/dotenv/v/17.3.1) (from
`17.2.4`, in `dependencies`)
- [#3057](https://github.com/Urigo/accounter-fullstack/pull/3057)
[`cac79a9`](https://github.com/Urigo/accounter-fullstack/commit/cac79a983189c61e40d9e66a6a7a0da133aff31a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`async-mutex@0.5.0` ↗︎](https://www.npmjs.com/package/async-mutex/v/0.5.0) (to
`dependencies`)
- [#3066](https://github.com/Urigo/accounter-fullstack/pull/3066)
[`560aaa4`](https://github.com/Urigo/accounter-fullstack/commit/560aaa4e320f71cc9a721945d3ead070c4b5cfed)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.46` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.46) (from
`3.0.44`, in `dependencies`)
- Updated dependency [`ai@6.0.97` ↗︎](https://www.npmjs.com/package/ai/v/6.0.97) (from `6.0.86`, in
`dependencies`)
- [#3093](https://github.com/Urigo/accounter-fullstack/pull/3093)
[`db0d20c`](https://github.com/Urigo/accounter-fullstack/commit/db0d20c8859d5a625598d4a52da8960712b53bbd)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@google-cloud/pubsub@5.3.0` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/5.3.0)
(from `5.2.3`, in `dependencies`)
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`auth0@5.3.1` ↗︎](https://www.npmjs.com/package/auth0/v/5.3.1) (to
`dependencies`)
- [#3116](https://github.com/Urigo/accounter-fullstack/pull/3116)
[`74e4338`](https://github.com/Urigo/accounter-fullstack/commit/74e4338e79ced57d492f2b677c73ffe23682bda6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.98` ↗︎](https://www.npmjs.com/package/ai/v/6.0.98) (from `6.0.97`, in
`dependencies`)
- [#3121](https://github.com/Urigo/accounter-fullstack/pull/3121)
[`992e2ed`](https://github.com/Urigo/accounter-fullstack/commit/992e2edb1507dcb64ccf07b24b7b850fe6fe815b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`graphql@16.13.0` ↗︎](https://www.npmjs.com/package/graphql/v/16.13.0) (from
`16.12.0`, in `dependencies`)
- [#3133](https://github.com/Urigo/accounter-fullstack/pull/3133)
[`9dcc165`](https://github.com/Urigo/accounter-fullstack/commit/9dcc16590189d77113748dec7305b65e3466a372)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.47` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.47) (from
`3.0.46`, in `dependencies`)
- Updated dependency [`ai@6.0.99` ↗︎](https://www.npmjs.com/package/ai/v/6.0.99) (from `6.0.98`, in
`dependencies`)
- [#3136](https://github.com/Urigo/accounter-fullstack/pull/3136)
[`d4875ca`](https://github.com/Urigo/accounter-fullstack/commit/d4875cafe26e8311e0c12a189f5275f017ce5add)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.19.0` ↗︎](https://www.npmjs.com/package/pg/v/8.19.0) (from `8.18.0`, in
`dependencies`)
- [#3148](https://github.com/Urigo/accounter-fullstack/pull/3148)
[`2265bd3`](https://github.com/Urigo/accounter-fullstack/commit/2265bd35a651989d47f1e791c8638b82f4bdeaf0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.50` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.50) (from
`3.0.47`, in `dependencies`)
- Updated dependency [`ai@6.0.105` ↗︎](https://www.npmjs.com/package/ai/v/6.0.105) (from `6.0.99`,
in `dependencies`)
- [#3149](https://github.com/Urigo/accounter-fullstack/pull/3149)
[`e3f6af1`](https://github.com/Urigo/accounter-fullstack/commit/e3f6af1516a22eae8f9edb07f716c6dc9765654a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.51` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.51) (from
`3.0.50`, in `dependencies`)
- Updated dependency [`ai@6.0.106` ↗︎](https://www.npmjs.com/package/ai/v/6.0.106) (from `6.0.105`,
in `dependencies`)
- [#3159](https://github.com/Urigo/accounter-fullstack/pull/3159)
[`e47b428`](https://github.com/Urigo/accounter-fullstack/commit/e47b4287ec3060ed93f12281bcfc711322244cb7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.20.0` ↗︎](https://www.npmjs.com/package/pg/v/8.20.0) (from `8.19.0`, in
`dependencies`)
- [#3161](https://github.com/Urigo/accounter-fullstack/pull/3161)
[`c33e0a4`](https://github.com/Urigo/accounter-fullstack/commit/c33e0a4c859d6051c0f27c716e304d898e2388b2)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`jose@6.2.0` ↗︎](https://www.npmjs.com/package/jose/v/6.2.0) (from `6.1.3`,
in `dependencies`)
- [#3162](https://github.com/Urigo/accounter-fullstack/pull/3162)
[`87ed17f`](https://github.com/Urigo/accounter-fullstack/commit/87ed17f5269aee029165f0ca5b84690024d5d8ba)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.48.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.48.0) (from
`0.47.3`, in `dependencies`)
- [#3165](https://github.com/Urigo/accounter-fullstack/pull/3165)
[`8c2de24`](https://github.com/Urigo/accounter-fullstack/commit/8c2de240a2bc926a33200cba756f6ca5ceb5e875)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.18.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.18.1)
(from `3.18.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.18.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.18.1) (from `5.18.0`,
in `dependencies`)
- [#3166](https://github.com/Urigo/accounter-fullstack/pull/3166)
[`26474f3`](https://github.com/Urigo/accounter-fullstack/commit/26474f32495cc9fe028476840bd3d15fee8b5143)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.58` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.58) (from
`3.0.51`, in `dependencies`)
- Updated dependency [`ai@6.0.116` ↗︎](https://www.npmjs.com/package/ai/v/6.0.116) (from `6.0.106`,
in `dependencies`)
- Updated dependency [`graphql@16.13.1` ↗︎](https://www.npmjs.com/package/graphql/v/16.13.1) (from
`16.13.0`, in `dependencies`)
- Updated dependency [`jose@6.2.1` ↗︎](https://www.npmjs.com/package/jose/v/6.2.1) (from `6.2.0`,
in `dependencies`)
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`auth0@5.3.1` ↗︎](https://www.npmjs.com/package/auth0/v/5.3.1) (to
`dependencies`)
- [#3171](https://github.com/Urigo/accounter-fullstack/pull/3171)
[`c0dc497`](https://github.com/Urigo/accounter-fullstack/commit/c0dc4978cf26b745c3a35fad6035ed42c254ec85)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.4.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.4.0) (from `5.3.1`,
in `dependencies`)
- [#3179](https://github.com/Urigo/accounter-fullstack/pull/3179)
[`d67c113`](https://github.com/Urigo/accounter-fullstack/commit/d67c113936e3b936509ae461b88306337f107b43)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`@envelop/core@5.5.1` ↗︎](https://www.npmjs.com/package/@envelop/core/v/5.5.1)
(to `dependencies`)
- Added dependency
[`@graphql-tools/utils@11.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.0.0)
(to `dependencies`)
- [#3179](https://github.com/Urigo/accounter-fullstack/pull/3179)
[`d67c113`](https://github.com/Urigo/accounter-fullstack/commit/d67c113936e3b936509ae461b88306337f107b43)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`@envelop/core@5.5.1` ↗︎](https://www.npmjs.com/package/@envelop/core/v/5.5.1)
(to `dependencies`)
- Added dependency
[`@graphql-tools/utils@11.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/11.0.0)
(to `dependencies`)
- [#3206](https://github.com/Urigo/accounter-fullstack/pull/3206)
[`443e2f1`](https://github.com/Urigo/accounter-fullstack/commit/443e2f1e812547b5d80be05f003e4fe579e88e6b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`auth0@5.5.0` ↗︎](https://www.npmjs.com/package/auth0/v/5.5.0) (from `5.4.0`,
in `dependencies`)
- [#3214](https://github.com/Urigo/accounter-fullstack/pull/3214)
[`69a150b`](https://github.com/Urigo/accounter-fullstack/commit/69a150bcb25903593316b4c9d3f344b428585a72)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.63` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.63) (from
`3.0.58`, in `dependencies`)
- Updated dependency [`ai@6.0.134` ↗︎](https://www.npmjs.com/package/ai/v/6.0.134) (from `6.0.116`,
in `dependencies`)
- Updated dependency [`jose@6.2.2` ↗︎](https://www.npmjs.com/package/jose/v/6.2.2) (from `6.2.1`,
in `dependencies`)
- [#3246](https://github.com/Urigo/accounter-fullstack/pull/3246)
[`cb0dbc5`](https://github.com/Urigo/accounter-fullstack/commit/cb0dbc518e8f31a0e69180d83c444658a6ca019e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.63` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.63) (from
`3.0.58`, in `dependencies`)
- Updated dependency [`ai@6.0.134` ↗︎](https://www.npmjs.com/package/ai/v/6.0.134) (from `6.0.116`,
in `dependencies`)
- Updated dependency [`jose@6.2.2` ↗︎](https://www.npmjs.com/package/jose/v/6.2.2) (from `6.2.1`,
in `dependencies`)
- [#3247](https://github.com/Urigo/accounter-fullstack/pull/3247)
[`43dab70`](https://github.com/Urigo/accounter-fullstack/commit/43dab70e682bd96b4e7c252a2bbda94df8f0e0ba)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.64` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.64) (from
`3.0.63`, in `dependencies`)
- Updated dependency [`ai@6.0.141` ↗︎](https://www.npmjs.com/package/ai/v/6.0.141) (from `6.0.134`,
in `dependencies`)
- Updated dependency [`graphql@16.13.2` ↗︎](https://www.npmjs.com/package/graphql/v/16.13.2) (from
`16.13.1`, in `dependencies`)
- [#3262](https://github.com/Urigo/accounter-fullstack/pull/3262)
[`41417f2`](https://github.com/Urigo/accounter-fullstack/commit/41417f251c65a517a6312c1b393f96518a0c1179)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency
[`@opentelemetry/api@1.9.1` ↗︎](https://www.npmjs.com/package/@opentelemetry/api/v/1.9.1) (to
`dependencies`)
- Added dependency
[`@opentelemetry/auto-instrumentations-node@0.72.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.72.0)
(to `dependencies`)
- Added dependency
[`@opentelemetry/exporter-trace-otlp-http@0.214.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.214.0)
(to `dependencies`)
- Added dependency
[`@opentelemetry/resources@2.6.1` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.6.1)
(to `dependencies`)
- Added dependency
[`@opentelemetry/sdk-node@0.214.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.214.0)
(to `dependencies`)
- Added dependency
[`@opentelemetry/semantic-conventions@1.40.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/semantic-conventions/v/1.40.0)
(to `dependencies`)
- [#3262](https://github.com/Urigo/accounter-fullstack/pull/3262)
[`41417f2`](https://github.com/Urigo/accounter-fullstack/commit/41417f251c65a517a6312c1b393f96518a0c1179)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency
[`@opentelemetry/api@1.9.1` ↗︎](https://www.npmjs.com/package/@opentelemetry/api/v/1.9.1) (to
`dependencies`)
- Added dependency
[`@opentelemetry/auto-instrumentations-node@0.72.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node/v/0.72.0)
(to `dependencies`)
- Added dependency
[`@opentelemetry/exporter-trace-otlp-http@0.214.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http/v/0.214.0)
(to `dependencies`)
- Added dependency
[`@opentelemetry/resources@2.6.1` ↗︎](https://www.npmjs.com/package/@opentelemetry/resources/v/2.6.1)
(to `dependencies`)
- Added dependency
[`@opentelemetry/sdk-node@0.214.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/sdk-node/v/0.214.0)
(to `dependencies`)
- Added dependency
[`@opentelemetry/semantic-conventions@1.40.0` ↗︎](https://www.npmjs.com/package/@opentelemetry/semantic-conventions/v/1.40.0)
(to `dependencies`)
- [#3275](https://github.com/Urigo/accounter-fullstack/pull/3275)
[`422938d`](https://github.com/Urigo/accounter-fullstack/commit/422938d80ef44a11e45b55c639e3238bf5d19160)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`playwright@1.59.0` ↗︎](https://www.npmjs.com/package/playwright/v/1.59.0)
(from `1.58.2`, in `dependencies`)
- [#3072](https://github.com/Urigo/accounter-fullstack/pull/3072)
[`1b54fbd`](https://github.com/Urigo/accounter-fullstack/commit/1b54fbd83e0c2c9ed829b8fca2da2b879da0138d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - A new provider,
`FinancialAccountsTaxCategoriesProvider`, has been added to handle database operations for
financial account tax categories. This provider includes SQL queries for fetching, updating,
inserting, and deleting tax categories, and utilizes a `DataLoader` for efficient data retrieval.
- The `financial-accounts.resolver.ts` now includes comprehensive logic to manage tax categories
during financial account creation and updates. This involves identifying new categories to
insert, existing ones to update, and old ones to delete, ensuring data consistency.
- [#3273](https://github.com/Urigo/accounter-fullstack/pull/3273)
[`d27d6b2`](https://github.com/Urigo/accounter-fullstack/commit/d27d6b2e26f8db119589476615c0d0e1e2147315)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - fix charge amount where credit invoices
exist
- validate document amount is positive (sign determined according to debtor and creditor sides)
- enhance error messaging levaraging Green Invoice's error messages
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Provider Cache Patterns
Documentation**: Added a new document outlining provider cache patterns and isolation strategies
to prevent data leakage in multi-tenant architectures.
- **AdminContext Provider Refactoring**: Refactored the existing `AdminContextProvider` to use
`Scope.Operation` for request-scoped caching and proper DI integration, addressing tenant
leakage risks. The original plugin remains active.
- **TenantAwareDBClient and AUTH_CONTEXT**: The PR prepares for a future phase (4.8) where
`DBProvider` will be switched to `TenantAwareDBClient` and `AUTH_CONTEXT` will be integrated.
The current refactoring keeps the existing `DBProvider` to avoid breaking changes.
- **Cache Isolation Integration Tests**: Added new integration tests to verify cache isolation
between concurrent requests for various providers.
- **Provider Scope Changes**: Many providers are changed to `Scope.Operation` to ensure
tenant-specific data is handled with request-level isolation.
- [#3179](https://github.com/Urigo/accounter-fullstack/pull/3179)
[`d67c113`](https://github.com/Urigo/accounter-fullstack/commit/d67c113936e3b936509ae461b88306337f107b43)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Authorization Provider**: Created
provider-layer authorization for complex checks.
- [#3101](https://github.com/Urigo/accounter-fullstack/pull/3101)
[`7dd3537`](https://github.com/Urigo/accounter-fullstack/commit/7dd35375be2648dfbfbfeee8cffa254536ea835a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Owner ID Enforcement**: Implemented a
system-wide enforcement of `owner_id` for all new record insertions into various protected
database tables, ensuring data ownership and multi-tenancy.
- **New Helper Function**: Introduced a new helper function, `reassureOwnerIdExists`, to
standardize the injection of `owner_id` into database insert parameters, falling back to the
default admin business ID if not explicitly provided.
- **SQL Query Modifications**: Modified numerous SQL `INSERT` statements across multiple modules
to include the `owner_id` column and its corresponding value, and updated `ON CONFLICT` clauses
where applicable.
- **Provider Integration**: Injected the GraphQL `CONTEXT` into the constructors of various data
providers to enable access to the `owner_id` and integrated the `reassureOwnerIdExists` helper
into their `insert` methods.
- [#3000](https://github.com/Urigo/accounter-fullstack/pull/3000)
[`653f97c`](https://github.com/Urigo/accounter-fullstack/commit/653f97cb5ed3a4d420023d22494452ac3e80b1ec)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Account Filtering for Balance Report**:
The 'Transactions Balance' report now supports filtering by financial accounts, allowing users to
include or exclude specific accounts from the report.
- **Frontend UI Enhancements**: The balance report filter form has been updated with new account
selection fields, improved form validation using Zod, and UI component adjustments for better
responsiveness.
- **Backend GraphQL Integration**: The GraphQL schema and resolvers have been extended to include
financial account data for transactions and to support the new account-based filtering logic.
- **Reusable Account Fetching Logic**: A new helper function and a client-side hook were
introduced to centralize and streamline the fetching and management of financial account data.
- [#3003](https://github.com/Urigo/accounter-fullstack/pull/3003)
[`7809f6d`](https://github.com/Urigo/accounter-fullstack/commit/7809f6dc1a16373a205d76bdc2458d6132785e2c)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Swift Code Integration**: This PR
introduces the 'swiftCode' field to financial bank accounts, enhancing the system's ability to
manage international banking details.
- **Schema and UI Updates**: The changes include updates to the financial account schema, UI
components, and database migrations to accommodate the new 'swiftCode' field.
- **Database Migration**: A new migration script is added to update the 'financial_bank_accounts'
table with a 'swift_code' column.
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Authentication Plugin (Auth Plugin
V2)**: Introduced a new GraphQL Yoga plugin, `authPluginV2`, responsible for extracting raw
authentication credentials (JWT or API Key) from request headers. This plugin is designed to be
part of the v2 authentication system, specifically for Auth0 integration, and focuses solely on
credential extraction without verification.
- **Environment Variable for Auth0 Control**: Added a new environment variable, `USE_AUTH0`, to
the server's configuration. This variable allows for toggling the use of Auth0, indicating a
phased rollout or conditional activation of the new authentication system.
- **Support for JWT and API Key Extraction**: The new plugin can extract JWTs from the
`Authorization: Bearer` header and API keys from the `X-API-Key` header, with JWT taking
precedence when both are present. It also handles cases of missing or malformed headers
gracefully.
- **Comprehensive Unit Tests**: A dedicated test file (`auth-plugin-v2.test.ts`) has been added to
thoroughly test the functionality of the `authPluginV2`, covering various scenarios including
token extraction, header precedence, and error handling for malformed inputs.
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Auth0 Management Service
Enhancements**: The Auth0ManagementService now includes new functionalities for user management,
such as unblocking users and initiating password reset emails.
- **User Creation Flow Adjustment**: The `createUser` method has been renamed to
`createBlockedUser` to explicitly reflect that newly created users are initially blocked,
aligning with an invitation-based registration process.
- **Dependency Injection for Environment**: The service now uses dependency injection for
environment variables, improving testability and modularity.
- [#3088](https://github.com/Urigo/accounter-fullstack/pull/3088)
[`392b25f`](https://github.com/Urigo/accounter-fullstack/commit/392b25fabd0154488569b14c6ebda805e1e0f9e3)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Enforcement**: A new
migration was introduced to enforce the `owner_id` column as `NOT NULL` across numerous tables in
the `accounter_schema`, a critical step for strengthening tenant isolation.
- **Migration Refinements**: An existing migration for `ledger_records` was updated to temporarily
disable and re-enable Row Level Security (RLS) on the `charges` table during the `owner_id`
backfill process, ensuring proper data manipulation without RLS interference.
- **Data Seeding and Testing Alignment**: All relevant test factories, fixture definitions, and
data seeding scripts were updated to explicitly include and correctly handle the `owner_id`
field, ensuring consistency with the new non-nullable constraint.
- **Query Optimization**: Several database queries in various providers (contracts, cron-jobs,
documents, reports, transactions) were refactored to directly access the `owner_id` from the
primary table (e.g., `transactions.owner_id`, `documents.owner_id`) instead of relying on joins
to the `charges` table, simplifying query logic and improving efficiency.
- **Migration Cleanup**: Initial data insertion statements were removed from older migration files
(`refactor-tags.ts`, `add-to-context-salary-excess-expenses.ts`), indicating a cleanup or
relocation of initial data seeding logic.
- [#3114](https://github.com/Urigo/accounter-fullstack/pull/3114)
[`84f9e20`](https://github.com/Urigo/accounter-fullstack/commit/84f9e203c696c8b76a7cef2128547e8cde7559f0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Provider Migration**: Replaced
the generic `DBProvider` with `TenantAwareDBClient` across numerous modules, including business
trips, cron jobs, and Deel invoices, to facilitate tenant-aware database operations.
- **Tax Category Lookup Simplification**: Refactored tax category lookups to remove the explicit
`ownerId` parameter, now relying on the `TenantAwareDBClient` to handle tenant context
implicitly. This involved updates to GraphQL schemas, resolvers, and DataLoader implementations.
- **SQL Query and Schema Adjustments**: Modified SQL `UPDATE` queries in charges and financial
entities to no longer explicitly update `owner_id`. GraphQL input types and queries were also
updated to remove `ownerId` parameters where appropriate.
- **VAT Report Logic Update**: Adjusted the logic for determining `isExpense` and `counterpartyId`
in VAT reporting to correctly use `doc.owner_id` instead of `charge.owner_id`, aligning with the
new tenant-aware data model.
- **Service Scope Change**: Changed the scope of `CronJobsProvider` from `Singleton` to
`Operation` to ensure proper tenant context isolation for background tasks.
- [#3037](https://github.com/Urigo/accounter-fullstack/pull/3037)
[`854112e`](https://github.com/Urigo/accounter-fullstack/commit/854112e6a5ac27c85cfe46a5661f2e1658c8f995)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Depreciation Category Deletion**:
Corrected the table name used in the `deleteDepreciationCategory` SQL query from `depreciation` to
`depreciation_categories` to ensure accurate data deletion.
- **Document Filtering Logic**: Updated the `getDocumentsByExtendedFilters` query to join with the
`charges` table instead of `extended_charges` and refined the logic for identifying 'unmatched'
documents by using a `NOT EXISTS` subquery against the `transactions` table.
- **Tax Category Query Removal**: Removed the `getTaxCategoryByChargeIDs` SQL query, its
associated DataLoader, and related type definitions and invalidation calls, indicating the
deprecation or removal of this specific lookup mechanism.
- [#3054](https://github.com/Urigo/accounter-fullstack/pull/3054)
[`20ef6fd`](https://github.com/Urigo/accounter-fullstack/commit/20ef6fd9099f5646e85f28a31130bb149ab8da81)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Extension**: A new
database migration was added to introduce a `recipient_legal_entity_id` column to the
`accounter_schema.deel_invoices` table, enhancing data capture for legal entities.
- **API Schema Updates for Deel Integration**: The Deel invoice schema was extended to include
`recipient_legal_entity_id` and `deel_reference`, and the `timezone` field for payment receipts
was made nullable. Additionally, pagination fields (`next_cursor`, `has_more`, `total_count`)
were integrated into the API response schema for retrieving payment receipts.
- **Workaround for Contractor-Related Fee Invoices**: A temporary fix was implemented in the Deel
helper to address an issue where fee invoices with empty contractor unique identifiers were
causing processing problems, ensuring these specific invoices are now handled correctly.
- [#3190](https://github.com/Urigo/accounter-fullstack/pull/3190)
[`75c1c91`](https://github.com/Urigo/accounter-fullstack/commit/75c1c9156109bf3386d93394c3070f7ec24f631b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **API Key Management Mutations**: New
GraphQL mutations `generateApiKey` and `revokeApiKey` have been introduced to allow business
owners to manage API keys, including creating new keys with specific roles and revoking existing
ones.
- **API Key Listing Query**: A new GraphQL query `listApiKeys` is now available, enabling business
owners to view all active API keys associated with their business.
- [#3245](https://github.com/Urigo/accounter-fullstack/pull/3245)
[`ca5d912`](https://github.com/Urigo/accounter-fullstack/commit/ca5d912e70f58230f832666f25482abcc725077e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Enhanced Search Performance**:
Introduced the `pg_trgm` PostgreSQL extension and created GIN indexes on relevant text columns
(`user_description`, `source_description`, `source_reference`, `description`, `remarks`,
`serial_number`) across `charges`, `transactions`, and `documents` tables to significantly improve
the performance of free-text search queries.
- **SQL Query Refactoring for `getChargesByFilters`**: The `getChargesByFilters` SQL query was
extensively refactored using Common Table Expressions (CTEs) to optimize its structure and
execution. This includes a new `search_matches` CTE that leverages the new GIN indexes for
efficient initial filtering based on free text, and a `filtered_charges` CTE to serve as the
primary data source for subsequent joins and aggregations.
- **SQL Query Refactoring for `getSimilarCharges`**: The `getSimilarCharges` SQL query was also
refactored to utilize CTEs, improving its readability and maintainability by breaking down
complex logic into smaller, more manageable parts.
- [#2968](https://github.com/Urigo/accounter-fullstack/pull/2968)
[`1ad4fa1`](https://github.com/Urigo/accounter-fullstack/commit/1ad4fa10d74628abade8ce175ad4b35c8f63eb70)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Table Duplication**: A new
migration duplicate the `accounter_schema.users` table to
`accounter_schema.legacy_business_users`, as a step of renaming the users table. This change is
crucial for distinguishing between business entities and future personal user accounts.
- **Authentication Query Update**: The `auth-plugin.ts` file is updated to reflect the new table,
modifying the `getUserByName` SQL query to target the `legacy_business_users` table.
- **Core User Authentication Tables**: Introduced foundational database tables for user
authentication and authorization, including `roles`, `permissions`, `role_permissions`,
`business_users`, and `user_permission_overrides`.
- **Auth0 Integration Readiness**: The `business_users` table is designed to link external Auth0
user IDs with internal business and role assignments, preparing the system for Auth0
integration.
- **Role-Based Access Control (RBAC)**: Implemented a role-based access control system with
predefined roles (e.g., business owner, accountant) and permissions, with provisions for future
granular permission management.
- **Initial Seed Data**: The migration script includes seed data for initial roles, permissions,
and their mappings, providing a ready-to-use access control setup.
- [#2980](https://github.com/Urigo/accounter-fullstack/pull/2980)
[`1930e65`](https://github.com/Urigo/accounter-fullstack/commit/1930e653c898afa7d41676d40e0be60e8f9f0611)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Enhanced Reliability with
Auto-Restart**: Implemented an automatic restart mechanism for the Gmail Pub/Sub listener. Upon
encountering subscription errors or health check failures, the listener will now attempt to stop
and restart itself, improving resilience and ensuring continuous operation.
- **Comprehensive Health Monitoring**: Introduced a periodic health check system that runs every
10 minutes. This system verifies the listener's active state, tracks message reception, and
confirms Gmail API connectivity. If any check fails, an auto-restart is triggered to restore
service.
- **Extensive and Structured Logging**: Significantly improved logging across the Pub/Sub service.
Log messages now include clear prefixes (e.g., "[PubSub]", "[Gmail]", "[PubSub Health]") and
provide more detailed information on topic/subscription creation, message processing, error
handling, and Gmail watch renewals, aiding in debugging and operational visibility.
- **Improved Error Handling for Message Processing**: Modified the message processing logic to
acknowledge messages even if an error occurs during their handling. This prevents messages from
being infinitely redelivered and allows for better error recovery strategies.
- **Robust Topic and Subscription Management**: Updated the logic for validating and creating
Pub/Sub topics and subscriptions to explicitly check for their existence using the `exists()`
method and provide more informative logging during creation or error scenarios.
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Robust Initialization**: Implemented a
constructor check in `DBProvider` to ensure a PostgreSQL pool instance is always provided,
improving initialization robustness.
- **Database Health Check**: Introduced a `healthCheck` method to `DBProvider` for verifying
database connectivity, crucial for monitoring and readiness probes.
- **Graceful Shutdown**: Added a `shutdown` method to `DBProvider` to enable graceful termination
of the database connection pool during application shutdown.
- **Clear Usage Documentation**: Enhanced `DBProvider` with detailed JSDoc comments, clearly
distinguishing between system-level database access (bypassing RLS) and future request-level
access (enforcing RLS via `TenantAwareDBClient`).
- **Comprehensive Test Coverage**: Created a comprehensive test suite for `DBProvider`, covering
its constructor, `query`, `healthCheck`, and `shutdown` methods, ensuring reliability and
correctness.
- [#3179](https://github.com/Urigo/accounter-fullstack/pull/3179)
[`d67c113`](https://github.com/Urigo/accounter-fullstack/commit/d67c113936e3b936509ae461b88306337f107b43)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New GraphQL Authorization Directives**:
Introduced three new GraphQL directives: `@requiresAuth` for general authentication,
`@requiresRole` for specific role enforcement, and `@requiresAnyRole` for allowing multiple roles.
These directives provide more granular control over access to GraphQL fields.
- **Migration to New Directives**: Replaced the deprecated `@auth` directive with the new
`@requiresAuth`, `@requiresRole`, and `@requiresAnyRole` directives across numerous GraphQL type
definitions, enhancing clarity and flexibility in authorization rules.
- **Refactoring Auth0 Management**: Renamed `Auth0ManagementService` to `Auth0ManagementProvider`
and updated its usage and test files to reflect the new naming convention, aligning with
provider patterns.
- [#3082](https://github.com/Urigo/accounter-fullstack/pull/3082)
[`a37f867`](https://github.com/Urigo/accounter-fullstack/commit/a37f8675285a889ea31b71ac9dd86e2c91a04f4e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Database Migration**: A new
database migration was added to populate the `owner_id` column in
`accounter_schema.ledger_records` based on associated `charges` and subsequently enforce a
`NOT NULL` constraint on this column.
- **Comprehensive Owner ID Backfill Script**: A comprehensive backfill script was introduced to
systematically populate `owner_id` values across 30+ tables within the `accounter_schema`,
addressing various data relationships.
- [#3190](https://github.com/Urigo/accounter-fullstack/pull/3190)
[`75c1c91`](https://github.com/Urigo/accounter-fullstack/commit/75c1c9156109bf3386d93394c3070f7ec24f631b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **API Key Generation Mutation**:
Introduced a new GraphQL mutation `generateApiKey` allowing `business_owner` roles to create API
keys.
- **Secure Key Storage**: Implemented a mechanism to store SHA-256 hashes of API keys in the
database, ensuring plaintext keys are never persisted.
- **Role-Based Access Control**: Enforced that API keys can only be assigned the `scraper` role
and explicitly rejects assigning higher-privilege roles such as `business_owner` for security.
- [#3218](https://github.com/Urigo/accounter-fullstack/pull/3218)
[`8c049ac`](https://github.com/Urigo/accounter-fullstack/commit/8c049ac8cfa2d55d80d2539868dac2df8e018f3e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Introduced Annual Audit Flow UI**: A
new, comprehensive 'Annual Audit Flow' user interface has been added, providing a structured,
multi-step process for managing yearly financial operations and compliance. This includes a
progress overview, filtering capabilities, and dedicated steps for various audit tasks.
- **New GraphQL API Endpoints for Audit Operations**: New GraphQL queries and mutations were
implemented on the server-side to support the annual audit flow, including fetching accountant
approval status for charges, retrieving annual financial charges, and locking ledger records.
- **Enhanced Confirmation Modal and New Hooks**: The `ConfirmationModal` component was enhanced to
allow external control of its open state, and new React hooks (`useGenerateFinancialCharge`,
`useLedgerLock`) were introduced to streamline financial charge generation and ledger locking
operations with integrated toast notifications.
- **Updated Navigation and Routing**: The application's sidebar navigation and routing
configuration were updated to include the new 'Workflows' section and the 'Annual Audit' page,
making the new feature accessible.
- [#3038](https://github.com/Urigo/accounter-fullstack/pull/3038)
[`4d4e60d`](https://github.com/Urigo/accounter-fullstack/commit/4d4e60dd85f6c7779c556b513e2de844615dd293)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Configurable NPM Registry in CI**: The
GitHub Actions setup now includes a `registryUrl` input, allowing for flexible specification of
the NPM registry during package publishing.
- **Deterministic Dependency Installation**: The `yarn install` command in the CI workflow was
updated to use `--frozen-lockfile`, ensuring consistent and reproducible builds by preventing
modifications to the `yarn.lock` file.
- **Standardized Package Metadata**: `package.json` files across several packages were updated to
include comprehensive and consistent metadata, such as `description`, `repository` details,
`homepage`, `bugs` URL, and `author` information.
- **Explicit NPM Registry Configuration**: The `publishConfig` in multiple `package.json` files
was modified to explicitly set the `registry` to `https://registry.npmjs.org`, clarifying the
target for package publication.
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Auth0 Integration**: Integrated the
Auth0 management client library to enable programmatic interaction with Auth0 for user management.
- **New Auth0 Module**: Introduced a new `auth` GraphQL module to encapsulate Auth0-related
services and types within the application.
- **Auth0 Management Service**: Implemented `Auth0ManagementService` to handle creating and
deleting users in Auth0, including generating secure temporary passwords and setting initial
user states (blocked, unverified email).
- **Dependency Management**: Added the `auth0` package as a dependency and updated `yarn.lock` to
reflect new and resolved package versions.
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Tenant-Aware Database Client**:
Introduced a `TenantAwareDBClient` class, which is request-scoped and designed to manage database
connections and operations for individual GraphQL requests, ensuring tenant isolation and secure
data access.
- **Row-Level Security (RLS) Enforcement**: The new client automatically sets PostgreSQL session
variables (`app.current_business_id`, `app.current_user_id`, `app.auth_type`) based on the
authenticated user's context, enabling robust Row-Level Security policies.
- **Advanced Transaction Management**: Implemented comprehensive transaction handling, including
support for nested transactions using `SAVEPOINT`s, automatic transaction initiation for single
queries, and proper rollback mechanisms on errors for both top-level and nested transactions.
- **Resource Lifecycle Management**: The `TenantAwareDBClient` integrates with GraphQL Modules'
lifecycle, automatically disposing of database connections and rolling back any active
transactions when the operation scope ends, preventing resource leaks.
- **AuthContext Integration**: A new `AuthContext` interface and an `AUTH_CONTEXT` injection token
were added to provide a standardized way to inject authentication and tenant information into
services, which the `TenantAwareDBClient` utilizes.
- [#3069](https://github.com/Urigo/accounter-fullstack/pull/3069)
[`92edfde`](https://github.com/Urigo/accounter-fullstack/commit/92edfde9512a85ea545a2d1dac26ebf86109005e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Asynchronous Cache Operations**:
Modified the `updateContract` and `deleteContract` methods to explicitly `await` calls to
`this.clearCache()` and `this.invalidateCacheForContract()`, ensuring these asynchronous cache
operations complete before subsequent logic.
- [#3270](https://github.com/Urigo/accounter-fullstack/pull/3270)
[`1815013`](https://github.com/Urigo/accounter-fullstack/commit/181501367c4dbdeb0010296e7d418af955f4e75e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Environment Variable Cleanup**: Removed
hardcoded and auto-generated environment variables like DEFAULT_FINANCIAL_ENTITY_ID and Gmail
credentials from the main configuration, promoting a cleaner and more secure setup.
- **OpenTelemetry Integration**: Added comprehensive OpenTelemetry configuration settings to the
environment template to support better observability and tracing.
- **Configuration Loading Improvements**: Updated various packages to support loading environment
variables from both local and parent directory files, improving flexibility across different
environments.
- **Removal of Legacy Helpers**: Removed the writeEnvVar helper and associated tests, as the
automatic modification of .env files during seeding processes has been deprecated.
- [#3216](https://github.com/Urigo/accounter-fullstack/pull/3216)
[`0176e16`](https://github.com/Urigo/accounter-fullstack/commit/0176e1613d306a319b975cb0b04c55ce2d460aeb)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **New GraphQL API for Document
Ingestion**: A new GraphQL module (`gmail-listener`) has been introduced on the Accounter server,
exposing `businessEmailConfig` (query) and `insertEmailDocuments` (mutation) operations. This API
allows the dedicated Gmail listener service to fetch business-specific email processing
configurations and programmatically insert extracted documents, ensuring structured and
authenticated communication.
- **Introduction of 'gmail_listener' Role**: A new `gmail_listener` role has been added to the
system via a database migration. This role is specifically designed for the automated Gmail
listener service, granting it necessary permissions to interact with the new GraphQL API and
perform document insertion operations.
- **Enhanced Document Upload Process**: The `getDocumentFromFile` helper function has been updated
to support passing `counterPartyId` and a pre-calculated `hash`, improving flexibility and
efficiency when uploading documents, especially from external services like the new Gmail
listener.
- **Refactored Authorization for Charge Creation**: The `canWriteCharge` authorization logic has
been updated to explicitly allow the new `gmail_listener` role (and the existing `scraper` role)
to create charges, reflecting their automated document processing responsibilities.
- [#3184](https://github.com/Urigo/accounter-fullstack/pull/3184)
[`6959737`](https://github.com/Urigo/accounter-fullstack/commit/6959737eef1674deacab4364b3380e5f40394147)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Centralized Audit Logging**: Introduced
a dedicated AuditLogsProvider to centralize and standardize audit log entries across the
application, improving consistency and maintainability.
- **Refactored Audit Log Calls**: Refactored existing audit log calls in invitation-related
functionalities (creation, acceptance, cleanup) to utilize the new AuditLogsProvider.
- **Migration Data Integrity**: Enhanced the 'add-user-id-to-invitations' migration with a check
to ensure the invitations table is empty before adding a non-nullable user_id column, preventing
data integrity issues.
- **New Audit Event Types**: Defined a new AuditEvent type to provide a structured and type-safe
way to log audit events, along with comprehensive unit tests for the new provider.
- [#2975](https://github.com/Urigo/accounter-fullstack/pull/2975)
[`4b37fc8`](https://github.com/Urigo/accounter-fullstack/commit/4b37fc85d294571c0a209901e64f7b4a1c7dc5ab)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **GraphQL Schema Update**: The 'zip'
field in the 'ClientInput' GraphQL type has been renamed to 'zipCode' for better clarity and
consistency across the system.
- **Green Invoice Client Data Mapping**: The logic for converting local client data to Green
Invoice client input has been updated to correctly use 'city' and 'zip_code' from local business
data and to ensure all client details are sourced from the initial input, resolving potential
data discrepancies.
- **UI Event Propagation Prevention**: The 'stopPropagation' method has been added to key UI
elements in document generation and preview modals to prevent unintended click event bubbling,
improving user interaction and preventing unexpected behavior.
- **UI Text Refinement**: A dialog title in the merge charges component has been updated from
'Issue New Document' to 'Merge Charges' for improved clarity and accuracy.
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Auth0 Environment Variables**:
Auth0-related environment variables have been introduced in `.env.template` to support JWT
verification and Management API access.
- **Environment Configuration Update**: The server's environment configuration
(`packages/server/src/environment.ts`) has been updated to parse and validate the new Auth0
variables, ensuring that if Auth0 is configured, all necessary related variables are present.
- **New Unit Tests**: A new test file (`packages/server/src/__tests__/environment.test.ts`) has
been added to verify the correct loading and validation of Auth0 environment variables under
various scenarios.
- **Dependency Addition**: The `jose` library has been added as a new dependency, likely for
handling JSON Web Tokens (JWTs).
- [#3057](https://github.com/Urigo/accounter-fullstack/pull/3057)
[`cac79a9`](https://github.com/Urigo/accounter-fullstack/commit/cac79a983189c61e40d9e66a6a7a0da133aff31a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Row Level Security (RLS) Enabled on
Charges Table**: A new database migration has been introduced to enable Row Level Security on the
`accounter_schema.charges` table, including an index on `owner_id` and a `tenant_isolation` policy
to ensure data separation by business ID.
- **Temporary RLS Provider Workaround**: To facilitate the RLS transition, a temporary workaround
has been implemented in the `ChargesProvider`. It now injects the `AccounterContext` and uses a
new `getRlsDbClient` helper to ensure all database queries respect RLS policies until the
`TenantAwareDBClient` is fully integrated in a later phase.
- **RLS Helper Function**: A new `getRlsDbClient` helper function has been added to
`rls-context-plugin.ts` to provide an RLS-enabled database client, falling back to the regular
provider if no RLS context is available.
- **Test Utility Adjustment**: The test utility `ledger-injector.ts` was updated to accommodate
the new constructor signature of `ChargesProvider`, passing an empty `AccounterContext` for
testing purposes.
- [#3032](https://github.com/Urigo/accounter-fullstack/pull/3032)
[`c577872`](https://github.com/Urigo/accounter-fullstack/commit/c57787204e9f943ded6b47cb26ca010689ef0d7b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Introduced Temporary RLS Context
Plugin**: A new plugin (rls-context-plugin.ts) was added, leveraging GraphQL Yoga's onExecute hook
to establish a per-request database transaction. It sets the PostgreSQL Row-Level Security (RLS)
session variable app.current_business_id for authenticated users using SELECT set_config, bridging
the gap until TenantAwareDBClient is implemented.
- [#3090](https://github.com/Urigo/accounter-fullstack/pull/3090)
[`cf45ef1`](https://github.com/Urigo/accounter-fullstack/commit/cf45ef1ac04e713c99554f539a7473947b283686)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Extended migration infrastructure to
support non-transactional migrations via a new `noTransaction` flag
- Added indexes and foreign keys for `owner_id` columns across 47 tables
- Created test coverage for the migration to verify indexes and foreign keys are properly created
- [#3262](https://github.com/Urigo/accounter-fullstack/pull/3262)
[`41417f2`](https://github.com/Urigo/accounter-fullstack/commit/41417f251c65a517a6312c1b393f96518a0c1179)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **OpenTelemetry Integration**:
Implemented OpenTelemetry tracing for the server, enabling observability for GraphQL requests,
PostgreSQL queries, and outbound HTTP calls.
- **Configuration & Bootstrapping**: Added comprehensive environment variable configuration with
Zod validation and a dedicated bootstrap module to ensure telemetry initializes before
application startup.
- **Graceful Shutdown**: Integrated telemetry shutdown into the server's lifecycle to ensure all
spans are flushed before process exit.
- **Testing & Documentation**: Added unit tests for environment configuration, integration tests
for the telemetry pipeline, and updated the README with observability setup instructions.
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Added a server script to create/match
Auth0 users and seed `business_users` mappings for migration testing.
- Extended `Auth0ManagementService` with user lookup by email and optional password for
blocked-user creation; adjusted password reset ticket handling.
- [#3174](https://github.com/Urigo/accounter-fullstack/pull/3174)
[`b7621b3`](https://github.com/Urigo/accounter-fullstack/commit/b7621b343dd8e49a24903e2f42f56589f76d7892)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Authentication Component Renaming**:
Renamed core authentication files and classes, including `AuthContextV2Provider` to
`AuthContextProvider` and `authPluginV2` to `authPlugin`, removing the 'V2' suffix to signify
their stable status.
- [#3096](https://github.com/Urigo/accounter-fullstack/pull/3096)
[`2ddc822`](https://github.com/Urigo/accounter-fullstack/commit/2ddc8223b2a90d4820416a40940fa43cba928542)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Owner ID Integration**: The `owner_id`
field has been added to both miscellaneous expenses and salary records to ensure proper ownership
tracking for financial entries.
- **Salary Record Upload Refinements**: The process for uploading salary records from files has
been made more robust, including improved data validation and more reliable handling of
associated charges.
- **Data Validation Enhancement**: Null checks in salary data parsing functions were updated to
explicitly differentiate between `null` and `undefined` values, preventing potential errors
during file processing.
- [#3190](https://github.com/Urigo/accounter-fullstack/pull/3190)
[`75c1c91`](https://github.com/Urigo/accounter-fullstack/commit/75c1c9156109bf3386d93394c3070f7ec24f631b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **API Key Authentication
Implementation**: Implemented the core logic for API key authentication within the
`AuthContextProvider`, allowing the system to validate API keys against a database, check for
revocation, and establish an authentication context.
- **API Key Usage Tracking**: Introduced a mechanism to track API key usage by updating a
`last_used_at` timestamp in the database, with a built-in hourly throttling to reduce write
amplification.
- [#3063](https://github.com/Urigo/accounter-fullstack/pull/3063)
[`6d2fdff`](https://github.com/Urigo/accounter-fullstack/commit/6d2fdfffef81eb80047a6706648598495c4ae299)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **PostgreSQL Connection Limits**: Reduced
the default maximum PostgreSQL client connections from 100 to 20 to better manage database
resources and prevent exhaustion.
- **Database Client Disposal Logic**: Improved the `TenantAwareDBClient` disposal logic to prevent
connection leaks, handle cases where an active client is still present during disposal, and
ensure proper cleanup in error scenarios.
- **Asynchronous Cleanup Execution**: Ensured that database client cleanup operations are properly
awaited in the execution pipeline, specifically within the `dbCleanupPlugin`, to guarantee
connections are released before responses are sent and prevent connection accumulation.
- [#3132](https://github.com/Urigo/accounter-fullstack/pull/3132)
[`f1088e9`](https://github.com/Urigo/accounter-fullstack/commit/f1088e9683bd4fe4460899763be9882dec0b39d0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **DataLoader Cache Keys**: Ensured stable
and consistent cache keys for DataLoader instances to improve cache hits and prevent unexpected
behavior.
- **Date Handling**: Standardized date handling in cache keys to avoid issues caused by timezones
or inconsistent date representations.
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Backend Authentication Refactoring**:
Transitioned the backend's dependency injection pattern from `AUTH_CONTEXT` injection tokens to
direct provider injection for `AuthContextProvider` and `AdminContextProvider` to handle
asynchronous context loading more effectively.
- **Frontend Auth0 Integration**: Implemented Auth0 login on the client-side, including a new
dedicated callback page and modifications to the existing login page to support a dual
authentication mechanism during the transition period.
- **Enhanced Row-Level Security (RLS) Enforcement**: Modified the `TenantAwareDBClient` to
exclusively rely on the `AuthContextProvider` for RLS variables, removing temporary fallbacks to
legacy user context.
- [#3240](https://github.com/Urigo/accounter-fullstack/pull/3240)
[`ec5229a`](https://github.com/Urigo/accounter-fullstack/commit/ec5229a331ddaa77e7098ba4bc1932f9d20eaf41)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Ensured Unique Extended Charges**:
Modified the `getChargesByFilters` SQL query to use a `LEFT JOIN LATERAL` with `LIMIT 1` when
joining `extended_charges`, preventing potential duplicate charge entries if multiple
`extended_charges` exist for a single charge ID.
- **Improved Query Sorting Determinism**: Updated the `ORDER BY` clause in the
`getChargesByFilters` query to include `ec.id` as a final tie-breaker, ensuring consistent and
deterministic sorting of results.
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **TenantAwareDBClient Registration**: The
`TenantAwareDBClient` is now registered as an operation-scoped provider in GraphQL Modules,
enabling dependency injection for RLS enforcement.
- **ESLint Rule for DBProvider**: Added an ESLint rule to prevent direct imports of `DBProvider`
in resolver and service files, encouraging the use of `TenantAwareDBClient`.
- [#3067](https://github.com/Urigo/accounter-fullstack/pull/3067)
[`fbfad66`](https://github.com/Urigo/accounter-fullstack/commit/fbfad66dae7876e2d6f0e7c064a11304d9768892)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Frontend Enhancement**: Implemented a
new free text search input field within the charges filter user interface, allowing users to
search for charges using keywords.
- **Database Schema Update**: Introduced a database migration to enhance the `extended_charges`
view with a `merged_search_text` column, which concatenates various textual fields (user
descriptions, transaction details, document information) for comprehensive search capabilities.
- **API and Backend Integration**: Extended the GraphQL schema to support a `freeText` filter for
charges and integrated this filter into the backend charges provider, utilizing the new
`merged_search_text` column for efficient filtering.
- [#3170](https://github.com/Urigo/accounter-fullstack/pull/3170)
[`376a3a5`](https://github.com/Urigo/accounter-fullstack/commit/376a3a5a9fc8b3ff6b7ca28f3de04365109a9bb6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Added `test-auth0-parallel.ts` script to
test Auth0 JWT verification and database access with RLS context
- Integrated `AuthContextV2Provider` into the DI container in `modules-app.ts`
- Added npm script `test:auth0-parallel` to run the test script
- [#3205](https://github.com/Urigo/accounter-fullstack/pull/3205)
[`3eb28e0`](https://github.com/Urigo/accounter-fullstack/commit/3eb28e045b6403a6da039c5af2d79bff069ff6ac)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Adds a new client-side
`AcceptInvitationPage` with login-redirect support, a `useAcceptInvitation` hook, and routing
configuration, plus associated session storage plumbing in `auth-callback` and `PublicOnlyGuard`
to preserve the invitation return-to URL across the Auth0 login flow.
- Introduces `getJwtIdentity()` on `AuthContextProvider` and `getUserEmailById()` on
`Auth0ManagementProvider` to support fallback identity resolution when the full auth context
isn't established, and adds verified-email-based relinking of Auth0 subjects in
`mapAuth0UserToLocal`.
- Reorders `insertBusinessUser` before `insertInvitation` in the invitation creation flow and
updates vitest config to support `@` alias and `.tsx` test files.
- [#3080](https://github.com/Urigo/accounter-fullstack/pull/3080)
[`d5a78d2`](https://github.com/Urigo/accounter-fullstack/commit/d5a78d27d80d36a1fea20756e178a42f65e0aead)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Migration for RLS**: A new
migration was added to introduce a nullable `owner_id` column to 38 tables within the
`accounter_schema`. This is explicitly noted as 'Phase 1 of 4' in the broader strategy to
implement Row-Level Security (RLS).
- **SQL Query Adjustments**: Several existing SQL queries across various modules were updated to
either explicitly select columns instead of using `SELECT *`, or to correctly qualify the
`owner_id` column with its table alias to prevent ambiguity.
- **Mock Data Enhancement**: Mock data creation functions for `Transaction` and `Document` objects
now include a default `owner_id`, ensuring consistency with the evolving database schema.
- [#2982](https://github.com/Urigo/accounter-fullstack/pull/2982)
[`859a42a`](https://github.com/Urigo/accounter-fullstack/commit/859a42a4fd67574f9c45d5f721f83e2df93b921e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Auth0 JWT Integration**: Introduced the
`AuthContextV2Provider` to handle JWT authentication, verifying tokens using Auth0's JSON Web Key
Set (JWKS) and the `jose` library.
- **Environment Configuration for Auth0**: Added `Auth0Model` to `environment.ts` to validate and
expose `AUTH0_DOMAIN` and `AUTH0_AUDIENCE` environment variables, ensuring they are provided
together.
- **Expanded Authentication Context**: The `AuthContext` and related types (`AuthUser`,
`TenantContext`) have been significantly extended to include more detailed user information
(e.g., email, permissions, `auth0UserId`, `emailVerified`) and `accessTokenExpiresAt`.
- **Database Mapping for Auth0 Users**: Implemented logic to map authenticated Auth0 user IDs to
existing local user and business IDs in the `accounter_schema.business_users` table.
- **New Dependency**: The `jose` library (version `6.1.3`) has been added to `package.json` and
`yarn.lock` to facilitate JWT operations.
- **Unit Tests for Auth Context**: New unit tests for `AuthContextV2Provider` were added, covering
various scenarios like null auth types, API key placeholders, successful JWT verification, and
different failure modes.
- [#3184](https://github.com/Urigo/accounter-fullstack/pull/3184)
[`6959737`](https://github.com/Urigo/accounter-fullstack/commit/6959737eef1674deacab4364b3380e5f40394147)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Invitation Creation Mutation**:
Introduced a new GraphQL mutation `createInvitation` allowing `business_owner` roles to invite new
users to their organization.
- **Auth0 Integration**: Integrated with the Auth0 Management API to create blocked user accounts
for invited individuals, ensuring centralized user management.
- **Robust Error Handling**: Implemented comprehensive error handling for Auth0 API interactions,
gracefully managing rate limits and conflicts (e.g., user already exists) by mapping them to
specific GraphQL errors.
- **Database Persistence and Audit Logging**: Ensured that invitation details are persisted in the
database, a corresponding `business_users` record is pre-created, and an audit log entry is
generated for each invitation created.
- [#3057](https://github.com/Urigo/accounter-fullstack/pull/3057)
[`cac79a9`](https://github.com/Urigo/accounter-fullstack/commit/cac79a983189c61e40d9e66a6a7a0da133aff31a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Centralized Temporary Fallback**: A
temporary fallback mechanism has been introduced directly into the `TenantAwareDBClient` to use
legacy authentication (`context.currentUser?.userId`) when `authContext` is not yet available
during the migration phase.
- **Simplified Provider Migration**: Providers can now directly inject `TenantAwareDBClient`
without needing to implement their own intermediate RLS workaround code, streamlining the
migration process.
- **Streamlined Cleanup**: The future cleanup process for temporary RLS logic is simplified, as it
is now centralized within `TenantAwareDBClient` rather than being scattered across multiple
provider files.
- **ChargesProvider Update**: The `ChargesProvider` has been updated to directly inject
`TenantAwareDBClient`, removing its previous temporary RLS client setup.
- **Removal of Old Helper**: The `getRlsDbClient` helper function and the `rlsContextPlugin` have
been removed as they are no longer required with the new strategy.
- **New DB Cleanup Plugin**: A new `dbCleanupPlugin` has been introduced to manage the disposal of
`TenantAwareDBClient` instances, ensuring proper resource management and preventing connection
leaks.
- Updated dependencies
[[`88e8bb9`](https://github.com/Urigo/accounter-fullstack/commit/88e8bb914be1965333e0b899537562c8877782a1),
[`560aaa4`](https://github.com/Urigo/accounter-fullstack/commit/560aaa4e320f71cc9a721945d3ead070c4b5cfed),
[`992e2ed`](https://github.com/Urigo/accounter-fullstack/commit/992e2edb1507dcb64ccf07b24b7b850fe6fe815b),
[`2265bd3`](https://github.com/Urigo/accounter-fullstack/commit/2265bd35a651989d47f1e791c8638b82f4bdeaf0),
[`26474f3`](https://github.com/Urigo/accounter-fullstack/commit/26474f32495cc9fe028476840bd3d15fee8b5143),
[`69a150b`](https://github.com/Urigo/accounter-fullstack/commit/69a150bcb25903593316b4c9d3f344b428585a72),
[`cb0dbc5`](https://github.com/Urigo/accounter-fullstack/commit/cb0dbc518e8f31a0e69180d83c444658a6ca019e),
[`43dab70`](https://github.com/Urigo/accounter-fullstack/commit/43dab70e682bd96b4e7c252a2bbda94df8f0e0ba),
[`6ad77d5`](https://github.com/Urigo/accounter-fullstack/commit/6ad77d50d6a9b2cf93a097c593f45ef314ce58b2),
[`88e8bb9`](https://github.com/Urigo/accounter-fullstack/commit/88e8bb914be1965333e0b899537562c8877782a1),
[`79fef66`](https://github.com/Urigo/accounter-fullstack/commit/79fef668ca7a7f2b2411ae5f5d4d0bdc5bb2fa2b),
[`79fef66`](https://github.com/Urigo/accounter-fullstack/commit/79fef668ca7a7f2b2411ae5f5d4d0bdc5bb2fa2b),
[`88e8bb9`](https://github.com/Urigo/accounter-fullstack/commit/88e8bb914be1965333e0b899537562c8877782a1),
[`79fef66`](https://github.com/Urigo/accounter-fullstack/commit/79fef668ca7a7f2b2411ae5f5d4d0bdc5bb2fa2b),
[`4d4e60d`](https://github.com/Urigo/accounter-fullstack/commit/4d4e60dd85f6c7779c556b513e2de844615dd293),
[`1815013`](https://github.com/Urigo/accounter-fullstack/commit/181501367c4dbdeb0010296e7d418af955f4e75e)]:
- @accounter/green-invoice-graphql@0.8.5
- @accounter/pcn874-generator@0.6.6
- @accounter/shaam-uniform-format-generator@0.2.5
- @accounter/shaam6111-generator@0.1.7
## 0.0.10
### Patch Changes
- [#2791](https://github.com/Urigo/accounter-fullstack/pull/2791)
[`6a9292c`](https://github.com/Urigo/accounter-fullstack/commit/6a9292c5901336182e7a46a8f04f79adb2ebad35)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@168.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/168.0.0)
(from `167.0.0`, in `dependencies`)
- [#2792](https://github.com/Urigo/accounter-fullstack/pull/2792)
[`523a362`](https://github.com/Urigo/accounter-fullstack/commit/523a3623f1825b3c4c7c4591f06ce88b77f8bf89)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.54` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.54) (from
`2.0.53`, in `dependencies`)
- [#2811](https://github.com/Urigo/accounter-fullstack/pull/2811)
[`8d945df`](https://github.com/Urigo/accounter-fullstack/commit/8d945df956dae8c2711eaa31d592d2bfcdbfd9cd)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.110` ↗︎](https://www.npmjs.com/package/ai/v/5.0.110) (from `5.0.108`,
in `dependencies`)
- [#2816](https://github.com/Urigo/accounter-fullstack/pull/2816)
[`6a9926c`](https://github.com/Urigo/accounter-fullstack/commit/6a9926c3948fa736e2c52ce93207b4f35e28f931)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.56` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.56) (from
`2.0.54`, in `dependencies`)
- Updated dependency [`ai@5.0.113` ↗︎](https://www.npmjs.com/package/ai/v/5.0.113) (from `5.0.110`,
in `dependencies`)
- [#2824](https://github.com/Urigo/accounter-fullstack/pull/2824)
[`ca5e62b`](https://github.com/Urigo/accounter-fullstack/commit/ca5e62b91faaf33c99ac178575304797150efe1a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.2.0` ↗︎](https://www.npmjs.com/package/zod/v/4.2.0) (from `4.1.13`, in
`dependencies`)
- [#2828](https://github.com/Urigo/accounter-fullstack/pull/2828)
[`bfe3085`](https://github.com/Urigo/accounter-fullstack/commit/bfe30852483b8ab5f10906776005546542a4c068)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@169.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/169.0.0)
(from `168.0.0`, in `dependencies`)
- [#2829](https://github.com/Urigo/accounter-fullstack/pull/2829)
[`73b11ba`](https://github.com/Urigo/accounter-fullstack/commit/73b11ba1fd676a21b4ba44fe99e2bfd181e513dc)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.2.1` ↗︎](https://www.npmjs.com/package/zod/v/4.2.1) (from `4.2.0`, in
`dependencies`)
- [#2833](https://github.com/Urigo/accounter-fullstack/pull/2833)
[`5101bed`](https://github.com/Urigo/accounter-fullstack/commit/5101bede64671d83d5e8ffd157e90a3623f9bd1e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.114` ↗︎](https://www.npmjs.com/package/ai/v/5.0.114) (from `5.0.113`,
in `dependencies`)
- [#2835](https://github.com/Urigo/accounter-fullstack/pull/2835)
[`eba068e`](https://github.com/Urigo/accounter-fullstack/commit/eba068e3ec3ee3b19450cb42f19d468504b422e0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.115` ↗︎](https://www.npmjs.com/package/ai/v/5.0.115) (from `5.0.114`,
in `dependencies`)
- [#2844](https://github.com/Urigo/accounter-fullstack/pull/2844)
[`0c958e5`](https://github.com/Urigo/accounter-fullstack/commit/0c958e5d914aa88fd9c367b30f353a552c5636c4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.18.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.18.0)
(from `3.17.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.18.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.18.0) (from `5.17.1`,
in `dependencies`)
- [#2850](https://github.com/Urigo/accounter-fullstack/pull/2850)
[`0e34832`](https://github.com/Urigo/accounter-fullstack/commit/0e34832a3755a67cf627c75e2669e3ff58654f9f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.116` ↗︎](https://www.npmjs.com/package/ai/v/5.0.116) (from `5.0.115`,
in `dependencies`)
- [#2862](https://github.com/Urigo/accounter-fullstack/pull/2862)
[`d734f50`](https://github.com/Urigo/accounter-fullstack/commit/d734f50264cb4160fa1bd3538fa185192298b603)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.1` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.1) (from
`2.0.56`, in `dependencies`)
- Updated dependency [`ai@6.0.3` ↗︎](https://www.npmjs.com/package/ai/v/6.0.3) (from `5.0.116`, in
`dependencies`)
- [#2873](https://github.com/Urigo/accounter-fullstack/pull/2873)
[`eea8a89`](https://github.com/Urigo/accounter-fullstack/commit/eea8a89638a3893814fd9a341e0080922fc703a1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.3.2` ↗︎](https://www.npmjs.com/package/zod/v/4.3.2) (from `4.2.1`, in
`dependencies`)
- [#2876](https://github.com/Urigo/accounter-fullstack/pull/2876)
[`30eea05`](https://github.com/Urigo/accounter-fullstack/commit/30eea059168e41803441fbadbec53388c7778f6e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.2` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.2) (from
`3.0.1`, in `dependencies`)
- Updated dependency [`ai@6.0.5` ↗︎](https://www.npmjs.com/package/ai/v/6.0.5) (from `6.0.3`, in
`dependencies`)
- [#2877](https://github.com/Urigo/accounter-fullstack/pull/2877)
[`1c209c8`](https://github.com/Urigo/accounter-fullstack/commit/1c209c8a6045bef747039bbff3780812c6b8678f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.3.4` ↗︎](https://www.npmjs.com/package/zod/v/4.3.4) (from `4.3.2`, in
`dependencies`)
- [#2879](https://github.com/Urigo/accounter-fullstack/pull/2879)
[`486eaa1`](https://github.com/Urigo/accounter-fullstack/commit/486eaa16d72d059ac2740e088fe09c6ea0e283a7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.6` ↗︎](https://www.npmjs.com/package/ai/v/6.0.6) (from `6.0.5`, in
`dependencies`)
- [#2881](https://github.com/Urigo/accounter-fullstack/pull/2881)
[`bc3ab26`](https://github.com/Urigo/accounter-fullstack/commit/bc3ab260704b677363561ef1c9403eac704a29aa)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.3.5` ↗︎](https://www.npmjs.com/package/zod/v/4.3.5) (from `4.3.4`, in
`dependencies`)
- [#2891](https://github.com/Urigo/accounter-fullstack/pull/2891)
[`54a68ad`](https://github.com/Urigo/accounter-fullstack/commit/54a68ad2d3690570e62021440c7248a3d08df052)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.7` ↗︎](https://www.npmjs.com/package/ai/v/6.0.7) (from `6.0.6`, in
`dependencies`)
- [#2895](https://github.com/Urigo/accounter-fullstack/pull/2895)
[`7d5a8c3`](https://github.com/Urigo/accounter-fullstack/commit/7d5a8c3fb0e1bf25011b02ab6289a2fd644db811)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.6` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.6) (from
`3.0.2`, in `dependencies`)
- Updated dependency [`ai@6.0.11` ↗︎](https://www.npmjs.com/package/ai/v/6.0.11) (from `6.0.7`, in
`dependencies`)
- [#2898](https://github.com/Urigo/accounter-fullstack/pull/2898)
[`7a99847`](https://github.com/Urigo/accounter-fullstack/commit/7a998472e99cd3c56f6ba182a803757d882a36bb)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.7` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.7) (from
`3.0.6`, in `dependencies`)
- Updated dependency [`ai@6.0.12` ↗︎](https://www.npmjs.com/package/ai/v/6.0.12) (from `6.0.11`, in
`dependencies`)
- [#2899](https://github.com/Urigo/accounter-fullstack/pull/2899)
[`d4bd2e6`](https://github.com/Urigo/accounter-fullstack/commit/d4bd2e6ad130cfea90b6e71832fdaaf74a1db5c9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@google-cloud/pubsub@5.2.1` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/5.2.1)
(from `5.2.0`, in `dependencies`)
- Updated dependency [`ai@6.0.14` ↗︎](https://www.npmjs.com/package/ai/v/6.0.14) (from `6.0.12`, in
`dependencies`)
- [#2902](https://github.com/Urigo/accounter-fullstack/pull/2902)
[`b7eb5e1`](https://github.com/Urigo/accounter-fullstack/commit/b7eb5e1a74a609066282cad1e91152b1e90d1581)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@170.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/170.0.0)
(from `169.0.0`, in `dependencies`)
- [#2904](https://github.com/Urigo/accounter-fullstack/pull/2904)
[`17ae14f`](https://github.com/Urigo/accounter-fullstack/commit/17ae14f2482ad876e1adce23cdbc7cb173b88dfb)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.12` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.12) (from
`3.0.7`, in `dependencies`)
- Updated dependency [`ai@6.0.31` ↗︎](https://www.npmjs.com/package/ai/v/6.0.31) (from `6.0.14`, in
`dependencies`)
- [#2908](https://github.com/Urigo/accounter-fullstack/pull/2908)
[`066d81f`](https://github.com/Urigo/accounter-fullstack/commit/066d81fa43b24dc3cb025cdcbafef3fdd1acc654)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.47.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.47.0) (from
`0.46.0`, in `dependencies`)
- [#2914](https://github.com/Urigo/accounter-fullstack/pull/2914)
[`3a64674`](https://github.com/Urigo/accounter-fullstack/commit/3a64674117ca16d96697f6b8de61e60d354405f9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@6.0.33` ↗︎](https://www.npmjs.com/package/ai/v/6.0.33) (from `6.0.31`, in
`dependencies`)
- [#2922](https://github.com/Urigo/accounter-fullstack/pull/2922)
[`b01d45e`](https://github.com/Urigo/accounter-fullstack/commit/b01d45e4d46ebdd57e4130cffd88f80cf8abd664)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.13` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.13) (from
`3.0.12`, in `dependencies`)
- Updated dependency
[`@google-cloud/pubsub@5.2.2` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/5.2.2)
(from `5.2.1`, in `dependencies`)
- Updated dependency [`ai@6.0.34` ↗︎](https://www.npmjs.com/package/ai/v/6.0.34) (from `6.0.33`, in
`dependencies`)
- [#2923](https://github.com/Urigo/accounter-fullstack/pull/2923)
[`4af9915`](https://github.com/Urigo/accounter-fullstack/commit/4af9915f505d4ac913af984ad5ccfb307281b15c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.17.0` ↗︎](https://www.npmjs.com/package/pg/v/8.17.0) (from `8.16.3`, in
`dependencies`)
- [#2928](https://github.com/Urigo/accounter-fullstack/pull/2928)
[`afab992`](https://github.com/Urigo/accounter-fullstack/commit/afab99296e6c4d0d25cce4a04cc14b6183c21067)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.15` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.15) (from
`3.0.13`, in `dependencies`)
- Updated dependency [`ai@6.0.40` ↗︎](https://www.npmjs.com/package/ai/v/6.0.40) (from `6.0.34`, in
`dependencies`)
- Updated dependency [`pg@8.17.1` ↗︎](https://www.npmjs.com/package/pg/v/8.17.1) (from `8.17.0`, in
`dependencies`)
- [#2934](https://github.com/Urigo/accounter-fullstack/pull/2934)
[`2cb9621`](https://github.com/Urigo/accounter-fullstack/commit/2cb9621452a73693c2e813ab530b32acbd129850)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@170.1.0` ↗︎](https://www.npmjs.com/package/googleapis/v/170.1.0)
(from `170.0.0`, in `dependencies`)
- [#2936](https://github.com/Urigo/accounter-fullstack/pull/2936)
[`c522ff5`](https://github.com/Urigo/accounter-fullstack/commit/c522ff598b080dc496c74ba90d0d506850cc0acb)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.9.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.9.0)
(from `2.8.0`, in `dependencies`)
- [#2938](https://github.com/Urigo/accounter-fullstack/pull/2938)
[`2218773`](https://github.com/Urigo/accounter-fullstack/commit/22187738e1e68957cb2b1fc439205a7de9b0579c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`graphql-modules@3.1.1` ↗︎](https://www.npmjs.com/package/graphql-modules/v/3.1.1) (from
`3.0.0`, in `dependencies`)
- [#2946](https://github.com/Urigo/accounter-fullstack/pull/2946)
[`32fb7b4`](https://github.com/Urigo/accounter-fullstack/commit/32fb7b496fbe5a42badd5cddb8608f7e7f260cd3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@3.0.17` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/3.0.17) (from
`3.0.15`, in `dependencies`)
- Updated dependency [`ai@6.0.42` ↗︎](https://www.npmjs.com/package/ai/v/6.0.42) (from `6.0.40`, in
`dependencies`)
- Updated dependency [`pg@8.17.2` ↗︎](https://www.npmjs.com/package/pg/v/8.17.2) (from `8.17.1`, in
`dependencies`)
- [#2951](https://github.com/Urigo/accounter-fullstack/pull/2951)
[`ac8885f`](https://github.com/Urigo/accounter-fullstack/commit/ac8885f2144b8529109bfc5a83881f399fc06cef)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@11.1.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/11.1.0)
(from `11.0.0`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@9.1.0` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/9.1.0)
(from `9.0.0`, in `dependencies`)
- [#2851](https://github.com/Urigo/accounter-fullstack/pull/2851)
[`e1b8941`](https://github.com/Urigo/accounter-fullstack/commit/e1b8941948cc947a25dd85cd60a67a95a42021bd)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Duplicate Contract Feature**:
Introduced the ability to duplicate existing contracts, allowing users to quickly create new
contracts based on an existing one's details.
- **User Interface Enhancements**: Added a dedicated 'Duplicate Contract' button to the contract
card and integrated a new option within the contract modification dialog to deactivate the
original contract upon duplication.
- **Backend Flexibility for Purchase Orders**: The `purchaseOrders` field in contract updates has
been made optional, both in the GraphQL input type and the resolver logic, to accommodate cases
where it might be empty or undefined.
- [#2884](https://github.com/Urigo/accounter-fullstack/pull/2884)
[`8c87187`](https://github.com/Urigo/accounter-fullstack/commit/8c871871d3ebc99c93b12cd45f22a6e082536f56)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New `createRemarks` Helper Function**:
A new utility function, `createRemarks`, has been introduced to standardize the generation of
document remarks, ensuring consistent formatting for purchase orders and existing contract
remarks.
- **VAT Type Deduction Logic Update**: The `deduceVatTypeFromBusiness` function now utilizes the
`locality` property from the `GraphQLModules.Context` for determining the VAT type, enhancing
accuracy and consistency.
- [#2945](https://github.com/Urigo/accounter-fullstack/pull/2945)
[`37adbe1`](https://github.com/Urigo/accounter-fullstack/commit/37adbe170fdb430d287482e27391cc08b0892cbb)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Bank Deposit Charges Provider
Enhancement**: The `BankDepositChargesProvider` now includes a new public method,
`deleteChargeDepositsByChargeIds`, which wraps the new SQL deletion query. This method provides an
interface for other parts of the application to trigger the removal of bank deposit linkages for
specific charges.
- **Integration with Charge Deletion Process**: The `deleteCharges` helper function has been
updated to incorporate the new bank deposit linkage deletion logic. When a charge is deleted,
the system will now also attempt to clear any associated bank deposit records using the new
provider method, ensuring data consistency and preventing orphaned entries. Robust error
handling has been added for this operation.
- [#2874](https://github.com/Urigo/accounter-fullstack/pull/2874)
[`9aad7bf`](https://github.com/Urigo/accounter-fullstack/commit/9aad7bf12c8853950852d5645725f58777b5f042)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Demo Staging Dataset System**:
Introduced a comprehensive system for seeding rich, deterministic financial data for staging and
development environments, based on predefined use-cases.
- **Comprehensive Ledger Validation**: Implemented a robust validation layer
(`packages/server/src/demo-fixtures/validators/`) that performs per-record, aggregate, and
entity-level balance checks, along with data integrity, foreign currency, and date validations.
- **Use-Case Driven Data Seeding**: The system now uses a registry of self-contained financial
scenarios (`packages/server/src/demo-fixtures/use-cases/`) that can be seeded with a single
command, ensuring stable entity IDs across deployments using deterministic UUIDs.
- **New NPM Scripts and Test Suite**: Added new `package.json` scripts (`seed:staging-demo`,
`validate:demo`, `test:demo-seed`) and a dedicated Vitest project (`demo-seed`) for end-to-end
testing of the seeding and validation pipeline.
- **Refactored Seed Helpers**: Centralized and improved helpers for idempotent creation of
financial entities, businesses, and tax categories, along with new helpers for seeding exchange
rates and VAT defaults.
- **Extensive Documentation**: New documentation files (`docs/demo-staging-dataset-spec.md`,
`docs/demo-staging-dataset-prompt-plan.md`, `docs/demo-staging-dataset-todo.md`,
`packages/server/docs/demo-staging-guide.md`) provide detailed specifications, implementation
plans, and developer guides.
- [#2948](https://github.com/Urigo/accounter-fullstack/pull/2948)
[`2e779f1`](https://github.com/Urigo/accounter-fullstack/commit/2e779f1943e983bfa23c6e1c3b0a85897e0be580)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **PCN Report Date Fix**: Corrected an
issue with PCN (Payment Card Number) report snapshot dates by implementing fake timers in tests,
ensuring consistent date generation for reports.
- [#2941](https://github.com/Urigo/accounter-fullstack/pull/2941)
[`d14f2e1`](https://github.com/Urigo/accounter-fullstack/commit/d14f2e157209a90315edf7676a8ab80c25726bd1)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Table Refactoring**: The VAT report's
expenses and income tables have been refactored to utilize the `@tanstack/react-table` library,
replacing custom table rendering logic.
- **New Column Definitions**: Dedicated `columns.tsx` files were introduced for both expenses and
income sections, centralizing column configurations and enabling features like sorting and row
expansion.
- **Improved Table Functionality**: The refactoring introduces advanced table features such as
sorting, column visibility management, and expandable rows for detailed charge information.
- **GraphQL Schema Update**: The `VatReportRecord` GraphQL type and its resolver were updated to
include an `allocationNumber` field, which is now displayed in the tables.
- **Code Simplification**: The previous `expenses-row.tsx` and `income-row.tsx` components have
been removed, as their rendering logic is now handled directly within the `expenses-table.tsx`
and `income-table.tsx` components using `react-table`'s `flexRender`.
- [#2831](https://github.com/Urigo/accounter-fullstack/pull/2831)
[`6136464`](https://github.com/Urigo/accounter-fullstack/commit/61364643eafac0c15ea5f444d3ecc9c33e854811)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New GraphQL Scalar for Country Codes**:
A new GraphQL scalar type, `CountryCode`, has been introduced to represent country codes. This
scalar includes validation to ensure that all country codes conform to the ISO 3166-1 alpha-3
standard.
- **Centralized CountryCode Enum**: The `CountryCode` enum definition has been moved from
`packages/server/src/modules/countries/types.ts` to a shared location at
`packages/server/src/shared/enums.ts`. This centralizes the enum, making it accessible across
different modules and ensuring consistency.
- **GraphQL Schema and Resolver Updates**: The GraphQL schema and various resolvers have been
updated to utilize the new `CountryCode` scalar and the shared enum. This includes changes in
`business-trips`, `countries`, and `financial-entities` modules to correctly handle country code
types.
- **Client-Side Component Adjustments**: Client-side components, specifically
`contact-info-section.tsx` and `accommodations-row.tsx`, have been modified to correctly query
and display country information, adapting to the new structured `Country` type and `CountryCode`
scalar.
- [#2893](https://github.com/Urigo/accounter-fullstack/pull/2893)
[`b317835`](https://github.com/Urigo/accounter-fullstack/commit/b3178356166245858be956319aa81bc61e6ff29c)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Deel Contract Schema Validation**: New
Zod schemas are introduced for comprehensive validation of Deel contract data, ensuring data
integrity and type safety across the application.
- **Deel Contract Details API Integration**: A new public method, `getContractDetails`, has been
added to the `DeelClientProvider` to fetch detailed contract information directly from the Deel
API, complete with robust error handling and schema validation.
- **Enhanced Invoice-Contract Matching**: The invoice processing logic in `fetchAndFilterInvoices`
now actively verifies that all invoices are linked to existing contracts. If a contract ID is
not found locally, it fetches details from Deel and raises an error, guiding users to manually
match the contract to prevent data inconsistencies.
- **Dynamic Charge Creation for Receipts**: The process for generating charges for new Deel
receipts has been refactored. Charges are now dynamically created within the resolver when a
receipt is encountered without an existing charge, streamlining the financial reconciliation
workflow.
- [#2916](https://github.com/Urigo/accounter-fullstack/pull/2916)
[`625b08e`](https://github.com/Urigo/accounter-fullstack/commit/625b08e1a617c9c9501831375766384da7c73394)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Negative VAT Handling**: Negative VAT
values, such as those found in credit invoices, are now correctly categorized as `SALE_REGULAR`
instead of being misclassified as `SALE_UNIDENTIFIED_ZERO_OR_EXEMPT`.
- [#2952](https://github.com/Urigo/accounter-fullstack/pull/2952)
[`460d270`](https://github.com/Urigo/accounter-fullstack/commit/460d27027ee7663b3fc1ace4239b77aa8e7f7f2b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Charge Type Refactoring**: Replaced the
boolean `isConversion` field with a comprehensive `ChargeType` enum across the application,
providing a more explicit and flexible way to categorize charges.
- **Database Migration**: A new database migration was added to enrich the
`accounter_schema.charge_type` enum with several new values, including 'BUSINESS_TRIP',
'COMMON', 'CREDITCARD_BANK', 'DIVIDEND', 'FOREIGN_SECURITIES', 'INTERNAL', and 'VAT'.
- **GraphQL Schema and Resolvers Update**: The GraphQL schema was updated to include the new
`ChargeType` enum and integrate it into the `Charge` input type.
- **Client-side UI Enhancements**: The UI for editing and merging charges was updated to replace
the 'Is Conversion' switch with a selectable dropdown for `ChargeType`, improving user
experience and data accuracy. Icons and names for charge types are now dynamically displayed
using helper functions.
- **Unified Charge Type Management**: Replaced disparate boolean flags (e.g., 'isConversion',
'isSalary') with a single, comprehensive 'ChargeType' enum across the application for better
categorization and extensibility.
- **Database Schema Evolution**: Introduced a new database migration to expand the
'accounter_schema.charge_type' enum with several new values, aligning the backend with the new
type system.
- **GraphQL API Modernization**: Updated the GraphQL schema to incorporate the new 'ChargeType'
enum, modifying input types for charge updates and ensuring all charge types expose their 'type'
via resolvers.
- **Enhanced User Interface for Charge Editing**: Revamped the client-side UI for editing and
merging charges, replacing simple boolean switches with a user-friendly dropdown selector for
'ChargeType', complete with dynamic icons and labels.
- **Streamlined Backend Logic**: Adjusted server-side helpers and resolvers to correctly handle
the new 'ChargeType' enum, ensuring consistent type assignment and retrieval throughout the
system.
- [#2806](https://github.com/Urigo/accounter-fullstack/pull/2806)
[`e06209f`](https://github.com/Urigo/accounter-fullstack/commit/e06209f3e99ddf00c5c2172d75891b983e43bcb0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Fixture Type Independence**: The test
fixture types (for businesses, tax categories, and financial accounts) have been decoupled from
the `pgtyped`-generated database types. This enhances test independence and flexibility, allowing
fixtures to define their own minimal interfaces.
- **Standardized Naming Convention**: The `createBusiness` and `createTaxCategory` factories now
use a generic `name` field for display purposes, replacing the more specific `hebrewName` and
`hashavshevetName` fields. The original specific fields are retained as optional/nullable.
- **Intelligent Name Defaulting**: New logic has been implemented in the `createBusiness` and
`createTaxCategory` factories to intelligently default the `name` field. If a `name` is not
explicitly provided, it will fall back to the `id` of the entity, ensuring a meaningful display
name in test scenarios.
- **Updated Fixture Usage and Tests**: All existing test files and fixture scenarios have been
updated to reflect the new `name` field and type definitions. This includes updates to factory
calls, test assertions, and the `fixture-loader`'s database insertion logic.
- [#2917](https://github.com/Urigo/accounter-fullstack/pull/2917)
[`09ae580`](https://github.com/Urigo/accounter-fullstack/commit/09ae5809b83f8d0f3d991380b9fef8e150081108)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Client UI Enhancement**: A new toggle
switch for "Is Decreased VAT" has been added to the `EditCharge` form, allowing users to directly
modify this status for individual charges.
- **Charge Merging Functionality**: The `MergeChargesSelectionForm` now supports viewing and
selecting the "Is Decreased VAT" status for charges during the merge process, enabling
consistent application of this attribute across merged charges.
- **GraphQL Schema Extension**: The GraphQL schema has been updated across various `Charge` and
`FinancialCharge` types to include a new `decreasedVAT: Boolean` field, and
`isDecreasedVAT: Boolean` in input types, to support this new attribute.
- **Server-Side Logic Update**: The server-side resolvers for `updateCharge`,
`batchUpdateCharges`, and `mergeCharges` have been modified to process the `isDecreasedVAT`
input. Notably, the `isDecreasedVAT` value is currently mapped to the `isProperty` field
(`is_property` attribute on `charges` DB table).
- [#2949](https://github.com/Urigo/accounter-fullstack/pull/2949)
[`97094b7`](https://github.com/Urigo/accounter-fullstack/commit/97094b70b60d4acbdf5c7ad92444c4b092daed72)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Generalized `getEntryTypeByRecord`
function**: The `getEntryTypeByRecord` function has been refactored to accept a more comprehensive
object containing `pcn874RecordType`, `isExpense`, `vatNumber`, `localVat`, and
`foreignVatAfterDeduction`. This allows for more dynamic and accurate inference of the PCN874
entry type when an explicit type is not provided.
- **Enhanced Error Handling for Unmapped Types**: The function now throws an error for unhandled
`pcn874RecordType` values, replacing a previous debug log. This ensures that any unmapped types
are explicitly caught and addressed, improving system robustness.
- **Conditional VAT Number Handling for Foreign Businesses**: The `adjustTaxRecord` function now
checks if a business is local and only includes the VAT number in the record if it is. For
foreign businesses, the VAT number is set to `undefined`, which correctly triggers the new
inference logic in `getEntryTypeByRecord` for foreign transactions.
- **Updated and Expanded Test Coverage**: Existing test cases for `getEntryTypeByRecord` have been
updated to match the new function signature, and new tests have been added to specifically cover
the inference logic for various edge cases. Snapshot tests were also updated and expanded to
include new scenarios for local customer credit invoices, ensuring the generated PCN874 reports
are accurate.
- [#2802](https://github.com/Urigo/accounter-fullstack/pull/2802)
[`f37d6fd`](https://github.com/Urigo/accounter-fullstack/commit/f37d6fd3f3721663609840177c8fc077fda0c8b0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Centralized Test Database Management**:
Integration tests now leverage a `TestDatabase` utility class, centralizing database connection,
pooling, and transaction management for improved consistency and isolation.
- **Transactional Test Isolation**: Individual test cases are now wrapped in `db.withTransaction`
blocks, ensuring that each test runs within its own transaction and automatically rolls back
changes, preventing data leakage between tests.
- **Simplified Test Setup/Teardown**: The `beforeAll`, `afterAll`, `beforeEach`, and `afterEach`
hooks in several test files have been streamlined, removing manual `pg.Pool` and `pg.PoolClient`
management in favor of the `TestDatabase` class's methods.
- **Removed Obsolete Function**: The `resetSetupFlags` function, previously a no-op, has been
removed from `db-setup.ts`.
- **Import Path Correction**: A minor import path correction for `DBProvider` was made in
`business-trips.provider.ts`.
- [#2913](https://github.com/Urigo/accounter-fullstack/pull/2913)
[`e5e5ea9`](https://github.com/Urigo/accounter-fullstack/commit/e5e5ea9cf4e3ca1307bd17c81fe922738c1a132e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Receipt Prioritization in Matching**:
The definition of a "matched" charge has been updated. A charge is now considered matched if it
contains both transactions and receipt documents. Invoices and credit invoices no longer
contribute to a charge's matched status.
- **Document Aggregation Logic Refinement**: When aggregating documents for a charge, receipts are
now given higher priority. If receipts are present, only receipt-type documents will be
considered for aggregation, overriding invoices and credit invoices.
- **Unified Accounting Document Check**: The `isAccountingDocument` helper function has been
simplified to always include `Proforma` documents, removing the need for a separate
`includeProforma` parameter.
- **Code Cleanup**: Unused helper functions (`hasOnlyTransactions`, `hasOnlyDocuments`) and their
corresponding tests have been removed to streamline the codebase.
- [#2858](https://github.com/Urigo/accounter-fullstack/pull/2858)
[`eaaa23e`](https://github.com/Urigo/accounter-fullstack/commit/eaaa23eedfe57d2db4a60a5d86066df586325071)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Business Entity Enrichment**: Added
'city' and 'zipCode' fields to the Business entity across the application to provide more detailed
address information.
- **Database Schema Update and Cleanup**: A new migration introduces 'city' (VARCHAR(50)) and
'zip_code' (VARCHAR(15)) columns to the 'businesses' table. Concurrently, numerous deprecated
and unused columns (e.g., 'password', 'tax_siduri_number_2021', 'wizcloud_token',
'bank_account_IBAN') have been removed from the 'businesses' table.
- **UI and API Integration**: The new fields are integrated into various client-side forms (e.g.,
ContactInfoSection, ClientForm, InsertBusiness modal) and GraphQL types/resolvers for both
querying and mutating business data.
- **Form Component Refactoring**: The 'insert-business-fields.tsx' and
'modify-business-fields.tsx' components were removed, indicating a potential consolidation or
simplification of business form logic.
- [#2862](https://github.com/Urigo/accounter-fullstack/pull/2862)
[`d734f50`](https://github.com/Urigo/accounter-fullstack/commit/d734f50264cb4160fa1bd3538fa185192298b603)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Anthropic API Migration**: The
Anthropic API calls have been refactored to align with the new `ai` SDK, specifically migrating
from the `generateObject` function to `generateText` with an `Output.object` configuration for
structured responses.
- **Model Name Update**: The Anthropic model name used in the `AnthropicProvider` has been updated
from `claude-4-sonnet-20250514` to `claude-sonnet-4-5`.
- [#2832](https://github.com/Urigo/accounter-fullstack/pull/2832)
[`bc69d12`](https://github.com/Urigo/accounter-fullstack/commit/bc69d126abf0b594e0908bd924b42ffbefbfcecc)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Refactored Document Issuing Logic**:
The core document issuing and drafting functionalities have been extracted from the
`green-invoice` module and relocated to a new, dedicated `documents-issuing` module within the
`documents` domain. This enhances modularity and improves the separation of concerns.
- **Standardized Document Types**: Green Invoice specific enums like `GreenInvoiceDocumentLang`,
`GreenInvoiceVatType`, `GreenInvoiceDiscountType`, `GreenInvoicePaymentType`,
`GreenInvoicePaymentCardType`, and `GreenInvoiceLinkType` have been replaced with more generic
and reusable types such as `DocumentLanguage`, `DocumentVatType`, `DocumentDiscountType`,
`PaymentType`, `DocumentPaymentRecordCardType`, and `DocumentLinkType`. This change reduces
coupling to the Green Invoice API.
- **Standardized Country Codes**: A new `CountryCode` enum has been introduced in the client-side
helpers, replacing the Green Invoice specific country enum. This ensures consistent country
handling across the application.
- **Renamed Sync Functionality**: The `PullDocumentsModal` component and `useFetchIncomeDocuments`
hook have been renamed to `SyncDocumentsModal` and `useSyncGreenInvoiceDocuments` respectively,
to more accurately reflect their purpose of synchronizing documents with Green Invoice.
- **GraphQL Schema and Type Renames**: GraphQL types and fragments related to document drafting
have been renamed for clarity and consistency. `NewDocumentInfo` is now `DocumentDraft`, and
`NewDocumentInput` is `DocumentIssueInput`, with corresponding updates across queries and
mutations.
- [#2955](https://github.com/Urigo/accounter-fullstack/pull/2955)
[`6375322`](https://github.com/Urigo/accounter-fullstack/commit/63753228d270a4de7a0a3ac9240397bb57813d90)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Automatic Gmail Watch Renewal**: The
Gmail API watch subscription now automatically renews itself one day before its expiration,
preventing service interruptions and ensuring continuous real-time email processing.
- **Enhanced Health Check**: The `healthCheck` method for the Gmail listener has been upgraded to
perform an asynchronous call to the Gmail API (fetching user profile) to verify active
connectivity, providing a more accurate status.
- **Improved Error Handling**: The initial setup of Gmail push notifications now explicitly throws
an error if it fails, preventing the application from starting in a misconfigured or
non-functional state.
- [#2788](https://github.com/Urigo/accounter-fullstack/pull/2788)
[`4bbed45`](https://github.com/Urigo/accounter-fullstack/commit/4bbed4591cb3e23e129e46865e9ac4eb7d3b40d5)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Test Suite Split**: The project's test
suite has been formally split into distinct 'unit' and 'integration' test projects using Vitest,
enhancing organization and execution efficiency.
- **New Test Commands**: New `yarn` commands have been introduced: `yarn test` for unit tests,
`yarn test:integration` for both unit and integration tests, and `yarn test:all` for running all
suites.
- **Updated Documentation**: Both the root `README.md` and `packages/server/README.md` have been
updated with comprehensive documentation on the new test suite structure, how to run tests, and
prerequisites for integration tests.
- [#2813](https://github.com/Urigo/accounter-fullstack/pull/2813)
[`ed96294`](https://github.com/Urigo/accounter-fullstack/commit/ed962940d2c677486913ef7ddd2fc1c0e1c897f0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Hook for Admin Businesses**:
Implemented a new React hook, `useGetAdminBusinesses`, to specifically fetch and manage admin
business data, replacing the more generic financial entities.
- **VAT Report Filter Update**: Updated the VAT monthly report filters to utilize the new
`useGetAdminBusinesses` hook and changed the UI label from 'Financial Entities' to 'Report
Issuer (Admin Business)' for clarity.
- **Conditional Data Fetching**: Modified the VAT monthly report component to pause data fetching
when no admin business ID (represented by `financialEntityId`) is selected, preventing
unnecessary queries and potential errors.
- **Server-side Environment Validation**: Added a defensive null check in the server's
`PubsubServiceProvider` to ensure the Gmail environment configuration is present, throwing an
explicit error if it's missing.
- [#2912](https://github.com/Urigo/accounter-fullstack/pull/2912)
[`58aa5c9`](https://github.com/Urigo/accounter-fullstack/commit/58aa5c974d34fb482883ee534a8bf0e49ee122c7)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Property VAT Category**: Introduced a
new `propertyOutputVatTaxCategoryId` to specifically handle output VAT for property-related
charges, ensuring distinct categorization in ledger entries and reports.
- **VAT Adjustment Rule**: Implemented a '2/3 rule' for VAT calculation on property charges,
adjusting the VAT amount in both ledger generation and VAT report helpers.
- **Validation for Property Charges**: Added validation checks to ensure that charges marked as
'property' have the necessary `propertyOutputVatTaxCategoryId` configured and are associated
with depreciation records, preventing data inconsistencies.
- **Code Refactoring**: Refactored the `transformTransactions` function in `pcn.helper.ts` to
`transactionsFormVatReportRecords` for improved clarity and semantic accuracy.
- [#2796](https://github.com/Urigo/accounter-fullstack/pull/2796)
[`11b37d7`](https://github.com/Urigo/accounter-fullstack/commit/11b37d7543cf857859d7605c1e48c59870aedcc6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Centralized Migration Verification
Logic**: Introduced a new helper module `migration-verification.ts` that centralizes the logic for
checking and asserting whether the latest database migration has been applied. This module
provides both a non-throwing `checkLatestMigration` function and an `assertLatestMigrationApplied`
function that throws an error if the migration is not found.
- **New CI/CD Migration Verification Script**: Added a new standalone script
`verify-migrations.ts` that leverages the centralized verification logic. This script connects
to a PostgreSQL database using environment variables and exits with a non-zero status if the
latest migration is not applied, making it suitable for CI/CD pipelines.
- **Refactored Test Suite**: Updated the `db-bootstrap.test.ts` file to utilize the newly created
`assertLatestMigrationApplied` utility, replacing the previous inline query for migration
verification. This improves consistency and reduces code duplication in tests.
- [#2920](https://github.com/Urigo/accounter-fullstack/pull/2920)
[`98e075c`](https://github.com/Urigo/accounter-fullstack/commit/98e075c58e76a836627aaa4620521c06dbf24f76)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **SQL Query Modification**: A
`WHERE t.id IS NOT NULL` clause has been added to the `getTransactionsByBankDeposits` SQL query.
This ensures that only deposit charges that have a corresponding transaction are included in the
results, effectively filtering out charges with no associated transactions.
- [#2868](https://github.com/Urigo/accounter-fullstack/pull/2868)
[`b2afb4d`](https://github.com/Urigo/accounter-fullstack/commit/b2afb4d3d4d6e622bed1960855216267fc8b5817)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Enhanced Deel Invoice Fetching**: The
system now fetches up to 500 Deel invoices by implementing pagination, ensuring a more
comprehensive retrieval of financial data.
- **Handling of Unlinked Invoices**: New logic has been introduced to automatically create charges
and corresponding records for Deel invoices that were previously unlinked or unmatched in the
system.
- **Refactored Invoice Processing**: The process for uploading Deel invoices and inserting their
records into the database has been centralized into a new helper function, improving code
modularity and error handling.
- **Improved Document Type Classification**: Refunded Deel invoices are now correctly identified
and classified as `CreditInvoice` documents, enhancing financial reporting accuracy.
- **Metadata Adjustment for Invoices**: The `description` and `remarks` fields for uploaded Deel
invoices have been swapped to provide more relevant information in the primary description
field.
- [#2864](https://github.com/Urigo/accounter-fullstack/pull/2864)
[`e54a986`](https://github.com/Urigo/accounter-fullstack/commit/e54a986aa8211566055fd7311141a61c1960aba6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Flexible Document Requirement**:
Introduced logic to conditionally require document entries based on a new
`charge.documents_optional_flag`, allowing charges to be processed even without associated
documents if specified.
- **Dynamic Invoice Date Calculation**: Modified the `invoiceDate` determination to use the
earliest transaction `valueDate` when documents are optional, ensuring proper ledger entry
creation for charges without associated documents.
- **Refined Error Handling**: Updated error messages to be more specific regarding missing
transaction or document entries, aligning with the new conditional requirement for documents.
- [#2940](https://github.com/Urigo/accounter-fullstack/pull/2940)
[`e2818d1`](https://github.com/Urigo/accounter-fullstack/commit/e2818d1c7715649c5ebdd63f0065606982a66c31)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Enhanced PCN Report Generation for
Foreign Customers**: Implemented specific logic within `getHeaderDataFromRecords` to correctly
categorize and sum sales from `EntryType.SALE_UNIDENTIFIED_CUSTOMER`, ensuring proper handling of
both zero-VAT and taxable transactions for foreign businesses.
- **Improved Transaction Classification**: Modified the `transactionsFromVatReportRecords`
function to accurately assign `EntryType.SALE_UNIDENTIFIED_CUSTOMER` to non-expense transactions
from foreign entities that have a VAT number but an undefined `pcn874RecordType`.
- **Refactoring and Export of Helper Functions**: Several internal helper functions
(`getHeaderDataFromRecords`, `getEntryTypeByRecord`, `getVatIdForTransaction`,
`getReferenceForTransaction`, `getTotalVAT`) were refactored, renamed, and exported to improve
modularity and testability.
- **Comprehensive Test Coverage**: Added extensive unit and integration tests, including snapshot
tests, for the PCN helper functions and the `getPcn874String` generation, specifically covering
foreign businesses with VAT, credit invoices, imports/exports, and various other edge cases to
ensure report accuracy.
- [#2800](https://github.com/Urigo/accounter-fullstack/pull/2800)
[`d08379c`](https://github.com/Urigo/accounter-fullstack/commit/d08379c1762d9af8ed085b25f84af34f423e3f69)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Centralized UUID Generation**: The
deterministic UUID generation logic has been centralized into a new file,
`packages/server/src/demo-fixtures/helpers/deterministic-uuid.ts`, replacing the previous
`packages/server/src/__tests__/factories/ids.ts`.
- **UUID v5 Implementation**: The new `makeUUID` function now generates UUID v5, which is
specifically designed for deterministic UUIDs based on a namespace and a name. This ensures
stable and reproducible IDs across environments.
- **Structured ID Generation**: The `makeUUID` function now requires two arguments: a `namespace`
(e.g., 'business', 'charge') and a `name` (a semantic identifier). This provides better
organization and prevents ID collisions between different entity types.
- **Backward Compatibility**: A `makeUUIDLegacy` function has been introduced to maintain
compatibility with older calls that used a single seed or generated random UUIDs when no seed
was provided.
- **Codebase Migration**: All existing calls to `makeUUID` across various factory files, test
files, and fixture definitions have been updated to use the new centralized `makeUUID` or
`makeUUIDLegacy` functions with appropriate namespaces.
- **Improved Test Fixture Stability**: This change enhances the stability and reproducibility of
test fixtures and demo data, making it easier to reference specific entities in documentation
and external links without fear of IDs changing.
- [#2834](https://github.com/Urigo/accounter-fullstack/pull/2834)
[`6d3b566`](https://github.com/Urigo/accounter-fullstack/commit/6d3b566ea4eb18c46226d6579defe281df683c2a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Introduced client-aware date confidence
scoring with gentle mode for eligible scenarios
- Converted matching functions to async to support DataLoader-based client and status lookups
- Consolidated DocumentType usage from database string literals to shared enums
- Added PROFORMA to accounting document types to enable gentle scoring eligibility
- [#2950](https://github.com/Urigo/accounter-fullstack/pull/2950)
[`b0a7a13`](https://github.com/Urigo/accounter-fullstack/commit/b0a7a130af4e6d0aa3ed3dcc98c4cc946dc1faaf)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **VAT Report Summary UI**: Introduced a
new summary section at the top of the VAT monthly report, providing a high-level overview of key
financial figures such as Taxable Sales Total, Taxable Sales VAT, Zero/Exempt Sales, Equipment
Inputs, and Total VAT Amount.
- **Detailed/Summarized View Toggle**: Added a toggle functionality to the Income and Expenses
tables, allowing users to switch between a detailed table view and a summarized view grouped by
'Record Type'.
- **Record Type Column**: Integrated a new 'Record Type' column into the detailed Income and
Expenses tables, displaying both the raw record type code and its human-readable name.
- **UI Component Refactoring**: Refactored several report components (Business Trips, Expenses,
Income, Misc, Missing Info) to wrap their content within a `Card` component, enhancing visual
consistency and structure across the report.
- **Backend and GraphQL Updates**: Extended the GraphQL schema and resolvers to include
`recordType` and `isProperty` fields for VAT report charges, supporting the new summary and
detailed views.
- [#2855](https://github.com/Urigo/accounter-fullstack/pull/2855)
[`b6ad028`](https://github.com/Urigo/accounter-fullstack/commit/b6ad028230df89fb7c9d646b9407406456a52234)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Extension**: A new
migration has been added to the database to include 'description' and 'remarks' columns in the
'documents' table, allowing for more detailed document information storage.
- **Frontend UI Updates**: The user interface has been enhanced to display 'description' and
'remarks' in the recent business documents table and within document editing forms, providing
users with the ability to view and modify these new fields.
- **GraphQL API Integration**: The GraphQL schema, resolvers, and providers have been updated to
support the new 'description' and 'remarks' fields across various document types and input
operations (insert, update), ensuring API compatibility.
- **OCR and External Service Enhancements**: The OCR processing (Anthropic) and external
integrations (Gmail, Deel) have been modified to extract, capture, and store 'description' and
'remarks' automatically when new documents are processed or uploaded.
- [#2866](https://github.com/Urigo/accounter-fullstack/pull/2866)
[`a8ade58`](https://github.com/Urigo/accounter-fullstack/commit/a8ade5823342ff2fa6c7dbebd448281f0cf1a33b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Internal Transfer Logic Refinement**:
Updated the categorization logic for `ChargeTypeEnum.InternalTransfer` to identify transfers based
on whether a charge involves transactions across more than one unique account ID, replacing the
previous `internalWalletsIds` based check.
- Updated dependencies
[[`7d5a8c3`](https://github.com/Urigo/accounter-fullstack/commit/7d5a8c3fb0e1bf25011b02ab6289a2fd644db811),
[`d4bd2e6`](https://github.com/Urigo/accounter-fullstack/commit/d4bd2e6ad130cfea90b6e71832fdaaf74a1db5c9),
[`afab992`](https://github.com/Urigo/accounter-fullstack/commit/afab99296e6c4d0d25cce4a04cc14b6183c21067),
[`32fb7b4`](https://github.com/Urigo/accounter-fullstack/commit/32fb7b496fbe5a42badd5cddb8608f7e7f260cd3),
[`ca5e62b`](https://github.com/Urigo/accounter-fullstack/commit/ca5e62b91faaf33c99ac178575304797150efe1a),
[`73b11ba`](https://github.com/Urigo/accounter-fullstack/commit/73b11ba1fd676a21b4ba44fe99e2bfd181e513dc),
[`eea8a89`](https://github.com/Urigo/accounter-fullstack/commit/eea8a89638a3893814fd9a341e0080922fc703a1),
[`1c209c8`](https://github.com/Urigo/accounter-fullstack/commit/1c209c8a6045bef747039bbff3780812c6b8678f),
[`bc3ab26`](https://github.com/Urigo/accounter-fullstack/commit/bc3ab260704b677363561ef1c9403eac704a29aa),
[`6a9926c`](https://github.com/Urigo/accounter-fullstack/commit/6a9926c3948fa736e2c52ce93207b4f35e28f931),
[`ca5e62b`](https://github.com/Urigo/accounter-fullstack/commit/ca5e62b91faaf33c99ac178575304797150efe1a),
[`73b11ba`](https://github.com/Urigo/accounter-fullstack/commit/73b11ba1fd676a21b4ba44fe99e2bfd181e513dc),
[`eea8a89`](https://github.com/Urigo/accounter-fullstack/commit/eea8a89638a3893814fd9a341e0080922fc703a1),
[`1c209c8`](https://github.com/Urigo/accounter-fullstack/commit/1c209c8a6045bef747039bbff3780812c6b8678f),
[`bc3ab26`](https://github.com/Urigo/accounter-fullstack/commit/bc3ab260704b677363561ef1c9403eac704a29aa),
[`17ae14f`](https://github.com/Urigo/accounter-fullstack/commit/17ae14f2482ad876e1adce23cdbc7cb173b88dfb),
[`6a9926c`](https://github.com/Urigo/accounter-fullstack/commit/6a9926c3948fa736e2c52ce93207b4f35e28f931),
[`ca5e62b`](https://github.com/Urigo/accounter-fullstack/commit/ca5e62b91faaf33c99ac178575304797150efe1a),
[`73b11ba`](https://github.com/Urigo/accounter-fullstack/commit/73b11ba1fd676a21b4ba44fe99e2bfd181e513dc),
[`eea8a89`](https://github.com/Urigo/accounter-fullstack/commit/eea8a89638a3893814fd9a341e0080922fc703a1),
[`1c209c8`](https://github.com/Urigo/accounter-fullstack/commit/1c209c8a6045bef747039bbff3780812c6b8678f),
[`bc3ab26`](https://github.com/Urigo/accounter-fullstack/commit/bc3ab260704b677363561ef1c9403eac704a29aa),
[`17ae14f`](https://github.com/Urigo/accounter-fullstack/commit/17ae14f2482ad876e1adce23cdbc7cb173b88dfb)]:
- @accounter/green-invoice-graphql@0.8.4
- @accounter/pcn874-generator@0.6.5
- @accounter/shaam-uniform-format-generator@0.2.4
- @accounter/shaam6111-generator@0.1.6
## 0.0.9
### Patch Changes
- [#2744](https://github.com/Urigo/accounter-fullstack/pull/2744)
[`ef68321`](https://github.com/Urigo/accounter-fullstack/commit/ef68321608d60a7208e82a2c413f27beb502e3cc)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.43.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.43.1) (from
`0.43.0`, in `dependencies`)
- Updated dependency [`ai@5.0.101` ↗︎](https://www.npmjs.com/package/ai/v/5.0.101) (from `5.0.100`,
in `dependencies`)
- Updated dependency [`zod@4.1.13` ↗︎](https://www.npmjs.com/package/zod/v/4.1.13) (from `4.1.12`,
in `dependencies`)
- [#2746](https://github.com/Urigo/accounter-fullstack/pull/2746)
[`933a71e`](https://github.com/Urigo/accounter-fullstack/commit/933a71ec5640f6ef18d79ad5ebb9414ea05dc352)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`playwright@1.57.0` ↗︎](https://www.npmjs.com/package/playwright/v/1.57.0)
(from `1.56.1`, in `dependencies`)
- [#2753](https://github.com/Urigo/accounter-fullstack/pull/2753)
[`8edd047`](https://github.com/Urigo/accounter-fullstack/commit/8edd047c161f54b186972bf43151d68e837d845b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.49` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.49) (from
`2.0.45`, in `dependencies`)
- Updated dependency [`ai@5.0.103` ↗︎](https://www.npmjs.com/package/ai/v/5.0.103) (from `5.0.101`,
in `dependencies`)
- [#2757](https://github.com/Urigo/accounter-fullstack/pull/2757)
[`51b43e1`](https://github.com/Urigo/accounter-fullstack/commit/51b43e1de23746c5c8983cb5e8ee89e6b762666e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.50` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.50) (from
`2.0.49`, in `dependencies`)
- Updated dependency [`ai@5.0.104` ↗︎](https://www.npmjs.com/package/ai/v/5.0.104) (from `5.0.103`,
in `dependencies`)
- [#2758](https://github.com/Urigo/accounter-fullstack/pull/2758)
[`a399ad1`](https://github.com/Urigo/accounter-fullstack/commit/a399ad1fc2e0c954eb75a687ec355c82621df4b4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.17.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.17.0)
(from `3.16.2`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.17.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.17.0) (from `5.16.2`,
in `dependencies`)
- [#2765](https://github.com/Urigo/accounter-fullstack/pull/2765)
[`cbf2717`](https://github.com/Urigo/accounter-fullstack/commit/cbf27175d72499a6f7509eecee351f4831227f12)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.53` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.53) (from
`2.0.50`, in `dependencies`)
- Updated dependency [`ai@5.0.106` ↗︎](https://www.npmjs.com/package/ai/v/5.0.106) (from `5.0.104`,
in `dependencies`)
- [#2767](https://github.com/Urigo/accounter-fullstack/pull/2767)
[`9789030`](https://github.com/Urigo/accounter-fullstack/commit/9789030faa9712723aa8b4771061b61b8002c312)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.46.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.46.0) (from
`0.43.1`, in `dependencies`)
- [#2768](https://github.com/Urigo/accounter-fullstack/pull/2768)
[`12a26cb`](https://github.com/Urigo/accounter-fullstack/commit/12a26cb049a0f601a7d0d8664114a4bfe9b8be86)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.17.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.17.1)
(from `3.17.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.17.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.17.1) (from `5.17.0`,
in `dependencies`)
- [#2769](https://github.com/Urigo/accounter-fullstack/pull/2769)
[`4a16f8f`](https://github.com/Urigo/accounter-fullstack/commit/4a16f8fc4048e46b305adc887f926f1ff94f9bf2)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.17.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.17.1)
(from `3.17.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.17.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.17.1) (from `5.17.0`,
in `dependencies`)
- [#2777](https://github.com/Urigo/accounter-fullstack/pull/2777)
[`4b558c0`](https://github.com/Urigo/accounter-fullstack/commit/4b558c0e30f4e88671c7990344b0f6d9f509f7ab)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@167.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/167.0.0)
(from `166.0.0`, in `dependencies`)
- [#2778](https://github.com/Urigo/accounter-fullstack/pull/2778)
[`eb4e853`](https://github.com/Urigo/accounter-fullstack/commit/eb4e853581ac5cded01c5c804ee4894f9fb7dff6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.108` ↗︎](https://www.npmjs.com/package/ai/v/5.0.108) (from `5.0.106`,
in `dependencies`)
- [#2768](https://github.com/Urigo/accounter-fullstack/pull/2768)
[`12a26cb`](https://github.com/Urigo/accounter-fullstack/commit/12a26cb049a0f601a7d0d8664114a4bfe9b8be86)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **GraphQL Schema & Resolver Update**: The
GraphQL schema for `GreenInvoiceClient` now includes a `businessId` field, and a corresponding
resolver has been implemented on the server to fetch this ID from the internal client service.
- **Frontend Data & Type Alignment**: Client-side GraphQL fragments and TypeScript type
definitions have been updated to consistently include and handle the new `businessId` field for
client objects.
- **Business Link Correction**: The `IssueDocumentsTable` component has been modified to correctly
utilize the `businessId` when constructing links to business detail pages, resolving the issue
of incorrect navigation.
- [#2750](https://github.com/Urigo/accounter-fullstack/pull/2750)
[`98b8b85`](https://github.com/Urigo/accounter-fullstack/commit/98b8b859ad566372ec3cd65bc57bcc0d6fcdd6fb)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Update**: A new `users`
table is introduced in the `accounter_schema` to store user names, IDs, creation timestamps, and
roles, with `name` as the primary key and a foreign key constraint linking `users.id` to
`financial_entities.id`.
- **Dynamic User Authentication**: The authentication plugin (`auth-plugin.ts`) is refactored to
fetch user roles and associated business IDs directly from the new `users` database table,
replacing previous static or hardcoded role assignments.
- **Enhanced Password Encryption Validation**: The `encrypt-password.mjs` script now includes more
comprehensive validation checks for bcrypt, confirming that unique salts are used and hashes are
correctly compared against plaintext.
- [#2727](https://github.com/Urigo/accounter-fullstack/pull/2727)
[`6a8a686`](https://github.com/Urigo/accounter-fullstack/commit/6a8a68620fe70d4109d92a279cac5be355987e2f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Test Data and Integration Testing**:
This pull request introduces reusable demo/staging data and an integration testing framework for
the `@accounter/server` package, focusing on foundational admin context, expense charge scenarios,
and ledger generation.
- **Architectural Improvements**: Key improvements include a modular test harness, exact schema
version enforcement, diagnostics & observability, transactional seeding, environment isolation,
and a CI workflow.
- **Documentation**: Extensive documentation has been added, including JSDoc examples, idempotency
semantics, security warnings, and thread safety considerations.
- [#2751](https://github.com/Urigo/accounter-fullstack/pull/2751)
[`77ad870`](https://github.com/Urigo/accounter-fullstack/commit/77ad8705cfadfab6a4e182c80937b8d96467098a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Centralized DB Pool Management**: The
application now utilizes a single PostgreSQL connection pool, initialized at startup and shared
across the entire server, replacing individual client instantiations.
- **Dependency Injection for Database Access**: The database connection pool is now injected into
the GraphQL application context and passed explicitly to modules and plugins, promoting a
cleaner and more consistent approach to database interactions.
- **Graceful Shutdown Implementation**: New logic has been added to ensure the server and database
pool shut down gracefully upon receiving termination signals (e.g., SIGINT, SIGTERM) or
encountering critical errors, allowing in-flight requests to complete.
- **Enhanced Error Handling**: The centralized connection pool includes error handling that
triggers a graceful shutdown for database-related issues, unhandled promise rejections, and
uncaught exceptions, improving application stability.
- [#2786](https://github.com/Urigo/accounter-fullstack/pull/2786)
[`e5e6a90`](https://github.com/Urigo/accounter-fullstack/commit/e5e6a90a8bfd7c25f24dab31aab06a1ca17bdf56)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Alias Removal**: Custom path aliases
like `@modules/*` and `@shared/*` have been removed from the `tsconfig.json` and
`vitest.config.ts` configuration files.
- **Import Path Updates**: All affected TypeScript files across the `packages/server/src`
directory have been updated to use explicit relative import paths instead of the previously
configured aliases. This includes imports for GraphQL types, shared types, enums, constants, and
module-specific files.
- **Improved Module Resolution**: The change promotes more explicit and self-contained module
dependencies, which can simplify module resolution and enhance code readability and
maintainability.
- [#2754](https://github.com/Urigo/accounter-fullstack/pull/2754)
[`92d8cb1`](https://github.com/Urigo/accounter-fullstack/commit/92d8cb161398c2681d22fc1d390143f1cdc2e8eb)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Cleanup**: A new migration has
been added to drop the deprecated `deel_documents` and `deel_employees` tables from the database,
streamlining the schema.
- **Enhanced Deel Contract Handling**: New functionality has been introduced to automatically
validate and insert new Deel contracts into the database, ensuring all relevant contract
information is persisted.
- **Refined Invoice-to-Charge Mapping**: The logic for associating Deel invoices with charges has
been improved, now providing a more robust mapping that considers both receipt and invoice
charge IDs.
- **Charge Cleanup Mechanism**: The `fetchDeelDocuments` resolver now includes a post-processing
step to identify and delete any charges that end up without associated documents or
transactions, preventing orphaned data.
- **GraphQL API Update**: The `fetchDeelDocuments` GraphQL mutation now returns a list of `Charge`
objects instead of a boolean, providing more detailed feedback on the processed charges.
- [#2789](https://github.com/Urigo/accounter-fullstack/pull/2789)
[`c7d6f21`](https://github.com/Urigo/accounter-fullstack/commit/c7d6f21ed62658159b1323334501daca03c8d3e5)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Client Integration**: Added a new
public method, `getDocumentLinks`, within the `GreenInvoiceClientProvider` to abstract the
fetching of document download links using the new GraphQL query.
- **Document URL Retrieval Logic**: Updated the `insertNewDocumentFromGreenInvoice` helper
function to utilize the new `getDocumentLinks` method for retrieving document file URLs,
prioritizing English language links and including error handling for cases where no links are
found.
- [#2781](https://github.com/Urigo/accounter-fullstack/pull/2781)
[`0590c3f`](https://github.com/Urigo/accounter-fullstack/commit/0590c3fdb9f1a9718ea80530361bbeb7512d11fd)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **GreenInvoiceClient ID Refinement**: The
'id' field has been removed from GreenInvoiceClient type definitions and GraphQL fragments across
the client and server, standardizing on 'businessId' or 'greenInvoiceId' as primary identifiers.
- **Frontend Form Logic Enhancement**: The GenerateDocument component now uses a 'formDefaults'
object for initial state, and 'useEffect' ensures form data resets correctly when
'initialFormData' changes.
- **Performance Optimizations**: React's 'useCallback' and 'useMemo' hooks have been introduced in
GenerateDocument to memoize event handlers and computed values, improving rendering performance.
- **Backend Client ID Consistency**: Green Invoice resolvers have been updated to consistently use
'greenInvoiceClientId' when issuing or previewing documents, ensuring the correct client is
associated.
- Updated dependencies
[[`cbf2717`](https://github.com/Urigo/accounter-fullstack/commit/cbf27175d72499a6f7509eecee351f4831227f12),
[`eb4e853`](https://github.com/Urigo/accounter-fullstack/commit/eb4e853581ac5cded01c5c804ee4894f9fb7dff6),
[`ef68321`](https://github.com/Urigo/accounter-fullstack/commit/ef68321608d60a7208e82a2c413f27beb502e3cc),
[`ef68321`](https://github.com/Urigo/accounter-fullstack/commit/ef68321608d60a7208e82a2c413f27beb502e3cc),
[`ef68321`](https://github.com/Urigo/accounter-fullstack/commit/ef68321608d60a7208e82a2c413f27beb502e3cc),
[`c7d6f21`](https://github.com/Urigo/accounter-fullstack/commit/c7d6f21ed62658159b1323334501daca03c8d3e5)]:
- @accounter/green-invoice-graphql@0.8.3
- @accounter/pcn874-generator@0.6.4
- @accounter/shaam-uniform-format-generator@0.2.3
- @accounter/shaam6111-generator@0.1.5
## 0.0.8
### Patch Changes
- [#2513](https://github.com/Urigo/accounter-fullstack/pull/2513)
[`a2308dc`](https://github.com/Urigo/accounter-fullstack/commit/a2308dc812562b22f290bdd2e638c676fad77ac8)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency
[`@google-cloud/pubsub@5.2.0` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/5.2.0) (to
`dependencies`)
- Added dependency [`googleapis@159.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/159.0.0)
(to `dependencies`)
- Added dependency
[`node-html-to-image@5.0.0` ↗︎](https://www.npmjs.com/package/node-html-to-image/v/5.0.0) (to
`dependencies`)
- [#2534](https://github.com/Urigo/accounter-fullstack/pull/2534)
[`2d56d4e`](https://github.com/Urigo/accounter-fullstack/commit/2d56d4e7a4c38277ba9a9b99843ed4013290ab46)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.22` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.22) (from
`2.0.20`, in `dependencies`)
- [#2543](https://github.com/Urigo/accounter-fullstack/pull/2543)
[`65e3c7f`](https://github.com/Urigo/accounter-fullstack/commit/65e3c7f01993eb4f41244a40feefefa08b31a4e6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.23` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.23) (from
`2.0.22`, in `dependencies`)
- Updated dependency [`ai@5.0.60` ↗︎](https://www.npmjs.com/package/ai/v/5.0.60) (from `5.0.57`, in
`dependencies`)
- Updated dependency [`dotenv@17.2.3` ↗︎](https://www.npmjs.com/package/dotenv/v/17.2.3) (from
`17.2.2`, in `dependencies`)
- Updated dependency [`zod@4.1.12` ↗︎](https://www.npmjs.com/package/zod/v/4.1.12) (from `4.1.11`,
in `dependencies`)
- [#2555](https://github.com/Urigo/accounter-fullstack/pull/2555)
[`6143bfe`](https://github.com/Urigo/accounter-fullstack/commit/6143bfeedfaccb56ea7f11f38e58063d9895a923)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Added dependency
[`@google-cloud/pubsub@5.2.0` ↗︎](https://www.npmjs.com/package/@google-cloud/pubsub/v/5.2.0) (to
`dependencies`)
- Added dependency [`googleapis@159.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/159.0.0)
(to `dependencies`)
- Added dependency
[`node-html-to-image@5.0.0` ↗︎](https://www.npmjs.com/package/node-html-to-image/v/5.0.0) (to
`dependencies`)
- [#2559](https://github.com/Urigo/accounter-fullstack/pull/2559)
[`a7fc425`](https://github.com/Urigo/accounter-fullstack/commit/a7fc4250e5f7141b0f64e651c1103f38fae2a3dd)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.30` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.30) (from
`2.0.23`, in `dependencies`)
- Updated dependency [`ai@5.0.72` ↗︎](https://www.npmjs.com/package/ai/v/5.0.72) (from `5.0.60`, in
`dependencies`)
- Updated dependency [`strip-indent@4.1.1` ↗︎](https://www.npmjs.com/package/strip-indent/v/4.1.1)
(from `4.1.0`, in `dependencies`)
- [#2570](https://github.com/Urigo/accounter-fullstack/pull/2570)
[`584937c`](https://github.com/Urigo/accounter-fullstack/commit/584937c941c0b7d6b325a4384861d8a8c5bb483f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`graphql-scalars@1.25.0` ↗︎](https://www.npmjs.com/package/graphql-scalars/v/1.25.0) (from
`1.24.2`, in `dependencies`)
- [#2572](https://github.com/Urigo/accounter-fullstack/pull/2572)
[`a5875ad`](https://github.com/Urigo/accounter-fullstack/commit/a5875ad5be33b77938d43050cbb22af23e829b3a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`inline-css@4.0.3` ↗︎](https://www.npmjs.com/package/inline-css/v/4.0.3) (to
`dependencies`)
- Added dependency [`puppeteer@24.25.0` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.25.0) (to
`dependencies`)
- Removed dependency
[`node-html-to-image@5.0.0` ↗︎](https://www.npmjs.com/package/node-html-to-image/v/5.0.0) (from
`dependencies`)
- [#2573](https://github.com/Urigo/accounter-fullstack/pull/2573)
[`7d85775`](https://github.com/Urigo/accounter-fullstack/commit/7d85775aaa41c5b9e3bd00df878cd23c0f45cba3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@163.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/163.0.0)
(from `159.0.0`, in `dependencies`)
- [#2576](https://github.com/Urigo/accounter-fullstack/pull/2576)
[`e1d4718`](https://github.com/Urigo/accounter-fullstack/commit/e1d4718af281b6c8c9a988c758187db237757e9c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.31` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.31) (from
`2.0.30`, in `dependencies`)
- [#2580](https://github.com/Urigo/accounter-fullstack/pull/2580)
[`ff4553b`](https://github.com/Urigo/accounter-fullstack/commit/ff4553b04544d4db0fdfd22799f2f0b8efd8e737)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@164.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/164.0.0)
(from `163.0.0`, in `dependencies`)
- [#2586](https://github.com/Urigo/accounter-fullstack/pull/2586)
[`d0b183f`](https://github.com/Urigo/accounter-fullstack/commit/d0b183f9dce58ecf7a5c7086868a7fd397b2c752)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.8.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.8.0)
(from `2.7.0`, in `dependencies`)
- [#2587](https://github.com/Urigo/accounter-fullstack/pull/2587)
[`eaf61c3`](https://github.com/Urigo/accounter-fullstack/commit/eaf61c36d916e8363352d9b18e6b124f0333b437)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.34` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.34) (from
`2.0.31`, in `dependencies`)
- Updated dependency [`ai@5.0.76` ↗︎](https://www.npmjs.com/package/ai/v/5.0.76) (from `5.0.72`, in
`dependencies`)
- [#2590](https://github.com/Urigo/accounter-fullstack/pull/2590)
[`dc48475`](https://github.com/Urigo/accounter-fullstack/commit/dc484759c8bc27e54e65d0672702fcce3a65f873)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@164.1.0` ↗︎](https://www.npmjs.com/package/googleapis/v/164.1.0)
(from `164.0.0`, in `dependencies`)
- [#2594](https://github.com/Urigo/accounter-fullstack/pull/2594)
[`d23a9a2`](https://github.com/Urigo/accounter-fullstack/commit/d23a9a29af7c52662e3c07c5286867ea54ca4bd6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.34` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.34) (from
`2.0.31`, in `dependencies`)
- Updated dependency [`ai@5.0.76` ↗︎](https://www.npmjs.com/package/ai/v/5.0.76) (from `5.0.72`, in
`dependencies`)
- Updated dependency [`googleapis@164.1.0` ↗︎](https://www.npmjs.com/package/googleapis/v/164.1.0)
(from `164.0.0`, in `dependencies`)
- [#2595](https://github.com/Urigo/accounter-fullstack/pull/2595)
[`738c3d7`](https://github.com/Urigo/accounter-fullstack/commit/738c3d75046cbd3b6a091b3ede84f292ebf7e12c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`puppeteer@24.26.0` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.26.0)
(from `24.25.0`, in `dependencies`)
- [#2597](https://github.com/Urigo/accounter-fullstack/pull/2597)
[`8750702`](https://github.com/Urigo/accounter-fullstack/commit/8750702fd33bbf1458cc5facd4508b562fe0a560)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.35` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.35) (from
`2.0.34`, in `dependencies`)
- [#2605](https://github.com/Urigo/accounter-fullstack/pull/2605)
[`863a592`](https://github.com/Urigo/accounter-fullstack/commit/863a592f83b480a82156c829914b7e7a270a3f96)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`puppeteer@24.26.0` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.26.0)
(from `24.25.0`, in `dependencies`)
- [#2612](https://github.com/Urigo/accounter-fullstack/pull/2612)
[`232f7c2`](https://github.com/Urigo/accounter-fullstack/commit/232f7c2276aad578000ff99f264ea0b978079906)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.38` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.38) (from
`2.0.35`, in `dependencies`)
- Updated dependency [`ai@5.0.81` ↗︎](https://www.npmjs.com/package/ai/v/5.0.81) (from `5.0.76`, in
`dependencies`)
- Updated dependency [`puppeteer@24.26.1` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.26.1)
(from `24.26.0`, in `dependencies`)
- [#2618](https://github.com/Urigo/accounter-fullstack/pull/2618)
[`5d24324`](https://github.com/Urigo/accounter-fullstack/commit/5d24324d9f5ba6e5875a331afe55d999e510451f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.35` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.35) (from
`2.0.31`, in `dependencies`)
- Updated dependency [`ai@5.0.76` ↗︎](https://www.npmjs.com/package/ai/v/5.0.76) (from `5.0.72`, in
`dependencies`)
- Updated dependency [`cloudinary@2.8.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.8.0)
(from `2.7.0`, in `dependencies`)
- Updated dependency [`googleapis@164.1.0` ↗︎](https://www.npmjs.com/package/googleapis/v/164.1.0)
(from `164.0.0`, in `dependencies`)
- Updated dependency [`puppeteer@24.26.0` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.26.0)
(from `24.25.0`, in `dependencies`)
- [#2626](https://github.com/Urigo/accounter-fullstack/pull/2626)
[`b2049c0`](https://github.com/Urigo/accounter-fullstack/commit/b2049c0a242afb4dc1f63366a6e4611050b3c7c0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.38` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.38) (from
`2.0.35`, in `dependencies`)
- Updated dependency [`ai@5.0.81` ↗︎](https://www.npmjs.com/package/ai/v/5.0.81) (from `5.0.76`, in
`dependencies`)
- Updated dependency [`puppeteer@24.26.1` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.26.1)
(from `24.26.0`, in `dependencies`)
- [#2629](https://github.com/Urigo/accounter-fullstack/pull/2629)
[`6244c1b`](https://github.com/Urigo/accounter-fullstack/commit/6244c1bbafa7029f426bdaf796d830ff62cee006)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.38` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.38) (from
`2.0.35`, in `dependencies`)
- Updated dependency [`ai@5.0.81` ↗︎](https://www.npmjs.com/package/ai/v/5.0.81) (from `5.0.76`, in
`dependencies`)
- Updated dependency [`puppeteer@24.26.1` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.26.1)
(from `24.26.0`, in `dependencies`)
- [#2634](https://github.com/Urigo/accounter-fullstack/pull/2634)
[`b05ab20`](https://github.com/Urigo/accounter-fullstack/commit/b05ab20692349fbc7b74f36d9f0f19c02f5ba9a3)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.38` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.38) (from
`2.0.35`, in `dependencies`)
- Updated dependency [`ai@5.0.81` ↗︎](https://www.npmjs.com/package/ai/v/5.0.81) (from `5.0.76`, in
`dependencies`)
- Updated dependency [`puppeteer@24.26.1` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.26.1)
(from `24.26.0`, in `dependencies`)
- [#2638](https://github.com/Urigo/accounter-fullstack/pull/2638)
[`cad4ed9`](https://github.com/Urigo/accounter-fullstack/commit/cad4ed9a12ef09c22d0c55715ba1453a73aa0773)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv-cli@11.0.0` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/11.0.0)
(from `10.0.0`, in `dependencies`)
- [#2639](https://github.com/Urigo/accounter-fullstack/pull/2639)
[`0792f80`](https://github.com/Urigo/accounter-fullstack/commit/0792f80e6c83326e63066e3d51c65cf554cb0a6e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`puppeteer@24.27.0` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.27.0)
(from `24.26.1`, in `dependencies`)
- [#2643](https://github.com/Urigo/accounter-fullstack/pull/2643)
[`485cec8`](https://github.com/Urigo/accounter-fullstack/commit/485cec843689ba4777711231b88d876f1eac7022)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@10.0.1` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/10.0.1)
(from `10.0.0`, in `dependencies`)
- [#2644](https://github.com/Urigo/accounter-fullstack/pull/2644)
[`7f9f9be`](https://github.com/Urigo/accounter-fullstack/commit/7f9f9be25556b5f66f430a5f660a71ef1b1b3464)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.39` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.39) (from
`2.0.38`, in `dependencies`)
- Updated dependency [`ai@5.0.82` ↗︎](https://www.npmjs.com/package/ai/v/5.0.82) (from `5.0.81`, in
`dependencies`)
- [#2646](https://github.com/Urigo/accounter-fullstack/pull/2646)
[`1c8d288`](https://github.com/Urigo/accounter-fullstack/commit/1c8d28840c2c54a3948cd965695e16f84f0fccf2)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.39` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.39) (from
`2.0.38`, in `dependencies`)
- Updated dependency [`ai@5.0.82` ↗︎](https://www.npmjs.com/package/ai/v/5.0.82) (from `5.0.81`, in
`dependencies`)
- [#2647](https://github.com/Urigo/accounter-fullstack/pull/2647)
[`f171a4a`](https://github.com/Urigo/accounter-fullstack/commit/f171a4a83c5f30b0135c72991b4796677223ff39)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.40` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.40) (from
`2.0.39`, in `dependencies`)
- Updated dependency [`ai@5.0.86` ↗︎](https://www.npmjs.com/package/ai/v/5.0.86) (from `5.0.82`, in
`dependencies`)
- [#2654](https://github.com/Urigo/accounter-fullstack/pull/2654)
[`7fef068`](https://github.com/Urigo/accounter-fullstack/commit/7fef0682c7316153ae5ffde42f97ce7284dd4c9a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`graphql@16.12.0` ↗︎](https://www.npmjs.com/package/graphql/v/16.12.0) (from
`16.11.0`, in `dependencies`)
- [#2655](https://github.com/Urigo/accounter-fullstack/pull/2655)
[`e3dc806`](https://github.com/Urigo/accounter-fullstack/commit/e3dc80677201cdbdd038953b572486c25119989e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.16.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.16.1)
(from `3.16.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.16.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.16.1) (from `5.16.0`,
in `dependencies`)
- [#2662](https://github.com/Urigo/accounter-fullstack/pull/2662)
[`fa15c75`](https://github.com/Urigo/accounter-fullstack/commit/fa15c754be3cf82893a3573b4ebe60776c96a296)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`puppeteer@24.28.0` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.28.0)
(from `24.27.0`, in `dependencies`)
- [#2664](https://github.com/Urigo/accounter-fullstack/pull/2664)
[`21a384a`](https://github.com/Urigo/accounter-fullstack/commit/21a384abf59e615d29a5aae591815f6540ab51ac)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`playwright@1.56.1` ↗︎](https://www.npmjs.com/package/playwright/v/1.56.1) (to
`dependencies`)
- Removed dependency [`puppeteer@24.28.0` ↗︎](https://www.npmjs.com/package/puppeteer/v/24.28.0)
(from `dependencies`)
- [#2669](https://github.com/Urigo/accounter-fullstack/pull/2669)
[`3d3f443`](https://github.com/Urigo/accounter-fullstack/commit/3d3f4430cae9f6371507a6cfc785213797715405)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.16.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.16.1)
(from `3.16.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.16.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.16.1) (from `5.16.0`,
in `dependencies`)
- [#2671](https://github.com/Urigo/accounter-fullstack/pull/2671)
[`76e0893`](https://github.com/Urigo/accounter-fullstack/commit/76e089345bc7ede786a28a4c93ed0c19f896e980)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency
[`json-bigint-patch@0.0.8` ↗︎](https://www.npmjs.com/package/json-bigint-patch/v/0.0.8) (to
`dependencies`)
- [#2677](https://github.com/Urigo/accounter-fullstack/pull/2677)
[`88e1537`](https://github.com/Urigo/accounter-fullstack/commit/88e153761668a2c29445b6bcf61b2b85cd28c10b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.41` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.41) (from
`2.0.40`, in `dependencies`)
- Updated dependency
[`@whatwg-node/fetch@0.10.12` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.12)
(from `0.10.11`, in `dependencies`)
- Updated dependency [`ai@5.0.87` ↗︎](https://www.npmjs.com/package/ai/v/5.0.87) (from `5.0.86`, in
`dependencies`)
- [#2678](https://github.com/Urigo/accounter-fullstack/pull/2678)
[`8a3a1c4`](https://github.com/Urigo/accounter-fullstack/commit/8a3a1c4319709929b6dbdb4281d56309dfc2168c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@11.0.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/11.0.0)
(from `10.0.1`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@9.0.0` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/9.0.0)
(from `8.0.0`, in `dependencies`)
- [#2679](https://github.com/Urigo/accounter-fullstack/pull/2679)
[`f2cd908`](https://github.com/Urigo/accounter-fullstack/commit/f2cd908b2e7bc48777fb65aa2c3c3b517f52179c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`googleapis@165.0.0` ↗︎](https://www.npmjs.com/package/googleapis/v/165.0.0)
(from `164.1.0`, in `dependencies`)
- [#2680](https://github.com/Urigo/accounter-fullstack/pull/2680)
[`1b79c90`](https://github.com/Urigo/accounter-fullstack/commit/1b79c90962c177004cdcc2546dcf857210389ab5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.16.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.16.2)
(from `3.16.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.16.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.16.2) (from `5.16.1`,
in `dependencies`)
- [#2685](https://github.com/Urigo/accounter-fullstack/pull/2685)
[`80402e0`](https://github.com/Urigo/accounter-fullstack/commit/80402e07198a7c6bb78aa9402df7ea4ead779411)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.42` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.42) (from
`2.0.41`, in `dependencies`)
- Updated dependency [`ai@5.0.89` ↗︎](https://www.npmjs.com/package/ai/v/5.0.89) (from `5.0.87`, in
`dependencies`)
- [#2687](https://github.com/Urigo/accounter-fullstack/pull/2687)
[`051f82a`](https://github.com/Urigo/accounter-fullstack/commit/051f82aaf9f49dc49875a52e18713f6ed7b3408f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.44` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.44) (from
`2.0.42`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.42.4` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.42.4) (from
`0.42.2`, in `dependencies`)
- Updated dependency
[`@whatwg-node/fetch@0.10.13` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.13)
(from `0.10.12`, in `dependencies`)
- Updated dependency [`ai@5.0.93` ↗︎](https://www.npmjs.com/package/ai/v/5.0.93) (from `5.0.89`, in
`dependencies`)
- Updated dependency
[`json-bigint-patch@0.0.9` ↗︎](https://www.npmjs.com/package/json-bigint-patch/v/0.0.9) (from
`0.0.8`, in `dependencies`)
- [#2720](https://github.com/Urigo/accounter-fullstack/pull/2720)
[`5857419`](https://github.com/Urigo/accounter-fullstack/commit/5857419c1c3f5fe685ab7a56fc4e65049415fd19)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.43.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.43.0) (from
`0.42.4`, in `dependencies`)
- [#2721](https://github.com/Urigo/accounter-fullstack/pull/2721)
[`2a5bddd`](https://github.com/Urigo/accounter-fullstack/commit/2a5bddd48ce2ef233d50b4c0c9fc91b94ba01585)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.45` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.45) (from
`2.0.44`, in `dependencies`)
- Updated dependency [`ai@5.0.95` ↗︎](https://www.npmjs.com/package/ai/v/5.0.95) (from `5.0.93`, in
`dependencies`)
- [#2729](https://github.com/Urigo/accounter-fullstack/pull/2729)
[`543e8f5`](https://github.com/Urigo/accounter-fullstack/commit/543e8f53b215f912fe26811e26f5a9783347e6ef)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.97` ↗︎](https://www.npmjs.com/package/ai/v/5.0.97) (from `5.0.95`, in
`dependencies`)
- [#2735](https://github.com/Urigo/accounter-fullstack/pull/2735)
[`5eeb7d4`](https://github.com/Urigo/accounter-fullstack/commit/5eeb7d444c49fd56d61b2916d4770f4c9c9eaf9d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.100` ↗︎](https://www.npmjs.com/package/ai/v/5.0.100) (from `5.0.97`,
in `dependencies`)
- [#2631](https://github.com/Urigo/accounter-fullstack/pull/2631)
[`86c8b3e`](https://github.com/Urigo/accounter-fullstack/commit/86c8b3ebea4e3be0c0e99a108ec1cdad8b39e5d8)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Update**: A new
"operations_count" column has been added to the "clients_contracts" table to store the operational
limit for each contract.
- **GraphQL API Extension**: The GraphQL schema, resolvers, and database providers have been
updated to support the "operationsLimit" field for creating, updating, and querying contract
data.
- **User Interface Integration**: The client application now includes a dedicated input field for
setting the "operationsLimit" in the contract modification dialog and displays this value in the
contract details section.
- [#2719](https://github.com/Urigo/accounter-fullstack/pull/2719)
[`05ffb2d`](https://github.com/Urigo/accounter-fullstack/commit/05ffb2d1247360e54d3b668605410094235fc423)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Refactored Charge Attributes**: The
pull request removes the direct usage of 'extended_charge' attributes, which were denormalized
fields. Instead, charge-related metadata such as total amounts, document counts, transaction
counts, and business IDs are now dynamically computed using new helper functions that query
associated entities (transactions, documents, ledger records) on demand.
- **Enhanced Data Retrieval Helpers**: New helper functions like 'calculateTotalAmount',
'getChargeBusinesses', 'getChargeDocumentsMeta', 'getChargeLedgerMeta',
'getChargeTaxCategoryId', 'getTransactionsMeta', and 'getLedgerMeta' have been introduced or
significantly updated. These helpers ensure that charge metadata is always derived from the most
current source data.
- **Updated Resolvers and Logic**: Numerous resolvers and helper functions across various modules
(e.g., accountant-approval, business-trips, documents, ledger, reports) have been updated to
utilize the new data retrieval helpers. This ensures that all parts of the application correctly
fetch and process charge information without relying on the deprecated 'extended_charge'
attributes.
- **Improved Caching and Type Definitions**: Caching has been added to the 'ChargesProvider' for
better performance. Additionally, GraphQL type definitions for 'ChargeMetadata' have been
simplified by removing redundant fields like 'invalidDocuments' and 'invalidTransactions', as
these are now computed dynamically.
- [#2551](https://github.com/Urigo/accounter-fullstack/pull/2551)
[`14900d1`](https://github.com/Urigo/accounter-fullstack/commit/14900d10209272429118ff4bd2e52893c813170b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Error Handling Standardization**: The
primary goal of this PR is to standardize and enhance error handling across various modules. This
involves ensuring that error messages are more descriptive, consistent, and that the original
error context is preserved in logs.
- [#2734](https://github.com/Urigo/accounter-fullstack/pull/2734)
[`d6ea553`](https://github.com/Urigo/accounter-fullstack/commit/d6ea553a5c5da6d4b552bc09f65ab39ca843c668)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Country Seeding Utility**: A new
helper file, `seed-countries.helper.ts`, has been introduced to centralize the logic for managing
country data, including retrieval and database seeding.
- **Dynamic and Idempotent Country Seeding**: The new utility provides a `seedCountries` function
that dynamically inserts country names and codes from an enum into the database, utilizing
`ON CONFLICT (code) DO NOTHING` to ensure idempotency.
- **Refactored Seed Script**: The main `scripts/seed.ts` file has been updated to use the new
`seedCountries` utility, replacing a large, hardcoded SQL `INSERT` statement with a cleaner,
more maintainable function call.
- [#2584](https://github.com/Urigo/accounter-fullstack/pull/2584)
[`549a2a6`](https://github.com/Urigo/accounter-fullstack/commit/549a2a6fed7959795d7ca130b0ad567c5f4f62c8)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Update**: Introduced a
'locality' column to the 'user_context' table and established foreign key relationships for
country codes in both 'user_context' and 'businesses' tables, linking them to a 'countries' table.
- **Dynamic Country Selection**: The 'Locality' field in the 'ModifyBusinessFields' component now
dynamically fetches and displays a list of all countries, replacing previous hardcoded options.
- **User-Contextual Default Country**: New businesses created via the 'InsertBusiness' modal will
now default their country based on the user's 'locality' from their 'userContext'.
- **Centralized Locality Management**: The 'admin-context' and 'user-context' modules on the
server-side have been updated to store and retrieve the user's 'locality', ensuring consistent
access across the application.
- **VAT Logic Enhancement**: VAT validation and deduction logic now utilize the dynamically
retrieved 'adminContext.locality' instead of a hardcoded country name, improving flexibility and
accuracy.
- [#2697](https://github.com/Urigo/accounter-fullstack/pull/2697)
[`e2cc7b8`](https://github.com/Urigo/accounter-fullstack/commit/e2cc7b80dbd798f8639e0a67b367c67e719e7891)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Annual Revenue Report**: A new
report screen has been added to display annual revenue data, categorized by country and client.
- **Interactive User Interface**: The report features an interactive user interface allowing users
to expand and collapse country and client details to view underlying transactions.
- **Data Filtering and Export**: Users can filter the report by year using a dedicated year picker
and export the displayed data into a CSV format.
- **GraphQL API Integration**: New GraphQL types and a query have been introduced on the
server-side to fetch the structured annual revenue data.
- **Navigation Integration**: The new Annual Revenue Report is now accessible via a new entry in
the application's sidebar navigation.
- [#2649](https://github.com/Urigo/accounter-fullstack/pull/2649)
[`15ed6f9`](https://github.com/Urigo/accounter-fullstack/commit/15ed6f982a5d288a1159ccd069fca14b35801a18)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **New Charges Auto-Matcher Module**: A
new GraphQL module `charges-matcher` has been introduced, complete with its directory structure,
TypeScript types, and GraphQL schema definitions for single-match and auto-match functionalities.
- **Comprehensive Documentation**: Detailed `SPEC.md`, `PROMPT_PLAN.md`, and `TODO.md` documents
have been added, outlining the technical specification, a 17-step implementation plan, and a
checklist for the transaction-document matching system.
- **Core Matching Logic Implemented**: Helper functions for calculating confidence scores based on
amount, currency, business ID, and date proximity have been implemented and thoroughly tested.
- **Data Aggregation Providers**: Providers for aggregating multiple transactions and documents
into single representations, including filtering, currency/business ID validation, and
description concatenation, are now in place.
- **Single-Match & Auto-Match Core Functions**: The core logic for finding single matches (with
date window filtering and tie-breaking) and for processing charges for auto-matching (including
merge direction determination and high-confidence thresholding) has been developed.
- **Robust Testing Infrastructure**: A comprehensive testing framework, including mock factories
and 494 passing unit and integration tests, has been established, ensuring high code coverage.
- **GraphQL Integration**: GraphQL resolvers for `findChargeMatches` and `autoMatchCharges`
mutations/queries have been added, and the module is registered in the main GraphQL application.
- **Type Safety Improvement**: The `amount` type in the `DocumentSuggestionsProto` interface has
been updated from `string` to `number` for enhanced type safety.
- [#2664](https://github.com/Urigo/accounter-fullstack/pull/2664)
[`21a384a`](https://github.com/Urigo/accounter-fullstack/commit/21a384abf59e615d29a5aae591815f6540ab51ac)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Puppeteer Replacement**: This PR
replaces Puppeteer with Playwright for generating PDFs from HTML in the
`gmail-service.provider.ts` file.
- **Dependency Updates**: The PR adds `playwright` as a dependency to
`packages/server/package.json` and removes Puppeteer configurations.
- [#2714](https://github.com/Urigo/accounter-fullstack/pull/2714)
[`4e3dd01`](https://github.com/Urigo/accounter-fullstack/commit/4e3dd01eb2215d09ece496f25456bec76c3bf9d1)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Function Signature Refactor**: The
`ledgerGenerationByCharge` function has been refactored from a higher-order function that returned
another function, to a direct `async` function that accepts all its parameters at once.
- **Simplified Call Sites**: All instances where `ledgerGenerationByCharge` was called have been
updated across various resolvers and reports to reflect its new, simplified signature, removing
the double-invocation pattern.
- **Improved Type Safety**: The function's return type and parameters have been explicitly defined
with `Promise<Maybe<ResolverTypeWrapper<CommonError | LedgerRecordsProto>>>` and
`GraphQLResolveInfo`, enhancing type safety and clarity.
- [#2629](https://github.com/Urigo/accounter-fullstack/pull/2629)
[`6244c1b`](https://github.com/Urigo/accounter-fullstack/commit/6244c1bbafa7029f426bdaf796d830ff62cee006)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Update**: The
`clients_contracts` table in the database has been updated to replace the single `purchase_order`
column (string) with a new `purchase_orders` column, which is an array of text (`text[]`),
allowing multiple POs per contract.
- **GraphQL API Evolution**: The GraphQL schema has been modified to reflect this change, updating
`purchaseOrder: String` to `purchaseOrders: [String!]!` across the `Contract` type,
`CreateContractInput`, and `UpdateContractInput`.
- **Frontend User Interface**: The client-side application now supports displaying and managing
multiple Purchase Orders. Users can add new POs, view all associated POs (with the latest one
highlighted), and remove POs directly from the contract modification dialog.
- **Backend Logic Adaptation**: Server-side resolvers and database providers have been updated to
correctly handle the new `purchase_orders` array when creating, updating, and querying
contracts.
- **Green Invoice Integration**: The integration with Green Invoice has been adjusted to use the
first Purchase Order from the `purchase_orders` array when generating document remarks, ensuring
compatibility with external systems that might expect a single PO reference.
- [#2513](https://github.com/Urigo/accounter-fullstack/pull/2513)
[`a2308dc`](https://github.com/Urigo/accounter-fullstack/commit/a2308dc812562b22f290bdd2e638c676fad77ac8)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Gmail Listener Implementation**:
Introduced core functionality to listen for Gmail notifications using Google Cloud Pub/Sub,
enabling real-time email processing.
- **Comprehensive Setup Guide**: Added `GMAIL_LISTENER.md` with detailed steps for Google Cloud
project setup, API enablement, service accounts, Pub/Sub topics, OAuth2 credentials, and
environment variables.
- **Modular Service Architecture**: Implemented `GmailService` for email interaction and
`PubSubService` for handling incoming notifications, ensuring a clean separation of concerns.
- **OAuth2 Troubleshooting Utility**: Included a `troubleshootOAuth` function to assist with
debugging common OAuth2 and Gmail watch permission issues, simplifying the setup process.
- **Alternative Polling Mechanism**: Provided a documented fallback polling approach for scenarios
where Pub/Sub integration might be overly complex or not feasible.
- [#2661](https://github.com/Urigo/accounter-fullstack/pull/2661)
[`bf705b9`](https://github.com/Urigo/accounter-fullstack/commit/bf705b93457bf20b72633f70b5d6782ceaef8a03)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Charge Matching UI**: A
comprehensive frontend has been introduced for displaying and interacting with charge matches,
including dedicated cell components for various data types like business, date, tags, tax
category, and charge type.
- **Charge Matches Table Implementation**: A new `ChargeMatchesTable` component has been
implemented using `@tanstack/react-table`, featuring sorting, column visibility, and integration
with a `MergeChargesButton`.
- **Integration with Extended Charge Info**: The new charge matches table is now conditionally
displayed within the `ChargeExtendedInfo` component, appearing when a charge is missing
accounting documents or transactions.
- **GraphQL Schema and Resolver Updates**: The `ChargeMatch` GraphQL type has been extended to
include the full `Charge` object, and a corresponding resolver was added on the backend to fetch
this related charge data.
- **Reusable UI Components**: New generic `DataTableColumnHeader` and `Score` components were
developed to standardize table headers and score visualizations across the application,
promoting consistency and reusability.
- **Improved Merge Charges UX**: The `MergeChargesButton` now requires at least two charges to be
selected for merging and utilizes a more modern Shadcn `Dialog` component with tooltips for
better user guidance and clarity.
- [#2548](https://github.com/Urigo/accounter-fullstack/pull/2548)
[`d72901a`](https://github.com/Urigo/accounter-fullstack/commit/d72901adb3b1dcc3e1e88fc797d8097f49f00cc5)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Intent**: This pull request aims to
enhance the backend's business suggestions by introducing a new `emailListener` configuration.
This allows for more detailed control over how emails related to a business are processed,
including specifying internal email links, whether to process the email body, and which attachment
types (PDF, PNG, JPEG) to consider.
- **Key Changes**: The core changes involve refactoring the `suggestionDataSchema` from
`modules/documents` to `modules/financial-entities`, extending this schema to include a new
`emailListener` field, and updating the GraphQL API to expose these new types. Business logic
for merging and handling `emailListener` configurations during updates has been implemented.
Additionally, a new `getBusinessByEmail` method was added to retrieve businesses based on emails
in their suggestion data, along with enhanced cache invalidation for business data.
- **Affected Files**: The changes span across multiple files:
* `eslint.config.mjs`: Updated to recognize the new `SuggestionsEmailListenerConfig`.
* `packages/server/src/modules/charges/resolvers/charge-suggestions/charge-suggestions.resolver.ts`:
Updated import path for `suggestionDataSchema`.
* `packages/server/src/modules/documents/helpers/suggestion-data-schema.helper.ts`: Removed.
* `packages/server/src/modules/documents/types.ts`: Removed `SuggestionData` export.
* `packages/server/src/modules/financial-entities/helpers/business-suggestion-data-schema.helper.ts`:
Added, defining `suggestionDataSchema` with `emailListener` and `EmailListenerConfig`.
* `packages/server/src/modules/financial-entities/helpers/businesses.helper.ts`: Modified to
handle `emailListener` merging logic and updated suggestion field merging.
* `packages/server/src/modules/financial-entities/providers/businesses.provider.ts`: Added
`getBusinessByEmail` query and method, renamed `insertBusinessesLoader`, and enhanced cache
invalidation for business emails.
* `packages/server/src/modules/financial-entities/resolvers/businesses.resolver.ts`: Updated to
use the new `emailListener` field in mutations and resolvers, and adjusted DataLoader usage.
* `packages/server/src/modules/financial-entities/typeDefs/businesses.graphql.ts`: Modified
GraphQL schema to include `SuggestionsEmailListenerConfig`, `EmailAttachmentType` enum, and
updated `Suggestion` and `SuggestionInput` types.
* `packages/server/src/modules/financial-entities/types.ts`: Exported new `SuggestionData` and
`EmailListenerConfig` types.
* `packages/server/src/modules/transactions/resolvers/transaction-suggestions.resolver.ts`:
Updated import path for `suggestionDataSchema`.
- [#2626](https://github.com/Urigo/accounter-fullstack/pull/2626)
[`b2049c0`](https://github.com/Urigo/accounter-fullstack/commit/b2049c0a242afb4dc1f63366a6e4611050b3c7c0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Client Creation Flow Enhancement**: The
"Create New Business" dialog now includes an option to immediately create a client associated with
the new business. If selected, a `ModifyClientDialog` will automatically open after business
creation, streamlining the onboarding process.
- **`ModifyClientDialog` Flexibility**: The `ModifyClientDialog` component has been enhanced with
a `showTrigger` prop, allowing it to be rendered without its default trigger button, making it
suitable for programmatic opening. It also now consistently calls the `onDone` callback when
closed, improving callback reliability.
- **User Navigation Improvements**: The user dropdown menu now displays the actual logged-in
username from the `UserContext` and includes a direct link to the "Admin Configurations" page
for the user's primary business, providing quicker access to administrative settings.
- **Form Schema Refinements**: The business creation form schema has been updated to use more
direct Zod validators (`z.email()`, `z.url()`) for better type safety and includes a new
`isClient` boolean field to indicate if the business is also a client.
- [#2582](https://github.com/Urigo/accounter-fullstack/pull/2582)
[`32276b4`](https://github.com/Urigo/accounter-fullstack/commit/32276b47e164f0976fcdd5523fa5e26f0704014f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Business/Client Page**: Introduced
a comprehensive new page for businesses and clients, consolidating various details into a single,
tabbed interface for improved management and overview.
- **Modular UI Components**: Developed several new UI components (`BusinessHeader`,
`ChargesSection`, `ChartsSection`, `ConfigurationsSection`, `ContactInfoSection`,
`ContractsSection`, `DocumentsSection`, `IntegrationsSection`) to structure and display
different aspects of business information.
- **Dynamic Routing and Tab Navigation**: Implemented dynamic routing for the new business page
(`/businesses/:businessId`) and integrated tab-based navigation to switch between different
sections like contact info, configurations, and analytics.
- **Business Configuration Form**: Added a detailed configuration form allowing users to manage
VAT settings, tax exemptions, default sort codes, tax categories, IRS codes, and auto-matching
rules for bank transactions and documents (phrases, emails, attachment types).
- **Backend GraphQL Enhancements**: Extended GraphQL types for `Business`, `FinancialEntity`, and
`TaxCategory` to include `createdAt` and `updatedAt` fields, providing essential timestamp
information.
- **UI Library Integration**: Integrated the `@radix-ui/react-progress` component and refactored
the `pcn874RecordType` enum definition into a shared helper for better code organization.
- [#2718](https://github.com/Urigo/accounter-fullstack/pull/2718)
[`067b2d6`](https://github.com/Urigo/accounter-fullstack/commit/067b2d65d54e94915a0c4fa6577cfe34ba29b686)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Feature Plan Document**: A detailed
`bank-deposits-extension-plan.md` is added, outlining the scope, implementation steps, technical
decisions, and UI/GraphQL patterns for upcoming bank deposit management features.
- **Client-Side Transaction Table Components**: New React components are introduced to display
bank deposit transactions, including individual cells for date, amount, cumulative balances
(origin and local), and a deposit/withdrawal indicator, laying the groundwork for the UI.
- **Core Deposit Transactions Table**: A `DepositsTransactionsTable` component is added,
leveraging `@tanstack/react-table` to render transactions for a given deposit, calculate
cumulative balances, and display loading states.
- **GraphQL Schema Expansion**: The server's GraphQL schema for bank deposits is significantly
extended with a new `allDeposits` query, `createDeposit` and `assignTransactionToDeposit`
mutations, and enriched `BankDeposit` type fields (e.g., `currency`, `openDate`,
`currentBalance`, `currencyError`).
- **Authorization and Error Handling**: All new GraphQL operations are secured with
`@auth(role: ACCOUNTANT)`, and a minor improvement to error handling in the `deposit` resolver
is included to re-throw `GraphQLError` instances directly.
- Added ledger generation logic for "breathing deposits" (multi-transaction deposits) with
automatic foreign exchange revaluation
- [#2627](https://github.com/Urigo/accounter-fullstack/pull/2627)
[`6f775f0`](https://github.com/Urigo/accounter-fullstack/commit/6f775f0670dbabad5b4ce0746b4ad18d349d313f)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New 'Accounts' Section in Admin
Business View**: A dedicated tab named 'Accounts' has been added to the admin business page,
allowing administrators to manage financial accounts associated with a business.
- **Comprehensive Financial Account Management**: The new section introduces functionality to
view, create, and edit various types of financial accounts, including bank accounts, credit
cards, crypto wallets, bank deposit accounts, and foreign securities accounts. This includes a
modal for modifying account details.
- **Extended Bank Account Details**: Bank accounts can now store a wide array of specific
information such as extended bank numbers, party preferred indications, account involvement
codes, various dates (deal, update, agreement opening), and other descriptive fields like
service authorization and product labels.
- **Dynamic Currency and Tax Category Handling**: Financial accounts now support multiple
currencies, each linked to its own tax category. The UI allows for dynamic addition and removal
of these currency-tax category pairs during account creation or editing.
- **Backend CRUD Operations for Financial Accounts**: New GraphQL queries and mutations have been
implemented on the server-side to support full Create, Read, Update, and Delete (CRUD)
operations for financial accounts, including fetching accounts by owner and by ID.
- **Database Migration for Account Name**: A new database migration has been added to introduce an
`account_name` column to the `financial_accounts` table, providing more flexibility for account
naming.
- [#2572](https://github.com/Urigo/accounter-fullstack/pull/2572)
[`a5875ad`](https://github.com/Urigo/accounter-fullstack/commit/a5875ad5be33b77938d43050cbb22af23e829b3a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **HTML to PDF Conversion**: The method
for converting HTML content has been upgraded from generating PNG images using
`node-html-to-image` to producing high-fidelity PDF documents using `puppeteer`. This change
significantly improves the quality and format of generated documents.
- **Dependency Management**: The project dependencies have been updated to reflect the new
conversion mechanism. `node-html-to-image` was removed, and new packages including `puppeteer`,
`handlebars`, and `inline-css` were added to facilitate the enhanced PDF generation.
- **Improved Error Handling**: Error messages within the `GmailServiceProvider` have been refined
to provide more specific and actionable information, aiding in debugging and troubleshooting
document processing failures.
- [#2554](https://github.com/Urigo/accounter-fullstack/pull/2554)
[`437352d`](https://github.com/Urigo/accounter-fullstack/commit/437352dfc33e40cb6a6e89e9c3c26df9ece063e1)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Intent**: This pull request aims to
prevent the creation of duplicate document entries by introducing a file hashing mechanism. It
adds a `file_hash` column to the `documents` table and integrates file hash generation and storage
into the document upload process.
- **Key Changes**: A new database migration adds a `file_hash` column to the
`accounter_schema.documents` table. File content is now hashed during the upload process (e.g.,
for Deel invoices and general document uploads) and stored in this new column. A new DataLoader
is introduced to efficiently retrieve documents by their file hash, and caching is updated to
include hash-based lookups. Integrations like Green Invoice and direct document insertion via
resolvers are updated to handle the new `fileHash` field, initially setting it to `null` where
the hash is not immediately available.
- **Database Schema Updates**: A new migration (`2025-09-19T10-06-24.add-documents-hash.ts`) is
added to create a `file_hash` column (type `text`) in the `accounter_schema.documents` table.
This migration is registered in `run-pg-migrations.ts`.
- **File Hashing Logic**: The `hashStringToInt` helper is imported and used to generate an integer
hash from file content. This is applied in `deel.helper.ts` when uploading Deel invoices and in
`upload.helper.ts` for general document uploads. The hashing process runs in parallel with other
asynchronous operations like Cloudinary uploads and OCR data extraction.
- **Document Upload and Processing**: The `uploadDeelInvoice` function in `deel.helper.ts` now
calculates and stores the file hash. The `getDocumentFromFile` function in `upload.helper.ts` is
refactored to use a new helper `getDocumentFromUrlsAndOceData` and also calculates the file
hash, passing it to the document creation logic. This ensures the hash is captured for newly
uploaded documents.
- **Data Access Layer**: The `DocumentsProvider` in `documents.provider.ts` is updated with a new
SQL query (`getDocumentsByHashes`) and a `DataLoader` (`getDocumentByHash`) to fetch documents
efficiently using their file hash. Cache invalidation in `deleteDocument` now also clears
entries based on `file_hash`.
- **Integrations and Resolvers**: The `insertDocuments` SQL query and related
`IInsertDocumentsParams` are updated to include the `file_hash` field. In
`documents.resolver.ts` and `green-invoice.helper.ts`, new document insertions explicitly set
`fileHash` to `null` where the hash is not generated at that specific point in the workflow.
- [#2605](https://github.com/Urigo/accounter-fullstack/pull/2605)
[`863a592`](https://github.com/Urigo/accounter-fullstack/commit/863a592f83b480a82156c829914b7e7a270a3f96)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Admin Business Configuration Tab**:
Introduced a dedicated "Admin" tab within the business details page to manage administrative
financial information.
- **Frontend Component Development**: A new `AdminBusinessSection` React component was created,
featuring a form for various tax and registration details, with client-side validation using
`zod` and `react-hook-form`.
- **GraphQL API Extension**: New GraphQL types (`CreateAdminBusinessInput`,
`UpdateAdminBusinessInput`) and mutations (`createAdminBusiness`, `updateAdminBusiness`,
`deleteAdminBusiness`) were added to the backend to support the management of admin business
data.
- **Data Fetching and Update Logic**: A new `useUpdateAdminBusiness` hook was implemented on the
frontend to interact with the new GraphQL mutations, handling data submission and user feedback.
- **Backend Resolver Implementation**: Server-side resolvers were updated to expose administrative
business fields and handle the logic for fetching and updating this data.
- [#2561](https://github.com/Urigo/accounter-fullstack/pull/2561)
[`e853097`](https://github.com/Urigo/accounter-fullstack/commit/e853097bbe987be8292981c527ba49562bf2f28b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Refactored Ledger Storage Helper**: The
`storeInitialGeneratedRecords` function in `ledgrer-storage.helper.ts` has been updated to accept
a `chargeId` string instead of a full `charge` object. It now internally fetches the `charge`
using `ChargesProvider` to ensure the most up-to-date data is used.
- **Enhanced Data Integrity**: A null check for the fetched `charge` object has been added within
`storeInitialGeneratedRecords`, preventing potential errors and ensuring that ledger records are
only processed for existing charges.
- **Widespread Resolver Updates**: All relevant ledger generation resolvers across the application
have been updated to pass `charge.id` to the refactored `storeInitialGeneratedRecords` function,
aligning with the new signature and ensuring consistent behavior.
- [#2608](https://github.com/Urigo/accounter-fullstack/pull/2608)
[`b27476e`](https://github.com/Urigo/accounter-fullstack/commit/b27476e4e67717223990c57b990510edbc93d910)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Businesses Screen UI Overhaul**: The
main businesses listing screen has been completely redesigned, transitioning from a traditional
table layout to a modern, card-like display for improved aesthetics and user experience.
- **New BusinessHeader Component**: A dedicated `BusinessHeader` component was introduced to
standardize the display of business information, including dynamic status (Active/Inactive) and
role (Admin/Client) badges.
- **Enhanced Business Navigation**: Each business entry in the list is now clickable, allowing
direct navigation to its detailed page, and includes integrated checkboxes for selection,
enhancing interactivity.
- **Refactored New Business Form**: The 'Insert Business' modal has been significantly refactored,
incorporating Zod for robust validation and organizing the form into distinct, user-friendly
sections for contact information, default settings, and auto-matching configurations.
- **Simplified Business Insertion Logic**: The backend `insertBusiness` resolver was updated to
streamline the process of adding new businesses, specifically by simplifying the handling of tax
category insertions.
- [#2645](https://github.com/Urigo/accounter-fullstack/pull/2645)
[`9d8f87a`](https://github.com/Urigo/accounter-fullstack/commit/9d8f87ad54b583964ba731b8478742c09c5600df)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Refactor**: The
`businesses_admin` table is updated to replace single-value fields for tax and social security
identifiers with array-based JSONB columns, allowing for multiple annual IDs and historical tax
rates.
- **GraphQL Schema Update**: The GraphQL `AdminBusiness` type and related input types
(`CreateAdminBusinessInput`, `UpdateAdminBusinessInput`) are modified to reflect the new array
structures, introducing `AnnualId` and `TaxAdvancesRate` types.
- **Frontend Form Overhaul**: The `admin-business-section.tsx` component is refactored to use
`react-hook-form`'s `useFieldArray` for dynamic management of annual IDs and tax rates,
providing a more flexible user interface.
- **Backend Logic Adaptation**: New Zod schemas and resolver logic are implemented on the server
to validate and process the updated array-based data for admin business updates.
- [#2640](https://github.com/Urigo/accounter-fullstack/pull/2640)
[`26618ff`](https://github.com/Urigo/accounter-fullstack/commit/26618ff2d4a47d63e16ecec59f39887f48df52cf)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Renaming and Restructuring**: Key
components and routes related to "Business Transactions" have been renamed to "Business Ledger
Records" and moved into a new `business-ledger` directory, improving clarity and organization.
- **New Business Detail Tabs**: The business detail page now features new dedicated tabs for
"Ledger" and "Balance", providing a more structured view of financial data.
- **Enhanced Ledger and Transaction Tables**: Both the `LedgerTable` and `TransactionsTable`
components have been updated with pagination, improved sorting capabilities, and clearer column
headers for better user experience.
- **API Expansion**: New GraphQL queries and resolvers have been introduced on the server-side to
support fetching ledger records and transactions specifically by financial entity, catering to
the new UI structure.
- [#2646](https://github.com/Urigo/accounter-fullstack/pull/2646)
[`1c8d288`](https://github.com/Urigo/accounter-fullstack/commit/1c8d28840c2c54a3948cd965695e16f84f0fccf2)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Contracts Screen**: A dedicated
user interface has been introduced for viewing and managing client contracts, accessible via a new
sidebar link.
- **Enhanced Contract Management**: The new screen features a comprehensive data table for
contracts, offering functionalities like sorting, filtering by various criteria (product type,
billing cycle, subscription plan, active status), column visibility toggling, and pagination.
- **Contract Editing Functionality**: Users can now edit existing contracts directly from the
contracts table through a modified dialog that fetches and pre-fills contract details for a
seamless editing experience.
- **Bulk Document Issuance**: A new modal allows users to select multiple contracts and generate
document drafts for a specified month, streamlining the process of creating invoices or other
contract-related documents.
- **Backend API and Caching Improvements**: New GraphQL queries and resolvers have been added to
support fetching contracts by administrator ID and individual contract details. The backend also
includes refined cache invalidation logic for contract operations, ensuring data consistency and
improved performance.
- [#2658](https://github.com/Urigo/accounter-fullstack/pull/2658)
[`7a898a0`](https://github.com/Urigo/accounter-fullstack/commit/7a898a0ff1ee15420ab2532370a1d2f618cc86ab)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Updated all type references from
`definitions` to `$defs` (represented as `_DOLLAR_defs` in TypeScript)
- Added client management operations (add, update, delete)
- Introduced country code conversion utilities
- Moved client helper functions to a dedicated module
- [#2547](https://github.com/Urigo/accounter-fullstack/pull/2547)
[`fd9fb24`](https://github.com/Urigo/accounter-fullstack/commit/fd9fb2445cba9a450f8c78f8100160d9b7c5c38a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - 1. **Environment Variable Validation**: The
`HIVE_TOKEN` and `DEEL_TOKEN` environment variables are now marked as mandatory (`zod.string()`
instead of `zod.string().optional()`) within their respective Zod schemas in
`packages/server/src/environment.ts`. 2. **Model Renaming**: The `GoogleModel` has been renamed to
`GoogleDriveModel` in `packages/server/src/environment.ts`, and all references to it in `configs`
and `env` exports have been updated accordingly. 3. **Conditional Configuration Export**: The
`env` export in `packages/server/src/environment.ts` now conditionally defines the nested
configuration objects for `greenInvoice`, `hive`, `googleDrive`, and `deel`. If the corresponding
environment variables are not present, these top-level objects will be `undefined`. 4. **Safe
Access to Environment Variables**: Throughout the application, specifically in
`packages/server/src/index.ts`,
`packages/server/src/modules/app-providers/deel/deel-client.provider.ts`,
`packages/server/src/modules/app-providers/google-drive/google-drive.provider.ts`, and
`packages/server/src/modules/app-providers/green-invoice-client.ts`, the access patterns for these
environment variables have been updated to use optional chaining (`?.`) to safely handle cases
where the configuration might be `undefined`.
- [#2655](https://github.com/Urigo/accounter-fullstack/pull/2655)
[`e3dc806`](https://github.com/Urigo/accounter-fullstack/commit/e3dc80677201cdbdd038953b572486c25119989e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Introduced a new `ClientIntegrations`
GraphQL type with a JSONB-backed structure
- Migrated `green_invoice_id` and `hive_id` columns to a unified `integrations` JSONB field
- Added validation helper using Zod schema for client integrations
- Updated GraphQL resolvers to use the new structure, with `GreenInvoiceClient` now resolving as a
string ID
- Activate integrations section in the client management UI to reflect backend changes
- [#2684](https://github.com/Urigo/accounter-fullstack/pull/2684)
[`34cb4cc`](https://github.com/Urigo/accounter-fullstack/commit/34cb4cce5e64caaa4a689247f6cbe92c400dc75c)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Database Schema Refactor**: A new
table, `financial_bank_accounts`, has been introduced to specifically store bank account details,
separating them from the general `financial_accounts` table. A migration is included to populate
this new table with existing bank account data.
- **New GraphQL Module for Bank Accounts**: A dedicated GraphQL module, provider, and resolvers
have been created for `financial-bank-accounts`, allowing for more granular management and
querying of bank account-specific data.
- **Updated Financial Accounts Provider**: The existing `FinancialAccountsProvider` queries have
been updated to explicitly select core financial account fields, as bank-specific details are
now handled by the new `FinancialBankAccountsProvider`.
- Updated dependencies
[[`1ae19c6`](https://github.com/Urigo/accounter-fullstack/commit/1ae19c6f8dabd995120862795284dab6e363dc79),
[`7fef068`](https://github.com/Urigo/accounter-fullstack/commit/7fef0682c7316153ae5ffde42f97ce7284dd4c9a),
[`80402e0`](https://github.com/Urigo/accounter-fullstack/commit/80402e07198a7c6bb78aa9402df7ea4ead779411),
[`48c6d16`](https://github.com/Urigo/accounter-fullstack/commit/48c6d1624c696fc23ab82e28860bd9c290abc07d),
[`65e3c7f`](https://github.com/Urigo/accounter-fullstack/commit/65e3c7f01993eb4f41244a40feefefa08b31a4e6),
[`65e3c7f`](https://github.com/Urigo/accounter-fullstack/commit/65e3c7f01993eb4f41244a40feefefa08b31a4e6),
[`65e3c7f`](https://github.com/Urigo/accounter-fullstack/commit/65e3c7f01993eb4f41244a40feefefa08b31a4e6),
[`7a898a0`](https://github.com/Urigo/accounter-fullstack/commit/7a898a0ff1ee15420ab2532370a1d2f618cc86ab),
[`15ed6f9`](https://github.com/Urigo/accounter-fullstack/commit/15ed6f982a5d288a1159ccd069fca14b35801a18)]:
- @accounter/green-invoice-graphql@0.8.2
- @accounter/pcn874-generator@0.6.3
- @accounter/shaam-uniform-format-generator@0.2.2
- @accounter/shaam6111-generator@0.1.4
## 0.0.7
### Patch Changes
- [#2291](https://github.com/Urigo/accounter-fullstack/pull/2291)
[`633a688`](https://github.com/Urigo/accounter-fullstack/commit/633a68824433dcd4df7be7e9c118ddadbf9a2029)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.0.17` ↗︎](https://www.npmjs.com/package/zod/v/4.0.17) (from `3.25.76`,
in `dependencies`)
- [#2368](https://github.com/Urigo/accounter-fullstack/pull/2368)
[`1aa95ab`](https://github.com/Urigo/accounter-fullstack/commit/1aa95abcab34009fa5133352bc3fa54511e293fd)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.5` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.5) (from
`1.2.12`, in `dependencies`)
- Updated dependency [`ai@5.0.16` ↗︎](https://www.npmjs.com/package/ai/v/5.0.16) (from `4.3.19`, in
`dependencies`)
- [#2444](https://github.com/Urigo/accounter-fullstack/pull/2444)
[`6b530f5`](https://github.com/Urigo/accounter-fullstack/commit/6b530f551f1fc559913d966a6e93874338704d9c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.18` ↗︎](https://www.npmjs.com/package/ai/v/5.0.18) (from `5.0.16`, in
`dependencies`)
- [#2449](https://github.com/Urigo/accounter-fullstack/pull/2449)
[`2651e0c`](https://github.com/Urigo/accounter-fullstack/commit/2651e0c98b37d7e58ef123353abcc33738e97b3e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.20` ↗︎](https://www.npmjs.com/package/ai/v/5.0.20) (from `5.0.18`, in
`dependencies`)
- [#2453](https://github.com/Urigo/accounter-fullstack/pull/2453)
[`00ec66f`](https://github.com/Urigo/accounter-fullstack/commit/00ec66f498c07814004813fde92ea177003317a5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.6` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.6) (from
`2.0.5`, in `dependencies`)
- Updated dependency [`ai@5.0.21` ↗︎](https://www.npmjs.com/package/ai/v/5.0.21) (from `5.0.20`, in
`dependencies`)
- [#2456](https://github.com/Urigo/accounter-fullstack/pull/2456)
[`3fe961a`](https://github.com/Urigo/accounter-fullstack/commit/3fe961a8338359ed544ce4de5730a1898fb1cc43)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@4.1.0` ↗︎](https://www.npmjs.com/package/zod/v/4.1.0) (from `4.0.17`, in
`dependencies`)
- [#2457](https://github.com/Urigo/accounter-fullstack/pull/2457)
[`16b0040`](https://github.com/Urigo/accounter-fullstack/commit/16b0040862d1bf9d65eb9829e8eb33117d60a1c2)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.22` ↗︎](https://www.npmjs.com/package/ai/v/5.0.22) (from `5.0.21`, in
`dependencies`)
- Updated dependency [`zod@4.1.1` ↗︎](https://www.npmjs.com/package/zod/v/4.1.1) (from `4.1.0`, in
`dependencies`)
- [#2459](https://github.com/Urigo/accounter-fullstack/pull/2459)
[`fd1519e`](https://github.com/Urigo/accounter-fullstack/commit/fd1519e1f3bdd98135fd0cff07a2e2594d5543b8)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.23` ↗︎](https://www.npmjs.com/package/ai/v/5.0.23) (from `5.0.22`, in
`dependencies`)
- [#2469](https://github.com/Urigo/accounter-fullstack/pull/2469)
[`7176d0d`](https://github.com/Urigo/accounter-fullstack/commit/7176d0d3e1808cc1800e1cabe121b380f0480d63)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.7` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.7) (from
`2.0.6`, in `dependencies`)
- Updated dependency [`ai@5.0.24` ↗︎](https://www.npmjs.com/package/ai/v/5.0.24) (from `5.0.23`, in
`dependencies`)
- Updated dependency [`zod@4.1.3` ↗︎](https://www.npmjs.com/package/zod/v/4.1.3) (from `4.1.1`, in
`dependencies`)
- [#2471](https://github.com/Urigo/accounter-fullstack/pull/2471)
[`0675d71`](https://github.com/Urigo/accounter-fullstack/commit/0675d71ce97b03d4b8b499f8d6c86b27ee2f348a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.8` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.8) (from
`2.0.7`, in `dependencies`)
- Updated dependency [`ai@5.0.26` ↗︎](https://www.npmjs.com/package/ai/v/5.0.26) (from `5.0.24`, in
`dependencies`)
- [#2478](https://github.com/Urigo/accounter-fullstack/pull/2478)
[`86e628e`](https://github.com/Urigo/accounter-fullstack/commit/86e628e40cc0d8fac239cfea2563326094013df4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.9` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.9) (from
`2.0.8`, in `dependencies`)
- Updated dependency [`ai@5.0.29` ↗︎](https://www.npmjs.com/package/ai/v/5.0.29) (from `5.0.26`, in
`dependencies`)
- Updated dependency [`zod@4.1.5` ↗︎](https://www.npmjs.com/package/zod/v/4.1.5) (from `4.1.3`, in
`dependencies`)
- [#2483](https://github.com/Urigo/accounter-fullstack/pull/2483)
[`43760d7`](https://github.com/Urigo/accounter-fullstack/commit/43760d77cb29ea44257d37ca0bc7a97e17aa1c89)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.17` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.17) (from
`2.0.9`, in `dependencies`)
- Updated dependency [`ai@5.0.44` ↗︎](https://www.npmjs.com/package/ai/v/5.0.44) (from `5.0.29`, in
`dependencies`)
- Updated dependency [`dotenv@17.2.2` ↗︎](https://www.npmjs.com/package/dotenv/v/17.2.2) (from
`17.2.1`, in `dependencies`)
- Updated dependency [`zod@4.1.8` ↗︎](https://www.npmjs.com/package/zod/v/4.1.8) (from `4.1.5`, in
`dependencies`)
- [#2489](https://github.com/Urigo/accounter-fullstack/pull/2489)
[`05129a7`](https://github.com/Urigo/accounter-fullstack/commit/05129a7913520dcbc129fcac05787280834db8a5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.15.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.15.2)
(from `3.15.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.15.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.15.2) (from `5.15.1`,
in `dependencies`)
- Updated dependency [`strip-indent@4.1.0` ↗︎](https://www.npmjs.com/package/strip-indent/v/4.1.0)
(from `4.0.0`, in `dependencies`)
- [#2491](https://github.com/Urigo/accounter-fullstack/pull/2491)
[`e87e1c7`](https://github.com/Urigo/accounter-fullstack/commit/e87e1c7182df6ebd1cbc3ebd20f62664a354e992)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.15.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.15.2)
(from `3.15.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.15.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.15.2) (from `5.15.1`,
in `dependencies`)
- [#2499](https://github.com/Urigo/accounter-fullstack/pull/2499)
[`4e931f8`](https://github.com/Urigo/accounter-fullstack/commit/4e931f8767ae1a6a2ed10a120147ca42c2730273)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.15.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.15.2)
(from `3.15.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.15.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.15.2) (from `5.15.1`,
in `dependencies`)
- Updated dependency [`strip-indent@4.1.0` ↗︎](https://www.npmjs.com/package/strip-indent/v/4.1.0)
(from `4.0.0`, in `dependencies`)
- [#2500](https://github.com/Urigo/accounter-fullstack/pull/2500)
[`b39aa39`](https://github.com/Urigo/accounter-fullstack/commit/b39aa39174d4f6374a74ff71a9a78e500b352e4d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`strip-indent@4.1.0` ↗︎](https://www.npmjs.com/package/strip-indent/v/4.1.0)
(from `4.0.0`, in `dependencies`)
- [#2512](https://github.com/Urigo/accounter-fullstack/pull/2512)
[`590823c`](https://github.com/Urigo/accounter-fullstack/commit/590823cf7105b018a3127abc2343ac714f2845ac)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.45` ↗︎](https://www.npmjs.com/package/ai/v/5.0.45) (from `5.0.44`, in
`dependencies`)
- Updated dependency [`zod@4.1.9` ↗︎](https://www.npmjs.com/package/zod/v/4.1.9) (from `4.1.8`, in
`dependencies`)
- [#2518](https://github.com/Urigo/accounter-fullstack/pull/2518)
[`e0d72c7`](https://github.com/Urigo/accounter-fullstack/commit/e0d72c7c0fac89997f9c96b0180523ac7d889b43)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.47` ↗︎](https://www.npmjs.com/package/ai/v/5.0.47) (from `5.0.45`, in
`dependencies`)
- [#2522](https://github.com/Urigo/accounter-fullstack/pull/2522)
[`df6b635`](https://github.com/Urigo/accounter-fullstack/commit/df6b63558a951ae7a318515d1d8b86b1b49a74a0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@2.0.20` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/2.0.20) (from
`2.0.17`, in `dependencies`)
- Updated dependency
[`@whatwg-node/fetch@0.10.11` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.11)
(from `0.10.10`, in `dependencies`)
- Updated dependency [`ai@5.0.56` ↗︎](https://www.npmjs.com/package/ai/v/5.0.56) (from `5.0.47`, in
`dependencies`)
- Updated dependency [`zod@4.1.11` ↗︎](https://www.npmjs.com/package/zod/v/4.1.11) (from `4.1.9`,
in `dependencies`)
- [#2523](https://github.com/Urigo/accounter-fullstack/pull/2523)
[`48d540a`](https://github.com/Urigo/accounter-fullstack/commit/48d540afe8c4b1479d65b39014af5d3744885ded)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.16.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.16.0)
(from `3.15.2`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.16.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.16.0) (from `5.15.2`,
in `dependencies`)
- [#2531](https://github.com/Urigo/accounter-fullstack/pull/2531)
[`fc3c91d`](https://github.com/Urigo/accounter-fullstack/commit/fc3c91dca23866b73165e076bad1b50c6d2687ab)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@5.0.57` ↗︎](https://www.npmjs.com/package/ai/v/5.0.57) (from `5.0.56`, in
`dependencies`)
- [#2436](https://github.com/Urigo/accounter-fullstack/pull/2436)
[`17c75ad`](https://github.com/Urigo/accounter-fullstack/commit/17c75ad6c675c3db6e35c4ef309b9d005dacd265)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Performance Optimization**: Introduced
DataLoader for batching and caching requests to the Green Invoice API for both documents and
clients, significantly reducing redundant API calls.
- **Caching Implementation**: Implemented a caching layer for Green Invoice API responses,
improving response times and overall system efficiency.
- **Document Status Update Fix**: Fixed an issue with document status updates by ensuring that
document data is invalidated from the cache when a document is closed, preventing stale data
from being served.
- **API Call Refactoring**: Refactored various parts of the codebase to utilize the newly
introduced DataLoader and caching mechanisms, streamlining interactions with the Green Invoice
API.
- [#2532](https://github.com/Urigo/accounter-fullstack/pull/2532)
[`8e079cd`](https://github.com/Urigo/accounter-fullstack/commit/8e079cdd9405f078c8b87ac54e67f05dad95bca4)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Enhanced Business Suggestion Data**:
The `suggestionData` structure for businesses has been extended to include new fields: `emails`,
`internalEmailLinks`, and `priority`, allowing for more comprehensive business suggestions.
- **Introduced Zod for Data Validation**: A new Zod schema (`suggestionDataSchema`) has been
implemented to provide robust runtime validation for `suggestionData`. This replaces previous
type assertions, ensuring data integrity and consistency across the application.
- **Refactored Suggestion Handling Logic**: The `updateSuggestions` helper function and various
resolvers have been updated to correctly process, merge, and validate the new `suggestionData`
fields using the Zod schema, improving reliability and error handling.
- **GraphQL Schema Update**: The GraphQL types `Suggestion` and `SuggestionInput` have been
modified to reflect the newly added `emails`, `internalEmailLinks`, and `priority` fields,
making them available through the API.
- [#2510](https://github.com/Urigo/accounter-fullstack/pull/2510)
[`40bf4ab`](https://github.com/Urigo/accounter-fullstack/commit/40bf4abfec0c323fdfd4170980e99d42667a3457)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Batch Transaction Update API**:
Introduced a new GraphQL mutation, `updateTransactions`, allowing multiple transactions to be
updated in a single API call. This mutation accepts an array of transaction IDs and the fields to
update.
- **Client-Side Hook for Batch Updates**: A new React hook, `useUpdateTransactions`, has been
added to facilitate client-side consumption of the batch update functionality, complete with
loading, success, and error state notifications.
- **Backend Logic for Batch Updates**: Implemented a new SQL query and a corresponding provider
method to efficiently handle batch updates on the `transactions` table. The existing single
transaction update method was refactored to utilize this new batch mechanism.
- **UI Integration**: The `similar-transactions-modal` component was updated to leverage the new
`useUpdateTransactions` hook, enabling users to approve and update multiple similar transactions
with a single action, improving user experience and reducing server load.
- [#2467](https://github.com/Urigo/accounter-fullstack/pull/2467)
[`6a20538`](https://github.com/Urigo/accounter-fullstack/commit/6a20538592f5a8781ce9598caa73882ccb2c9a50)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New GraphQL Module**: A dedicated
`admin-context` GraphQL module has been added to the application. This module centralizes the
management of various administrative context settings, such as default currencies, tax categories,
and business IDs.
- **Admin Context Management**: The module introduces new GraphQL queries to fetch `adminContext`
by `ownerId` and mutations to `updateAdminContext`. These operations allow for comprehensive
management of a wide range of configurable fields related to financial and tax operations.
- **Data Layer Integration**: An `AdminContextProvider` has been implemented, leveraging
DataLoader for efficient data fetching. This provider interacts with the `user_context` database
table, ensuring that data retrieval is optimized through batching and caching.
- **Related Entity Resolution**: Helper functions and resolvers have been added to automatically
fetch and resolve associated `TaxCategory` and `Business` entities. This ensures that when an
`AdminContext` is queried, all related details are seamlessly provided.
- **Schema Definition**: The GraphQL schema for the `AdminContext` type and its input has been
defined, detailing a comprehensive set of fields for various financial and tax-related
configurations, ensuring a clear and structured API.
- [#2517](https://github.com/Urigo/accounter-fullstack/pull/2517)
[`dfd2de0`](https://github.com/Urigo/accounter-fullstack/commit/dfd2de0892a8d5d4c2f89cf3a610d2a5d45e847a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Database Migration for SWIFT Fee
Handling**: A new PostgreSQL migration is introduced to modify the
`insert_poalim_swift_transaction_handler` function, ensuring proper processing of SWIFT fees.
- **Conditional Fee Transaction Creation**: The updated database function now explicitly checks if
the calculated `fee_amount` is greater than or equal to zero before creating a transaction
record for the fee, preventing the creation of transactions for negative fees.
- **Preventing Zero-Amount Ledger Entries**: The `getEntriesFromFeeTransaction` helper function in
the ledger module has been updated to return early if a fee transaction has a zero amount,
thereby preventing the creation of unnecessary ledger entries.
- Updated dependencies
[[`86e628e`](https://github.com/Urigo/accounter-fullstack/commit/86e628e40cc0d8fac239cfea2563326094013df4),
[`43760d7`](https://github.com/Urigo/accounter-fullstack/commit/43760d77cb29ea44257d37ca0bc7a97e17aa1c89),
[`e0d72c7`](https://github.com/Urigo/accounter-fullstack/commit/e0d72c7c0fac89997f9c96b0180523ac7d889b43),
[`633a688`](https://github.com/Urigo/accounter-fullstack/commit/633a68824433dcd4df7be7e9c118ddadbf9a2029),
[`3fe961a`](https://github.com/Urigo/accounter-fullstack/commit/3fe961a8338359ed544ce4de5730a1898fb1cc43),
[`16b0040`](https://github.com/Urigo/accounter-fullstack/commit/16b0040862d1bf9d65eb9829e8eb33117d60a1c2),
[`7176d0d`](https://github.com/Urigo/accounter-fullstack/commit/7176d0d3e1808cc1800e1cabe121b380f0480d63),
[`86e628e`](https://github.com/Urigo/accounter-fullstack/commit/86e628e40cc0d8fac239cfea2563326094013df4),
[`43760d7`](https://github.com/Urigo/accounter-fullstack/commit/43760d77cb29ea44257d37ca0bc7a97e17aa1c89),
[`590823c`](https://github.com/Urigo/accounter-fullstack/commit/590823cf7105b018a3127abc2343ac714f2845ac),
[`df6b635`](https://github.com/Urigo/accounter-fullstack/commit/df6b63558a951ae7a318515d1d8b86b1b49a74a0),
[`633a688`](https://github.com/Urigo/accounter-fullstack/commit/633a68824433dcd4df7be7e9c118ddadbf9a2029),
[`c56e276`](https://github.com/Urigo/accounter-fullstack/commit/c56e276f6e2addab88cd9fcd11b68fbc15c6f41a),
[`3fe961a`](https://github.com/Urigo/accounter-fullstack/commit/3fe961a8338359ed544ce4de5730a1898fb1cc43),
[`16b0040`](https://github.com/Urigo/accounter-fullstack/commit/16b0040862d1bf9d65eb9829e8eb33117d60a1c2),
[`7176d0d`](https://github.com/Urigo/accounter-fullstack/commit/7176d0d3e1808cc1800e1cabe121b380f0480d63),
[`86e628e`](https://github.com/Urigo/accounter-fullstack/commit/86e628e40cc0d8fac239cfea2563326094013df4),
[`43760d7`](https://github.com/Urigo/accounter-fullstack/commit/43760d77cb29ea44257d37ca0bc7a97e17aa1c89),
[`590823c`](https://github.com/Urigo/accounter-fullstack/commit/590823cf7105b018a3127abc2343ac714f2845ac),
[`df6b635`](https://github.com/Urigo/accounter-fullstack/commit/df6b63558a951ae7a318515d1d8b86b1b49a74a0),
[`633a688`](https://github.com/Urigo/accounter-fullstack/commit/633a68824433dcd4df7be7e9c118ddadbf9a2029),
[`c56e276`](https://github.com/Urigo/accounter-fullstack/commit/c56e276f6e2addab88cd9fcd11b68fbc15c6f41a),
[`3fe961a`](https://github.com/Urigo/accounter-fullstack/commit/3fe961a8338359ed544ce4de5730a1898fb1cc43),
[`16b0040`](https://github.com/Urigo/accounter-fullstack/commit/16b0040862d1bf9d65eb9829e8eb33117d60a1c2),
[`7176d0d`](https://github.com/Urigo/accounter-fullstack/commit/7176d0d3e1808cc1800e1cabe121b380f0480d63),
[`86e628e`](https://github.com/Urigo/accounter-fullstack/commit/86e628e40cc0d8fac239cfea2563326094013df4),
[`43760d7`](https://github.com/Urigo/accounter-fullstack/commit/43760d77cb29ea44257d37ca0bc7a97e17aa1c89),
[`590823c`](https://github.com/Urigo/accounter-fullstack/commit/590823cf7105b018a3127abc2343ac714f2845ac),
[`df6b635`](https://github.com/Urigo/accounter-fullstack/commit/df6b63558a951ae7a318515d1d8b86b1b49a74a0)]:
- @accounter/green-invoice-graphql@0.8.1
- @accounter/pcn874-generator@0.6.2
- @accounter/shaam-uniform-format-generator@0.2.1
- @accounter/shaam6111-generator@0.1.3
## 0.0.6
### Patch Changes
- [#2252](https://github.com/Urigo/accounter-fullstack/pull/2252)
[`f783100`](https://github.com/Urigo/accounter-fullstack/commit/f783100e05aa0aeb4bd5587760d098613cb2e24f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv@17.2.1` ↗︎](https://www.npmjs.com/package/dotenv/v/17.2.1) (from
`16.6.1`, in `dependencies`)
- [#2263](https://github.com/Urigo/accounter-fullstack/pull/2263)
[`6003953`](https://github.com/Urigo/accounter-fullstack/commit/6003953e6fd21be6601ec7f7d9b5a077453ab094)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.14.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.14.0)
(from `3.13.5`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.14.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.14.0) (from `5.13.5`,
in `dependencies`)
- [#2268](https://github.com/Urigo/accounter-fullstack/pull/2268)
[`1069779`](https://github.com/Urigo/accounter-fullstack/commit/1069779e986bbdb9f5d1ef8c1f25ccd66e2b1691)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.71` ↗︎](https://www.npmjs.com/package/zod/v/3.25.71) (from
`3.25.67`, in `dependencies`)
- [#2273](https://github.com/Urigo/accounter-fullstack/pull/2273)
[`dc6fae4`](https://github.com/Urigo/accounter-fullstack/commit/dc6fae4ae197f8ec12e426bb773cfb88fa111a46)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.74` ↗︎](https://www.npmjs.com/package/zod/v/3.25.74) (from
`3.25.71`, in `dependencies`)
- [#2278](https://github.com/Urigo/accounter-fullstack/pull/2278)
[`2bab7e1`](https://github.com/Urigo/accounter-fullstack/commit/2bab7e1529ef7ee313f928f58772aefe200a16ee)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`zod@3.25.74` ↗︎](https://www.npmjs.com/package/zod/v/3.25.74) (from
`3.25.71`, in `dependencies`)
- [#2281](https://github.com/Urigo/accounter-fullstack/pull/2281)
[`138acaa`](https://github.com/Urigo/accounter-fullstack/commit/138acaa9014546f9fffa30386fa956340f92df61)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.75` ↗︎](https://www.npmjs.com/package/zod/v/3.25.75) (from
`3.25.74`, in `dependencies`)
- [#2285](https://github.com/Urigo/accounter-fullstack/pull/2285)
[`53c880d`](https://github.com/Urigo/accounter-fullstack/commit/53c880d21e0cc49333e725a57659bdcbb5bf1232)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`zod@3.25.75` ↗︎](https://www.npmjs.com/package/zod/v/3.25.75) (from
`3.25.74`, in `dependencies`)
- [#2286](https://github.com/Urigo/accounter-fullstack/pull/2286)
[`b72c486`](https://github.com/Urigo/accounter-fullstack/commit/b72c48695f7f2f1a3e99077da1a362ab5f389f23)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.17` ↗︎](https://www.npmjs.com/package/ai/v/4.3.17) (from `4.3.16`, in
`dependencies`)
- Updated dependency [`zod@3.25.76` ↗︎](https://www.npmjs.com/package/zod/v/3.25.76) (from
`3.25.75`, in `dependencies`)
- [#2289](https://github.com/Urigo/accounter-fullstack/pull/2289)
[`bd7a74b`](https://github.com/Urigo/accounter-fullstack/commit/bd7a74b173994b6449d250e4868509a1243e5af6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.42.2` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.42.2) (from
`0.42.1`, in `dependencies`)
- Updated dependency [`ai@4.3.17` ↗︎](https://www.npmjs.com/package/ai/v/4.3.17) (from `4.3.16`, in
`dependencies`)
- Updated dependency [`zod@3.25.76` ↗︎](https://www.npmjs.com/package/zod/v/3.25.76) (from
`3.25.75`, in `dependencies`)
- [#2292](https://github.com/Urigo/accounter-fullstack/pull/2292)
[`6c797c6`](https://github.com/Urigo/accounter-fullstack/commit/6c797c6f885ee1d45395a76089f92a95483d5d3a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`ai@4.3.17` ↗︎](https://www.npmjs.com/package/ai/v/4.3.17) (from `4.3.16`, in
`dependencies`)
- Updated dependency [`zod@3.25.76` ↗︎](https://www.npmjs.com/package/zod/v/3.25.76) (from
`3.25.75`, in `dependencies`)
- [#2293](https://github.com/Urigo/accounter-fullstack/pull/2293)
[`3a511ca`](https://github.com/Urigo/accounter-fullstack/commit/3a511ca20d9cf7f62f0d5f6c1f8283d103160de4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.42.2` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.42.2) (from
`0.42.1`, in `dependencies`)
- [#2298](https://github.com/Urigo/accounter-fullstack/pull/2298)
[`814c130`](https://github.com/Urigo/accounter-fullstack/commit/814c13063fbf41bd7a737005eb618efd20876d0f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.15.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.15.0)
(from `3.14.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.15.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.15.0) (from `5.14.0`,
in `dependencies`)
- [#2306](https://github.com/Urigo/accounter-fullstack/pull/2306)
[`a491206`](https://github.com/Urigo/accounter-fullstack/commit/a491206eeedf25ddab8e308a409357d841673062)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.15.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.15.0)
(from `3.14.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.15.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.15.0) (from `5.14.0`,
in `dependencies`)
- [#2307](https://github.com/Urigo/accounter-fullstack/pull/2307)
[`70e1f9e`](https://github.com/Urigo/accounter-fullstack/commit/70e1f9e5b1139aaecf3be58b616ccb361256b917)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.15.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.15.1)
(from `3.15.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.15.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.15.1) (from `5.15.0`,
in `dependencies`)
- [#2310](https://github.com/Urigo/accounter-fullstack/pull/2310)
[`95da5aa`](https://github.com/Urigo/accounter-fullstack/commit/95da5aa4e2666e78fc42c3c8f231b43a3f23a506)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.18` ↗︎](https://www.npmjs.com/package/ai/v/4.3.18) (from `4.3.17`, in
`dependencies`)
- [#2315](https://github.com/Urigo/accounter-fullstack/pull/2315)
[`4b8b51f`](https://github.com/Urigo/accounter-fullstack/commit/4b8b51f3b33577283137caa8232f4457c20aa9cf)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.19` ↗︎](https://www.npmjs.com/package/ai/v/4.3.19) (from `4.3.18`, in
`dependencies`)
- [#2320](https://github.com/Urigo/accounter-fullstack/pull/2320)
[`fcf060c`](https://github.com/Urigo/accounter-fullstack/commit/fcf060c93a42fceb401cab55f62104dba14ddc36)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.9` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.9) (from
`0.10.8`, in `dependencies`)
- [#2322](https://github.com/Urigo/accounter-fullstack/pull/2322)
[`408b287`](https://github.com/Urigo/accounter-fullstack/commit/408b287588f1753776cd98755383fc269d7410fb)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency
[`@accounter/shaam-uniform-format-generator@workspace:^` ↗︎](https://www.npmjs.com/package/@accounter/shaam-uniform-format-generator/v/workspace:^)
(to `dependencies`)
- [#2336](https://github.com/Urigo/accounter-fullstack/pull/2336)
[`5dea1b7`](https://github.com/Urigo/accounter-fullstack/commit/5dea1b7c849d901ce7d161e24169c24b4d5bea61)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv-cli@9.0.0` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/9.0.0)
(from `8.0.0`, in `dependencies`)
- [#2357](https://github.com/Urigo/accounter-fullstack/pull/2357)
[`eac0da7`](https://github.com/Urigo/accounter-fullstack/commit/eac0da793a164a332aa0fdee86b257945ec8ec6a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv-cli@10.0.0` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/10.0.0)
(from `9.0.0`, in `dependencies`)
- [#2376](https://github.com/Urigo/accounter-fullstack/pull/2376)
[`dbd9059`](https://github.com/Urigo/accounter-fullstack/commit/dbd905919904037404bde90b3d34f055b0c8a4c8)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.10` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.10)
(from `0.10.9`, in `dependencies`)
- [#2374](https://github.com/Urigo/accounter-fullstack/pull/2374)
[`44a0512`](https://github.com/Urigo/accounter-fullstack/commit/44a0512e18d2c103a7d307397f3c4bd94f244441)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - * **Refactored Invoice Filtering**: The
`fetchAndFilterInvoices` helper function in `deel.helper.ts` has been streamlined. It now
exclusively identifies and returns Deel invoices that are *not\* yet present in the database,
removing the previous logic for tracking 'known' receipt IDs. This simplifies its responsibility
to only provide new invoices for processing.
- **Improved Receipt-Charge Matching Efficiency**: A new, optimized database query
(`getReceiptToCharge`) has been introduced in `deel-invoices.provider.ts`. This query
efficiently retrieves all existing Deel receipt-to-charge mappings directly from the database,
ensuring that for each payment ID, the most recent associated charge ID is fetched.
- **Streamlined Charge Matching Logic**: The `getChargeMatchesForPayments` helper function in
`deel.helper.ts` has been updated to leverage the new `getReceiptToCharge` method from
`DeelInvoicesProvider`. This change eliminates the need to pass an intermediate
`knownReceiptIds` set and perform individual lookups, leading to a more direct and efficient
matching process.
- [#2300](https://github.com/Urigo/accounter-fullstack/pull/2300)
[`aa95d61`](https://github.com/Urigo/accounter-fullstack/commit/aa95d61169177165cbe513c8a9ccb7766518e824)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **New Features**
- Added modal to display similar charges by business, accessible from business card.
- The modal appears after updating business information if suggestion tags or descriptions are
present.
- **Improvements**
- Enhanced filtering of similar charges to exclude charges with identical tags or descriptions.
- Improved suggestion merging logic to better retain existing tags and phrases.
- **Bug Fixes**
- Fixed modal behavior to ensure correct display and filtering based on user actions.
- [#2334](https://github.com/Urigo/accounter-fullstack/pull/2334)
[`0c6ac6c`](https://github.com/Urigo/accounter-fullstack/commit/0c6ac6c0fd8d7afe96ce26260a514ccb682e621b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Document Generation UI**: I've
introduced a brand new UI screen, `IssueDocumentScreen`, that allows users to create and configure
various accounting documents like invoices and receipts with extensive settings for document type,
language, currency, and VAT.
- **Real-time PDF Document Preview**: Users can now preview generated documents in real-time
directly within the UI before issuing them, powered by the `pdfjs-dist` library for client-side
PDF rendering.
- **Comprehensive Document Configuration**: The new UI provides detailed configuration options,
including fields for client information, managing multiple income items (description, price,
quantity, VAT), and specifying various payment methods with their unique details (e.g., bank,
credit card, PayPal, payment app).
- **GraphQL API Extensions for Document Management**: I've extended the GraphQL API with a new
`previewGreenInvoiceDocument` mutation for generating PDF previews and a `newDocumentInfoDraft`
query to pre-populate document forms based on existing charge data.
- **Enhanced Document Actions in Table View**: I've added the ability to close and re-issue
documents directly from the documents table, providing a more streamlined workflow for managing
document statuses.
- **New 'With Open Documents' Filter**: A new filter, 'With Open Documents', has been added to the
charges filter, allowing users to easily identify and manage charges that have associated open
documents.
- **GraphQL Query Refactoring**: I've refactored several GraphQL queries from fetching multiple
charges (`chargesByIDs`) to fetching a single charge (`charge`), simplifying data retrieval for
individual charge details.
- **Database Migration for Open Documents Flag**: A new database migration introduces an
`open_docs_flag` to the `extended_charges` view, enabling efficient filtering of charges based
on their associated open documents.
- [#2424](https://github.com/Urigo/accounter-fullstack/pull/2424)
[`140bb3e`](https://github.com/Urigo/accounter-fullstack/commit/140bb3e9a4604a7f0d32e3fcee0e53c30d5c277b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **Introduced Client and Contract
Management**: Replaced the GreenInvoiceBusiness concept with dedicated Client and Contract
entities, enabling more granular management of client relationships and billing agreements.
- **Database Schema Evolution**: Implemented a new migration to rename the
businesses_green_invoice_match table to clients and introduced a new clients_contracts table to
store contract details.
- **GraphQL API Expansion**: Added new GraphQL modules for contracts and enhanced the
financial-entities module with clients resolvers and types, providing a more structured API for
client and contract data.
- **Streamlined Monthly Document Generation UI**: Updated the user interface for issuing monthly
documents to leverage the new client and contract data, improving the selection process and
draft generation.
- **Removed Legacy CSV Functionality**: Deprecated and removed the CSV upload and download
features related to monthly document drafts, simplifying the workflow.
- [#2399](https://github.com/Urigo/accounter-fullstack/pull/2399)
[`ffe296d`](https://github.com/Urigo/accounter-fullstack/commit/ffe296d26899cb8cf6d843c4efebefa170cac95e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **Client Form Refactoring**: The client
form (`client-form.tsx`) has been updated to use GraphQL fragments for client data, introducing a
`normalizeClientInfo` utility for consistent data transformation. It now includes a `fetching`
state to provide better loading feedback.
- **Income Form Enhancements**: The income form (`income-form.tsx`) has been reorganized to
improve layout and data input, including the addition of currency selection and reordering of
fields. Some previously included fields like 'Catalog Number' have been commented out or removed
from the data structure.
- **Main Document Issuance Form Logic**: The central `GenerateDocument` component (`index.tsx`)
now dynamically fetches client information using `urql`'s `useQuery` hook, allowing for
pre-population of client details. Several sections related to description, footer text,
discount, rounding, and digital signature have been temporarily commented out in the UI.
- **Payment Form Modularity**: The payment form (`payment-form.tsx`) has been refactored to
generalize account and transaction input fields using a `useCallback` hook, and payment
type-specific fields (e.g., for wire transfers, cheques, PayPal, and other payment apps) are now
conditionally rendered for better clarity.
- **Backend Data Handling**: On the server-side, new helper functions have been introduced
(`issue-document.helper.ts`) to deduce VAT types, retrieve linked document attributes, determine
document dates from transactions, and fetch detailed client information from Green Invoice. The
GraphQL schema (`green-invoice.graphql.ts`) and resolvers (`green-invoice.resolvers.ts`) have
been updated to reflect these new data structures and logic, including the removal of redundant
fields from `GreenInvoiceIncome`.
- **Document Naming Conventions**: Minor textual updates have been made to document names (e.g.,
"Proforma" to "Proforma Invoice") for improved clarity.
- [#2334](https://github.com/Urigo/accounter-fullstack/pull/2334)
[`0c6ac6c`](https://github.com/Urigo/accounter-fullstack/commit/0c6ac6c0fd8d7afe96ce26260a514ccb682e621b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **New UI for Document Generation**: A
comprehensive new UI screen (`IssueDocumentScreen`) has been added, allowing users to create and
configure various accounting documents (e.g., invoices, receipts) with detailed settings for
document type, language, currency, and VAT.
- **Real-time Document Preview**: Users can now preview generated documents (likely PDFs) directly
within the UI before officially issuing them, powered by the `pdfjs-dist` library for
client-side rendering.
- **Detailed Document Configuration**: The new UI provides extensive fields for capturing client
information, managing multiple income items (description, price, quantity, VAT), and specifying
various payment methods with their unique details (e.g., bank, credit card, PayPal, payment
app).
- **GraphQL API Extension for Preview**: The backend GraphQL API has been extended with a new
`previewGreenInvoiceDocument` mutation, enabling the client to send detailed document input and
receive a base64-encoded PDF preview.
- **Improved Green Invoice Integration**: New helper functions and schema updates ensure proper
mapping of UI inputs to the Green Invoice API's complex data structures for document generation
and preview, handling various enums and nested objects.
- [#2392](https://github.com/Urigo/accounter-fullstack/pull/2392)
[`abe60ad`](https://github.com/Urigo/accounter-fullstack/commit/abe60ad1cece8223c7c95b472c3b8104e9a91acb)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Email Sending Control**: I've added a
new sendEmail option to the document issuing flow, giving users the flexibility to decide whether
an email should be dispatched to the client along with the document.
- **Enhanced UI for Email Options**: I've integrated a 'Should Send Email' checkbox into the
document issuance modal. This checkbox dynamically controls the enabled state of the email
content and attachment fields, ensuring a streamlined user experience.
- **Backend Email Dispatch Logic**: On the server side, I've updated the issueGreenInvoiceDocument
resolver to honor the sendEmail flag. If sendEmail is false, the system will prevent emails from
being sent by clearing the client's email addresses before processing.
- **Automated Linked Document Closure**: I've implemented a feature that automatically closes any
linked documents when a new document is successfully issued, improving document lifecycle
management.
- **Improved Green Invoice Remarks**: I've enhanced the Green Invoice integration to automatically
pull and apply remarks from associated business matches, providing more relevant document
descriptions.
- [#2435](https://github.com/Urigo/accounter-fullstack/pull/2435)
[`eeb533e`](https://github.com/Urigo/accounter-fullstack/commit/eeb533e95042abb684bb72461a89e780cd25121e)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Feature: Foreign Securities
Charges**: Comprehensive support for 'Foreign Securities Charges' has been introduced across the
application. This includes new database fields, GraphQL types, frontend UI components, and backend
resolvers to correctly categorize, display, and process these charges.
- **Module Refactoring and Enhancements: Bank Deposits**: A new dedicated GraphQL module for 'Bank
Deposits' has been created, along with new UI components to display bank deposit information,
including balances and associated transactions. This refactors existing bank deposit logic into
a more organized structure.
- **Enhanced Ledger Generation for Foreign Securities**: Advanced ledger generation logic has been
implemented specifically for 'Foreign Securities Charges'. This new resolver handles complex
scenarios involving main transactions, associated fees, and currency exchange rates to ensure
accurate financial record-keeping.
- **Admin Context Configuration for Foreign Securities**: The application's administrative context
has been updated to include configuration for foreign securities, allowing for the definition of
specific business and fees categories related to these charges.
- **System-Wide Integration of New Charge Type**: Various frontend and backend components have
been updated to recognize and correctly handle the new 'ForeignSecuritiesCharge' type, ensuring
proper display, validation, and integration with existing features like accountant approval,
documents, and tags.
- [#2338](https://github.com/Urigo/accounter-fullstack/pull/2338)
[`585d74c`](https://github.com/Urigo/accounter-fullstack/commit/585d74cb2867c933e745468e496d951b6488c155)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Support SEK currency across all layers of
the project.
- [#2322](https://github.com/Urigo/accounter-fullstack/pull/2322)
[`408b287`](https://github.com/Urigo/accounter-fullstack/commit/408b287588f1753776cd98755383fc269d7410fb)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **New Client-Side Feature**: I've added
a new modal component (`FileDownloadModal`) to the client application, allowing users to select a
date range and trigger the generation and download of uniform format files (bkmvdata and ini)
directly from the UI.
- **Data Model Extension**: The `JournalEntry` and `BusinessMetadata` schemas have been extended
to support additional optional fields, such as `batchNumber`, `transactionType`,
`referenceDocument`, `currencyCode`, `foreignCurrencyAmount` for journal entries, and `address`
details for business metadata. This enriches the data available for reporting.
- **Uniform Format Generator Enhancement**: The `generateUniformFormatReport` function in the
generator package has been updated to consume and incorporate these new extended fields from the
`JournalEntry` and `BusinessMetadata` into the generated uniform format files, ensuring more
comprehensive reports.
- **Testing**: New unit tests have been added to verify that the uniform format generator
correctly handles journal entries with the newly introduced extended fields, ensuring data
integrity and proper report generation.
- [#2367](https://github.com/Urigo/accounter-fullstack/pull/2367)
[`33b7fd7`](https://github.com/Urigo/accounter-fullstack/commit/33b7fd7f476bd59aad37442ad1d0b7497e31d3d4)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **New Database Schema for Issued
Documents**: I've introduced a new `documents_issued` table in the database. This table stores
crucial metadata for documents generated by our system (e.g., via Green Invoice), including their
external ID, current status, and any linked documents. A new `document_status` enum has also been
added to track the lifecycle of these documents.
- **Enhanced Green Invoice Integration**: The Green Invoice client and GraphQL API have been
significantly extended. New capabilities allow us to preview, issue, and close documents
directly through the Green Invoice API via new GraphQL mutations. This provides more
comprehensive control over self-issued financial documents.
- **Improved Document Synchronization Logic**: The `fetchIncomeDocuments` mutation has been
refactored to not only ingest new documents from Green Invoice but also to intelligently
identify and update the status and linked documents of existing self-issued records in our
database. This ensures better data consistency with the external system.
- **GraphQL API Expansion for Document Management**: I've exposed new GraphQL types
(`IssuedDocumentInfo`) and mutations (`closeDocument`, `previewGreenInvoiceDocument`,
`issueGreenInvoiceDocument`) to provide a richer API for managing self-issued documents and
their associated information, including their status and links to other documents.
- [#2272](https://github.com/Urigo/accounter-fullstack/pull/2272)
[`a6f9e78`](https://github.com/Urigo/accounter-fullstack/commit/a6f9e78705414e772d6b92dcab8319f529e886e6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Introduce Admin Businesses module,to
defrenciate from common businesses and add unique relevant information
- [#2409](https://github.com/Urigo/accounter-fullstack/pull/2409)
[`bb522fd`](https://github.com/Urigo/accounter-fullstack/commit/bb522fd110a880397cda47c7baf20ef6b0479166)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - \* **Component Renaming**: I've renamed the
`IssueDocumentModal` to `PreviewDocumentModal` across the client-side components to better reflect
its primary function of preparing and reviewing documents before final issuance.
- **Enhanced Document Closure**: The `CloseDocumentButton` now includes enhanced functionality,
allowing users to optionally issue a credit invoice when closing certain types of documents,
complete with a confirmation modal for a smoother workflow.
- **Improved Document Generation Form**: I've refined the `GenerateDocument` form by implementing
conditional rendering for fields like `maxPayments` and `dueDate`, and for the `IncomeForm` and
`PaymentForm`, ensuring only relevant fields are displayed based on the document type.
Additionally, `linkedDocumentIds` are now passed to `RecentClientDocs` for better context.
- **Refactored Document Tables**: The `RecentClientDocs` component has been refactored to leverage
`@tanstack/react-table`, providing a more robust and flexible table display. It now also
highlights linked documents, making it easier to identify related entries.
- **New Document Description Column**: I've introduced a new `Description` column to document
tables, which displays a summary of income descriptions from the associated documents, offering
more immediate insight into document content.
- **Backend Document Synchronization and Closure Improvements**: On the backend, I've updated the
document synchronization logic to first process new document insertions and then handle updates
to existing documents. The process for closing linked documents has also been improved to use
`updateIssuedDocumentByExternalId` and now correctly avoids closing receipts.
- **GraphQL API Enhancement**: A new `originalDocument` field has been added to the
`IssuedDocumentInfo` GraphQL type, enabling the retrieval of full Green Invoice document details
directly from the API.
- [#2257](https://github.com/Urigo/accounter-fullstack/pull/2257)
[`29895c4`](https://github.com/Urigo/accounter-fullstack/commit/29895c4af2e34455a438743a37c43fc1d67531b7)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Extend Deel API response schema
- [#2285](https://github.com/Urigo/accounter-fullstack/pull/2285)
[`53c880d`](https://github.com/Urigo/accounter-fullstack/commit/53c880d21e0cc49333e725a57659bdcbb5bf1232)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Enable batch approval for charge
tags/description suggestions.
- [#2404](https://github.com/Urigo/accounter-fullstack/pull/2404)
[`9c2c79c`](https://github.com/Urigo/accounter-fullstack/commit/9c2c79cf9c36bfeea84119e61a062c6fec843ec0)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New GraphQL Queries and Resolvers**:
Introduced new GraphQL queries (`recentDocumentsByClient` and `recentIssuedDocumentsByType`) and
corresponding backend resolvers to efficiently fetch documents based on client ID and document
type, respectively. This enables the new UI features.
- **Reusable Documents Table**: The `DocumentsTable` component has been refactored to be more
generic and reusable. It now accepts a direct array of document fragments and includes a
`limited` prop to control column visibility, making it suitable for displaying concise lists of
documents in various contexts.
- **Backend Data Fetching Improvements**: New SQL queries and a DataLoader have been added to the
`IssuedDocumentsProvider` to optimize the fetching of documents by client ID, ensuring efficient
data retrieval for the new frontend features.
- Updated dependencies
[[`b1352c4`](https://github.com/Urigo/accounter-fullstack/commit/b1352c4190bad2d93d1be823d96ff2b53df7387a),
[`1069779`](https://github.com/Urigo/accounter-fullstack/commit/1069779e986bbdb9f5d1ef8c1f25ccd66e2b1691),
[`dc6fae4`](https://github.com/Urigo/accounter-fullstack/commit/dc6fae4ae197f8ec12e426bb773cfb88fa111a46),
[`2bab7e1`](https://github.com/Urigo/accounter-fullstack/commit/2bab7e1529ef7ee313f928f58772aefe200a16ee),
[`138acaa`](https://github.com/Urigo/accounter-fullstack/commit/138acaa9014546f9fffa30386fa956340f92df61),
[`53c880d`](https://github.com/Urigo/accounter-fullstack/commit/53c880d21e0cc49333e725a57659bdcbb5bf1232),
[`b72c486`](https://github.com/Urigo/accounter-fullstack/commit/b72c48695f7f2f1a3e99077da1a362ab5f389f23),
[`bd7a74b`](https://github.com/Urigo/accounter-fullstack/commit/bd7a74b173994b6449d250e4868509a1243e5af6),
[`6c797c6`](https://github.com/Urigo/accounter-fullstack/commit/6c797c6f885ee1d45395a76089f92a95483d5d3a),
[`1069779`](https://github.com/Urigo/accounter-fullstack/commit/1069779e986bbdb9f5d1ef8c1f25ccd66e2b1691),
[`dc6fae4`](https://github.com/Urigo/accounter-fullstack/commit/dc6fae4ae197f8ec12e426bb773cfb88fa111a46),
[`2bab7e1`](https://github.com/Urigo/accounter-fullstack/commit/2bab7e1529ef7ee313f928f58772aefe200a16ee),
[`138acaa`](https://github.com/Urigo/accounter-fullstack/commit/138acaa9014546f9fffa30386fa956340f92df61),
[`53c880d`](https://github.com/Urigo/accounter-fullstack/commit/53c880d21e0cc49333e725a57659bdcbb5bf1232),
[`b72c486`](https://github.com/Urigo/accounter-fullstack/commit/b72c48695f7f2f1a3e99077da1a362ab5f389f23),
[`bd7a74b`](https://github.com/Urigo/accounter-fullstack/commit/bd7a74b173994b6449d250e4868509a1243e5af6),
[`6c797c6`](https://github.com/Urigo/accounter-fullstack/commit/6c797c6f885ee1d45395a76089f92a95483d5d3a),
[`0c6ac6c`](https://github.com/Urigo/accounter-fullstack/commit/0c6ac6c0fd8d7afe96ce26260a514ccb682e621b),
[`0c6ac6c`](https://github.com/Urigo/accounter-fullstack/commit/0c6ac6c0fd8d7afe96ce26260a514ccb682e621b),
[`88207b1`](https://github.com/Urigo/accounter-fullstack/commit/88207b1f3fbafbd67b67fe8edca6a576d42e25bd),
[`1be8c87`](https://github.com/Urigo/accounter-fullstack/commit/1be8c87be477204ddfc57c38d1ab8cfc66cea1a9),
[`9915dd2`](https://github.com/Urigo/accounter-fullstack/commit/9915dd2c0f7f78103320bc99dabd2de2384bbfbc),
[`408b287`](https://github.com/Urigo/accounter-fullstack/commit/408b287588f1753776cd98755383fc269d7410fb)]:
- @accounter/green-invoice-graphql@0.8.0
- @accounter/pcn874-generator@0.6.1
- @accounter/shaam6111-generator@0.1.2
- @accounter/shaam-uniform-format-generator@0.2.0
## 0.0.5
### Patch Changes
- [#1754](https://github.com/Urigo/accounter-fullstack/pull/1754)
[`2711ade`](https://github.com/Urigo/accounter-fullstack/commit/2711ade6c369a6c0fa858f0f3047776f5979ae68)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`ai@4.3.5` ↗︎](https://www.npmjs.com/package/ai/v/4.3.5) (from `4.3.4`, in
`dependencies`)
- Updated dependency [`dotenv@16.5.0` ↗︎](https://www.npmjs.com/package/dotenv/v/16.5.0) (from
`16.4.7`, in `dependencies`)
- [#1994](https://github.com/Urigo/accounter-fullstack/pull/1994)
[`c73af73`](https://github.com/Urigo/accounter-fullstack/commit/c73af737d68cff22b560b615a5bd48296aa8b653)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.4` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.4) (from
`1.2.2`, in `dependencies`)
- Updated dependency [`ai@4.2.10` ↗︎](https://www.npmjs.com/package/ai/v/4.2.10) (from `4.2.8`, in
`dependencies`)
- [#2007](https://github.com/Urigo/accounter-fullstack/pull/2007)
[`c1c42bf`](https://github.com/Urigo/accounter-fullstack/commit/c1c42bf430e7bc1030c9432b0417b2310b9f2412)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.5` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.5) (from
`1.2.4`, in `dependencies`)
- [#2020](https://github.com/Urigo/accounter-fullstack/pull/2020)
[`b242f4c`](https://github.com/Urigo/accounter-fullstack/commit/b242f4cfccadcc6dae83c7c6055ba8795ce4c770)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.6` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.6) (from
`1.2.5`, in `dependencies`)
- [#2021](https://github.com/Urigo/accounter-fullstack/pull/2021)
[`026df05`](https://github.com/Urigo/accounter-fullstack/commit/026df059d7ccb8ef67602106b01d5020e936b418)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.6` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.6) (from
`1.2.5`, in `dependencies`)
- [#2022](https://github.com/Urigo/accounter-fullstack/pull/2022)
[`9b2e24e`](https://github.com/Urigo/accounter-fullstack/commit/9b2e24ec470a6ab3b377313a2ec6be5771bf6145)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.2` ↗︎](https://www.npmjs.com/package/ai/v/4.3.2) (from `4.2.10`, in
`dependencies`)
- [#2028](https://github.com/Urigo/accounter-fullstack/pull/2028)
[`ed1758c`](https://github.com/Urigo/accounter-fullstack/commit/ed1758ccebf849fde17a4c6e208a6e76913aea2c)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`ai@4.3.2` ↗︎](https://www.npmjs.com/package/ai/v/4.3.2) (from `4.2.10`, in
`dependencies`)
- [#2029](https://github.com/Urigo/accounter-fullstack/pull/2029)
[`bd3a3c6`](https://github.com/Urigo/accounter-fullstack/commit/bd3a3c62d877f662485cd5dfe7b3b1460ede0dda)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.7` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.7) (from
`1.2.6`, in `dependencies`)
- Updated dependency [`ai@4.3.3` ↗︎](https://www.npmjs.com/package/ai/v/4.3.3) (from `4.3.2`, in
`dependencies`)
- [#2032](https://github.com/Urigo/accounter-fullstack/pull/2032)
[`2b60daa`](https://github.com/Urigo/accounter-fullstack/commit/2b60daa5678f94c9710372172601db82340be2ff)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.8` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.8) (from
`1.2.7`, in `dependencies`)
- Updated dependency [`ai@4.3.4` ↗︎](https://www.npmjs.com/package/ai/v/4.3.4) (from `4.3.3`, in
`dependencies`)
- [#2033](https://github.com/Urigo/accounter-fullstack/pull/2033)
[`c8b8ee9`](https://github.com/Urigo/accounter-fullstack/commit/c8b8ee9422916435881db92e50fccf8e8f9c9fa8)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.9` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.9) (from
`1.2.8`, in `dependencies`)
- [#2034](https://github.com/Urigo/accounter-fullstack/pull/2034)
[`6b46090`](https://github.com/Urigo/accounter-fullstack/commit/6b460905177148b06a485c6bc0e2a470562b5c4b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.13.3` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.13.3)
(from `3.13.2`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.13.3` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.13.3) (from `5.13.2`,
in `dependencies`)
- [#2044](https://github.com/Urigo/accounter-fullstack/pull/2044)
[`8fd3d43`](https://github.com/Urigo/accounter-fullstack/commit/8fd3d431858e40690970bdaed6d2fef158933f02)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv@16.5.0` ↗︎](https://www.npmjs.com/package/dotenv/v/16.5.0) (from
`16.4.7`, in `dependencies`)
- [#2045](https://github.com/Urigo/accounter-fullstack/pull/2045)
[`21d5e4d`](https://github.com/Urigo/accounter-fullstack/commit/21d5e4d3fffbbcaaa1975bb748ca46d18b37bf1f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.5` ↗︎](https://www.npmjs.com/package/ai/v/4.3.5) (from `4.3.4`, in
`dependencies`)
- [#2050](https://github.com/Urigo/accounter-fullstack/pull/2050)
[`68ca1e1`](https://github.com/Urigo/accounter-fullstack/commit/68ca1e1c29187b2c29f5699113927ba55be61739)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.10` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.10) (from
`1.2.9`, in `dependencies`)
- Updated dependency
[`@whatwg-node/fetch@0.10.6` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.6) (from
`0.10.5`, in `dependencies`)
- Updated dependency [`ai@4.3.6` ↗︎](https://www.npmjs.com/package/ai/v/4.3.6) (from `4.3.5`, in
`dependencies`)
- [#2056](https://github.com/Urigo/accounter-fullstack/pull/2056)
[`67166ad`](https://github.com/Urigo/accounter-fullstack/commit/67166addecc6d768cc1507cd1d1f2d810f8cb78c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.13.4` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.13.4)
(from `3.13.3`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.13.4` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.13.4) (from `5.13.3`,
in `dependencies`)
- [#2058](https://github.com/Urigo/accounter-fullstack/pull/2058)
[`931c554`](https://github.com/Urigo/accounter-fullstack/commit/931c5547459b0e92b58c6fc0b0f8897d077e9f1a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.7` ↗︎](https://www.npmjs.com/package/ai/v/4.3.7) (from `4.3.6`, in
`dependencies`)
- [#2060](https://github.com/Urigo/accounter-fullstack/pull/2060)
[`4efa957`](https://github.com/Urigo/accounter-fullstack/commit/4efa9571e0bdb634ba77156a5c353656b814a595)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.8` ↗︎](https://www.npmjs.com/package/ai/v/4.3.8) (from `4.3.7`, in
`dependencies`)
- [#2067](https://github.com/Urigo/accounter-fullstack/pull/2067)
[`c96f3b0`](https://github.com/Urigo/accounter-fullstack/commit/c96f3b0f71d75ecb02d67b262c5b31070cef08f9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.9` ↗︎](https://www.npmjs.com/package/ai/v/4.3.9) (from `4.3.8`, in
`dependencies`)
- [#2074](https://github.com/Urigo/accounter-fullstack/pull/2074)
[`e73947f`](https://github.com/Urigo/accounter-fullstack/commit/e73947f075b8e175011a98a4cb27834ad6cb3b4d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.15.5` ↗︎](https://www.npmjs.com/package/pg/v/8.15.5) (from `8.14.1`, in
`dependencies`)
- [#2083](https://github.com/Urigo/accounter-fullstack/pull/2083)
[`82c17d6`](https://github.com/Urigo/accounter-fullstack/commit/82c17d615205dd460ba5453b18d23ca2c4800303)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency
[`graphql-scalars@1.24.2` ↗︎](https://www.npmjs.com/package/graphql-scalars/v/1.24.2) (to
`dependencies`)
- Added dependency [`zod@3.24.3` ↗︎](https://www.npmjs.com/package/zod/v/3.24.3) (to
`dependencies`)
- [#2085](https://github.com/Urigo/accounter-fullstack/pull/2085)
[`0f04fe9`](https://github.com/Urigo/accounter-fullstack/commit/0f04fe915f70c54401cb530ee58e439b6cb29b00)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.13` ↗︎](https://www.npmjs.com/package/ai/v/4.3.13) (from `4.3.9`, in
`dependencies`)
- Updated dependency [`pg@8.15.6` ↗︎](https://www.npmjs.com/package/pg/v/8.15.6) (from `8.15.5`, in
`dependencies`)
- Updated dependency [`zod@3.24.4` ↗︎](https://www.npmjs.com/package/zod/v/3.24.4) (from `3.24.3`,
in `dependencies`)
- [#2086](https://github.com/Urigo/accounter-fullstack/pull/2086)
[`5308911`](https://github.com/Urigo/accounter-fullstack/commit/530891185ab33f53299fa7fc8c623104e1b1dc94)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`graphql@16.11.0` ↗︎](https://www.npmjs.com/package/graphql/v/16.11.0) (from
`16.10.0`, in `dependencies`)
- [#2087](https://github.com/Urigo/accounter-fullstack/pull/2087)
[`5ecc50d`](https://github.com/Urigo/accounter-fullstack/commit/5ecc50d3d20efb3f03db59b906c9032097add473)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.6.1` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.6.1)
(from `2.6.0`, in `dependencies`)
- [#2100](https://github.com/Urigo/accounter-fullstack/pull/2100)
[`8af4bdb`](https://github.com/Urigo/accounter-fullstack/commit/8af4bdb8abc2ae36c8c3e2e3a75a201f9071c8d1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.11` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.11) (from
`1.2.10`, in `dependencies`)
- Updated dependency
[`@whatwg-node/fetch@0.10.7` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.7) (from
`0.10.6`, in `dependencies`)
- Updated dependency [`ai@4.3.15` ↗︎](https://www.npmjs.com/package/ai/v/4.3.15) (from `4.3.13`, in
`dependencies`)
- [#2110](https://github.com/Urigo/accounter-fullstack/pull/2110)
[`d5c808b`](https://github.com/Urigo/accounter-fullstack/commit/d5c808b50af4fc8089e25ec9f3696c22a3d9aa3e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`bcrypt@6.0.0` ↗︎](https://www.npmjs.com/package/bcrypt/v/6.0.0) (from
`5.1.1`, in `dependencies`)
- [#2116](https://github.com/Urigo/accounter-fullstack/pull/2116)
[`465aa1b`](https://github.com/Urigo/accounter-fullstack/commit/465aa1bea5442b00f8d8beaf40a37eee099b0960)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.16.0` ↗︎](https://www.npmjs.com/package/pg/v/8.16.0) (from `8.15.6`, in
`dependencies`)
- [#2124](https://github.com/Urigo/accounter-fullstack/pull/2124)
[`0d30d14`](https://github.com/Urigo/accounter-fullstack/commit/0d30d14501128d73ae7a571f66bc231a3254b8f7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.42.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.42.0) (from
`0.41.1`, in `dependencies`)
- [#2126](https://github.com/Urigo/accounter-fullstack/pull/2126)
[`f406046`](https://github.com/Urigo/accounter-fullstack/commit/f4060469ee9b30241ec7f7a4f0da5ad39abd4b7d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.3.16` ↗︎](https://www.npmjs.com/package/ai/v/4.3.16) (from `4.3.15`, in
`dependencies`)
- [#2145](https://github.com/Urigo/accounter-fullstack/pull/2145)
[`bfede15`](https://github.com/Urigo/accounter-fullstack/commit/bfede15da25cfcdca96a4242b5c5b9b1d08e0b28)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.1` ↗︎](https://www.npmjs.com/package/zod/v/3.25.1) (from `3.24.4`,
in `dependencies`)
- [#2147](https://github.com/Urigo/accounter-fullstack/pull/2147)
[`6cd6686`](https://github.com/Urigo/accounter-fullstack/commit/6cd66863456b6231a374b8f61798707bea11b213)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.3` ↗︎](https://www.npmjs.com/package/zod/v/3.25.3) (from `3.25.1`,
in `dependencies`)
- [#2148](https://github.com/Urigo/accounter-fullstack/pull/2148)
[`d20b48b`](https://github.com/Urigo/accounter-fullstack/commit/d20b48bf5dd25432f6db37c1807c4988d6ff5c09)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.6` ↗︎](https://www.npmjs.com/package/zod/v/3.25.6) (from `3.25.3`,
in `dependencies`)
- [#2150](https://github.com/Urigo/accounter-fullstack/pull/2150)
[`33a25c2`](https://github.com/Urigo/accounter-fullstack/commit/33a25c2d4c0e6231eff0a650ae79bdc1f502b125)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.7` ↗︎](https://www.npmjs.com/package/zod/v/3.25.7) (from `3.25.6`,
in `dependencies`)
- [#2152](https://github.com/Urigo/accounter-fullstack/pull/2152)
[`09e9153`](https://github.com/Urigo/accounter-fullstack/commit/09e91531ba51f96bc32292f4594d499fc296abd2)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.8` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.8) (from
`0.10.7`, in `dependencies`)
- [#2153](https://github.com/Urigo/accounter-fullstack/pull/2153)
[`0d2879c`](https://github.com/Urigo/accounter-fullstack/commit/0d2879c2afa447b31d60f01a98290ad2adb31196)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.8` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.8) (from
`0.10.7`, in `dependencies`)
- [#2155](https://github.com/Urigo/accounter-fullstack/pull/2155)
[`6718088`](https://github.com/Urigo/accounter-fullstack/commit/6718088b64c7d187d1934a7fc2a72f7fb08439b2)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.14` ↗︎](https://www.npmjs.com/package/zod/v/3.25.14) (from
`3.25.7`, in `dependencies`)
- [#2159](https://github.com/Urigo/accounter-fullstack/pull/2159)
[`f850fb6`](https://github.com/Urigo/accounter-fullstack/commit/f850fb62ba36ed46344b937e790a8cccb80e9f7d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.12` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.12) (from
`1.2.11`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.42.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.42.1) (from
`0.42.0`, in `dependencies`)
- Updated dependency [`zod@3.25.28` ↗︎](https://www.npmjs.com/package/zod/v/3.25.28) (from
`3.25.14`, in `dependencies`)
- [#2160](https://github.com/Urigo/accounter-fullstack/pull/2160)
[`433c1b8`](https://github.com/Urigo/accounter-fullstack/commit/433c1b8c272980f9ba3fa1f39ef731d642ae80c1)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`zod@3.25.49` ↗︎](https://www.npmjs.com/package/zod/v/3.25.49) (from
`3.25.30`, in `dependencies`)
- Added dependency
[`@accounter/shaam6111-generator@workspace:^` ↗︎](https://www.npmjs.com/package/@accounter/shaam6111-generator/v/workspace:^)
(to `dependencies`)
- [#2162](https://github.com/Urigo/accounter-fullstack/pull/2162)
[`5a5cb06`](https://github.com/Urigo/accounter-fullstack/commit/5a5cb067aacc338cd36bd5fc8177a640c49211fa)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.13.5` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.13.5)
(from `3.13.4`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.13.5` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.13.5) (from `5.13.4`,
in `dependencies`)
- [#2172](https://github.com/Urigo/accounter-fullstack/pull/2172)
[`c8dab86`](https://github.com/Urigo/accounter-fullstack/commit/c8dab8625d35d7aad836bd3bf5227fbbf1e7cc77)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.30` ↗︎](https://www.npmjs.com/package/zod/v/3.25.30) (from
`3.25.28`, in `dependencies`)
- [#2176](https://github.com/Urigo/accounter-fullstack/pull/2176)
[`4226408`](https://github.com/Urigo/accounter-fullstack/commit/422640856fdc0735e100b04777769f82c6a9f1b9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.49` ↗︎](https://www.npmjs.com/package/zod/v/3.25.49) (from
`3.25.30`, in `dependencies`)
- [#2186](https://github.com/Urigo/accounter-fullstack/pull/2186)
[`4797e93`](https://github.com/Urigo/accounter-fullstack/commit/4797e9366fae9393252dfdcf68b862f0991a8761)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.56` ↗︎](https://www.npmjs.com/package/zod/v/3.25.56) (from
`3.25.49`, in `dependencies`)
- [#2205](https://github.com/Urigo/accounter-fullstack/pull/2205)
[`e0443e7`](https://github.com/Urigo/accounter-fullstack/commit/e0443e71948a3bb3284b6bf2abbfadd7ba96f438)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.57` ↗︎](https://www.npmjs.com/package/zod/v/3.25.57) (from
`3.25.56`, in `dependencies`)
- [#2211](https://github.com/Urigo/accounter-fullstack/pull/2211)
[`901784d`](https://github.com/Urigo/accounter-fullstack/commit/901784d6f3d128d8624207eee45dd69e6e7308c5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.63` ↗︎](https://www.npmjs.com/package/zod/v/3.25.63) (from
`3.25.57`, in `dependencies`)
- [#2218](https://github.com/Urigo/accounter-fullstack/pull/2218)
[`2325c46`](https://github.com/Urigo/accounter-fullstack/commit/2325c467ab09cd9414f4dcf82a0646847d2dc974)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`zod@3.25.67` ↗︎](https://www.npmjs.com/package/zod/v/3.25.67) (from
`3.25.63`, in `dependencies`)
- [#2221](https://github.com/Urigo/accounter-fullstack/pull/2221)
[`2f00b0e`](https://github.com/Urigo/accounter-fullstack/commit/2f00b0e9ec1e8cb35bdeb412ca5aef996c5b0bf1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.7.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.7.0)
(from `2.6.1`, in `dependencies`)
- [#2222](https://github.com/Urigo/accounter-fullstack/pull/2222)
[`0edd716`](https://github.com/Urigo/accounter-fullstack/commit/0edd71632c36a652b438fd8839b68491668ed365)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.16.1` ↗︎](https://www.npmjs.com/package/pg/v/8.16.1) (from `8.16.0`, in
`dependencies`)
- [#2226](https://github.com/Urigo/accounter-fullstack/pull/2226)
[`598b22e`](https://github.com/Urigo/accounter-fullstack/commit/598b22ec84ba2f02998ba03a1544d96d879d1a7b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@10.0.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/10.0.0)
(from `9.1.3`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@8.0.0` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/8.0.0)
(from `7.1.3`, in `dependencies`)
- [#2232](https://github.com/Urigo/accounter-fullstack/pull/2232)
[`e69a0f8`](https://github.com/Urigo/accounter-fullstack/commit/e69a0f8fd2003bf6b834d3ca0830974110a23c8e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.16.2` ↗︎](https://www.npmjs.com/package/pg/v/8.16.2) (from `8.16.1`, in
`dependencies`)
- [#2241](https://github.com/Urigo/accounter-fullstack/pull/2241)
[`a4dac49`](https://github.com/Urigo/accounter-fullstack/commit/a4dac49aad13c3558b4cc01d9e7390a5bc76bd02)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv@16.6.1` ↗︎](https://www.npmjs.com/package/dotenv/v/16.6.1) (from
`16.5.0`, in `dependencies`)
- [#2246](https://github.com/Urigo/accounter-fullstack/pull/2246)
[`12a8f20`](https://github.com/Urigo/accounter-fullstack/commit/12a8f205c1081a4f540bf14072ded447fbf619b0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.16.3` ↗︎](https://www.npmjs.com/package/pg/v/8.16.3) (from `8.16.2`, in
`dependencies`)
- [#2250](https://github.com/Urigo/accounter-fullstack/pull/2250)
[`0d33be9`](https://github.com/Urigo/accounter-fullstack/commit/0d33be90e08269204a63fc190887b678c94f9f96)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Support JPY currency
- [#2160](https://github.com/Urigo/accounter-fullstack/pull/2160)
[`433c1b8`](https://github.com/Urigo/accounter-fullstack/commit/433c1b8c272980f9ba3fa1f39ef731d642ae80c1)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Features**
- Introduced a comprehensive Shaam6111 financial report with multi-tab views for header, profit
and loss, tax adjustment, and balance sheet data.
- Added a new route and sidebar link for accessing the Shaam6111 report.
- Implemented filter options for selecting business, year, and reference year within the report
interface.
- **Improvements**
- Enhanced forms and queries to support IRS codes for business and tax category data.
- Updated UI components for more precise type handling.
- Improved report data fetching with parallel loading of ledger records and financial entities.
- Added detailed GraphQL schema definitions and resolvers for Shaam6111 reports.
- Integrated new helper functions for generating Shaam6111 report data.
- Refactored cumulative calculation logic for research and development expenses in tax reports.
- Centralized and streamlined validation formulas for profit and loss and balance sheet
summaries.
- **Bug Fixes**
- Adjusted tax adjustment summary validation logic and updated corresponding tests.
- **Documentation**
- Added detailed GraphQL schema definitions for Shaam6111 reports.
- **Tests**
- Updated and expanded test cases for tax adjustment and header validation.
- **Chores**
- Refined internal configuration and export orders for improved maintainability.
- Added new dependency for Shaam6111 report generation.
- [#2139](https://github.com/Urigo/accounter-fullstack/pull/2139)
[`305c659`](https://github.com/Urigo/accounter-fullstack/commit/305c659b83bb4466964489979b52c51addc5f7c7)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Introduce optional document attribute -
`exchangeRateOverride`, for cases of foreign amount documents which also notes the local amount
value and exchange rate
- [#2158](https://github.com/Urigo/accounter-fullstack/pull/2158)
[`8d128a2`](https://github.com/Urigo/accounter-fullstack/commit/8d128a2159e2ea912cf02229ea72d075b3bca2ae)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Extend sort codes schema: add fetch by key,
insert and update capabilities. Create sort codes screen.
- [#2197](https://github.com/Urigo/accounter-fullstack/pull/2197)
[`32fca0c`](https://github.com/Urigo/accounter-fullstack/commit/32fca0c2bab986358390f14389c8441c7d6fe2be)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Features**
- Added support for an optional "taxExcluded" field when creating tax categories, allowing users
to specify whether a tax category is tax-excluded.
- **Bug Fixes**
- Corrected parameter naming to ensure proper handling of the "taxExcluded" value during tax
category creation.
- [#2146](https://github.com/Urigo/accounter-fullstack/pull/2146)
[`f5d5cd4`](https://github.com/Urigo/accounter-fullstack/commit/f5d5cd44548a4c7f2d750005e99b98547dd3d1b6)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - New business attribute: PCN874 record type
override (to force the generator to create a specific type of PCN874 entry)
- [#2169](https://github.com/Urigo/accounter-fullstack/pull/2169)
[`83d19e2`](https://github.com/Urigo/accounter-fullstack/commit/83d19e21a7bd9146de2886627515affceb4abe69)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Features**
- Added support for associating multiple IRS codes with sort codes, tax categories, and financial
entities.
- Introduced a new IRS codes input component allowing users to add, edit, and validate multiple
IRS codes in forms.
- Forms now dynamically update IRS codes based on sort code selection.
- **Improvements**
- Enhanced UI feedback by visually marking modified (dirty) fields in forms, except during
insert mode.
- Updated tables and detail views to display multiple IRS codes where applicable.
- **Bug Fixes**
- Ensured IRS code validation enforces uniqueness and valid ranges for all entries.
- **Database Migration**
- Migrated database columns to support arrays of IRS codes, preserving existing data.
- **API Changes**
- Updated GraphQL schema and API endpoints to handle arrays of IRS codes instead of single
values.
- [#2143](https://github.com/Urigo/accounter-fullstack/pull/2143)
[`cd22658`](https://github.com/Urigo/accounter-fullstack/commit/cd226583c0765388fe713b90261267119fc3e3b4)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix ledger generation for edge case:
cross-year, VAT-included, foreign-currency. Corrected VAT payment entries to ensure credit amounts
are accurately reflected.
- [#2203](https://github.com/Urigo/accounter-fullstack/pull/2203)
[`ad8b87c`](https://github.com/Urigo/accounter-fullstack/commit/ad8b87c7033dd29042db6bc600cda6cb0566811d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Features**
- Simplified IRS code handling throughout the app: IRS codes are now managed as a single value
instead of an array in all relevant forms, tables, and modals.
- **Bug Fixes**
- Updated number input fields to only accept whole numbers (no decimals) where applicable.
- **Refactor**
- Unified IRS code fields and logic across the user interface for consistency.
- Updated all related queries, mutations, and schema fields to use singular IRS code values.
- **Database Migration**
- Migrated existing IRS code data from arrays to single-value columns for improved data
consistency.
- Updated dependencies
[[`7d70618`](https://github.com/Urigo/accounter-fullstack/commit/7d706185e337c05efd2c8cbeb3b4b919522c5336),
[`ed1758c`](https://github.com/Urigo/accounter-fullstack/commit/ed1758ccebf849fde17a4c6e208a6e76913aea2c),
[`4efa957`](https://github.com/Urigo/accounter-fullstack/commit/4efa9571e0bdb634ba77156a5c353656b814a595),
[`5308911`](https://github.com/Urigo/accounter-fullstack/commit/530891185ab33f53299fa7fc8c623104e1b1dc94),
[`4797e93`](https://github.com/Urigo/accounter-fullstack/commit/4797e9366fae9393252dfdcf68b862f0991a8761),
[`2325c46`](https://github.com/Urigo/accounter-fullstack/commit/2325c467ab09cd9414f4dcf82a0646847d2dc974),
[`e69a0f8`](https://github.com/Urigo/accounter-fullstack/commit/e69a0f8fd2003bf6b834d3ca0830974110a23c8e),
[`f0dc5d0`](https://github.com/Urigo/accounter-fullstack/commit/f0dc5d0083c522c3504a89ba494888d97494910a),
[`0f04fe9`](https://github.com/Urigo/accounter-fullstack/commit/0f04fe915f70c54401cb530ee58e439b6cb29b00),
[`bfede15`](https://github.com/Urigo/accounter-fullstack/commit/bfede15da25cfcdca96a4242b5c5b9b1d08e0b28),
[`6cd6686`](https://github.com/Urigo/accounter-fullstack/commit/6cd66863456b6231a374b8f61798707bea11b213),
[`d20b48b`](https://github.com/Urigo/accounter-fullstack/commit/d20b48bf5dd25432f6db37c1807c4988d6ff5c09),
[`33a25c2`](https://github.com/Urigo/accounter-fullstack/commit/33a25c2d4c0e6231eff0a650ae79bdc1f502b125),
[`6718088`](https://github.com/Urigo/accounter-fullstack/commit/6718088b64c7d187d1934a7fc2a72f7fb08439b2),
[`f850fb6`](https://github.com/Urigo/accounter-fullstack/commit/f850fb62ba36ed46344b937e790a8cccb80e9f7d),
[`433c1b8`](https://github.com/Urigo/accounter-fullstack/commit/433c1b8c272980f9ba3fa1f39ef731d642ae80c1),
[`c8dab86`](https://github.com/Urigo/accounter-fullstack/commit/c8dab8625d35d7aad836bd3bf5227fbbf1e7cc77),
[`4226408`](https://github.com/Urigo/accounter-fullstack/commit/422640856fdc0735e100b04777769f82c6a9f1b9),
[`4797e93`](https://github.com/Urigo/accounter-fullstack/commit/4797e9366fae9393252dfdcf68b862f0991a8761),
[`e0443e7`](https://github.com/Urigo/accounter-fullstack/commit/e0443e71948a3bb3284b6bf2abbfadd7ba96f438),
[`901784d`](https://github.com/Urigo/accounter-fullstack/commit/901784d6f3d128d8624207eee45dd69e6e7308c5),
[`2325c46`](https://github.com/Urigo/accounter-fullstack/commit/2325c467ab09cd9414f4dcf82a0646847d2dc974),
[`bfede15`](https://github.com/Urigo/accounter-fullstack/commit/bfede15da25cfcdca96a4242b5c5b9b1d08e0b28),
[`6cd6686`](https://github.com/Urigo/accounter-fullstack/commit/6cd66863456b6231a374b8f61798707bea11b213),
[`d20b48b`](https://github.com/Urigo/accounter-fullstack/commit/d20b48bf5dd25432f6db37c1807c4988d6ff5c09),
[`33a25c2`](https://github.com/Urigo/accounter-fullstack/commit/33a25c2d4c0e6231eff0a650ae79bdc1f502b125),
[`6718088`](https://github.com/Urigo/accounter-fullstack/commit/6718088b64c7d187d1934a7fc2a72f7fb08439b2),
[`f850fb6`](https://github.com/Urigo/accounter-fullstack/commit/f850fb62ba36ed46344b937e790a8cccb80e9f7d),
[`433c1b8`](https://github.com/Urigo/accounter-fullstack/commit/433c1b8c272980f9ba3fa1f39ef731d642ae80c1),
[`c8dab86`](https://github.com/Urigo/accounter-fullstack/commit/c8dab8625d35d7aad836bd3bf5227fbbf1e7cc77),
[`4226408`](https://github.com/Urigo/accounter-fullstack/commit/422640856fdc0735e100b04777769f82c6a9f1b9),
[`4797e93`](https://github.com/Urigo/accounter-fullstack/commit/4797e9366fae9393252dfdcf68b862f0991a8761),
[`e0443e7`](https://github.com/Urigo/accounter-fullstack/commit/e0443e71948a3bb3284b6bf2abbfadd7ba96f438),
[`901784d`](https://github.com/Urigo/accounter-fullstack/commit/901784d6f3d128d8624207eee45dd69e6e7308c5),
[`2325c46`](https://github.com/Urigo/accounter-fullstack/commit/2325c467ab09cd9414f4dcf82a0646847d2dc974),
[`433c1b8`](https://github.com/Urigo/accounter-fullstack/commit/433c1b8c272980f9ba3fa1f39ef731d642ae80c1),
[`f0dc5d0`](https://github.com/Urigo/accounter-fullstack/commit/f0dc5d0083c522c3504a89ba494888d97494910a),
[`f5d5cd4`](https://github.com/Urigo/accounter-fullstack/commit/f5d5cd44548a4c7f2d750005e99b98547dd3d1b6)]:
- @accounter/green-invoice-graphql@0.7.4
- @accounter/pcn874-generator@0.6.0
- @accounter/shaam6111-generator@0.1.1
## 0.0.4
### Patch Changes
- [#1535](https://github.com/Urigo/accounter-fullstack/pull/1535)
[`6cb4e98`](https://github.com/Urigo/accounter-fullstack/commit/6cb4e98a6b1acac126a4f496ad4a08da2cc6c966)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv-cli@8.0.0` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/8.0.0)
(from `7.4.4`, in `dependencies`)
- [#1543](https://github.com/Urigo/accounter-fullstack/pull/1543)
[`777920c`](https://github.com/Urigo/accounter-fullstack/commit/777920c6e076538e99fec4a20853529a968be26e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.8` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.8)
(from `3.10.6`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.8` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.8) (from `5.10.6`,
in `dependencies`)
- [#1564](https://github.com/Urigo/accounter-fullstack/pull/1564)
[`b080d4c`](https://github.com/Urigo/accounter-fullstack/commit/b080d4c0e3553f8a7240a131db44d7f2bf8b3491)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.9` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.9)
(from `3.10.8`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.9` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.9) (from `5.10.8`,
in `dependencies`)
- [#1587](https://github.com/Urigo/accounter-fullstack/pull/1587)
[`6d56b87`](https://github.com/Urigo/accounter-fullstack/commit/6d56b87180d569a263fc382b1614a0f27145a3ba)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.3` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.3) (from
`0.10.1`, in `dependencies`)
- [#1603](https://github.com/Urigo/accounter-fullstack/pull/1603)
[`f2d556e`](https://github.com/Urigo/accounter-fullstack/commit/f2d556e1174c8e704e60a2ac36d1c117b675cc27)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.10` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.10)
(from `3.10.9`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.10` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.10) (from `5.10.9`,
in `dependencies`)
- [#1632](https://github.com/Urigo/accounter-fullstack/pull/1632)
[`84afa0a`](https://github.com/Urigo/accounter-fullstack/commit/84afa0a41f08a819714f6ba04bca8e18fd9c5f07)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.11` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.11)
(from `3.10.10`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.11` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.11) (from
`5.10.10`, in `dependencies`)
- [#1674](https://github.com/Urigo/accounter-fullstack/pull/1674)
[`b5fca56`](https://github.com/Urigo/accounter-fullstack/commit/b5fca56e69aff166b67a7d9ccaadac58207c613d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.39.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.39.0) (from
`^0.39.0`, in `dependencies`)
- Added dependency
[`@anthropic-ai/sdk@0.36.3` ↗︎](https://www.npmjs.com/package/@anthropic-ai/sdk/v/0.36.3) (to
`dependencies`)
- [#1683](https://github.com/Urigo/accounter-fullstack/pull/1683)
[`0ff1300`](https://github.com/Urigo/accounter-fullstack/commit/0ff13003f72c88bca26d2cba6eca52c64269c8da)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.39.4` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.39.4) (from
`0.39.0`, in `dependencies`)
- [#1688](https://github.com/Urigo/accounter-fullstack/pull/1688)
[`340ddb6`](https://github.com/Urigo/accounter-fullstack/commit/340ddb63a9728d41cabeddffc428e48d90db89c4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.11.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.11.0)
(from `3.10.11`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.11.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.11.0) (from `5.10.11`,
in `dependencies`)
- [#1700](https://github.com/Urigo/accounter-fullstack/pull/1700)
[`5185005`](https://github.com/Urigo/accounter-fullstack/commit/5185005c5c7ddc711ebc93b1c6215ee3a59fe345)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`@pgtyped/cli@2.4.2` ↗︎](https://www.npmjs.com/package/@pgtyped/cli/v/2.4.2)
(from `2.3.0`, in `dependencies`)
- [#1706](https://github.com/Urigo/accounter-fullstack/pull/1706)
[`eaf31e9`](https://github.com/Urigo/accounter-fullstack/commit/eaf31e9cfe56ac1f2a954dc986148fcb38d1e63b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.13.3` ↗︎](https://www.npmjs.com/package/pg/v/8.13.3) (from `8.13.1`, in
`dependencies`)
- [#1707](https://github.com/Urigo/accounter-fullstack/pull/1707)
[`e2e424f`](https://github.com/Urigo/accounter-fullstack/commit/e2e424fe7b82b0319bdf65312ead7d1bd85cd256)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.40.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.40.1) (from
`0.39.4`, in `dependencies`)
- [#1751](https://github.com/Urigo/accounter-fullstack/pull/1751)
[`b3f9a2e`](https://github.com/Urigo/accounter-fullstack/commit/b3f9a2ecaa4f5ec81fad5566902ff57963c98676)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.12.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.12.0)
(from `3.11.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.12.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.12.0) (from `5.11.0`,
in `dependencies`)
- [#1757](https://github.com/Urigo/accounter-fullstack/pull/1757)
[`ddae74a`](https://github.com/Urigo/accounter-fullstack/commit/ddae74ac7f9911fb6b6ad2bdadb934973fcec7a9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.9` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.9) (from
`1.1.8`, in `dependencies`)
- Updated dependency [`ai@4.1.42` ↗︎](https://www.npmjs.com/package/ai/v/4.1.42) (from `4.1.41`, in
`dependencies`)
- [#1762](https://github.com/Urigo/accounter-fullstack/pull/1762)
[`f71389a`](https://github.com/Urigo/accounter-fullstack/commit/f71389a90c6912af2ae9feea4a0c2ae1139f5725)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`graphql-modules@3.0.0` ↗︎](https://www.npmjs.com/package/graphql-modules/v/3.0.0) (from
`2.4.0`, in `dependencies`)
- [#1767](https://github.com/Urigo/accounter-fullstack/pull/1767)
[`44e9a17`](https://github.com/Urigo/accounter-fullstack/commit/44e9a1761305e199b686b3d04ba8b038985a9fc6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.1.44` ↗︎](https://www.npmjs.com/package/ai/v/4.1.44) (from `4.1.42`, in
`dependencies`)
- [#1769](https://github.com/Urigo/accounter-fullstack/pull/1769)
[`bbffb29`](https://github.com/Urigo/accounter-fullstack/commit/bbffb290d8419f717644fe69121d7dadeb26e71a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@9.0.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/9.0.0)
(from `8.0.1`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@7.0.1` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/7.0.1)
(from `6.0.0`, in `dependencies`)
- [#1774](https://github.com/Urigo/accounter-fullstack/pull/1774)
[`c4b8fc0`](https://github.com/Urigo/accounter-fullstack/commit/c4b8fc022f3f81de3ced338d6d26271f414091e6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.1.45` ↗︎](https://www.npmjs.com/package/ai/v/4.1.45) (from `4.1.44`, in
`dependencies`)
- [#1778](https://github.com/Urigo/accounter-fullstack/pull/1778)
[`8c48509`](https://github.com/Urigo/accounter-fullstack/commit/8c48509db682ef4f928966abd98c2e01f0ce14c9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.4` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.4) (from
`0.10.3`, in `dependencies`)
- [#1786](https://github.com/Urigo/accounter-fullstack/pull/1786)
[`59c0b6c`](https://github.com/Urigo/accounter-fullstack/commit/59c0b6cc3dd29921af7de0f601c791bbdb630148)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.5` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.5) (from
`0.10.4`, in `dependencies`)
- [#1790](https://github.com/Urigo/accounter-fullstack/pull/1790)
[`56a0d24`](https://github.com/Urigo/accounter-fullstack/commit/56a0d243c46ec3bf22f31c5b2ef8276e4a79ced5)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@9.0.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/9.0.0)
(from `8.0.1`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@7.0.1` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/7.0.1)
(from `6.0.0`, in `dependencies`)
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.12.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.12.1)
(from `3.12.0`, in `dependencies`)
- Updated dependency
[`@whatwg-node/fetch@0.10.5` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.5) (from
`0.10.4`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.12.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.12.1) (from `5.12.0`,
in `dependencies`)
- [#1792](https://github.com/Urigo/accounter-fullstack/pull/1792)
[`3119fcb`](https://github.com/Urigo/accounter-fullstack/commit/3119fcbbf5a10dc80574224af1cfe037e2149c1b)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@9.0.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/9.0.0)
(from `8.0.1`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@7.0.1` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/7.0.1)
(from `6.0.0`, in `dependencies`)
- [#1793](https://github.com/Urigo/accounter-fullstack/pull/1793)
[`257b2c9`](https://github.com/Urigo/accounter-fullstack/commit/257b2c9c76d9972056a450f6ab3246cc40948dd0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.12.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.12.1)
(from `3.12.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.12.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.12.1) (from `5.12.0`,
in `dependencies`)
- [#1800](https://github.com/Urigo/accounter-fullstack/pull/1800)
[`d3c17bc`](https://github.com/Urigo/accounter-fullstack/commit/d3c17bcfd5a8059f94c40ff52d55a304bfa6d2fa)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.10` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.10) (from
`1.1.9`, in `dependencies`)
- Updated dependency [`ai@4.1.46` ↗︎](https://www.npmjs.com/package/ai/v/4.1.46) (from `4.1.45`, in
`dependencies`)
- [#1804](https://github.com/Urigo/accounter-fullstack/pull/1804)
[`eb46d7b`](https://github.com/Urigo/accounter-fullstack/commit/eb46d7b2bdf199b964bbad7bb5863da892298a02)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@accounter/green-invoice-graphql@workspace:^` ↗︎](https://www.npmjs.com/package/@accounter/green-invoice-graphql/v/workspace:^)
(from `^0.7.2`, in `dependencies`)
- Updated dependency
[`@accounter/pcn874-generator@workspace:^` ↗︎](https://www.npmjs.com/package/@accounter/pcn874-generator/v/workspace:^)
(from `^0.4.1`, in `dependencies`)
- [#1809](https://github.com/Urigo/accounter-fullstack/pull/1809)
[`4365b57`](https://github.com/Urigo/accounter-fullstack/commit/4365b577e858f4c0525165c244a900b2aef5f5ca)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@9.0.1` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/9.0.1)
(from `9.0.0`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@7.0.2` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/7.0.2)
(from `7.0.1`, in `dependencies`)
- [#1815](https://github.com/Urigo/accounter-fullstack/pull/1815)
[`a8deeab`](https://github.com/Urigo/accounter-fullstack/commit/a8deeabbec6d1078a04c078a9a2f7effbc19fd9f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.11` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.11) (from
`1.1.10`, in `dependencies`)
- [#1820](https://github.com/Urigo/accounter-fullstack/pull/1820)
[`d659fc0`](https://github.com/Urigo/accounter-fullstack/commit/d659fc07a610a078de6ac9df81efd17d1073a934)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`@pgtyped/cli@2.4.3` ↗︎](https://www.npmjs.com/package/@pgtyped/cli/v/2.4.3)
(from `2.3.0`, in `dependencies`)
- Updated dependency
[`@pgtyped/runtime@2.4.2` ↗︎](https://www.npmjs.com/package/@pgtyped/runtime/v/2.4.2) (from
`2.3.0`, in `dependencies`)
- [#1821](https://github.com/Urigo/accounter-fullstack/pull/1821)
[`1f16f95`](https://github.com/Urigo/accounter-fullstack/commit/1f16f957188200967a4dc9328fc809ca6484c186)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.13` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.13) (from
`1.1.11`, in `dependencies`)
- Updated dependency [`ai@4.1.47` ↗︎](https://www.npmjs.com/package/ai/v/4.1.47) (from `4.1.46`, in
`dependencies`)
- [#1832](https://github.com/Urigo/accounter-fullstack/pull/1832)
[`9d3201e`](https://github.com/Urigo/accounter-fullstack/commit/9d3201ea99b48f8a6ecac0533bcedbeb2c07fac4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.13` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.13) (from
`1.1.11`, in `dependencies`)
- Updated dependency [`ai@4.1.47` ↗︎](https://www.npmjs.com/package/ai/v/4.1.47) (from `4.1.46`, in
`dependencies`)
- [#1836](https://github.com/Urigo/accounter-fullstack/pull/1836)
[`ccb912d`](https://github.com/Urigo/accounter-fullstack/commit/ccb912df13a3bb09764df993b20638fa79fbed7a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.12.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.12.2)
(from `3.12.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.12.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.12.2) (from `5.12.1`,
in `dependencies`)
- [#1838](https://github.com/Urigo/accounter-fullstack/pull/1838)
[`1ae254a`](https://github.com/Urigo/accounter-fullstack/commit/1ae254abb99a09c523108b1b064f31d8acc1bf14)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.1.50` ↗︎](https://www.npmjs.com/package/ai/v/4.1.50) (from `4.1.47`, in
`dependencies`)
- [#1854](https://github.com/Urigo/accounter-fullstack/pull/1854)
[`99d60c1`](https://github.com/Urigo/accounter-fullstack/commit/99d60c1eff405242cdde69d52ac3e6c52b4799f7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@9.1.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/9.1.0)
(from `9.0.1`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@7.1.0` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/7.1.0)
(from `7.0.2`, in `dependencies`)
- [#1855](https://github.com/Urigo/accounter-fullstack/pull/1855)
[`e2446b4`](https://github.com/Urigo/accounter-fullstack/commit/e2446b4a45d038ffeff7accfff6571e790bbce01)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.14` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.14) (from
`1.1.13`, in `dependencies`)
- Updated dependency [`ai@4.1.51` ↗︎](https://www.npmjs.com/package/ai/v/4.1.51) (from `4.1.50`, in
`dependencies`)
- [#1856](https://github.com/Urigo/accounter-fullstack/pull/1856)
[`92b833b`](https://github.com/Urigo/accounter-fullstack/commit/92b833b16436c49f2d11db42383669fac085bb1d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@9.1.1` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/9.1.1)
(from `9.1.0`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@7.1.1` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/7.1.1)
(from `7.1.0`, in `dependencies`)
- [#1857](https://github.com/Urigo/accounter-fullstack/pull/1857)
[`f12418b`](https://github.com/Urigo/accounter-fullstack/commit/f12418b102e24b9f45f5431ad4d12e09d00a2d8d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.1.52` ↗︎](https://www.npmjs.com/package/ai/v/4.1.52) (from `4.1.51`, in
`dependencies`)
- [#1859](https://github.com/Urigo/accounter-fullstack/pull/1859)
[`5a66a5b`](https://github.com/Urigo/accounter-fullstack/commit/5a66a5b9b93dac30b1dc46321dfd44794a651468)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@9.1.3` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/9.1.3)
(from `9.1.1`, in `dependencies`)
- Updated dependency
[`@envelop/graphql-modules@7.1.3` ↗︎](https://www.npmjs.com/package/@envelop/graphql-modules/v/7.1.3)
(from `7.1.1`, in `dependencies`)
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.13.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.13.1)
(from `3.13.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.13.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.13.1) (from `5.13.0`,
in `dependencies`)
- [#1859](https://github.com/Urigo/accounter-fullstack/pull/1859)
[`5a66a5b`](https://github.com/Urigo/accounter-fullstack/commit/5a66a5b9b93dac30b1dc46321dfd44794a651468)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.13.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.13.0)
(from `3.12.2`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.13.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.13.0) (from `5.12.2`,
in `dependencies`)
- [#1862](https://github.com/Urigo/accounter-fullstack/pull/1862)
[`577cd81`](https://github.com/Urigo/accounter-fullstack/commit/577cd815e2b728823292502d90d144ffb965bb7d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.15` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.15) (from
`1.1.14`, in `dependencies`)
- Updated dependency [`ai@4.1.54` ↗︎](https://www.npmjs.com/package/ai/v/4.1.54) (from `4.1.52`, in
`dependencies`)
- [#1880](https://github.com/Urigo/accounter-fullstack/pull/1880)
[`66fa68f`](https://github.com/Urigo/accounter-fullstack/commit/66fa68f19e2c8a9376748020d828080854b93fb7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@0.41.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.41.0) (from
`0.40.1`, in `dependencies`)
- [#1895](https://github.com/Urigo/accounter-fullstack/pull/1895)
[`9ecdc1c`](https://github.com/Urigo/accounter-fullstack/commit/9ecdc1c25b7e97198287f97cc5c367e1b2cbd00b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.6.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.6.0)
(from `2.5.1`, in `dependencies`)
- [#1902](https://github.com/Urigo/accounter-fullstack/pull/1902)
[`d955810`](https://github.com/Urigo/accounter-fullstack/commit/d95581080d5cbc79b1511e9ea3561fe802ffa187)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.14.0` ↗︎](https://www.npmjs.com/package/pg/v/8.14.0) (from `8.13.3`, in
`dependencies`)
- [#1905](https://github.com/Urigo/accounter-fullstack/pull/1905)
[`8ad26e4`](https://github.com/Urigo/accounter-fullstack/commit/8ad26e444a7da929077a4da0b07b96e664e81bba)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.16` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.16) (from
`1.1.15`, in `dependencies`)
- Updated dependency [`ai@4.1.58` ↗︎](https://www.npmjs.com/package/ai/v/4.1.58) (from `4.1.54`, in
`dependencies`)
- [#1908](https://github.com/Urigo/accounter-fullstack/pull/1908)
[`6728a51`](https://github.com/Urigo/accounter-fullstack/commit/6728a51d3d64053c4d4ec2fe12297e1f5fcd6c06)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.1.60` ↗︎](https://www.npmjs.com/package/ai/v/4.1.60) (from `4.1.58`, in
`dependencies`)
- [#1910](https://github.com/Urigo/accounter-fullstack/pull/1910)
[`3eae58f`](https://github.com/Urigo/accounter-fullstack/commit/3eae58ffffff0cc8a9324e1bc2bfd8a6601c74c0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.17` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.17) (from
`1.1.16`, in `dependencies`)
- Updated dependency [`ai@4.1.61` ↗︎](https://www.npmjs.com/package/ai/v/4.1.61) (from `4.1.60`, in
`dependencies`)
- [#1911](https://github.com/Urigo/accounter-fullstack/pull/1911)
[`7de124b`](https://github.com/Urigo/accounter-fullstack/commit/7de124b4003e3b2e8de60d2991f681a3f3e53462)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.17` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.17) (from
`1.1.16`, in `dependencies`)
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.13.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.13.2)
(from `3.13.1`, in `dependencies`)
- Updated dependency [`ai@4.1.61` ↗︎](https://www.npmjs.com/package/ai/v/4.1.61) (from `4.1.60`, in
`dependencies`)
- Updated dependency
[`graphql-yoga@5.13.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.13.2) (from `5.13.1`,
in `dependencies`)
- [#1927](https://github.com/Urigo/accounter-fullstack/pull/1927)
[`ab15906`](https://github.com/Urigo/accounter-fullstack/commit/ab1590690b73a96725164703f8d1efdfb0dba3b7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.13.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.13.2)
(from `3.13.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.13.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.13.2) (from `5.13.1`,
in `dependencies`)
- [#1932](https://github.com/Urigo/accounter-fullstack/pull/1932)
[`1ddff51`](https://github.com/Urigo/accounter-fullstack/commit/1ddff517562c26a0ed03064ac42411bc0c7edd08)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.18` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.18) (from
`1.1.17`, in `dependencies`)
- Updated dependency [`ai@4.1.63` ↗︎](https://www.npmjs.com/package/ai/v/4.1.63) (from `4.1.61`, in
`dependencies`)
- Updated dependency [`pg@8.14.1` ↗︎](https://www.npmjs.com/package/pg/v/8.14.1) (from `8.14.0`, in
`dependencies`)
- [#1936](https://github.com/Urigo/accounter-fullstack/pull/1936)
[`9c2fa34`](https://github.com/Urigo/accounter-fullstack/commit/9c2fa34e3497a643f82685b4880111a44fc83bb3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.19` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.19) (from
`1.1.18`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.41.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.41.1) (from
`0.41.0`, in `dependencies`)
- Updated dependency [`ai@4.1.66` ↗︎](https://www.npmjs.com/package/ai/v/4.1.66) (from `4.1.63`, in
`dependencies`)
- [#1942](https://github.com/Urigo/accounter-fullstack/pull/1942)
[`27430e4`](https://github.com/Urigo/accounter-fullstack/commit/27430e4216d4480e1422d7011b47f4cb144570e5)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.1.19` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.1.19) (from
`1.1.18`, in `dependencies`)
- Updated dependency
[`@graphql-hive/yoga@0.41.1` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.41.1) (from
`0.41.0`, in `dependencies`)
- Updated dependency [`ai@4.1.66` ↗︎](https://www.npmjs.com/package/ai/v/4.1.66) (from `4.1.63`, in
`dependencies`)
- [#1946](https://github.com/Urigo/accounter-fullstack/pull/1946)
[`771c7b7`](https://github.com/Urigo/accounter-fullstack/commit/771c7b7ef344097675af0cdd0ee6d8d4b392dc60)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.0` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.0) (from
`1.1.19`, in `dependencies`)
- [#1947](https://github.com/Urigo/accounter-fullstack/pull/1947)
[`ea0560d`](https://github.com/Urigo/accounter-fullstack/commit/ea0560d606723b27fe1b53166a75bab039c1c0db)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.2.5` ↗︎](https://www.npmjs.com/package/ai/v/4.2.5) (from `4.1.66`, in
`dependencies`)
- [#1966](https://github.com/Urigo/accounter-fullstack/pull/1966)
[`7c6679c`](https://github.com/Urigo/accounter-fullstack/commit/7c6679cd5843722a90abce00b1590dfa701a2689)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@ai-sdk/anthropic@1.2.2` ↗︎](https://www.npmjs.com/package/@ai-sdk/anthropic/v/1.2.2) (from
`1.2.0`, in `dependencies`)
- Updated dependency [`ai@4.2.6` ↗︎](https://www.npmjs.com/package/ai/v/4.2.6) (from `4.2.5`, in
`dependencies`)
- [#1975](https://github.com/Urigo/accounter-fullstack/pull/1975)
[`ae203c4`](https://github.com/Urigo/accounter-fullstack/commit/ae203c4fa23d172ec9a9ca95904838a39718964f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`ai@4.2.8` ↗︎](https://www.npmjs.com/package/ai/v/4.2.8) (from `4.2.6`, in
`dependencies`)
- Updated dependencies
[[`e5acaa1`](https://github.com/Urigo/accounter-fullstack/commit/e5acaa1fd5e4bc3027d308425a235ba55d93902f),
[`6afccff`](https://github.com/Urigo/accounter-fullstack/commit/6afccfff0e669c7e57ba4b7faea13d5cb6995fec),
[`3edcf26`](https://github.com/Urigo/accounter-fullstack/commit/3edcf268807300fe70dfe5a57f6241677768c496),
[`745dfe6`](https://github.com/Urigo/accounter-fullstack/commit/745dfe6a644ed43c6a2bb02814bb08182edbd465),
[`16d7c0a`](https://github.com/Urigo/accounter-fullstack/commit/16d7c0ab3965699cda4e9fa1b32838932d127622),
[`6d56b87`](https://github.com/Urigo/accounter-fullstack/commit/6d56b87180d569a263fc382b1614a0f27145a3ba),
[`c845a24`](https://github.com/Urigo/accounter-fullstack/commit/c845a24450cecedf40b9e32568a5008cd0d63da9),
[`6c9a985`](https://github.com/Urigo/accounter-fullstack/commit/6c9a98525f1423b46f90b66baea71a0c8705df72),
[`424065e`](https://github.com/Urigo/accounter-fullstack/commit/424065ea0311f8293b3b5f00d69b0fc561e47442),
[`53d22fc`](https://github.com/Urigo/accounter-fullstack/commit/53d22fcaf5481a19c026a361931bd4df67d98f8f),
[`eaf31e9`](https://github.com/Urigo/accounter-fullstack/commit/eaf31e9cfe56ac1f2a954dc986148fcb38d1e63b),
[`ddae74a`](https://github.com/Urigo/accounter-fullstack/commit/ddae74ac7f9911fb6b6ad2bdadb934973fcec7a9),
[`8c48509`](https://github.com/Urigo/accounter-fullstack/commit/8c48509db682ef4f928966abd98c2e01f0ce14c9),
[`59c0b6c`](https://github.com/Urigo/accounter-fullstack/commit/59c0b6cc3dd29921af7de0f601c791bbdb630148),
[`564e868`](https://github.com/Urigo/accounter-fullstack/commit/564e868011f732d63cc725dc55014940eda99a24),
[`56a0d24`](https://github.com/Urigo/accounter-fullstack/commit/56a0d243c46ec3bf22f31c5b2ef8276e4a79ced5),
[`3119fcb`](https://github.com/Urigo/accounter-fullstack/commit/3119fcbbf5a10dc80574224af1cfe037e2149c1b),
[`79ef4e2`](https://github.com/Urigo/accounter-fullstack/commit/79ef4e2e2401562732be3eabf73571889bd7cd0f),
[`5a66a5b`](https://github.com/Urigo/accounter-fullstack/commit/5a66a5b9b93dac30b1dc46321dfd44794a651468),
[`fb3fc0a`](https://github.com/Urigo/accounter-fullstack/commit/fb3fc0a1b409c088561d1aa4197221c5559f5763),
[`7c6679c`](https://github.com/Urigo/accounter-fullstack/commit/7c6679cd5843722a90abce00b1590dfa701a2689),
[`f55bdcd`](https://github.com/Urigo/accounter-fullstack/commit/f55bdcddb5afb3a4c4c9bd230b70b195d55c1b00)]:
- @accounter/green-invoice-graphql@0.7.3
- @accounter/pcn874-generator@0.5.0
## 0.0.3
### Patch Changes
- [#1194](https://github.com/Urigo/accounter-fullstack/pull/1194)
[`29bde12`](https://github.com/Urigo/accounter-fullstack/commit/29bde12f28b47ecbe7e3d699aa4cbcbb809dca62)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@4.1.0` ↗︎](https://www.npmjs.com/package/date-fns/v/4.1.0) (from
`3.6.0`, in `dependencies`)
- [#1220](https://github.com/Urigo/accounter-fullstack/pull/1220)
[`a4624cb`](https://github.com/Urigo/accounter-fullstack/commit/a4624cb4ea83055d3043a81a0bd860186efbfbab)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@accounter/green-invoice-graphql@^0.7.1` ↗︎](https://www.npmjs.com/package/@accounter/green-invoice-graphql/v/0.7.1)
(from `^0.6.0`, in `dependencies`)
- [#1255](https://github.com/Urigo/accounter-fullstack/pull/1255)
[`b1388db`](https://github.com/Urigo/accounter-fullstack/commit/b1388db7e1dde486f5f5a4c0155e954fefd323e8)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.5.1` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.5.1)
(from `2.5.0`, in `dependencies`)
- [#1287](https://github.com/Urigo/accounter-fullstack/pull/1287)
[`2ef2c87`](https://github.com/Urigo/accounter-fullstack/commit/2ef2c8718974a6882e8867c87f314f0ad9d93700)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.9.22` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.22) (from
`0.9.21`, in `dependencies`)
- [#1292](https://github.com/Urigo/accounter-fullstack/pull/1292)
[`f454038`](https://github.com/Urigo/accounter-fullstack/commit/f45403846f1c394cc26001534961421544fc609a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.13.1` ↗︎](https://www.npmjs.com/package/pg/v/8.13.1) (from `8.13.0`, in
`dependencies`)
- [#1293](https://github.com/Urigo/accounter-fullstack/pull/1293)
[`2c1d87a`](https://github.com/Urigo/accounter-fullstack/commit/2c1d87a0725660625de072c56db2579804898318)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`graphql-modules@2.4.0` ↗︎](https://www.npmjs.com/package/graphql-modules/v/2.4.0) (from
`2.3.0`, in `dependencies`)
- [#1309](https://github.com/Urigo/accounter-fullstack/pull/1309)
[`72fb1aa`](https://github.com/Urigo/accounter-fullstack/commit/72fb1aa680c8bc0eb7248c342513884548009ef4)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.8.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.8.0)
(from `3.7.0`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.8.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.8.0)
(from `5.7.0`, in `dependencies`)
- [#1312](https://github.com/Urigo/accounter-fullstack/pull/1312)
[`0f6f813`](https://github.com/Urigo/accounter-fullstack/commit/0f6f81399419b5811a51c07c28865eaee9a4a290)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.9.23` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.23) (from
`0.9.22`, in `dependencies`)
- [#1322](https://github.com/Urigo/accounter-fullstack/pull/1322)
[`bc5f190`](https://github.com/Urigo/accounter-fullstack/commit/bc5f19036d8961cc9c1fe9545f3c8f21a3008034)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.9.23` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.23) (from
`0.9.22`, in `dependencies`)
- [#1329](https://github.com/Urigo/accounter-fullstack/pull/1329)
[`8095595`](https://github.com/Urigo/accounter-fullstack/commit/80955956e44e67e0263bfdb1797db5cdc15df725)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency
[`@graphql-hive/yoga@^0.38.2` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.38.2) (to
`dependencies`)
- [#1334](https://github.com/Urigo/accounter-fullstack/pull/1334)
[`a2a4589`](https://github.com/Urigo/accounter-fullstack/commit/a2a4589374fb537c208e81c9660348b50b802b95)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.9.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.9.0)
(from `3.8.0`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.9.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.9.0)
(from `5.8.0`, in `dependencies`)
- [#1336](https://github.com/Urigo/accounter-fullstack/pull/1336)
[`232b050`](https://github.com/Urigo/accounter-fullstack/commit/232b050b4d85fabe1090fa87b9b3677753daac0f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.0` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.0) (from
`0.9.23`, in `dependencies`)
- [#1340](https://github.com/Urigo/accounter-fullstack/pull/1340)
[`840ea17`](https://github.com/Urigo/accounter-fullstack/commit/840ea175933014f51453b9c18cf965feeed9160f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.10.1` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.10.1) (from
`0.10.0`, in `dependencies`)
- [#1359](https://github.com/Urigo/accounter-fullstack/pull/1359)
[`dd28718`](https://github.com/Urigo/accounter-fullstack/commit/dd2871873049bca68ae7eb2d191afa2ba4cd5048)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.0)
(from `3.9.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.0) (from `5.9.0`, in
`dependencies`)
- [#1360](https://github.com/Urigo/accounter-fullstack/pull/1360)
[`459616c`](https://github.com/Urigo/accounter-fullstack/commit/459616c67919dd40d313e4170235d5c731b59e99)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-hive/yoga@^0.39.0` ↗︎](https://www.npmjs.com/package/@graphql-hive/yoga/v/0.39.0)
(from `^0.38.2`, in `dependencies`)
- [#1362](https://github.com/Urigo/accounter-fullstack/pull/1362)
[`802ee94`](https://github.com/Urigo/accounter-fullstack/commit/802ee94e0d4c4c05ad769405171db4c4a6d449a2)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.1)
(from `3.10.0`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.1) (from `5.10.0`,
in `dependencies`)
- [#1364](https://github.com/Urigo/accounter-fullstack/pull/1364)
[`ad9a6f4`](https://github.com/Urigo/accounter-fullstack/commit/ad9a6f430a60aa4633f5f24cb618054ca37e6225)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`node-xlsx@0.24.0` ↗︎](https://www.npmjs.com/package/node-xlsx/v/0.24.0) (to
`dependencies`)
- [#1369](https://github.com/Urigo/accounter-fullstack/pull/1369)
[`a185265`](https://github.com/Urigo/accounter-fullstack/commit/a1852650123afb073d188fbc9ef0cf50a56f9af6)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.2)
(from `3.10.1`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.2) (from `5.10.1`,
in `dependencies`)
- [#1387](https://github.com/Urigo/accounter-fullstack/pull/1387)
[`60ddea5`](https://github.com/Urigo/accounter-fullstack/commit/60ddea53c9cc0bdb6f9d63a2164d59ceebf4d02e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv-cli@7.4.3` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/7.4.3)
(from `7.4.2`, in `dependencies`)
- [#1393](https://github.com/Urigo/accounter-fullstack/pull/1393)
[`bdc1cbd`](https://github.com/Urigo/accounter-fullstack/commit/bdc1cbd22699dd3b9e0e3b18861ab9a10b6085c5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.3` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.3)
(from `3.10.2`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.3` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.3) (from `5.10.2`,
in `dependencies`)
- [#1400](https://github.com/Urigo/accounter-fullstack/pull/1400)
[`8b29bd1`](https://github.com/Urigo/accounter-fullstack/commit/8b29bd14c51422bf17ac488bd0296c4d239d1b76)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv-cli@7.4.4` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/7.4.4)
(from `7.4.3`, in `dependencies`)
- [#1404](https://github.com/Urigo/accounter-fullstack/pull/1404)
[`90c67ec`](https://github.com/Urigo/accounter-fullstack/commit/90c67ecb93c23dfa42b2ae15b4e5400cbe7936fe)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Removed dependency
[`@graphql-yoga/node@3.9.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/node/v/3.9.1) (from
`dependencies`)
- [#1432](https://github.com/Urigo/accounter-fullstack/pull/1432)
[`f6c14fd`](https://github.com/Urigo/accounter-fullstack/commit/f6c14fd8df12d761ad988553452bb473bea81cb9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.4` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.4)
(from `3.10.3`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.4` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.4) (from `5.10.3`,
in `dependencies`)
- [#1442](https://github.com/Urigo/accounter-fullstack/pull/1442)
[`4bdf9f0`](https://github.com/Urigo/accounter-fullstack/commit/4bdf9f05ef20926eede70c518433b71fba34e595)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dataloader@2.2.3` ↗︎](https://www.npmjs.com/package/dataloader/v/2.2.3)
(from `2.2.2`, in `dependencies`)
- Updated dependency [`dotenv@16.4.7` ↗︎](https://www.npmjs.com/package/dotenv/v/16.4.7) (from
`16.4.5`, in `dependencies`)
- [#1478](https://github.com/Urigo/accounter-fullstack/pull/1478)
[`cc9ef53`](https://github.com/Urigo/accounter-fullstack/commit/cc9ef538bf0a8af93553bedbb0f8da406d6f6dce)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@8.0.1` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/8.0.1)
(from `8.0.0`, in `dependencies`)
- [#1492](https://github.com/Urigo/accounter-fullstack/pull/1492)
[`78f0730`](https://github.com/Urigo/accounter-fullstack/commit/78f073076a51169c96217c6edda277d8a6d6d254)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.5` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.5)
(from `3.10.4`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.5` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.5) (from `5.10.4`,
in `dependencies`)
- [#1493](https://github.com/Urigo/accounter-fullstack/pull/1493)
[`32949d5`](https://github.com/Urigo/accounter-fullstack/commit/32949d52114e603fe7e003b1354e95f4528ff483)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.10.6` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.10.6)
(from `3.10.5`, in `dependencies`)
- Updated dependency
[`graphql-yoga@5.10.6` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.10.6) (from `5.10.5`,
in `dependencies`)
- [#1496](https://github.com/Urigo/accounter-fullstack/pull/1496)
[`36f1255`](https://github.com/Urigo/accounter-fullstack/commit/36f12555e4f68484f247e1677dd794b2dc2fcb59)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`graphql@16.10.0` ↗︎](https://www.npmjs.com/package/graphql/v/16.10.0) (from
`16.9.0`, in `dependencies`)
- Updated dependencies
[[`f5ae7a3`](https://github.com/Urigo/accounter-fullstack/commit/f5ae7a346d7309a7d24a04641c667de0a483aff4),
[`147de78`](https://github.com/Urigo/accounter-fullstack/commit/147de78aead9f79589c6c7a2fae5e84be6b6c545),
[`a324408`](https://github.com/Urigo/accounter-fullstack/commit/a324408adc12d5dfbc76dc65765886811d56823b),
[`f454038`](https://github.com/Urigo/accounter-fullstack/commit/f45403846f1c394cc26001534961421544fc609a),
[`09a3624`](https://github.com/Urigo/accounter-fullstack/commit/09a36248c62bd7949cc41a00222e1d3f8cc31b1e),
[`aec397d`](https://github.com/Urigo/accounter-fullstack/commit/aec397d307d403223226546e2f54dfd6cef2afb5),
[`840ea17`](https://github.com/Urigo/accounter-fullstack/commit/840ea175933014f51453b9c18cf965feeed9160f),
[`4689ab0`](https://github.com/Urigo/accounter-fullstack/commit/4689ab0fae6cf9e009e8aff74aa46c069cfc2a7b),
[`1061c1d`](https://github.com/Urigo/accounter-fullstack/commit/1061c1dc5b38962a009857c4d328b08e1311e4db),
[`a2cd4f4`](https://github.com/Urigo/accounter-fullstack/commit/a2cd4f4925e99932a085abbe99b57f0848d31c44),
[`1cfc0c9`](https://github.com/Urigo/accounter-fullstack/commit/1cfc0c948c77efda00b5fd1f568215574b8015a5),
[`8b29bd1`](https://github.com/Urigo/accounter-fullstack/commit/8b29bd14c51422bf17ac488bd0296c4d239d1b76),
[`a230f9b`](https://github.com/Urigo/accounter-fullstack/commit/a230f9bd6ccf545fdd031b123514cedef04b1d2a),
[`de23ce0`](https://github.com/Urigo/accounter-fullstack/commit/de23ce015297c2b1dba17f7ad6159a54fab1bd60),
[`307c69a`](https://github.com/Urigo/accounter-fullstack/commit/307c69a44df87e1b85272e11de2245927d0a5153),
[`58cb7ee`](https://github.com/Urigo/accounter-fullstack/commit/58cb7ee7689772081ebf23771399fecbbf4c9983),
[`dd5facb`](https://github.com/Urigo/accounter-fullstack/commit/dd5facb1ed9186d062479b25998bfe7855f6ca1c),
[`29ec26d`](https://github.com/Urigo/accounter-fullstack/commit/29ec26dc57abed99c7cab24f85e96909a4921aba),
[`50ea0a2`](https://github.com/Urigo/accounter-fullstack/commit/50ea0a2366a7b8f21cf5b6c26d8120dbaf067c10),
[`6581954`](https://github.com/Urigo/accounter-fullstack/commit/6581954f05f7d216c24d7fb13772d2941ca241a4),
[`2e3417e`](https://github.com/Urigo/accounter-fullstack/commit/2e3417e60af5372f8b30ba4a2d1265aaa2864332),
[`36f1255`](https://github.com/Urigo/accounter-fullstack/commit/36f12555e4f68484f247e1677dd794b2dc2fcb59)]:
- @accounter/green-invoice-graphql@0.7.2
## 0.0.2
### Patch Changes
- [#1104](https://github.com/Urigo/accounter-fullstack/pull/1104)
[`9e659bc`](https://github.com/Urigo/accounter-fullstack/commit/9e659bcebea37b4628ede218ecc09f6a1ecc8a16)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.9.21` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.21) (from
`0.9.20`, in `dependencies`)
- [#1150](https://github.com/Urigo/accounter-fullstack/pull/1150)
[`120e61f`](https://github.com/Urigo/accounter-fullstack/commit/120e61f4842852d50701d0e40a49f22d2b7b7486)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@8.0.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/8.0.0)
(from `7.0.0`, in `dependencies`)
- [#1155](https://github.com/Urigo/accounter-fullstack/pull/1155)
[`f957c2f`](https://github.com/Urigo/accounter-fullstack/commit/f957c2fe71704ff85534ed46efb20b9c1e49d32d)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@envelop/generic-auth@7.0.0` ↗︎](https://www.npmjs.com/package/@envelop/generic-auth/v/7.0.0)
(from `8.0.0`, in `dependencies`)
- [#1189](https://github.com/Urigo/accounter-fullstack/pull/1189)
[`9c4f4ab`](https://github.com/Urigo/accounter-fullstack/commit/9c4f4abcbba070616730595861882e8a461a70a1)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.5.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.5.0)
(from `2.4.0`, in `dependencies`)
- [#1193](https://github.com/Urigo/accounter-fullstack/pull/1193)
[`bd80324`](https://github.com/Urigo/accounter-fullstack/commit/bd80324efed9ab40e3d01e35e45f72d289de202c)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.13.0` ↗︎](https://www.npmjs.com/package/pg/v/8.13.0) (from `8.12.0`, in
`dependencies`)
- Updated dependencies
[[`32489f3`](https://github.com/Urigo/accounter-fullstack/commit/32489f38a9bbca43b1e128f0643e3b16949a199f),
[`a5d144a`](https://github.com/Urigo/accounter-fullstack/commit/a5d144aa5ecf63491677a13568727ce49ced5b1a),
[`9e659bc`](https://github.com/Urigo/accounter-fullstack/commit/9e659bcebea37b4628ede218ecc09f6a1ecc8a16),
[`e5ae050`](https://github.com/Urigo/accounter-fullstack/commit/e5ae0509ab03b8fb2df74a962b15fd19cd509d23),
[`62d2729`](https://github.com/Urigo/accounter-fullstack/commit/62d272915d75063206f53305a3bfcf8a5b6277e8),
[`f2910cf`](https://github.com/Urigo/accounter-fullstack/commit/f2910cf1862f04899641bb13b5e691e5646f83b4),
[`b9bd839`](https://github.com/Urigo/accounter-fullstack/commit/b9bd8396bf73d77eccbf7f8681eeffebf2a5471b),
[`cd4be2b`](https://github.com/Urigo/accounter-fullstack/commit/cd4be2bb680eda1826e740e54c9a92d55accad18),
[`d67572c`](https://github.com/Urigo/accounter-fullstack/commit/d67572cbc82d7da308e7f37430c0d05ef8573915)]:
- @accounter/green-invoice-graphql@0.7.1
## 0.0.1
### Patch Changes
- [#1012](https://github.com/Urigo/accounter-fullstack/pull/1012)
[`6e6bb6c`](https://github.com/Urigo/accounter-fullstack/commit/6e6bb6c6b065d85d67f0161a223ce425b2b471e9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.6.3` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.6.3)
(from `3.6.2`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.6.3` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.6.3)
(from `5.6.2`, in `dependencies`)
- [#1064](https://github.com/Urigo/accounter-fullstack/pull/1064)
[`b9ad8b7`](https://github.com/Urigo/accounter-fullstack/commit/b9ad8b72dad72779d43bcd37996b878e8f9a394a)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.9.20` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.20) (from
`0.9.19`, in `dependencies`)
- [#1067](https://github.com/Urigo/accounter-fullstack/pull/1067)
[`8f44050`](https://github.com/Urigo/accounter-fullstack/commit/8f44050865c0ea18abb1f1976d054796047f163b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.7.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.7.0)
(from `3.6.3`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.7.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.7.0)
(from `5.6.3`, in `dependencies`)
- [#462](https://github.com/Urigo/accounter-fullstack/pull/462)
[`9908666`](https://github.com/Urigo/accounter-fullstack/commit/9908666f53cb05623f8f9485621e500cb1be77d2)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency
[`@accounter-toolkit/green-invoice-graphql@0.6.0` ↗︎](https://www.npmjs.com/package/@accounter-toolkit/green-invoice-graphql/v/0.6.0)
(from `0.5.2`, in `dependencies`)
- Updated dependency
[`@whatwg-node/fetch@0.9.17` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.17) (from
`0.9.14`, in `dependencies`)
- Updated dependency [`cloudinary@2.0.3` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.0.3)
(from `1.41.3`, in `dependencies`)
- Updated dependency [`dotenv@16.4.5` ↗︎](https://www.npmjs.com/package/dotenv/v/16.4.5) (from
`16.4.0`, in `dependencies`)
- [#470](https://github.com/Urigo/accounter-fullstack/pull/470)
[`4c86678`](https://github.com/Urigo/accounter-fullstack/commit/4c866780ef1c78880f9b62854d5ab9a5eb74db95)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Updated dependency [`dotenv-cli@7.4.1` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/7.4.1)
(from `7.3.0`, in `dependencies`)
- Added dependency
[`@accounter/green-invoice-graphql@0.6.0` ↗︎](https://www.npmjs.com/package/@accounter/green-invoice-graphql/v/0.6.0)
(to `dependencies`)
- Added dependency
[`@accounter/pcn874-generator@0.4.1` ↗︎](https://www.npmjs.com/package/@accounter/pcn874-generator/v/0.4.1)
(to `dependencies`)
- Removed dependency
[`@accounter-toolkit/green-invoice-graphql@0.6.0` ↗︎](https://www.npmjs.com/package/@accounter-toolkit/green-invoice-graphql/v/0.6.0)
(from `dependencies`)
- Removed dependency
[`@accounter-toolkit/pcn874-generator@0.4.1` ↗︎](https://www.npmjs.com/package/@accounter-toolkit/pcn874-generator/v/0.4.1)
(from `dependencies`)
- [#481](https://github.com/Urigo/accounter-fullstack/pull/481)
[`fbdceb0`](https://github.com/Urigo/accounter-fullstack/commit/fbdceb08df26fe815b34db4194caf07e3442b9a2)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@3.4.0` ↗︎](https://www.npmjs.com/package/date-fns/v/3.4.0) (from
`3.3.1`, in `dependencies`)
- [#488](https://github.com/Urigo/accounter-fullstack/pull/488)
[`0b90ae8`](https://github.com/Urigo/accounter-fullstack/commit/0b90ae881ad84250b58cb050c61b8c027f4f86cf)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.2.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.2.0)
(from `3.1.1`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.2.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.2.0)
(from `5.1.1`, in `dependencies`)
- [#491](https://github.com/Urigo/accounter-fullstack/pull/491)
[`15f7b08`](https://github.com/Urigo/accounter-fullstack/commit/15f7b08dd1651c5ec7cd5bd9c51486d0a90c5883)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@3.5.0` ↗︎](https://www.npmjs.com/package/date-fns/v/3.5.0) (from
`3.4.0`, in `dependencies`)
- [#498](https://github.com/Urigo/accounter-fullstack/pull/498)
[`4666850`](https://github.com/Urigo/accounter-fullstack/commit/46668503a1d502f71fb61d64f5b64769d9e6142e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`date-fns@3.6.0` ↗︎](https://www.npmjs.com/package/date-fns/v/3.6.0) (from
`3.5.0`, in `dependencies`)
- [#522](https://github.com/Urigo/accounter-fullstack/pull/522)
[`0c0b2e2`](https://github.com/Urigo/accounter-fullstack/commit/0c0b2e24ddf9777262ced77f75f8044a0ad6990d)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.11.4` ↗︎](https://www.npmjs.com/package/pg/v/8.11.4) (from `8.11.3`, in
`dependencies`)
- Updated dependency
[`reflect-metadata@0.2.2` ↗︎](https://www.npmjs.com/package/reflect-metadata/v/0.2.2) (from
`0.2.1`, in `dependencies`)
- [#531](https://github.com/Urigo/accounter-fullstack/pull/531)
[`06cada9`](https://github.com/Urigo/accounter-fullstack/commit/06cada921bcdcc0ef36fa7164abb310381dd1ad0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.1.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.1.0)
(from `2.0.3`, in `dependencies`)
- [#532](https://github.com/Urigo/accounter-fullstack/pull/532)
[`d87fa2f`](https://github.com/Urigo/accounter-fullstack/commit/d87fa2fa690a3b5723b49013db905d1a2030a129)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.3.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.3.0)
(from `3.2.0`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.3.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.3.0)
(from `5.2.0`, in `dependencies`)
- [#553](https://github.com/Urigo/accounter-fullstack/pull/553)
[`1ad893a`](https://github.com/Urigo/accounter-fullstack/commit/1ad893a646d1f80fc3f853252d12a40315c237a9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`pg@8.11.5` ↗︎](https://www.npmjs.com/package/pg/v/8.11.5) (from `8.11.4`, in
`dependencies`)
- [#617](https://github.com/Urigo/accounter-fullstack/pull/617)
[`3caf386`](https://github.com/Urigo/accounter-fullstack/commit/3caf386a1e1a9697c7626f8578b032a1b4a67ed9)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.2.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.2.0)
(from `2.1.0`, in `dependencies`)
- [#643](https://github.com/Urigo/accounter-fullstack/pull/643)
[`559fa5e`](https://github.com/Urigo/accounter-fullstack/commit/559fa5ebcc51d5963d3421461408de8bb5c94b5e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`graphql-yoga@5.3.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.3.1)
(from `5.3.0`, in `dependencies`)
- [#645](https://github.com/Urigo/accounter-fullstack/pull/645)
[`310e362`](https://github.com/Urigo/accounter-fullstack/commit/310e3623aee044da8ad6256d9d689f2dd0d33b74)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`dotenv-cli@7.4.2` ↗︎](https://www.npmjs.com/package/dotenv-cli/v/7.4.2)
(from `7.4.1`, in `dependencies`)
- [#646](https://github.com/Urigo/accounter-fullstack/pull/646)
[`b0fd1e6`](https://github.com/Urigo/accounter-fullstack/commit/b0fd1e65636d974f8411d4e9cdf952ca82e2f35f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.3.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.3.1)
(from `3.3.0`, in `dependencies`)
- [#730](https://github.com/Urigo/accounter-fullstack/pull/730)
[`65cbe28`](https://github.com/Urigo/accounter-fullstack/commit/65cbe2850726a0da5aa1433c51a34c993f8598d5)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.9.18` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.18) (from
`0.9.17`, in `dependencies`)
- [#745](https://github.com/Urigo/accounter-fullstack/pull/745)
[`8f16dc6`](https://github.com/Urigo/accounter-fullstack/commit/8f16dc691c5fa9b011ee59191d62ece8b7aae1b3)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`graphql@16.8.2` ↗︎](https://www.npmjs.com/package/graphql/v/16.8.2) (from
`16.8.1`, in `dependencies`)
- [#777](https://github.com/Urigo/accounter-fullstack/pull/777)
[`f5eab11`](https://github.com/Urigo/accounter-fullstack/commit/f5eab11a148d779807f05b8c3706d58f25a4180f)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.4.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.4.0)
(from `3.3.1`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.4.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.4.0)
(from `5.3.1`, in `dependencies`)
- [#794](https://github.com/Urigo/accounter-fullstack/pull/794)
[`3adbc26`](https://github.com/Urigo/accounter-fullstack/commit/3adbc26730bae4f147df93481f3d875a667fcc68)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`graphql@16.9.0` ↗︎](https://www.npmjs.com/package/graphql/v/16.9.0) (from
`16.8.2`, in `dependencies`)
- [#831](https://github.com/Urigo/accounter-fullstack/pull/831)
[`bbc4083`](https://github.com/Urigo/accounter-fullstack/commit/bbc4083892d9760f5a196a7a28530192fe377e85)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.6.0` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.6.0)
(from `3.5.0`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.6.0` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.6.0)
(from `5.5.0`, in `dependencies`)
- [#834](https://github.com/Urigo/accounter-fullstack/pull/834)
[`f753750`](https://github.com/Urigo/accounter-fullstack/commit/f753750532b696d33386a6500642ef378deb0b67)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates:
- Added dependency [`node-cache@5.1.2` ↗︎](https://www.npmjs.com/package/node-cache/v/5.1.2) (to
`dependencies`)
- [#926](https://github.com/Urigo/accounter-fullstack/pull/926)
[`7b8d567`](https://github.com/Urigo/accounter-fullstack/commit/7b8d567467434b97e12493d0a8e33af13f5ec38e)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.3.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.3.0)
(from `2.2.0`, in `dependencies`)
- [#938](https://github.com/Urigo/accounter-fullstack/pull/938)
[`eebe180`](https://github.com/Urigo/accounter-fullstack/commit/eebe180ca8234c54df68b633702287c2ceffd74b)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.6.1` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.6.1)
(from `3.6.0`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.6.1` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.6.1)
(from `5.6.0`, in `dependencies`)
- [#968](https://github.com/Urigo/accounter-fullstack/pull/968)
[`9dac6ea`](https://github.com/Urigo/accounter-fullstack/commit/9dac6ea259c0b4565c1560675d54b8ecf0bfe7b7)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.3.1` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.3.1)
(from `2.3.0`, in `dependencies`)
- [#971](https://github.com/Urigo/accounter-fullstack/pull/971)
[`0489b1a`](https://github.com/Urigo/accounter-fullstack/commit/0489b1a9f0665e911d70de4cab4acbd42b4c7fad)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@graphql-yoga/plugin-defer-stream@3.6.2` ↗︎](https://www.npmjs.com/package/@graphql-yoga/plugin-defer-stream/v/3.6.2)
(from `3.6.1`, in `dependencies`)
- Updated dependency [`graphql-yoga@5.6.2` ↗︎](https://www.npmjs.com/package/graphql-yoga/v/5.6.2)
(from `5.6.1`, in `dependencies`)
- [#977](https://github.com/Urigo/accounter-fullstack/pull/977)
[`821eb86`](https://github.com/Urigo/accounter-fullstack/commit/821eb86d5859108768f167d75e490ee9c3bc22c0)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency
[`@whatwg-node/fetch@0.9.19` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/0.9.19) (from
`0.9.18`, in `dependencies`)
- [#988](https://github.com/Urigo/accounter-fullstack/pull/988)
[`a5e828c`](https://github.com/Urigo/accounter-fullstack/commit/a5e828c62edddb5831643c2840a2cc4dff24b5fa)
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
- Updated dependency [`cloudinary@2.4.0` ↗︎](https://www.npmjs.com/package/cloudinary/v/2.4.0)
(from `2.3.1`, in `dependencies`)
- [#1049](https://github.com/Urigo/accounter-fullstack/pull/1049)
[`55e7838`](https://github.com/Urigo/accounter-fullstack/commit/55e7838abbc2f6939a60425c787edb0bbc906261)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Better treat refund charges - set exchange
ledger to tax category instead of income category
- [#470](https://github.com/Urigo/accounter-fullstack/pull/470)
[`4c86678`](https://github.com/Urigo/accounter-fullstack/commit/4c866780ef1c78880f9b62854d5ab9a5eb74db95)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Local usage of accounter-toolkit packages
- [#546](https://github.com/Urigo/accounter-fullstack/pull/546)
[`8a11d6b`](https://github.com/Urigo/accounter-fullstack/commit/8a11d6b380dfb1f8095ce3fc566056fa5b8ba76a)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Extend DB charge's businesses array with
ledger financial entities (include tax categories)
- [#514](https://github.com/Urigo/accounter-fullstack/pull/514)
[`1b5ed4b`](https://github.com/Urigo/accounter-fullstack/commit/1b5ed4b87bb83d6d552caecc5f20736ae416cfb9)
Thanks [@gilgardosh](https://github.com/gilgardosh)! - Fix GreenInvoice numeric enums handling:
use numbers instead of underscore-prefixed strings
- Updated dependencies
[[`8fa5fa3`](https://github.com/Urigo/accounter-fullstack/commit/8fa5fa38a2e0a2dc66e7d58434b0ab0b49501e8e),
[`e01539c`](https://github.com/Urigo/accounter-fullstack/commit/e01539c4a2e6a4df8b2c8b7e558a0c29b1f1e36e),
[`1aff4f0`](https://github.com/Urigo/accounter-fullstack/commit/1aff4f02f3b9f28f7f5f3b05eb87c9913ebf32da),
[`395fa90`](https://github.com/Urigo/accounter-fullstack/commit/395fa900c3b40aab0346182abd304bf113fd4643),
[`d4342d4`](https://github.com/Urigo/accounter-fullstack/commit/d4342d4641b48a148bf8ba6ea473a44dfc4ff186),
[`544defb`](https://github.com/Urigo/accounter-fullstack/commit/544defb5a58aeef64c9e89beb7d470f7bd78bf06),
[`e33b9ae`](https://github.com/Urigo/accounter-fullstack/commit/e33b9ae42db7adf7e853d6f4765231352f261a55),
[`8d4658e`](https://github.com/Urigo/accounter-fullstack/commit/8d4658eff9a77e90e0e5f9b5df894fb9852684e5),
[`85f6b47`](https://github.com/Urigo/accounter-fullstack/commit/85f6b471c29f7b5133cc8d40b7d185d6d3acad88),
[`92a3b41`](https://github.com/Urigo/accounter-fullstack/commit/92a3b4183ae433189b96a061464beb0b9b94de92),
[`b56e384`](https://github.com/Urigo/accounter-fullstack/commit/b56e38483b4a2b854f94f7a519e46c0fe11b9a5f),
[`e6ba95a`](https://github.com/Urigo/accounter-fullstack/commit/e6ba95a212fcb58f44ab183ccf209207bf35b3b6),
[`f4c917c`](https://github.com/Urigo/accounter-fullstack/commit/f4c917c7af5bf91f94a2457c0edf002db8298808),
[`0c0b2e2`](https://github.com/Urigo/accounter-fullstack/commit/0c0b2e24ddf9777262ced77f75f8044a0ad6990d),
[`d53495b`](https://github.com/Urigo/accounter-fullstack/commit/d53495b0efce17348795766b7cc88786507fe61e),
[`a610797`](https://github.com/Urigo/accounter-fullstack/commit/a6107970b9c6526860f862002246bd5be872db55),
[`b03449e`](https://github.com/Urigo/accounter-fullstack/commit/b03449ed32bbaec45975866a0b50257d0b99fb02),
[`a7a1ccb`](https://github.com/Urigo/accounter-fullstack/commit/a7a1ccbacb18ddc86d1de4b996900e1be3c12ad3),
[`ebc6252`](https://github.com/Urigo/accounter-fullstack/commit/ebc625216c68c0d5fade0cbdf7dde6bee8ee46c3),
[`589ec6b`](https://github.com/Urigo/accounter-fullstack/commit/589ec6bc3e987c8bc670b05b0022d59422131934),
[`6a14adf`](https://github.com/Urigo/accounter-fullstack/commit/6a14adfe23c354697b082c58c1df87d1fef9f53e),
[`60a0845`](https://github.com/Urigo/accounter-fullstack/commit/60a0845cdf5754c182fed84e36522e9555b4e30c),
[`8f16dc6`](https://github.com/Urigo/accounter-fullstack/commit/8f16dc691c5fa9b011ee59191d62ece8b7aae1b3),
[`d6247ce`](https://github.com/Urigo/accounter-fullstack/commit/d6247ce0657c40a941c6e86a1c3ef260a8f52cf4),
[`3adbc26`](https://github.com/Urigo/accounter-fullstack/commit/3adbc26730bae4f147df93481f3d875a667fcc68),
[`c61694b`](https://github.com/Urigo/accounter-fullstack/commit/c61694bc859ce89ba04d1ea52629a1bc8657d070),
[`10b4fa0`](https://github.com/Urigo/accounter-fullstack/commit/10b4fa03cd4a38fcdb4069a1c2ea42d1713c040c),
[`be71797`](https://github.com/Urigo/accounter-fullstack/commit/be71797d59f358e1458d357aabd1996d3c5558ae),
[`c9d0e34`](https://github.com/Urigo/accounter-fullstack/commit/c9d0e34cf45f2e4a5f4ba2c3c09e62cd9ca1c929),
[`c8db25c`](https://github.com/Urigo/accounter-fullstack/commit/c8db25cc858367df457445cb37116d4f79d7541e),
[`406859f`](https://github.com/Urigo/accounter-fullstack/commit/406859ff9d8edd9f7590d79acdeb9ef679dd1e89),
[`12ac465`](https://github.com/Urigo/accounter-fullstack/commit/12ac4658cb9e4d4b5d023f054f5355465338218b),
[`695feef`](https://github.com/Urigo/accounter-fullstack/commit/695feef85cbadb487639ac951cb68a7387864e3f),
[`745c4d5`](https://github.com/Urigo/accounter-fullstack/commit/745c4d55e7d5337722c0a858c57c7dab5ffdbf07),
[`dd81ccb`](https://github.com/Urigo/accounter-fullstack/commit/dd81ccb4849607ef71a4859fe5e472b5e2126dc4),
[`2a154e6`](https://github.com/Urigo/accounter-fullstack/commit/2a154e63486f9637b59dd12a5296e831e5379210),
[`77dd3dc`](https://github.com/Urigo/accounter-fullstack/commit/77dd3dcb8160eac3ac75bb783cbc89185ff59f8b),
[`537ae05`](https://github.com/Urigo/accounter-fullstack/commit/537ae057bd575f99b6344a647b5de50def53c224),
[`4c86678`](https://github.com/Urigo/accounter-fullstack/commit/4c866780ef1c78880f9b62854d5ab9a5eb74db95),
[`1b5ed4b`](https://github.com/Urigo/accounter-fullstack/commit/1b5ed4b87bb83d6d552caecc5f20736ae416cfb9)]:
- @accounter/green-invoice-graphql@0.7.0
- @accounter/pcn874-generator@0.4.2