Changelog
v0.0.2 — April 2026
Performance
- Batch
pacman -Qqqueries into a single fork with associative-array lookups (00-system-init.sh,03-optimise.sh,99-verify-install.sh) - Add 24-hour TTL cache for mirror ranking — skip re-ranking when mirrorlist is fresh (
00-system-init.sh,08-maintenance.sh) - Replace unbounded
strings.Builderwith fixed-capacity ring buffer (100 lines) in Go installer - Replace sequential
io.MultiReaderwith concurrent stdout/stderr goroutines in Go installer - Resolve
projectRootonce at startup instead of per-task in Go installer
Fixed
vm.swappiness10→133— correct value for ZRAM (compressed-RAM swap benefits from aggressive swapping)vm.dirty_writeback_centisecs/vm.dirty_expire_centisecs6000→1500— better responsiveness without excessive NVMe wear- Removed
autodefragfrom BTRFS mount recommendations — causes write amplification on NVMe with no seek benefit - Removed
pcie_aspm=offfrom kernel cmdline — blanket disable kills 10-15% battery life - Set TLP
PCIE_ASPM_ON_BAT=powersupersave— per-device ASPM management by TLP replaces global kernel disable - Fixed
tests/Dockerfile.unit— missingCOPY tests/helpers/andCOPY tests/contracts/directives
Docs
- Updated all documentation to reflect changed sysctl values, kernel parameters, BTRFS options, and TLP config
- Updated test count from 230 to 303
v1.1.0 — March 2026
Added
--dry-runflag on all scripts — preview actions without modifying the system--helpflag on all scripts — display usage information- 230 unit tests using bats-core with full mock framework (
tests/*.bats) - Docker-based unit test container (
tests/Dockerfile.unit) on Arch Linux - Docker-based integration test container (
tests/Dockerfile.integration) on Arch Linux with real packages - Consolidated CI workflow (
.github/workflows/tests.yml) with ShellCheck, unit tests, and integration tests - Unit tests for all 6 workstation scripts (
tests/w*.bats) - Expanded integration tests covering workstation dry-run and additional core scripts
- Testing section in README, CONTRIBUTING, and scripts overview docs
Fixed
02-wifi-firmware.sh: replaced glob patterns in backup/restore withfindcommands for fish shell compatibility03-optimise.sh: replacedsudo -u "$SUDO_USER"with directHOMEoverride to avoid hanging AUR helpers05-mount-vault.sh: added$USERfallback viawhoamifor environments where$USERis unset (e.g. Docker containers)tests/integration/run-all.sh: fixed((PASS++))arithmetic causingset -eto exit when counter is zero
v1.0.0 — March 2026
Initial public release. All scripts field-tested on MacBook Air 2020 (MacBookAir9,1) running CachyOS kernel 6.19.x.
Added
00-setup-vault.sh— first-time LUKS2 encrypted vault setup with interactive size selection01-thermal-setup.sh— mbpfan installation and fan curve configuration for APP0001:00 ACPI path02-wifi-firmware.sh— BCM4377b firmware verify, backup, restore, and re-install03-optimise.sh— Ice Lake kernel params, TLP drop-in, PipeWire T2 audio config, suspend fix service04-bootloader.sh— Limine management, optional rEFInd install, EFI boot order management05-mount-vault.sh— unlock and mount LUKS2 code vault06-unmount-vault.sh— lock and unmount LUKS2 code vault- VitePress documentation site
Fixed
- Replaced all glob patterns (
applesmc.*) withfindcommands for fish shell compatibility - Removed
sudo -uAUR helper calls (paru/yay hang when called via sudo -u inside sudo session) - Fan sysfs path now detected dynamically via ACPI path instead of hardcoded
applesmc.768 - mbpfan config uses
coretempsensors only (applesmc TC* sensors not available via expected path on 6.19.x)
Known Issues
- Webcam support varies by kernel version — check T2 Linux roadmap
- Thunderbolt-specific features limited