Replies: 1 comment
|
I have a tested implementation for the event-registry slice of this RFC, together with the related upstream changes required by a separately released collaboration plugin. Patch
The implementation:
This intentionally does not implement the RFC's root page/details/inbox slots or plugin-owned Web read routes. It also introduces no collaboration-product entities into Harness. The patch is limited to generic extension points needed by independently released plugins. Verification
The change includes bilingual package/subsystem documentation and an implemented Agent Note. The affected Markdown set changes from 60,467 to 61,334 words (+867). Would maintainers prefer this tested slice to remain one proposal, or be discussed separately as API Proxy event registration, external Typert marker discovery, and Web bind-address support? |
Uh oh!
There was an error while loading. Please reload this page.
Motivation
External DSH plugins can contribute Host behavior and Client bundles, but an external plugin that needs a persistent root-level UI currently has no generic way to:
/api.Without public seams, plugins must either stay Host-only or depend on DOM takeover, private Desktop APIs, Session-event misuse, or a second shell owner. Those alternatives are difficult to compose and lifecycle-test.
Proposed generic ownership
This proposal is intentionally product-agnostic:
ui-layoutowns keyed root surfaces and transient active keys:shell.pageshell.detailsshell.inboxctx.layout.openPage/closePagectx.layout.openDetails/closeDetailsctx.layout.openInbox/closeInboxui-sidebarowns two additive list seats:sidebar.navigationsidebar.inboxapi-remotesowns a runtime-open, schema-validated event registry. A publisher is bound to the caller fiber, cannot shadow built-in events, and carries only JSON-safe tuple arguments.client-connectionexposes its already-resolved browser request trust fence as a public Host service so plugin-owned routes do not duplicatetrustedHostsparsing or default open.The shell stores only active registration keys. Business state and callbacks remain in the contributing plugin. Unknown, unloaded, or abdicated keys close through the shell owner.
Accessibility and lifecycle expectations
aria-modal, keyboard trapping, Escape handling, and focus restoration.inertwhile the drawer or global inbox is modal.Security boundary
webServerand the shared request-trust owner are present.Prototype evidence
A local external-plugin prototype over
dsh-v0.1.1-rc.1exercised these generic seams without modifying Desktop APIs:The current upstream
dsh-v0.1.1-rc.2does not yet expose equivalent seams. The rc.2 image-pipeline changes overlap only with the Connection and API Proxy integration points; the ownership model remains compatible.Questions for maintainers
api-remotes, or is another public carrier planned?I can provide the tested patch and focused contract examples if maintainers want to review the implementation direction. I understand that the repository is not accepting external pull requests at this time; this Discussion is intended to validate the public extension model, not to bypass that policy.
All reactions