100 Commits
Author SHA1 Message Date
Akihiro Suda 6c727759c1 Merge pull request #5649 from thc1006/fix/autostart-disable-error-reporting
fix(autostart): report errors in the macOS disable path
2026-10-28 08:47:17 +09:00
Akihiro Suda 7d7a49eb9e Merge pull request #5672 from jandubois/template-param-set-flags
limactl template: add --set and --param to copy and validate
2026-10-28 07:11:04 +09:00
Akihiro Suda 3d40659a69 Merge pull request #5691 from ump45nose/docs/5688-plain-edit-flag
docs(config/plain): drop nonexistent limactl edit --plain
2026-10-28 06:46:52 +09:00
Akihiro Suda 226770cd74 docs: clarify that only user.passwordlessSudo: false is experimental
The default `user.passwordlessSudo: true` is not experimental.

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-27 19:56:58 +09:00
Akihiro Suda b0a0d62f7e limactl-menu: do not leak limactl list warnings to the terminal
`listInstances` passed the stderr of `limactl list --json` through to the
terminal. On a fresh installation it printed "No instance found. Run
`limactl create` to create an instance." before the TUI started. The
warning stayed hidden behind the TUI and reappeared when the menu
suspended to run `limactl create`, which was confusing.

Buffer the stderr and only include it in the error when the command fails.
Also fix the error from `cmd.Start()` being discarded.

Fixes #5681

Assisted-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-26 17:31:01 +09:00
Akihiro Suda fbd7568083 Merge pull request #5679 from lima-vm/dependabot/go_modules/hack/tools/github.com/golangci/golangci-lint/v2-2.15.0
build(deps): bump github.com/golangci/golangci-lint/v2 from 2.14.0 to 2.15.0 in /hack/tools
2026-10-26 17:11:27 +09:00
Akihiro Suda 6b72522a05 Merge pull request #5677 from jandubois/cncf-maintainers-csv
docs: link the generated CNCF maintainer list
2026-10-26 13:11:08 +09:00
Akihiro Suda 90b55f651d Merge pull request #5664 from mvanhorn/fix/5623-el10-buildkit-xt-comment
fix: load netfilter comment modules for rootless BuildKit on EL10
2026-10-24 21:19:30 +09:00
Akihiro Suda 284b9913fb Merge pull request #5629 from AkihiroSuda/fix-5595
limactl-menu: add a form for creating new instances
2026-10-22 20:58:54 +09:00
Akihiro Suda 516ad5e1fb Merge pull request #5631 from jandubois/ssh-master-fd-limit
hostagent: lower ssh's soft fd limit to 1024 on macOS
2026-10-22 11:46:02 +09:00
Akihiro Suda 02eafe9cfe limactl-menu: add a form for creating new instances
Press `c` or F7 in the instance list (or "Create Instance" in the
empty state) to open a form for the instance name, template, CPUs,
memory, disk, VM type, and whether to start the instance after
creation. Empty fields fall back to the template defaults.

The other `limactl create` flags (mounts, networks, port forwards,
`--set`, `--param`, etc.) are available in the "Details" section, which
is hidden by default. Its fields are generated from the flag
definitions of `limactl create`, and the description of the focused
field is shown below the form.

To minimize free-text input, the values are chosen from dropdowns
whenever the choices are known: the shell completion values of the
flags, the drivers, and the image variants of the selected template.
"Other..." in a dropdown allows entering a value that is not in the
list.

"Create" runs `limactl start` (or `limactl create`) with the
corresponding flags. "Edit" opens an editor for the template YAML with
the form values applied, and then creates the instance from the edited
YAML. In both cases, the menu is suspended while limactl is running, and
the new instance is selected when returning to the menu.

The form can be navigated with the arrow keys as well as with Tab:
Up/Down move between the fields and the buttons (except in an open
dropdown list, and except between the lines of a text area), and
Left/Right move between the buttons.

The single-key shortcuts of the instance list are now only handled
while the list has the focus, so that they do not interfere with typing
into the form.

Fixes #5595

