Commit graph

149 commits

Author SHA1 Message Date
d5790a08e9 Remove internal title from CategoryPieChart for dashboard consistency (#17)
Move the pie chart title to DashboardPage as an external h2,
matching the pattern used by BudgetVsActual and ExpensesOverTime sections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:04:35 -04:00
le king fu
c8b92517e8 Update docs: dashboard revamp, version 0.6.3
- CLAUDE.md: bump version to 0.6.3
- architecture.md: update version, component counts, dashboard description
- guide-utilisateur.md: rewrite dashboard section (budget table, chart, no recent transactions)
- i18n docs: update dashboard help text in both FR and EN

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:53:37 -05:00
le king fu
32bcd27a5a Bump version to 0.6.3 — Dashboard revamp, formatting and category fixes
All checks were successful
Release / build-and-release (push) Successful in 26m11s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:18:31 -05:00
le king fu
0bbbcc541b Revamp dashboard: YTD default, expenses chart, budget table
- Default period changed from month to year-to-date
- Remove recent transactions section
- Add expenses over time stacked bar chart (by category/month)
- Add budget vs actual table (current month)
- Reorganize layout: cards, pie + budget table, full-width chart

Closes #15

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:15:04 -05:00
le king fu
861d78eca2 Improve visual hierarchy of subtotals and totals in all tables
Section subtotals: text-sm font-semibold with more padding.
Grand totals: text-sm font-bold with border-t-2 and extra padding.
Applied consistently across BudgetTable, BudgetVsActualTable,
MonthlyTrendsTable, CategoryOverTimeTable, CategoryTable,
and DynamicReportTable.

Closes #14

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:10:27 -05:00
le king fu
e1192beca3 Fix missing categories and gray text in category reports
Increase category over time limit from 8 to 50 so all categories appear.
Fix category name visibility: use foreground color for bar chart Y-axis
labels and chart legend text instead of muted/inherited colors.

Closes #13

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:06:40 -05:00
le king fu
420506b074 Bump version to 0.6.2 — Section subtotals and category detail fix
All checks were successful
Release / build-and-release (push) Successful in 30m13s
Add per-section subtotals (expenses, income, transfers) to budget table
and budget vs actual report. Fix category detail panel visibility when
scrolling through long category lists.

Closes #11, closes #12

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 16:22:36 -05:00
le king fu
6ca62db4a9 Update docs: add changelog page to architecture and CLAUDE.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 17:13:11 -05:00
le king fu
ec38cd5669 Bump version to 0.6.1 — Bilingual changelog and UX fixes
All checks were successful
Release / build-and-release (push) Successful in 27m22s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 15:00:37 -05:00
le king fu
d23fcd6bdb Add bilingual changelog page and file-based release notes
- Create CHANGELOG.fr.md with full French translation of all versions
- Add ChangelogPage (/changelog) accessible from Settings
- Replace hardcoded i18n release notes with file-based approach:
  loads CHANGELOG.md or CHANGELOG.fr.md based on user language
- CI copies changelogs to public/ during release build
- Update CLAUDE.md with bilingual changelog deployment process (fixes #10)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:58:54 -05:00
le king fu
820360df5b Fix chart label visibility and improve budget cell edit UX
- Change chart amount labels from white to black with white stroke outline
  for better contrast on all bar colors (fixes #8)
- Improve budget table editable cells: add hover background, pointer cursor,
  tooltip hint, and larger click target for clearer affordance (fixes #9)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:42:44 -05:00
le king fu
0a5b7bce10 Bump version to 0.6.0 — Reports enhancements and comment visibility fix
All checks were successful
Release / build-and-release (push) Successful in 26m12s
- Add table/chart toggle for Trends, By Category, and Over Time reports
- Add "Show amounts" toggle to display values on chart elements
- Add filter panel with category checkboxes and source dropdown
- Add source filter at SQL level for all chart report queries
- Add sticky headers on Dynamic Report and Budget vs Actual tables
- Add interactive hover: dimmed non-hovered bars, filtered tooltip, legend hover
- Fix comment icon color to match split indicator (orange) (#7)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:01:13 -05:00
le king fu
6cb9c75a55 Add missing .gitignore patterns (*.pem, *.key, .env.*)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:48:02 -05:00
le king fu
be662ee52e Fix HIGH vulnerabilities (rollup, minimatch)
npm audit fix to resolve path traversal (rollup) and ReDoS (minimatch).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:25:22 -05:00
le king fu
079ddfb0e7 Bump version to 0.5.2
All checks were successful
Release / build-and-release (push) Successful in 26m18s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:28:20 -05:00
le king fu
fc906d6d55 Fix CI: use PACKAGE_TOKEN for package registry operations
The automatic GITHUB_TOKEN does not have package permissions in Forgejo.
Use a dedicated PACKAGE_TOKEN secret with the package scope instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:23:13 -05:00
le king fu
55fbb1ae92 Bump version to 0.5.1
Some checks failed
Release / build-and-release (push) Failing after 26m40s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:39:28 -05:00
le king fu
08c54b1f75 Fix migration repair: update checksums instead of deleting records
Some checks are pending
Release / build-and-release (push) Waiting to run
The previous approach deleted migration records to force re-application,
but this is dangerous for migration 2 which DELETEs all categories and
keywords before re-inserting them, wiping user customizations.

Now computes the expected SHA-384 checksum (matching sqlx) and updates
the stored checksum in _sqlx_migrations, so the migration is recognized
as already applied without being re-run.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:27:02 -05:00
le king fu
efb922eb0e Fix CI: use correct API v1 endpoint for package registry deletion
The DELETE endpoint for Forgejo generic packages is /api/v1/packages/
while the upload (PUT) endpoint is /api/packages/. Using the wrong
endpoint caused silent failures, leaving stale latest.json in the
registry. Also fail the CI step explicitly on upload failure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:01:50 -05:00
le king fu
4030cc90b2 Fix package registry: use correct DELETE endpoint for generic packages
All checks were successful
Release / build-and-release (push) Successful in 26m43s
Forgejo generic package API uses /api/packages/ not /api/v1/packages/
for both upload and deletion.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 14:29:28 -05:00
le king fu
c777dbb7b8 Fix CI: delete existing release before creating a new one
All checks were successful
Release / build-and-release (push) Successful in 26m38s
Prevents "Release has no Tag" error when re-running a build for
a tag that already has a release.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 12:38:08 -05:00
le king fu
e3992298f0 Fix package registry publish: use correct API v1 endpoint for deletion
Some checks failed
Release / build-and-release (push) Failing after 26m30s
The DELETE was using the upload URL instead of the API v1 package
endpoint, so old versions were never actually deleted, causing 409
on re-upload and leaving stale latest.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:55:00 -05:00
le king fu
457dbce6c2 Fix CI: pass changelog notes via env var instead of inline interpolation
All checks were successful
Release / build-and-release (push) Successful in 26m43s
The ${{ steps.changelog.outputs.notes }} expression was being interpolated
directly into shell commands, causing parse errors when the changelog
contained special characters, markdown, or backticks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:06:10 -05:00
le king fu
1b49871ea0 Release v0.5.0 — open source under GPL-3.0
Some checks failed
Release / build-and-release (push) Failing after 26m7s
Bump version to 0.5.0 and update CHANGELOG with all unreleased changes
including error handling, log viewer, report improvements, and GPL-3.0
license addition.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:17:44 -05:00
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