koneck 2.62.0 → 2.64.0
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/folder-dialog.d.ts +63 -0
- package/dist/folder-dialog.d.ts.map +1 -0
- package/dist/folder-dialog.js +175 -0
- package/dist/folder-dialog.js.map +1 -0
- package/dist/session-title.d.ts +70 -0
- package/dist/session-title.d.ts.map +1 -0
- package/dist/session-title.js +167 -0
- package/dist/session-title.js.map +1 -0
- package/dist/web/api.d.ts.map +1 -1
- package/dist/web/api.js +74 -4
- package/dist/web/api.js.map +1 -1
- package/dist/web/sessions.d.ts +4 -0
- package/dist/web/sessions.d.ts.map +1 -1
- package/dist/web/sessions.js +64 -1
- package/dist/web/sessions.js.map +1 -1
- package/dist/web/ui-client.d.ts.map +1 -1
- package/dist/web/ui-client.js +92 -8
- 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 +15 -0
- package/dist/web/ui-css.js.map +1 -1
- package/dist/web/ui.d.ts.map +1 -1
- package/dist/web/ui.js +43 -10
- package/dist/web/ui.js.map +1 -1
- package/package.json +1 -1
package/dist/web/ui-client.js
CHANGED
|
@@ -2171,22 +2171,35 @@ async function openPast(file) {
|
|
|
2171
2171
|
|
|
2172
2172
|
// Can this be carried on, and was it finished? Asked separately from rendering it, because the
|
|
2173
2173
|
// answer decides what the bar offers and reading a transcript should not wait on it.
|
|
2174
|
+
/*
|
|
2175
|
+
* What was observed, not a verdict on whether the work is done.
|
|
2176
|
+
*
|
|
2177
|
+
* This declared the session over and read-only before it had asked anything, and then said it
|
|
2178
|
+
* appeared complete as though that were a fact about somebody else's work. It is not a fact and
|
|
2179
|
+
* it is not KONECK's to decide: a person reading an old session is usually reading it because
|
|
2180
|
+
* they intend to carry on. So the bar says what it is — a session being read — and offers to
|
|
2181
|
+
* continue whatever the transcript looks like. Where there is real evidence of unfinished work,
|
|
2182
|
+
* that evidence is quoted; where there is none, nothing is claimed.
|
|
2183
|
+
*
|
|
2184
|
+
* The old wording is deliberately not repeated here: this comment travels to the browser inside
|
|
2185
|
+
* the page, and a phrase the interface must never show should not ship in its own source either.
|
|
2186
|
+
*/
|
|
2174
2187
|
$('rcontinue').hidden = true;
|
|
2175
2188
|
$('rwhy').textContent = '';
|
|
2176
|
-
$('readonlylead').textContent = '
|
|
2189
|
+
$('readonlylead').textContent = 'Earlier session, reading —';
|
|
2190
|
+
$('rcontinue').textContent = 'Continue this session';
|
|
2177
2191
|
void (async () => {
|
|
2178
2192
|
let can;
|
|
2179
2193
|
try { can = await api('/api/resumable?file=' + encodeURIComponent(file)); }
|
|
2180
|
-
|
|
2194
|
+
// Offered anyway if the check fails: not knowing whether it can be continued is not a reason
|
|
2195
|
+
// to refuse to try, and the resume route says so properly if it cannot.
|
|
2196
|
+
catch (e) { $('rcontinue').hidden = false; return; }
|
|
2181
2197
|
if (state.past !== file) return; // moved on while we were asking
|
|
2182
2198
|
$('rcontinue').hidden = false;
|
|
2183
2199
|
if (can.looksUnfinished) {
|
|
2184
|
-
|
|
2200
|
+
// Evidence, so a reader can judge it: an open plan step, a turn that ended mid-tool-call.
|
|
2185
2201
|
$('rwhy').textContent = can.because;
|
|
2186
2202
|
$('rcontinue').textContent = 'Continue where it left off';
|
|
2187
|
-
} else {
|
|
2188
|
-
$('rwhy').textContent = 'looks finished';
|
|
2189
|
-
$('rcontinue').textContent = 'Continue this session';
|
|
2190
2203
|
}
|
|
2191
2204
|
})();
|
|
2192
2205
|
|
|
@@ -2416,15 +2429,77 @@ $('pws').onclick = async () => {
|
|
|
2416
2429
|
picker.chosen = null;
|
|
2417
2430
|
$('wsfind').value = '';
|
|
2418
2431
|
$('wsnote').textContent = '';
|
|
2432
|
+
// The walk stays out of the way until it is asked for, which is what makes the menu a menu.
|
|
2433
|
+
$('wsbrowsesec').hidden = true;
|
|
2419
2434
|
let info;
|
|
2420
2435
|
try { info = await api('/api/workspaces'); } catch (e) { return; }
|
|
2421
2436
|
picker.recents = info.workspaces || [];
|
|
2422
2437
|
drawRecents();
|
|
2423
|
-
await browseTo(null);
|
|
2424
2438
|
$('wsdlg').showModal();
|
|
2425
2439
|
$('wsfind').focus();
|
|
2426
2440
|
};
|
|
2427
2441
|
|
|
2442
|
+
$('wsonthis').onclick = async () => {
|
|
2443
|
+
$('wsbrowsesec').hidden = false;
|
|
2444
|
+
if (!picker.at) await browseTo(null);
|
|
2445
|
+
else drawBrowse();
|
|
2446
|
+
};
|
|
2447
|
+
|
|
2448
|
+
/*
|
|
2449
|
+
* The computer's own dialog, opened by the server.
|
|
2450
|
+
*
|
|
2451
|
+
* A page cannot do this — webkitdirectory and showDirectoryPicker both withhold the absolute path
|
|
2452
|
+
* on purpose — but the server is on the same machine as the files and already requires loopback and
|
|
2453
|
+
* the token to act. When there is no desktop to put a window on, it says so and the walk above does
|
|
2454
|
+
* the job instead.
|
|
2455
|
+
*/
|
|
2456
|
+
$('wsnative').onclick = async () => {
|
|
2457
|
+
$('wsnote').textContent = 'Waiting for the folder dialog…';
|
|
2458
|
+
let out;
|
|
2459
|
+
try {
|
|
2460
|
+
out = await api('/api/pickfolder', { method: 'POST',
|
|
2461
|
+
body: JSON.stringify({ startIn: (picker.at && picker.at.path) || '' }) });
|
|
2462
|
+
} catch (e) { $('wsnote').textContent = e.message; return; }
|
|
2463
|
+
if (out.available === false) {
|
|
2464
|
+
$('wsnote').textContent = out.reason;
|
|
2465
|
+
$('wsnative').setAttribute('aria-disabled', 'true');
|
|
2466
|
+
// The way that does work, offered in the same breath as the one that does not.
|
|
2467
|
+
$('wsbrowsesec').hidden = false;
|
|
2468
|
+
if (!picker.at) await browseTo(null);
|
|
2469
|
+
return;
|
|
2470
|
+
}
|
|
2471
|
+
if (out.cancelled) { $('wsnote').textContent = ''; return; }
|
|
2472
|
+
picker.chosen = out.path;
|
|
2473
|
+
await openChosen();
|
|
2474
|
+
};
|
|
2475
|
+
|
|
2476
|
+
$('wsnewfolder').onclick = async () => {
|
|
2477
|
+
// Where first, from the dialog; then the name, because a folder dialog picks what exists.
|
|
2478
|
+
$('wsnote').textContent = 'Choose where the new folder goes…';
|
|
2479
|
+
let where;
|
|
2480
|
+
try {
|
|
2481
|
+
where = await api('/api/pickfolder', { method: 'POST',
|
|
2482
|
+
body: JSON.stringify({ startIn: (picker.at && picker.at.path) || '', newFolder: true }) });
|
|
2483
|
+
} catch (e) { $('wsnote').textContent = e.message; return; }
|
|
2484
|
+
if (where.available === false) {
|
|
2485
|
+
// No dialog: the folder is made inside whatever is being looked at, which is at least explicit.
|
|
2486
|
+
$('wsbrowsesec').hidden = false;
|
|
2487
|
+
if (!picker.at) await browseTo(null);
|
|
2488
|
+
where = { path: picker.at ? picker.at.path : '' };
|
|
2489
|
+
if (!where.path) { $('wsnote').textContent = 'Nowhere to put it yet — pick a folder first.'; return; }
|
|
2490
|
+
}
|
|
2491
|
+
if (where.cancelled) { $('wsnote').textContent = ''; return; }
|
|
2492
|
+
const name = prompt('Name for the new folder, inside ' + where.path);
|
|
2493
|
+
if (name === null || name.trim() === '') { $('wsnote').textContent = ''; return; }
|
|
2494
|
+
let made;
|
|
2495
|
+
try {
|
|
2496
|
+
made = await api('/api/newfolder', { method: 'POST',
|
|
2497
|
+
body: JSON.stringify({ inside: where.path, name: name.trim() }) });
|
|
2498
|
+
} catch (e) { $('wsnote').textContent = e.message; return; }
|
|
2499
|
+
picker.chosen = made.path;
|
|
2500
|
+
await openChosen();
|
|
2501
|
+
};
|
|
2502
|
+
|
|
2428
2503
|
function pickRow(label, path, opts) {
|
|
2429
2504
|
const row = el('div', 'wsrow' + (picker.chosen === path ? ' on' : ''));
|
|
2430
2505
|
const name = el('span', 'wsn', label);
|
|
@@ -2508,7 +2583,16 @@ function showChosen() {
|
|
|
2508
2583
|
: '';
|
|
2509
2584
|
}
|
|
2510
2585
|
|
|
2511
|
-
$('wsfind').oninput = () => {
|
|
2586
|
+
$('wsfind').oninput = async () => {
|
|
2587
|
+
drawRecents();
|
|
2588
|
+
// Typing is a search, and what is being searched for may not be in the recents — so the walk
|
|
2589
|
+
// appears as soon as there is something to look for.
|
|
2590
|
+
if ($('wsfind').value.trim() !== '') {
|
|
2591
|
+
$('wsbrowsesec').hidden = false;
|
|
2592
|
+
if (!picker.at) await browseTo(null);
|
|
2593
|
+
}
|
|
2594
|
+
drawBrowse();
|
|
2595
|
+
};
|
|
2512
2596
|
$('wsup').onclick = () => { if (picker.at && picker.at.parent) void browseTo(picker.at.parent); };
|
|
2513
2597
|
$('wscancel').onclick = () => { $('wsdlg').close(); };
|
|
2514
2598
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-client.js","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"ui-client.js","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkkJlB,CAAC;AACF,CAAC"}
|
package/dist/web/ui-css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-css.d.ts","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AA8CA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"ui-css.d.ts","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AA8CA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkkC3C"}
|
package/dist/web/ui-css.js
CHANGED
|
@@ -772,6 +772,21 @@ dialog:has(.dlg.wide){max-width:560px}
|
|
|
772
772
|
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
773
773
|
.wsrow .wsinto{flex:0 0 auto;color:var(--dim);font-size:12px}
|
|
774
774
|
.wsempty{padding:10px 11px;color:var(--dim);font-size:12px}
|
|
775
|
+
/*
|
|
776
|
+
* The ways to reach a folder, as a list of things to do rather than a form.
|
|
777
|
+
*
|
|
778
|
+
* Each row is one answer to one question, so it reads as a menu: an icon, a name, and a hint at
|
|
779
|
+
* what happens — an arrow for something that opens further, a note for something that hands over to
|
|
780
|
+
* the machine.
|
|
781
|
+
*/
|
|
782
|
+
.wsmenu{border:1px solid var(--line);border-radius:8px;background:var(--panel-2);overflow:hidden}
|
|
783
|
+
.wsitem{display:flex;align-items:center;gap:10px;width:100%;padding:8px 11px;
|
|
784
|
+
background:transparent;border:0;border-bottom:1px solid var(--line);cursor:pointer;
|
|
785
|
+
font-size:12.5px;font-family:inherit;text-align:left;color:var(--fg)}
|
|
786
|
+
.wsitem:last-child{border-bottom:0}
|
|
787
|
+
.wsitem:hover{background:var(--panel)}
|
|
788
|
+
.wsitem[aria-disabled="true"]{opacity:.5;cursor:default}
|
|
789
|
+
.wsico{flex:0 0 16px;text-align:center;color:var(--cyan);font-size:12px}
|
|
775
790
|
|
|
776
791
|
/* A tool call with nothing to open — what was asked, and how it went. */
|
|
777
792
|
.callhead{display:flex;align-items:center;gap:8px;padding:9px 13px;border-bottom:1px solid var(--line-2)}
|
package/dist/web/ui-css.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-css.js","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO;;;;;;;;;;;;;;;;;gBAiBO,OAAO;;;oCAGa,IAAI;;2BAEb,IAAI
|
|
1
|
+
{"version":3,"file":"ui-css.js","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO;;;;;;;;;;;;;;;;;gBAiBO,OAAO;;;oCAGa,IAAI;;2BAEb,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0iC9B,CAAC;AACF,CAAC"}
|
package/dist/web/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,wBAAgB,IAAI,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,wBAAgB,IAAI,IAAI,MAAM,CA+d7B"}
|
package/dist/web/ui.js
CHANGED
|
@@ -252,7 +252,13 @@ export function page() {
|
|
|
252
252
|
</footer>
|
|
253
253
|
<footer id="readonlybar" hidden>
|
|
254
254
|
<div class="readonly">
|
|
255
|
-
|
|
255
|
+
<!--
|
|
256
|
+
Not "finished". KONECK cannot know whether somebody is done with a piece of work, and
|
|
257
|
+
saying so where a person can read it invites them to believe it: a session titled "hi"
|
|
258
|
+
was labelled finished while its owner was still using it. What can honestly be said is
|
|
259
|
+
that this is being read rather than written to, and that continuing is one click away.
|
|
260
|
+
-->
|
|
261
|
+
<span id="readonlylead">Earlier session, reading —</span>
|
|
256
262
|
<b id="readonlywhat" style="font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"></b>
|
|
257
263
|
<span class="rgap"></span>
|
|
258
264
|
<!-- Reading a transcript and carrying on with it are the same click apart. What it was in the
|
|
@@ -306,29 +312,56 @@ export function page() {
|
|
|
306
312
|
<!--
|
|
307
313
|
Opening a project.
|
|
308
314
|
==================
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
315
|
+
Shaped after the picker this was asked to match: a search box, what you had open recently, then
|
|
316
|
+
the ways to reach something else — walk this computer, or hand the job to the computer's own
|
|
317
|
+
folder dialog, or make a new folder.
|
|
318
|
+
|
|
319
|
+
A menu anchored to the pill rather than a modal in the middle of the screen, because that is what
|
|
320
|
+
it is: a short list of ways to answer one question.
|
|
312
321
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
322
|
+
There is no "Cloud" row. The picker this copies has one because that product has somewhere in the
|
|
323
|
+
cloud to open from; KONECK does not, and a row that opens nothing would be furniture pretending to
|
|
324
|
+
be a feature.
|
|
316
325
|
-->
|
|
317
326
|
<dialog id="wsdlg"><div class="dlg wsdlg">
|
|
318
|
-
<
|
|
319
|
-
<input id="wsfind" placeholder="Search folders you have opened…" autocomplete="off"
|
|
327
|
+
<input id="wsfind" placeholder="Search folders, projects…" autocomplete="off"
|
|
320
328
|
spellcheck="false">
|
|
329
|
+
|
|
321
330
|
<div class="wssec" id="wsrecentsec">
|
|
322
|
-
<div class="wshead">
|
|
331
|
+
<div class="wshead">Recents</div>
|
|
323
332
|
<div class="wslist" id="wsrecents"></div>
|
|
324
333
|
</div>
|
|
334
|
+
|
|
325
335
|
<div class="wssec">
|
|
336
|
+
<div class="wshead">Open</div>
|
|
337
|
+
<div class="wsmenu">
|
|
338
|
+
<button type="button" class="wsitem" id="wsonthis">
|
|
339
|
+
<span class="wsico">▯</span>
|
|
340
|
+
<span class="wsn">On This Computer</span>
|
|
341
|
+
<span class="wsinto">›</span>
|
|
342
|
+
</button>
|
|
343
|
+
<button type="button" class="wsitem" id="wsnative">
|
|
344
|
+
<span class="wsico">🗁</span>
|
|
345
|
+
<span class="wsn">Use Existing…</span>
|
|
346
|
+
<span class="wsm" id="wsnativenote"></span>
|
|
347
|
+
</button>
|
|
348
|
+
<button type="button" class="wsitem" id="wsnewfolder">
|
|
349
|
+
<span class="wsico">+</span>
|
|
350
|
+
<span class="wsn">New Folder</span>
|
|
351
|
+
</button>
|
|
352
|
+
</div>
|
|
353
|
+
</div>
|
|
354
|
+
|
|
355
|
+
<!-- Shown only once "On This Computer" has been opened: the walk stays out of the way until it
|
|
356
|
+
is asked for, which is what makes the menu a menu. -->
|
|
357
|
+
<div class="wssec" id="wsbrowsesec" hidden>
|
|
326
358
|
<div class="wshead">
|
|
327
359
|
<button type="button" class="wsup" id="wsup" title="Up one level">↑</button>
|
|
328
360
|
<span class="wswhere" id="wswhere"></span>
|
|
329
361
|
</div>
|
|
330
362
|
<div class="wslist" id="wsbrowse"></div>
|
|
331
363
|
</div>
|
|
364
|
+
|
|
332
365
|
<div class="mnote" id="wsnote"></div>
|
|
333
366
|
<div class="row">
|
|
334
367
|
<button type="button" id="wscancel">Cancel</button>
|
package/dist/web/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,IAAI;IAClB,OAAO;;;;;;;SAOA,GAAG,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,IAAI;IAClB,OAAO;;;;;;;SAOA,GAAG,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAmdF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;EAC7C,YAAY,EAAE;;eAED,CAAC;AAChB,CAAC"}
|