main 6af0a61

CHANGELOG.md RawHistoryFolder

Changelog

All notable changes to this project will be documented in this file.

[Unreleased]

Added

  • Separate encryption password: Allow users to choose between using their account password or a separate password for disk encryption during setup

[0.5.1] - 2026-03-13

Fixed

  • Fallback initramfs warning: configureMkinitcpio now checks for initramfs-<kernel>-fallback.img after mkinitcpio -P and emits a structured warning if absent, surfacing the root cause of limine-snapper-notify failures on first boot
  • jq added to extra packages: jq is now installed as part of the default extra package set

Removed

  • archup-cli post-boot install: Removed archup-cli.sh and its invocation from all.sh; the post-boot model is barebone or Dank Linux only

[0.5.0] - 2026-03-13

Added

  • Go CLI binary: Rewrote the installer as a compiled Go binary using Cobra, Bubble Tea, Bubbles, Huh, and Lipgloss; replaced the bash orchestrator with a Go binary downloader (install/bootstrap.sh)
  • DDD architecture: Introduced internal/domain, internal/application, internal/infrastructure, and internal/interfaces layers with domain entities, ports, and adapters
  • Kernel selection: Added TUI screen for choosing between linux, linux-lts, linux-zen, and linux-cachyos kernels
  • GPU detection: Added GPU detection and automatic driver/package selection during bootstrap
  • Disk encryption toggle: Added TUI screen for enabling LUKS encryption with separate password support
  • Dank Linux opt-in: Added toggle screen before installation and first-boot auto-run via flag file
  • AUR helper and Chaotic-AUR selection: Added TUI screen; Chaotic AUR is always enabled; user selects helper (paru/yay)
  • CachyOS repository support: Added host-side and chroot-side CachyOS repo setup when linux-cachyos kernel is selected
  • Limine bootloader: Replaced systemd-boot with Limine; added nested snapshot entries (//Snapshots), machine-id injection, and a pacman hook for kernel upgrades
  • limine-snapper-sync: Install and enable the limine-snapper-sync service for automatic snapshot boot entries
  • Plymouth theme: Added custom theme with ASCII art PNG logo, centered layout, scaled LUKS password entry, and black background
  • Power management: Added zram-generator for compressed swap and enabled power-profiles-daemon
  • Post-boot first-login hook: Moved DMS opt-in and firewalld configuration to first-login; deploy Starship prompt
  • Installation verification gate: Added post-install verification with structured warnings before completing
  • AMD P-State configuration: Added comprehensive AMD CPU detection and P-State mode selection
  • WiFi credential migration: Migrate iwd credentials to NetworkManager profiles post-install
  • bleu-theme integration: Integrated bleu-theme for CLI tool theming
  • ble.sh: Added Bash Line Editor installation on first boot
  • Wayland runtime libs: Added essential runtime libraries for Wayland desktop sessions
  • Nerd fonts: Added ttf-ibmplex-mono-nerd and ttf-firacode-nerd to extra packages
  • nvtop: Added nvtop GPU monitor to extra packages
  • Audio stack: Added Pipewire (pipewire, pipewire-alsa, pipewire-jack, pipewire-pulse, wireplumber), pamixer, playerctl, and gst plugins
  • Bluetooth utilities: Added bluetui alongside bluez stack
  • WiFi packages: Added wireless-regdb, impala, and broadcom-wl-dkms
  • firewalld: Replaced ufw with firewalld; added post-boot initialization script
  • Local debug mode: Added flag to skip GitHub downloads during VM testing
  • Comprehensive unit tests: Added test suites for preflight, bootstrap, base install, config, and system phases; centralized test helpers

Changed

  • Installer entrypoint: cmd/archup replaces the former bash entry point; build managed with goreleaser and GNU Make
  • TUI architecture: Converted to thin interface layer with flat section navigation, unified keyboard hints, and dedicated view files
  • Shell configuration: Stripped to no-op; all shell setup now handled by cli-tools.sh on first boot
  • Post-boot scripts: Refactored into PostBootScripts list; removed copyShellConfigs; added TTY and network ordering to systemd service
  • Chaotic-AUR setup order: Keyring and mirrorlist installed before adding to pacman.conf to prevent pacman errors
  • Branding: Renamed UEFI boot label and Limine branding from "ArchUp" to "Arch Linux"; updated installer title with version, default hostname arch, and black background

Removed

  • Bash orchestrator scripts: Removed shell scripts superseded by Go handlers (DDD migration cleanup)
  • systemd-boot: Consolidated entirely on Limine bootloader
  • Legacy UI and phases code: Removed dead internal/ui and internal/phases code paths from pre-DDD era
  • UFW: Replaced by firewalld

Fixed

  • Security: Prevented password exposure in process listings and config files
  • NetworkManager: Stopped masking NetworkManager-wait-online to restore DNS readiness; added nss-lookup.target ordering and DNS readiness gate
  • Bootloader: Corrected Limine path/cmdline keys, nested /+ format, default entry, and quiet mode flags
  • Plymouth: Fixed centering, scaling, bullet positions, background color, and lock icon removal
  • Post-boot: Fixed bash_profile self-cleanup placement, HOME-relative log path, TTY log bleed suppression
  • CachyOS: Added pacman-key --init and MkdirAll before CachyOS repo setup
  • AUR helpers: Built from source as non-root user; handle Chaotic-AUR unavailability; used makepkg --packagelist for deterministic installation
  • Chaotic-AUR mirrors: Fetch dynamically from official mirrorlist with fallback support
  • Logging: Added comprehensive UI event logging; prevented stdout leak to TUI
  • CodeRabbit review findings: Fixed PrevSection logic, Branch() empty guard, isEncrypted dedup, DISK_PLACEHOLDER constant, regex pacman uncomment, UEFI-safe limine hook

[0.3.0] - 2025-10-22

Added

  • UFW firewall: Added ufw with default deny incoming policy (configured on first boot)
  • First-boot branding: Display ArchUp logo and completion message during first-boot setup
  • Pacman configuration: Enable color output, parallel downloads, and ILoveCandy progress bar on installed system
  • Fast ISO downloads: Configure ISO pacman with ParallelDownloads=10 before base installation
  • zram swap: Configured zram-generator for compressed in-memory swap with optimized sysctl parameters
  • Broadcom WiFi: Added broadcom-wl driver to base packages for Broadcom wireless support
  • Multilib support: Enabled multilib repository on ISO and installed system with reusable helper

Fixed

  • Download script: Added missing extra.packages to download list
  • UFW setup: Moved firewall configuration to post-boot to avoid kernel module errors in chroot
  • Spinner visibility: Fixed gum spinner not showing during logged phase by redirecting stderr to /dev/tty

Changed

  • Disk selection: Enhanced disk listing with model, serial, and vendor information using JSON output
  • Install URL: Updated to archup.run domain with /install and /i shortcuts
  • archup-cli installation: Switched to go install for user-owned binary and easier self-updates
  • Network manager: Replaced systemd-networkd + iwd with NetworkManager for easier WiFi management via nmcli/nmtui
  • Shell aliases: Added fd as find replacement alias

Fixed

  • Help flag: Moved --help check before any side effects for proper argument parsing
  • Error handling: Fixed ERR trap propagation with set -E and proper cleanup execution
  • Spinner output: Fixed package installation output leaking through spinner display
  • Cleanup flag: Fixed --cleanup flag triggering false errors from pgrep exit codes

[0.2.0] - 2025-10-21

Added

  • Extra packages: Separated optional packages into extra.packages installed after Chaotic-AUR
  • Shell verification: Added shell config verification to post-install verify script
  • Starship config: Added custom Arch-inspired blue color scheme for starship prompt
  • System utilities: Added essential tools (dosfstools, which, wget, unzip, p7zip) to extra packages
  • Bluetooth support: Added bluez and bluez-utils for Bluetooth management
  • OpenSSH: Added openssh to base packages for ssh-keygen and SSH client tools

Changed

  • Package organization: Split packages into base (essential) and extra (optional from Chaotic-AUR)
  • Base system: Reduced base system to essential packages only, moved modern CLI tools to extra
  • Post-boot error handling: Improved error handling with non-critical failure messages
  • Shell config structure: Organized shell files in proper directory structure
  • Plymouth theme: Changed background color to darker blue (#050a14)
  • Logging: Removed stdin redirect to fix gum terminal display
  • Asset URLs: Changed ARCHUP_RAW_URL from dev to main branch to prevent breakage after merge

Fixed

  • Shell config ownership: Fixed chown paths to use chroot-relative paths
  • Chaotic-AUR padding: Fixed message padding consistency
  • Limine bootloader: Fixed kernel panic with non-default kernels (cachyos, zen, lts)
  • AMD P-State selection: Auto-select when only one mode available
  • Bootloader message: Removed unnecessary Limine message since no choice exists
  • Curl-pipe installation: Fixed curl-based one-liner installation by auto-detecting piped input, re-executing with TTY for interactive prompts, and running bootstrap before downloads
  • Cleanup flag: Fixed --cleanup flag to run after helper files are downloaded
  • Verification script: Disabled ERR trap during verification to properly show all failures and prompt user, use dynamic kernel name instead of hardcoded linux, made fallback initramfs optional
  • Package name: Fixed git-delta package name (was incorrectly named 'delta')
  • SSH key generation: Fixed post-boot SSH key generation by including openssh in base packages

[0.1.0] - 2025-10-21

Added

  • Post-boot setup: Dedicated post-boot setup script for first-boot execution
  • archup-cli integration: Added archup-cli installation to first-boot sequence
  • archup-cli builder: Download and install archup-cli from latest GitHub release during installation

Changed

  • Helper script refactoring: Updated helper scripts for improved architecture
  • Build system: Updated Makefile to remove preset paths and add post-boot paths
  • AUR helpers: Consolidated AUR helpers into single unified aur.sh script
  • Installer simplification: Simplified install.sh to use download helper and remove redundant preset logic

Fixed

  • Post-install workflow: Removed duplicate post-boot setup logic from snapper script
  • Installation sequence: Properly integrated post-boot-setup into main installation flow
source
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5## [Unreleased]
6
7### Added
8- **Separate encryption password**: Allow users to choose between using their account password or a separate password for disk encryption during setup
9
10## [0.5.1] - 2026-03-13
11
12### Fixed
13- **Fallback initramfs warning**: `configureMkinitcpio` now checks for `initramfs-<kernel>-fallback.img` after `mkinitcpio -P` and emits a structured warning if absent, surfacing the root cause of `limine-snapper-notify` failures on first boot
14- **jq added to extra packages**: `jq` is now installed as part of the default extra package set
15
16### Removed
17- **archup-cli post-boot install**: Removed `archup-cli.sh` and its invocation from `all.sh`; the post-boot model is barebone or Dank Linux only
18
19## [0.5.0] - 2026-03-13
20
21### Added
22- **Go CLI binary**: Rewrote the installer as a compiled Go binary using Cobra, Bubble Tea, Bubbles, Huh, and Lipgloss; replaced the bash orchestrator with a Go binary downloader (`install/bootstrap.sh`)
23- **DDD architecture**: Introduced `internal/domain`, `internal/application`, `internal/infrastructure`, and `internal/interfaces` layers with domain entities, ports, and adapters
24- **Kernel selection**: Added TUI screen for choosing between linux, linux-lts, linux-zen, and linux-cachyos kernels
25- **GPU detection**: Added GPU detection and automatic driver/package selection during bootstrap
26- **Disk encryption toggle**: Added TUI screen for enabling LUKS encryption with separate password support
27- **Dank Linux opt-in**: Added toggle screen before installation and first-boot auto-run via flag file
28- **AUR helper and Chaotic-AUR selection**: Added TUI screen; Chaotic AUR is always enabled; user selects helper (paru/yay)
29- **CachyOS repository support**: Added host-side and chroot-side CachyOS repo setup when linux-cachyos kernel is selected
30- **Limine bootloader**: Replaced systemd-boot with Limine; added nested snapshot entries (`//Snapshots`), machine-id injection, and a pacman hook for kernel upgrades
31- **limine-snapper-sync**: Install and enable the limine-snapper-sync service for automatic snapshot boot entries
32- **Plymouth theme**: Added custom theme with ASCII art PNG logo, centered layout, scaled LUKS password entry, and black background
33- **Power management**: Added zram-generator for compressed swap and enabled power-profiles-daemon
34- **Post-boot first-login hook**: Moved DMS opt-in and firewalld configuration to first-login; deploy Starship prompt
35- **Installation verification gate**: Added post-install verification with structured warnings before completing
36- **AMD P-State configuration**: Added comprehensive AMD CPU detection and P-State mode selection
37- **WiFi credential migration**: Migrate iwd credentials to NetworkManager profiles post-install
38- **bleu-theme integration**: Integrated bleu-theme for CLI tool theming
39- **ble.sh**: Added Bash Line Editor installation on first boot
40- **Wayland runtime libs**: Added essential runtime libraries for Wayland desktop sessions
41- **Nerd fonts**: Added ttf-ibmplex-mono-nerd and ttf-firacode-nerd to extra packages
42- **nvtop**: Added nvtop GPU monitor to extra packages
43- **Audio stack**: Added Pipewire (pipewire, pipewire-alsa, pipewire-jack, pipewire-pulse, wireplumber), pamixer, playerctl, and gst plugins
44- **Bluetooth utilities**: Added bluetui alongside bluez stack
45- **WiFi packages**: Added wireless-regdb, impala, and broadcom-wl-dkms
46- **firewalld**: Replaced ufw with firewalld; added post-boot initialization script
47- **Local debug mode**: Added flag to skip GitHub downloads during VM testing
48- **Comprehensive unit tests**: Added test suites for preflight, bootstrap, base install, config, and system phases; centralized test helpers
49
50### Changed
51- **Installer entrypoint**: `cmd/archup` replaces the former bash entry point; build managed with goreleaser and GNU Make
52- **TUI architecture**: Converted to thin interface layer with flat section navigation, unified keyboard hints, and dedicated view files
53- **Shell configuration**: Stripped to no-op; all shell setup now handled by `cli-tools.sh` on first boot
54- **Post-boot scripts**: Refactored into `PostBootScripts` list; removed `copyShellConfigs`; added TTY and network ordering to systemd service
55- **Chaotic-AUR setup order**: Keyring and mirrorlist installed before adding to `pacman.conf` to prevent pacman errors
56- **Branding**: Renamed UEFI boot label and Limine branding from "ArchUp" to "Arch Linux"; updated installer title with version, default hostname `arch`, and black background
57
58### Removed
59- **Bash orchestrator scripts**: Removed shell scripts superseded by Go handlers (DDD migration cleanup)
60- **systemd-boot**: Consolidated entirely on Limine bootloader
61- **Legacy UI and phases code**: Removed dead `internal/ui` and `internal/phases` code paths from pre-DDD era
62- **UFW**: Replaced by firewalld
63
64### Fixed
65- **Security**: Prevented password exposure in process listings and config files
66- **NetworkManager**: Stopped masking `NetworkManager-wait-online` to restore DNS readiness; added `nss-lookup.target` ordering and DNS readiness gate
67- **Bootloader**: Corrected Limine path/cmdline keys, nested `/+` format, default entry, and quiet mode flags
68- **Plymouth**: Fixed centering, scaling, bullet positions, background color, and lock icon removal
69- **Post-boot**: Fixed bash_profile self-cleanup placement, HOME-relative log path, TTY log bleed suppression
70- **CachyOS**: Added `pacman-key --init` and `MkdirAll` before CachyOS repo setup
71- **AUR helpers**: Built from source as non-root user; handle Chaotic-AUR unavailability; used `makepkg --packagelist` for deterministic installation
72- **Chaotic-AUR mirrors**: Fetch dynamically from official mirrorlist with fallback support
73- **Logging**: Added comprehensive UI event logging; prevented stdout leak to TUI
74- **CodeRabbit review findings**: Fixed `PrevSection` logic, `Branch()` empty guard, `isEncrypted` dedup, `DISK_PLACEHOLDER` constant, regex pacman uncomment, UEFI-safe limine hook
75
76## [0.3.0] - 2025-10-22
77
78### Added
79- **UFW firewall**: Added ufw with default deny incoming policy (configured on first boot)
80- **First-boot branding**: Display ArchUp logo and completion message during first-boot setup
81- **Pacman configuration**: Enable color output, parallel downloads, and ILoveCandy progress bar on installed system
82- **Fast ISO downloads**: Configure ISO pacman with ParallelDownloads=10 before base installation
83- **zram swap**: Configured zram-generator for compressed in-memory swap with optimized sysctl parameters
84- **Broadcom WiFi**: Added broadcom-wl driver to base packages for Broadcom wireless support
85- **Multilib support**: Enabled multilib repository on ISO and installed system with reusable helper
86
87### Fixed
88- **Download script**: Added missing extra.packages to download list
89- **UFW setup**: Moved firewall configuration to post-boot to avoid kernel module errors in chroot
90- **Spinner visibility**: Fixed gum spinner not showing during logged phase by redirecting stderr to /dev/tty
91
92### Changed
93- **Disk selection**: Enhanced disk listing with model, serial, and vendor information using JSON output
94- **Install URL**: Updated to archup.run domain with /install and /i shortcuts
95- **archup-cli installation**: Switched to go install for user-owned binary and easier self-updates
96- **Network manager**: Replaced systemd-networkd + iwd with NetworkManager for easier WiFi management via nmcli/nmtui
97- **Shell aliases**: Added fd as find replacement alias
98
99### Fixed
100- **Help flag**: Moved --help check before any side effects for proper argument parsing
101- **Error handling**: Fixed ERR trap propagation with set -E and proper cleanup execution
102- **Spinner output**: Fixed package installation output leaking through spinner display
103- **Cleanup flag**: Fixed --cleanup flag triggering false errors from pgrep exit codes
104
105## [0.2.0] - 2025-10-21
106
107### Added
108- **Extra packages**: Separated optional packages into extra.packages installed after Chaotic-AUR
109- **Shell verification**: Added shell config verification to post-install verify script
110- **Starship config**: Added custom Arch-inspired blue color scheme for starship prompt
111- **System utilities**: Added essential tools (dosfstools, which, wget, unzip, p7zip) to extra packages
112- **Bluetooth support**: Added bluez and bluez-utils for Bluetooth management
113- **OpenSSH**: Added openssh to base packages for ssh-keygen and SSH client tools
114
115### Changed
116- **Package organization**: Split packages into base (essential) and extra (optional from Chaotic-AUR)
117- **Base system**: Reduced base system to essential packages only, moved modern CLI tools to extra
118- **Post-boot error handling**: Improved error handling with non-critical failure messages
119- **Shell config structure**: Organized shell files in proper directory structure
120- **Plymouth theme**: Changed background color to darker blue (#050a14)
121- **Logging**: Removed stdin redirect to fix gum terminal display
122- **Asset URLs**: Changed ARCHUP_RAW_URL from dev to main branch to prevent breakage after merge
123
124### Fixed
125- **Shell config ownership**: Fixed chown paths to use chroot-relative paths
126- **Chaotic-AUR padding**: Fixed message padding consistency
127- **Limine bootloader**: Fixed kernel panic with non-default kernels (cachyos, zen, lts)
128- **AMD P-State selection**: Auto-select when only one mode available
129- **Bootloader message**: Removed unnecessary Limine message since no choice exists
130- **Curl-pipe installation**: Fixed curl-based one-liner installation by auto-detecting piped input, re-executing with TTY for interactive prompts, and running bootstrap before downloads
131- **Cleanup flag**: Fixed --cleanup flag to run after helper files are downloaded
132- **Verification script**: Disabled ERR trap during verification to properly show all failures and prompt user, use dynamic kernel name instead of hardcoded linux, made fallback initramfs optional
133- **Package name**: Fixed git-delta package name (was incorrectly named 'delta')
134- **SSH key generation**: Fixed post-boot SSH key generation by including openssh in base packages
135
136## [0.1.0] - 2025-10-21
137
138### Added
139- **Post-boot setup**: Dedicated post-boot setup script for first-boot execution
140- **archup-cli integration**: Added archup-cli installation to first-boot sequence
141- **archup-cli builder**: Download and install archup-cli from latest GitHub release during installation
142
143### Changed
144- **Helper script refactoring**: Updated helper scripts for improved architecture
145- **Build system**: Updated Makefile to remove preset paths and add post-boot paths
146- **AUR helpers**: Consolidated AUR helpers into single unified aur.sh script
147- **Installer simplification**: Simplified install.sh to use download helper and remove redundant preset logic
148
149### Fixed
150- Post-install workflow: Removed duplicate post-boot setup logic from snapper script
151- Installation sequence: Properly integrated post-boot-setup into main installation flow

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 0

    ↑↓ moveenter openesc close