Make dashboard updateable

This commit is contained in:
2026-07-28 12:44:31 +02:00
parent 72e1eb1fda
commit bb8e91039f
21 changed files with 3482 additions and 43 deletions

View File

@@ -97,6 +97,9 @@ within_status = "file" # "file" or "timestamp" (oldest first)
enabled = true # instant stale view plus offline fallback
max_age = "168h" # 7 days; 0 means no age limit
directory = "" # defaults to the OS user cache directory
[editing]
mode = "vim" # "vim" or "standard"; description field only for now
```
When cached data exists, the picker and PR details are rendered immediately
@@ -125,7 +128,7 @@ configured repository when `--repo` is not provided. The corresponding flags
include `--config`, `--theme`, `--poll`, `--fold-resolved`,
`--thread-list-width`, `--dashboard-mode`, `--compact-reviews`,
`--path-scroll`, and `--path-scroll-interval`, plus `--cache`,
`--cache-max-age`, and `--cache-dir`.
`--cache-max-age`, `--cache-dir`, and `--editor-mode`.
Boolean settings can be disabled explicitly, for
example `--compact-reviews=false`.
@@ -147,6 +150,7 @@ history and metadata.
| `j` / `k` | Move between items or scroll the dashboard/focused detail |
| `?` | Show contextual keybinding help |
| `d` | Open the current pull request dashboard |
| `e` | Edit the current PR title, target branch, and description from its dashboard |
| `/` | Fuzzy-search paths and filter with `status:`, `author:`, `updated:true` |
| `F` | Clear active thread filters |
| `n` / `N` | Next / previous thread with a new update |
@@ -168,15 +172,50 @@ comments remain visible while writing. It supports multiple lines: `enter`
inserts a newline, `ctrl-s` opens the rendered confirmation preview, and `esc`
cancels. Replies and resolution changes require an explicit `y` confirmation.
Write keys remain disabled for cached snapshots, during refreshes, and whenever
GitHub does not grant the corresponding per-thread capability.
GitHub does not grant the corresponding capability.
The dashboard editor works with raw Markdown so template checklists can be
updated directly. The active line is highlighted without inserting a
layout-changing block character. It opens with the description focused;
`tab` and `shift-tab` move between the description, title, and target branch.
When the target branch is focused, repository branches are recommended using
the typed text, likely branch names, the current/default branch, and each
branch's latest commit time. The list updates as you type. Use `ctrl-p` and
`ctrl-n` to select the previous or next result, then `tab` or `enter` to complete it;
pressing `tab` again moves to the description.
With the default `editing.mode = "vim"`, the description starts in Normal mode.
It supports `hjkl`, `0`, `^`, `$`, `gg`, `G`, `w`/`W`, `b`/`B`, `e`/`E`,
`f`/`F`/`t`/`T` with `;` and `,`, `i`/`a`/`I`/`A`, `o`/`O`, `s`, and
`x`/`X`. `s` removes the character under the cursor and enters Insert mode.
Soft-wrapped rows behave as visual editor lines for vertical and line-local
motions, but do not add newlines to the Markdown submitted to GitHub.
`ctrl-d` and `ctrl-u` move the cursor and viewport down or up by half a page,
including while extending a Visual selection.
`v` starts character-wise Visual mode and `V` starts visual-line selection;
`d` or `x` deletes the selection, `y` copies it to the system clipboard, and
`p` pastes from the system clipboard. Normal mode uses a block cursor, while
Insert mode uses the terminal's hardware bar cursor at the boundary between
characters without hiding or shifting either character.
The description retains its raw Markdown while headings, emphasis, inline
code, links, quote markers, and HTML comments receive syntax highlighting.
Highlighting consists only of zero-width terminal styling and cannot alter
wrapping, selection, clipboard contents, cursor offsets, or submitted text.
`esc` returns from Insert to Normal mode; a second `esc` cancels the editor.
Set `editing.mode = "standard"` for direct insertion with arrow,
`home`, and `end` navigation. Title and target branch remain standard inputs
in either mode. `ctrl-s` opens an explicit confirmation. If the title,
description, or target branch changes remotely while the editor is open,
submission is blocked rather than overwriting the newer metadata.
## Current scope
The application can reply to review threads and resolve or unresolve them.
Other write operations remain disabled. The dashboard shows the capability
gate, including why each action is unavailable. Read state
The application can reply to review threads, resolve or unresolve them, and
update the PR title, target branch, and description. Comment reactions remain
read-only. Other write operations remain disabled. The dashboard shows the
capability gate, including why each action is unavailable. Read state
persists beside the configuration, and recent PR data is cached for offline
fallback. Check contexts and annotations are paginated. GitHub features which depend
on server-side context, such as unfurling issue references or displaying
fallback. Check contexts and annotations are paginated. GitHub features which
depend on server-side context, such as unfurling issue references or displaying
uploaded images, are represented textually in the terminal. See
[`TODO.md`](TODO.md) for remaining read-only work and write-support preparation.