Files
diple/TODO.md

146 lines
7.8 KiB
Markdown

# TODO
This list reflects the current implementation: paginated review threads,
thread comments, conversation comments, reviews, timeline events, checks, and
annotations; cached read-only snapshots; persistent unread state; contextual
keybindings; thread replies and resolution changes; and pull-request metadata
editing are already implemented.
## Experimental AI follow-up
- Add Claude Code and OpenRouter adapters behind the existing provider
interface. Direct API adapters must require no-training and zero-data-
retention routing and must never silently fall back to another provider or
model.
- Add local-only proposed reply drafts that the user can inspect and explicitly
publish under their own GitHub identity. Publishing is intentionally absent
from the initial AI implementation.
- Add a review-history browser with per-run scope, model, head SHA, exclusions,
redaction counts, and deletion/export controls without persisting raw diffs.
- Improve semantic near-duplicate detection across existing GitHub comments
and local findings, while retaining deterministic exact fingerprints.
- Add configurable sensitive-path policy sets and a per-run file picker before
confirmation.
- Add recorded provider event fixtures and adversarial prompt-injection,
ANSI/OSC, path traversal, stale-head, oversized-output, and tool-attempt
integration tests.
## Completed resilience work
- Refreshes render core data before annotations and conflict analysis. A
failed paginated subsection is marked partial and keeps the last complete
value while other sections continue updating.
- Polling uses GitHub rate-limit and retry headers, backs off at low remaining
budgets, and adds jitter. Failed-check annotations are cached by immutable
check ID.
- Superseded list, detail, and enrichment requests are canceled as newer
navigation or refresh work starts.
- Reply and PR-metadata drafts are stored in a versioned, atomic, permission
restricted file and restored after cancellation or restart.
- Unread state and disk cache are versioned and atomically replaced. Corrupt
persistence is reported by the health screen rather than silently trusted.
Cache writes are content-addressed, bounded, oldest-first pruned, and cached
branch recommendations remain available offline.
- Editor character motions, deletion, selection, wrapping, and clipboard
ranges operate on grapheme boundaries, with regression coverage for
combining marks, full-width characters, variation selectors, and joined
emoji.
- The health screen reports component status, rate-limit state, persistence
paths, partial data, and the session's wrapped warning/error history.
## High value workflow additions
- Open the current PR, thread comment, submitted review, check, annotation,
commit, or source location in a browser.
- Copy URLs, commit SHAs, file paths, branch names, rendered comment text, and
raw Markdown through explicit contextual actions.
- Add a dedicated changed-files/check-details view. It should make the complete
PR diff and check annotations inspectable even when no review thread exists
at that location.
- Add navigation to the next thread by status, file, author, or failed check,
not only the next unread update.
- Persist the selected PR/thread, scroll anchors, focused pane, hidden-list
state, folded threads, active filter, and pane width between runs.
- Make the picker scope configurable: assigned PRs, viewer-authored PRs,
review-requested PRs, subscribed PRs, or a union of those scopes. Clearly
label why each PR appears.
- Add saved/named thread filters and search history for repeated review
workflows.
- Distinguish local unread state from GitHub notification state, and optionally
integrate with GitHub notifications without silently marking remote
notifications as read.
- Make health events individually selectable and copyable, and retain
per-subsection last-success timestamps across refreshes.
## Data completeness and compatibility
- Paginate or explicitly mark truncation for the remaining fixed-size
connections: assignees, labels, review requests, latest reviews, repository
rulesets, and rules within a ruleset.
- Model pending reviews, minimized comments, deleted comments/users, edited
timestamps, and explicit reply relationships.
- Preserve enough team-reviewer identity to distinguish teams with the same
display name and to generate a correct browser target.
- Represent partial permissions per comment and conversation item, not only
aggregate PR/thread capabilities.
- Verify ruleset, branch-protection, merge-queue, deployment, and check behavior
against supported GitHub Enterprise Server versions. Degrade individual
fields when a schema feature is unavailable instead of rejecting the whole
PR query.
- Improve uploaded-image and attachment handling with optional terminal image
protocols or an open/download action while keeping a textual fallback.
## Write roadmap
- Add fuzzy multi-select editors for requested reviewers, assignees, labels,
and milestone. Support adding, removing, and clearing values with an explicit
before/after confirmation.
- Add top-level PR conversation replies and editing/deleting the viewer's own
comments. Fetch and enforce per-comment update/delete permissions.
- Add reaction add/remove actions while retaining the current read-only counts.
- Support submitting pending reviews and review summaries, including approve,
comment, and request-changes states.
- Support applying GitHub suggestions only after validating the original
commit/head SHA and showing the exact resulting patch. Define behavior for
multiple suggestions, conflicts, dirty Git/Jujutsu workspaces, and remote
application.
- Add draft/ready-for-review and close/reopen actions.
- Add explicit merge-method selection and merge-queue enqueue/dequeue actions.
Auto-merge toggling and guarded immediate merge are implemented with
stale-head protection and destructive confirmation.
- Define consistent optimistic-update and rollback behavior for every mutation.
Preserve drafts and server responses when a post-mutation refresh fails.
## UX and configurability
- Add diff-view settings for context size, tab width, whitespace visibility,
line-number style, syntax theme, and whether outdated/resolved context starts
collapsed.
- Add an optional command palette so configured actions remain discoverable
even when their key is forgotten or unbound.
- Audit screen-reader behavior beyond no-color/high-contrast themes, including
focus announcements, status symbols, popup ordering, and live refreshes.
- Add optional mouse selection/scrolling without changing keyboard-first
defaults.
- Make relative/absolute timestamp display and timezone configurable.
## Testing and maintainability
- Finish consolidating key dispatch, help, compact footers, and contextual
conflict validation into one action registry. Context validation is already
enforced, but declaration order and help descriptions remain separate.
- Coalesce unread-state persistence through the same delayed flush mechanism
used for drafts if future read-state actions make writes frequent.
- Add recorded GraphQL fixtures for GitHub.com and supported GitHub Enterprise
Server versions, including partial errors, rate limits, deleted actors, team
reviewers, mixed legacy statuses, and very large PRs.
- Add golden terminal snapshots across narrow/wide sizes, all themes,
configurable keys, Unicode-heavy content, editor modes, partial-data states,
and cached/live transitions.
- Add end-to-end mutation tests covering permission changes, stale head SHAs,
offline transitions, server success followed by refresh failure, and draft
recovery.
- Split the large GitHub-fetch and TUI update/render modules by data source and
screen once doing so removes duplicated state transitions; keep shared
behavior in small typed helpers rather than introducing a framework.