v0.7.0 4c16dd8

picker.proto RawHistoryFolder

1// Client-picker interaction: offers, snapshots, commits, closes.
2syntax = "proto3";
3
4package vev.wire.v1;
5
6option go_package = "github.com/bnema/vev/internal/protocol/wire";
7
8// PickerLine is one structured row. Key is opaque and source-assigned.
9message PickerLine {
10  string key = 1;
11  // Closed kind taxonomy: 1 = section, 2 = session, 3 = tab, 4 = host.
12  uint32 kind = 2;
13  string label = 3;
14  string detail = 4;
15  // Closed status taxonomy: 0 = none, 1 = up, 2 = stopped, 3 = down,
16  // 4 = stale, 5 = version, 6 = error.
17  uint32 status = 5;
18  string status_detail = 6;
19  bool attention = 7;
20  bool stopped = 8;
21  bool dim = 9;
22  bool focusable = 10;
23  uint32 actions = 11; // bitmask: 1 = navigate, 2 = move, 4 = kill
24  bool ephemeral = 12;
25}
26
27// PickerCursor restores the selected row by opaque key.
28message PickerCursor {
29  string key = 1;
30  int64 index = 2;
31}
32
33// PickerProjection is one complete daemon-authorised presentation.
34message PickerProjection {
35  repeated PickerLine lines = 1;
36  PickerCursor cursor = 2;
37}
38
39// PickerSnapshot atomically publishes both presentation projections.
40message PickerSnapshot {
41  uint64 interaction_id = 1;
42  string source_id = 2;
43  uint64 source_revision = 3;
44  // Closed source-status taxonomy: 1 = ok, 2 = unavailable, 3 = too large.
45  uint32 status = 4;
46  string status_detail = 5;
47  PickerProjection recent = 6;
48  PickerProjection grouped = 7;
49}
50
51// PickerOffer opens one interaction.
52message PickerOffer {
53  uint64 interaction_id = 1;
54  uint64 request_id = 2;
55  // Closed intent taxonomy: 1 = navigation, 2 = move pane, 3 = move tab.
56  uint32 intent = 3;
57  string move_source_key = 4;
58  uint64 barrier_epoch = 5;
59  uint64 barrier_state = 6;
60  uint64 size_epoch = 7;
61  string title = 8;
62}
63
64// PickerSelection commits the opaque row key at a revision.
65message PickerSelection {
66  uint64 cause_action_id = 1;
67  uint64 request_id = 2;
68  uint64 interaction_id = 3;
69  string source_id = 4;
70  uint64 source_revision = 5;
71  string key = 6;
72  // Closed action taxonomy: 1 = navigate, 2 = move, 3 = kill.
73  uint32 action = 7;
74}
75
76// PickerResult reports a completed mutation.
77message PickerResult {
78  uint64 cause_action_id = 1;
79  uint64 request_id = 2;
80  uint64 interaction_id = 3;
81  string source_id = 4;
82  string key = 5;
83  uint32 action = 6; // same taxonomy as PickerSelection.action
84}
85
86// PickerFailure reports a rejected selection with a bounded code.
87message PickerFailure {
88  uint64 cause_action_id = 1;
89  uint64 request_id = 2;
90  uint64 interaction_id = 3;
91  string source_id = 4;
92  string key = 5;
93  uint32 action = 6; // same taxonomy as PickerSelection.action
94  // Closed code taxonomy: 1 = stale revision, 2 = unknown key,
95  // 3 = retired target, 4 = navigation failed, 5 = unknown source,
96  // 6 = action failed.
97  uint32 code = 7;
98}
99
100// PickerClose asks the daemon to retire one interaction. Idempotent.
101message PickerClose {
102  uint64 interaction_id = 1;
103  uint64 request_id = 2;
104}
105
106// PickerClosed confirms the daemon retired one interaction.
107message PickerClosed {
108  uint64 interaction_id = 1;
109  uint64 barrier_epoch = 2;
110  uint64 barrier_state = 3;
111}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 12

Tags 11

↑↓ moveenter openesc close