Assisted-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-22 00:43:51 +09:00
Akihiro Suda 3290319cb1 Merge pull request #5635 from jandubois/reverse-sshfs-own-connection
hostagent: run reverse-sshfs mounts without the ControlMaster
2026-10-22 00:43:10 +09:00
Akihiro Suda 63c6a38a22 Merge pull request #5604 from unsuman/fix/krunkit-vsock
krunkit: fix `ssh.overVsock=true` on systemd >= 259 guests
2026-10-22 00:42:19 +09:00
Akihiro Suda 6369556883 Merge pull request #5658 from deltron-fr/fix/limactl-menu-color-contrast
limactl-menu: improve colour contrast across terminal themes
2026-10-22 00:40:15 +09:00
Akihiro Suda a734076e36 templates: update Ubuntu to 26.10
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-21 19:26:58 +09:00
Akihiro Suda affe60b779 CI: run a smoke test for HCS
Merge the windows-plain-wsl2 and windows-plain-qemu jobs into a
windows-plain matrix job, and add HCS to the matrix, running the
plain-Windows smoke test against templates/experimental/hcs.yaml.

The full test suite is not run for HCS, as the HCS driver still lacks
several features (mounts, port forwarding, ...).

Fixes #5465

Assisted-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-21 19:10:38 +09:00
Akihiro Suda 2283c9e5a9 Merge pull request #5302 from youdie006/docs/flaky-ci-runs
docs: document flaky CI runs and re-running failed jobs
2026-10-21 18:51:39 +09:00
Akihiro Suda f08bbaf533 Merge pull request #5640 from deltron-fr/fix/editor-flags
editutil: support editor commands with arguments
2026-10-21 03:56:46 +09:00
Akihiro Suda 0f093a6718 Merge pull request #5642 from thc1006/fix/store-bootsession-marker
fix(store): write the boot session marker atomically
2026-10-21 03:52:00 +09:00
Akihiro Suda f93c1b316c Merge pull request #5648 from albdv/freebsd_location_change
fix: update FreeBSD 15 image download URL
2026-10-19 10:41:22 +09:00
Akihiro Suda 85c72b7ffc Merge pull request #5644 from lima-vm/dependabot/go_modules/golang-x-b3725a4496
build(deps): bump the golang-x group across 1 directory with 3 updates
2026-10-18 21:24:51 +09:00
Akihiro Suda f47461ed7d Merge pull request #5637 from deltron-fr/fix/menu-info-page
display binary units on menu info page
2026-10-16 21:44:15 +09:00
Akihiro Suda 958b2bb495 Merge pull request #5581 from ranacseruet/feat/host-loopback-opt-out
vz: add networkOpts.hostLoopback to block guest access to host loopback
2026-10-16 21:39:43 +09:00
Akihiro Suda 754800acce Merge pull request #5632 from deltron-fr/master
limactl-menu: return to menu after actions
2026-10-16 18:29:02 +09:00
Akihiro Suda 85e65a84aa Merge pull request #5626 from HMM-210/fix/5624-locked-to-protected
fix(limactl-menu): rename [LOCKED] to [PROTECTED]
2026-10-16 01:49:32 +09:00
Akihiro Suda f6158feb9d Merge pull request #5620 from ShauryaBisht/limactl_menu_fix
limactl-menu: show separate titled CPUS and MEMORY columns
2026-10-15 18:38:40 +09:00
Akihiro Suda 86a37d1f29 Merge pull request #5423 from Nashit-h/validate-9p-mount-options
validate 9p securityModel, protocolVersion, and cache
2026-10-15 17:10:40 +09:00
Akihiro Suda ec5f0e043a Merge pull request #4856 from jandubois/nobin-update
Update nobin config with base64 and confusables checking
2026-10-13 14:20:36 +09:00
Akihiro Suda 5a434dff7f Merge pull request #5517 from Glitch-On/docs-antigravity-cli
docs: replace Gemini CLI with Antigravity CLI
2026-10-13 00:14:38 +09:00
Akihiro Suda d1e8c726d5 Merge pull request #5603 from lima-vm/dependabot/go_modules/golang-x-34f4b4c4f3
build(deps): bump golang.org/x/sync from 0.23.0 to 0.24.0 in the golang-x group across 1 directory
2026-10-12 21:34:02 +09:00
Akihiro Suda 6c9920c57d Merge pull request #5485 from unsuman/net/pr3-linux-config-sudoers
networks: generate Linux defaults, validation and sudoers rules
2026-10-11 03:49:34 +09:00
Akihiro Suda b4cad8f47c Merge pull request #5598 from dawudkhan/menu-vmtype-column
fix(menu): show VM type instead of SSH address
2026-10-11 01:36:52 +09:00
Akihiro Suda e4f3c66627 Merge pull request #5596 from nightcityblade/fix/issue-5591
limactl menu: display memory with binary units
2026-10-10 02:57:00 +09:00
Akihiro Suda 47c068fcf4 Merge pull request #5566 from jandubois/wsl2-status-no-relaunch
wsl2: skip the SSH address lookup while no host agent runs
2026-10-09 20:58:38 +09:00
Akihiro Suda 9a16c34a3d Merge pull request #5590 from unsuman/fix/govulncheck
go.mod: upgrade `golang.org/x/net` to v0.60.0
2026-10-09 18:41:20 +09:00
Akihiro Suda 9e978f6fd0 Merge pull request #5580 from lima-vm/dependabot/go_modules/github.com/Code-Hex/vz/v3-3.8.0
build(deps): bump github.com/Code-Hex/vz/v3 from 3.7.1 to 3.8.0
2026-10-08 17:25:42 +09:00
Akihiro Suda 9aeea2f03c Merge pull request #5571 from jandubois/logind-opening-guard
cidata: wait for opening sessions before loginctl terminate-user
2026-10-06 23:25:46 +09:00
Akihiro Suda c2d003c42c Merge pull request #5513 from unsuman/net/pr5-review-fixes
networks: derive the tap name in the helper, validate its path
2026-10-06 23:13:35 +09:00
Akihiro Suda 97b6b86ca4 Merge pull request #5514 from lima-vm/fix/5466
driver(hcs): drop dependency on `qemu-img` for VHDX image conversion
2026-10-03 19:11:57 +09:00
Akihiro Suda c51dd2d882 Merge pull request #5560 from jandubois/wsl2-no-distributions
wsl2: handle a host with no WSL distributions
2026-10-03 10:20:01 +09:00
Akihiro Suda 092feebac2 Merge pull request #5558 from aka-rider/portfwd-current-client
portfwd: dial through the current guest agent client, not the (poissibly stale one) captured at listen time
2026-10-03 10:15:07 +09:00
Akihiro Suda 6c7622fab1 Merge pull request #5563 from kolyshkin/fix-rawhide-url
limactl-url-fedora-rawhide: don't rely on COMPOSE_ID
2026-10-03 09:47:57 +09:00
Akihiro Suda aa87ac07b5 Merge pull request #5562 from AkihiroSuda/dev
templates: update
2026-10-03 08:43:58 +09:00
Akihiro Suda a9d544bfab Merge pull request #5561 from AkihiroSuda/nerdctl
nerdctl: update from v2.4.0 to v2.4.1
2026-10-03 08:21:44 +09:00
Akihiro Suda 05efef9217 templates: update
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-03 07:54:49 +09:00
Akihiro Suda d90f8263c9 nerdctl: update from v2.4.0 to v2.4.1
https://github.com/containerd/nerdctl/releases/tag/v2.4.1

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-03 07:09:21 +09:00
Akihiro Suda b1fab39fd9 Merge pull request #5342 from jandubois/ci-plain-windows-jobs
CI: factor Windows setup into composite actions; add plain-Windows jobs
2026-10-03 05:20:36 +09:00
Akihiro Suda 18a9439e13 autostart: export AutoStartManager interface
golangci-lint v2.14.0 (revive v1.17.0) reports `unexported-return`
for Manager, ManagerWith, and DaemonManager returning the unexported
autoStartManager type.

