Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,4 @@ ARBOR_ARCHITECTURE_ROADMAP.md
ONLINE_AUTH_HARDENING_PLAN.md
PHASE1_PROGRESS.md
FEATURE_PROPOSALS.md
MIGRATE_RESPONSIVE.md
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,7 @@ Overlay add is disabled by default. To enable it, set `ARBOR_ENABLE_OVERLAY_ADD=
- **Portage News** — reads GLEP 42 news items from the local tree, tracks read state per-item, shows an unread count badge on the dashboard
- **GLSA advisories** — lists security advisories that affect the installed system via `glsa-check`, with severity badges, affected packages, and a quick-fix button
- **Config snapshot** — export `/etc/portage/` (including the `make.profile` symlink) and world files as a zip; import with an automatic timestamped backup of the current config before applying
- **Kernel management** *(beta)* — full lifecycle wizard for source kernels: install or update via Portage with pretend preview and autounmask support; download vanilla kernels directly from kernel.org; browse and clean up `/usr/src/linux-*` source directories; switch the active symlink; 7-step manual build wizard (kernel config with optional `.config` copy from another source, `make modules_install`, `make install`, dracut initramfs generation, `@module-rebuild`, Limine bootloader auto-update); manage bootloaders including a Limine config editor; clean up old `/boot` files and orphaned `/lib/modules` directories; reboot with double confirmation (type `REBOOT` + approval); wizard state persisted in the browser across page reloads and reconnects to in-progress build jobs after refresh. Functional but not yet fully stabilized — always keep a working fallback kernel in your bootloader.
- **Jobs** — view active jobs, reopen live output, browse persisted history with log viewing, delete, and purge actions (stored in SQLite at `/var/lib/arbor/history.db`), and surface recovered orphaned/unknown jobs after daemon restart

## Screenshots
Expand Down
25 changes: 25 additions & 0 deletions backend/arbor/action_security.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,21 @@
"glsa_list",
"eclean_pretend",
"snapshot_export",
"disk_usage",
"kernel_status",
"kernel_available",
"limine_config_read",
}

_PRETEND_COMMANDS = {
"emerge_pretend",
"emerge_uninstall_pretend",
"emerge_depclean_pretend",
"revdep_rebuild_pretend",
"kernel_install_pretend",
"kernel_oldconfig",
"kernel_switch_src",
"kernel_copy_config",
}

_APPROVAL_REQUIRED_COMMANDS = {
Expand All @@ -60,6 +69,22 @@
"history_purge",
"eclean_run",
"snapshot_import",
"revdep_rebuild",
"kernel_install",
"kernel_bootloader_update",
"kernel_boot_clean",
"kernel_modules_clean",
"kernel_src_clean",
"kernel_olddefconfig",
"kernel_build",
"kernel_modules_install",
"kernel_make_install",
"kernel_initramfs",
"kernel_module_rebuild",
"kernel_download_tarball",
"kernel_reboot",
"limine_config_write",
"limine_config_auto_update",
}

_TARGET_KEYS = ("atom", "name", "cfg_file", "job_id")
Expand Down
25 changes: 25 additions & 0 deletions backend/arbor/authorization.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,31 @@ class StepUpRequiredError(PermissionError):
"totp_enroll_begin",
"totp_enroll_confirm",
"totp_disable",
"revdep_rebuild_pretend",
"revdep_rebuild",
"disk_usage",
"kernel_status",
"kernel_available",
"kernel_install_pretend",
"kernel_install",
"kernel_bootloader_update",
"kernel_boot_clean",
"kernel_modules_clean",
"kernel_src_clean",
"kernel_oldconfig",
"kernel_olddefconfig",
"kernel_build",
"kernel_initramfs",
"kernel_module_rebuild",
"kernel_download_tarball",
"kernel_reboot",
"kernel_switch_src",
"kernel_copy_config",
"kernel_modules_install",
"kernel_make_install",
"limine_config_read",
"limine_config_write",
"limine_config_auto_update",
}

_ROLE_ALLOWED_CLASSES = {
Expand Down
Loading
Loading