Commit graph

125 commits

Author SHA1 Message Date
le king fu
f5bf4e720b Add GPL-3.0 license
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:10:43 -05:00
le king fu
2a61ffcdb4 Update documentation for v0.4.7 changes
Sync CHANGELOG, architecture docs, user guide, and i18n docs keys
with recent features: log viewer, sticky budget headers, sortable
report detail columns, amount toggle, migration repair, and startup
retry logic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:43:28 -05:00
le king fu
3e0f826256 Add sort and amount toggle to report details, sticky budget headers
- #1: Sortable columns (date, description, amount) in the transaction
  detail modal with click-to-toggle direction
- #2: Budget table headers stay fixed when scrolling vertically
- #3: Eye/EyeOff toggle to show/hide the amounts column in the
  transaction detail modal

Closes #1, closes #2, closes #3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:31:47 -05:00
le king fu
15d626cbbb Fix migration checksum mismatch on startup
Add repair_migrations Tauri command that deletes stale migration 1
checksum from _sqlx_migrations before Database.load(). Migration 1
is idempotent (CREATE IF NOT EXISTS) so re-applying is safe.
Fixes "migration 1 was previously applied but has been modified".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:17:35 -05:00
le king fu
4328c2f929 Bump version to 0.4.7
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 08:24:40 -05:00
le king fu
fb92cfc12c Add startup retry logic and persist logs across refresh
All checks were successful
Release / build-and-release (push) Successful in 25m5s
Retry connectActiveProfile up to 3 times with 1s delay before showing
the error page. Persist log buffer to sessionStorage so logs survive
page refresh and are visible in the settings log viewer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 22:12:41 -05:00
le king fu
6f84964689 Bump version to 0.4.6
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:27:47 -05:00
le king fu
d604d5ae63 Fix updater latest.json and add log viewer in settings
Some checks failed
Release / build-and-release (push) Has been cancelled
Fix updater: strip v-prefix from version in latest.json, and delete
old package before re-uploading to avoid 409 conflicts.
Add frontend log capture (console intercept) with a log viewer card
in the settings page (filterable, copyable, clearable).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:09:10 -05:00
le king fu
7d7be4f591 Update version to 0.4.5 in CLAUDE.md
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 19:12:56 -05:00
le king fu
3896a1ac1a Bump version to 0.4.5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 19:11:36 -05:00
le king fu
849945f339 Add error boundary, error page, and startup timeout
Prevent infinite spinner when DB connection fails at startup by adding
a 10s timeout on connectActiveProfile(). Add ErrorBoundary to catch
React crashes and ErrorPage with refresh, update check, and contact links.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 19:01:39 -05:00
le king fu
f126d08da3 Fix CI: skip AppImage (needs FUSE), build deb+rpm only
Some checks failed
Release / build-and-release (push) Has been cancelled
linuxdeploy cannot run inside Docker containers even with
APPIMAGE_EXTRACT_AND_RUN. Use --bundles deb,rpm instead.
Update latest.json to use .deb for linux-x86_64 platform.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 16:42:51 -05:00
le king fu
b34527730d Fix AppImage build in Docker: set APPIMAGE_EXTRACT_AND_RUN=1
Some checks failed
Release / build-and-release (push) Failing after 17m29s
linuxdeploy needs FUSE which is unavailable in containers.
This env var makes it extract instead of mounting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 16:13:14 -05:00
le king fu
90f095a8cf Fix CI container: set global PATH for cargo/node across steps
Some checks failed
Release / build-and-release (push) Failing after 18m25s
Docker container steps don't share shell state. Set PATH at job level
to include /root/.cargo/bin and remove per-step source cargo/env.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 15:52:11 -05:00
le king fu
9ab8d3d7df Fix glibc compat: build in Ubuntu 22.04 container (glibc 2.35)
Some checks failed
Release / build-and-release (push) Failing after 27s
The Forgejo runner's default image uses glibc 2.39, which produces
binaries incompatible with Pop!_OS / Ubuntu 22.04 (glibc 2.35).
Build inside container: ubuntu:22.04 with Node.js and Rust installed.
Bump to v0.4.4.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 21:46:31 -05:00
le king fu
3302d79c38 Fix updater: use Forgejo package registry for stable latest.json URL
Some checks failed
Release / build-and-release (push) Has been cancelled
- Forgejo has no /releases/latest/download/ route (GitHub-specific)
- Upload latest.json to generic package registry for a stable endpoint
- Fix Linux signature collection: use .AppImage.sig (not .tar.gz.sig)
- Collect all platform signatures (.deb.sig, .rpm.sig, .AppImage.sig)
- Bump to v0.4.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 21:10:50 -05:00
le king fu
e3ecfce34c Fix Windows cross-compile: remove --bundles flag unsupported on Linux host
All checks were successful
Release / build-and-release (push) Successful in 20m28s
Tauri CLI filters --bundles values by host OS. The nsis target is already
configured in tauri.conf.json and auto-selected for Windows targets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 20:40:41 -05:00
le king fu
b97a80d8b9 Release v0.4.2: Windows cross-compile via cargo-xwin + updater trampoline
Some checks failed
Release / build-and-release (push) Failing after 15m4s
- Add Windows cross-compile (cargo-xwin) to Forgejo CI workflow
- Add libsqlite3-sys bundled for cross-compile compatibility
- Switch updater endpoint from GitHub to self-hosted Forgejo
- Collect Windows NSIS assets and include windows-x86_64 in latest.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 20:23:25 -05:00
le king fu
21c4c73a62 Bump version to v0.4.1
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 21:57:13 -05:00
le king fu
d2a0ee65b3 Fix app stuck on spinner after v0.4.0 update (GH #9)
Restore seed_categories.sql to its original content so the migration 2
checksum matches existing databases. Move the level-3 insurance
subcategories (310-312) into a new migration 7 using INSERT OR IGNORE.
Add .catch() on connectActiveProfile() to surface DB errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 21:54:42 -05:00
le king fu
530c556e95 Fix Forgejo CI: URL-encode filenames with spaces for upload
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 21:26:40 -05:00
le king fu
66b25dd707 Fix Forgejo CI: add verbose upload logging and timeout
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 21:11:54 -05:00
le king fu
7b9ab383bc Regenerate signing keys with password
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 20:57:07 -05:00
le king fu
8fdc693f1a Fix Forgejo CI: set empty signing password explicitly
Some checks failed
Release / build-and-release (push) Has been cancelled
Tauri requires TAURI_SIGNING_PRIVATE_KEY_PASSWORD to be defined,
even when the key has no password.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 20:36:19 -05:00
le king fu
a07f1e4ab5 Fix Forgejo CI: remove signing password env var
Some checks failed
Release / build-and-release (push) Has been cancelled
Key was generated without a password.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:23:28 -05:00
le king fu
3acd1e0173 Fix Forgejo CI: add xdg-utils for AppImage bundling
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:01:20 -05:00
le king fu
7717b70e77 Fix Forgejo CI: add build-essential and libssl-dev
Some checks failed
Release / build-and-release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:46:19 -05:00
le king fu
3361e52541 Fix Forgejo CI: use direct shell commands instead of GitHub Actions
Some checks failed
Release / build-and-release (push) Has been cancelled
Replace dtolnay/rust-toolchain, actions/setup-node, and swatinem/rust-cache
with shell commands since they are not mirrored on code.forgejo.org.
Use https://github.com/ prefix for checkout action.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:41:48 -05:00
le king fu
6771efd0b0 Simplify Forgejo CI to Linux-only build
Some checks failed
Release / build-and-release (push) Has been cancelled
Remove Windows job (no Windows runner available) and merge
build + release into a single job.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:38:29 -05:00
le king fu
640caf2617 Add Forgejo CI/CD workflow and sync versions
Some checks failed
Release / build-linux (push) Failing after 6s
Release / build-windows (push) Has been cancelled
Release / release (push) Has been cancelled
- Add .forgejo/workflows/release.yml for Forgejo Actions
- Update signing pubkey for new key pair
- Sync Cargo.toml version to 0.4.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 07:14:05 -05:00
le king fu
d735fb4bd6 chore: bump version to 0.4.0
Some checks failed
Release / build-windows (push) Has been cancelled
Release / build-linux (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 20:05:47 -05:00
le king fu
e233c1c18d docs: add changelog entry for keyword matching fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 20:03:57 -05:00
le king fu
4938bba3f3 fix: keyword matching with non-word boundary characters
Keywords starting/ending with non-word characters (brackets, parens,
dashes) never matched because \b requires a word↔non-word transition.
Now uses smart boundaries: \b for word-char edges, (?<=\s|^)/(?=\s|$)
for non-word edges. Also pre-compiles regex patterns once per batch
instead of recreating them for every description × keyword combination.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 20:03:04 -05:00
le king fu
8388b08a84 docs: add changelog entry for 3-level category hierarchy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 19:54:36 -05:00
le king fu
a04813ced2 feat: add 3rd level of category hierarchy
Support up to 3 levels of categories (e.g., Dépenses récurrentes →
Assurances → Assurance-auto) while keeping SQL JOINs bounded and
existing 2-level branches fully compatible.

Changes across 14 files:
- Types: add "level3" pivot field, depth property on budget row types
- Reports: grandparent JOIN for 3-level resolution in dynamic reports
- Categories: depth validation (max 3), auto is_inputable management,
  recursive tree operations, 3-level drag-drop with subtree validation
- Budget: 3-level grouping with intermediate subtotals, leaf-only
  aggregation, depth-based indentation (pl-8/pl-14)
- Seed data: Assurances split into Assurance-auto/habitation/vie
- i18n: level3 translations for FR and EN

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 19:54:05 -05:00
le king fu
0fbcbc0eca feat: display translated release notes in updater based on app language
Some checks failed
Release / build-windows (push) Has been cancelled
Release / build-linux (push) Has been cancelled
Use i18n translations for release notes when available, falling back to
the GitHub release body. Adds FR/EN notes for versions 0.3.8–0.3.11.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 14:14:28 -05:00
le king fu
db337b3285 chore: bump version to 0.3.11
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:42:13 -05:00
le king fu
2ae7fb301c fix: decouple dynamic report from global page date filters
The dynamic report now relies exclusively on its own panel filters
instead of inheriting the global period selector date range.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:09:14 -05:00
le king fu
04ec221808 feat: support multiple column dimensions in dynamic reports
Combine column dimensions into composite keys instead of using only the
first column dimension, enabling richer pivot tables and charts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:00:42 -05:00
le king fu
945985c969 chore: bump version to 0.3.10
Some checks failed
Release / build-windows (push) Has been cancelled
Release / build-linux (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 09:21:32 -05:00
le king fu
b46cad5888 feat: add "This year" period option to reports and dashboard
Adds a "year" period (Jan 1 to today) between "6 months" and "12 months"
in the period selector across all reports and dashboard views.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 09:18:27 -05:00
le king fu
d06153f472 feat: allow reusable pivot fields across zones and right-click filter exclusion
Fields can now be assigned to multiple zones simultaneously (e.g. rows + filters).
Right-clicking a filter value excludes it (NOT IN), shown with strikethrough in red.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 09:10:15 -05:00
le king fu
bcf7f0a2d0 feat: add fullscreen toggle to dynamic report
Overlay covers the full viewport while keeping the config panel
accessible. Press Escape or click the button to exit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 09:00:42 -05:00
le king fu
438b72cba2 fix: pivot rows before rendering to prevent duplicate categories in dynamic report table
The table was rendering one <tr> per SQL result row instead of pivoting
the column-dimension values into a single row per unique row-key combo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 08:52:22 -05:00
le king fu
df742af8ef chore: bump version to 0.3.9
Some checks failed
Release / build-windows (push) Has been cancelled
Release / build-linux (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 08:29:04 -05:00
le king fu
20b3a54ec7 feat: add Dynamic Report (pivot table) tab to Reports page
Implement a pivot table feature allowing users to compose custom reports
by assigning dimensions (Year, Month, Type, Level 1/2) to rows, columns,
and filters, with periodic and YTD measures as values. Includes a side
panel for configuration, a dynamic table with subtotals, and a stacked
bar chart visualization.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 08:26:50 -05:00
le king fu
2436f78023 feat: allow deleting keywords from the All Keywords view
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 07:29:29 -05:00
le king fu
3f4e1516a3 chore: bump version to 0.3.8
Some checks failed
Release / build-windows (push) Has been cancelled
Release / build-linux (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 13:31:35 -05:00
le king fu
da47f9976f docs: add v0.3.8 entries to CHANGELOG
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 13:26:49 -05:00
le king fu
a293bdcd4b feat: display release notes from CHANGELOG in GitHub releases and in-app updater
Extract changelog sections in CI to populate GitHub release bodies dynamically.
Expose the update body from tauri-plugin-updater and render it in the settings
page when an update is available. Add CHANGELOG discipline rule to CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 10:12:04 -05:00