Assisted-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-10-02 19:34:04 +09:00
Akihiro Suda 3d1c397aa6 Merge pull request #5399 from mvanhorn/fix/5389-disable-llmnr-login-delay
fix: Disable LLMNR to prevent Debian SSH login delay
2026-10-02 19:26:38 +09:00
Akihiro Suda 3d55e50565 Merge pull request #5546 from Sarthak-Shreshtha01/fix/issue-5545
guestagent: close the gRPC connection when a write fails
2026-10-02 19:24:58 +09:00
Akihiro Suda 348603ebd7 Merge pull request #5528 from trodemaster/feat/vz-guest-os-version-log
feat(vz): record the guest macOS version from the restore image
2026-10-02 17:44:42 +09:00
Akihiro Suda 69de9b997b Merge pull request #5554 from somaz94/krunkit-lock-for-instance
krunkit: auto-unlock disk locked to the same instance on startup
2026-10-02 11:14:45 +09:00
Akihiro Suda ea4daa2d7e Merge pull request #5555 from lima-vm/fix/5551
CI: tolerate systemd-binfmt failure on wsl2
2026-10-02 11:13:46 +09:00
Akihiro Suda 83150ae2a5 Merge pull request #5553 from lima-vm/dependabot/github_actions/codeql-action-9d88a12d2b
build(deps): bump the codeql-action group with 3 updates
2026-10-02 11:10:49 +09:00
Akihiro Suda 96d73a5b5f Merge pull request #5299 from jandubois/copytool-native-windows-openssh
copytool: support native Windows OpenSSH
2026-10-02 11:06:38 +09:00
Akihiro Suda 13ae120988 Merge pull request #5548 from jandubois/lint-quick-exclude-deepwiki
CI: lint-quick: ignore deepwiki.com 429
2026-09-30 13:28:17 +09:00
Akihiro Suda 573bada617 Merge pull request #5088 from resker/feature/vz-shutdown-recovery
fix(start): recover from the broken states left by an unclean shutdown
2026-09-30 12:43:25 +09:00
Akihiro Suda c4113bfba6 Merge pull request #5544 from unsuman/fix-5511
driver(qemu): disable the TPM PPI on HVF with QEMU >= 11.0
2026-09-26 09:26:09 +09:00
Akihiro Suda 16f0697be7 Merge pull request #5542 from unsuman/fix-lima-social-link
fix(docs): replace broken Twitter/X URL in README
2026-09-26 09:22:50 +09:00
Akihiro Suda d85078f543 Merge pull request #5509 from AkihiroSuda/nerdctl
nerdctl: update from v2.3.5 to v2.4.0
2026-09-21 00:44:36 +09:00
Akihiro Suda 7068844aab nerdctl: update from v2.3.5 to v2.4.0
https://github.com/containerd/nerdctl/releases/tag/v2.4.0

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-20 14:08:13 +09:00
Akihiro Suda 70f8f52491 Merge pull request #5337 from jandubois/copytool-parse-error
copytool: report a bad path instead of a missing tool
2026-09-19 10:54:05 +09:00
Akihiro Suda 2a5b23ed30 Merge pull request #5341 from jandubois/docs-plain-windows-wsl2
docs: document the Windows host SSH toolchain
2026-09-19 10:38:11 +09:00
Akihiro Suda d574f523da docs: clarify that macOS guests need the host macOS to be newer
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-19 10:33:51 +09:00
Akihiro Suda f0fdfcda5a templates: add macos-27 (Golden Gate)
Add the `macos-27` template for macOS 27 "Golden Gate" (27.0, build 26A428),
and repoint the `macos` aliases (`templates/macos.yaml` and
`templates/_images/macos.yaml`) from `macos-26` to `macos-27`.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-19 10:33:09 +09:00
Akihiro Suda 0e4031d35d hack: accept IPSW URLs without the "fullrestores" path component
Apple changed the IPSW path layout for macOS 27.0; the URL no longer
contains the `fullrestores` path component:

  https://updates.cdn-apple.com/2026FallFCS/<uuid>/UniversalMac_27.0_26A428_Restore.ipsw

