GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Proposal: inline dock mode for persistent side-panel workflows · Issue #287 · devframes/devframe Open DescriptionContextThe current embedded dock works well when a developer opens a tool briefly and then returns to the application. Float and edge modes both sit over the page, though, which is less comfortable when the DevTools panel is part of the workflow rather than an occasional interruption. One example is a developer working with a persistent reference or feedback panel:
This is similar to working with browser DevTools docked to the side. The application gets a smaller layout area, but the panel no longer covers the thing being inspected. Clicking around the page also does not dismiss it. I would like to explore whether type DockMode = 'float' | 'edge' | 'inline' ProposalThe host would opt in by providing a mount target as part of its own layout: <main id="app"></main> <aside id="devframes-root"></aside> createUi({ dockPreferences: { defaultMode: 'inline', }, })
A viewer adapter could provide a more natural default for its own users. For example, Vite DevTools could default to DevTools({ inlineTarget: '#custom-devtools-root', dockPreferences: { defaultMode: 'inline', }, }) Providing a target would make Inline available. It would not select the mode automatically, and The host would own the surrounding grid or flex layout. DevTools would only publish state on the target: <aside data-devframes-state="open" data-devframes-position="right" /> The proposed states are:
For resizing, DevTools could reuse its existing persisted width and height and expose them as CSS custom properties: --devframes-inline-width: 42vw; --devframes-inline-height: 38vh; --devframes-inline-rail-size: 40px; The host decides how to consume or clamp those values. DevTools would not change body padding, application dimensions, or host layout styles directly. Expected behaviorInline would remain user-switchable alongside Float and Edge. When active:
Hide DevTools and popup mode would make the target inactive rather than leaving the rail behind. Target resolution and fallbackThe configured selector should resolve to exactly one element. It would be useful for the resolver to search the document and reachable open shadow roots, since application shells are often web components. Closed shadow roots and iframe documents would remain outside the selector contract. Framework rendering and HMR can add or replace the target after the bootstrap starts. A small observer could retry while the target is missing and detect removal of the active target, without continuously rescanning the page once the target is stable. If Inline is selected but no unique target can be found:
Possible implementation directionI do not think moving the complete existing custom element into the target is safe. The embedded element also owns command palettes, confirmations, toasts, menus, and tooltips. A host target may create a containing or stacking context through A safer shape would use two custom elements backed by one RPC connection and dock context: The inline shell could adapt the existing edge shell rather than introduce a second dock implementation. It would reuse the current entries, views, position controls, resizer, geometry, and persistence, with small branches for target-relative layout and manual collapse behavior. The Vite adapter would only need to forward Why I am opening an issue firstThis looks useful, but it is larger than adding another mode branch. The main challenges seem to be:
My rough estimate is a medium-sized feature: perhaps 350–600 lines of production code across devframe and the Vite forwarding layer, followed by a similar or larger amount of tests, fixture code, and documentation. Questions for maintainersThe main question is whether this workflow feels common and useful enough to justify supporting it in Does Inline belong in the reference UI, or would you prefer hosts with this requirement to build a custom viewer against If it belongs here:
I would be happy to work on an implementation if this direction feels worthwhile, but I would rather confirm that it fits the project before adding another supported presentation mode. ActivityMetadataMetadataAssigneesLabelsNo labels TypeProjectsMilestoneRelationshipsDevelopmentIssue actions |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |