mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-26 20:00:08 +00:00
3e01daf76f
* feat(stack): per-stack activity timeline with actor attribution Adds an Activity tab to the Stack Anatomy panel showing a timestamped event log for each stack: deploys, restarts, starts, stops, and image updates, attributed to the user who triggered them or 'system' for automated actions. Backend: - Extends notification_history with actor_username column (idempotent migration) and a partial composite index on (node_id, stack_name, timestamp DESC) for efficient per-stack lookups. - NotificationService.dispatchAlert() accepts an optional actor that is written to the new column. - Success-side dispatchAlert calls added after deploy, bulkContainerOp (start/stop/restart), and update handlers in routes/stacks.ts so user-initiated operations are recorded, not just failures. - New GET /api/stacks/:stackName/activity?limit&before endpoint with stack:read permission gate and cursor-based pagination. Frontend: - StackAnatomyPanel grows an Anatomy / Activity tab pair using the existing Tabs primitive. - StackActivityTimeline fetches the initial 50 events, paginates on demand, and prepends live events arriving over the existing WS notifications stream without duplicates. - NotificationPanel bell dropdown suppresses user-initiated success events (start/stop/restart/deploy/update triggered by a real user), keeping the tray focused on alerts and system events. * docs(stack): add stack activity timeline feature page and internal arch docs * fix(test): add actor_username to notification-routing history assertions dispatchAlert now passes actor_username to addNotificationHistory after the activity timeline PR added the column. Update the two exact-match assertions that were failing because the expected object shape was missing this field.
49 lines
2.6 KiB
Plaintext
49 lines
2.6 KiB
Plaintext
---
|
|
title: Stack Activity
|
|
description: Per-stack event log showing deploys, restarts, config changes, and alerts, each attributed to the user or system that triggered them.
|
|
---
|
|
|
|
The **Activity** tab inside each stack's panel gives you a timestamped record of everything that happened to that stack: deploys, restarts, starts, stops, and image updates. Each entry shows who triggered the event so you always have operational context.
|
|
|
|
<Frame>
|
|
<img src="/images/stack-activity/activity-tab-populated.png" alt="Stack Activity tab showing a restart event attributed to a user" />
|
|
</Frame>
|
|
|
|
## What you'll see
|
|
|
|
Each entry in the activity list contains:
|
|
|
|
| Field | Description |
|
|
|-------|-------------|
|
|
| **Icon** | Category of the event (deploy, restart, stop, start, update) |
|
|
| **Message** | What happened (e.g. "bazarr restarted") |
|
|
| **Attributed to** | `by <username>` for user-initiated actions, omitted for automated system events |
|
|
| **Time** | Relative time since the event (e.g. "just now", "5m ago", "2h ago") |
|
|
|
|
Events are grouped by day: **Today**, **Yesterday**, and **Earlier**.
|
|
|
|
## Who triggered an event
|
|
|
|
Sencho attributes every recorded event to the user who was authenticated when the action was taken. If the action was triggered by an automated process (auto-heal, image update polling, or any other system process) the event is recorded as a system action and the attribution label is omitted from the display.
|
|
|
|
## Accessing the Activity tab
|
|
|
|
1. Click any stack in the left sidebar to open its panel.
|
|
2. Switch to the **Activity** tab in the panel header.
|
|
|
|
The tab loads the most recent 50 events immediately and streams new events live as they happen without a page refresh.
|
|
|
|
## Pagination
|
|
|
|
If a stack has more than 50 recorded events, a **Load more** button appears at the bottom of the list. Each click fetches the next 50 older events.
|
|
|
|
## Troubleshooting
|
|
|
|
**The Activity tab shows "No activity recorded yet"**
|
|
|
|
The activity log is populated by operations performed through Sencho — deploys, restarts, starts, stops, and image updates — since the Sencho instance started tracking them. If you have not performed any of these operations on this stack via Sencho since the feature was enabled, the tab will be empty. Trigger a restart or deploy and the entry appears within a few seconds.
|
|
|
|
**Events appear in the bell notification dropdown**
|
|
|
|
The notification dropdown shows system alerts and error-level events only. User-initiated operational events (start, stop, restart, deploy, update) appear exclusively in the per-stack Activity tab rather than the global notification tray, keeping the tray focused on conditions that need your attention.
|