diff --git a/CHANGELOG.md b/CHANGELOG.md index a41488d..1e7bf92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- +## [1.10.7] — 2026-11-04 + +### Technical (docs) +- **Every PR has step-by-step manual testing, drafts included.** CLAUDE.md §0 "What every PR includes" now requires a `## Manual testing (step by step)` section: numbered steps, each with what you should see, starting from a known state, main change first, then persistence and regressions, ending with the version check. Optional steps and steps that need a real folder or real Edge/Chrome are marked. It applies to drafts and to docs-only and CI PRs too. Bugs found while following the steps get their own PRs. +- **Bug-fix PRs reproduce the bug first.** A `## How to reproduce the bug` section comes before the testing steps: numbered, from a known state on `master` or the base branch, ending with what goes wrong. The testing steps then follow the same path and show it fixed. +- Version: v1.10.6 is already used by open PRs #22 and #52, so this takes v1.10.7. Whichever merges later renumbers if needed (§0). + +--- + ## [1.10.5] — 2026-11-02 ### Fixed diff --git a/CLAUDE.md b/CLAUDE.md index d895c1b..95afc14 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -21,6 +21,12 @@ Nothing reaches `master` except through a reviewed pull request. This is the own - **CHANGELOG and version** bumped per §17. - **A description** with a summary, the cause (for bugs), what changed, how it was tested, and a "please check before merging" list. - **Tests run** before opening the PR (headless browser checks against `samples/`). Report results honestly, including anything not verified. +- **Manual testing steps** in a `## Manual testing (step by step)` section, so Luis can check the change by hand before merging. This applies to every PR, **drafts included**, and to docs-only or CI changes too (there the steps say which files or checks to look at). + - Numbered steps, each one action plus what he should see: exact screen, button, value or file. Start from a known state (e.g. **Start over** → **Try it with sample data**, or which branch to check out). + - Cover the main fix or feature first, then persistence (reload, or a boot from the state file), then the regressions worth checking. End with the version shown in the footer and Settings → General. + - Mark optional steps, and steps that need a real folder or real Edge/Chrome, which headless tests can't cover. + - Bugs found while following them go in new PRs, not into the one being reviewed (§0, one PR per change). +- **Reproduction steps for bug fixes**, in a `## How to reproduce the bug` section placed **before** the manual testing steps. Numbered, from a known state, on `master` (or the PR's base), ending with what goes wrong: the wrong value, error or missing data he should see. The testing steps then repeat the same path on the PR's branch and show it fixed. ### Stacked PRs @@ -59,7 +65,7 @@ Until then, this section is the rule. FinLens is a **single-origin, zero-build, vanilla JavaScript personal finance dashboard** that runs entirely in the browser. There is no server, no npm, no bundler, no framework, and no TypeScript. The entry point is `index.html`; everything else is a plain `.js` file in the `js/` folder. -**Current version:** v1.10.5 (updated in `index.html` footer, `README.md`, and `CHANGELOG.md` on every release). +**Current version:** v1.10.7 (updated in `index.html` footer, `README.md`, and `CHANGELOG.md` on every release). **What it does:** Imports CSV exports from Ally Bank (Checking + Savings) and Chase credit cards, parses and normalizes them into a unified transaction model, and renders a multi-tab financial dashboard with budgeting, debt tracking, savings forecasting, investment planning, and Claude-powered AI analysis. @@ -798,7 +804,7 @@ Multiple Chase card files can be loaded simultaneously. Each gets a unique `acco --- -*Last updated: v1.10.5 — 2026-11-02 (no section changes: Import Logs race fix; v1.10.4: §8, §13 single `~` is literal; §21 excerpts escape `~`; v1.10.3: §13 refusals; §21 declined runs; v1.10.2: §13 summary states its dates; §21 per-month derivations; v1.10.1: §13 `AI_MAX_TOKENS`, thinking and cut-off answers; v1.10.0: §21 AI Eval added; §13 `callClaude()` raw mode; v1.9.6: §14 folder access lasts until the last tab closes, not one page load; v1.9.5: §7 chart guard; v1.9.4: views-db.js changelog reads CRLF checkouts; v1.9.3: §14 folder permission: re-request on click, Reconnect banner, browser copy wins; v1.9.2: §0 branch, PR and approval workflow added; v1.9.1: §4.5 rehydrate transactions loaded from JSON; v1.9.0: §20 Data & Reset added; v1.8.1: §10 re-upload dedup rewritten for the occurrence-suffix fix; v1.8.0: AI Analysis restored with API-key and output hardening; `renderMarkdown()` added; `samples/` added; §1–3, §13, §14, §17 corrected to match the code)* +*Last updated: v1.10.7 — 2026-11-04 (§0 every PR, drafts included, has step-by-step manual testing; bug fixes add reproduction steps before them; v1.10.5: no section changes: Import Logs race fix; v1.10.4: §8, §13 single `~` is literal; §21 excerpts escape `~`; v1.10.3: §13 refusals; §21 declined runs; v1.10.2: §13 summary states its dates; §21 per-month derivations; v1.10.1: §13 `AI_MAX_TOKENS`, thinking and cut-off answers; v1.10.0: §21 AI Eval added; §13 `callClaude()` raw mode; v1.9.6: §14 folder access lasts until the last tab closes, not one page load; v1.9.5: §7 chart guard; v1.9.4: views-db.js changelog reads CRLF checkouts; v1.9.3: §14 folder permission: re-request on click, Reconnect banner, browser copy wins; v1.9.2: §0 branch, PR and approval workflow added; v1.9.1: §4.5 rehydrate transactions loaded from JSON; v1.9.0: §20 Data & Reset added; v1.8.1: §10 re-upload dedup rewritten for the occurrence-suffix fix; v1.8.0: AI Analysis restored with API-key and output hardening; `renderMarkdown()` added; `samples/` added; §1–3, §13, §14, §17 corrected to match the code)* --- diff --git a/README.md b/README.md index 1cd3fc5..31338fa 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > A zero-install, browser-native finance dashboard. Drop in your bank CSVs, get instant clarity on your money. -**Version:** v1.10.5  ·  **Stack:** Vanilla JS, HTML, CSS  ·  **Install:** None +**Version:** v1.10.7  ·  **Stack:** Vanilla JS, HTML, CSS  ·  **Install:** None --- @@ -260,4 +260,4 @@ See [CHANGELOG.md](CHANGELOG.md) for the full release history. --- -*FinLens v1.10.5 — Built for one person's finances, designed to be useful for anyone's.* +*FinLens v1.10.7 — Built for one person's finances, designed to be useful for anyone's.* diff --git a/index.html b/index.html index ee48405..a343cd8 100644 --- a/index.html +++ b/index.html @@ -326,7 +326,7 @@
⚙️ Settings
diff --git a/js/views-settings.js b/js/views-settings.js index 6f7d389..cec2898 100644 --- a/js/views-settings.js +++ b/js/views-settings.js @@ -49,7 +49,7 @@ function _renderGeneralSettings(root) { -
FinLens v1.10.5 ·${State.transactions.length} transactions loaded${State.lastRefresh?' · Refreshed '+dayjs(State.lastRefresh).format('MMM D, YYYY h:mm A'):''}
`; +
FinLens v1.10.7 ·${State.transactions.length} transactions loaded${State.lastRefresh?' · Refreshed '+dayjs(State.lastRefresh).format('MMM D, YYYY h:mm A'):''}
`; root.appendChild(displayCard); /* ---- Anthropic API Key ---- */