free-claude-code/scripts
Ali Khokhar 6b2989d4fb
Some checks are pending
Post merge / Warm dependency cache (Linux) (push) Waiting to run
Post merge / Warm dependency cache (Windows) (push) Waiting to run
Post merge / Warm dependency cache (macOS) (push) Waiting to run
Post merge / Publish to PyPI (push) Waiting to run
minor: support current DSH CLI and integrate DSH Desktop (#1961)
## Why

FCC's DSH launcher requires an older preview and uses configuration that
current DSH releases have removed. DSH Desktop also needs a persistent
connection through FCC's Integrations page. Related to #1959, whose
reported machine-specific HMR failure was not reproduced.

Folder-picker completion and cancellation can wait on output pipes held
by descendants.

## How

- Require DSH >=0.2.0-rc.2, install the npm latest release, and preserve
newer compatible installations. Update native plugin configuration and
respect DSH's profile, patch, help, management, and dump argument rules.
- Share the FCC provider and model configuration between CLI and
Desktop. Desktop Connect writes FCC's provider, credential reference,
and default model selection. Status compares these settings with the
current URL, token, catalog, and timeout. Disconnect removes FCC's
entries.
- Preserve unrelated providers, accounts, and YAML comments, and use
DSH's native file locks. FCC's entries are overwritten on Connect.
Removing the FCC default selection lets DSH inherit its bundle default.
Previous defaults are not backed up, and FCC's credential is removed
even if another profile references it.
- Refresh an existing FCC provider after catalog or settings changes.
Keep Disconnect available during discovery and prevent an older waiting
Connect from undoing it. The card uses Connect and Disconnect.
- Replace the POSIX dialog helper with the native executable under the
same PID. Capture output in private temporary files so inherited handles
cannot hold completion open. Reap the owned process and close its
captures before removing it from the process registry.
- Enable slow-test thread snapshots. The earlier macOS status-test hang
remains unexplained, with the temporary repetition gate removed after
diagnostic runs completed successfully.


<!-- greptile_comment -->

<!-- greptile_summary -->

<h2><a
href="https://app.greptile.com/api/retrigger?id=72554023"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/RetriggerDark.svg?v=2"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"><img
alt="Retrigger"
src="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"
align="right"></picture></a>Confidence Score: 1/5</h2>

<!-- greptile-risk -->

Not safe to merge: the DSH Desktop integration can lose user settings,
break another profile’s authentication, and prevent removal of an
installed connection without first overwriting a changed setting.

<h2><a
href="https://app.greptile.com/api/ide/codex?prompt=IMPORTANT%3A%20Work%20in%20the%20repository%20%22alishahryar1%2Ffree-claude-code%22%20on%20the%20existing%20branch%20%22ali%2Fupdate-dsh-0-2%22.%20Checkout%20that%20branch%20%E2%80%94%20do%20NOT%20create%20a%20new%20branch%20or%20open%20a%20new%20PR.%20Push%20your%20changes%20to%20%22ali%2Fupdate-dsh-0-2%22.%0A%0A%23%23%23%20Issue%201%0Asrc%2Ffree_claude_code%2Fharnesses%2Fdsh_desktop_integration.py%3A160-164%0AIf%20DSH%20already%20has%20an%20%60agent-default-model%60%20setting%2C%20Connect%20replaces%20the%20entire%20setting%20with%20FCC%E2%80%99s%20provider%20and%20model.%20Disconnect%20then%20deletes%20that%20replacement%20rather%20than%20restoring%20the%20original.%20The%20user%20permanently%20loses%20their%20previous%20default%20and%20any%20other%20settings%20in%20that%20row.%0A%0A%23%23%23%20Issue%202%0Asrc%2Ffree_claude_code%2Fharnesses%2Fdsh_desktop_integration.py%3A201-204%0AIf%20another%20DSH%20profile%20references%20%60FCC_DSH_DESKTOP_API_KEY%60%2C%20disconnecting%20Desktop%20deletes%20that%20key%20from%20the%20home-wide%20credentials%20file%20without%20checking%20the%20other%20profile.%20Its%20configuration%20still%20references%20the%20key%2C%20but%20it%20can%20no%20longer%20authenticate.%0A%0A%23%23%23%20Issue%203%0Asrc%2Ffree_claude_code%2Fharnesses%2Fdsh_desktop_integration.py%3A146-148%0AIf%20a%20user%20selects%20another%20DSH%20default%20while%20leaving%20the%20FCC%20provider%20installed%2C%20the%20next%20FCC%20startup%20refresh%20runs%20Configure%20because%20that%20provider%20is%20present.%20Configure%20rewrites%20the%20default-model%20setting%2C%20silently%20switching%20new%20DSH%20sessions%20back%20to%20FCC.%0A%0A%23%23%23%20Issue%204%0Asrc%2Ffree_claude_code%2Fapi%2Fadmin_static%2Fadmin.js%3A2155%0AIf%20a%20native%20setting%20changes%20while%20the%20FCC%20provider%20remains%20installed%2C%20the%20exact-match%20status%20becomes%20false%20and%20the%20card%20offers%20Connect%20instead%20of%20Disconnect.%20Clicking%20it%20overwrites%20the%20changed%20setting%3B%20the%20user%20cannot%20remove%20the%20installed%20provider%20through%20the%20card%20without%20reconnecting%20first.%0A%0A---%0A%0AFor%20each%20issue%20above%2C%20determine%20whether%20it%20is%20valid%20and%20should%20be%20fixed.%20If%20so%2C%20fix%20it%20directly.&repo=alishahryar1%2Ffree-claude-code&pr=1961&platform=github"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodexDark.svg?v=7"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodex.svg?v=7"><img
alt="Fix All in Codex"
src="https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodex.svg?v=7"
align="right"></picture></a>Findings</h2>

1. <img alt="P1"
src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=9"
align="top">&nbsp;**Previous defaults are lost** <a
href="https://github.com/Alishahryar1/free-claude-code/pull/1961#discussion_r4153109965">▶</a>
2. <img alt="P1"
src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=9"
align="top">&nbsp;**Shared credential is deleted** <a
href="https://github.com/Alishahryar1/free-claude-code/pull/1961#discussion_r4153109978">▶</a>
3. <img alt="P1"
src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=9"
align="top">&nbsp;**Refresh overrides the default** <a
href="https://github.com/Alishahryar1/free-claude-code/pull/1961#discussion_r4153109986">▶</a>
4. <img alt="P1"
src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=9"
align="top">&nbsp;**Installed connection cannot disconnect** <a
href="https://github.com/Alishahryar1/free-claude-code/pull/1961#discussion_r4153109993">▶</a>

<details open><summary>Summary</summary>

The DSH Desktop changes can erase an existing default setting, remove a
credential another profile needs, reset a user-selected default during
refresh, and hide Disconnect when an installed connection’s settings
change. These failures need fixing before merge.
</details>

<!-- greptile_confidence_score:1 -->

<sub>Reviews (5) · Last reviewed commit: ["Simplify DSH Desktop
connection to
nativ..."](c39b9788ae)</sub>

<!-- /greptile_comment -->
2026-10-01 01:37:40 -07:00
..
update patch: Check FCC version before running updates (#1917) 2026-09-26 18:34:11 -07:00
check_version_policy.py patch: Automate release versions and GitHub Releases (#1903) 2026-09-25 14:21:55 -07:00
ci.ps1 Parallelize browser CI and fix chat scroll reset after Stop (#1687) 2026-09-06 00:40:54 -07:00
ci.sh Parallelize browser CI and fix chat scroll reset after Stop (#1687) 2026-09-06 00:40:54 -07:00
install-muse.ps1 Fix Windows Muse installation with empty PATH entries (#1729) 2026-09-08 22:50:06 -07:00
install.ps1 minor: support current DSH CLI and integrate DSH Desktop (#1961) 2026-10-01 01:37:40 -07:00
install.sh minor: support current DSH CLI and integrate DSH Desktop (#1961) 2026-10-01 01:37:40 -07:00
publish_release.py patch: Fix post-merge release lookup race (#1904) 2026-09-25 14:39:40 -07:00
uninstall-muse.ps1 Fix Windows Muse installation with empty PATH entries (#1729) 2026-09-08 22:50:06 -07:00
uninstall.ps1 patch: Add fcc-doctor and simplify bug reports (#1906) 2026-09-25 21:00:15 -07:00
uninstall.sh patch: Add fcc-doctor and simplify bug reports (#1906) 2026-09-25 21:00:15 -07:00
validate_release.py patch: Automate release versions and GitHub Releases (#1903) 2026-09-25 14:21:55 -07:00