Commit Graph

  • f9a9bfb472 W3 web settle up: W-7 settle up and W-8 settlement detail main jacobh2 2026-10-21 21:25:29 +02:00
  • 934eee793c W1 web Home and accounts: W-2 Home, W-3 account detail, W-4 account editor jacobh2 2026-10-21 21:25:52 +02:00
  • aaa09d9073 SPEC v0.30 and v0.31: manual update check (D-140), Android Insights (D-141 to D-143) jacobh2 2026-10-21 21:22:48 +02:00
  • d686ee0120 Update install failures become visible: blocked, aborted, failed (D-155) jacobh2 2026-10-21 21:20:12 +02:00
  • 1c9856bfba W6 Android Insights on S-11: server trends and forecast (E-34, E-35), online only (D-141 to D-143) jacobh2 2026-10-21 21:15:02 +02:00
  • 415f9f5efd CLAUDE.md: web client, three gates, generated web files, new server address jacobh2 2026-10-21 21:07:21 +02:00
  • 2ae65a5a9f W0 web foundation: Vite + React SPA under /app/, sync-pull ledger, auth, tokens, shared components jacobh2 2026-10-21 21:00:03 +02:00
  • 3fbd393082 SPEC v0.29: W7 web serving and analytics (D-135 to D-138), APK deploy (D-139) jacobh2 2026-10-21 21:00:45 +02:00
  • c0f4345ee1 Update check: S-22 "Check for update" always asks the server (D-140) jacobh2 2026-10-21 20:56:46 +02:00
  • 50a0d6792a Server: web client under /app/ (D-132), analytics E-34 trends and E-35 forecast (D-133) jacobh2 2026-10-21 20:52:46 +02:00
  • 7bddc50a53 SPEC v0.28: web client programme (D-129 to D-134), plans W0 to W7 jacobh2 2026-10-21 20:47:42 +02:00
  • 70cb25c5d0 infra: publish-apk.sh --deploy copies the APK to the Pi and checks /apk/latest (D-139) jacobh2 2026-10-21 20:47:47 +02:00
  • 44c8cbb771 SPEC v0.27: D-128 S-12 line chart of a category or account over the range jacobh2 2026-10-21 20:34:07 +02:00
  • 12e2508934 S-12: line chart of a category or account over the range, own period and granularity, average overlays (D-128) jacobh2 2026-10-21 20:27:34 +02:00
  • b0a90da630 SPEC v0.26: D-127 pull-to-refresh on Home and account detail jacobh2 2026-10-21 20:23:20 +02:00
  • 05ec3f3f16 Android: keyboard no longer covers editor fields (S-19, S-15, S-6) jacobh2 2026-10-21 20:24:14 +02:00
  • 3778f5fa81 Android: pull-to-refresh on Home and account detail (D-127) jacobh2 2026-10-21 20:19:19 +02:00
  • 7521c0188b infra/npm/kvitt.conf: the NPM block as a file to paste (D-126) jacobh2 2026-10-21 19:12:40 +02:00
  • 2acfc34a0e SPEC v0.25: D-126 app gate in NPM; infra README step 4a jacobh2 2026-10-21 18:59:45 +02:00
  • 34e5cad02a Android: send X-Kvitt-App app key on every server request (D-126) jacobh2 2026-10-21 18:50:57 +02:00
  • d9e189abd5 SPEC v0.24: D-125 self-contained Pi compose project; workflow results v1.0.2 jacobh2 2026-10-20 19:29:28 +02:00
  • 28fa71b978 Workflow and build-images.sh: compose deploy hint instead of /opt jacobh2 2026-10-20 19:21:03 +02:00
  • 6e5981d62a Pi: minimal self-contained compose project (D-125) jacobh2 2026-10-20 19:18:53 +02:00
  • 200c99f2f6 Pi bundle: drop the informational .env keys jacobh2 2026-10-20 19:07:20 +02:00
  • 3820f9c3c3 Gitea workflow: sparse checkout, diagnostic step removed v1.0.1 jacobh2 2026-10-19 20:37:27 +02:00
  • b1f4c10a3d SPEC v0.23: D-124 Kvitt on port 443 through NPM; pinned-root template jacobh2 2026-10-19 20:34:14 +02:00
  • ad3523116f Android: portless fixture URLs after D-124 jacobh2 2026-10-19 20:33:15 +02:00
  • 038c6036fe Android: old host name out of the pinned-root config and the S-1 fixture jacobh2 2026-10-19 20:27:29 +02:00
  • 4852803cdb Pi bundle: Kvitt on port 443 through NPM (D-124) v1.0.0 jacobh2 2026-10-19 20:22:11 +02:00
  • a86ad241f1 Server and contracts: public URL on port 443 (D-124) jacobh2 2026-10-19 20:22:09 +02:00
  • cce3e4e9d9 SPEC v0.22: D-122 S-22's release server and publish-apk host; D-123 no built-in server host; Kvitt host name jacobh2 2026-10-19 20:19:00 +02:00
  • ac17b41a3e install.sh: the NPM proxy host is README step 6 jacobh2 2026-10-19 20:11:43 +02:00
  • e381e371ea contracts-check: OpenAPI header expects the {host} server variable (D-123) jacobh2 2026-10-19 20:11:41 +02:00
  • c9abd24c77 Server: no built-in public host, no trusted proxy by default; OpenAPI server variable host (D-123) jacobh2 2026-10-19 20:11:33 +02:00
  • 4b1ae0c473 publish-apk.sh: build for KVITT_PUBLIC_HOST from infra/pi/.env (D-121) jacobh2 2026-10-19 20:09:28 +02:00
  • 4a4e45fcd9 Android: S-22's unpaired server from AppBuildInfo.releaseServerUrl (D-122) jacobh2 2026-10-19 20:09:10 +02:00
  • dd07ca4395 Gitea workflow: temporary secret diagnostic step jacobh2 2026-10-19 20:06:47 +02:00
  • 4bcff2cf89 SPEC v0.21: D-120 Nginx Proxy Manager instead of Caddy and cert-sync; D-121 Android host property jacobh2 2026-10-19 20:04:09 +02:00
  • d090c6c850 Android: public host as the build property kvitt.publicHost (D-121) jacobh2 2026-10-19 19:58:58 +02:00
  • 9231a1d755 infra README: owner decisions list after the M-1 answer (SPEC v0.20) jacobh2 2026-10-19 19:51:10 +02:00
  • 62f5279daa infra README: Nginx Proxy Manager proxy host, router to NPM, NPM fallback (D-120) jacobh2 2026-10-19 19:50:26 +02:00
  • d05f13a080 Pi stack behind Nginx Proxy Manager: remove Caddy and cert-sync (D-120) jacobh2 2026-10-19 19:49:56 +02:00
  • 4f69ae010e Gitea workflow: registry login with the secret in the run line (env form came through empty on act_runner 0.6.1) jacobh2 2026-10-19 19:35:19 +02:00
  • f1abb0d2ef Server gate: cargo audit jacobh2 2026-10-19 19:36:04 +02:00
  • 481889a9dc SPEC v0.20: D-119 APK download rate limit; owner answers to the security review; HANDOFF, prompts jacobh2 2026-10-19 19:35:24 +02:00
  • 96e4cbdf4e Server: APK download rate limit 10/min per IP (D-119) jacobh2 2026-10-19 11:15:26 +02:00
  • 3ef2c15764 SPEC v0.19: D-118 Android overhaul (shared test fixtures, :core:design limits and failures); HANDOFF, prompts, hash remap in plans jacobh2 2026-10-18 23:21:59 +02:00
  • c58236338c Android overhaul: one configureAndroidModule for the application and library plugins; coil-compose out of :app jacobh2 2026-10-18 23:12:40 +02:00
  • 74b5fbdb59 Android overhaul: S-7's state types in ExpenseEditorState.kt jacobh2 2026-10-18 23:10:38 +02:00
  • a92c236689 Android overhaul: stale comments and the module README jacobh2 2026-10-18 23:09:43 +02:00
  • 0714242954 Android overhaul: the §9.6 text and date limits in :core:design's Limits.kt jacobh2 2026-10-18 23:09:39 +02:00
  • e08aaf099b Android overhaul: remove dead code (tokens, an icon, catalogue and fake samples, helpers, unused imports) jacobh2 2026-10-18 23:04:32 +02:00
  • 515b60fc65 Android overhaul: shared failure texts, saved-split label and limits in :core:design jacobh2 2026-10-18 23:04:30 +02:00
  • 8229ed60ea Android overhaul: one screenshot harness in :core:design's test fixtures; kvitt.android.screenshots wires Roborazzi jacobh2 2026-10-18 22:54:03 +02:00
  • e4e6e5d792 Android overhaul: one CopyCategoryKeywords task in build-logic instead of a copy in :data and :core:fakes jacobh2 2026-10-18 22:53:44 +02:00
  • 48fe119ae1 SPEC v0.18: D-109 to D-117; validation reports; HANDOFF, prompts jacobh2 2026-10-18 22:48:15 +02:00
  • b985ce969d E-17: fcm_token at most 512 characters (security L-4) jacobh2 2026-10-18 22:43:45 +02:00
  • baa5806812 Pictures: at most 16 megapixels and 64 MB decoded per upload (security M-3) jacobh2 2026-10-18 22:42:35 +02:00
  • 725901c98f Rate limiter: a token is accepted only after a 2xx; unaccepted tokens count against the IP (security H-1) jacobh2 2026-10-18 22:40:02 +02:00
  • 21407456f1 Server overhaul: sync push delete step in its own function; clap env feature dropped jacobh2 2026-10-18 22:36:32 +02:00
  • c942d73c66 Server overhaul: clear clippy::pedantic wins jacobh2 2026-10-18 22:33:31 +02:00
  • 8cb42f85a9 Server overhaul: one test harness in tests/common for every test binary jacobh2 2026-10-18 22:31:04 +02:00
  • 6c405e142d Server overhaul: shared helpers, dead code, synchronous tasks::start, stale comments jacobh2 2026-10-18 22:28:51 +02:00
  • 4b30888dc2 Server overhaul: invite creation and CLI plumbing shared jacobh2 2026-10-18 22:28:51 +02:00
  • 8103dae2be Server overhaul: one place for stored-row reads and the shared inserts jacobh2 2026-10-18 22:28:51 +02:00
  • a0259ab68d M12f: remove the 19 string keys R8 found unused (20 CSV rows); §9.11 tie-break comment jacobh2 2026-10-18 22:33:00 +02:00
  • c366fbd9a3 M12f: :data tests for the 429 retry, D-040 whole-request refusals and WorkManager unique work jacobh2 2026-10-18 22:32:57 +02:00
  • 2bd6b584f8 M12f: :app invite links dropped while paired, push-token retry, private notifications, en/sv only (D-112, D-116) jacobh2 2026-10-18 22:32:55 +02:00
  • 5b2ed37f65 M12f: :feature:account screenshot harness captures the current variant (sv_dark goldens were light) jacobh2 2026-10-18 22:32:39 +02:00
  • dc7a296d70 M12f: S-16 lost version read-only, S-22 versions from /health, settle start without a partner (D-109 to D-111) jacobh2 2026-10-18 22:32:24 +02:00
  • 7fb86f5524 Infra security fixes: Caddy log redaction, headers and non-root container; dev mounts only the FCM key; deploy records image digests (D-117) jacobh2 2026-10-18 22:24:32 +02:00
  • 8660b7fa16 Server gap pass: invite-partner subcommand, CLI and drain tests, push info log (D-113, D-114) jacobh2 2026-10-18 22:12:21 +02:00
  • e70fe0d9fe Images: --provenance=false on buildx pushes; workflow passes the token via env, registry in one place, git version sort, temp builder config; build-images.sh shares the Gradle lock check jacobh2 2026-10-18 22:11:07 +02:00
  • b647faf715 infra/pi: install.sh keeps the deployed KVITT_TAG and checks python3; env_set cleans its temp file; backup.sh removes half-written archives on failure jacobh2 2026-10-18 22:11:07 +02:00
  • fc6126c6af infra/dev: env_value defaults match compose, die helper, shared Gradle lock check; drop unused RCLONE_REMOTE and M2a leftovers; fix stale Pi compose path jacobh2 2026-10-18 22:11:07 +02:00
  • 61f92c81c5 pre-commit hook: Android tests through gradle-serial.sh with JDK 25 on PATH, JAVA_HOME untouched; installer replaces an older Kvitt hook jacobh2 2026-10-18 22:11:07 +02:00
  • 2fac1ecba0 tools: one Gradle lock helper (gradle-lock.sh) for gradle-serial.sh and clean-builds.sh jacobh2 2026-10-18 22:11:07 +02:00
  • 18c527f018 Goldens and UX mock-ups: restored after the history rewrite that dropped superseded PNG versions (owner decision 2026-10-18, D-098) jacobh2 2026-10-18 22:01:07 +02:00
  • 400eac9d60 SPEC v0.17: D-103 to D-106 Pi bundle, D-107 S-19 option rows, D-108 instant navigation; HANDOFF, prompts jacobh2 2026-10-18 21:56:48 +02:00
  • 1328afe4f9 core:design: remove unused editor chips after D-102/D-107 jacobh2 2026-10-18 21:53:22 +02:00
  • 956908a9ba M8f: instant navigation, no transitions (D-108) jacobh2 2026-10-18 21:51:20 +02:00
  • b4d9467389 Server Dockerfile: CARGO_BUILD_JOBS build arg for the Pi runner jacobh2 2026-10-18 21:50:19 +02:00
  • a59abebc49 M8e: recurring editor options as fixed rows (D-107) jacobh2 2026-10-18 21:48:40 +02:00
  • 2476667510 M2c-pi: Pi bundle (infra/pi), cert-sync, Drive backup upload, Gitea workflow jacobh2 2026-10-18 21:46:44 +02:00
  • bfc3acbbe0 SPEC v0.16: D-098 goldens at 1x in three variants, D-099 no licences row, D-102 S-7 editor rows; R8 release build; HANDOFF, prompts jacobh2 2026-10-18 21:47:02 +02:00
  • bacbd1896c M8d: expense editor options as fixed rows (D-102) jacobh2 2026-10-18 21:41:34 +02:00
  • c30a49e841 Android: R8 shrinking, optimisation and resource shrinking for the release build jacobh2 2026-10-18 21:32:15 +02:00
  • a0c25b0db5 S-22 About: remove the open-source licences row (OQ-5 answered no; D-099) jacobh2 2026-10-18 21:25:36 +02:00
  • 75b549fb4f Goldens: three variants at 1x density (sv_light, sv_dark, en_light; D-098) jacobh2 2026-10-18 21:24:30 +02:00
  • bfde12cead SPEC v0.15: D-097 chart corners, D-100 Pi bundle, D-101 keystore; M8 phone test, M8b, owner answers jacobh2 2026-10-18 21:29:34 +02:00
  • 6eb3f85dae M12e follow-up: FcmMessageBody uses fid (D-096) jacobh2 2026-10-18 21:09:42 +02:00
  • 328c4666c4 M8b: UI fixes from the first phone test jacobh2 2026-10-18 21:08:08 +02:00
  • e2dba84154 SPEC v0.14: D-096 FCM fid target, Pi image arm64 check, Vico removal; HANDOFF, prompts jacobh2 2026-10-18 15:24:37 +02:00
  • 3e6c337d1c Pi image arm64 check: C toolchain and CA roots confirmed, live OAuth/FCM probe; spike report jacobh2 2026-10-18 15:21:26 +02:00
  • f56dcbe5f7 Server: FCM HTTP v1 target in fid instead of deprecated token (D-083 follow-up) jacobh2 2026-10-18 15:16:09 +02:00
  • a3127586ca Cleanup: remove unused Vico catalog entries (D-063) jacobh2 2026-10-18 15:15:30 +02:00
  • 51d6ff8840 SPEC v0.13: M12e outcomes (D-086 to D-095), server schema 3, HANDOFF, prompts jacobh2 2026-10-18 15:11:24 +02:00
  • b7b7483972 M12e: vector adaptive launcher icon (app mark: receipt_long on primary) jacobh2 2026-10-18 15:00:55 +02:00
  • 8c607153c0 M12e: contract pass (pair invite kind, admin name in invite links, sync failed flag, rejection actor, device version name, template id, update check result, untouched accounts, D-027 re-stamp, PushEvent in :core:model, snackbar hosts) jacobh2 2026-10-18 15:00:50 +02:00
  • 6159e18198 SPEC v0.12: M8 outcomes (D-081 to D-085), HANDOFF, prompts jacobh2 2026-10-18 14:39:23 +02:00