Skip to content

Docs site, CLI improvements - #46

Merged
eshlox merged 20 commits into
mainfrom
site-astro-starlight
Jun 1, 2026
Merged

Docs site, CLI improvements#46
eshlox merged 20 commits into
mainfrom
site-astro-starlight

Conversation

@eshlox

@eshlox eshlox commented May 31, 2026

Copy link
Copy Markdown
Owner

No description provided.

eshlox added 20 commits May 31, 2026 15:35
Marketing landing page at / and Starlight docs under /docs, published at
dvm.eshlox.net. Migrates the docs/ and examples/ markdown into the site as the
single source of truth and trims the README to point there.

- Astro 6 + Starlight 0.39, built with pnpm
- Custom dark/light landing page with a terminal demo
- Supply-chain hardening per eshlox.net/npm-supply-chain-security
  (minimumReleaseAge, strictDepBuilds, exact pins, frozen-lockfile CI)
- Cloudflare Pages build settings and a site build workflow
The first sync stopped at Lima's proceed/edit/exit prompt. Pass --yes to
limactl start so it proceeds with the generated configuration.
Capture the full output of Lima and setup scripts to per-VM logs under
${XDG_STATE_HOME:-~/.local/state}/dvm/<vm>/ (lima.log, setup.log) and show a
one-line spinner per step that resolves to a green check or, on failure, a red
cross with the VM name, exit code, log path, and the log's last lines.

- Run limactl at --log-level warn; DVM_VERBOSE=1 streams everything live
- Color and spinner disabled when stderr is not a TTY or NO_COLOR is set
- DVM_STATE_DIR overrides the log location
- Smoke test stub skips the global --log-level flag; tests pin DVM_STATE_DIR
- Light-mode accent failed AA as text; split into a brand fill color and a
  text-grade accent (emerald-700, 5.48:1 on white) for the eyebrow, install
  prompt, card icons, docs links, and a theme-aware hero gradient
- Add visible :focus-visible outlines for keyboard navigation
- Honor prefers-reduced-motion (disable cursor blink and hover transforms)
A lighthearted testimonials block that is honest about being made up, with a
link inviting the first real feedback via GitHub Discussions.
Move the fake testimonials to an array in the page frontmatter and render them
in a loop, and grow the set to 40 nerdy/punchy quotes (several at the expense of
developers who treat security as optional).
Add a maintainer credit linking to eshlox.net in the landing-page footer and,
via a Starlight Footer override, on every docs page.
Show them as icon buttons in the docs header (Starlight social) and as links in
the landing-page footer. Mastodon link carries rel=me for profile verification.
Drop the full legal name from the site footers and LICENSE in favor of the
eshlox handle.
- binaries example: add a 'From an upstream RPM' section (sops pattern) and
  add --retry/--connect-timeout flags so downloads survive a flaky network
- troubleshooting: note the harmless systemd-binfmt failure on aarch64 Lima
  images and how to mask it
The pnpm/action-setup@v4 action is blocked by the repo's policy that
only allows actions owned by eshlox or created by GitHub. Corepack ships
with Node and reads the pinned pnpm version from package.json, so no
external action is needed.
- check: drop the shellcheck apt install (preinstalled on ubuntu-24.04)
- check: skip the shell check on docs-only PRs via a git-diff gate; the
  job still runs and succeeds so the required status check is satisfied
- site: pin actions/checkout and actions/setup-node to commit SHAs
  (Dependabot tracks the github-actions ecosystem and will bump them)
- cp: a VM destination that names an existing directory (or a bare
  vm:) now copies the file into it under its own name, instead of
  failing when cat targets a directory path without a trailing slash.
- logs: create the per-VM state dir 700 and step logs 600 via umask,
  since setup-script output captured there may include secrets.
- progress: gate the spinner on the same condition as color, so
  NO_COLOR/TERM=dumb fall back to plain per-step lines as documented.
- tests: cover bare vm: cp resolution and owner-only log permissions.
- docs: describe cp directory-target semantics.
Wire the DVM.zip hand-off into the site and keep the full source set
under brand/.

- Replace favicon.svg with the new mark; add .ico, PNG fallbacks
  (16/32/48/64/192/512), apple-touch-icon, and a web manifest
- Add the 1200x630 OG image with og:image / twitter:image tags on both
  the landing page and the Starlight docs
- Use the transparent-background mark with per-scheme light/dark
  variants for the docs header
- theme-color metas per color scheme
- brand/ holds the full deliverable (lockups, og-image.html source);
  ignore the raw DVM.zip
new: print a single tilde-collapsed line with brace shorthand
(wrote ~/.config/dvm/vms/<vm>/{config.sh,setup.sh}) to match the docs.

stop: run limactl behind the spinner/step UI so it shows a clean
progress indicator and '<vm> stopped' instead of raw Lima INFO/ERRO
output; full output still captured to the per-VM lima log.
Per-VM config.sh now ships resource settings commented out, so VMs inherit
defaults then global config instead of each pinning its own copy. dvm new
scaffolds ~/.config/dvm/config.sh on first run. The global setup script is now
convention-based at ~/.config/dvm/setup.sh, replacing DVM_GLOBAL_SETUP. Default
memory lowered to 2 GiB (defaults now 2 CPU / 2 GiB / 30 GiB).
dvm rm now wraps the Lima stop+delete in a run_step with a spinner and a
"✓ <vm> removed" line, matching sync and stop, and prints config paths
$HOME-shortened to ~ like new. Adds a shared disp_path helper and reuses it in
new.
Default DVM_CPUS to host cores minus a small reserve (1 core up to
4 cores, 2 beyond, floored at 2) instead of a fixed 2. vCPUs are a
time-shared ceiling, not pinned, so a busy VM can burst to most of the
host while idle VMs cost nothing; the reserve keeps the host and
dvm/limactl responsive under load. Document the CPU-vs-memory
distinction and that existing VMs keep their created-with value.
Mirror the short CPU-vs-memory note into the README quickstart and add
a CPUs section to the Lima reference, both noting vCPUs are a
time-shared ceiling (safe to oversubscribe) while memory is reserved.
@eshlox
eshlox merged commit 6bc4c55 into main Jun 1, 2026
2 checks passed
@eshlox
eshlox deleted the site-astro-starlight branch June 1, 2026 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant