feat: ship nano + micro (non-modal editors) alongside nvim

The image shipped only nvim (EDITOR=nvim), a modal vi-style editor. Add
both a classic and a modern non-modal option so users who aren't
comfortable with vi keybindings have a choice:

- nano (apt): ~2.8 MB installed; deps (libc6, libncursesw6, libtinfo6)
  already present via nvim/less/htop/tmux, so no extra packages pulled in.
- micro: ~12 MB single static Go binary from GitHub releases (same pattern
  as bat/eza/zoxide). Desktop-style keys (Ctrl+S/Ctrl+Q), mouse, syntax
  highlighting. ARG MICRO_VERSION pins; defaults to latest.

Combined ~15 MB (well within the smoke size threshold's ~250 MB headroom,
so no threshold bump). EDITOR stays nvim; both editors are opt-in
(export EDITOR=micro | nano). Uses the canonical micro-editor/micro URL
because the old zyedidia/micro org rename makes /releases/latest redirect
to another /latest, defeating the tag-parsing latest-resolution idiom
(independently verified: old org 302s to micro-editor/micro; both arch
tarballs HTTP 200; latest resolves to v2.0.15).

Base-image change, so it lands on the next base-<hash> rebuild. Updates
README (what's-inside tree + EDITOR note), CHANGELOG (Unreleased/Added),
and smoke-test.sh (nano + micro presence checks). Ported from pi-devbox
3a59e15.
This commit is contained in:
pi
2026-07-01 23:20:49 +02:00
parent acb2096406
commit d9ad634d5a
4 changed files with 59 additions and 1 deletions
+17
View File
@@ -18,6 +18,23 @@ Tags follow **independent semver** (since `v2.0.0`) — they version *this image
now ignored across all repos in the container without per-repo `.gitignore`
entries. The `core.excludesFile` wiring is skipped if the user already set one.
- **Non-modal editors `nano` + `micro` alongside `nvim`.** The image shipped
only nvim (`EDITOR=nvim`), a modal vi-style editor. Added both a classic and
a modern non-modal option for users who don't want vi keybindings:
- **nano** (apt): ~2.8 MB installed; its deps (libc6, libncursesw6,
libtinfo6) are already present via nvim/less/htop/tmux, so no extra
packages are pulled in.
- **micro**: ~12 MB single static Go binary from GitHub releases (same
pattern as bat/eza/zoxide). Desktop-style keys (Ctrl+S/Ctrl+Q), mouse,
syntax highlighting. `ARG MICRO_VERSION` pins; defaults to latest.
Combined ~15 MB (<0.5% of the image). `EDITOR` stays `nvim`; both are opt-in
(`export EDITOR=micro | nano`). Uses the canonical `micro-editor/micro` URL
because the old `zyedidia/micro` org rename makes `/releases/latest` redirect
to another `/latest`, defeating the tag-parsing latest-resolution idiom.
Base-image change, so it lands on the next `base-<hash>` rebuild. Ported from
pi-devbox 3a59e15.
- **Workflow-lint guard (`.gitea/workflows/lint.yml` + `scripts/check-workflow-shell.sh`).**
New cheap (~10s) lint workflow that runs on every push/PR (not just release
tags): a Gitea-accurate shell guard plus pinned `actionlint` + `shellcheck`.