Skip to content

fix(shared): release relay install locks on cancellation - #10585

Merged
juliusmarminge merged 1 commit into
pingdotgg:mainfrom
yashranaway:fix/relay-install-lock-cancellation
Oct 8, 2026
Merged

juliusmarminge merged 1 commit into
pingdotgg:mainfrom
yashranaway:fix/relay-install-lock-cancellation

Conversation

@yashranaway

@yashranaway yashranaway commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

What Changed

The relay client installer registers lock cleanup as part of each successful exclusive acquisition. The installation owns that cleanup through its scope, while contention waits remain interruptible.

Why

Cancellation after the lock file was created but before the old cleanup handler was installed could strand the lock. A subsequent installation then failed as locked until stale-lock recovery became eligible.

Testing

  • The controlled acquisition-cancellation regression leaves a lock behind on upstream and removes it with the fix.
  • Eight focused relay client tests pass, including cancellation during download, cancellation while another installer owns the lock, checksum failure cleanup, and an immediate successful retry.
  • Shared-package typecheck, scoped lint, and formatting pass.
  • No tunnel configuration, frontend changes, browser verification, or live network operations.

Model: GPT-6 Astra
Harness: T3 code

Note

Release relay install locks on cancellation in cloudflared.installWithProgress

  • Lock cleanup moves from an installer-level finalizer into an acquire-release resource inside cloudflared.acquireInstallLock, so the lock file is force-removed when the scope exits — including interruption or cancellation.
  • Failed acquisition attempts caused by an existing lock owned by another installer do not register cleanup, so that pre-existing lock is left untouched.
  • cloudflared.installWithProgress now wraps installUnlocked in an explicit scoped effect so the acquire-release lock resource is finalized for the public install operation.
  • Adds tests covering cancellation during a contended lock, during download, and racing with lock acquisition, plus an assertion that an invalid checksum leaves no lock behind.
  • Risk: installUnlocked no longer unconditionally removes the lock file from its own finalizer; any caller that invokes installUnlocked outside of a managed scope will not get automatic lock cleanup.

Macroscope summarized 03235d8.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Sep 7, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Sep 7, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at c8e346b

Macroscope's review found this PR approvable — This focused fix changes only relay-install lock cleanup, ensuring acquired locks are released on cancellation without disturbing locks owned by competing installers. Targeted regression tests cover the affected lifecycle paths, and no product defaults, schemas, infrastructure, or static-analysis suppressions are changed.

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

@coderabbitai

coderabbitai Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e2e34d25-6edf-42a4-95c4-7eea44a16f85
📥 Commits

Reviewing files that changed from the base of the PR and between 36bd024 and c8e346b.

📒 Files selected for processing (2)
  • packages/shared/src/relayClient.test.ts
  • packages/shared/src/relayClient.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The relay client now removes install locks through scoped resource finalization. Tests cover contended installs, cancellation during download and lock acquisition, and checksum failure.

Changes

Install lock cleanup

Layer / File(s) Summary
Scoped install-lock lifecycle
packages/shared/src/relayClient.ts
Lock acquisition registers lock removal with Effect.acquireRelease. installUnlocked no longer performs separate cleanup. installWithProgress runs the installation with Effect.scoped.
Cancellation and failure validation
packages/shared/src/relayClient.test.ts
Tests check lock preservation during contention and lock removal after download cancellation, interrupted lock acquisition, and checksum mismatch.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to c8e34

Cancellation now releases an acquired installation lock without removing another installer’s lock. The change is ready to merge after normal checks.

Security Architecture Review

Security architecture risk: ⚪ Minimal · up to c8e34

The change closes a cancellation gap without expanding installation authority or weakening executable validation. Successful acquisitions own their cleanup, while interrupted contention leaves the other installer’s lock intact.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The changed state is the lock associated with a managed relay executable. Installations targeting that same managed path share the contention domain. The reviewed changes add neither a new caller nor additional filesystem, credential, or execution authority.

