Rename Fleet Profile to Clone Settings per feedback
menus/fleet_profile.sh -> menus/clone_settings.sh. Same functionality (export/apply portable config.json settings between kiosks); renamed the file, every function, the menu label, and the on-disk default profile filename to match. No behavior change. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VfsFSoRqfbRG7XAg5RoE7e
This commit is contained in:
@@ -1255,7 +1255,7 @@ terminal menu and the web UI, so they can't drift apart).
|
||||
Settings): the last of the "destructive trio." Composed from every
|
||||
addon's own `*_do_uninstall` helper instead of re-implementing
|
||||
removal a second time — see "Recent Updates (v2.12.0)" below.
|
||||
- `menus/fleet_profile.sh` — **Fleet Profile** (Advanced): export/apply
|
||||
- `menus/clone_settings.sh` — **Clone Settings** (Advanced): export/apply
|
||||
the portable parts of `config.json` across several kiosks that should
|
||||
share the same settings. New, not a legacy port — deliberately never
|
||||
copies machine-bound credentials (Authelia, WireGuard, Asterisk
|
||||
@@ -1279,7 +1279,7 @@ Audio — none of that has moved yet; Complete Uninstall *is* now
|
||||
migrated, but Upgrade and Full Reinstall are staying put — both are
|
||||
coupled to this file's own heredoc self-extraction of main.js/
|
||||
preload.js/etc, which has no modular equivalent). The legacy Export/
|
||||
Import Settings is also staying as-is; Fleet Profile is a new,
|
||||
Import Settings is also staying as-is; Clone Settings is a new,
|
||||
narrower feature alongside it, not a replacement for it — see "Recent
|
||||
Updates (v2.13.0)" below for why they're not the same thing.
|
||||
Both copies coexist deliberately: the old ones stay until enough of
|
||||
@@ -1316,7 +1316,7 @@ full migration pass.
|
||||
**Current Version:** 2.13.0
|
||||
|
||||
**Recent Updates (v2.13.0):**
|
||||
- **New: Fleet Profile** (Advanced → Fleet Profile) — not a port of the legacy Export/Import Settings, a narrower MVP for the "set up one kiosk, then stamp out a dozen more like it" use case. Exports the portable parts of `config.json` (sites, display/touch/navigation, lockout, password protection) to a JSON file; applies that file to any other already-installed kiosk.
|
||||
- **New: Clone Settings** (Advanced → Clone Settings) — not a port of the legacy Export/Import Settings, a narrower MVP for the "set up one kiosk, then stamp out a dozen more like it" use case. Exports the portable parts of `config.json` (sites, display/touch/navigation, lockout, password protection) to a JSON file; applies that file to any other already-installed kiosk.
|
||||
- **Deliberately does not copy machine-bound credentials**, because copying them would be actively wrong: Authelia's encrypted password is keyed off `/etc/machine-id` and decrypts to garbage on another machine; a WireGuard private key is a device identity, and reusing one across machines is a peer conflict, not a saving; most Asterisk PBXes reject two simultaneous registrations to the same extension. Applying a profile prints these as an explicit "needs a human" checklist instead of silently skipping or cloning them.
|
||||
- Records which addons were present at export time and reports which are/aren't present on the target — doesn't install anything itself. Non-interactive addon installation (so applying a profile needs zero prompts — scriptable over SSH to a whole fleet) is a deliberate follow-up, not bundled into this MVP.
|
||||
|
||||
|
||||
+6
-6
@@ -30,8 +30,8 @@
|
||||
# manual update, fix blank screen), Factory Reset
|
||||
# (menus/advanced_factory_reset.sh), Virtual Consoles
|
||||
# (menus/advanced_virtual_consoles.sh), Emergency Hotspot
|
||||
# (menus/advanced_emergency_hotspot.sh), Fleet Profile
|
||||
# (menus/fleet_profile.sh - export/apply portable settings across
|
||||
# (menus/advanced_emergency_hotspot.sh), Clone Settings
|
||||
# (menus/clone_settings.sh - export/apply portable settings across
|
||||
# several kiosks; deliberately excludes machine-bound credentials
|
||||
# like Authelia/WireGuard/Asterisk Intercom - see the file header).
|
||||
#
|
||||
@@ -87,9 +87,9 @@ source "$SCRIPT_DIR/menus/advanced_emergency_hotspot.sh"
|
||||
# Sourced last: composes the *_do_uninstall/*_do_remove_all/*_do_disable
|
||||
# helpers defined in every file above it.
|
||||
source "$SCRIPT_DIR/menus/complete_uninstall.sh"
|
||||
# shellcheck source=menus/fleet_profile.sh
|
||||
# shellcheck source=menus/clone_settings.sh
|
||||
# Also composes detection helpers (*_is_installed) from every addon above.
|
||||
source "$SCRIPT_DIR/menus/fleet_profile.sh"
|
||||
source "$SCRIPT_DIR/menus/clone_settings.sh"
|
||||
|
||||
################################################################################
|
||||
# Preflight
|
||||
@@ -164,8 +164,8 @@ addons_menu() {
|
||||
}
|
||||
|
||||
advanced_menu_builder() {
|
||||
MENU_LABELS=("Diagnostics" "Electron Maintenance" "Factory Reset" "Virtual Consoles" "Emergency Hotspot" "Fleet Profile")
|
||||
MENU_HANDLERS=(diagnostics_menu advanced_electron_menu advanced_factory_reset_menu advanced_virtual_consoles_menu advanced_emergency_hotspot_menu fleet_profile_menu)
|
||||
MENU_LABELS=("Diagnostics" "Electron Maintenance" "Factory Reset" "Virtual Consoles" "Emergency Hotspot" "Clone Settings")
|
||||
MENU_HANDLERS=(diagnostics_menu advanced_electron_menu advanced_factory_reset_menu advanced_virtual_consoles_menu advanced_emergency_hotspot_menu clone_settings_menu)
|
||||
}
|
||||
|
||||
advanced_menu() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
# menus/fleet_profile.sh - "Fleet Profile" (Advanced): export the portable
|
||||
# menus/clone_settings.sh - "Clone Settings" (Advanced): export the portable
|
||||
# parts of this kiosk's configuration to a JSON file, and apply that file
|
||||
# to other already-installed kiosks - for standing up several kiosks that
|
||||
# should share the same sites/settings.
|
||||
@@ -32,20 +32,20 @@
|
||||
# being sourced first (for the *_is_installed detection helpers).
|
||||
################################################################################
|
||||
|
||||
fleet_profile_status() {
|
||||
clone_settings_status() {
|
||||
echo "Exports/applies sites, display, navigation, and lockout settings"
|
||||
echo "between already-installed kiosks. Addon credentials that are"
|
||||
echo "bound to one machine (Authelia, WireGuard, Asterisk Intercom)"
|
||||
echo "are never copied - see the checklist after applying a profile."
|
||||
}
|
||||
|
||||
fleet_profile_menu_builder() {
|
||||
MENU_LABELS=("Export fleet profile" "Apply fleet profile")
|
||||
MENU_HANDLERS=(action_export_fleet_profile action_apply_fleet_profile)
|
||||
clone_settings_menu_builder() {
|
||||
MENU_LABELS=("Export settings" "Apply settings (clone)")
|
||||
MENU_HANDLERS=(action_export_clone_settings action_apply_clone_settings)
|
||||
}
|
||||
|
||||
fleet_profile_menu() {
|
||||
run_menu "FLEET PROFILE" fleet_profile_menu_builder fleet_profile_status
|
||||
clone_settings_menu() {
|
||||
run_menu "CLONE SETTINGS" clone_settings_menu_builder clone_settings_status
|
||||
}
|
||||
|
||||
################################################################################
|
||||
@@ -53,7 +53,7 @@ fleet_profile_menu() {
|
||||
################################################################################
|
||||
|
||||
# JSON array of addon identifiers currently present on this machine.
|
||||
fleet_detect_addons() {
|
||||
clone_detect_addons() {
|
||||
local addons=()
|
||||
|
||||
cups_is_installed 2>/dev/null && addons+=("cups")
|
||||
@@ -82,7 +82,7 @@ fleet_detect_addons() {
|
||||
# Actions
|
||||
################################################################################
|
||||
|
||||
action_export_fleet_profile() {
|
||||
action_export_clone_settings() {
|
||||
echo
|
||||
if ! sudo -u "$KIOSK_USER" test -f "$CONFIG_PATH" 2>/dev/null; then
|
||||
log_error "config.json not found at $CONFIG_PATH - configure sites/settings first"
|
||||
@@ -91,7 +91,7 @@ action_export_fleet_profile() {
|
||||
fi
|
||||
|
||||
local out_path
|
||||
out_path=$(ask_text "Export profile to" "$HOME/kiosk-fleet-profile.json")
|
||||
out_path=$(ask_text "Export profile to" "$HOME/kiosk-clone-settings.json")
|
||||
|
||||
local raw_config
|
||||
raw_config=$(sudo -u "$KIOSK_USER" cat "$CONFIG_PATH" 2>/dev/null)
|
||||
@@ -105,7 +105,7 @@ action_export_fleet_profile() {
|
||||
settings=$(echo "$raw_config" | jq 'del(.autheliaURL, .autheliaUsername, .autheliaEncryptedPassword)')
|
||||
|
||||
local addons_present
|
||||
addons_present=$(fleet_detect_addons)
|
||||
addons_present=$(clone_detect_addons)
|
||||
|
||||
jq -n \
|
||||
--argjson settings "$settings" \
|
||||
@@ -114,7 +114,7 @@ action_export_fleet_profile() {
|
||||
'{profile_version: 1, script_version: $script_version, settings: $settings, addons_present: $addons}' \
|
||||
> "$out_path"
|
||||
|
||||
log_success "Fleet profile exported to $out_path"
|
||||
log_success "Settings exported to $out_path"
|
||||
echo
|
||||
echo "Included: sites, display/touch/navigation settings, lockout,"
|
||||
echo "password protection (SHA-256 hash only)."
|
||||
@@ -127,7 +127,7 @@ action_export_fleet_profile() {
|
||||
pause
|
||||
}
|
||||
|
||||
action_apply_fleet_profile() {
|
||||
action_apply_clone_settings() {
|
||||
echo
|
||||
local in_path
|
||||
in_path=$(ask_text "Profile file to apply" "")
|
||||
@@ -3,10 +3,10 @@
|
||||
### Ubuntu Based Kiosk v2.13.0 ###
|
||||
################################################################################
|
||||
#
|
||||
# RELEASE v2.13.0 - Fleet Profile: New MVP for Standing Up Several
|
||||
# RELEASE v2.13.0 - Clone Settings: New MVP for Standing Up Several
|
||||
# Kiosks with the Same Settings
|
||||
# - New in ./install.sh's Advanced menu: Fleet Profile
|
||||
# (menus/fleet_profile.sh). Not a port of the legacy Export/Import
|
||||
# - New in ./install.sh's Advanced menu: Clone Settings
|
||||
# (menus/clone_settings.sh). Not a port of the legacy Export/Import
|
||||
# Settings - a narrower, deliberately-scoped feature for the "set up
|
||||
# one kiosk, then stamp out a dozen more like it" use case: export the
|
||||
# portable parts of config.json (sites, display/touch/navigation,
|
||||
|
||||
Reference in New Issue
Block a user