Skip to content

feat: dynamic tabs. - #64

Merged
knightedcodemonkey merged 15 commits into
nextfrom
bananas
Apr 11, 2026
Merged

feat: dynamic tabs.#64
knightedcodemonkey merged 15 commits into
nextfrom
bananas

Conversation

@knightedcodemonkey

@knightedcodemonkey knightedcodemonkey commented Apr 6, 2026

Copy link
Copy Markdown
Owner

Copilot AI review requested due to automatic review settings April 6, 2026 00:56
@knightedcodemonkey knightedcodemonkey changed the title Bananas feat: dynamic tabs. Apr 6, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the in-browser editor into a workspace-first, multi-tab experience with local persistence, and simplifies the app layout to a single fixed “preview-right” grid while updating the render pipeline to derive the preview entry from workspace tab metadata.

Changes:

  • Introduces workspace tab state + persistence (IndexedDB) and adds UI for adding/renaming/removing tabs with an entry role.
  • Updates the render runtime to build preview source from workspace tabs (entry resolution + dependency hydration).
  • Simplifies layout/theme controls by removing layout switching and adjusting CSS/Playwright selectors to match the new DOM structure.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/styles/panels-editor.css Adds workspace tab styling and updates selectors to new .editor-panel structure.
src/styles/layout-shell.css Reworks grid layout to a fixed preview-right configuration and adds workspace tabs strip styling.
src/styles/ai-controls.css Styles Open PR drawer “Local contexts” controls.
src/modules/workspace-tabs-state.js Adds a small in-memory tabs state container (active tab, upsert/remove/replace).
src/modules/workspace-storage.js Extends workspace persistence to include per-tab role and updates tab record normalization.
src/modules/render-runtime.js Adds workspace-tab driven preview entry resolution and multi-tab hydration logic.
src/modules/preview-entry-resolver.js Prefers explicit tab.role === 'entry' when selecting the preview entry tab.
src/modules/layout-theme.js Removes grid layout handling; theme-only controller.
src/modules/editor-pool-manager.js Adds a small MRU-based mount/eviction utility for editor panels.
src/index.html Replaces component/styles panels with unified editor panels and adds workspace tabs + local context select UI.
src/app.js Wires workspace tabs, local context persistence, fixed layout collapse behavior, and new DOM ids/classes.
README.md Documents workspace tab capability and links new architecture doc.
playwright/*.spec.ts Updates tests for new layout/tabs UI; adds storage reset helper; removes several render/diagnostics specs.
playwright/helpers/app-test-helpers.ts Adds resetWorkbenchStorage and updates helpers to activate tabs before interacting.
docs/webkit-open-pr-drawer-triage.md Removes obsolete WebKit triage handoff doc.
docs/render-pipeline-multitab-spec-plan.md Adds a follow-up test plan doc for the new render pipeline + multitab UX.
docs/issue-62-continuation-prompt.md Adds a handoff prompt for remaining hardening scope related to issue #62.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/modules/render-runtime.js Outdated
Comment thread src/modules/render-runtime.js Outdated
Comment thread src/modules/render-runtime.js Outdated
Comment thread src/app.js
Comment thread src/modules/render-runtime.js Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 27 out of 27 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

src/styles/preview-controls.css:93

  • The .toggle styling was removed from this stylesheet, but index.html still uses <label class="toggle"> for the Auto render control. With no remaining .toggle / .toggle input rules anywhere in src/styles, the toggle layout/accent styling will regress (likely misaligned label + default checkbox styling). Consider restoring the toggle styles (either here or in a shared controls stylesheet) or removing the unused toggle class from the markup.
.controls label.color-control {
  flex-direction: row;
  align-items: center;
  gap: 8px;
}

.controls input[type='color'] {
  width: 34px;
  height: 24px;
  padding: 0;
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  background: transparent;
  cursor: pointer;
}

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/modules/preview-background.js
Comment thread src/modules/preview-runtime/iframe-preview-executor.js
Comment thread src/modules/preview-runtime/iframe-preview-executor.js Outdated
Comment thread README.md Outdated
@knightedcodemonkey
knightedcodemonkey merged commit 8daecfa into next Apr 11, 2026
5 checks passed
@knightedcodemonkey
knightedcodemonkey deleted the bananas branch April 11, 2026 17:05
knightedcodemonkey added a commit that referenced this pull request May 2, 2026
* feat: idb infrastructure. (#63)

* feat: dynamic tabs. (#64)

* refactor: better accessbility for tabs. (#68)

* feat: remove allow-same-origin for better security. (#69)

* feat: tab reordering via drag-n-drop. (#70)

* feat: explicit css imports, diagnostics per editor buffer. (#71)

* feat: idb + github sync with atomic open and push to remote. (#78)

* closes #73, closes #74, closes #75.

* refactor: more colocation and smaller file sizes. (#79)

* refactor: improvements with styles and gh syncs. (#82)

* test: webkit flake. (#83)

* test: address flake. (#84)

* refactor: github pr context. (#85)

* fix: require app in entry, hide workspaces without pat, remove star important. (#86)

* feat: make idb source of truth for pr context. (#87)

* fix: active pr context on reload and dedupe workspace identity. (#88)

* fix: edited and push sync across reloads. (#89)

* fix: properly commit tab name changes. (#90)

* fix(tabs): filename edits, min-widths, scrolling, content sync. (#91)

* feat: improved workspace disconnect and closed ux. (#92)

* refactor: status styling and biome config. (#94)

* fix(diagnostics): enforce current-editor snapshots and stale results. (#95)

* fix: consistent head handling. (#96)

* fix: prevent workspace overwrites. (#100)

* fix(playwright): stabilize lint diagnostics waits with one-time rerun fallback. (#101)

* feat: improved workspace ux and state identity separation.  (#103)

* fix: iframe protocol mismatch in receiver reads. (#104)

* refactor: remove remaining fixed editor assumptions. (#105)

* refactor: simplify PR close flow with deterministic workspace state updates (#106)

* feat: mode-aware entry tab extensions. (#108)

* feat: workspace status bar. (#109)

* feat: tab-scoped ai chat. (#111)

* refactor: better workspace drawer ux. (#112)

* refactor: remove collapsible editors and update breakpoint styles. (#113)

* docs: update for vnext. (#114)

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants