koneck 2.128.56 → 2.128.57
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.
- package/dist/diff-layout.d.ts +120 -0
- package/dist/diff-layout.d.ts.map +1 -0
- package/dist/diff-layout.js +173 -0
- package/dist/diff-layout.js.map +1 -0
- package/dist/ink-chat.d.ts +17 -13
- package/dist/ink-chat.d.ts.map +1 -1
- package/dist/ink-chat.js +99 -111
- package/dist/ink-chat.js.map +1 -1
- package/dist/session-changes.d.ts +1 -1
- package/dist/session-changes.d.ts.map +1 -1
- package/dist/session-changes.js +5 -2
- package/dist/session-changes.js.map +1 -1
- package/dist/web/api.d.ts.map +1 -1
- package/dist/web/api.js +10 -0
- package/dist/web/api.js.map +1 -1
- package/dist/web/sessions.d.ts +6 -0
- package/dist/web/sessions.d.ts.map +1 -1
- package/dist/web/sessions.js +8 -0
- package/dist/web/sessions.js.map +1 -1
- package/dist/web/ui-client.d.ts.map +1 -1
- package/dist/web/ui-client.js +79 -6
- package/dist/web/ui-client.js.map +1 -1
- package/dist/web/ui-css.d.ts.map +1 -1
- package/dist/web/ui-css.js +16 -0
- package/dist/web/ui-css.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the diff panel is laid out, decided once for the terminal and the browser.
|
|
3
|
+
*
|
|
4
|
+
* Asked for with Claude Code's panel as the picture: a list of the changed files at the top, each
|
|
5
|
+
* with its own counts, tests and generated files folded into one line, and below a rule the one
|
|
6
|
+
* file being read — its changed lines on a band the full width of the panel, and a long line
|
|
7
|
+
* wrapped with its + or - carried onto each piece rather than cut off at the edge.
|
|
8
|
+
*
|
|
9
|
+
* The panel it replaced stacked every file's diff in one column. Fifteen files was a scroll through
|
|
10
|
+
* all of them to find the one wanted, and a line longer than the panel lost its end.
|
|
11
|
+
*
|
|
12
|
+
* Nothing here draws. It returns which files are listed, in what order, which is selected, and a
|
|
13
|
+
* diff broken into rows of a given width; each interface paints those in its own way. The browser
|
|
14
|
+
* wraps with CSS, so it uses the list and the fold and not the row wrapping.
|
|
15
|
+
*/
|
|
16
|
+
import type { FileDiff } from './diff-view.js';
|
|
17
|
+
/** A diff longer than this is capped and the rest counted: a 4,000-line rewrite is not read in a panel. */
|
|
18
|
+
export declare const PANEL_DIFF_LINES = 400;
|
|
19
|
+
/** Lines of unchanged code kept around each change — what Claude Code's panel shows. */
|
|
20
|
+
export declare const PANEL_CONTEXT = 3;
|
|
21
|
+
/**
|
|
22
|
+
* Tests, lockfiles, build output and generated code: changes to review, but not first.
|
|
23
|
+
*
|
|
24
|
+
* Folded rather than hidden. A test that changed is part of the change — it is shown on request,
|
|
25
|
+
* and counted in the header either way.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isTestOrGenerated(p: string): boolean;
|
|
28
|
+
export interface ListedFile {
|
|
29
|
+
path: string;
|
|
30
|
+
added: number;
|
|
31
|
+
removed: number;
|
|
32
|
+
/** "new", "deleted", "binary" — shown in place of counts when there are none to show. */
|
|
33
|
+
tag: string;
|
|
34
|
+
generated: boolean;
|
|
35
|
+
/** Index into the diffs this list was made from. */
|
|
36
|
+
index: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The files in the order they are listed: the work first, in the order it was touched, then the
|
|
40
|
+
* tests and generated files after it.
|
|
41
|
+
*/
|
|
42
|
+
export declare function listFiles(files: readonly FileDiff[]): {
|
|
43
|
+
main: ListedFile[];
|
|
44
|
+
generated: ListedFile[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The session's changes as plain data for the browser: listed in the terminal's order, with the
|
|
48
|
+
* fold decided, and each line with its number and sign. The browser chooses and wraps; it does not
|
|
49
|
+
* decide what is a test or which file comes first.
|
|
50
|
+
*/
|
|
51
|
+
export declare function panelData(files: readonly FileDiff[]): {
|
|
52
|
+
files: number;
|
|
53
|
+
added: number;
|
|
54
|
+
removed: number;
|
|
55
|
+
list: Array<ListedFile & {
|
|
56
|
+
binary: boolean;
|
|
57
|
+
hidden: number;
|
|
58
|
+
lines: Array<{
|
|
59
|
+
k: 'add' | 'del' | 'ctx';
|
|
60
|
+
n: number | null;
|
|
61
|
+
t: string;
|
|
62
|
+
}>;
|
|
63
|
+
}>;
|
|
64
|
+
};
|
|
65
|
+
export interface FileListView {
|
|
66
|
+
files: number;
|
|
67
|
+
added: number;
|
|
68
|
+
removed: number;
|
|
69
|
+
/** The rows of the list that fit, with the selected one marked. */
|
|
70
|
+
rows: Array<ListedFile & {
|
|
71
|
+
selected: boolean;
|
|
72
|
+
}>;
|
|
73
|
+
above: number;
|
|
74
|
+
below: number;
|
|
75
|
+
/** How many tests and generated files are folded, and whether they are shown now. */
|
|
76
|
+
folded: {
|
|
77
|
+
count: number;
|
|
78
|
+
open: boolean;
|
|
79
|
+
};
|
|
80
|
+
/** Index into the diffs of the file whose diff is drawn below the list, or -1. */
|
|
81
|
+
selected: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The list as shown: which rows fit in `rows`, scrolled so the selected one is among them.
|
|
85
|
+
*
|
|
86
|
+
* `selected` is a position in the visible order — main files, then the generated ones when the
|
|
87
|
+
* fold is open — and is clamped, so a file disappearing from under it does not select nothing.
|
|
88
|
+
*/
|
|
89
|
+
export declare function fileListView(files: readonly FileDiff[], opts: {
|
|
90
|
+
selected: number;
|
|
91
|
+
rows: number;
|
|
92
|
+
showGenerated: boolean;
|
|
93
|
+
}): FileListView;
|
|
94
|
+
/** How many files the list can move through with the fold as it is. */
|
|
95
|
+
export declare function listLength(files: readonly FileDiff[], showGenerated: boolean): number;
|
|
96
|
+
export type DiffRow = {
|
|
97
|
+
t: 'line';
|
|
98
|
+
kind: 'add' | 'del' | 'ctx';
|
|
99
|
+
number: number | null;
|
|
100
|
+
sign: string;
|
|
101
|
+
text: string;
|
|
102
|
+
first: boolean;
|
|
103
|
+
} | {
|
|
104
|
+
t: 'more';
|
|
105
|
+
count: number;
|
|
106
|
+
} | {
|
|
107
|
+
t: 'binary';
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* One file's diff as rows `width` cells wide, long lines wrapped.
|
|
111
|
+
*
|
|
112
|
+
* The line number goes on the first piece only; every piece carries the sign, so a wrapped added
|
|
113
|
+
* line reads as added all the way down — the thing Claude Code's panel does that a clipped line
|
|
114
|
+
* cannot. Tabs are expanded first, because a tab has no width until it is drawn and the band
|
|
115
|
+
* behind a changed line has to be one.
|
|
116
|
+
*/
|
|
117
|
+
export declare function diffRows(d: FileDiff, width: number): DiffRow[];
|
|
118
|
+
/** A line broken into pieces no wider than `width` cells; an empty line is one empty piece. */
|
|
119
|
+
export declare function wrapCells(text: string, width: number): string[];
|
|
120
|
+
//# sourceMappingURL=diff-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-layout.d.ts","sourceRoot":"","sources":["../src/diff-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the diff panel is laid out, decided once for the terminal and the browser.
|
|
3
|
+
*
|
|
4
|
+
* Asked for with Claude Code's panel as the picture: a list of the changed files at the top, each
|
|
5
|
+
* with its own counts, tests and generated files folded into one line, and below a rule the one
|
|
6
|
+
* file being read — its changed lines on a band the full width of the panel, and a long line
|
|
7
|
+
* wrapped with its + or - carried onto each piece rather than cut off at the edge.
|
|
8
|
+
*
|
|
9
|
+
* The panel it replaced stacked every file's diff in one column. Fifteen files was a scroll through
|
|
10
|
+
* all of them to find the one wanted, and a line longer than the panel lost its end.
|
|
11
|
+
*
|
|
12
|
+
* Nothing here draws. It returns which files are listed, in what order, which is selected, and a
|
|
13
|
+
* diff broken into rows of a given width; each interface paints those in its own way. The browser
|
|
14
|
+
* wraps with CSS, so it uses the list and the fold and not the row wrapping.
|
|
15
|
+
*/
|
|
16
|
+
import { sliceToWidth, displayWidth } from './markdown-ink.js';
|
|
17
|
+
/** A diff longer than this is capped and the rest counted: a 4,000-line rewrite is not read in a panel. */
|
|
18
|
+
export const PANEL_DIFF_LINES = 400;
|
|
19
|
+
/** Lines of unchanged code kept around each change — what Claude Code's panel shows. */
|
|
20
|
+
export const PANEL_CONTEXT = 3;
|
|
21
|
+
/**
|
|
22
|
+
* Tests, lockfiles, build output and generated code: changes to review, but not first.
|
|
23
|
+
*
|
|
24
|
+
* Folded rather than hidden. A test that changed is part of the change — it is shown on request,
|
|
25
|
+
* and counted in the header either way.
|
|
26
|
+
*/
|
|
27
|
+
export function isTestOrGenerated(p) {
|
|
28
|
+
const f = p.replace(/\\/g, '/');
|
|
29
|
+
const name = f.split('/').pop() ?? f;
|
|
30
|
+
if (/(^|\/)(tests?|__tests__|__snapshots__|spec|e2e|fixtures)\//i.test(f))
|
|
31
|
+
return true;
|
|
32
|
+
if (/\.(test|spec)\.[^/]+$/i.test(name) || /_test\.(go|py|rb)$/i.test(name) || /^test_.*\.py$/i.test(name))
|
|
33
|
+
return true;
|
|
34
|
+
if (/(^|\/)(dist|build|out|coverage|generated|gen|vendor|node_modules)\//i.test(f))
|
|
35
|
+
return true;
|
|
36
|
+
if (/\.(min\.(js|css)|map|snap|lock)$/i.test(name) || /\.g\.[a-z]+$/i.test(name) || /\.generated\./i.test(name))
|
|
37
|
+
return true;
|
|
38
|
+
return /^(package-lock\.json|yarn\.lock|pnpm-lock\.yaml|composer\.lock|Cargo\.lock|poetry\.lock|Gemfile\.lock|go\.sum|bun\.lockb?)$/i.test(name);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The files in the order they are listed: the work first, in the order it was touched, then the
|
|
42
|
+
* tests and generated files after it.
|
|
43
|
+
*/
|
|
44
|
+
export function listFiles(files) {
|
|
45
|
+
const main = [];
|
|
46
|
+
const generated = [];
|
|
47
|
+
files.forEach((d, index) => {
|
|
48
|
+
const tag = d.binary ? 'binary' : d.created && d.removed === 0 ? 'new' : d.deleted ? 'deleted' : '';
|
|
49
|
+
const item = { path: d.path, added: d.added, removed: d.removed, tag, generated: isTestOrGenerated(d.path), index };
|
|
50
|
+
(item.generated ? generated : main).push(item);
|
|
51
|
+
});
|
|
52
|
+
return { main, generated };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The session's changes as plain data for the browser: listed in the terminal's order, with the
|
|
56
|
+
* fold decided, and each line with its number and sign. The browser chooses and wraps; it does not
|
|
57
|
+
* decide what is a test or which file comes first.
|
|
58
|
+
*/
|
|
59
|
+
export function panelData(files) {
|
|
60
|
+
const { main, generated } = listFiles(files);
|
|
61
|
+
const t = files.reduce((a, d) => ({ added: a.added + d.added, removed: a.removed + d.removed }), { added: 0, removed: 0 });
|
|
62
|
+
return {
|
|
63
|
+
files: files.length, ...t,
|
|
64
|
+
list: [...main, ...generated].map(f => {
|
|
65
|
+
const d = files[f.index];
|
|
66
|
+
return {
|
|
67
|
+
...f, binary: d.binary, hidden: d.hiddenLines,
|
|
68
|
+
lines: d.hunks.flatMap(h => h.lines.map(l => ({
|
|
69
|
+
k: l.kind, n: (l.kind === 'del' ? l.before : l.after) ?? null, t: l.text,
|
|
70
|
+
}))),
|
|
71
|
+
};
|
|
72
|
+
}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The list as shown: which rows fit in `rows`, scrolled so the selected one is among them.
|
|
77
|
+
*
|
|
78
|
+
* `selected` is a position in the visible order — main files, then the generated ones when the
|
|
79
|
+
* fold is open — and is clamped, so a file disappearing from under it does not select nothing.
|
|
80
|
+
*/
|
|
81
|
+
export function fileListView(files, opts) {
|
|
82
|
+
const { main, generated } = listFiles(files);
|
|
83
|
+
const order = opts.showGenerated || main.length === 0 ? [...main, ...generated] : main;
|
|
84
|
+
const total = files.reduce((a, d) => ({ added: a.added + d.added, removed: a.removed + d.removed }), { added: 0, removed: 0 });
|
|
85
|
+
const sel = order.length ? Math.max(0, Math.min(opts.selected, order.length - 1)) : -1;
|
|
86
|
+
const room = Math.max(1, opts.rows);
|
|
87
|
+
// The window keeps the selection in view, as low as it can so the top of the list stays put.
|
|
88
|
+
const start = order.length <= room ? 0 : Math.max(0, Math.min(sel - room + 1, order.length - room));
|
|
89
|
+
const from = Math.max(0, Math.min(start, sel));
|
|
90
|
+
const shown = order.slice(from, from + room);
|
|
91
|
+
return {
|
|
92
|
+
files: files.length, ...total,
|
|
93
|
+
rows: shown.map((f, i) => ({ ...f, selected: from + i === sel })),
|
|
94
|
+
above: from,
|
|
95
|
+
below: Math.max(0, order.length - from - shown.length),
|
|
96
|
+
folded: { count: main.length === 0 ? 0 : generated.length, open: opts.showGenerated },
|
|
97
|
+
selected: sel >= 0 ? order[sel].index : -1,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** How many files the list can move through with the fold as it is. */
|
|
101
|
+
export function listLength(files, showGenerated) {
|
|
102
|
+
const { main, generated } = listFiles(files);
|
|
103
|
+
return showGenerated || main.length === 0 ? main.length + generated.length : main.length;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* One file's diff as rows `width` cells wide, long lines wrapped.
|
|
107
|
+
*
|
|
108
|
+
* The line number goes on the first piece only; every piece carries the sign, so a wrapped added
|
|
109
|
+
* line reads as added all the way down — the thing Claude Code's panel does that a clipped line
|
|
110
|
+
* cannot. Tabs are expanded first, because a tab has no width until it is drawn and the band
|
|
111
|
+
* behind a changed line has to be one.
|
|
112
|
+
*/
|
|
113
|
+
export function diffRows(d, width) {
|
|
114
|
+
/*
|
|
115
|
+
* Cached per diff and width: the panel asks on every repaint, and a diff does not change — a new
|
|
116
|
+
* edit arrives as a new object. Measured on a Raspberry Pi 5, two 400-line diffs: 66ms to lay
|
|
117
|
+
* out one uncached, which was most of an 86ms repaint.
|
|
118
|
+
*/
|
|
119
|
+
const byWidth = ROWS_CACHE.get(d);
|
|
120
|
+
const hit = byWidth?.get(width);
|
|
121
|
+
if (hit)
|
|
122
|
+
return hit;
|
|
123
|
+
const rows = layoutRows(d, width);
|
|
124
|
+
if (byWidth)
|
|
125
|
+
byWidth.set(width, rows);
|
|
126
|
+
else
|
|
127
|
+
ROWS_CACHE.set(d, new Map([[width, rows]]));
|
|
128
|
+
return rows;
|
|
129
|
+
}
|
|
130
|
+
const ROWS_CACHE = new WeakMap();
|
|
131
|
+
function layoutRows(d, width) {
|
|
132
|
+
if (d.binary)
|
|
133
|
+
return [{ t: 'binary' }];
|
|
134
|
+
const w = Math.max(8, width);
|
|
135
|
+
const rows = [];
|
|
136
|
+
for (const hunk of d.hunks) {
|
|
137
|
+
for (const l of hunk.lines) {
|
|
138
|
+
const number = (l.kind === 'del' ? l.before : l.after) ?? null;
|
|
139
|
+
const sign = l.kind === 'add' ? '+' : l.kind === 'del' ? '-' : ' ';
|
|
140
|
+
for (const [i, piece] of wrapCells(l.text.replace(/\t/g, ' '), w).entries()) {
|
|
141
|
+
rows.push({ t: 'line', kind: l.kind, number, sign, text: piece, first: i === 0 });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (d.hiddenLines > 0)
|
|
146
|
+
rows.push({ t: 'more', count: d.hiddenLines });
|
|
147
|
+
return rows;
|
|
148
|
+
}
|
|
149
|
+
/** A line broken into pieces no wider than `width` cells; an empty line is one empty piece. */
|
|
150
|
+
export function wrapCells(text, width) {
|
|
151
|
+
// Printable ASCII is one cell a character — most code, and far cheaper than measuring.
|
|
152
|
+
if (/^[\x20-\x7e]*$/.test(text)) {
|
|
153
|
+
if (text.length <= width)
|
|
154
|
+
return [text];
|
|
155
|
+
const out = [];
|
|
156
|
+
for (let i = 0; i < text.length; i += width)
|
|
157
|
+
out.push(text.slice(i, i + width));
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
if (displayWidth(text) <= width)
|
|
161
|
+
return [text];
|
|
162
|
+
const out = [];
|
|
163
|
+
let rest = text;
|
|
164
|
+
while (rest.length) {
|
|
165
|
+
const head = sliceToWidth(rest, width);
|
|
166
|
+
// A character wider than the whole width would never fit; take it alone rather than loop.
|
|
167
|
+
const take = head.text.length || [...rest][0].length;
|
|
168
|
+
out.push(rest.slice(0, take));
|
|
169
|
+
rest = rest.slice(take);
|
|
170
|
+
}
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=diff-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-layout.js","sourceRoot":"","sources":["../src/diff-layout.ts"],"names":[],"mappings":"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"}
|
package/dist/ink-chat.d.ts
CHANGED
|
@@ -488,26 +488,30 @@ export declare function initialAltScreen(cfg: {
|
|
|
488
488
|
/**
|
|
489
489
|
* The live diff panel — the work as it happens, beside the conversation.
|
|
490
490
|
*
|
|
491
|
-
*
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
*
|
|
495
|
-
*
|
|
491
|
+
* Laid out the way Claude Code's is, which was the picture it was asked for with: the changed files
|
|
492
|
+
* listed at the top with their own counts, tests and generated files folded into one line, and
|
|
493
|
+
* below a rule the one file being read. Its changed lines sit on a band the whole width of the
|
|
494
|
+
* panel, and a line too long for it wraps, carrying its + or - onto each piece.
|
|
495
|
+
*
|
|
496
|
+
* It used to stack every file's diff in one column, so the fifteenth file was a scroll through
|
|
497
|
+
* fourteen others, and a long line was cut at the panel's edge. What is listed, in what order,
|
|
498
|
+
* what is folded and how a line wraps are decided in diff-layout.ts, which the browser's Changes
|
|
499
|
+
* view uses too.
|
|
500
|
+
*
|
|
501
|
+
* Alt+↑/↓ (or Alt+P/N, for Windows Terminal, which keeps Alt+arrows for its own panes) moves
|
|
502
|
+
* through the list, Alt+PgUp/PgDn and the wheel scroll the file, Alt+T opens the fold.
|
|
496
503
|
*/
|
|
497
|
-
export declare function DiffPanel({ files, width, height, activity, activityRows, scroll }: {
|
|
504
|
+
export declare function DiffPanel({ files, width, height, activity, activityRows, scroll, selected, showGenerated }: {
|
|
498
505
|
files: readonly FileDiff[];
|
|
499
506
|
width: number;
|
|
500
507
|
height: number;
|
|
501
508
|
activity?: React.ReactNode;
|
|
502
509
|
activityRows?: number;
|
|
503
|
-
/**
|
|
504
|
-
* How far back from the newest row the panel is looking.
|
|
505
|
-
*
|
|
506
|
-
* The panel scrolls independently of the conversation, which is the point of it being a
|
|
507
|
-
* panel: reading a diff should not mean losing your place in the transcript, and following
|
|
508
|
-
* the transcript should not drag the diff away from the hunk being read.
|
|
509
|
-
*/
|
|
510
|
+
/** How far into the selected file's diff the panel is looking, in rows. */
|
|
510
511
|
scroll?: number;
|
|
512
|
+
/** A position in the list as shown — see fileListView. */
|
|
513
|
+
selected?: number;
|
|
514
|
+
showGenerated?: boolean;
|
|
511
515
|
}): React.JSX.Element;
|
|
512
516
|
/**
|
|
513
517
|
* Exported for one reason: so a test can mount it.
|
package/dist/ink-chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink-chat.d.ts","sourceRoot":"","sources":["../src/ink-chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AA8B3D,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgCtE,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ink-chat.d.ts","sourceRoot":"","sources":["../src/ink-chat.tsx"],"names":[],"mappings":"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"}
|