UNPKG

@accounter/scraper-app

Version:
523 lines (451 loc) 35 kB
# @accounter/scraper-app ## 0.0.3-alpha-20260813085405-230edd38a6d55bd79966d89d7a73496f4f82ee75 ### Patch Changes - [#3792](https://github.com/Urigo/accounter-fullstack/pull/3792) [`1a8e0ea`](https://github.com/Urigo/accounter-fullstack/commit/1a8e0eaee582464aa9ec79b71c8aadd618fc5a15) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`fastify@5.9.0` ↗︎](https://www.npmjs.com/package/fastify/v/5.9.0) (from `5.8.5`, 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 [`fastify@5.10.0` ↗︎](https://www.npmjs.com/package/fastify/v/5.10.0) (from `5.9.0`, in `dependencies`) - [#3842](https://github.com/Urigo/accounter-fullstack/pull/3842) [`f19c49c`](https://github.com/Urigo/accounter-fullstack/commit/f19c49cccfb84b5cd3b8b0455f241ef325b9facb) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`fastify@5.10.0` ↗︎](https://www.npmjs.com/package/fastify/v/5.10.0) (from `5.9.0`, in `dependencies`) - [#3871](https://github.com/Urigo/accounter-fullstack/pull/3871) [`8a38200`](https://github.com/Urigo/accounter-fullstack/commit/8a38200368a8e0e9a80a325e3bb878f99a26c38d) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`msw@2.15.0` ↗︎](https://www.npmjs.com/package/msw/v/2.15.0) (from `2.14.6`, 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 [`@fastify/static@9.3.0` ↗︎](https://www.npmjs.com/package/@fastify/static/v/9.3.0) (from `9.1.3`, in `dependencies`) - Updated dependency [`fast-xml-parser@5.10.0` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.10.0) (from `5.9.3`, in `dependencies`) - Updated dependency [`msw@2.15.0` ↗︎](https://www.npmjs.com/package/msw/v/2.15.0) (from `2.14.6`, in `dependencies`) - [#3881](https://github.com/Urigo/accounter-fullstack/pull/3881) [`9556c7e`](https://github.com/Urigo/accounter-fullstack/commit/9556c7ed91f83629c76e6c502826aff948850354) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`@fastify/static@9.3.0` ↗︎](https://www.npmjs.com/package/@fastify/static/v/9.3.0) (from `9.1.3`, in `dependencies`) - [#3882](https://github.com/Urigo/accounter-fullstack/pull/3882) [`f9f80c8`](https://github.com/Urigo/accounter-fullstack/commit/f9f80c84fce8fbe32e58bd24e4ab0ae858e8fc46) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`@fastify/websocket@11.3.0` ↗︎](https://www.npmjs.com/package/@fastify/websocket/v/11.3.0) (from `11.2.0`, in `dependencies`) - [#3911](https://github.com/Urigo/accounter-fullstack/pull/3911) [`6c3406e`](https://github.com/Urigo/accounter-fullstack/commit/6c3406e6a5a8bd91f76f3b971db33f4a526de582) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`fast-xml-parser@5.10.0` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.10.0) (from `5.9.3`, in `dependencies`) - [#3912](https://github.com/Urigo/accounter-fullstack/pull/3912) [`494b8f8`](https://github.com/Urigo/accounter-fullstack/commit/494b8f87ffce00b37e1ebed571fb1026317a007f) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`@fastify/static@10.1.0` ↗︎](https://www.npmjs.com/package/@fastify/static/v/10.1.0) (from `9.3.0`, in `dependencies`) - [#3923](https://github.com/Urigo/accounter-fullstack/pull/3923) [`9ee7ab8`](https://github.com/Urigo/accounter-fullstack/commit/9ee7ab89299fe08b12a5ac639dc84dfd25a390c7) Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates: - Updated dependency [`@fastify/websocket@11.3.0` ↗︎](https://www.npmjs.com/package/@fastify/websocket/v/11.3.0) (from `11.2.0`, in `dependencies`) - [#3925](https://github.com/Urigo/accounter-fullstack/pull/3925) [`547e405`](https://github.com/Urigo/accounter-fullstack/commit/547e40567b02e0e16a7f6d3cfdbf12fe5ae819b6) Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates: - Updated dependency [`@fastify/websocket@11.3.0` ↗︎](https://www.npmjs.com/package/@fastify/websocket/v/11.3.0) (from `11.2.0`, in `dependencies`) - [#3927](https://github.com/Urigo/accounter-fullstack/pull/3927) [`485dae7`](https://github.com/Urigo/accounter-fullstack/commit/485dae7f363133e7c794bb2a6ae50fe50fef2b9f) Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates: - Updated dependency [`@fastify/websocket@11.3.0` ↗︎](https://www.npmjs.com/package/@fastify/websocket/v/11.3.0) (from `11.2.0`, 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 [`ws@8.21.1` ↗︎](https://www.npmjs.com/package/ws/v/8.21.1) (from `8.21.0`, in `dependencies`) - [#3938](https://github.com/Urigo/accounter-fullstack/pull/3938) [`2a0c041`](https://github.com/Urigo/accounter-fullstack/commit/2a0c041b0dc6104039304598f932e7990e84c2c0) Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates: - Updated dependency [`@fastify/static@10.1.0` ↗︎](https://www.npmjs.com/package/@fastify/static/v/10.1.0) (from `9.3.0`, in `dependencies`) - [#3939](https://github.com/Urigo/accounter-fullstack/pull/3939) [`aed9832`](https://github.com/Urigo/accounter-fullstack/commit/aed98323f04b757d0ad3d5b2b3b67280a1db61dc) Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates: - Updated dependency [`@fastify/static@10.1.0` ↗︎](https://www.npmjs.com/package/@fastify/static/v/10.1.0) (from `9.3.0`, in `dependencies`) - [#3942](https://github.com/Urigo/accounter-fullstack/pull/3942) [`57c9258`](https://github.com/Urigo/accounter-fullstack/commit/57c92581f2359697b84278ab40c56c9b0aa710f6) Thanks [@gilgardosh](https://github.com/gilgardosh)! - dependencies updates: - Updated dependency [`@fastify/static@10.1.0` ↗︎](https://www.npmjs.com/package/@fastify/static/v/10.1.0) (from `9.3.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 [`fast-xml-parser@5.10.1` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.10.1) (from `5.10.0`, 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 [`fast-xml-parser@5.10.1` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.10.1) (from `5.10.0`, in `dependencies`) - [#4041](https://github.com/Urigo/accounter-fullstack/pull/4041) [`8b56b46`](https://github.com/Urigo/accounter-fullstack/commit/8b56b468e08154e0a496595c5c4a6b283bfb9bbb) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`@fastify/static@10.1.2` ↗︎](https://www.npmjs.com/package/@fastify/static/v/10.1.2) (from `10.1.0`, 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 [`react@19.2.8` ↗︎](https://www.npmjs.com/package/react/v/19.2.8) (from `19.2.7`, in `dependencies`) - Updated dependency [`react-dom@19.2.8` ↗︎](https://www.npmjs.com/package/react-dom/v/19.2.8) (from `19.2.7`, 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 [`fastify@5.11.0` ↗︎](https://www.npmjs.com/package/fastify/v/5.11.0) (from `5.10.0`, in `dependencies`) - [#4072](https://github.com/Urigo/accounter-fullstack/pull/4072) [`9b0e91f`](https://github.com/Urigo/accounter-fullstack/commit/9b0e91ffa7916c70ad9ce769153ba6fd71186478) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`fastify@5.11.0` ↗︎](https://www.npmjs.com/package/fastify/v/5.11.0) (from `5.10.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 [`fastify@5.11.2` ↗︎](https://www.npmjs.com/package/fastify/v/5.11.2) (from `5.11.0`, 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 [`@fastify/static@10.1.3` ↗︎](https://www.npmjs.com/package/@fastify/static/v/10.1.3) (from `10.1.2`, in `dependencies`) - Updated dependency [`ws@8.21.2` ↗︎](https://www.npmjs.com/package/ws/v/8.21.2) (from `8.21.1`, 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 [`fastify@5.11.2` ↗︎](https://www.npmjs.com/package/fastify/v/5.11.2) (from `5.11.0`, 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 [`ws@8.21.2` ↗︎](https://www.npmjs.com/package/ws/v/8.21.2) (from `8.21.1`, 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 [`@fastify/static@10.1.3` ↗︎](https://www.npmjs.com/package/@fastify/static/v/10.1.3) (from `10.1.2`, 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 [`fastify@5.11.3` ↗︎](https://www.npmjs.com/package/fastify/v/5.11.3) (from `5.11.2`, in `dependencies`) - Updated dependency [`ws@8.21.3` ↗︎](https://www.npmjs.com/package/ws/v/8.21.3) (from `8.21.2`, in `dependencies`) - [#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. - [#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`. - [#3949](https://github.com/Urigo/accounter-fullstack/pull/3949) [`36a1832`](https://github.com/Urigo/accounter-fullstack/commit/36a1832ad9da82660379109bd688c8f4e4d60d9f) Thanks [@gilgardosh](https://github.com/gilgardosh)! - Surface Poalim schema validation failures instead of silently swallowing them. The modern-poalim-scraper runs Zod validation internally (`validateSchema: true`) and returns `{ data, isValid, errors }`, setting `data` to `null` and `isValid` to `false` on a failed validation. `scrapePoalim` only read `data`, so a failed `getAccountsData` validation looked like "no accounts" and the run reported success with no data; the same silent swallow applied to the per-account ILS, foreign, and SWIFT requests. Each Poalim request now checks `isValid` and throws a descriptive error (including the validation issues), which propagates to the run runner and is emitted as a `task-error` so the user is notified. - [#3803](https://github.com/Urigo/accounter-fullstack/pull/3803) [`9bd0c32`](https://github.com/Urigo/accounter-fullstack/commit/9bd0c32ec5279fd98e7c41d3a17e9cd64a943dfc) Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Updated `amex.test.ts`, `cal.test.ts`, `discount.test.ts`, and `isracard.test.ts` to set `vi.setConfig({ testTimeout: 30_000 })` - Added explanatory comments referencing PR [#3795](https://github.com/urigo/accounter-fullstack/issues/3795) which introduced the 2-5s per-month delays in scrapers - Updated dependencies [[`670f7cc`](https://github.com/Urigo/accounter-fullstack/commit/670f7cc2bd58c04da5dd151e4878382916700a8e), [`50ca939`](https://github.com/Urigo/accounter-fullstack/commit/50ca939661d9eb5b31e134c54d12015e524fac1c), [`7a7dc71`](https://github.com/Urigo/accounter-fullstack/commit/7a7dc71ba2dc9a660f150340f2352704d571f367), [`fd69847`](https://github.com/Urigo/accounter-fullstack/commit/fd698477f09c7bbf245bcb011afc359f47521da3), [`e3f2337`](https://github.com/Urigo/accounter-fullstack/commit/e3f233710a581a48dee6e45e956170dc3c2799c3), [`568beb7`](https://github.com/Urigo/accounter-fullstack/commit/568beb7c49949f553c9e6cce54ab248123ba86b3), [`3910f54`](https://github.com/Urigo/accounter-fullstack/commit/3910f548f6da8ec4130878766853ec326df37b94), [`f899b37`](https://github.com/Urigo/accounter-fullstack/commit/f899b37a1561ef168398d122f214d9802178707d), [`73316d3`](https://github.com/Urigo/accounter-fullstack/commit/73316d3a7704b22a493d5357097a283baf3567ea), [`9571ea2`](https://github.com/Urigo/accounter-fullstack/commit/9571ea22c35a030112b2631a8a4e2c0c212098fa), [`4eb395f`](https://github.com/Urigo/accounter-fullstack/commit/4eb395fc0436adeca029f2a8bb49e0aef8f22c66), [`4eb395f`](https://github.com/Urigo/accounter-fullstack/commit/4eb395fc0436adeca029f2a8bb49e0aef8f22c66), [`c406f51`](https://github.com/Urigo/accounter-fullstack/commit/c406f5151625b26768c3764ee302ef5e1aa80c05)]: - @accounter/modern-poalim-scraper@0.11.0-alpha-20260813085405-230edd38a6d55bd79966d89d7a73496f4f82ee75 ## 0.0.2 ### Patch Changes - [#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 [`fast-xml-parser@5.7.3` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.7.3) (from `5.7.2`, in `dependencies`) - Updated dependency [`msw@2.14.3` ↗︎](https://www.npmjs.com/package/msw/v/2.14.3) (from `2.14.2`, in `dependencies`) - Updated dependency [`react@19.2.6` ↗︎](https://www.npmjs.com/package/react/v/19.2.6) (from `19.2.5`, in `dependencies`) - Updated dependency [`react-dom@19.2.6` ↗︎](https://www.npmjs.com/package/react-dom/v/19.2.6) (from `19.2.5`, in `dependencies`) - [#3465](https://github.com/Urigo/accounter-fullstack/pull/3465) [`89e36f3`](https://github.com/Urigo/accounter-fullstack/commit/89e36f3f76ac3a1c315bd305d55c0f1704efe8ac) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`msw@2.14.2` ↗︎](https://www.npmjs.com/package/msw/v/2.14.2) (from `2.13.6`, in `dependencies`) - [#3481](https://github.com/Urigo/accounter-fullstack/pull/3481) [`9fcf835`](https://github.com/Urigo/accounter-fullstack/commit/9fcf8357867e437f39c33fc7c056cdb3f749a5fc) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`zod@4.4.3` ↗︎](https://www.npmjs.com/package/zod/v/4.4.3) (from `4.3.6`, 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 [`msw@2.14.5` ↗︎](https://www.npmjs.com/package/msw/v/2.14.5) (from `2.14.3`, 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 [`msw@2.14.5` ↗︎](https://www.npmjs.com/package/msw/v/2.14.5) (from `2.14.3`, in `dependencies`) - [#3517](https://github.com/Urigo/accounter-fullstack/pull/3517) [`771084b`](https://github.com/Urigo/accounter-fullstack/commit/771084ba04be2aa0cf42904ab5591534b60af680) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`msw@2.14.6` ↗︎](https://www.npmjs.com/package/msw/v/2.14.6) (from `2.14.5`, in `dependencies`) - [#3524](https://github.com/Urigo/accounter-fullstack/pull/3524) [`dda0668`](https://github.com/Urigo/accounter-fullstack/commit/dda066884da59c5b3a1b962a1d8e1364972e965d) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`fast-xml-parser@5.8.0` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.8.0) (from `5.7.3`, 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 [`ws@8.20.1` ↗︎](https://www.npmjs.com/package/ws/v/8.20.1) (from `8.20.0`, 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`) - [#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`) - [#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`) - [#3561](https://github.com/Urigo/accounter-fullstack/pull/3561) [`4298298`](https://github.com/Urigo/accounter-fullstack/commit/429829867e1f9c70619c6a18d8bd9dee8cab1ea4) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`ws@8.21.0` ↗︎](https://www.npmjs.com/package/ws/v/8.21.0) (from `8.20.1`, 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`) - [#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 [`react@19.2.7` ↗︎](https://www.npmjs.com/package/react/v/19.2.7) (from `19.2.6`, in `dependencies`) - Updated dependency [`react-dom@19.2.7` ↗︎](https://www.npmjs.com/package/react-dom/v/19.2.7) (from `19.2.6`, in `dependencies`) - [#3687](https://github.com/Urigo/accounter-fullstack/pull/3687) [`2130c0d`](https://github.com/Urigo/accounter-fullstack/commit/2130c0d38bd8f53b16a8d95a1eb87d363d6644ab) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: - Updated dependency [`fast-xml-parser@5.9.0` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.9.0) (from `5.8.0`, 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 [`fast-xml-parser@5.9.3` ↗︎](https://www.npmjs.com/package/fast-xml-parser/v/5.9.3) (from `5.9.0`, in `dependencies`) - [#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. - **Infrastructure Integration**: Integrated the new scraper into the existing system, including GraphQL mutation updates and UI configuration support. - [#3463](https://github.com/Urigo/accounter-fullstack/pull/3463) [`2d320ea`](https://github.com/Urigo/accounter-fullstack/commit/2d320ea2340a57b9bac1b8f597a2a16aff61cf5b) Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Granular Progress Events**: Replaced legacy progress messages with 10 precisely-typed WebSocket events, providing real-time visibility into per-month and per-account scraping progress. - **Non-Fatal Scrape Loops**: Updated Isracard, Amex, Discount, and Cal scrapers to use a non-fatal month-by-month loop, allowing tasks to continue even if a specific month fails. - **UI Progress Tracking**: Added a new TaskSteps sub-component to the UI, enabling users to monitor granular progress via collapsible sub-rows for months or accounts. - **Poalim Account Discovery**: Implemented per-account and per-transaction-type progress reporting for Poalim, including vault status checks. - [#3515](https://github.com/Urigo/accounter-fullstack/pull/3515) [`0c2b8d1`](https://github.com/Urigo/accounter-fullstack/commit/0c2b8d1076b5ca1a478d21f98f64d9db723358a7) Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **New Vault API Endpoints**: Added GET /api/vault/env-path, GET /api/vault/download, and POST /api/vault/upload to support vault file management, including atomic writes and binary streaming. - **Vault Path Configuration**: Introduced a configurable vaultPath in SettingsSchema, allowing users to specify and update the storage location of their vault file. - **Atomic Vault Migration**: Implemented moveVaultFile in the server store to atomically relocate the vault file on disk when the vaultPath setting is updated. - **UI Integration**: Added file upload functionality to both the setup and unlock screens, and enabled vault downloading and path editing in the settings tab. - [#3474](https://github.com/Urigo/accounter-fullstack/pull/3474) [`1e70928`](https://github.com/Urigo/accounter-fullstack/commit/1e709282f39c9f722bb3ce5289a8edcda826012c) Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Emit detailed currency rates and Max scrapers task status - For Max accounts, the websocket logic was updated to process accounts individually - [#3459](https://github.com/Urigo/accounter-fullstack/pull/3459) [`6bd3b40`](https://github.com/Urigo/accounter-fullstack/commit/6bd3b40e1d128429e2fdcf8c06a16af2fbabe3a4) Thanks [@gilgardosh](https://github.com/gilgardosh)! - - **Scraper App Package**: Added the new `@accounter-helper/scraper-app` package to the monorepo, including its build configuration and initial server/UI structure. - **Vault Configuration**: Updated the codegen configuration to include the new scraper app's GraphQL mutations and added a comprehensive implementation blueprint for the refactor. - [#3627](https://github.com/Urigo/accounter-fullstack/pull/3627) [`4f0c31c`](https://github.com/Urigo/accounter-fullstack/commit/4f0c31c03761d0f915ddbdd5104bcaec0a042dfe) Thanks [@gilgardosh](https://github.com/gilgardosh)! - - Updated `parseForeignXls` to support `subAccount` identification, ensuring foreign transactions are correctly associated with their respective sub-accounts. - Improved browser launch configuration to explicitly check for `headless` mode. - Updated types to include `subAccount` in `ForeignAccountMetadata`. - **Database Migrations:** - Added a new migration to flag fees in Otsar Hahayal transactions (ILS, foreign, and credit card) based on description and name patterns. - Updated the migration runner to include the new fee-flagging migration. - [#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. - [#3497](https://github.com/Urigo/accounter-fullstack/pull/3497) [`ce62b25`](https://github.com/Urigo/accounter-fullstack/commit/ce62b2576b1bfc86344fe40e272f58cd3b45d956) Thanks [@gilgardosh](https://github.com/gilgardosh)! - Enhance OTP dialog: enable manual closing, auto-close on done - Updated dependencies [[`b4d8625`](https://github.com/Urigo/accounter-fullstack/commit/b4d8625fcdec44818ffc81f363eab652074a2fa6), [`82f07c2`](https://github.com/Urigo/accounter-fullstack/commit/82f07c25cd88fbcef8d29ef3d32230cfce168caa), [`a5e6d19`](https://github.com/Urigo/accounter-fullstack/commit/a5e6d19bf96173dde9097985a8df0065b9c3e499), [`a92aeb2`](https://github.com/Urigo/accounter-fullstack/commit/a92aeb20551558fc2e32d9ac427e47eab52ddb52), [`f94b2da`](https://github.com/Urigo/accounter-fullstack/commit/f94b2dadb2431f5a386217d716b72c15cff0ddd0), [`46f9fc5`](https://github.com/Urigo/accounter-fullstack/commit/46f9fc5592590a765770592efab440a0374e9bde), [`ba0531a`](https://github.com/Urigo/accounter-fullstack/commit/ba0531acbe4936cca371e553cfe7120329acec25), [`1ad8a10`](https://github.com/Urigo/accounter-fullstack/commit/1ad8a10f3dd92b38c04ccea15b90cc7f9dc43887), [`0b654ef`](https://github.com/Urigo/accounter-fullstack/commit/0b654ef08495e1632ccc75942d6a1a3142924d9f), [`e76cee0`](https://github.com/Urigo/accounter-fullstack/commit/e76cee0916c6a9f6cc445d228642bc3caf767f86), [`771084b`](https://github.com/Urigo/accounter-fullstack/commit/771084ba04be2aa0cf42904ab5591534b60af680), [`b7634ad`](https://github.com/Urigo/accounter-fullstack/commit/b7634ad71fa879662cbcbc2ccca796016dc3f8e1), [`c6555f5`](https://github.com/Urigo/accounter-fullstack/commit/c6555f5d6a731b05f26ae58a47c485a905e4ec55), [`9d9ce57`](https://github.com/Urigo/accounter-fullstack/commit/9d9ce57f4058c0d66b8c1ea383030a57692fe607), [`ae5aa31`](https://github.com/Urigo/accounter-fullstack/commit/ae5aa311e4beb3d5b9ded7a0c0fadaf00b796e2e), [`5d1b2a3`](https://github.com/Urigo/accounter-fullstack/commit/5d1b2a373dd76f12186fff325d57d80bfd286fec), [`43b3575`](https://github.com/Urigo/accounter-fullstack/commit/43b3575f981c01e3caafc7170cb30358ed227c3b), [`5d9a79a`](https://github.com/Urigo/accounter-fullstack/commit/5d9a79aab5c5b75cf09c2dcc0df7f76513a05ba9), [`f7a8d24`](https://github.com/Urigo/accounter-fullstack/commit/f7a8d244660fb59627da16b90ef2263fa8aa7718), [`cca7787`](https://github.com/Urigo/accounter-fullstack/commit/cca778797ff2252e52bf9dcf0777e2d385ac68d3), [`7397aad`](https://github.com/Urigo/accounter-fullstack/commit/7397aad6a9bf7d120218e6a8274a539eb1e76160), [`fb74946`](https://github.com/Urigo/accounter-fullstack/commit/fb7494648b7e0a73d72e802c4dbff791e3583767), [`452d0ed`](https://github.com/Urigo/accounter-fullstack/commit/452d0ede302ac26f9aad5d76afc53e72d6d99977), [`64119ef`](https://github.com/Urigo/accounter-fullstack/commit/64119ef336f825399c7cf46bdc33e3f7ae1009dd), [`5d1b2a3`](https://github.com/Urigo/accounter-fullstack/commit/5d1b2a373dd76f12186fff325d57d80bfd286fec), [`4f0c31c`](https://github.com/Urigo/accounter-fullstack/commit/4f0c31c03761d0f915ddbdd5104bcaec0a042dfe)]: - @accounter/modern-poalim-scraper@0.10.6