Commit 3e7b642
feat(desktop): a server manager you can browse and edit (#27)
The app could **create** a connection and nothing else. No list, no edit, no
delete, no rename. "New server" was a one-way door: get a field wrong and your
only recourse was the CLI.
And every field beyond the six in that dialog was unreachable from the window
entirely — **tags** most consequentially, since fleet selection is built on
`--on tag:production` and there was nowhere in the app to set one. Same for
the jump host, a non-standard remote rsync path, notes and agent forwarding.
So: a manager, in the shape the job actually has. Every server on the left
with its tags, every field of the selected one on the right, and New /
Duplicate / Import / Save / Test / Delete. One list shared by both tabs,
because servers are shared — the same list backs the transfer panes and Fleet.
`~/.ssh/config` hosts are listed but not editable; that is somebody else's
file. "Save a copy" turns one into a connection of your own, which is the same
deliberate act the CLI's import performs, and leaves the file untouched.
Editing upserts on the connection id, so changing a name updates the row
rather than leaving a second copy behind.
Also fixes the smaller half of the same complaint. Saving a fleet command
under an existing name has always updated it — the store upserts — but the
control read "Save these settings" either way, so there was no way to tell an
edit from a new one. It now reads "Update <name>" when what is on screen is a
saved command, and prefills the name so one keypress is enough.
The renderer's `Connection` type carried only the eight fields the two-pane
view happened to need, which is why the rest were uneditable: they were absent
from the type, so nothing could render them. It now describes what a
connection actually holds.
517 tests. Verified by driving the built renderer: the list, the tags, the
full form, and selecting a different server loading it for editing.
Claude-Session: https://claude.ai/code/session_01UeSWg1Czsb2Lwxj8vHUnA4
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 6e62210 commit 3e7b642
5 files changed
Lines changed: 557 additions & 8 deletions
File tree
- apps/desktop/src
- app
- components
- lib
- docs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
| |||
90 | 91 | | |
91 | 92 | | |
92 | 93 | | |
| 94 | + | |
93 | 95 | | |
94 | 96 | | |
95 | 97 | | |
| |||
380 | 382 | | |
381 | 383 | | |
382 | 384 | | |
383 | | - | |
| 385 | + | |
384 | 386 | | |
385 | 387 | | |
386 | 388 | | |
387 | | - | |
| 389 | + | |
388 | 390 | | |
389 | 391 | | |
390 | 392 | | |
| |||
408 | 410 | | |
409 | 411 | | |
410 | 412 | | |
411 | | - | |
412 | | - | |
| 413 | + | |
| 414 | + | |
413 | 415 | | |
414 | 416 | | |
415 | 417 | | |
| |||
543 | 545 | | |
544 | 546 | | |
545 | 547 | | |
546 | | - | |
| 548 | + | |
547 | 549 | | |
548 | 550 | | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
549 | 557 | | |
550 | 558 | | |
551 | 559 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
360 | 360 | | |
361 | 361 | | |
362 | 362 | | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
363 | 372 | | |
364 | 373 | | |
365 | 374 | | |
| |||
563 | 572 | | |
564 | 573 | | |
565 | 574 | | |
566 | | - | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
567 | 582 | | |
568 | 583 | | |
569 | 584 | | |
570 | 585 | | |
571 | | - | |
| 586 | + | |
572 | 587 | | |
573 | 588 | | |
574 | 589 | | |
| |||
0 commit comments