diff --git a/docs/superpowers/plans/2026-07-31-live-panel-toggle-consistency.md b/docs/superpowers/plans/2026-07-31-live-panel-toggle-consistency.md
index 075413716..2aff7d594 100644
--- a/docs/superpowers/plans/2026-07-31-live-panel-toggle-consistency.md
+++ b/docs/superpowers/plans/2026-07-31-live-panel-toggle-consistency.md
@@ -351,7 +351,7 @@ git commit -m "feat(ui): add independent M3U panel controls"
- Modify:
`libs/workspace/shell/feature/src/lib/workspace-shell/components/workspace-shell-context-sidebar/workspace-shell-context-sidebar.component.{ts,html,scss,spec.ts}`
-- [ ] **Step 1: Write failing header and layout tests**
+- [x] **Step 1: Write failing header and layout tests**
Assert the Groups header control is last, stays present in loading/empty/zero
search results, and emits an explicit collapse request only on Live/ITV/Radio.
@@ -359,7 +359,7 @@ Assert the context sidebar suppresses Groups at `max-width: 1023px` without
changing intent, retains collapsed DOM as inert, renders one boundary restore
button at wide widths, and transfers focus.
-- [ ] **Step 2: Run and verify RED**
+- [x] **Step 2: Run and verify RED**
```bash
pnpm nx test workspace-shell-feature --runInBand
@@ -367,7 +367,7 @@ pnpm nx test workspace-shell-feature --runInBand
Expected: FAIL because the Groups disclosure contract does not exist.
-- [ ] **Step 3: Add the Groups header output**
+- [x] **Step 3: Add the Groups header output**
Add:
@@ -383,7 +383,7 @@ readonly showLiveGroupsToggle = computed(
Render the translated 40px button last in `.context-header__actions`, with
panel-based test ID and ARIA attributes.
-- [ ] **Step 4: Add state, responsive suppression, restore rail, and focus**
+- [x] **Step 4: Add state, responsive suppression, restore rail, and focus**
Inject `LiveLayoutPanelStateService` from data-access and `BreakpointObserver`.
Resolve effective Groups visibility from intent, master suppression,
@@ -391,7 +391,7 @@ applicability, and `(max-width: 1023px)`. Keep the `aside` mounted with
`inert`/`aria-hidden`, reserve a 40px restore column only when restoration is
currently fulfillable, and focus `live-groups-panel-hide` after restoration.
-- [ ] **Step 5: Run and verify GREEN**
+- [x] **Step 5: Run and verify GREEN**
```bash
pnpm nx test workspace-shell-feature --runInBand
@@ -400,7 +400,7 @@ pnpm nx lint workspace-shell-feature
Expected: both commands exit 0.
-- [ ] **Step 6: Commit**
+- [x] **Step 6: Commit**
```bash
git add libs/workspace/shell/feature
diff --git a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.html b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.html
index 39eefd3e7..29214fac1 100644
--- a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.html
+++ b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.html
@@ -64,6 +64,7 @@
type="button"
mat-icon-button
class="context-header__action"
+ data-testid="manage-live-groups"
(click)="openManageCategories()"
[disabled]="!canManageXtreamCategories()"
[matTooltip]="
@@ -76,6 +77,23 @@
tune
}
+ @if (showLiveGroupsToggle()) {
+
+ }