Commit Graph
100 Commits
Author SHA1 Message Date
dw-0 b6a08ce4e5 test(instance_manager): add unit tests for instance manager 2026-07-11 17:49:51 +02:00
dw-0 a3f9ee1faf test(settings): add unit tests for KiauhSettings 2026-07-11 17:49:51 +02:00
dw-0 477d737489 test(services): add unit tests for backup and message services 2026-07-11 17:49:51 +02:00
dw-0 9b93450d98 feat(cli): add headless command-line interface
Add core.cli with argparse-based install/remove/update commands for Klipper,

Moonraker, Mainsail/Fluidd and client configs.

Wire main.py to dispatch to the CLI and fall back to the TUI when no args

are given. Pass CLI arguments through kiauh.sh and skip the update dialog

for non-interactive runs.
2026-07-11 17:49:51 +02:00
dw-0 adf3e292fb feat(moonraker): support headless install/remove/update
Add interactive parameter to MoonrakerSetupService.install/remove/update and

headless tests for the service.

Add unit tests for moonraker utility functions.
2026-07-11 17:49:45 +02:00
dw-0 58e3eb9f06 feat(klipper): support headless install/remove/update
Add interactive parameter to KlipperSetupService.install/remove/update so the

CLI can run without prompts.

Make check_user_groups honor the interactive flag and add headless tests.
2026-07-11 17:49:45 +02:00
dw-0 09dd8298f7 refactor(webui_client): extract install/remove/update logic into services
Replace monolithic client_setup.py, client_config_setup.py and their

remove counterparts with service classes under components/webui_client/services.

Update menus and core install/update menus to call the new services.

Add unit tests for services, client_utils and menu wiring.
2026-07-11 17:49:39 +02:00
dw-0 93e7bb7212 style: remove blank lines from simple_config_parser test imports 2026-07-11 00:27:42 +02:00
dw-0 e4eb36d72f refactor(utils): delegate subprocess and filesystem calls to shared backends
Route fs_utils and sys_utils subprocess/filesystem operations through

core.backends so tests can substitute a fake runner or filesystem from one place.

Make create_python_venv, update_python_pip and update_system_package_lists

raise RuntimeError on failure so callers decide whether to fail fast or recover.

Catch apt update failures in UpdateMenu to keep the menu usable.
2026-07-11 00:27:35 +02:00
dw-0 8b9d172805 test: suppress logger output globally during tests
Add an autouse fixture in kiauh/conftest.py that patches Logger methods

so tests produce clean, assertion-focused output.
2026-07-11 00:27:03 +02:00
dw-0 6aa170fd68 feat(tests): add pluggable subprocess and filesystem backends
Introduce core.backends with CommandRunner and FilesystemBackend protocols plus

default subprocess/local filesystem implementations.

Add fake backends in tests.helpers.fake_backends for isolated unit tests.
2026-07-11 00:26:59 +02:00
dw-0 861cb2bff4 chore: add pytest-cov and CI workflow
Add GitHub Actions workflow for running tests with coverage on Python 3.8 and 3.11.

Configure pytest-cov, coverage thresholds and expand testpaths in pyproject.toml.

