0.3.0 - 2026-04-03#

Added#

  • Add transparent proxy for containers via network.proxy (115276b)

    Route all container TCP/UDP traffic through a transparent proxy using nftables DNAT. Works with any redirect-mode proxy (e.g., sing-box). The proxy address is automatically allowed through LAN isolation rules.

    [network]
    proxy = "${alca:HOST_IP}:1080"

    See network.proxy and Transparent Proxy.

  • Find project root from subdirectories (264d628)

    All commands except init now walk up the directory tree to find .alca.toml. Run alca status, alca up, alca run, etc. from any subdirectory within a project.

    cd ~/myproject/src/pkg
    alca status    # finds ~/myproject/.alca.toml automatically

    See Project Discovery.

  • Add --restart=unless-stopped to project containers (955e262)

    Containers now automatically restart after Docker daemon or system restarts. Containers stopped via alca down stay stopped.

  • Add pre-built Debian+mise Docker image with GHA auto-build (9f948d7)

    A new debian-mise template uses a pre-built image with mise and build-essential already installed, eliminating first-run provisioning time.

    alca init --template debian-mise

Fixed#

  • Fix network isolation race condition on macOS (b843bbd)

    After alca up, nftables rules were loaded asynchronously via SIGHUP to the helper container. Network traffic before rule loading completed was not isolated. Rules are now loaded synchronously — alca up blocks until rules are active.

  • Fix directory deletion in sync resolve (e0dbbb7)

    Resolving a sync conflict that required deleting a directory would fail with “Is a directory”. Now uses recursive deletion.