Commit Graph
8 Commits
Author SHA1 Message Date
ylhan 607d01160f Draw the window's own frame: no menu bar, no title bar
The File/Edit/View/Window menu is a browser's menu, and it brought
accelerators that fought the app's own shortcuts. The OS title bar is gone
too, with minimize/maximize/close drawn in the header beside the language
toggle.

Two things a frameless window has to be told explicitly, both of which fail
as a window that cannot be moved rather than as an error: the header has to
declare itself a drag region, and interactive children have to opt out of it.

Maximise state is read from the window rather than tracked from the last
button press, because the window manager can maximise on its own — a
double-click on the drag region, a shortcut, or snapping to an edge.
2026-09-21 23:33:28 +08:00
ylhan e1193ed032 Use the desktop's own monospace font in the terminal
Read org.gnome.desktop.interface monospace-font-name at startup rather than
hardcoding a family, so the terminal matches GNOME Terminal exactly and keeps
matching after the system font changes.

Pango reports points and CSS wants pixels, so 13 becomes 17.33px — rendering
it as 13px made the terminal a third too small, which reads as the wrong font
rather than the wrong size. The size is the trailing number, since families
may contain digits. Families are always quoted, because an unquoted
"Noto Sans Mono" is a three-family stack to CSS.

Also fixes tests/dial.test.ts, which hardcoded the test server's fingerprint
and so went red after every /tmp cleanup. It now asks ssh-keygen, which is a
stronger assertion anyway: the expected value comes from the reference
implementation rather than from this project's own fingerprint code.
2026-09-21 23:02:20 +08:00
yonglin 2697bff24d docs: document Windows build and packaging 2026-09-17 16:25:55 +08:00
yonglin b9098ece5c windows release支持 2026-09-17 16:16:44 +08:00
ylhan 36d60bab1e Add a Chinese README, and drop two references readers cannot follow
README.zh-CN.md is a full translation rather than a summary: the same 26
sections, the same code blocks. Both files link to each other.

The English README pointed readers at "the implementation plan" twice, for
a file that lives outside the repository. The README has since grown to
cover that design material itself, so the pointers went rather than the
content.
2026-09-17 03:18:16 +08:00
ylhan 070992bcc7 Correct the milestone table: same-host grouping is done 2026-09-17 03:14:29 +08:00
ylhan 1538d42793 Document packaging, and add a script that verifies a package runs
A package broken in the ways that matter still builds, installs and starts;
native modules left inside the asar fail on a user's machine the first time
they open a terminal. scripts/verify-package.mjs extracts the AppImage and
asserts the binaries really are unpacked beside it.

Also records that the deb metadata fields are placeholders.
2026-09-17 03:14:17 +08:00
ylhan 430d78b9f0 NexusTerm: an SSH session manager for Linux
Connection tree with interleaved folders and hosts, tabbed terminals
grouped by host, a pinned local shell, TOFU host key verification, and
credentials held by the OS keyring.

Terminal bytes travel on a per-session MessagePort with credit-based flow
control, so one session running `cat` on a large file cannot stall the
others. Transports reconnect on their own with jittered backoff, keeping
the scrollback and the tab while replacing only the connection beneath.

156 tests, including integration tests against a real sshd and a
migration exercised against a database built in the old shape.
2026-09-17 03:12:24 +08:00