Elnor Repo Reader

DOC20_R4_3_DELTA_V7_11_6_ALT.md

Current Specs/DOC20/DOC20_R4_3_DELTA_V7_11_6_ALT.md

Generated 2026-06-09T01:23:58.539Z from commit dbaa25962edc11ab30e8d4ca1715f9ae5bf77331. Worktree: clean.

Open text page · Open raw txt · Open path URL

# DOC20 R4.2 → R4.3 Spec Delta: V7.11.6 Alt — Vertical Tabs, Workspaces, Nav Restructure

**Date:** 2026-04-08
**Source:** V7.11.6 Alt mockup session (V1 through V8, 8 iterations)
**Mockup:** `Q_UNIFIED_WORKSPACE_V7_11_6_ALT_V8.jsx` (1,547 lines)
**Revision:** R4.3

---

## CHANGELOG ENTRY

| Date | Context | Sections | Summary |
|------|---------|----------|---------|
| 2026-04-08 | V7.11.6 Alt mockup session — vertical tabs, workspaces, nav restructure, bookmark improvements, icon fixes | §0.4, §1.6 (updated), §1.12 (new), §6.20.2 (rewritten), §6.20.4–6.20.7 (replaced by §6.20.4A), §6.20.7B (new), §6.20.9 (updated), §6.20.13–14 (updated), §6.20.17 (updated), §6.23 (updated), §6.24 (updated), §6.26 (new — Workspaces), §7 (schemas), §8 (commands) | R4.3: Vertical Tabs, Workspaces, Nav Restructure — Nav pane restructured from flat list into three collapsible sections (Pages, Tabs, Workspaces) with accent-blue headers and 2px tinted dividers. Vertical tab list becomes the primary tab management surface (always visible in Nav pane regardless of horizontal tab bar state). New `showHorizontalTabs` toggle hides horizontal tab bar for clean vertical-only workflow; browser auto-switch disabled when horizontal tabs hidden. Chats promoted from dedicated section to expandable Page entry with disclosure arrow (up to 6 items). New Workspaces system for saving/restoring entire view configurations (tabs, split state, browser mode) with auto-save on switch, timestamp-labeled unsaved state, named workspaces with color/pin/rename/delete. Tab group management enhanced: 3-dot menus with rename/color picker/New Tab in Group/Close Group/Ungroup/Delete Group; tab groups button 3-dot dropdown for Create New Tab Group + group list. Individual tab right-click: Close, Duplicate, Pin, Rename, Add to Group submenu, New Group, Remove from Group, Move to Right Pane. Close All per pane in split view. Left nav rail expanded from 6→8 items (added horizontal tabs toggle, moved chat column into views cluster). Sidebar icon differentiated from Columns icon. Incognito icon changed I.Mask→I.EyeOff. Incognito Tab restored to [+] dropdown. NavIcon renders SVG in [+] dropdown Open section. Bookmarks: X-to-delete on hover, right-click rename context menu. Recent Pages: collapsible, default collapsed, X to clear. Search bar labels: "Selection"/"All". Browser tab spacing improved. Status bar tabs count removed. |

---

## §0.4 — Core Design Choices (APPEND)

Add after the split view bullet:

- **Vertical tabs.** The Nav pane's Tabs section is a full vertical tab list that is always visible regardless of whether the horizontal tab bar is shown. The `showHorizontalTabs` toggle (left rail) hides the horizontal tab bar for a clean, vertical-only workflow. When hidden, the browser column does NOT auto-switch modes based on active tab type — user stays in Nav mode unless manually switching. This is the Chrome-equivalent "Show Vertical Tabs" feature, adapted for a workspace that manages more than web pages.
- **Workspaces.** Saved view configurations — all open tabs, tab groups, split view state, active tabs, browser column mode — persist as named workspaces. Auto-save on switch. Unnamed working state displays a timestamp. Workspaces enable instant context-switching between cases, projects, or workflows.
- **Nav pane as scrollable column.** The Nav pane uses a single scrollable column layout (not flex-competing sections). Pages, Tabs, and Workspaces each take their natural height and stack contiguously. No whitespace gaps. The entire column scrolls as one unit when content exceeds browser column height.

