Conversation
…ssions\n\nchore(release): v2.10.0
There was a problem hiding this comment.
Pull Request Overview
This release adds a tiled view feature allowing users to view two Claude sessions side-by-side, bumping the version to 2.10.0.
- Implementation of MVP tiled view with two resizable panes
- Independent terminal connections for each pane with session selection
- Persistent layout state and resizer position in localStorage
Reviewed Changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| src/public/style.css | Added CSS styles for tab actions button, tiled pane layout, resizer controls, and tile-specific UI components |
| src/public/session-manager.js | Added calls to refresh pane session selectors when sessions are loaded or updated |
| src/public/panes.js | New file implementing ClaudePane and PaneManager classes for tiled view functionality |
| src/public/index.html | Added tiled view toggle button, new tiled container HTML structure, and panes.js script inclusion |
| src/public/app.js | Integrated PaneManager initialization, tile toggle event handling, and pane-aware terminal resizing |
| package.json | Version bump from 2.9.0 to 2.10.0 |
| CHANGELOG.md | Added v2.10.0 changelog entry and reorganized previous v2.9.0 entry |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
|
||
| .tab-actions { display: flex; gap: 6px; align-items: center; } | ||
| .tab-tile { | ||
| width: 28px; height: 28px; display:flex; align-items:center; justify-content:center; |
There was a problem hiding this comment.
Missing spaces around CSS property values. Should be 'display: flex; align-items: center; justify-content: center;' for consistency with the rest of the codebase.
| width: 28px; height: 28px; display:flex; align-items:center; justify-content:center; | |
| width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; |
| .tile-grid { | ||
| display: grid; grid-template-columns: 1fr 6px 1fr; grid-template-rows: 100%; width: 100%; | ||
| } | ||
| .tile-pane { display:flex; flex-direction: column; min-width: 0; border-left: 1px solid var(--border); } |
There was a problem hiding this comment.
Missing space after colon in 'display:flex'. Should be 'display: flex' for consistency.
| .tile-pane { display:flex; flex-direction: column; min-width: 0; border-left: 1px solid var(--border); } | |
| .tile-pane { display: flex; flex-direction: column; min-width: 0; border-left: 1px solid var(--border); } |
| } | ||
| .tile-pane { display:flex; flex-direction: column; min-width: 0; border-left: 1px solid var(--border); } | ||
| .tile-pane:first-child { border-left: none; } | ||
| .tile-toolbar { display:flex; align-items:center; gap: 8px; padding: 6px 8px; background: var(--bg-secondary); border-bottom:1px solid var(--border); } |
There was a problem hiding this comment.
Multiple missing spaces after colons in CSS properties. Should be 'display: flex; align-items: center; border-bottom: 1px solid var(--border);'.
| .tile-toolbar { display:flex; align-items:center; gap: 8px; padding: 6px 8px; background: var(--bg-secondary); border-bottom:1px solid var(--border); } | |
| .tile-toolbar { display: flex; align-items: center; gap: 8px; padding: 6px 8px; background: var(--bg-secondary); border-bottom: 1px solid var(--border); } |
| .tile-pane { display:flex; flex-direction: column; min-width: 0; border-left: 1px solid var(--border); } | ||
| .tile-pane:first-child { border-left: none; } | ||
| .tile-toolbar { display:flex; align-items:center; gap: 8px; padding: 6px 8px; background: var(--bg-secondary); border-bottom:1px solid var(--border); } | ||
| .tile-toolbar .spacer { flex:1; } |
There was a problem hiding this comment.
Missing space after colon. Should be 'flex: 1;'.
| .tile-toolbar .spacer { flex:1; } | |
| .tile-toolbar .spacer { flex: 1; } |
| .tile-pane:first-child { border-left: none; } | ||
| .tile-toolbar { display:flex; align-items:center; gap: 8px; padding: 6px 8px; background: var(--bg-secondary); border-bottom:1px solid var(--border); } | ||
| .tile-toolbar .spacer { flex:1; } | ||
| .tile-session-select { background: var(--bg-tertiary); color: var(--text-primary); border:1px solid var(--border); border-radius:6px; padding:6px 8px; font-family: var(--font-mono); font-size:12px; } |
There was a problem hiding this comment.
Multiple missing spaces after colons. Should be 'border: 1px solid var(--border); border-radius: 6px; padding: 6px 8px; font-size: 12px;'.
| .tile-session-select { background: var(--bg-tertiary); color: var(--text-primary); border:1px solid var(--border); border-radius:6px; padding:6px 8px; font-family: var(--font-mono); font-size:12px; } | |
| .tile-session-select { background: var(--bg-tertiary); color: var(--text-primary); border: 1px solid var(--border); border-radius: 6px; padding: 6px 8px; font-family: var(--font-mono); font-size: 12px; } |
| .tile-toolbar { display:flex; align-items:center; gap: 8px; padding: 6px 8px; background: var(--bg-secondary); border-bottom:1px solid var(--border); } | ||
| .tile-toolbar .spacer { flex:1; } | ||
| .tile-session-select { background: var(--bg-tertiary); color: var(--text-primary); border:1px solid var(--border); border-radius:6px; padding:6px 8px; font-family: var(--font-mono); font-size:12px; } | ||
| .tile-close { background: transparent; border:1px solid var(--border); border-radius:4px; color: var(--text-secondary); width:26px; height:26px; display:flex; align-items:center; justify-content:center; cursor:pointer; } |
There was a problem hiding this comment.
Multiple missing spaces after colons. Should be 'border: 1px solid var(--border); border-radius: 4px; width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; cursor: pointer;'.
| .tile-close { background: transparent; border:1px solid var(--border); border-radius:4px; color: var(--text-secondary); width:26px; height:26px; display:flex; align-items:center; justify-content:center; cursor:pointer; } | |
| .tile-close { background: transparent; border: 1px solid var(--border); border-radius: 4px; color: var(--text-secondary); width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; cursor: pointer; } |
| // Plan modal title | ||
| const planTitle = document.querySelector('#planModal .modal-header h2'); | ||
| if (planTitle) planTitle.innerHTML = `<span class="icon" aria-hidden="true">${window.icons?.clipboard?.(18) || ''}</span> ${this.getAlias('claude')}'s Plan`; | ||
| if (planTitle) planTitle.innerHTML = `<span class=\"icon\" aria-hidden=\"true\">${window.icons?.clipboard?.(18) || ''}</span> ${this.getAlias('claude')}'s Plan`; |
There was a problem hiding this comment.
Escaped quotes in template literal are incorrect. Should use single quotes around class names: <span class="icon" aria-hidden="true">.
| if (planTitle) planTitle.innerHTML = `<span class=\"icon\" aria-hidden=\"true\">${window.icons?.clipboard?.(18) || ''}</span> ${this.getAlias('claude')}'s Plan`; | |
| if (planTitle) planTitle.innerHTML = `<span class='icon' aria-hidden="true">${window.icons?.clipboard?.(18) || ''}</span> ${this.getAlias('claude')}'s Plan`; |
| } | ||
|
|
||
| this.terminal.options.fontSize = settings.fontSize; | ||
| if (this.paneManager?.panes) this.paneManager.panes.forEach(p => { if (p.terminal) p.terminal.options.fontSize = settings.fontSize; p.fit();}); |
There was a problem hiding this comment.
Missing space before closing brace. Should be 'p.fit(); });' for better readability.
| if (this.paneManager?.panes) this.paneManager.panes.forEach(p => { if (p.terminal) p.terminal.options.fontSize = settings.fontSize; p.fit();}); | |
| if (this.paneManager?.panes) this.paneManager.panes.forEach(p => { if (p.terminal) p.terminal.options.fontSize = settings.fontSize; p.fit(); }); |
| - Tiled View (MVP): view two sessions side‑by‑side with independent terminals and sockets. | ||
| - Resizable splitter between panes with persistent split position. | ||
| - Per‑pane session picker and close controls; layout and assignments persist in localStorage. |
There was a problem hiding this comment.
Using en-dash (‑) instead of hyphen (-) in 'side‑by‑side' and 'Per‑pane'. Should use regular hyphens: 'side-by-side' and 'Per-pane'.
Replaces PR #29 due to unresolved conversation rule. Includes tiled view, splitter, per-pane sessions; version bump and changelog.