Commit graph

36 commits

Author SHA1 Message Date
agent
2d3b30d078 panel: redesign web UI and make syncing responsive
Web UI (panel/frontend/index.html) rewritten:
- Cards update in place from a single /status poll instead of being rebuilt
  on every action, so open tabs, unsaved compose/route edits, logs and the
  file browser position survive refreshes. Polling speeds up while an
  operation runs and pauses in background tabs; a header indicator shows
  when the panel last synced and detects an expired Authelia session.
- New-app dialog (starter / compose / git), suggested port and domain,
  proper confirm dialogs (the old "OK = keep volumes" remove prompt is gone),
  toasts, an activity drawer with operation output, overflow menu, search,
  status filters, keyboard shortcuts, deep links, dark mode and mobile layout.
- Tabs: overview (containers + routes), compose editor (dirty tracking,
  Ctrl+S), logs with follow, validated routes editor, file browser with
  drag-and-drop upload, backups, and a git source tab (deployed commit,
  check for updates, sync & deploy).

API (panel/panel-api.py):
- ThreadingHTTPServer so a long deploy no longer blocks every other request.
- Per-app operation lock; concurrent writes to a busy app return 409.
- GET /status: all apps, routes and container status in one request
  (statuses gathered in parallel); status reports running/partial/stopped.
- Git sync is fetch + hard reset instead of pull-or-reclone, keeps the stored
  token, reports before/after commits; GET /apps/<name>/repo[?fetch=1].
- Any http(s) git host (e.g. Forgejo), default branch detection, git
  timeouts, no credential prompts, tokens redacted from errors, and manifest
  values validated before being written into the bash-sourced manifest.

panelctl:
- flock around routes.caddy rewrites (util-linux added to the service path).
- deploy returns compose output so failures are visible in the UI.
- inspect-volumes no longer fails for apps without named podman volumes,
  which broke the file browser.

Docs: README/API.md updated; fixed outdated panelctl init examples.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UbWSNkXxZhYf7eqHTyx3Bf
2026-09-26 22:17:07 +00:00
Jakub Dorfman
85e29b8734 added path to routing 2026-05-20 01:07:37 +02:00
Jakub Dorfman
7fd2531501 added support for multiple routes multiple ports 2026-05-20 00:21:25 +02:00
Jakub Dorfman
7399cf83f9 fix: add --build flag to run_compose for deployment and restart commands
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 19:36:02 +02:00
Jakub Dorfman
40503ef5b7 fix: reset leftover variables in cmd_list function
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 18:56:26 +02:00
Jakub Dorfman
f173246581 feat: add repo_url to app data and update frontend to conditionally display Git Pull button
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 18:53:02 +02:00
Jakub Dorfman
4be4ae4144 feat: add repo-pull action to re-clone/pull repository and redeploy app
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 18:47:11 +02:00
Jakub Dorfman
4ec759296b fix: check for git installation before cloning repository in HTTP handler
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 18:38:29 +02:00
Jakub Dorfman
eac94061d0 fix: improve error handling and refactor app initialization process in HTTP handler
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 18:36:11 +02:00
Jakub Dorfman
acff082d09 fix: improve error handling when reading app state in HTTP handler
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 18:34:49 +02:00
Jakub Dorfman
009b8016bb feat: add support for app source selection with GitHub and raw compose options
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 15:39:34 +02:00
Jakub Dorfman
e7c0b56473 feat: enhance volume management with support for multiple volumes and improved API endpoints
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 23:43:17 +02:00
Jakub Dorfman
9b0c3aa190 feat: add volume management features including file upload, download, and clear actions
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 23:30:22 +02:00
Jakub Dorfman
e3e910c9cd fix: streamline backup and route rendering actions in handleAction function
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 23:24:55 +02:00
Jakub Dorfman
45a9aec787 feat: add routing tab and fetch routing details for apps in frontend
fix: update compose commands to remove orphan containers in panelctl

Co-authored-by: Copilot <copilot@github.com>
2026-04-28 23:20:49 +02:00
Jakub Dorfman
93a9a0f42b fix: remove unnecessary sudo rules and adjust permissions for container directories
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 23:09:25 +02:00
Jakub Dorfman
ab4e4ecf09 fix: remove unused maybe_reload_caddy function from panelctl.sh 2026-04-28 20:49:14 +02:00
Jakub Dorfman
dcfa5609c8 fix: add systemd path and service for automatic Caddy reload on route changes 2026-04-28 20:42:12 +02:00
Jakub Dorfman
a48cca2108 fix: implement logging function and replace echo statements with log calls
Co-authored-by: Copilot <copilot@github.com>
2026-04-27 12:35:04 +02:00
Jakub Dorfman
a34eac4235 fix: enhance caddy reload logic to use admin API and improve validation checks 2026-04-27 12:14:12 +02:00
Jakub Dorfman
39e3337b8a fix: adjust padding in .wrap class for improved layout 2026-04-27 12:00:40 +02:00
Jakub Dorfman
7bade10412 fixed permission updates to route.caddy when removing container 2026-04-27 00:27:38 +02:00
Jakub Dorfman
e5a902d562 fixed permissions durring caddy conf render 2026-04-27 00:19:55 +02:00
Jakub Dorfman
e15298fd3d feat: add initial implementation of the frontend panel with app management features
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 23:53:17 +02:00
Jakub Dorfman
8cb90be7cd Update caddy reload command paths in configuration and panelctl scripts
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 23:31:31 +02:00
Jakub Dorfman
bcd9c57691 Refactor route removal in cmd_render_route and cmd_remove to use sed for block deletion
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 23:23:26 +02:00
Jakub Dorfman
4274227417 Ensure grep command in cmd_render_route does not fail if APP_ROUTE_FILE is missing
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 23:09:19 +02:00
Jakub Dorfman
ca6914c162 Enhance deployment logging in cmd_deploy function for better error tracking
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 23:06:03 +02:00
Jakub Dorfman
8ace80a19f Improve error handling in deployment and stopping commands in panelctl.sh
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 22:58:09 +02:00
Jakub Dorfman
57776ab029 Update paths in configuration files to use /var/lib/containers instead of /home/reudy/containers
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 22:40:39 +02:00
Jakub Dorfman
5c67fecd2d Refactor route handling in panelctl.sh and update caddy configuration for improved route management
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 20:41:56 +02:00
Jakub Dorfman
c1aa44c04e Add sudo rules for reudy to allow NOPASSWD systemctl reload for caddy and update panelctl.sh to use docker.io for image reference
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 20:16:42 +02:00
Jakub Dorfman
2fdb2eb5a2 Add runtime environment checks for Podman in panelctl script
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 19:58:50 +02:00
Jakub Dorfman
3b48f38d89 Refactor is_safe_name and read_app_info functions for improved readability
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 19:50:53 +02:00
Jakub Dorfman
ce60fc8f5c Enhance panel-api with compose functionality and update podman integration
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 19:48:35 +02:00
Jakub Dorfman
8986399a92 Add panel-api and panelctl scripts for container management
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 19:42:30 +02:00