@spences10/pi-git-ui 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
- import { Text } from '@earendil-works/pi-tui';
2
1
  import { CommitComposer } from './commit-composer.js';
3
- import { commit, EMPTY_STATUS, format_git_error, has_staged_changes, read_diff, read_status, stage_all, stage_file, staged_file_count, toggle_file, unstage_all, unstage_file, } from './git.js';
4
- import { key_is_down, key_is_up, pad_ansi, pad_plain, state_counts, state_icon, state_label, status_code, truncate_plain, } from './render.js';
2
+ import { changed_line_indexes, commit, EMPTY_STATUS, format_git_error, has_staged_changes, read_diff, read_repo_overview, read_status, stage_all, stage_file, stage_hunk, stage_line, staged_file_count, toggle_file, unstage_all, unstage_file, unstage_hunk, unstage_line, } from './git.js';
3
+ import { key_is_down, key_is_up, state_label, status_code, } from './render.js';
4
+ import { render_stage } from './stage-render.js';
5
5
  export class GitStageBody {
6
6
  cwd;
7
7
  theme;
@@ -9,11 +9,18 @@ export class GitStageBody {
9
9
  done;
10
10
  selected = 0;
11
11
  diff_scroll = 0;
12
+ selected_hunk = 0;
13
+ selected_line_index;
12
14
  status = EMPTY_STATUS;
13
15
  diff;
14
16
  diff_for_path = '';
15
17
  busy = false;
16
18
  message = '';
19
+ filter_text = '';
20
+ capturing_filter = false;
21
+ actions;
22
+ selected_action = 0;
23
+ repo_overview;
17
24
  composer;
18
25
  _focused = false;
19
26
  constructor(cwd, theme, request_render, done) {
@@ -54,12 +61,22 @@ export class GitStageBody {
54
61
  render(width) {
55
62
  if (this.composer)
56
63
  return this.composer.render(width);
57
- const lines = this.render_header(width);
58
- if (this.message)
59
- lines.push(...this.render_message(width));
60
- if (this.status.files.length === 0)
61
- return lines;
62
- return [...lines, ...this.render_workbench(width)];
64
+ return render_stage({
65
+ theme: this.theme,
66
+ status: this.status,
67
+ message: this.message,
68
+ busy: this.busy,
69
+ visible_files: this.visible_files(),
70
+ selected: this.selected,
71
+ diff: this.diff,
72
+ diff_for_path: this.diff_for_path,
73
+ diff_scroll: this.diff_scroll,
74
+ selected_hunk: this.selected_hunk,
75
+ selected_line_index: this.selected_line_index,
76
+ actions: this.actions,
77
+ selected_action: this.selected_action,
78
+ repo_overview: this.repo_overview,
79
+ }, width);
63
80
  }
64
81
  handleInput(data) {
65
82
  if (this.composer) {
@@ -67,6 +84,22 @@ export class GitStageBody {
67
84
  this.request_render();
68
85
  return;
69
86
  }
87
+ if (this.actions) {
88
+ this.handle_action_input(data);
89
+ this.request_render();
90
+ return;
91
+ }
92
+ if (this.repo_overview) {
93
+ if (data === '\x1B' || data === 'q')
94
+ this.repo_overview = undefined;
95
+ this.request_render();
96
+ return;
97
+ }
98
+ if (this.capturing_filter) {
99
+ this.handle_filter_input(data);
100
+ this.request_render();
101
+ return;
102
+ }
70
103
  if (this.busy)
71
104
  return;
72
105
  if (data === 'q' || data === '\x1B') {
@@ -87,14 +120,36 @@ export class GitStageBody {
87
120
  void this.stage_selected();
88
121
  else if (data === 'x')
89
122
  void this.unstage_selected();
123
+ else if (data === 'S')
124
+ void this.stage_selected_hunk();
125
+ else if (data === 'X')
126
+ void this.unstage_selected_hunk();
127
+ else if (data === '+')
128
+ void this.stage_selected_line();
129
+ else if (data === '-')
130
+ void this.unstage_selected_line();
131
+ else if (data === ']')
132
+ this.move_line(1);
133
+ else if (data === '[')
134
+ this.move_line(-1);
135
+ else if (data === 'n')
136
+ this.move_hunk(1);
137
+ else if (data === 'p')
138
+ this.move_hunk(-1);
90
139
  else if (data === 'a')
91
140
  void this.stage_all_safely();
92
141
  else if (data === 'A')
93
142
  void this.run(() => stage_all(this.cwd), 'Force-staged all changes');
94
143
  else if (data === 'u')
95
144
  void this.run(() => unstage_all(this.cwd), 'Unstaged all changes');
145
+ else if (data === 'g')
146
+ void this.open_repo_overview();
96
147
  else if (data === 'c')
97
148
  this.open_commit_composer();
149
+ else if (data === '\r' || data === '\n')
150
+ this.open_action_menu();
151
+ else if (data === '/')
152
+ this.start_filter();
98
153
  else if (data === 'r')
99
154
  void this.load(this.selected_file()?.path);
100
155
  this.request_render();
@@ -102,119 +157,110 @@ export class GitStageBody {
102
157
  invalidate() {
103
158
  this.composer?.invalidate();
104
159
  }
160
+ visible_files() {
161
+ const query = this.filter_text.trim().toLowerCase();
162
+ if (!query)
163
+ return this.status.files;
164
+ return this.status.files.filter((file) => {
165
+ const searchable_text = `${file.path} ${state_label(file.state)} ${status_code(file)}`;
166
+ return searchable_text.toLowerCase().includes(query);
167
+ });
168
+ }
169
+ selected_file() {
170
+ return this.visible_files()[this.selected];
171
+ }
105
172
  restore_selection(preferred_path) {
106
- const path = preferred_path ?? this.status.files[this.selected]?.path;
173
+ const files = this.visible_files();
174
+ const path = preferred_path ?? files[this.selected]?.path;
107
175
  const index = path
108
- ? this.status.files.findIndex((file) => file.path === path)
176
+ ? files.findIndex((file) => file.path === path)
109
177
  : -1;
110
178
  this.selected =
111
179
  index >= 0
112
180
  ? index
113
- : Math.min(this.selected, Math.max(0, this.status.files.length - 1));
114
- }
115
- render_header(width) {
116
- const upstream = this.status.upstream
117
- ? ` • ${this.status.upstream} ↑${this.status.ahead} ↓${this.status.behind}`
118
- : '';
119
- const counts = state_counts(this.status.files);
120
- const staged = staged_file_count(this.status.files);
121
- const text = `branch ${this.status.branch}${upstream} • ${this.status.files.length} files • staged ${staged}${counts ? ` • ${counts}` : ''}`;
122
- return new Text(this.theme.fg('muted', text), 0, 0).render(width);
123
- }
124
- render_message(width) {
125
- const color = this.busy
126
- ? 'accent'
127
- : this.message.includes('disabled') ||
128
- this.message.includes('conflict') ||
129
- this.message.includes('blocked')
130
- ? 'warning'
131
- : 'dim';
132
- return new Text(this.theme.fg(color, this.message), 0, 0).render(width);
133
- }
134
- render_workbench(width) {
135
- const gap = width >= 96 ? 3 : 1;
136
- const list_width = Math.min(42, Math.max(28, Math.floor(width * 0.42)));
137
- const diff_width = Math.max(20, width - list_width - gap);
138
- const list = this.render_file_list(list_width);
139
- const diff = this.render_diff(diff_width, list.length);
140
- const height = Math.max(list.length, diff.length);
141
- const lines = [];
142
- for (let i = 0; i < height; i++) {
143
- const left = pad_ansi(list[i] ?? '', list_width);
144
- lines.push(`${left}${' '.repeat(gap)}${diff[i] ?? ''}`);
145
- }
146
- return lines;
147
- }
148
- render_file_list(width) {
149
- const lines = [this.theme.bold('Files')];
150
- let last_state;
151
- for (let i = 0; i < this.status.files.length; i++) {
152
- const file = this.status.files[i];
153
- if (file.state !== last_state) {
154
- lines.push(this.theme.fg('dim', state_label(file.state).toUpperCase()));
155
- last_state = file.state;
156
- }
157
- const selected = i === this.selected;
158
- const prefix = selected ? '› ' : ' ';
159
- const label_width = Math.max(8, width - 14);
160
- const label = truncate_plain(file.path, label_width);
161
- const meta = `${state_icon(file.state)} ${status_code(file)}`;
162
- const line = `${prefix}${pad_plain(label, label_width)} ${meta}`;
163
- lines.push(selected
164
- ? this.theme.fg('accent', this.theme.bold(line))
165
- : line);
166
- }
167
- return lines;
168
- }
169
- render_diff(width, height) {
170
- const selected = this.selected_file();
171
- const title = selected
172
- ? `Diff: ${truncate_plain(selected.path, Math.max(0, width - 6))}`
173
- : 'Diff';
174
- const lines = [this.theme.bold(title)];
175
- if (!this.diff || this.diff.path !== this.diff_for_path) {
176
- lines.push(this.theme.fg('dim', 'Loading diff…'));
177
- return lines;
178
- }
179
- const visible = Math.max(1, height - 1);
180
- const max_scroll = Math.max(0, this.diff.lines.length - visible);
181
- this.diff_scroll = Math.min(this.diff_scroll, max_scroll);
182
- const body = this.diff.lines.slice(this.diff_scroll, this.diff_scroll + visible);
183
- for (const raw of body)
184
- lines.push(this.format_diff_line(raw, width));
185
- if (max_scroll > 0) {
186
- lines[0] = `${lines[0]} ${this.theme.fg('dim', `${this.diff_scroll + 1}-${Math.min(this.diff_scroll + visible, this.diff.lines.length)}/${this.diff.lines.length}`)}`;
187
- }
188
- return lines;
189
- }
190
- format_diff_line(raw, width) {
191
- const text = truncate_plain(raw.replace(/\t/g, ' '), width);
192
- if (raw === 'STAGED' || raw === 'UNSTAGED')
193
- return this.theme.fg('accent', this.theme.bold(text));
194
- if (raw.startsWith('+++') || raw.startsWith('---'))
195
- return this.theme.fg('muted', text);
196
- if (raw.startsWith('@@'))
197
- return this.theme.fg('accent', text);
198
- if (raw.startsWith('+'))
199
- return this.theme.fg('success', text);
200
- if (raw.startsWith('-'))
201
- return this.theme.fg('warning', text);
202
- return text;
203
- }
204
- selected_file() {
205
- return this.status.files[this.selected];
181
+ : Math.min(this.selected, Math.max(0, files.length - 1));
206
182
  }
207
183
  move_selection(delta) {
208
- const next = Math.max(0, Math.min(this.status.files.length - 1, this.selected + delta));
184
+ const files = this.visible_files();
185
+ const next = Math.max(0, Math.min(files.length - 1, this.selected + delta));
209
186
  if (next === this.selected)
210
187
  return;
211
188
  this.selected = next;
212
189
  this.diff_scroll = 0;
190
+ this.selected_hunk = 0;
191
+ this.selected_line_index = undefined;
213
192
  void this.load_diff();
214
193
  }
215
194
  scroll_diff(delta) {
216
195
  this.diff_scroll = Math.max(0, this.diff_scroll + delta);
217
196
  }
197
+ start_filter() {
198
+ this.capturing_filter = true;
199
+ this.message = this.filter_text
200
+ ? `Filter: ${this.filter_text}`
201
+ : 'Filter: type to narrow files';
202
+ }
203
+ handle_filter_input(data) {
204
+ if (data === '\r' || data === '\n' || data === '\x1B') {
205
+ this.capturing_filter = false;
206
+ this.message = this.filter_text
207
+ ? `Filtered by ${this.filter_text}`
208
+ : '';
209
+ return;
210
+ }
211
+ if (data === '\x7F' || data === '\b') {
212
+ this.filter_text = this.filter_text.slice(0, -1);
213
+ }
214
+ else if (data === '\x15') {
215
+ this.filter_text = '';
216
+ }
217
+ else if (data.length === 1 && data >= ' ') {
218
+ this.filter_text += data;
219
+ }
220
+ this.selected = 0;
221
+ this.diff_scroll = 0;
222
+ this.selected_hunk = 0;
223
+ this.selected_line_index = undefined;
224
+ this.message = this.filter_text
225
+ ? `Filter: ${this.filter_text}`
226
+ : 'Filter cleared';
227
+ void this.load_diff();
228
+ }
229
+ move_hunk(delta) {
230
+ if (!this.diff || this.diff.hunks.length === 0) {
231
+ this.message = 'No hunks in selected diff.';
232
+ return;
233
+ }
234
+ this.selected_hunk = Math.max(0, Math.min(this.diff.hunks.length - 1, this.selected_hunk + delta));
235
+ const hunk = this.selected_diff_hunk();
236
+ if (hunk) {
237
+ this.diff_scroll = hunk.line_index;
238
+ this.selected_line_index = changed_line_indexes(hunk)[0];
239
+ }
240
+ }
241
+ move_line(delta) {
242
+ const indexes = this.stageable_line_indexes();
243
+ if (indexes.length === 0) {
244
+ this.message = 'No stageable lines in selected diff.';
245
+ return;
246
+ }
247
+ const current = this.selected_line_index ?? indexes[0];
248
+ const current_index = Math.max(0, indexes.indexOf(current));
249
+ const next = indexes[Math.max(0, Math.min(indexes.length - 1, current_index + delta))];
250
+ this.selected_line_index = next;
251
+ this.diff_scroll = next;
252
+ const hunk_index = this.diff?.hunks.findIndex((hunk) => changed_line_indexes(hunk).includes(next));
253
+ if (hunk_index !== undefined && hunk_index >= 0)
254
+ this.selected_hunk = hunk_index;
255
+ }
256
+ stageable_line_indexes() {
257
+ return this.diff?.hunks.flatMap(changed_line_indexes) ?? [];
258
+ }
259
+ selected_line_hunk() {
260
+ return this.diff?.hunks.find((hunk) => this.selected_line_index === undefined
261
+ ? false
262
+ : changed_line_indexes(hunk).includes(this.selected_line_index));
263
+ }
218
264
  async load_diff() {
219
265
  const file = this.selected_file();
220
266
  if (!file) {
@@ -225,9 +271,15 @@ export class GitStageBody {
225
271
  this.diff_for_path = path;
226
272
  try {
227
273
  this.diff = await read_diff(this.cwd, file);
274
+ this.selected_hunk = Math.min(this.selected_hunk, Math.max(0, this.diff.hunks.length - 1));
275
+ this.selected_line_index ??= this.stageable_line_indexes()[0];
228
276
  }
229
277
  catch (error) {
230
- this.diff = { path, lines: [format_git_error(error)] };
278
+ this.diff = {
279
+ path,
280
+ lines: [format_git_error(error)],
281
+ hunks: [],
282
+ };
231
283
  }
232
284
  this.request_render();
233
285
  }
@@ -244,6 +296,47 @@ export class GitStageBody {
244
296
  return;
245
297
  await this.run(() => stage_file(this.cwd, file), `Staged ${file.path}`);
246
298
  }
299
+ async unstage_selected() {
300
+ const file = this.selected_file();
301
+ if (!file)
302
+ return;
303
+ await this.run(() => unstage_file(this.cwd, file), `Unstaged ${file.path}`);
304
+ }
305
+ selected_diff_hunk() {
306
+ return this.diff?.hunks[this.selected_hunk];
307
+ }
308
+ async stage_selected_hunk() {
309
+ const hunk = this.selected_diff_hunk();
310
+ if (!hunk) {
311
+ this.message = 'No hunk selected.';
312
+ return;
313
+ }
314
+ await this.run(() => stage_hunk(this.cwd, hunk), 'Staged hunk');
315
+ }
316
+ async unstage_selected_hunk() {
317
+ const hunk = this.selected_diff_hunk();
318
+ if (!hunk) {
319
+ this.message = 'No hunk selected.';
320
+ return;
321
+ }
322
+ await this.run(() => unstage_hunk(this.cwd, hunk), 'Unstaged hunk');
323
+ }
324
+ async stage_selected_line() {
325
+ const hunk = this.selected_line_hunk();
326
+ if (!hunk || this.selected_line_index === undefined) {
327
+ this.message = 'No line selected.';
328
+ return;
329
+ }
330
+ await this.run(() => stage_line(this.cwd, hunk, this.selected_line_index), 'Staged line');
331
+ }
332
+ async unstage_selected_line() {
333
+ const hunk = this.selected_line_hunk();
334
+ if (!hunk || this.selected_line_index === undefined) {
335
+ this.message = 'No line selected.';
336
+ return;
337
+ }
338
+ await this.run(() => unstage_line(this.cwd, hunk, this.selected_line_index), 'Unstaged line');
339
+ }
247
340
  async stage_all_safely() {
248
341
  const unsafe = this.status.files.find((file) => file.state === 'mixed' || file.state === 'conflicted');
249
342
  if (unsafe) {
@@ -252,11 +345,106 @@ export class GitStageBody {
252
345
  }
253
346
  await this.run(() => stage_all(this.cwd), 'Staged all changes');
254
347
  }
255
- async unstage_selected() {
348
+ open_action_menu() {
256
349
  const file = this.selected_file();
257
- if (!file)
350
+ if (!file) {
351
+ this.message = 'No file selected.';
258
352
  return;
259
- await this.run(() => unstage_file(this.cwd, file), `Unstaged ${file.path}`);
353
+ }
354
+ const actions = [
355
+ {
356
+ action_label: 'stage file',
357
+ action_description: 'Stage all worktree changes for this file',
358
+ run: () => void this.stage_selected(),
359
+ },
360
+ {
361
+ action_label: 'unstage file',
362
+ action_description: 'Remove this file from the index',
363
+ run: () => void this.unstage_selected(),
364
+ },
365
+ {
366
+ action_label: 'stage hunk',
367
+ action_description: 'Stage the selected unstaged hunk',
368
+ run: () => void this.stage_selected_hunk(),
369
+ },
370
+ {
371
+ action_label: 'unstage hunk',
372
+ action_description: 'Unstage the selected staged hunk',
373
+ run: () => void this.unstage_selected_hunk(),
374
+ },
375
+ {
376
+ action_label: 'stage line',
377
+ action_description: 'Stage the selected changed line',
378
+ run: () => void this.stage_selected_line(),
379
+ },
380
+ {
381
+ action_label: 'unstage line',
382
+ action_description: 'Unstage the selected changed line',
383
+ run: () => void this.unstage_selected_line(),
384
+ },
385
+ {
386
+ action_label: 'commit',
387
+ action_description: 'Commit currently staged changes',
388
+ run: () => this.open_commit_composer(),
389
+ },
390
+ {
391
+ action_label: 'repository',
392
+ action_description: 'Show branches, log, stashes, and remotes',
393
+ run: () => void this.open_repo_overview(),
394
+ },
395
+ {
396
+ action_label: 'refresh',
397
+ action_description: 'Reload git status and diff',
398
+ run: () => void this.load(file.path),
399
+ },
400
+ ];
401
+ if (file.state === 'conflicted') {
402
+ actions.unshift({
403
+ action_label: 'conflict help',
404
+ action_description: 'Show safe conflict resolution steps',
405
+ run: () => this.show_conflict_help(file),
406
+ });
407
+ }
408
+ this.actions = actions;
409
+ this.selected_action = 0;
410
+ }
411
+ handle_action_input(data) {
412
+ if (data === '\x1B' || data === 'q') {
413
+ this.actions = undefined;
414
+ return;
415
+ }
416
+ if (key_is_up(data)) {
417
+ this.selected_action = Math.max(0, this.selected_action - 1);
418
+ return;
419
+ }
420
+ if (key_is_down(data)) {
421
+ this.selected_action = Math.min((this.actions?.length ?? 1) - 1, this.selected_action + 1);
422
+ return;
423
+ }
424
+ if (data !== '\r' && data !== '\n')
425
+ return;
426
+ const action = this.actions?.[this.selected_action];
427
+ this.actions = undefined;
428
+ action?.run();
429
+ }
430
+ show_conflict_help(file) {
431
+ this.actions = undefined;
432
+ this.message = `Resolve ${file.path} in your editor, then stage it with s when conflict markers are gone.`;
433
+ }
434
+ async open_repo_overview() {
435
+ this.busy = true;
436
+ this.message = 'Loading repository overview…';
437
+ this.request_render();
438
+ try {
439
+ this.repo_overview = await read_repo_overview(this.cwd);
440
+ }
441
+ catch (error) {
442
+ this.message = format_git_error(error);
443
+ }
444
+ finally {
445
+ this.busy = false;
446
+ this.request_render();
447
+ }
260
448
  }
261
449
  open_commit_composer() {
262
450
  if (!has_staged_changes(this.status.files)) {
@@ -283,6 +471,7 @@ export class GitStageBody {
283
471
  this.status = await read_status(this.cwd);
284
472
  this.restore_selection(path);
285
473
  this.diff_scroll = 0;
474
+ this.selected_line_index = undefined;
286
475
  await this.load_diff();
287
476
  }
288
477
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"stage-body.js","sourceRoot":"","sources":["../src/stage-body.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stage-body.js","sourceRoot":"","sources":["../src/stage-body.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { StageRenderState } from './stage-types.js';
2
+ export declare function render_stage(state: StageRenderState, width: number): string[];