refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

refactor(shared): move the node:sqlite Effect SQL client into shared - #7272

Open
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client
Open

refactor(shared): move the node:sqlite Effect SQL client into shared#7272
juliusmarminge wants to merge 2 commits into
browser-profilesfrom
shared-sqlite-client

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 16, 2026

Copy link
Copy Markdown
Member

Stacked on #7254 — review that first; this PR's base is browser-profiles.

The desktop app needs to read browser cookie databases and should reach for the same Effect SQL client the server already uses, rather than opening node:sqlite by hand. Nothing about the client is server-specific, so it moves to packages/shared and both apps import it from there.

Pure move plus import updates — the client itself is unchanged. Split out of #7255 so the cookie-import work reviews on its own.

Model: Claude Opus 5 (1M context), harness: Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Import-path refactor only; persistence still loads the same client at runtime, but any missed old import would fail at build time.

Overview
Relocates the node:sqlite-backed Effect SqlClient implementation from apps/server into @t3tools/shared/nodeSqliteClient (same behavior; file renamed to nodeSqliteClient.ts) and exposes it via a new package export.

Server scripts (migrate-dev-db, t3-sqlite-state), migration tests, and the Node runtime loader in Sqlite.ts now import the shared module instead of a relative ../NodeSqliteClient path. The shared package test imports the local ./nodeSqliteClient.ts path after the move.

Reviewed by Cursor Bugbot for commit 6ba7425. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Move NodeSqliteClient into @t3tools/shared package

  • Moves NodeSqliteClient.ts and its test from apps/server/src/persistence/ to packages/shared/src/ (renamed to lowercase nodeSqliteClient), and adds a ./nodeSqliteClient export path in package.json
  • Updates all imports across apps/server scripts, migration tests, and the defaultSqliteClientLoaders loader to use @t3tools/shared/nodeSqliteClient instead of relative paths
  • Disables browser profile create/rename/remove and default-profile changes in IntegrationsSettings.tsx until client settings are hydrated, preventing premature mutations
  • Risk: all consumers must now use the scoped import @t3tools/shared/nodeSqliteClient; any remaining references to the old apps/server/src/persistence/NodeSqliteClient.ts path will fail to resolve

Macroscope summarized 6ba7425.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b93b4a04-c740-44b5-b1fb-f238ae669670

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the changed Effect service code (desktop BrowserSession/PreviewManager, server ProviderService, the NodeSqliteClient move) against the service conventions. Service definition order, inline Context.Service interfaces, make/layer exports, Foo["Service"] references, environment-based dependency acquisition, and the pure module move with no compatibility shims all look consistent. One import-convention deviation in the new contracts module is noted inline.

Posted via Macroscope — Effect Service Conventions

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: the new leading-icon utility on MenuSubTrigger also matches the chevron on sub-triggers that have no leading icon, which regresses the two existing icon-less sub-triggers (DiffPanel "Turn", PreviewMoreMenu "Appearance"). Details inline.

Posted via Macroscope — UI Consistency

@macroscopeapp

Copy link
Copy Markdown
Contributor

Correction to my previous review comment: the inline note referenced packages/contracts/src/browserProfile.ts, which belongs to the base branch (browser-profiles) and is not part of this pull request's changed files. Within this PR's actual scope — moving the node:sqlite Effect SQL client to @t3tools/shared/nodeSqliteClient and updating its importers — there are no Effect service convention findings: the move is pure, no compatibility re-export shim was left behind, every consumer was updated to the canonical path, and all imports use subpath namespace form.

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

Copy link
Copy Markdown
Contributor

UI consistency finding (inline comment could not be attached — apps/web/src/components/ui/menu.tsx is part of the stacked browser-profiles base, not this PR's own file list, so posting it here instead).

apps/web/src/components/ui/menu.tsxMenuSubTrigger leading-icon utility also hits the chevron

The new class string starts with [&>svg:first-of-type]:-mx-0.5. That only excludes the chevron when the trigger has a leading icon. On the two existing icon-less sub-triggers — DiffPanel's "Turn" and PreviewMoreMenu's "Appearance" — the chevron is the first svg of its type, so .trigger > svg:first-of-type (specificity 0,2,1) outranks the chevron's own ms-auto / -me-0.5 classes (0,1,0) and applies margin-inline: -0.125rem. ms-auto is overridden, so the chevron stops being pinned to the right edge and collapses next to the label.

Smallest fix: scope the utilities away from the last child, which never matches the chevron and behaves identically for real leading icons:

- "[&>svg:first-of-type]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:first-of-type:not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",+ "[&>svg:not(:last-child)]:-mx-0.5 flex min-h-8 cursor-pointer items-center gap-2 ... [&>svg:not(:last-child):not([class*='opacity-'])]:opacity-80 [&_svg]:pointer-events-none [&>svg]:shrink-0",

(the ... stands for the unchanged middle of the existing class string). Worth a quick check of the emitted CSS plus the "Appearance" and "Turn" submenus after the change.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a999041

Macroscope's review found this PR approvable — This PR is a mechanical relocation of an unchanged SQLite client into the shared package, with corresponding export and import updates. The production loader continues to use the same implementation, and no product defaults or user-facing behavior change.

No code changes detected at 6ba7425. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 16, 2026
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.1 KiB15.1 KiB
CodexThread snapshot wire6.9 KiB7.3 KiB
CodexLive turn WebSocket wire6.3 KiB7.8 KiB
CodexLive turn WebSocket decoded54.7 KiB66.4 KiB
CodexLive turn messages821
ClaudeTotal thread wire13.5 KiB15.1 KiB
ClaudeThread snapshot wire6.9 KiB7.3 KiB
ClaudeLive turn WebSocket wire6.6 KiB7.8 KiB
ClaudeLive turn WebSocket decoded57.8 KiB66.4 KiB
ClaudeLive turn messages1021

Baseline: unavailable · PR result: 6ba7425 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 16, 2026
@github-actionsgithub-actionsBot removed the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Aug 17, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 6 times, most recently from 9cd8c24 to aae2535CompareAugust 17, 2026 08:23
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 2 times, most recently from 71cdc41 to a999041CompareAugust 29, 2026 07:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 29, 2026 07:04

Dismissing prior approval to re-evaluate a999041

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 29, 2026
@juliusmarminge
juliusmarmingeforce-pushed the shared-sqlite-client branch 3 times, most recently from 193805f to 5c239bfCompareAugust 29, 2026 07:50
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 29, 2026
juliusmarmingeand others added 2 commits September 1, 2026 16:33
The desktop app needs to read browser cookie databases and should reach for
the same Effect SQL client the server already uses rather than opening
`node:sqlite` by hand. Nothing about the client is server-specific, so it moves
to `packages/shared` and both apps import it from there.
Pure move plus import updates; the client itself is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge