Implement durable picker cache semantics #722
Labels
No labels
bug
documentation
duplicate
enhancement
fugitive
good first issue
help wanted
invalid
question
v0.1.0
v0.2.0
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
barrettruth/forge.nvim#722
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Picker list caching is not useful enough for large repositories. Opening a picker after restarting Neovim refetches even when forge.nvim has recently fetched the same list.
Current implementation facts:
lua/forge/state/init.luauses a process-local list cache with a short TTL.lua/forge/state/cache.luastores values in an in-memory Lua table only.Final design decisions
stdpath("cache")/forge.nvim. Storing private repo titles/branches there is acceptable for this plugin.Rationale for excluding CI/checks initially
CI and checks are different from PRs/issues/releases. They change quickly, and the row contents directly drive actions like cancel, rerun, open log, and status interpretation. A durable CI row can become misleading in seconds. Checks are also not safely keyed by PR number alone because the PR head commit can move; persistence should wait until checks can be keyed by commit SHA across backends.
In-memory or active-picker reuse remains fine. The first durable cache pass should improve picker startup without making volatile action state look authoritative.
Acceptance criteria
Non-goals
WIP: design durable picker cache semanticsto Implement durable picker cache semantics