---

## §1.6 — Unified Workspace Shell (REPLACE)

Replace the current bullet list with:

The Q Unified Workspace is the primary interface for the entire Q app. The workspace shell provides:

- a **universal tab system** supporting 9 content types (note, doc, web, clips, chat, room, task, todo, utility) with optional Chrome-style horizontal tab bar (R4, R4.3);
- a **vertical tab list** in the Nav pane as the primary tab management surface, with tab groups, search, and per-pane split view management (R4.3);
- a **4-mode browser column** (Nav, Browser, Notes, Web) where the Nav tab is restructured into three collapsible sections: Pages, Tabs, Workspaces (R4.3);
- a **left nav rail** (8 items — Q logo, Quick Command toggle, browser toggle, horizontal tabs toggle, split view toggle, chat column toggle, Activity with badge, Settings) (R4.3 — updated);
- a **session system** for temporal workspace organization;
- a **split view** for side-by-side panes (R4), with Left/Right Pane management in vertical tabs (R4.3);
- a **floating palette** (always-on-top mini workspace, see §1.8) (R4);
- a **workspaces system** for saving and restoring entire view configurations (R4.3).

The workspace shell is defined in §6.20.

### §1.12 — Workspaces System (NEW)

A Workspace is a saved snapshot of the entire view configuration: all open tabs (with their positions and group assignments), tab groups, split view state (on/off, which tabs in which pane, divider position), browser column mode and state, active tab in each pane, and right panel state. Workspaces enable instant context-switching: "I'm working on Henderson. Switch to Brooge." — one click saves the current state and loads the target workspace.

Workspace behavior:
- **Auto-save on switch.** When switching from a named workspace, the current state is silently saved to that workspace. No "do you want to save?" prompts.
- **Unnamed working state.** If the user is not in a named workspace and switches to one, the current state is saved as an unnamed entry displaying a timestamp (e.g., "Apr 8, 3:30 PM"). This entry always sits at the top of the Workspaces list. It is overwritten by each subsequent unnamed save. Right-click → "Save as Workspace…" promotes it to a named workspace.
- **Named workspaces** support rename, color assignment (10-color picker), pin to top, and delete.

See §6.26 for full specification.

---

## §6.20.2 — Left Nav Rail (REPLACE)

The left nav rail contains exactly **8** items organized into sections (R4.3 — updated from 6):

```
┌──────┐
│  Q   │  ← Q logo (26×26px, accentBtn bg, white text)
│      │
│  ⚡  │  ← Quick Command / Floating Palette toggle (⌥Space) — Zap icon
│  ⎕   │  ← Browser column toggle (⌘B) — Sidebar icon (single left vertical line)
│  ≡   │  ← Horizontal tab bar toggle — List icon. Shows/hides horizontal tab bar.
│  ⫼   │  ← Split View toggle — Columns icon (single center vertical line). See §6.24.
│  💬  │  ← Right chat column toggle — MsgCircle icon
│------│  ← Divider (20px wide, #444)
│  🔔  │  ← Activity — opens utility tab. Red badge (8px) for unread notifications.
│  ⚙   │  ← Settings — opens utility tab
│------│  ← Divider (#444)
│      │
│ flex │  ← Spacer
└──────┘
```

