Merge claude/1

This commit is contained in:
librelad 2026-05-30 23:48:19 +01:00
commit e6987b2034
4 changed files with 16 additions and 16 deletions

View File

@ -162,7 +162,7 @@ EOF
icon_file="$app_name.png" icon_file="$app_name.png"
fi fi
if [[ -n "$icon_file" ]]; then if [[ -n "$icon_file" ]]; then
local icons_apps_dir="${containers_dir}libreportal/frontend/icons/apps" local icons_apps_dir="${containers_dir}libreportal/frontend/core/icons/apps"
runFileOp mkdir -p "$icons_apps_dir" runFileOp mkdir -p "$icons_apps_dir"
cp "$dir/$icon_file" "$icons_apps_dir/$icon_file" 2>/dev/null cp "$dir/$icon_file" "$icons_apps_dir/$icon_file" 2>/dev/null
fi fi
@ -212,7 +212,7 @@ EOF
fields+=(" \"backup_live_capable\": $backup_live_capable") fields+=(" \"backup_live_capable\": $backup_live_capable")
[[ -n "$url" ]] && fields+=(" \"url\": \"$url\"") [[ -n "$url" ]] && fields+=(" \"url\": \"$url\"")
[[ -n "$description" ]] && fields+=(" \"description\": \"$description\"") [[ -n "$description" ]] && fields+=(" \"description\": \"$description\"")
[[ -n "$icon_file" ]] && fields+=(" \"icon\": \"/icons/apps/$icon_file\"") [[ -n "$icon_file" ]] && fields+=(" \"icon\": \"/core/icons/apps/$icon_file\"")
[[ -n "$services_json" ]] && fields+=(" \"services\": [$services_json]") [[ -n "$services_json" ]] && fields+=(" \"services\": [$services_json]")
if [[ -n "$config_vars" ]]; then if [[ -n "$config_vars" ]]; then
fields+=(" \"config\": {"$'\n'"${config_vars%,}"$'\n'" }") fields+=(" \"config\": {"$'\n'"${config_vars%,}"$'\n'" }")

View File

@ -26,67 +26,67 @@ webuiCreateAppsCategories() {
{ {
"id": "recommended", "id": "recommended",
"name": "Recommended", "name": "Recommended",
"icon": "/icons/categories/recommended.svg", "icon": "/core/icons/categories/recommended.svg",
"description": "Hand-picked apps to round out your install" "description": "Hand-picked apps to round out your install"
}, },
{ {
"id": "communication", "id": "communication",
"name": "Communication", "name": "Communication",
"icon": "/icons/categories/communication.svg", "icon": "/core/icons/categories/communication.svg",
"description": "Communication and collaboration tools" "description": "Communication and collaboration tools"
}, },
{ {
"id": "development", "id": "development",
"name": "Development", "name": "Development",
"icon": "/icons/categories/development.svg", "icon": "/core/icons/categories/development.svg",
"description": "Development tools and version control" "description": "Development tools and version control"
}, },
{ {
"id": "knowledge", "id": "knowledge",
"name": "Knowledge", "name": "Knowledge",
"icon": "/icons/categories/knowledge.svg", "icon": "/core/icons/categories/knowledge.svg",
"description": "Knowledge management and wikis" "description": "Knowledge management and wikis"
}, },
{ {
"id": "media", "id": "media",
"name": "Media", "name": "Media",
"icon": "/icons/categories/media.svg", "icon": "/core/icons/categories/media.svg",
"description": "Media streaming and entertainment" "description": "Media streaming and entertainment"
}, },
{ {
"id": "monitoring", "id": "monitoring",
"name": "Monitoring", "name": "Monitoring",
"icon": "/icons/categories/monitoring.svg", "icon": "/core/icons/categories/monitoring.svg",
"description": "Metrics, dashboards and observability" "description": "Metrics, dashboards and observability"
}, },
{ {
"id": "networking", "id": "networking",
"name": "Networking", "name": "Networking",
"icon": "/icons/categories/networking.svg", "icon": "/core/icons/categories/networking.svg",
"description": "Network tools and services" "description": "Network tools and services"
}, },
{ {
"id": "productivity", "id": "productivity",
"name": "Productivity", "name": "Productivity",
"icon": "/icons/categories/productivity.svg", "icon": "/core/icons/categories/productivity.svg",
"description": "Productivity and business tools" "description": "Productivity and business tools"
}, },
{ {
"id": "security", "id": "security",
"name": "Security", "name": "Security",
"icon": "/icons/categories/security.svg", "icon": "/core/icons/categories/security.svg",
"description": "Security and privacy tools" "description": "Security and privacy tools"
}, },
{ {
"id": "storage", "id": "storage",
"name": "Storage", "name": "Storage",
"icon": "/icons/categories/storage.svg", "icon": "/core/icons/categories/storage.svg",
"description": "File storage and sharing solutions" "description": "File storage and sharing solutions"
}, },
{ {
"id": "system", "id": "system",
"name": "System", "name": "System",
"icon": "/icons/categories/system.svg", "icon": "/core/icons/categories/system.svg",
"description": "LibrePortal itself and platform-level services" "description": "LibrePortal itself and platform-level services"
} }
] ]

View File

@ -2,7 +2,7 @@
# Sync app icons from container template dirs to the LibrePortal frontend. # Sync app icons from container template dirs to the LibrePortal frontend.
# #
# apps.json references /icons/apps/<app>.<ext> unconditionally (see # apps.json references /core/icons/apps/<app>.<ext> unconditionally (see
# webui_config.sh), so the icon file must physically exist in the frontend # webui_config.sh), so the icon file must physically exist in the frontend
# icons dir or the apps page falls back to the default icon. # icons dir or the apps page falls back to the default icon.
@ -13,7 +13,7 @@ webuiSyncAppIcon() {
local app_name="$1" local app_name="$1"
[[ -z "$app_name" ]] && return 1 [[ -z "$app_name" ]] && return 1
local icons_dir="${containers_dir}libreportal/frontend/icons/apps" local icons_dir="${containers_dir}libreportal/frontend/core/icons/apps"
mkdir -p "$icons_dir" mkdir -p "$icons_dir"
# Icons live in the install template dir — copy_build_context.sh # Icons live in the install template dir — copy_build_context.sh

View File

@ -22,7 +22,7 @@ webuiContainerSetup()
webuiGenerateLibrePortalConfig webuiGenerateLibrePortalConfig
fi fi
# The patch path rewrites apps.json (which references # The patch path rewrites apps.json (which references
# /icons/apps/<app>.svg) but doesn't place the icon file — sync it here # /core/icons/apps/<app>.svg) but doesn't place the icon file — sync it here
# so the apps page never points at a missing icon. The full regen # so the apps page never points at a missing icon. The full regen
# copies icons itself; this is cheap and idempotent regardless. # copies icons itself; this is cheap and idempotent regardless.
if declare -F webuiSyncAppIcon >/dev/null 2>&1; then if declare -F webuiSyncAppIcon >/dev/null 2>&1; then