Repository navigation
Replies: 2 comments
|
you've root-caused it right, there are two separate things here. the plugin bug itself is fixed in 0.1.25. pnpm is just holding it back for 24h because of minimumReleaseAge. you can bypass that for this one install by setting minimum-release-age=0 when you add it in the profile dir, that gets you the fixed version today instead of tomorrow. the blast radius point is valid too. your stack trace shows the throw coming out of invokeContainedSessionObservers with nothing catching it per plugin, so it goes straight up through session.append and kills the host. containing observer exceptions per plugin and reporting them the way failed bundle loads already are is the right fix. worth opening as an issue since that's a maintainer decision. |
|
Thanks — that matches what I found. Two things back: On the workaround. Verified here just now: On "worth opening as an issue". That is exactly the problem: If there is a canonical place maintainers prefer for platform-level reports, I am happy to move or re-file this there. |
Uh oh!
There was an error while loading. Please reload this page.
A third-party plugin's session observer threw, and the whole host exited instead of that plugin degrading.
A plugin (
@goodreaddy/dsh-time-machine@0.1.24) raised inside itsctx.on('session/event', …)handler. The host aborted on the first turn:Environment. DSH Desktop
0.2.0-rc.2(Electron 44.0.0, node 24.18.1, darwin arm64, profiledesktop). Third-party bundles loaded from the profile's ownnode_modules.The plugin's own bug is already handled upstream. GooDAnDReaDY/dsh-time-machine#6 root-caused it — on DSH 0.1.7+/0.2.0 the loader hands schema-declared
volatilefields toapply()as{ get() }accessor objects, whichstructuredClonecannot clone — and it is fixed in0.1.25. I am not re-reporting that bug.The platform concern is the blast radius. One third-party plugin raising inside a session observer takes down the entire host. The shell's only recovery is "disable third-party plugins, back up the profile patch, and restart", and that path resets
dsh.profile.bundlesto the stock web bundle list — so the desktop-specific bundles are dropped along with the offending plugin:The user loses more than the plugin that failed and has to rebuild the list by hand. (Observed live: the bundle list went from 8 entries to 2.)
There is also no way out from the command line:
dsh plugin --profile desktop …is refused withprofile "desktop" is managed exclusively by the Electron application, so a user whose host is bricked by a single plugin cannot remove just that one bundle from the shell.Suggestion. Contain exceptions raised by session-event observers per plugin — skip or disable the throwing plugin and surface a non-fatal reload diagnostic — instead of exiting the host, consistent with how a failed bundle load is already reported as a non-fatal reload error. If a hard abort is intentional for load-time failures, consider distinguishing an observer throw during
Session.appendfrom an actual load failure.Side note (not a DSH bug, but it affects reproduction): a fresh
pnpm add @goodreaddy/dsh-time-machinestill resolves to the broken0.1.24, because pnpm'sminimumReleaseAge(24 h) skips0.1.25until it has aged. So a plugin that has already been fixed stays unreachable for a day, and the failure above is easy to hit right now. Pinning the version is the only workaround on the user side.All reactions