Trust Boundaries and Controls

  • observed — Exclusive creation remains the acquisition control. AlreadyExists becomes a failed acquisition without registering cleanup, and the contention-cancellation test asserts that the foreign lock’s contents remain intact.

Resilience and Maintainability Implications

  • observed — Lock ownership remains path-based rather than token-based, stale recovery remains mtime-based, and release suppresses filesystem removal errors. These limitations predate the PR: scoped release improves cancellation handling but does not guarantee removal after filesystem failure or abrupt process termination.
🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the problem, implementation, affected behavior, and focused verification results. It does not provide the required Scope and approval information, such as a linked issue, main… Add a Scope and approval section. Include the triaged issue or explicit maintainer approval with a link, or explain why this focused fix qualifies as an obvious bug exemption. Rename or align the existing sections with Problem, Change, Scop…
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the primary change: releasing relay install locks when cancellation occurs.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the problem, implementation, affected behavior, and focused verification results. It does not provide the required Scope and approval information, such as a linked issue, maintainer approval, or an explanation that this focused fix qualifies as an obvious bug exemption. It also uses alternative headings instead of the template headings.

Resolution

Add a Scope and approval section. Include the triaged issue or explicit maintainer approval with a link, or explain why this focused fix qualifies as an obvious bug exemption. Rename or align the existing sections with Problem, Change, Scope and approval, and Verification where practical.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

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

@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 1, 2026 — with ChatGPT Codex Connector
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 1, 2026 01:25

Dismissing prior approval to re-evaluate 03235d8

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Oct 1, 2026
The install lock is now acquired with acquireRelease inside the install
scope, so cancelling an install at any point, including right after the
lock write lands, removes the lock this installer created. A contended
install that is cancelled leaves the other installer's lock alone.
Rebased onto main after pingdotgg#17275 (the two original commits are squashed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juliusmarminge
juliusmarminge force-pushed the fix/relay-install-lock-cancellation branch from 36bd024 to c8e346b Compare October 8, 2026 20:15
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 8, 2026 20:15

Dismissing prior approval to re-evaluate c8e346b

@juliusmarminge

Copy link
Copy Markdown
Member

Rebased onto main after #17275 and squashed into one commit (c8e346b). Your three cancellation tests and the lock check on the checksum test are ported onto main's test file. They pass, and "releases a lock acquired while installation is cancelled" fails without the fix.

