@agent-link/server 0.1.114 → 0.1.116
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/package.json +1 -1
- package/web/app.js +179 -7
- package/web/favicon.svg +7 -1
- package/web/iPad.webp +0 -0
- package/web/iPhone.webp +0 -0
- package/web/landing.html +993 -281
- package/web/modules/connection.js +15 -6
- package/web/modules/fileBrowser.js +379 -0
- package/web/style.css +329 -13
package/web/style.css
CHANGED
|
@@ -259,6 +259,7 @@ body {
|
|
|
259
259
|
|
|
260
260
|
.sidebar-workdir {
|
|
261
261
|
overflow: hidden;
|
|
262
|
+
position: relative;
|
|
262
263
|
}
|
|
263
264
|
|
|
264
265
|
.sidebar-hostname {
|
|
@@ -1864,28 +1865,69 @@ body {
|
|
|
1864
1865
|
justify-content: space-between;
|
|
1865
1866
|
}
|
|
1866
1867
|
|
|
1867
|
-
|
|
1868
|
+
/* ── Workdir path row (clickable) ── */
|
|
1869
|
+
.sidebar-workdir-path-row {
|
|
1868
1870
|
display: flex;
|
|
1869
|
-
align-items:
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
border: 1px solid var(--border);
|
|
1871
|
+
align-items: flex-start;
|
|
1872
|
+
gap: 4px;
|
|
1873
|
+
cursor: pointer;
|
|
1874
|
+
padding: 4px 6px;
|
|
1875
|
+
margin: 0 -6px;
|
|
1875
1876
|
border-radius: 4px;
|
|
1877
|
+
transition: background 0.15s;
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
.sidebar-workdir-path-row:hover {
|
|
1881
|
+
background: var(--bg-tertiary);
|
|
1882
|
+
}
|
|
1883
|
+
|
|
1884
|
+
.sidebar-workdir-path-row .sidebar-workdir-path {
|
|
1885
|
+
flex: 1;
|
|
1886
|
+
min-width: 0;
|
|
1887
|
+
}
|
|
1888
|
+
|
|
1889
|
+
.sidebar-workdir-chevron {
|
|
1890
|
+
flex-shrink: 0;
|
|
1891
|
+
margin-top: 2px;
|
|
1876
1892
|
color: var(--text-secondary);
|
|
1877
|
-
|
|
1878
|
-
|
|
1893
|
+
transition: transform 0.15s ease;
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
.sidebar-workdir-chevron.open {
|
|
1897
|
+
transform: rotate(180deg);
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
/* ── Workdir dropdown menu ── */
|
|
1901
|
+
.workdir-menu {
|
|
1902
|
+
position: absolute;
|
|
1903
|
+
left: -6px;
|
|
1904
|
+
right: -6px;
|
|
1905
|
+
z-index: 50;
|
|
1906
|
+
margin-top: 4px;
|
|
1907
|
+
background: var(--bg-secondary);
|
|
1908
|
+
border: 1px solid var(--border);
|
|
1909
|
+
border-radius: 6px;
|
|
1910
|
+
padding: 4px 0;
|
|
1911
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
|
|
1879
1912
|
}
|
|
1880
1913
|
|
|
1881
|
-
.
|
|
1914
|
+
.workdir-menu-item {
|
|
1915
|
+
display: flex;
|
|
1916
|
+
align-items: center;
|
|
1917
|
+
gap: 8px;
|
|
1918
|
+
padding: 7px 12px;
|
|
1919
|
+
font-size: 0.8rem;
|
|
1920
|
+
cursor: pointer;
|
|
1882
1921
|
color: var(--text-primary);
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
.workdir-menu-item:hover {
|
|
1883
1925
|
background: var(--bg-tertiary);
|
|
1884
1926
|
}
|
|
1885
1927
|
|
|
1886
|
-
.
|
|
1887
|
-
|
|
1888
|
-
|
|
1928
|
+
.workdir-menu-item svg {
|
|
1929
|
+
flex-shrink: 0;
|
|
1930
|
+
color: var(--text-secondary);
|
|
1889
1931
|
}
|
|
1890
1932
|
|
|
1891
1933
|
/* ── Folder Picker Modal ── */
|
|
@@ -2236,6 +2278,275 @@ body {
|
|
|
2236
2278
|
display: none;
|
|
2237
2279
|
}
|
|
2238
2280
|
|
|
2281
|
+
/* ══════════════════════════════════════════
|
|
2282
|
+
File Browser Panel
|
|
2283
|
+
══════════════════════════════════════════ */
|
|
2284
|
+
.file-panel {
|
|
2285
|
+
width: 280px;
|
|
2286
|
+
flex-shrink: 0;
|
|
2287
|
+
background: var(--bg-primary);
|
|
2288
|
+
border-right: 1px solid var(--border);
|
|
2289
|
+
display: flex;
|
|
2290
|
+
flex-direction: column;
|
|
2291
|
+
overflow: hidden;
|
|
2292
|
+
position: relative;
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
.file-panel-resize-handle {
|
|
2296
|
+
position: absolute;
|
|
2297
|
+
top: 0;
|
|
2298
|
+
right: -3px;
|
|
2299
|
+
width: 6px;
|
|
2300
|
+
height: 100%;
|
|
2301
|
+
cursor: col-resize;
|
|
2302
|
+
z-index: 10;
|
|
2303
|
+
background: transparent;
|
|
2304
|
+
transition: background 0.15s;
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2307
|
+
.file-panel-resize-handle:hover,
|
|
2308
|
+
.file-panel-resize-handle:active {
|
|
2309
|
+
background: var(--accent);
|
|
2310
|
+
opacity: 0.4;
|
|
2311
|
+
}
|
|
2312
|
+
|
|
2313
|
+
.file-panel-header {
|
|
2314
|
+
display: flex;
|
|
2315
|
+
align-items: center;
|
|
2316
|
+
justify-content: space-between;
|
|
2317
|
+
padding: 0.75rem;
|
|
2318
|
+
border-bottom: 1px solid var(--border);
|
|
2319
|
+
background: var(--bg-primary);
|
|
2320
|
+
flex-shrink: 0;
|
|
2321
|
+
}
|
|
2322
|
+
|
|
2323
|
+
.file-panel-title {
|
|
2324
|
+
font-size: 0.8rem;
|
|
2325
|
+
font-weight: 600;
|
|
2326
|
+
text-transform: uppercase;
|
|
2327
|
+
letter-spacing: 0.05em;
|
|
2328
|
+
color: var(--text-secondary);
|
|
2329
|
+
}
|
|
2330
|
+
|
|
2331
|
+
.file-panel-actions {
|
|
2332
|
+
display: flex;
|
|
2333
|
+
gap: 4px;
|
|
2334
|
+
}
|
|
2335
|
+
|
|
2336
|
+
.file-panel-btn {
|
|
2337
|
+
display: flex;
|
|
2338
|
+
align-items: center;
|
|
2339
|
+
justify-content: center;
|
|
2340
|
+
width: 24px;
|
|
2341
|
+
height: 24px;
|
|
2342
|
+
background: none;
|
|
2343
|
+
border: none;
|
|
2344
|
+
border-radius: 4px;
|
|
2345
|
+
color: var(--text-secondary);
|
|
2346
|
+
cursor: pointer;
|
|
2347
|
+
padding: 0;
|
|
2348
|
+
}
|
|
2349
|
+
|
|
2350
|
+
.file-panel-btn:hover {
|
|
2351
|
+
color: var(--text-primary);
|
|
2352
|
+
background: var(--bg-tertiary);
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2355
|
+
.file-panel-breadcrumb {
|
|
2356
|
+
padding: 0.5rem 0.75rem;
|
|
2357
|
+
font-size: 0.75rem;
|
|
2358
|
+
font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
|
|
2359
|
+
color: var(--text-secondary);
|
|
2360
|
+
border-bottom: 1px solid var(--border);
|
|
2361
|
+
white-space: nowrap;
|
|
2362
|
+
overflow: hidden;
|
|
2363
|
+
text-overflow: ellipsis;
|
|
2364
|
+
flex-shrink: 0;
|
|
2365
|
+
}
|
|
2366
|
+
|
|
2367
|
+
.file-tree {
|
|
2368
|
+
flex: 1;
|
|
2369
|
+
overflow-y: auto;
|
|
2370
|
+
overflow-x: hidden;
|
|
2371
|
+
padding: 0.25rem 0;
|
|
2372
|
+
}
|
|
2373
|
+
|
|
2374
|
+
.file-tree-item {
|
|
2375
|
+
display: flex;
|
|
2376
|
+
align-items: center;
|
|
2377
|
+
gap: 6px;
|
|
2378
|
+
padding: 3px 8px;
|
|
2379
|
+
font-size: 0.8rem;
|
|
2380
|
+
font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
|
|
2381
|
+
color: var(--text-primary);
|
|
2382
|
+
cursor: pointer;
|
|
2383
|
+
user-select: none;
|
|
2384
|
+
white-space: nowrap;
|
|
2385
|
+
overflow: hidden;
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2388
|
+
.file-tree-item:hover {
|
|
2389
|
+
background: var(--bg-tertiary);
|
|
2390
|
+
}
|
|
2391
|
+
|
|
2392
|
+
.file-tree-arrow {
|
|
2393
|
+
flex-shrink: 0;
|
|
2394
|
+
width: 14px;
|
|
2395
|
+
text-align: center;
|
|
2396
|
+
font-size: 0.65rem;
|
|
2397
|
+
color: var(--text-secondary);
|
|
2398
|
+
transition: transform 0.15s ease;
|
|
2399
|
+
display: inline-block;
|
|
2400
|
+
}
|
|
2401
|
+
|
|
2402
|
+
.file-tree-arrow.expanded {
|
|
2403
|
+
transform: rotate(90deg);
|
|
2404
|
+
}
|
|
2405
|
+
|
|
2406
|
+
.file-tree-file-icon {
|
|
2407
|
+
flex-shrink: 0;
|
|
2408
|
+
width: 14px;
|
|
2409
|
+
text-align: center;
|
|
2410
|
+
color: var(--text-secondary);
|
|
2411
|
+
display: flex;
|
|
2412
|
+
align-items: center;
|
|
2413
|
+
justify-content: center;
|
|
2414
|
+
}
|
|
2415
|
+
|
|
2416
|
+
.file-tree-name {
|
|
2417
|
+
flex: 1;
|
|
2418
|
+
min-width: 0;
|
|
2419
|
+
overflow: hidden;
|
|
2420
|
+
text-overflow: ellipsis;
|
|
2421
|
+
}
|
|
2422
|
+
|
|
2423
|
+
.file-tree-spinner {
|
|
2424
|
+
width: 12px;
|
|
2425
|
+
height: 12px;
|
|
2426
|
+
border: 2px solid var(--border);
|
|
2427
|
+
border-top-color: var(--accent);
|
|
2428
|
+
border-radius: 50%;
|
|
2429
|
+
animation: spin 0.6s linear infinite;
|
|
2430
|
+
flex-shrink: 0;
|
|
2431
|
+
margin-left: auto;
|
|
2432
|
+
}
|
|
2433
|
+
|
|
2434
|
+
@keyframes spin {
|
|
2435
|
+
to { transform: rotate(360deg); }
|
|
2436
|
+
}
|
|
2437
|
+
|
|
2438
|
+
.file-tree-empty {
|
|
2439
|
+
padding: 4px 8px;
|
|
2440
|
+
font-size: 0.75rem;
|
|
2441
|
+
color: var(--text-secondary);
|
|
2442
|
+
font-style: italic;
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
.file-tree-error {
|
|
2446
|
+
padding: 4px 8px;
|
|
2447
|
+
font-size: 0.75rem;
|
|
2448
|
+
color: var(--error, #e74c3c);
|
|
2449
|
+
}
|
|
2450
|
+
|
|
2451
|
+
.file-panel-loading {
|
|
2452
|
+
padding: 1rem;
|
|
2453
|
+
text-align: center;
|
|
2454
|
+
color: var(--text-secondary);
|
|
2455
|
+
font-size: 0.85rem;
|
|
2456
|
+
}
|
|
2457
|
+
|
|
2458
|
+
.file-panel-empty {
|
|
2459
|
+
padding: 1rem;
|
|
2460
|
+
text-align: center;
|
|
2461
|
+
color: var(--text-secondary);
|
|
2462
|
+
font-size: 0.85rem;
|
|
2463
|
+
}
|
|
2464
|
+
|
|
2465
|
+
/* ── File Context Menu ── */
|
|
2466
|
+
.file-context-menu {
|
|
2467
|
+
position: fixed;
|
|
2468
|
+
z-index: 200;
|
|
2469
|
+
background: var(--bg-secondary);
|
|
2470
|
+
border: 1px solid var(--border);
|
|
2471
|
+
border-radius: 6px;
|
|
2472
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
2473
|
+
padding: 4px 0;
|
|
2474
|
+
min-width: 200px;
|
|
2475
|
+
}
|
|
2476
|
+
|
|
2477
|
+
.file-context-item {
|
|
2478
|
+
display: flex;
|
|
2479
|
+
align-items: center;
|
|
2480
|
+
gap: 8px;
|
|
2481
|
+
padding: 8px 12px;
|
|
2482
|
+
font-size: 0.8rem;
|
|
2483
|
+
cursor: pointer;
|
|
2484
|
+
color: var(--text-primary);
|
|
2485
|
+
}
|
|
2486
|
+
|
|
2487
|
+
.file-context-item:hover {
|
|
2488
|
+
background: var(--bg-tertiary);
|
|
2489
|
+
}
|
|
2490
|
+
|
|
2491
|
+
.file-context-item svg {
|
|
2492
|
+
flex-shrink: 0;
|
|
2493
|
+
color: var(--text-secondary);
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
/* ── File panel transition (Vue <Transition>) ── */
|
|
2497
|
+
.file-panel-enter-active,
|
|
2498
|
+
.file-panel-leave-active {
|
|
2499
|
+
transition: width 0.2s ease, opacity 0.15s ease;
|
|
2500
|
+
overflow: hidden;
|
|
2501
|
+
}
|
|
2502
|
+
.file-panel-enter-from,
|
|
2503
|
+
.file-panel-leave-to {
|
|
2504
|
+
width: 0 !important;
|
|
2505
|
+
opacity: 0;
|
|
2506
|
+
}
|
|
2507
|
+
|
|
2508
|
+
/* ── Mobile file browser in sidebar ── */
|
|
2509
|
+
.file-panel-mobile {
|
|
2510
|
+
display: flex;
|
|
2511
|
+
flex-direction: column;
|
|
2512
|
+
height: 100%;
|
|
2513
|
+
overflow: hidden;
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
.file-panel-mobile-header {
|
|
2517
|
+
display: flex;
|
|
2518
|
+
align-items: center;
|
|
2519
|
+
justify-content: space-between;
|
|
2520
|
+
padding: 0.75rem;
|
|
2521
|
+
border-bottom: 1px solid var(--border);
|
|
2522
|
+
flex-shrink: 0;
|
|
2523
|
+
}
|
|
2524
|
+
|
|
2525
|
+
.file-panel-mobile-back {
|
|
2526
|
+
display: flex;
|
|
2527
|
+
align-items: center;
|
|
2528
|
+
gap: 4px;
|
|
2529
|
+
background: none;
|
|
2530
|
+
border: none;
|
|
2531
|
+
color: var(--accent);
|
|
2532
|
+
cursor: pointer;
|
|
2533
|
+
font-size: 0.85rem;
|
|
2534
|
+
padding: 4px 0;
|
|
2535
|
+
}
|
|
2536
|
+
|
|
2537
|
+
.file-panel-mobile-back:hover {
|
|
2538
|
+
opacity: 0.8;
|
|
2539
|
+
}
|
|
2540
|
+
|
|
2541
|
+
/* ══════════════════════════════════════════
|
|
2542
|
+
Medium screens — file panel narrower
|
|
2543
|
+
══════════════════════════════════════════ */
|
|
2544
|
+
@media (max-width: 1200px) and (min-width: 769px) {
|
|
2545
|
+
.file-panel {
|
|
2546
|
+
max-width: clamp(200px, 20vw, 280px);
|
|
2547
|
+
}
|
|
2548
|
+
}
|
|
2549
|
+
|
|
2239
2550
|
/* ══════════════════════════════════════════
|
|
2240
2551
|
Mobile responsive — max-width: 768px
|
|
2241
2552
|
══════════════════════════════════════════ */
|
|
@@ -2250,6 +2561,11 @@ body {
|
|
|
2250
2561
|
max-width: 100vw;
|
|
2251
2562
|
}
|
|
2252
2563
|
|
|
2564
|
+
/* File panel hidden on mobile — shown inside sidebar instead */
|
|
2565
|
+
.file-panel {
|
|
2566
|
+
display: none;
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2253
2569
|
/* Sidebar as fixed overlay */
|
|
2254
2570
|
.sidebar {
|
|
2255
2571
|
position: fixed;
|