Update .gitignore for .ruff_cache, .mypy_cache, *.egg-info and .coverage.
2026-07-11 00:26:49 +02:00
dw-0 7b5522ac94 feat(tests): add unit tests for shared utilities 2026-07-04 12:58:20 +02:00
dw-0 77d6c87aa0 refactor(readme): update section titles and improve table formatting 2026-06-29 22:20:55 +02:00
dw-0 b893ff14f7 chore(readme): remove jetbrains as sponsor 2026-06-29 21:36:58 +02:00
dw-0 43b0994ac5 fix(README_zh): correct Fluidd logo image path in documentation 2026-06-29 21:31:55 +02:00
dw-0 040edc1d4f chore: remove AGENTS.md 2026-06-28 12:50:59 +02:00
dw-0 647a7d9400 feat: add initial AGENTS.md 2026-04-20 21:49:46 +02:00
dw-0 2175bd55f9 refactor: integrate simple_config_parser as internal module 2026-04-19 15:48:06 +02:00
dw-0andGitHub 2f41e52189 fix(core): refresh system package list in update menu after update (#791) 2026-04-19 12:21:17 +02:00
dw-0andGitHub 1f9d4c823a fix(settings_menu): fix regression by checking for the correct condition (#773) 2026-01-31 11:13:37 +01:00
dw-0 c8df9427b3 fix(backup): improve reusability of backup service and enhance file handling
- Refactor `BackupService` instance management for better reuse across methods.
- Avoid redundant file backups by checking for existing files.
- Enhance directory backup logic to handle nested files and directories more efficiently.
- Standardize timestamp initialization for consistent time-based backup operations.
2026-01-31 10:59:53 +01:00
dw-0 6c9a78496a fix(client_utils): ensure proper type conversion and hints for improved safety
- Standardize `str()` wrapping for color-applied strings in various returns.
- Refine type hints for better code clarity and robustness.
- Add null checks for port inputs to prevent potential errors.
2026-01-18 15:58:25 +01:00
dw-0 123ccde378 fix(core): standardize handling of None values for repo and version fields
- Improve local and remote version comparison by replacing default placeholders with None.
- Update repo and branch logic to handle None values consistently.
- Refactor type hints for better readability and accuracy.
2026-01-18 15:49:48 +01:00
dw-0andGitHub 45fde808d2 fix(update_menu): refresh component status after updates (#764)
fix(update_menu): refresh component status after updates to ensure consistency
2026-01-18 14:53:04 +01:00
dw-0andGitHub 8ba134f574 fix(ui): handle missing or empty local version values and standardize defaults (#763) 2026-01-18 14:18:27 +01:00
dw-0 657d919378 chore: extend copyright year to 2026 in all headers 2026-01-11 09:37:17 +01:00
dw-0 e9459bd68e fix(backup): correct backup folder path display in menu 2025-11-09 11:58:03 +01:00
dw-0 ee460663c9 fix(spoolman): ensure proper file handling when adding Spoolman entry 2025-10-28 12:12:36 +01:00
dw-0 6f0e0146ef fix(client): improve version retrieval logic and handle JSON errors 2025-10-27 19:00:08 +01:00
dw-0 229f317025 fix(backup): do not create redundant subdirectory on single file backup 2025-10-27 09:47:09 +01:00
dw-0 48c0ae7227 fix(backup): allow reusing existing backup directory and enhance copy options 2025-10-27 09:30:33 +01:00
dw-0andGitHub 9c7b5fcb10 fix: update scp submodule so duplicate sections are preserved while editing configs (#738)
* fix: improve repository parsing logic to handle empty lines and comments more effectively

* fix: update scp submodule so duplicate sections are preserved while editing configs (#735)

* Squashed 'kiauh/core/submodules/simple_config_parser/' changes from f5eee99..5bc9e0a

5bc9e0a docs: update README
394dd7b refactor!: improve parsing and writing for config (#5)

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: 5bc9e0a50947f1be2f4877a10ab3a632774f82ea

* fix(logging): change warning to error message for config creation failure

* fix(config): improve readability by using descriptive variable names for options

(cherry picked from commit ae0a6b697e)

* Squashed 'kiauh/core/submodules/simple_config_parser/' changes from 5bc9e0a..eef8861

eef8861 refactor: update type hint for fallback parameter to Any
5d04325 Revert "chore: use Optional instead of | and None instead of _UNSET"

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: eef8861f126ddf84012ac8bed77b467926016d3e

* Squashed 'kiauh/core/submodules/simple_config_parser/' changes from eef8861..9c89612

9c89612 fix: correct assignment of raw value in option handling

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: 9c896124cf624e25410714649d306001250482f1

* fix: remove unnecessary whitespace in trusted_clients formatting
2025-10-26 22:03:26 +01:00
dw-0andGitHub 191bdd4874 Revert "fix: update scp submodule so duplicate sections are preserved… (#737)
Revert "fix: update scp submodule so duplicate sections are preserved while editing configs (#735)"

This reverts commit ae0a6b697e.
2025-10-26 18:58:33 +01:00
dw-0andGitHub ae0a6b697e fix: update scp submodule so duplicate sections are preserved while editing configs (#735)
* Squashed 'kiauh/core/submodules/simple_config_parser/' changes from f5eee99..5bc9e0a

5bc9e0a docs: update README
394dd7b refactor!: improve parsing and writing for config (#5)

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: 5bc9e0a50947f1be2f4877a10ab3a632774f82ea

* fix(logging): change warning to error message for config creation failure

* fix(config): improve readability by using descriptive variable names for options
2025-10-26 16:28:33 +01:00
dw-0 b6521fd721 fix(ui): replace top_border and bottom_border functions with inline echo statements for dialogs 2025-10-15 17:05:18 +02:00
dw-0 62b0f4f0f5 chore(deps): replace pyright with mypy in dev requirements 2025-10-13 21:54:35 +02:00
dw-0 fa9a032aad docs(changelog): update changelog for KIAUH v6 release 2025-10-12 20:37:26 +02:00
dw-0 5241d9c21f fix: update README images and paths, add new assets to docs/assets folder 2025-10-12 20:37:19 +02:00
dw-0 31150c98e2 fix: implement custom version parsing for tag sorting 2025-10-11 16:56:02 +02:00
dw-0andGitHub 3317114780 refactor(kiauh): remove legacy scripts, configurations, and assets af… (#729)
refactor(kiauh): remove legacy scripts, configurations, and assets after migration to Python-based KIAUH v6
2025-10-11 16:38:08 +02:00
dw-0 8851bd68f8 feat(ui): update messaging for KIAUH v6 to reflect RC.2 status and encourage migration from v5 2025-10-05 17:20:30 +02:00
dw-0 9168ad88a6 refactor(backup): migrate backup_printer_config_dir to BackupService and update references accordingly 2025-09-30 21:11:48 +02:00
dw-0 03c0d46a2e feat(backup): add fallback to search printer data directories in home directory if no instances found 2025-09-30 20:59:04 +02:00
dw-0 8a8afc60ee feat(backup): integrate backup functionality into multiple extensions and config management 2025-09-30 20:36:42 +02:00
dw-0 5b68710b23 feat(backup): add specific backup methods for Klipper and Moonraker configs 2025-09-29 21:21:55 +02:00
dw-0 6cee0252ee feat(moonraker): sync moonraker changes to SysDepsParser
https://github.com/Arksine/moonraker/commit/206fd4828d34aae5fd6aa95f8dfb31eb1fbb7df1

https://github.com/Arksine/moonraker/commit/72b89d905ee66b621ea3c4c633541e181822b448
2025-09-29 20:29:38 +02:00
dw-0 aff63665de refactor: replace backup_manager with backup_service 2025-09-28 16:14:58 +02:00
dw-0 1ed1e0fc4c chore(dev): replace pyright with mypy and configure mypy rules 2025-09-27 22:44:03 +02:00
dw-0 81ac102644 fix(v5): add back example file for custom Klipper repository management 2025-09-20 15:17:37 +02:00
dw-0andGitHub 89b48168f4 fix: do not drop SAVE_CONFIG block when editing and writing config files (#723)
Squashed 'kiauh/core/submodules/simple_config_parser/' changes from 4a6e5f2..f5eee99

f5eee99 feat: add support for parsing and handling `SAVE_CONFIG` blocks (#4)
8170583 refactor(api)!: `getval` now returns a string, `getvals` returns list of strings

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: f5eee99b0f04717c6bbf30c1256d70ad019223d5
2025-09-06 13:12:20 +02:00
dw-0 12919c7140 feat(extension): add website and repo metadata for extensions, update links formatting in menu
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-08-30 22:02:12 +02:00
dw-0 e590f668e6 fix(common): return default version if no tags exist in get_kiauh_version
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-08-28 18:28:40 +02:00
dw-0andGitHub afdde34721 feat(core): add repository management to settings (#718)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-08-28 16:22:02 +02:00
dw-0andGitHub 393dd1d5bf feat(extension): add OctoPrint installer (#716)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-08-28 16:21:42 +02:00
dw-0 8170057434 fix(moonraker): correctly patch trusted_clients options
fixes #711 #709

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-08-03 10:07:13 +02:00
dw-0andGitHub f95d2586bf fix(webclient): add config.json to moonraker persistent files (#699)
fixes #694

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-06-28 10:12:28 +02:00
dw-0andGitHub f5141e7eff fix(mainsail): check for json configured as instanceDB (#698)
fix(mainsail): check for json configures as instanceDB

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-06-27 22:37:44 +02:00
dw-0andGitHub 33113e72e9 fix: exception raised on pip warning (#688)
pip seems to write to stderr on warnings, caused by retries. even if the process exits with 0.

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-05-31 17:44:02 +02:00
dw-0andGitHub 6f59fd06aa fix: do not upgrade pip before installing packages (#680)
pip 25 seems to introduce some compatibility issues.

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-05-02 20:08:32 +02:00
dw-0 56ea43ccb6 refactor: improve typesafety KiauhSettings
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-04-14 21:19:38 +02:00
dw-0 25e22c993f chore(scp): update SimpleConfigParser
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-04-14 21:15:12 +02:00
dw-0 ead521b377 refactor: replace mypy with pyright
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-04-14 21:07:56 +02:00
dw-0 3c952ccc12 refactor: use sane fallbacks on missing kiauh config options
for some options a warning is print if the fallback is used

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-04-12 15:12:11 +02:00
dw-0 c8f713c00e fix: no validation of optional_speedups option
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-04-12 00:36:34 +02:00
dw-0andGitHub c91816d13f feat(extension): add Spoolman Docker installer (#669)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-30 17:57:46 +02:00
dw-0 1a6f06eaf2 refactor(moonraker): move setup functions into MoonrakerSetupService
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-29 23:00:06 +01:00
dw-0 ea8621af0c refactor(git_utils): remove unnecessary url parameter in git_pull_wrapper
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-29 16:49:08 +01:00
dw-0andGitHub 88742ab496 feat: allow configuration of multiple repos in kiauh.cfg (#668)
* remove existing simple_config_parser directory

* Squashed 'kiauh/core/submodules/simple_config_parser/' content from commit da22e6a

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: da22e6ad9ca4bc121c39dc3bc6c63175a72e78a2

* Squashed 'kiauh/core/submodules/simple_config_parser/' changes from da22e6a..9ae5749

9ae5749 fix: comment out file writing in test
1ac4e3d refactor: improve section writing

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: 9ae574930dfe82107a3712c7c72b3aa777588996

* Squashed 'kiauh/core/submodules/simple_config_parser/' changes from 9ae5749..53e8408

53e8408 fix: do not add a blank line before writing a section header
dc77569 test: add test for removing option before writing

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: 53e840853f12318dcac68196fb74c1843cb75808

* Squashed 'kiauh/core/submodules/simple_config_parser/' changes from 53e8408..4a6e5f2

4a6e5f2 refactor: full rework of the internal storage of the parsed config

git-subtree-dir: kiauh/core/submodules/simple_config_parser
git-subtree-split: 4a6e5f23cb1f298f0a3efbf042186b16c91763c7

* refactor!: switching repos now offers list of repositories to choose from

this rework aligns more with the feature provided in kiauh v5.

Signed-off-by: Dominik Willner <th33xitus@gmail.com>

---------

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-29 16:18:20 +01:00
dw-0 b99e6612e2 feat(ci): add automated release workflow for fast-forward and tagging
Adds a new GitHub Actions workflow that:
- Fast-forwards master branch from develop
- Creates and pushes a new release tag
- Requires manual trigger with tag name input

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-19 21:43:09 +01:00
dw-0anddw-0 cf4e915430 cicd: restrict worflow runs to develop branch
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-13 18:26:23 +01:00
dw-0anddw-0 8f436646cd cicd: add action for fast-forward check and merge (#660)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-09 12:45:46 +01:00
dw-0anddw-0 760f131d1c fix(klipper): handle file access exception for dietpi version file (#658)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-09 08:32:14 +01:00
dw-0anddw-0 41804f0eaa style: ruff format
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-09 08:32:14 +01:00
dw-0anddw-0 d3c9bcc38c refactor(klipper): move setup functions into KlipperSetupService
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-09 08:32:14 +01:00
dw-0anddw-0 7fc36f3e68 feat(moonraker): display moonraker ip address after install
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-03-08 11:41:29 +01:00
dw-0andGitHub 9e0a8a0081 Release v5.1.3
Release v5.1.3
2025-02-23 12:42:44 +01:00
dw-0andGitHub 6082528628 Merge pull request #648 from Arksine/dev-v5-moonraker-deps-fix
fix: add support for Moonraker's dependency requirement specifiers to V5
2025-02-23 12:32:17 +01:00
dw-0andGitHub 7e8f1f3d81 Release v6.0.0-alpha.16
Merge develop into master (Release v6.0.0-alpha.16)
2025-02-22 16:25:49 +01:00
dw-0andGitHub 234cf2c751 chore(copyright): update year (#645)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-02-22 16:21:34 +01:00
dw-0andGitHub 3bc98eed13 fix(moonraker): adapt to new moonraker system_dependency.json syntax (#644)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-02-22 16:19:00 +01:00
dw-0andGitHub 777f5e45e7 master -> develop
master -> develop
2025-02-20 21:00:21 +01:00
dw-0andGitHub 5c219ec544 master -> develop (#635) 2025-02-15 11:26:04 +01:00
dw-0 70055e891e Release v6.0.0-alpha.15 2025-02-15 11:17:54 +01:00
dw-0 e3a0a9dec0 Release v6.0.0-alpha.15
fixes #632
2025-02-15 11:15:45 +01:00
dw-0andGitHub 1cf81377ee Release v6.0.0-alpha.14
fixes #632
2025-02-15 11:11:04 +01:00
dw-0andGitHub aa4ea99c5c fix(moonraker): use os-release file to get distro info (#633)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-02-15 11:09:32 +01:00
dw-0andGitHub 0becf9d574 Release v6.0.0-alpha.14
fixes #607
fixes #615
fixes #618
fixes #619
fixes #620
fixes #623
fixes #627
2025-02-09 21:15:42 +01:00
dw-0andGitHub ed1bfcdeb4 fix(moonraker): correctly install ubuntu 24.10 dependencies (#630)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-02-09 21:12:59 +01:00
dw-0andGitHub 033916216c refactor: skip build firmware dependency screen if all are met (#629)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-02-09 17:04:46 +01:00
dw-0andGitHub 2a08e3eb15 refactor: omit port 80 for IP in success message after webclient installation (#618)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-01-18 17:38:40 +01:00
dw-0andGitHub a2a3e92b50 refactor: remove BASE_USER argument from crowsnest install command (#617)
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-01-18 17:38:00 +01:00
dw-0andGitHub a58288e7e3 Release v6.0.0-alpha.13
Merge develop into master (Release v6.0.0-alpha.13)
2025-01-03 22:13:12 +01:00
dw-0andGitHub 3852464ab7 fix: use raw strings for regex parameter in get_string_input (#612)
fixes #602

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-01-03 22:10:39 +01:00
dw-0 4ae5a37ec6 fix: most recent tag not shown correctly in main menu
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-11-24 21:43:10 +01:00
dw-0 935f81aab6 fix: backup fails in case of dangling symlink
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-11-24 21:26:12 +01:00
dw-0 91cba3637e readme: update README.md
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-11-23 21:12:35 +01:00
dw-0 3fc190ff25 fix: actually raise exception on empty config value
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-11-10 21:15:08 +01:00
dw-0 6ff45aab41 refactor: implement basic input validation for repo switch feature
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-11-10 20:58:37 +01:00
dw-0 b9c9feef3c refactor: clone repo in repo switch routine only if there is already a repo present
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-11-10 20:14:47 +01:00