feat: keep what was loaded between runs, and start where you left off #2

Merged
keb merged 3 commits from feat/disk-cache into main 2026-10-11 09:53:33 +02:00
Owner

Starting lazysecrets again now shows what you had loaded at once, and puts you back where you were.

  • Cache file ~/.cache/lazysecrets/cache.json (0600, written atomically): the Sources lists, vaults/scopes, secrets' metadata, Describe results and each list's cursor. Never values, and never repos (they're on disk anyway). Loaded on start; lists older than 2 minutes reload in the background as before. Saved every 30s when changed, and on quit.
  • Housekeeping: entries not loaded for 30 days are dropped, as is everything from accounts no longer signed in (every cache key starts with the account ID). The file has a format version; another version is ignored and replaced. cache: false turns it off; --demo never uses it.
  • Sources are cached too: Azure lists subscriptions over the network, so without this the Sources pane would still wait.
  • Go to searches everything cached straight away, and its background loading now also refreshes lists from an earlier run instead of skipping them.
  • Where you left off: the state file remembers the selected source, vault or secret per folder (the --dir or working directory, 100 most recent folders), and the next start in that folder goes back there quietly (no error if it's gone). Starting on a link skips it.

Docs: cache: in config.md, a Cache section, the place in State, and the README Privacy section now mentions the cache file.

Tests: cache round trip with a backend too slow to answer (lists and cursor come from the file), no value in the file, file mode 0600, old and signed-out entries dropped, back where it was left, not for another folder or a link.

This touches app.go near PR #1's changes (Model fields, the Update switch), so whichever merges second needs a small conflict fix.

🤖 Generated with Claude Code

Starting lazysecrets again now shows what you had loaded at once, and puts you back where you were. - **Cache file** `~/.cache/lazysecrets/cache.json` (0600, written atomically): the Sources lists, vaults/scopes, secrets' metadata, Describe results and each list's cursor. **Never values**, and never repos (they're on disk anyway). Loaded on start; lists older than 2 minutes reload in the background as before. Saved every 30s when changed, and on quit. - **Housekeeping:** entries not loaded for 30 days are dropped, as is everything from accounts no longer signed in (every cache key starts with the account ID). The file has a format version; another version is ignored and replaced. `cache: false` turns it off; `--demo` never uses it. - **Sources are cached too:** Azure lists subscriptions over the network, so without this the Sources pane would still wait. - **Go to** searches everything cached straight away, and its background loading now also refreshes lists from an earlier run instead of skipping them. - **Where you left off:** the state file remembers the selected source, vault or secret per folder (the `--dir` or working directory, 100 most recent folders), and the next start in that folder goes back there quietly (no error if it's gone). Starting on a link skips it. Docs: `cache:` in config.md, a Cache section, the place in State, and the README Privacy section now mentions the cache file. Tests: cache round trip with a backend too slow to answer (lists and cursor come from the file), no value in the file, file mode 0600, old and signed-out entries dropped, back where it was left, not for another folder or a link. This touches `app.go` near PR #1's changes (Model fields, the Update switch), so whichever merges second needs a small conflict fix. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
keb added 2 commits 2026-10-11 09:33:29 +02:00
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
feat: save the place on the periodic tick too
CI / Checks (pull_request) Successful in 22s
PR title / Conventional title (pull_request) Successful in 2s
9787f78dd8
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
keb added 1 commit 2026-10-11 09:51:56 +02:00
Merge remote-tracking branch 'origin/main' into feat/disk-cache
CI / Checks (pull_request) Successful in 23s
PR title / Conventional title (pull_request) Successful in 1s
72003b2541
# Conflicts:
#	internal/ui/app/app.go
keb merged commit 10dc747f0f into main 2026-10-11 09:53:33 +02:00
keb deleted branch feat/disk-cache 2026-10-11 09:53:33 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: keb/lazysecrets#2