Skip to content

Take MarkSyncr from its release, not from Google's queue - #123

Merged
ralyodio merged 1 commit into
mainfrom
feat/marksyncr-from-release
Sep 24, 2026
Merged

ralyodio merged 1 commit into
mainfrom
feat/marksyncr-from-release

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Take MarkSyncr from its release, not from Google's queue

The bundled MarkSyncr came from the Chrome Web Store's published CRX, which tied
this bundle to Google's review queue. A fix released upstream does not reach the
published CRX until a reviewer approves it, so v3.15.0 shipped a vault import
that had already been fixed. It is silent too: the build succeeds and nobody
learns the bundled copy is behind until a user hits the old bug.

Right now that gap is open again. MarkSyncr 0.8.42 carries a Bitwarden JSON
import fix and 0.8.43 makes that import fast, and the store still serves 0.8.41
because 0.8.42 is in review and 0.8.43 is queued behind it. A TronBrowser release
today would bundle the same 0.8.41 it already has.

MarkSyncr now attaches its built ZIP to its GitHub release, so this prefers that:
the same artifact, published the moment a version is tagged, with no third party
in the path. The store stays as a fallback, because losing the bundled extension
entirely would be worse than bundling an older one.

The fetch also reports which version it got, and says when it came from the store
and may therefore lag. Not knowing that is precisely how v3.15.0 went out.

Verified with no release asset published yet: it falls back and prints
"fetched MarkSyncr 0.8.41 (CWS ..., may lag behind the release)".

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

The bundled MarkSyncr came from the Chrome Web Store's published CRX, which tied
this bundle to Google's review queue. A fix released upstream does not reach the
published CRX until a reviewer approves it, so v3.15.0 shipped a vault import
that had already been fixed. It is silent too: the build succeeds and nobody
learns the bundled copy is behind until a user hits the old bug.

Right now that gap is open again. MarkSyncr 0.8.42 carries a Bitwarden JSON
import fix and 0.8.43 makes that import fast, and the store still serves 0.8.41
because 0.8.42 is in review and 0.8.43 is queued behind it. A TronBrowser release
today would bundle the same 0.8.41 it already has.

MarkSyncr now attaches its built ZIP to its GitHub release, so this prefers that:
the same artifact, published the moment a version is tagged, with no third party
in the path. The store stays as a fallback, because losing the bundled extension
entirely would be worse than bundling an older one.

The fetch also reports which version it got, and says when it came from the store
and may therefore lag. Not knowing that is precisely how v3.15.0 went out.

Verified with no release asset published yet: it falls back and prints
"fetched MarkSyncr 0.8.41 (CWS ..., may lag behind the release)".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

ThreatCrush Security Scan

52 finding(s)

HIGH/CRITICAL: 3 | MEDIUM: 28 | LOW: 21

Severity Rule Location
HIGH py-ssrf-outbound-request apps/desktop/launcher/tron-tor-helper:303
HIGH py-ssrf-outbound-request apps/desktop/launcher/tron-tor-helper:437
HIGH sh-remote-script-execution apps/web/public/install.sh:757
MEDIUM js-open-redirect apps/desktop/extensions/ai-sidebar/install-helper.js:156
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/media.js:34
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/media.js:57
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/newtab.js:237
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/newtab.js:266
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/newtab.js:336
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/options.js:306
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/sidepanel.js:78
MEDIUM js-unescaped-html-sink apps/desktop/extensions/ai-sidebar/sidepanel.js:166
MEDIUM js-unescaped-html-sink apps/extensions/public/store.js:77
MEDIUM js-unescaped-html-sink apps/extensions/public/store.js:227
MEDIUM js-unescaped-html-sink apps/extensions/public/store.js:569
MEDIUM js-unescaped-html-sink apps/web/public/app.js:29
MEDIUM js-unescaped-html-sink apps/web/public/dns.js:54
MEDIUM sh-remote-script-execution apps/web/public/install.sh:164
MEDIUM sh-remote-script-execution apps/web/public/install.sh:169
MEDIUM sh-remote-script-execution apps/web/public/install.sh:282
MEDIUM sh-remote-script-execution apps/web/public/install.sh:300
MEDIUM sh-remote-script-execution apps/web/public/install.sh:813
MEDIUM sh-remote-script-execution apps/web/public/install.sh:864
MEDIUM js-unescaped-html-sink apps/web/public/settings.js:96
MEDIUM js-unescaped-html-sink apps/web/public/settings.js:168
MEDIUM js-dynamic-code-execution packages/sdk/src/mcp/tools.ts:125
MEDIUM js-dynamic-code-execution packages/sdk/src/page.ts:68
MEDIUM js-dynamic-code-execution packages/sdk/src/page.ts:73
MEDIUM sql-template-interpolation services/api/src/store/db.ts:116
MEDIUM js-dynamic-code-execution services/api/src/store/scanner.ts:44
MEDIUM sh-predictable-temp-path start.sh:25
LOW js-dynamic-code-execution apps/desktop/extensions/ai-sidebar/pit-proxy.test.js:8
LOW js-dynamic-code-execution packages/agent-runtime/src/analyze/form-script.test.ts:6
LOW js-unescaped-html-sink packages/agent-runtime/src/analyze/form-script.test.ts:26
LOW js-unescaped-html-sink packages/agent-runtime/src/analyze/form-script.test.ts:49
LOW js-dynamic-code-execution packages/browser-core/src/automation/extract-script.test.ts:6
LOW js-unescaped-html-sink packages/browser-core/src/automation/extract-script.test.ts:16
LOW js-unescaped-html-sink packages/browser-core/src/automation/extract-script.test.ts:45
LOW js-unescaped-html-sink packages/browser-core/src/automation/extract-script.test.ts:57
LOW js-unescaped-html-sink packages/browser-core/src/automation/extract-script.test.ts:80
LOW js-unescaped-html-sink packages/browser-core/src/automation/extract-script.test.ts:99
LOW js-dynamic-code-execution packages/browser-core/src/automation/snapshot-script.test.ts:11
LOW js-unescaped-html-sink packages/browser-core/src/automation/snapshot-script.test.ts:62
LOW js-unescaped-html-sink packages/browser-core/src/automation/snapshot-script.test.ts:101
LOW js-unescaped-html-sink packages/provenance/src/scan.test.ts:47
LOW js-unescaped-html-sink packages/provenance/src/scan.test.ts:170
LOW js-unescaped-html-sink packages/provenance/src/scan.test.ts:216
LOW js-dynamic-code-execution packages/sdk/src/mcp/automate.test.ts:261
LOW secret-generic-api-key packages/storage/src/config.ts:51
LOW secret-generic-credential packages/storage/src/config.ts:51

…and 2 more. Full results in the Security tab.

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 47fbe13 into main Sep 24, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant