Upgrade Harness to 0.1.0-rc.8 - #101
Merged
Merged
Conversation
Rebuild every dependency patch against rc.8 and take the desktop shell off ui-sidebar entirely. Harness rc.8 adds `sidebar.brand.mark`, `sidebar.brand.name`, and `sidebar.footer.action` slots, which cover everything the sidebar patch was doing by hand. Branding and the phone-pairing entry now ship as a local plugin (packages/dsh-desktop-shell), so the patch is deleted and the preload loses its MutationObserver, its DOM injection, and its 1s status poll in favour of a contextBridge pair the plugin calls. The plugin is registered in the patched dsh manifest because Harness builds the profile link farm from that manifest, not from this project's. rc.8 also took the model select-all toggle upstream, so those hunks are gone from the settings-models patch; the remaining rework covers the provider search, provider ranking, and the multi-provider onboarding dialog against rc.8's reshaped code (ProviderEditor now takes `schema`). Harness rc.8 opens the loopback URL in the system browser on launch, which would pop a browser tab over the desktop window every start. Pass --no-open. Patch surface drops from 1825 to 1712 lines with one fewer patched package. Tests resolve patch files by package name instead of hardcoding the version, so the next upgrade renames patches without breaking every assertion. The release guard now identifies a package by the segment after its last node_modules/ — rc.8 nests React 19 under ui-trajectory, which the old prefix check misread as a peer-only DSH package.
Contributor
Author
|
Added on top of the rc.8 upgrade:
Local verification:
|
# Conflicts: # patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuilds every dependency patch against
@deepseek-ai/dsh@0.1.0-rc.8and takes the desktop shell offui-sidebarentirely.What rc.8 changed for us
sidebar.brand.mark,sidebar.brand.name,sidebar.footer.actionslots; default wordmark is now "DSH Local Build" + build revisionProviderEditornow takes aschemaprop; provider rows carrydeclaredChatViewroot is already a multi-childjsxs; adds aconversation.message.imagesslothomedir/releaseandadmitEncodedImagesimportsfs/promises+pathimport hunk--no-openChanges
Sidebar patch deleted. New local plugin
packages/dsh-desktop-shellfills the three slots.src/preload/index.tsloses ~60 lines: theMutationObserver, the DOM-injected button, and the 1s status poll are replaced by anopenPhonePairing/phoneStatuspair on the existingwindow.dshDesktopbridge, which the plugin calls from a real React component. The collapsed rail still only shows the entry once a phone is paired.--no-open. Without it rc.8 pops a browser tab over the desktop window on every launch.Patch surface: 1825 → 1712 lines, one fewer patched package.
Two things worth a look
patches/@deepseek-ai+dsh+0.1.0-rc.8.patchis hand-edited.patch-packageon thedshpackage reinstalls its whole tree and did not finish in several minutes. The change is one line, verified to apply cleanly withpatch --fuzz=0 --dry-runagainst a pristinenpm packof rc.8.That line matters more than it looks: Harness builds
$DSH_HOME/profiles/node_modulesby BFS over the dsh package's manifest, not this project's. A local plugin that is only a dependency here resolves in tests and then fails at runtime withERR_MODULE_NOT_FOUND— which is exactly what the first integration run hit. There is now a test pinning this.test/release.test.tsguard was loosened, deliberately. rc.8 nests React 19 underui-trajectory, and the oldstartsWith('node_modules/@deepseek-ai/')check read@deepseek-ai/dsh-client-ui-trajectory/node_modules/reactas a peer-only DSH package. The filter now takes the segment after the lastnode_modules/, so it still catches any genuinely peer-only DSH package. Worth confirming you agree that is the right read.Verification
npm test— 97 passednpm run typecheck,npm run build— cleannpm installapplies all 8 patches (verified after deleting the patched packages)dsh-desktop-shelllinked into the profile farm, and its client bundle served with all slot registrations intactTests now resolve patch files by package name rather than hardcoding the version, so the next upgrade renames patches without breaking every assertion.
Not verified: the sidebar rendering was checked by serving the composed bundle, not by eyeballing the running window — worth a quick visual pass on branding and the phone entry before merge.