@juliusmarminge
juliusmarminge merged commit c377d1c into pingdotgg:main Oct 8, 2026
29 checks passed
@yashranaway
yashranaway deleted the fix/relay-install-lock-cancellation branch October 8, 2026 20:23
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 9, 2026
## What's Changed
* fix(server): pairing tokens work on Node versions that cannot bind booleans by @chisewaguri in pingdotgg/t3code#16730
* fix(mobile): HTML pages in a thread no longer trap scrolling on Android by @SunkenInTime in pingdotgg/t3code#17211
* fix(web): centered scrollers no longer shift when the scrollbar appears by @maria-rcks in pingdotgg/t3code#17077
* fix(web): distinguish thread search matches from code tints by @Yash-Singh1 in pingdotgg/t3code#17263
* fix(server): Pi extension wakes get an owned continuation turn by @StiensWout in pingdotgg/t3code#17214
* fix(server): Pi discovers optional T3 tools on demand by @StiensWout in pingdotgg/t3code#17220
* fix(web): stack merge dialog closes as soon as you confirm by @flamboh in pingdotgg/t3code#17116
* fix(server): Pi editor dialogs prefill the answer composer by @StiensWout in pingdotgg/t3code#17206
* fix(desktop): generate valid User-Agent that follows RFC 9110 guidelines by @jztmanyl in pingdotgg/t3code#17264
* fix(server): Pi discovers workspace skills and commands by @StiensWout in pingdotgg/t3code#17190
* fix(mobile): preserve navigation after native swipe back by @juliusmarminge in pingdotgg/t3code#17268
* fix(server): keep newly discovered models out of legacy groups by @Bil0000 in pingdotgg/t3code#14314
* feat(editors): open remote projects in JetBrains IDEs over SSH by @juliusmarminge in pingdotgg/t3code#17271
* test(desktop): expect JetBrains IDEs among remote editors by @juliusmarminge in pingdotgg/t3code#17291
* fix(server): recognize authenticated GitHub Enterprise hosts by @alimek in pingdotgg/t3code#11059
* fix(connect): relay client updates itself and skips incompatible cloudflared by @juliusmarminge in pingdotgg/t3code#17275
* fix(shared): relay client install waits out a brief Windows file lock by @ScottN-PV in pingdotgg/t3code#16998
* fix(shared): release relay install locks on cancellation by @yashranaway in pingdotgg/t3code#10585
* chore(shared): bump managed cloudflared to 2026.10.0 by @bompus in pingdotgg/t3code#11184
* fix(shared): bound cloudflared download with 10-minute timeout by @kvnloo in pingdotgg/t3code#14139
* refactor(provider-core): add provider-core and provider-testing packages by @juliusmarminge in pingdotgg/t3code#17299
* refactor(settings): drop the legacy per-driver providers map by @juliusmarminge in pingdotgg/t3code#17300
* refactor(provider-pi): move Pi into its own provider package by @juliusmarminge in pingdotgg/t3code#17302
* feat(models): tell users when a CLI update unlocks a new model by @juliusmarminge in pingdotgg/t3code#17307
* fix(web): collapsed composer reserves room for wide send actions by @maria-rcks in pingdotgg/t3code#17016
* fix(muse): workflow subagents no longer stall on hidden approvals by @t3dotgg in pingdotgg/t3code#17329

## New Contributors
* @chisewaguri made their first contribution in pingdotgg/t3code#16730
* @jztmanyl made their first contribution in pingdotgg/t3code#17264
* @alimek made their first contribution in pingdotgg/t3code#11059
* @kvnloo made their first contribution in pingdotgg/t3code#14139

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261008.2833...v0.0.46-nightly.20261008.2849

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261008.2849
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 9, 2026
## What's Changed
* fix(server): pairing tokens work on Node versions that cannot bind booleans by @chisewaguri in pingdotgg/t3code#16730
* fix(mobile): HTML pages in a thread no longer trap scrolling on Android by @SunkenInTime in pingdotgg/t3code#17211
* fix(web): centered scrollers no longer shift when the scrollbar appears by @maria-rcks in pingdotgg/t3code#17077
* fix(web): distinguish thread search matches from code tints by @Yash-Singh1 in pingdotgg/t3code#17263
* fix(server): Pi extension wakes get an owned continuation turn by @StiensWout in pingdotgg/t3code#17214
* fix(server): Pi discovers optional T3 tools on demand by @StiensWout in pingdotgg/t3code#17220
* fix(web): stack merge dialog closes as soon as you confirm by @flamboh in pingdotgg/t3code#17116
* fix(server): Pi editor dialogs prefill the answer composer by @StiensWout in pingdotgg/t3code#17206
* fix(desktop): generate valid User-Agent that follows RFC 9110 guidelines by @jztmanyl in pingdotgg/t3code#17264
* fix(server): Pi discovers workspace skills and commands by @StiensWout in pingdotgg/t3code#17190
* fix(mobile): preserve navigation after native swipe back by @juliusmarminge in pingdotgg/t3code#17268
* fix(server): keep newly discovered models out of legacy groups by @Bil0000 in pingdotgg/t3code#14314
* feat(editors): open remote projects in JetBrains IDEs over SSH by @juliusmarminge in pingdotgg/t3code#17271
* test(desktop): expect JetBrains IDEs among remote editors by @juliusmarminge in pingdotgg/t3code#17291
* fix(server): recognize authenticated GitHub Enterprise hosts by @alimek in pingdotgg/t3code#11059
* fix(connect): relay client updates itself and skips incompatible cloudflared by @juliusmarminge in pingdotgg/t3code#17275
* fix(shared): relay client install waits out a brief Windows file lock by @ScottN-PV in pingdotgg/t3code#16998
* fix(shared): release relay install locks on cancellation by @yashranaway in pingdotgg/t3code#10585
* chore(shared): bump managed cloudflared to 2026.10.0 by @bompus in pingdotgg/t3code#11184
* fix(shared): bound cloudflared download with 10-minute timeout by @kvnloo in pingdotgg/t3code#14139
* refactor(provider-core): add provider-core and provider-testing packages by @juliusmarminge in pingdotgg/t3code#17299
* refactor(settings): drop the legacy per-driver providers map by @juliusmarminge in pingdotgg/t3code#17300
* refactor(provider-pi): move Pi into its own provider package by @juliusmarminge in pingdotgg/t3code#17302
* feat(models): tell users when a CLI update unlocks a new model by @juliusmarminge in pingdotgg/t3code#17307
* fix(web): collapsed composer reserves room for wide send actions by @maria-rcks in pingdotgg/t3code#17016
* fix(muse): workflow subagents no longer stall on hidden approvals by @t3dotgg in pingdotgg/t3code#17329

