diff --git a/CHANGELOG.md b/CHANGELOG.md index a41488d..879d230 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- +## [2.0.5] — 2026-11-04 + +### Docs +- **Custom domain checklist** (`docs/DOMAIN.md`): a reminder of the steps to give the app its own domain (name, availability, DNS, GitHub Pages settings, HTTPS, verification) and what to test once it's live. Placeholder PR in the **v2.0 — Public launch** milestone; it also serves to try the CI/CD workflows on a PR. + +--- + ## [1.10.5] — 2026-11-02 ### Fixed diff --git a/CLAUDE.md b/CLAUDE.md index d895c1b..092ffe4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -59,7 +59,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:** v2.0.5 (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 +798,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: v2.0.5 — 2026-11-04 (no section changes: custom domain checklist; 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)* --- diff --git a/README.md b/README.md index 1cd3fc5..fd5b465 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:** v2.0.5  ·  **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 v2.0.5 — Built for one person's finances, designed to be useful for anyone's.* diff --git a/docs/DOMAIN.md b/docs/DOMAIN.md new file mode 100644 index 0000000..9571a66 --- /dev/null +++ b/docs/DOMAIN.md @@ -0,0 +1,22 @@ +# Custom domain — checklist + +Placeholder for the v2.0 launch (milestone *v2.0 — Public launch*). Nothing here is done yet. + +## Why +GitHub Pages serves every project of an account from one origin (`https://gitluis.github.io`), and browsers keep IndexedDB and localStorage per origin. A custom domain gives the app its own origin, so no other site can read its data. + +## Steps +1. **Pick the name** — then apply it with the rename script (#58). +2. **Check it's free:** domain (Cloudflare or Porkbun search), GitHub repo name, USPTO trademark search. +3. **Buy the domain** (.app, .dev or .com; compare renewal prices, not first-year deals). +4. **DNS:** `CNAME` for the subdomain → `gitluis.github.io` (or GitHub's `A` records for a root domain). On Cloudflare, set the record to **DNS only** (grey cloud). +5. **GitHub → this repo → Settings → Pages → Custom domain.** Not on a `gitluis.github.io` user-site repo. +6. **Enforce HTTPS** (same page), once the certificate is issued. +7. **Verify the domain** in account Settings → Pages. + +## Test after it's live +- [ ] Site loads over HTTPS on the new domain +- [ ] `gitluis.github.io//` redirects to it +- [ ] Choose folder: Edge/Chrome asks for access; Save Now writes `app-state.json` +- [ ] Reload keeps the data (new origin, so it starts empty the first time) +- [ ] No console errors: CDN scripts and fonts load under the CSP (#22) diff --git a/index.html b/index.html index ee48405..25361bd 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..2c9b67f 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 v2.0.5 ·${State.transactions.length} transactions loaded${State.lastRefresh?' · Refreshed '+dayjs(State.lastRefresh).format('MMM D, YYYY h:mm A'):''}
`; root.appendChild(displayCard); /* ---- Anthropic API Key ---- */