The regex in `hack/update-template-macos.sh` did not match this layout, and
`macos_url_spec_from_location` just returns non-zero on a mismatch, so the
script would silently skip such a template rather than fail. Relax the path
part of the regex to accept any depth.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-19 10:33:09 +09:00
Akihiro Suda 0272eeb88a hack/tools: go mod tidy
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-18 15:09:30 +09:00
Akihiro Suda 5539e86df5 Merge pull request #5220 from afbjorklund/sbom
Add SBOM artifact using cyclonedx-gomod
2026-09-17 19:55:52 +09:00
Akihiro Suda 977fe649c4 Merge pull request #5484 from unsuman/net/pr2-lima-net-daemon
networks: add the `lima-privileged-net` daemon and tap device naming
2026-09-17 18:25:32 +09:00
Akihiro Suda 0bf906e00f Merge pull request #5375 from jandubois/apparmor-allow-lima-mount-points
cidata: allow apparmor mounts on every Lima mount point
2026-09-17 14:35:25 +09:00
Akihiro Suda 319d42ac0d Merge pull request #5501 from AkihiroSuda/fix-5500
copytool: make `copy -r` into an existing directory consistent across backends
2026-09-17 14:27:32 +09:00
Akihiro Suda 1e6e2b38c5 copytool: make copy -r into an existing directory consistent across backends
For a recursive copy whose destination is an existing directory, the rsync
backend copied the *contents* of the source directory, while the scp backend
copied the directory itself, like `cp -r` and `scp -r` do. Since `--backend=auto`
prefers rsync and only falls back to scp when the guest has no rsync, the
outcome of the very same command depended on the guest image.