- Width: 44px fixed
- Background: bgSidebar (#131820)
- Icons: 16px, color #888 inactive / #fff active (active = corresponding panel is open)
- Buttons: 32×32px, borderRadius sm, no border
- Dividers: 20px wide, #444 (R4.3 — brightened from #333)
- Quick Command button tooltip shows `(⌥Space)`

**Icon changes (R4.3):**
- **Sidebar** icon: rectangle with single vertical line at the left third (`M3.75 4.875c0-.621... M8.25 3.75v16.5`). Distinct from Columns.
- **Columns** icon: rectangle with single vertical line through center (`M3.75 4.5h16.5c... M12 4.5v15`). Distinct from Sidebar.
- The views cluster (Browser → Horizontal Tabs → Split View → Chat Column) groups all layout toggles together above the first divider. Activity and Settings sit below it.

**`showHorizontalTabs` toggle behavior:**
- When ON (default): horizontal tab bar is visible above the main content area. Browser column auto-switches mode based on active tab type (notes → Notes mode, web → Web mode, etc.).
- When OFF: horizontal tab bar is hidden. Browser column does NOT auto-switch — stays in current mode unless user manually switches. The Nav pane's vertical tab list becomes the sole tab navigation surface. A thin accent border still appears on the content area edge.

---

## §6.20.4A — Nav Tab: Restructured Layout (NEW — replaces §6.20.4, §6.20.5, §6.20.6, §6.20.7, §6.20.7A)

The Nav tab is restructured from a flat list into **three collapsible sections** within a single scrollable column (R4.3). Each section takes its natural height — no flex competition, no whitespace gaps. The entire Nav pane scrolls as one unit.

#### Section headers

All three section headers share the same styling:
- Font: 11px, fontWeight 700, textTransform uppercase, letterSpacing .06em
- Color: `accentBtn` (#31588c) — the Q brand blue
- Chevron: size 9, also accentBtn color, toggles between ChevR (collapsed) / ChevD (expanded)
- Clicking the header toggles collapse. When collapsed, only the header text shows.

#### Section dividers

Each section has `borderBottom: 2px solid ${accentBtn}25` — a 2px accent-blue-tinted line (25% opacity). This provides clear visual separation between Pages, Tabs, and Workspaces.

---

#### §6.20.4A.1 — PAGES section

The Pages section replaces the old Chats section (§6.20.4) + Activity link (§6.20.5) + Pages section (§6.20.6).

**Chats as expandable Page entry:**
Chats is no longer a separate section. It is a row in the Pages list with a disclosure arrow:

```
  ▾ PAGES
    🔔 Chats                    ▸    ← clicking "Chats" opens the Chats management page
      ★ Henderson prep chat     2m   ← expanded: up to 6 items (pinned first, then recent)
      ● Brooge research         1h
      ● Daily standup           3h
    ☑ Tasks
    📁 Projects
    💾 Knowledge
    💬 Forums & Panels
    👤 Agents
    🔌 Skills & Connectors
    ◇ Overlays & Prompts
    🪣 Context Buckets
    ⚙ Settings
```

- The disclosure arrow (▸/▼) is to the right of "Chats", size 11, color `textSec`. Click to expand/collapse the inline chat list.
- The expanded list shows up to **6 items**, prioritized: pinned chats first (up to 6), then most recent to fill remaining slots.
- Clicking the "Chats" label itself opens the Chats management page as a utility tab — this IS the "See All" action.
- Page items: fontSize 12.5px, padding "5px 10px", gap 7, NavIcon size 13.
- Expanded chat items: fontSize 10.5px, padding "3px 10px", indented 12px from left.

All other pages render as simple clickable rows with NavIcon + label. Clicking opens the corresponding utility tab.

---

#### §6.20.4A.2 — TABS section

The Tabs section replaces the old Open Tabs (§6.20.7) and Tab Groups (§6.20.7A) sections. It is the primary tab management surface.

**Header with action buttons:**

```
  ▾ TABS                    🔍  ⊞ ⋮
```

The header line contains (right-aligned, only shown when section is expanded):
1. **Search** button (🔍) — toggles inline search field. When active, filters the tab list by title.
2. **Tab Groups** button (⊞) — toggles the Tab Groups list below the search.
3. **Tab Groups 3-dot** button (⋮) — opens a dropdown:
   - "Create New Tab Group" (+ icon) — prompts for name, creates group with auto-assigned color
   - Divider
   - List of all existing tab groups with colored dot + name. Clicking a group expands it and switches to its first tab.

**Tab list:**

All open tabs render as a vertical list. Tab groups appear first (collapsible), then ungrouped tabs.

*Tab group rendering:*
```
  ● Research          ▼  ⋮
    📄 Case law search        ×
    📄 EDGAR results          ×
    📄 Expert CV              ×
```

- Group header: colored Dot (6px) + label (fontWeight 550, color textSec, fontSize 11.5px) + collapse arrow (right of name, size 11, group color) + 3-dot menu (Dots icon, size 10, color textSec, opacity .5→1 on hover).
- Group header has `margin: "0 2px"` matching all tab rows.
- Collapse arrow is to the **right** of the group name, not the left. Color matches the group's assigned color.
- Grouped tabs: padding `"3px 8px 3px 22px"` with `borderLeft: 2px solid ${groupColor}20`. The right padding (8px) matches ungrouped tabs for X button alignment.

*Ungrouped tab rendering:*
```
  📄 Henderson MTD brief      ×
  🌐 Paramount MIL — PACER   ×
  💬 Brooge research chat     ×
```

- fontSize 11.5px, padding "3px 8px", margin "0 2px".
- Active tab: backgroundColor `accentBtn+"08"`, fontWeight 600.
- Hover (non-active): backgroundColor bgInput.
- Close X: size 9, color textTer, opacity .4→1 on hover. Aligned at same right position across all tab types.

**X button alignment rule:** All tab rows (grouped, ungrouped, different sections) use identical right padding (8px) and margin (0 2px) so the X close buttons form a clean vertical column.

*Bottom actions:*
```
  + New tab                × Close all
```

"New tab" (left, accent on hover) and "Close all" (right, red on hover). Shown in both split and non-split modes. In split mode, the left pane shows its own "Close all" for left pane tabs only.

**Tab context menu (right-click on any vertical tab):**

| Action | Behavior |
|--------|----------|
| Close | Closes the tab |
| Duplicate | Creates a copy |
| Pin | Pins the tab |
| Rename | (notes only) Prompts for new name |
| --- | separator |
| Add to {Group Name} | (per existing group) Moves tab into group |
| New Group… | Creates new group containing this tab |
| Remove from Group | (if in group) Removes tab from group |
| --- | separator (split mode only) |
| Move to Right Pane | (split mode only) Moves tab from left to right pane |

**Tab group context menu (3-dot or right-click on group header):**

```
┌─────────────────────────┐
│ [Research____________]  │  ← rename input (auto-focused)
│ ● ● ● ● ● ● ● ● ● ●  │  ← 10-color picker (14px circles)
│─────────────────────────│
│ + New Tab in Group      │
│   Close Group           │  ← collapses group (does not delete)
│─────────────────────────│
│   Ungroup               │  ← removes group, tabs become ungrouped
│ 🗑 Delete Group         │  ← red — deletes group AND all its tabs
└─────────────────────────┘
```

**Drag-and-drop:** Tabs can be dragged into a group by dropping on the group's tab area. The dropped tab's `group` field is set to the target group ID.

**Split view in vertical tabs:**

When split mode is active, the Tabs section shows two labeled subsections:

```
  ← LEFT PANE                    +
    ● Henderson MTD brief        ×
    📄 Paramount brief           ×
    + New tab              × Close all
  ─────────────────────────────────
  → RIGHT PANE                   +
    📄 Christensen_CV.pdf        ×
                           × Close all
```

- Left Pane header: ArrowL icon (size 10) + "LEFT PANE" (fontSize 10.5, fontWeight 600, color accentBtn, uppercase) + [+] button
- Right Pane header: ArrowR icon (size 10) + "RIGHT PANE" (fontSize 10.5, fontWeight 600, color green, uppercase) + [+] button
- Each pane has its own "Close all" at the bottom (shown when pane has tabs).
- Tab groups only appear in the left pane tab list. Right pane tabs are always ungrouped.
- Right-click on a left pane tab includes "Move to Right Pane" option.

---

#### §6.20.4A.3 — WORKSPACES section

See §6.26 for full specification.

The Workspaces section renders at the bottom of the Nav pane:

```
  ▾ WORKSPACES                   +
    🕐 Apr 8, 3:30 PM               ← unsaved state (italic, timestamp)
    ● Henderson Trial        active  ← named, orange dot, "active" badge
    📌 ● Brooge Discovery       ⋮   ← pinned, blue dot, 3-dot menu
    ● Daily Workflow            ⋮
    💾 Save current as workspace
```

- Header has [+] button (right-aligned) for creating a new blank workspace.
- Unsaved state at top with Clock icon, timestamp in italic.
- Named workspaces with colored Dot, name, optional pin icon, 3-dot menu on hover.
- "Save current as workspace" link at bottom.
- Pinned workspaces sort to top.

---

## §6.20.7B — Nav Pane Auto-Switch Behavior (NEW)

When `showHorizontalTabs` is ON (horizontal tab bar visible), the browser column auto-switches mode based on the active tab's content type:

| Active tab type | Browser column mode |
|----------------|-------------------|
| note, clips | Notes |
| web | Web (Bookmarks) |
| chat, utility, todo | Nav |
| doc | Browser |

When `showHorizontalTabs` is OFF (vertical tabs only), **auto-switch is disabled**. The browser column remains in its current mode unless the user manually clicks a mode tab. This prevents disorienting mode switches when navigating via the vertical tab list.

This behavior is controlled by the `browserAutoSwitch` setting. Default: `true` when horizontal tabs visible, `false` when hidden. Can be overridden in Settings.

---

## §6.20.9 — Bookmarks Browser Mode (UPDATE)

Append to the existing bookmarks section:

**Bookmark item interactions (R4.3):**
- **X to delete on hover.** Each bookmark item shows an X button (size 9, color textTer) on the right edge when hovered. Opacity transition 0→1. Click to delete with toast confirmation.
- **Right-click context menu.** Right-clicking any bookmark opens:
  - Rename — prompts for new title
  - Open in New Tab
  - separator
  - Delete (red, trash icon)

**Recent Pages (R4.3):**
- The Recent Pages section is **collapsible** with a chevron header.
- **Default: collapsed.** User clicks the header to expand and see browsing history.
- Header has an **X button** (right-aligned) to clear all recent pages.
- When expanded, shows recent pages with favicon, title, and time-ago indicator.

---

## §6.20.13–14 — Chrome-Style Tab Bar (UPDATE)

Append:

**Horizontal tab bar conditional rendering (R4.3):**
The entire horizontal tab bar (including the [+] dropdown and split view toggle) is conditionally rendered based on `showHorizontalTabs`. When hidden, no horizontal tab UI is shown above the content area.

**Non-active tab spacing (R4.3):** Non-active browser mode tabs have `borderLeft` and `borderRight` set to `${borderLight}40` for visual separation between tabs. This prevents tabs from visually merging at narrow widths.

---

## §6.20.17 — Status Bar (UPDATE)

Remove the "tabs" count from the status bar. The status bar shows:
- Session timer (Clock icon + Xh Ym)
- Clips count (Scissors icon + N clips)

The tab count is removed as redundant — the vertical tab list provides this information at a glance.

---

## §6.20.30J — [+] Dropdown (UPDATE — 3 items)

1. **Incognito icon.** The incognito tab option uses `I.EyeOff` (Lucide slashed-eye icon), not `I.Mask`. This matches the incognito indicator on tabs themselves.
2. **Incognito Tab option.** The [+] dropdown Create section includes "Incognito Tab" (EyeOff icon, color textTer) after "New Web Tab".
3. **NavIcon in Open section.** The Open section uses `<NavIcon id={p.id} size={12}/>` to render proper SVG icons, not raw string references.

---

## §6.23 — Icon System (UPDATE)

Add to the icon assignment table:

| Context | Icon ID | Source |
|---------|---------|--------|
| Incognito tab/indicator | `EyeOff` | Lucide — slashed eye. Replaces `Mask`. |
| Browser column toggle (left rail) | `Sidebar` | Custom — rectangle with single vertical line at left third |
| Split view toggle (left rail) | `Columns` | Custom — rectangle with single vertical line at center |
| Horizontal tabs toggle (left rail) | `List` | Heroicons — three horizontal lines |
| 3-dot menu | `Dots` | Custom — three vertical dots (12/12.75/18.75 centers, strokeWidth 2.5) |

**Sidebar vs Columns icon disambiguation (R4.3):**
- `Sidebar`: left-weighted split (`M8.25 3.75v16.5` — line at ~34% from left)
- `Columns`: center split (`M12 4.5v15` — line at 50%)

These are visually distinct at 16px rendering size. The Sidebar icon suggests "open/close a side panel" while Columns suggests "split into two equal panes."

---

## §6.24 — Split View (UPDATE)

Append:

**Split view in vertical tabs (R4.3):**
When split mode is active, the Nav pane's Tabs section displays two labeled subsections: Left Pane and Right Pane. See §6.20.4A.2 for full rendering spec. Each pane has independent [+] and "Close all" buttons. The split view toggle is accessible from the left nav rail (always visible) regardless of horizontal tab bar state.

---

## §6.26 — Workspaces (NEW)

### §6.26.1 — Overview

A Workspace is a named, persistable snapshot of the user's entire view configuration. It enables instant context-switching between different work contexts (cases, projects, daily workflows) by saving and restoring:

- All open tabs (with their content type, title, icon, URL/note ID/chat ID)
- Tab group assignments and group state (collapsed/expanded)
- Split view state (on/off, which tabs in which pane, divider position)
- Active tab in each pane
- Browser column mode and state
- Right panel state (open/closed, which tab)

### §6.26.2 — Workspace Schema

```typescript
interface Workspace {
  id: string;                    // "ws" + timestamp
  name: string | null;           // null = unsaved state
  saved_at: string;              // ISO timestamp, updated on every auto-save
  color: string | null;          // 10-color picker, null for unsaved
  pinned: boolean;               // pinned workspaces sort to top
  isUnsaved: boolean;            // true = unnamed working state
  // Snapshot fields:
  tabs: TabSnapshot[];           // all tabs in left/main pane
  activeTabId: string | null;
  splitMode: boolean;
  splitTabs: TabSnapshot[];      // tabs in right pane (if split)
  splitActiveTabId: string | null;
  splitWidth: number;            // right pane percentage
  browserMode: string;           // "nav" | "browser" | "notes" | "bookmarks"
  rightOpen: boolean;
  rightTab: string;
  tabGroups: TabGroupSnapshot[];
}

interface TabSnapshot {
  id: string;
  type: string;                  // "note" | "doc" | "web" | "chat" | ...
  icon: string;
  title: string;
  color: string;
  group?: string;                // tab group ID
  url?: string;                  // for web tabs
  noteId?: string;               // for note tabs
  chatId?: string;               // for chat tabs
}

interface TabGroupSnapshot {
  id: string;
  label: string;
  color: string;
  collapsed: boolean;
}
```

### §6.26.3 — Switch Behavior

1. User clicks a named workspace in the Workspaces list.
2. If currently in a named workspace: auto-save current state to that workspace's snapshot.
3. If currently in unnamed state: auto-save to the unnamed workspace entry (overwrite previous unnamed state).
4. Load the target workspace's snapshot: close all current tabs, open saved tabs, restore tab groups, restore split view, restore browser mode, set active tabs.
5. Set `activeWorkspaceId` to the target workspace ID.

### §6.26.4 — Workspace Context Menu

Right-click or 3-dot (⋮) on any named workspace:

```
┌─────────────────────────┐
│ [Henderson Trial_____]  │  ← rename input (auto-focused)
│ ● ● ● ● ● ● ● ● ● ●  │  ← 10-color picker
│─────────────────────────│
│ 📌 Pin to Top           │  ← toggles pinned state
│─────────────────────────│
│ 🗑 Delete Workspace     │  ← red, trash icon
└─────────────────────────┘
```

### §6.26.5 — EC Commands

```
WorkspaceCreateCommand   { name, color }
WorkspaceSaveCommand     { workspace_id, snapshot }
WorkspaceSwitchCommand   { workspace_id }
WorkspaceRenameCommand   { workspace_id, name }
WorkspaceColorCommand    { workspace_id, color }
WorkspacePinCommand      { workspace_id, pinned }
WorkspaceDeleteCommand   { workspace_id }
```

### §6.26.6 — Nav Pane Rendering

- Section header: "WORKSPACES" in accent blue, with [+] button for new workspace.
- Unsaved state: Clock icon + formatted timestamp (e.g., "Apr 8, 3:30 PM"), italic, at top of list.
- Named workspaces: sorted by pinned first, then by saved_at descending.
- Each workspace: optional Pin icon (if pinned) + colored Dot (7px) + name + "active" badge (if active) + 3-dot menu (opacity .4→1 on hover).
- "Save current as workspace" link at bottom (Save icon + text, color textTer → accentBtn on hover).

---

## §6.20.9 — Browser Search Bar (UPDATE)

The scope toggle in the browser search bar uses:
- **"Selection"** (when filtering to current view/scope) — replaces "This View"
- **"All"** (when searching everywhere) — replaces "Everywhere"

---

## §7 — Schemas (ADDITIONS)

Add `WorkspaceSchema` per §6.26.2.

Add to `TabSchema`:
```typescript
// Existing fields...
incognito?: boolean;     // incognito tab flag
// Icon field uses string IDs per §6.23, including "eyeOff" for incognito
```

## §8 — Commands (ADDITIONS)

Add Workspace commands per §6.26.5.

Add:
```
ShowHorizontalTabsCommand { visible: boolean }
BrowserAutoSwitchCommand  { enabled: boolean }
```

---

## §12 — Cross-Doc Obligations (ADDITIONS)

| Target | Obligation | Status |
|--------|-----------|--------|
| DOC21/22 | Vertical tab list rendering, workspaces section, 3-collapsible-section Nav layout, workspace context menus, tab group 3-dot menus | PENDING |
| EC Core | Workspace CRUD commands, workspace snapshot persistence, ShowHorizontalTabs/BrowserAutoSwitch settings | PENDING |

---

## Summary of Sections Modified

| Section | Action | Description |
|---------|--------|-------------|
| §0.4 | APPEND | Vertical tabs, workspaces, scrollable nav pane design choices |
| §1.6 | REPLACE | Updated workspace shell description (8-item rail, vertical tabs, workspaces) |
| §1.12 | NEW | Workspaces system overview |
| §6.20.2 | REPLACE | Left nav rail expanded 6→8 items, icon disambiguation, divider color |
| §6.20.4–7 | REPLACED BY §6.20.4A | Old flat Nav sections replaced by 3-section structure |
| §6.20.4A | NEW | Full spec: Pages (with expandable Chats), Tabs (vertical list, groups, split panes), Workspaces |
| §6.20.7B | NEW | Auto-switch behavior spec |
| §6.20.9 | UPDATE | Bookmark X-to-delete, right-click rename, collapsible Recent Pages |
| §6.20.13–14 | UPDATE | Conditional horizontal tab bar, non-active tab borders |
| §6.20.17 | UPDATE | Tabs count removed from status bar |
| §6.20.30J | UPDATE | Incognito icon, incognito dropdown option, NavIcon in Open section |
| §6.23 | UPDATE | 5 new icon entries, Sidebar/Columns disambiguation |
| §6.24 | UPDATE | Split view vertical tab management |
| §6.26 | NEW | Complete Workspaces system spec (6 subsections) |
| §6.20.9 (search) | UPDATE | "Selection"/"All" labels |
| §7 | ADD | WorkspaceSchema, TabSchema incognito field |
| §8 | ADD | Workspace commands, ShowHorizontalTabs, BrowserAutoSwitch |
| §12 | ADD | Cross-doc obligations for DOC21/22 and EC Core |