mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-10 10:49:35 +00:00
feat(stacks): state-aware sidebar context menu and Open App action (#368)
* feat(stacks): state-aware sidebar context menu and Open App action - Context menu now adapts to stack state: running stacks show Stop/Restart/Update, stopped stacks show Deploy only - Added "Open App" shortcut to open a stack's web UI directly from the sidebar (visible when running with a published port) - Backend bulk status endpoint enriched with mainPort detection - Reduced manual image update check cooldown from 10 to 2 minutes - Rate limit error message now derives from the configured constant * fix(stacks): use const for bulkPorts (prefer-const lint)
This commit is contained in:
@@ -61,19 +61,33 @@ The stack header exposes four actions:
|
||||
|
||||
## Stack context menu
|
||||
|
||||
Right-click or use the **⋮** button on any stack in the sidebar to access:
|
||||
Right-click or use the **⋮** button on any stack in the sidebar. The menu adapts to the stack's current state — only relevant actions are shown.
|
||||
|
||||
**Running stack:**
|
||||
|
||||
<Frame>
|
||||
<img src="/images/stack-management/stack-context-menu.png" alt="Stack context menu" />
|
||||
<img src="/images/stack-management/context-menu-running.png" alt="Context menu for a running stack" />
|
||||
</Frame>
|
||||
|
||||
- **Alerts** - configure metric-based alerting rules for this stack
|
||||
- **Check for updates** - manually trigger an image update check
|
||||
- **Deploy** - run `docker compose up -d`
|
||||
- **Stop** - stop all containers in the stack
|
||||
- **Restart** - restart all containers in the stack
|
||||
- **Update** - pull latest images and recreate containers
|
||||
- **Delete** - stop and remove the stack (admin only)
|
||||
**Stopped stack:**
|
||||
|
||||
<Frame>
|
||||
<img src="/images/stack-management/context-menu-stopped.png" alt="Context menu for a stopped stack" />
|
||||
</Frame>
|
||||
|
||||
### Available actions
|
||||
|
||||
- **Alerts** — configure metric-based alerting rules for this stack
|
||||
- **Labels** — assign organizational labels (Pro)
|
||||
- **Check for updates** — manually trigger an image update check
|
||||
- **Open App** — open the stack's web interface in a new tab (only shown when the stack is running and exposes a web port)
|
||||
- **Deploy** — start the stack (shown when stopped or not yet deployed)
|
||||
- **Stop** — stop all containers (shown when running)
|
||||
- **Restart** — restart all containers (shown when running)
|
||||
- **Update** — pull latest images and recreate containers (shown when running)
|
||||
- **Delete** — stop and remove the stack (admin only)
|
||||
|
||||
All actions are disabled while another operation is in progress on that stack.
|
||||
|
||||
## Scanning for stacks
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 132 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 131 KiB |
@@ -294,3 +294,20 @@ docker logs -f sencho
|
||||
```
|
||||
|
||||
The backend logs all route errors and service failures to stdout. This is the first place to look when the UI shows an error with no useful message.
|
||||
|
||||
## "Open App" doesn't appear in the context menu
|
||||
|
||||
**Symptom:** You right-click a stack in the sidebar but "Open App" is not listed.
|
||||
|
||||
**Cause:** The **Open App** option only appears when both conditions are met:
|
||||
|
||||
1. The stack is **running** (status shows UP).
|
||||
2. At least one container in the stack has a **published port** (a port mapped to the host).
|
||||
|
||||
If your container uses host networking, doesn't expose ports, or only binds to internal Docker networks, the option won't appear. You can still access the app manually by checking the container's port mappings in the stack detail view.
|
||||
|
||||
## "Check for updates" shows rate-limit error
|
||||
|
||||
**Symptom:** Clicking "Check for updates" shows a toast error about waiting before refreshing.
|
||||
|
||||
**Cause:** Manual update checks are rate-limited to prevent excessive requests to container registries. Wait for the cooldown period to elapse before checking again. Automatic background checks run every 6 hours regardless of this limit.
|
||||
|
||||
Reference in New Issue
Block a user