* Fix examples/config-sample.json to match the current config format
The sample config has not been valid since the 2023 disk layout rework
and currently fails to parse, so the file the README points users at
cannot be used:
- sector_size was null, but SectorSize became a required object
- partitions were missing the dev_path key, which the parser reads
- the /home size used the Percent unit, which no longer exists
- /home started at 20 GiB while / ended at 20993 MiB, overlapping it
- gfx_driver kept the old "All open-source (default)" value
Sizes and keys now mirror what the installer itself writes when saving
a configuration.
* Cover the example configs with a parsing test
Nothing in the test suite or CI reads examples/, which is how the sample
config could stay broken for years while every other config surface kept
working. Parse both example files through ArchConfigHandler, and check
the partition entries directly since the parser only reaches them when
the configured device exists on the machine, which is never true in CI.
* Fail the partition test when the example config has none
The loops in test_example_config_partitions would not execute if
device_modifications or a device's partitions were empty, so the test
could pass while checking nothing.
* Add tests for SSIDs with space
* Fix WiFi scan drop for spaced SSIDs
The wpa_cli scan_results puts the SSID last, splitting on all whitespace dropped
any network whose name contained spaces.
* Add --share-log flag to upload install.log to paste.rs
* Apply ruff-format to share_log.py
* Rework share-log per review: subcommand, TUI confirmation, truncate large logs
* Replace curl/SysCommand with urllib.request, remove defensive try/except
Per review: use stdlib urllib instead of shelling out to curl,
drop unnecessary try/except around TUI confirmation,
remove tempfile (content is passed directly as bytes).
* Fix TUI imports after ui module was pulled one level up (#4515)
* Decouple share_install_log from TUI module
* Add unit tests for share_install_log function
* Update docs to use share-log subcommand syntax
* Add Pacman settings submenu with Color and ParallelDownloads
Replace the standalone Parallel Downloads menu item with a Pacman
submenu containing ParallelDownloads (default 5) and Color (default on).
Settings are applied to both live and target system pacman.conf.
Hidden behind --advanced flag.
Backward compatible with old configs using "parallel_downloads" key.
* Skip _apply_to_live when user exits Pacman menu without changes
* Use TypedDict for PacmanConfiguration serialization
* Show Pacman menu by default, keep ParallelDownloads behind --advanced
* Add configuration for swap algorithm. Backward compatible implementation
* Fix interaction to default to Yes and show (default)
* Fix mypy error
* Any -> str, str
* feedback Enums
* test file
* line length warning
* Renames
* Fix default values in TUI menu for display
* Address feedback
* More feedback, really appreciate it.
* Adapt to use same | None = None pattern
* Pytests
* Add missing import for Zram
* feat(applications): add CUPS installation support
* fix: use translation for print service preview_action
* fix: incorrect action for print service menu item
* chore: refactor naming, printer -> print service
* fix: commit untracked file
* chore: fix formatting to make linter happy
* Add dialog to install EFI bootloader to removable location
This is just for GRUB and Limine for now.
* Move bootloader removable and UKI selections to bootloader submenu
* Update ask_for_bootloader_removable() prompt for ease of translation
* Fix issue where removable and UKI options were always enabled at first
* Minor cosmetic fixes to bootloader removable code
* Add has_removable_support to Bootloader
* Validate UKI and removable options in installer
* Use has_removable_support() where appropriate
* Fix potential AttributeError when bootloader_config is None
* Set default value for bootloader configuration menu item
* Update documentation after EFI removable/Limine changes
* Update limine.conf and non-removable location paths (as per Wiki)
* Do not create fallback boot menu entries when using UKIs on Limine
* Remove useless ask_* wrappers in bootloader_menu
* Improve bootloader menu previews
* Make bootloader menu __init__.py empty
* Adding the option to skip boot loader
* Fixed a variable complaint
* Fixed ruff and mypy
* Fixed mypy
* Fixed mypy
* Fixed import recursion
* Fixed ruff
* Fixed circular imports
* Fixed ruff
* Hiding the menu option for bootloader when --skip-boot is given. Still setting it default to None to avoid it sneaking into the config file or being set behind the scenes causing if statements to trigger.
* Created an Enum None type for Bootloader called NO_BOOTLOADER
* Fixed ruff
* Spelling error
* Hiding NO_BOOTLOADER if --skip-boot is omitted
* Fixed TUI error when bootloader was missing
* Fixed mypy complaints
* Fixed ruff complaint
* Made the Bootloader option visible during --skip-boot and set the default value to NO_BOOTLOADER when --skip-boot is present
* Added --skip-wkd to skip waiting for the arch linux keyring wkd sync
* Package spelling error
* Forgot to add argument to Arguments()
* Added missing --skip-wkd arg to arg tester
* Corrected help text for --skip-wkd