Skip to content

refactor(ui): isolate extension pane controller - #881

Merged
benvinegar merged 2 commits into
refactor/extension-review-eventsfrom
refactor/extension-pane-controller
Aug 27, 2026
Merged

refactor(ui): isolate extension pane controller#881
benvinegar merged 2 commits into
refactor/extension-review-eventsfrom
refactor/extension-pane-controller

Conversation

@benvinegar

@benvinegar benvinegar commented Aug 27, 2026

Copy link
Copy Markdown
Member

Summary

  • move extension pane state, availability, responsive reveal, resizing, and fallback behavior into useExtensionPaneController
  • make pane geometry planning pure and probe extension availability only after commit
  • preserve current-line retention, files replacement recovery, capability leases, and responsive resize behavior

Testing

  • focused pane controller and geometry tests
  • AppHost sidebar, responsive, visibility, resize, and extension tests
  • PTY extension, layout, and current-line integration tests
  • TTY smoke tests
  • bun run typecheck
  • bun run deps:check
  • bun run lint
  • targeted formatting and diff checks

Stack

This PR description was generated by Pi using GPT-5.6 Sol

@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hunk-web Ignored Ignored Preview Aug 27, 2026 12:13pm

Request Review

@greptile-apps

greptile-apps Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR extracts extension-pane state, availability handling, fallback recovery, responsive visibility, and resizing from App into a dedicated controller hook.

  • Moves pane availability probing outside React render and isolates extension failures by registration identity.
  • Preserves the built-in files-pane fallback when an extension replacement fails.
  • Adds focused controller, pane-planning, and AppHost regression coverage.

Confidence Score: 5/5

The PR appears safe to merge; no concrete changed-code defect remains after reviewing pane availability, fallback, reload, and resize behavior.

The extracted controller preserves logical pane choices, probes extension availability after commit, restores the built-in files pane after replacement failures, retires stale controls, and guards resizing by exact registration identity, with focused regression coverage for these transitions.

Important Files Changed

Filename Overview
src/ui/hooks/useExtensionPaneController.ts Centralizes pane state, availability probing, fallback recovery, responsive visibility, current-line retention, capability controls, and resizing with focused identity guards.
src/ui/App.tsx Replaces inline pane orchestration with the controller while retaining rendering and application-level menu integration.
src/ui/lib/extensionPanes.ts Separates extension availability probing from pure pane geometry planning.
src/ui/hooks/useExtensionPaneController.test.tsx Covers availability, quarantine, fallback toggling, reload identity, capability retirement, current-line retention, and resize cancellation.
src/ui/AppHost.extension-sidebar.test.tsx Adds an end-to-end regression test proving the files toggle can close and reopen an injected fallback.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  App[App terminal and review inputs] --> Controller[useExtensionPaneController]
  Controller --> Availability[Commit-phase availability probe]
  Availability -->|accepted| Planner[Pane layout planner]
  Availability -->|failure| Quarantine[Quarantine registration]
  Quarantine --> Fallback[Built-in files-pane fallback]
  Controller --> Controls[Extension pane controls]
  Controller --> Resize[Pane resize state]
  Planner --> Render[App pane rendering]
  Render -->|render failure| Quarantine
Loading

Reviews (1): Last reviewed commit: "refactor(ui): isolate extension pane con..." | Re-trigger Greptile

@benvinegar
benvinegar force-pushed the refactor/extension-review-events branch from 60abc10 to 38f537a Compare August 27, 2026 04:27
@benvinegar
benvinegar force-pushed the refactor/extension-pane-controller branch from adfec75 to acd7b42 Compare August 27, 2026 04:27
@benvinegar
benvinegar force-pushed the refactor/extension-review-events branch from 38f537a to d70a9c8 Compare August 27, 2026 12:13
@benvinegar
benvinegar force-pushed the refactor/extension-pane-controller branch from acd7b42 to b0b60d1 Compare August 27, 2026 12:13
@benvinegar
benvinegar merged commit 87120f8 into refactor/extension-review-events Aug 27, 2026
12 checks passed
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.

1 participant