Commit Graph

22 Commits (878f7b4472c556539b4346452c3df99f0dcc2a3c)

Author SHA1 Message Date
mirivlad 878f7b4472 fix: normalize file modes when packaging a release
release.sh normalized entry order, ownership and mtimes, but not permissions,
so the archives inherited the builder's umask. A host with umask 002 packaged
664/775 while ubuntu-latest packaged 644/755, and the two archives hashed
differently even though every file inside was byte-identical:

  CI     -rw-r--r--  README.md   local  -rw-rw-r--  README.md
  CI     -rwxr-xr-x  sshkeeper   local  -rwxrwxr-x  sshkeeper

Force 755 on directories and the program, 644 on everything else. Building the
same commit under umask 002 and umask 022 now yields identical checksums.

Also correct the reproducibility claim in the release docs. What is reproducible
is the binary, given the same commit and Go version; the archive hash still
depends on the host tar and gzip, so the documented verification step now
compares the extracted binary instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 19:06:12 +08:00
mirivlad 0a02f0fc60 ci: add test, release and nightly workflows
The repository had no automation at all: every release was packaged and
published by hand, and nothing ran tests on a pull request.

- ci.yml runs gofmt, go vet and go test on Linux and macOS, and cross-builds
  all five release targets. macOS is a stated release target but was never
  actually exercised, only cross-compiled.
- release.yml publishes on a v* tag. It gates on `make release-check` so a red
  suite cannot ship, and builds through release.sh rather than duplicating the
  packaging rules, so CI archives stay byte-identical to local ones. A
  hand-written docs/releases/<tag>.md becomes the release body when present,
  otherwise notes are generated from history.
- nightly.yml rebuilds the tip of main on every push and replaces a rolling
  `nightly` prerelease. Prerelease is deliberate: it keeps GitHub's `Latest`
  badge on the newest real release rather than on an untested build.

The rolling tag is why version discovery was pinned to v* in the previous
commit; nightly.yml depends on that filter already being in place.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 18:59:40 +08:00
mirivlad 19ffc4ba5e build: pin version discovery to v* tags
Nightly builds will move a rolling `nightly` tag across main. A plain
`git describe --tags` returns whichever tag is nearest, so once that tag exists
every build — including a real release build — would report its version as
"nightly" and lose the release lineage entirely.

Restrict discovery to `v*` so the rolling tag is invisible to versioning:

  with a nightly tag ahead of v0.3.1
    git describe --tags                → nightly
    git describe --tags --match 'v*'   → v0.3.1-1-gf940087

Land this before the nightly workflow exists, so no build is ever stamped from
the rolling tag.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 18:56:45 +08:00
mirivlad 44156a11af docs: refresh unified tui screenshots
Complete the final task of the unified TUI shell plan, which had been left
undone: the code dropped F1 in favour of Ctrl+H, but README and the guide
still documented F1 as the full-help key in nine places, and the repository
screenshots still showed the pre-shell UI.

- Replace every F1 reference in README.md and docs/guide.md with Ctrl+H,
  including the two ASCII help blocks that mirror runtime output.
- Document the BS/DEL terminal constraint: Ctrl+H is BS (0x08) while xterm
  sends DEL (0x7F) for Backspace, so help and text editing do not collide.
- Recapture all five screenshots from the current binary in a real xterm at
  120x40, 80x24 and 60x16 using an isolated XDG profile.

Runtime verification in xterm confirms Ctrl+H opens full help while seven
Backspace presses correctly trim typed text, and that every captured screen
carries the header, framed content and bottom-anchored footer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 18:33:14 +08:00
mirivlad 4ba2bfce34 docs: plan unified tui shell 2026-08-14 07:44:35 +08:00
mirivlad 7b5919b6c1 docs: specify unified tui shell 2026-08-14 07:43:27 +08:00
mirivlad be800de90b fix: address tui redesign review findings 2026-08-14 04:04:10 +08:00
mirivlad dac7c7d37a docs: refresh tui guide and screenshots 2026-08-14 03:47:31 +08:00
mirivlad 5391612a14 docs: plan tui ux redesign 2026-08-14 03:10:39 +08:00
mirivlad 10bcc07601 fix: allow digits in port forward fields 2026-08-13 22:26:19 +08:00
mirivlad 604a4ecde2 docs: clarify platform and repository status 2026-06-06 11:14:15 +08:00
mirivlad 8e59c3052e feat: add cross-platform release packaging 2026-06-06 10:49:56 +08:00
mirivlad 48c0057d11 docs: recapture screenshots in xfce terminal 2026-06-06 10:31:52 +08:00
mirivlad 90c9f053d4 docs: align guide and screenshots 2026-06-06 03:35:24 +08:00
mirivlad a750b85412 docs: plan partial feature completion 2026-06-06 03:13:21 +08:00
mirivlad 94e10171d2 sshkeeper: v0.2.0 stabilization — dual help screens, route icons, forward UX, tests, docs
- Split help into two modes: ? (quick hotkeys) and F1 (full documentation)
- Add visual route icons: ● direct, → via, ⇒ chain
- Forward type selector: visible radio items with descriptions
- Forward delete: confirmation dialog
- Forward list: column headers (NAME/TYPE/LISTEN/TARGET/ON)
- Footer hints on all screens show ? and F1
- Comprehensive SSH command builder tests (18 new tests)
- Fix duplicate test functions
- Update README.md: install from source as primary, fix tables, repo links
- Update docs/guide.md: split help section, fix tables, fix typos
- All tests pass, build succeeds
2026-06-05 18:19:38 +08:00
mirivlad 216af78d4d sshkeeper: add comprehensive user guide (docs/guide.md) 2026-06-05 15:42:27 +08:00
mirivlad 77a84a487f sshkeeper: v0.2.0 stabilization (route display, forward validation, tunnel UX, README) 2026-06-03 11:23:02 +08:00
mirivlad d66e103c73 Prepare public release docs 2026-05-29 10:52:03 +08:00
mirivlad c2b0e57f3a Add TUI tag and template management 2026-05-28 17:36:50 +08:00
mirivlad 0be1e93bb7 fix: keep server list usable with many servers 2026-05-28 10:03:26 +08:00
mirivlad e1d709396b feat: improve tui and vault handling 2026-05-28 02:25:18 +08:00