The rsync backend appended a trailing slash to every path of a recursive copy,
and a trailing slash on the source is what tells rsync to copy the contents.
Derive the form to pass to rsync from the destination instead, so that a
trailing slash spelled by the user is no longer significant:

- the destination is an existing directory: `SRC DST`, copying SRC into DST;
- the destination does not exist yet: `SRC/ DST`, making DST a copy of SRC.

A destination that can neither be confirmed nor ruled out to be a directory
fails the copy, instead of being assumed to be missing, which would put the
files in the wrong place again.

This also fixes two related defects of the previous code: `copy -r` of a
non-directory into a destination that does not exist made rsync fail on the
appended slash, and multiple sources were merged into the destination instead
of being copied by name.

Add the missing case to copy.bats (both backends, both directions), which only
covered a plain `SRC DST` copy into a destination that does not exist yet, plus
unit tests for the path rewriting, which needs no VM.

`limactl shell --sync` does want the form that copies the contents, so let it
spell its own paths with a trailing slash and stop setting Options.Recursive,
which for rsync only added a `-r` that `-a` already implies.

Fixes #5500

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-16 15:46:24 +09:00
Akihiro Suda 412133cf0b Merge pull request #5443 from sharanrajt/nested-virt-qemu
qemu: support `nestedVirtualization` with HVF (QEMU 11.1 or later)
2026-09-15 17:38:56 +09:00
Akihiro Suda 3148fe7f2a Merge pull request #5418 from chrisanderton/fsync-drop
hostagent: don't fsync every log record
2026-09-14 15:09:05 +09:00
Akihiro Suda a85206649d Merge pull request #5489 from resker/fix/autostart-lima-home
fix(autostart): propagate LIMA_HOME into generated launchd/systemd units
2026-09-12 04:37:21 +09:00
Akihiro Suda c213f33ac9 Merge pull request #5376 from SABITHSAHEB/networks-varrun-whitespace
validate paths.varRun against an allowlist before findBaseDirectory trims it
2026-09-12 01:23:52 +09:00
Akihiro Suda 95b6316b3e Merge pull request #5192 from AkihiroSuda/fix-4389
Rewrite test-port-forwarding.pl in BATS
2026-09-12 01:22:53 +09:00
Akihiro Suda ba798aceff Merge pull request #5483 from unsuman/net/pr1-lima-net-helper
`lima-privileged-net`: add the privileged network helper for Linux hosts
2026-09-11 23:56:16 +09:00
Akihiro Suda 9645a06541 Merge pull request #5491 from AkihiroSuda/gomodjail
gomodjail: update to v2.0.1, enforce `gomodjail analyze` in CI
2026-09-11 10:07:47 +09:00
Akihiro Suda 78ed85d613 Merge pull request #5494 from alexandear/docs/emeritus-alexandear
MAINTAINERS: move alexandear to emeritus section
2026-09-11 02:15:49 +09:00
Akihiro Suda 19e75908c2 Merge pull request #5336 from trodemaster/upstream-pr/b1-fakecloudinit-clean
feat(vz): add osOpts.Darwin.suppressFirstLoginSetup
2026-09-10 11:16:20 +09:00
Akihiro Suda c80fad98ad gomodjail: update to v2.0.1, enforce gomodjail analyze in CI
gomodjail v2 moves the focus to static analysis: `gomodjail analyze`
verifies that the modules annotated `gomodjail:confined` in go.mod cannot
reach a denied capability (filesystem, network, process execution, raw
syscalls, OS state modification, or cgo).

Add gomodjail to ./hack/tools, add a `gomodjail` lint target, and wire it
into `make lint` and the "Lints" job. Unlike the legacy dynamic mode, this
gate is blocking.

The verdicts are platform-dependent, so the gate is pinned to linux/amd64
and linux/arm64. These are the only platforms that can be analyzed from any
host: analyzing darwin needs a macOS host, as the "vz" driver requires cgo.
The linux verdicts are a superset of the darwin ones anyway. Windows is
deliberately left out, as it would unconfine 18 more modules (go-yaml,
containerd/log, go-runewidth, ...) and weaken the gate for the other
platforms.

