mirror of
https://github.com/aaddrick/claude-desktop-debian.git
synced 2026-05-17 00:26:21 +03:00
* fix: suppress Cowork tab auto-select on every launch (#341) Patch 4's empty Linux bundle manifest makes `[].every()` return true vacuously, so `iBA()` reports "VM files present" and `getDownloadStatus()` returns Ready on every startup. The remote web app treats a startup observation of Ready as the same download-completed transition that auto-navigates macOS/Windows users to Cowork after their first download — Linux users hit it on every launch. Add Patch 4b to short-circuit `getDownloadStatus()` to NotDownloaded on Linux. `iBA()` is left alone so the `download()` IPC still succeeds instantly and the Cowork tab still works when clicked — the web app's setup UI just passes through. Anchor is stable: `getDownloadStatus` and the enum property names (.Downloading, .Ready, .NotDownloaded) are readable in the minified bundle. Verified against 1.3109.0 with an isolated node run; idempotent on re-runs. Co-Authored-By: Claude <claude@anthropic.com> * refactor: destructure regex match in Patch 4b Co-Authored-By: Claude <claude@anthropic.com> --------- Co-authored-by: Claude <claude@anthropic.com>
This commit is contained in:
49
build.sh
49
build.sh
@@ -1224,8 +1224,12 @@ if (pipeMatch) {
|
||||
// Empty arrays mean no VM files are downloaded — this is correct
|
||||
// because the VM backend is non-functional on Linux (bwrap is
|
||||
// the only working backend and doesn't use VM files).
|
||||
// Note: [].every() returns true (vacuous truth), so bO() reports
|
||||
// "Ready" status. This is intentional — it skips the download.
|
||||
// Note: [].every() returns true (vacuous truth), so iBA() reports
|
||||
// that VM files are present. That makes the download() IPC
|
||||
// short-circuit without fetching anything, which is the intent
|
||||
// here. Patch 4b handles the downstream side-effect on
|
||||
// getDownloadStatus() so the Cowork tab doesn't auto-select on
|
||||
// every launch (#341).
|
||||
// ============================================================
|
||||
if (!code.includes('"linux":{') && !code.includes("'linux':{") &&
|
||||
!code.includes('linux:{')) {
|
||||
@@ -1255,6 +1259,47 @@ if (!code.includes('"linux":{') && !code.includes("'linux':{") &&
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Patch 4b: Suppress Cowork tab auto-selection on launch (#341)
|
||||
// Anchor: getDownloadStatus() method with readable enum property
|
||||
// names (.Downloading, .Ready, .NotDownloaded) — stable
|
||||
// across minifier releases.
|
||||
//
|
||||
// Patch 4's vacuous-truth workaround makes iBA() report that VM
|
||||
// files are "ready", which is what short-circuits the download
|
||||
// path. The side-effect is that getDownloadStatus() also returns
|
||||
// Ready on every startup, and the remote web app treats a
|
||||
// startup observation of Ready as the "download just finished"
|
||||
// transition that auto-navigates to Cowork on macOS/Windows.
|
||||
// Linux users hit that transition on every launch.
|
||||
//
|
||||
// Fix: return NotDownloaded on Linux from getDownloadStatus().
|
||||
// iBA() is left alone so download() still short-circuits, and
|
||||
// clicking the Cowork tab still works (the web app's setup flow
|
||||
// calls download() which returns success immediately).
|
||||
// ============================================================
|
||||
{
|
||||
const statusRe = /getDownloadStatus\(\)\{return\s+(\w+\(\)\?(\w+)\.Downloading:\w+\(\)\?\2\.Ready:\2\.NotDownloaded)\}/;
|
||||
const statusMatch = code.match(statusRe);
|
||||
if (statusMatch) {
|
||||
const [whole, origExpr, enumVar] = statusMatch;
|
||||
const replacement =
|
||||
'getDownloadStatus(){return process.platform==="linux"?' +
|
||||
enumVar + '.NotDownloaded:' + origExpr + '}';
|
||||
code = code.replace(whole, replacement);
|
||||
console.log(' Patched getDownloadStatus to return ' +
|
||||
'NotDownloaded on Linux (suppresses auto-nav, #341)');
|
||||
patchCount++;
|
||||
} else if (code.includes(
|
||||
'getDownloadStatus(){return process.platform==="linux"?'
|
||||
)) {
|
||||
console.log(' Cowork auto-nav suppression already applied');
|
||||
} else {
|
||||
console.log(' WARNING: Could not find getDownloadStatus' +
|
||||
' pattern for auto-nav suppression (#341)');
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Patch 5: MSIX check bypass for Linux
|
||||
// The fz() function checks: if(t==="win32"&&!ga()) for MSIX
|
||||
|
||||
Reference in New Issue
Block a user