Replies: 3 comments
Implementation checkpointDraft PR #7 now carries the first complete implementation from signed commit
Validation is green on exact pinned Neovim The PR remains a draft for the first visual review and an updated screenshot/recording: #7 |
Validation completeFollow-up commit The updated PR is green across Linux Neovim PR #7 remains a draft only for the visual review and updated screenshot/recording. |
|
Delivered through PR #7 and promoted from bluff to the default bet branch by PR #8 (merge 6d074e6). All required CI checks passed, the promotion has no review threads, and tracking issue #5 is closed as completed. No project card was attached to this work. Closing this RFC as implemented. |
Uh oh!
There was an error while loading. Please reload this page.
Summary
GitPanel already gives a strong keyboard-first view of local repository state, but two surfaces now need to grow together:
?key guide is a dense, flat list that is difficult to scan; andThis RFC proposes a clearer key guide and optional, read-only GitHub repository tabs while preserving the plugin's lightweight local Git core.
Tracking implementation: issue #5
Proposed experience
The panel gains a persistent view bar:
<Tab>and<S-Tab>move forward/backward;1through5jump directly.<CR>opens an in-editor detail;gxopens the canonical GitHub page.The
?popup becomes a responsive Key Guide built from structured sections rather than hand-aligned prose. Navigation, files, conflicts, commits, branches/worktrees, remotes, GitHub, and general controls receive distinct headings; keys and warnings receive semantic highlights;q/Escclose and ordinary motions scroll when the editor is short.Transport:
ghis recommended, not requiredThe proposed provider order is:
gh api) when installed. This is the smoothest path becauseghowns credential storage and supportsGH_TOKEN,GITHUB_TOKEN,GH_HOST, and enterprise equivalents.curlREST fallback for users who do not wantgh. Public repositories can be read anonymously; private repositories use a bearer token supplied at request time.Both built-in transports use the current supported GitHub REST API contract, normalize responses into plain Lua models, and run through
vim.system()callbacks so network latency never blocks editing.GitHub App OAuth tokens and private keys
GitHub App user access tokens and installation access tokens are bearer tokens and can call the three read endpoints when the App has Actions, Issues, and Pull requests read permissions.
A GitHub App private key is not an API token. It signs an RS256 JWT, which is then exchanged for an installation access token; installation tokens expire after one hour. GitPanel should not read or store that long-lived private key. Instead, setup accepts a
token_providercallback that can invoke the user's existing helper/vault and return a fresh short-lived token whenever a request batch begins.Illustrative configuration:
Users with a normal authenticated
ghsession need no token configuration at all. Tokens must never be persisted, displayed, logged, or placed in process arguments.Primary references:
Delivery slices
setup()contract, GitHub remote detection, async provider interface, cache, and deterministic fixtures.bluff→betrelease flow.Each slice will update the tracking issue; implementation will be reviewed in a draft PR targeting
bluff.Feedback requested
<Tab>/<S-Tab>/ numeric navigation intuitive?gh-first with a curl fallback the right balance for a dependency-free-by-default plugin?The security boundary (no raw App private key in Neovim) and nonblocking network behavior are intended to be hard requirements.
All reactions