`gomodjail fix` downgraded 36 modules to `gomodjail:unconfined` to make the
gate pass. 65 modules remain confined: 37 clean, 28 warning-only.
`make gomodjail-fix` is added for redoing this on dependency bumps, so that
the decision stays visible and reviewable in go.mod.

The macOS job that exercises the legacy dynamic mode (`gomodjail run`) is
kept as an experiment, with its checkout pinned to v2.0.1 instead of HEAD.

Assisted-by: Claude Code (Opus 5)
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-09 12:32:12 +09:00
Akihiro Suda d34af7fde5 Merge pull request #5493 from lima-vm/dependabot/go_modules/al.essio.dev/pkg/shellescape-1.6.1
build(deps): bump al.essio.dev/pkg/shellescape from 1.6.0 to 1.6.1
2026-09-09 12:20:09 +09:00
Akihiro Suda 150118a6e3 Merge pull request #5492 from lima-vm/dependabot/go_modules/golang-x-b740b0382b
build(deps): bump the golang-x group across 1 directory with 2 updates
2026-09-09 12:19:06 +09:00
Akihiro Suda 23fe88bfd1 Merge pull request #5454 from SABITHSAHEB/portfwd-event-strip-control-chars
reject guest agent events that report an invalid IP
2026-09-09 11:06:50 +09:00
Akihiro Suda 85c17e7bc3 Rewrite test-port-forwarding.pl in BATS
Add hack/bats/tests/port-forwarding.bats, covering the same portForwards
rule matrix as hack/test-port-forwarding.pl, with one @test per
forward/ignore scenario, and run it in CI on every host platform:
- Linux: the existing "bats" job
- macOS: the "qemu" job (QEMU driver) and the "vz" job (vz driver)
- Windows: the "windows" job (WSL2 driver) and the "windows-qemu" job

Instead of grepping hostagent log strings and sleeping for a fixed time
(issue 4388), the test records `limactl watch --json` events and waits
for the "forwarding"/"not-forwarding" event of each guest listener
before connecting.

The test honors LIMACTL_CREATE_ARGS (e.g. --vm-type), allows overriding
the base template via LIMA_BATS_PORT_FORWARDING_BASE_TEMPLATE (the WSL2
job uses template:experimental/wsl2), and installs socat in the guest
with whatever package manager the guest image provides.

Notable differences from the Perl script:
- Uses socat on both the host and the guest (the nc/socat choice is
  dropped; CI was already running the socat mode).
- The tests for the `guestPortRange: [305, 309]` rule now actually use
  ports 305-309; the Perl script tested ports 325-329 by mistake, which
  are not covered by any rule.
- Test names are ASCII-only ("->" instead of a Unicode arrow): the MSYS2
  bash mangles multibyte characters inconsistently between bats' test
  registration and dispatch, making every such test fail with
  "bats: unknown test name".
- Guest paths passed to `limactl shell` are embedded in an `sh -c`
  command string instead of being passed as arguments, because MSYS2
  path conversion would rewrite a bare /tmp/... argument to
  C:/msys64/tmp/... before limactl.exe sees it.

hack/test-port-forwarding.pl is removed. The only piece of it that
test-templates.sh still needs is the `guestPort: 8888` rule for the
"CONTAINER_ENGINE run" test, which is now injected with `limactl yq`.
The injected rule replaces any portForwards rules from the template, as
the Perl script did: all instances share the host port namespace, so
e.g. test-misc.yaml's own rules would collide with a concurrently
running instance created from the same template. The modified template
is round-tripped through `limactl tmpl copy --embed` so that it still
passes the template-embedding check (`limactl yq` indents sequences
differently than the embed encoder).

The perl/nc/socat host requirements and the guest netcat/socat installs
are gone; the external host IP is now looked up with getent instead of
perl.

The test passed 56/56 (16 skipped as designed on a Linux host) against
the QEMU driver without KVM.

Fix #4389

Assisted-by: Claude Fable 5 <noreply@anthropic.com>
Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-08 11:41:18 +09:00
Akihiro Suda 1973a8c680 Merge pull request #5462 from iamstarkov/vz-audio-microphone
vz: add audio.microphone to attach a capture stream
2026-09-08 11:16:46 +09:00
Akihiro Suda 867fe93a59 Merge pull request #5487 from unsuman/fix/zizmor
ci(zizmor): use self-repository syntax
2026-09-08 00:03:57 +09:00
Akihiro Suda 936178636f Merge pull request #5307 from AkihiroSuda/docs
website: update hugo-extended, docsy
2026-09-07 13:02:53 +09:00
Akihiro Suda e158ecdd3a website: restore Open Sans font after docsy update
Docsy < 0.12 loaded "Open Sans" from Google Fonts by default
($td-enable-google-fonts: true); newer Docsy flipped the default to
false, so the site silently fell back to system fonts. Re-enable it.