## New Contributors
* @chisewaguri made their first contribution in pingdotgg/t3code#16730
* @jztmanyl made their first contribution in pingdotgg/t3code#17264
* @alimek made their first contribution in pingdotgg/t3code#11059
* @kvnloo made their first contribution in pingdotgg/t3code#14139

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261008.2833...v0.0.46-nightly.20261008.2849

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261008.2849
adampeterhiggins added a commit to adampeterhiggins/t3code that referenced this pull request Oct 9, 2026
* fix(web): link pull requests to threads in folders that aren't Git repos (pingdotgg#15946)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(web): find messages and plans in the current thread (pingdotgg#10439)

Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(web): improve terminal scrollback navigation and snapshots (pingdotgg#17091)

* docs(internals): add a checklist for adding a provider (pingdotgg#17229)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(mobile): keep native screens ordered during stack pops (pingdotgg#17231)

* fix(server): pairing tokens work on Node versions that cannot bind booleans (pingdotgg#16730)

* fix(mobile): HTML pages in a thread no longer trap scrolling on Android (pingdotgg#17211)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): centered scrollers no longer shift when the scrollbar appears (pingdotgg#17077)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(web): distinguish thread search matches from code tints (pingdotgg#17263)

* fix(server): Pi extension wakes get an owned continuation turn (pingdotgg#17214)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Pi discovers optional T3 tools on demand (pingdotgg#17220)

* fix(web): stack merge dialog closes as soon as you confirm (pingdotgg#17116)

* fix(server): Pi editor dialogs prefill the answer composer (pingdotgg#17206)

* fix(desktop): generate valid User-Agent that follows RFC 9110 guidelines (pingdotgg#17264)

* fix(server): Pi discovers workspace skills and commands (pingdotgg#17190)

* fix(mobile): preserve navigation after native swipe back (pingdotgg#17268)

* fix(server): keep newly discovered models out of legacy groups (pingdotgg#14314)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(editors): open remote projects in JetBrains IDEs over SSH (pingdotgg#17271)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* test(desktop): expect JetBrains IDEs among remote editors (pingdotgg#17291)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): recognize authenticated GitHub Enterprise hosts (pingdotgg#11059)

Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>

* fix(connect): relay client updates itself and skips incompatible cloudflared (pingdotgg#17275)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): relay client install waits out a brief Windows file lock (pingdotgg#16998)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(shared): release relay install locks on cancellation (pingdotgg#10585)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* chore(shared): bump managed cloudflared to 2026.10.0 (pingdotgg#11184)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): bound cloudflared download with 10-minute timeout (pingdotgg#14139)

Co-authored-by: Kevin Rajan <kevin@kvnloo.dev>

* refactor(provider-core): add provider-core and provider-testing packages (pingdotgg#17299)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(settings): drop the legacy per-driver providers map (pingdotgg#17300)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(provider-pi): move Pi into its own provider package (pingdotgg#17302)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(models): tell users when a CLI update unlocks a new model (pingdotgg#17307)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): collapsed composer reserves room for wide send actions (pingdotgg#17016)

* fix(muse): workflow subagents no longer stall on hidden approvals (pingdotgg#17329)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(provider-core): share attachment prompts, notifications, and event loggers (pingdotgg#17330)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): file previews handle downloads, in-page links, and repo paths, and favicons stop leaking internal hosts (pingdotgg#16950)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(server): environment-hosted browser tabs behave like a normal browser (pingdotgg#16963)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(desktop): browser tab fixes for fullscreen, shortcuts, links, reload and hidden tabs (pingdotgg#16961)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(web): desktop opens remote environments' browser tabs locally (pingdotgg#17316)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(desktop): the t3 command warns instead of installing behind another t3 (pingdotgg#17351)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): images, video, HTML and PDF preview in a thread before its first message (pingdotgg#17352)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(provider-muse): move Muse Code into its own provider package (pingdotgg#17331)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): semantic branch naming hint lines up with its setting (pingdotgg#16972)

* fix(mobile): restore chat image previews in the v5 stack (pingdotgg#17361)

* feat(mobile): fade working threads and match web's status labels (pingdotgg#17368)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): agent browser tools stop bloating history, fall back sensibly, and respect ownership (pingdotgg#16956)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(web): add room for thread timeline markers (pingdotgg#17372)

* fix(web): drop sidebar context before cancelling pointer drag (pingdotgg#17373)

* refactor(providers): namespace-import service modules in core, Muse, Pi, and testing (pingdotgg#17375)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(auth): show connection permissions and enforce session lifetime (pingdotgg#17370)

Co-authored-by: Bear Huddleston <bear@bearhuddleston.dev>

* refactor(provider-opencode): move OpenCode into its own provider package (pingdotgg#17345)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(provider-cursor): move Cursor into its own provider package (pingdotgg#17349)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(provider-acp): move the shared ACP adapter into its own package (pingdotgg#17354)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(provider-grok): move Grok into its own provider package (pingdotgg#17357)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): speed up long thread message sync (pingdotgg#17387)

* fix(desktop): cancel backend pipe reads to avoid slow shutdown (pingdotgg#17386)

* refactor(providers): adapter factories yield their services (pingdotgg#17381)

* fix(web): show a row spinner instead of a banner when expanding a folder (pingdotgg#17378)

* fix(server): a timed-out browser drag no longer exits the server (pingdotgg#17360)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): a logged-out Claude CLI no longer reports as authenticated (pingdotgg#15459)

* fix(server): Pi loads every selected skill without losing prompt text (pingdotgg#17194)

* fix(server): keep the Claude MCP token out of process arguments (pingdotgg#17408)

* fix(server): reconcile Pi native session rewinds (pingdotgg#13839)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(provider-pi): cover continuation offers through the driver (pingdotgg#17407)

* refactor(provider-acp-registry): move the ACP Registry into its own package (pingdotgg#17405)

* fix(server): relay client updates no longer drop the host off T3 Connect (pingdotgg#17366)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: chise <lqff.yt@gmail.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: jztmanyl <jztmanyl@gmail.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Grzegorz Mandziak <4248465+alimek@users.noreply.github.com>
Co-authored-by: Scott Norteman <snorteman@gmail.com>
Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>
Co-authored-by: Aaron Queen <bompus@users.noreply.github.com>
Co-authored-by: Kevin Rajan <7121943+kvnloo@users.noreply.github.com>
Co-authored-by: Kevin Rajan <kevin@kvnloo.dev>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Daniel Alvim <danielalvim@tuta.io>
Co-authored-by: Bear Huddleston <bear@bearhuddleston.dev>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews size:XS 0-9 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants