All notable changes to FamilyAccountant are documented here.
0.1.0 — 2026-04-24
Note: The changes below were originally merged together in a single pull request (PR #4, titled "fix(security): bump electron 31 → 41"). They are documented separately here to clearly distinguish the monorepo scaffold from the security fix.
Sets up the full project skeleton so all packages can be developed, linted, built, and tested in one repository.
-
Monorepo tooling
pnpmworkspaces (pnpm-workspace.yaml) with four packages:backend,desktop,mobile,shared- Turborepo (
turbo.json) pipeline:build → test → lintwith correct dependency ordering - Shared
tsconfig.base.jsonwith strict TypeScript settings - Root
package.jsonwith unifiedbuild / dev / lint / test / formatscripts - ESLint (
eslint.rc.js) and Prettier (.prettierrc) configs applied across all packages
-
packages/shared— shared TypeScript types, DTOs, and sync utilities consumed by bothbackendanddesktop/mobile -
packages/backend— NestJS REST API- TypeORM entities:
Account,Transaction,Debt,Payment,User,Household - Decimal-to-number transformer on every TypeORM
decimalcolumn (account.balance,transaction.amount,debt.amount,payment.amount) to avoid string-typed values at runtime - Auth module (JWT access + refresh tokens);
ApiBearerAuthdecorator added toauth.controller.tsfor Swagger - CRUD modules for accounts, transactions, debts, payments, and sync
- Sync endpoint: reconciles by
localId;updateSyncStatusstores calls and IPC handler both useWHERE localId = ? - Auth service returns real
userId;/users/meendpoint hydratesuserIdandhouseholdId;accountIdis optional (shared type + backend DTO + nullable entity column) - Swagger UI at
/api/docs - Unit tests for
sync.service(bothservice.sync()calls receive'user-1'as the second argument)
- TypeORM entities:
-
packages/desktop— Vite + React + Electron (Windows 11)tsconfig.jsonoverridesmodule: ESNextfor Vite /import.metacompatibility- Auth store and desktop store both fetch
/users/meto hydrate realuserId/householdId(no hardcoded placeholder UUIDs) - UI reads real
householdIdfrom store
-
packages/mobile— Expo React Native (Android)- Auth store fetches
/users/meon login to hydrate realuserId/householdId
- Auth store fetches
-
CI (
.github/workflows/ci.yml)- Jobs:
lint,build,test-backend test-backenduses the PostgreSQL instance pre-installed on GitHub-hosted Ubuntu runners (no Docker or virtualization required)
- Jobs:
-
Environment & documentation
.env.examplefor the backendREADME.mdwith architecture table, local PostgreSQL setup instructions (Windows / macOS / Linux), and monorepo script referenceSECURITY.md
-
Removed
- Docker / docker-compose — replaced by local native PostgreSQL install
Addresses use-after-free and CLI injection vulnerabilities present in Electron v31 that are patched in the v41 series:
| CVE | Severity | Description |
|---|---|---|
| CVE-2026-34770 | High | Use-after-free in PowerMonitor (Windows/macOS) |
| CVE-2026-34771 | High | Use-after-free in WebContents async permission callbacks |
| CVE-2026-34774 | High | Use-after-free in offscreen child-window paint frames |
| CVE-2026-34769 | High | Renderer command-line switch injection via undocumented webPreference |
packages/desktop/package.json:"electron": "^31.0.2"→"electron": "^41.0.0"