Assisted-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-05 04:15:49 +09:00
Akihiro Suda 4b491279fa website: restore brand colors after docsy update
Docsy >= 0.12 pre-declares Bootstrap color variables in
_variables_forward.scss before importing the project's
_variables_project.scss, so our `!default` assignments of $primary,
$secondary, and $dark were silently ignored, and the site fell back
to the stock Bootstrap palette (blue primary, gray secondary).
Turn them into plain assignments.

Also pin $link-color to $blue: Docsy < 0.12 set it explicitly, but
newer Docsy lets Bootstrap derive it from $primary, which is white
here, making links invisible.

Assisted-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-05 04:15:48 +09:00
Akihiro Suda 4b6d3e8da0 website: update hugo-extended (0.133.1 -> 0.164.0), docsy (0.11.0 -> 0.17.0)
- hugo-extended 0.133.1 -> 0.164.0 (via `npm run update:pkg:hugo`;
  0.164.0 is the latest on npm)
- docsy 0.11.0 -> 0.17.0, as docsy 0.11.0 is incompatible with
  Hugo >= 0.141 (Resource.Err removal):
  - The Hugo module path is now `github.com/google/docsy/theme`; the
    `github.com/google/docsy/dependencies` module is retired.
    Bootstrap and Font Awesome (now v7) come from npm instead, via
    `hugo mod npm pack` (packages/hugoautogen)
  - docsy 0.17 requires Dart Sass >= 1.95 (LibSass is no longer
    supported); add `sass-embedded` to devDependencies, which `npm run`
    puts on PATH for hugo (locally, on Netlify, and in CI)
- hugo.toml: allow HTML content files (`security.allowContent`,
  default-deny since Hugo 0.162) and Node.js parent-directory reads
  for PostCSS/browserslist (`security.node.permissions.allowRead`,
  sandboxed since Hugo 0.161)
- hugo.toml: rename deprecated `includeFiles` -> `files`,
  `languageName` -> `label`; bump min Hugo version to 0.162.0
- Refresh caniuse-lite via `npx update-browserslist-db`

Assisted-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-05 04:15:45 +09:00
Akihiro Suda c502ffaede Merge pull request #5478 from afbjorklund/qemu-screenshot
Implement screenshot for the QEMU driver too
2026-09-05 02:13:34 +09:00
Akihiro Suda d5ca35a502 Merge pull request #5470 from lima-vm/dependabot/go_modules/google.golang.org/grpc-1.83.2
build(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2
2026-09-05 02:11:39 +09:00
Akihiro Suda 0345849202 go.mod: golang.org/x/crypto v0.56.0
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-05 02:09:56 +09:00
Akihiro Suda 71062a6a66 Merge pull request #5476 from lima-vm/dependabot/go_modules/hack/tools/github.com/golangci/golangci-lint/v2-2.13.2
build(deps): bump github.com/golangci/golangci-lint/v2 from 2.13.1 to 2.13.2 in /hack/tools
2026-09-05 01:32:34 +09:00
Akihiro Suda 7700959411 Merge pull request #5477 from lima-vm/dependabot/npm_and_yarn/website/browserslist-4.28.9
build(deps-dev): bump browserslist from 4.24.5 to 4.28.9 in /website
2026-09-05 01:12:24 +09:00
Akihiro Suda a78044b551 Merge pull request #5472 from lima-vm/dependabot/github_actions/codeql-action-64c8a27a46
build(deps): bump the codeql-action group with 3 updates
2026-09-05 01:09:10 +09:00
Akihiro Suda bb3a24fdd1 Merge pull request #5471 from lima-vm/dependabot/go_modules/hack/tools/google.golang.org/grpc-1.83.2
build(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /hack/tools
2026-09-05 01:08:51 +09:00
Akihiro Suda c31b05fcf9 Merge pull request #5469 from lima-vm/dependabot/go_modules/github.com/sirupsen/logrus-1.10.2
build(deps): bump github.com/sirupsen/logrus from 1.10.1 to 1.10.2
2026-09-05 01:08:20 +09:00