Skip to content

Commit eeff857

Browse files
authored
fix(t3): accept T3 Code 0.0.29 and matching nightlies (#81)
## Summary - Accept T3 Code server bases `0.0.28` and `0.0.29`, including `*-nightly.…` builds of those bases - Refresh the pinned upstream contract commit to the verified shell/dispatch surface - Update adapter docs and unit tests so Nightly `0.0.29-nightly.20260720.859` can reconnect ## Test plan - [x] `cargo test -p microbridged t3code` - [x] `cargo clippy -p microbridged --all-targets -- -D warnings` - [ ] After merge + release: enable T3 Code Nightly in Microbridge Integrations and confirm Connected (not Incompatible) Made with [Cursor](https://cursor.com)
1 parent db38ce8 commit eeff857

2 files changed

Lines changed: 25 additions & 11 deletions

File tree

adapters/t3code/README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@ Microbridge uses T3 Code's authenticated public endpoints:
2121

2222
It never reads T3 Code databases, bootstrap credentials, or desktop internals.
2323

24-
The compatibility suite is pinned to T3 server `0.0.28` and upstream contract
25-
commit `ebe8afb1df357423a0e036b388af3e739d640205`. Other server versions are
24+
The compatibility suite is pinned to T3 server bases `0.0.28` and `0.0.29`
25+
(including `*-nightly.…` builds of those bases) against upstream contract
26+
commit `5d34f9ff235115d43a6cb4b4561d10badf218b87`. Other server versions are
2627
reported as **Incompatible** until Microbridge verifies and ships their contract.
2728
The adapter opens threads with T3 Code's semantic deep link. Reasoning effort
2829
stays disabled because the current paired HTTP snapshot includes the selected
2930
value but not the provider/model option descriptors needed to choose the next
3031
valid level safely. Microbridge does not fake this with key presses or private
3132
desktop state.
3233

33-
The compatibility target is the contract present in `pingdotgg/t3code` as of
34-
July 18, 2026. Authentication failures return to **Needs setup**; transport
35-
failures show **Connecting** and retry with the existing paired credential.
34+
The compatibility target is the orchestration shell/dispatch contract present
35+
in `pingdotgg/t3code` as of July 20, 2026. Authentication failures return to
36+
**Needs setup**; transport failures show **Connecting** and retry with the
37+
existing paired credential.

crates/microbridged/src/t3code.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@ pub const T3_OWNER: u64 = u64::MAX - 1;
2424
const KEYCHAIN_SERVICE: &str = "ai.microbridge.t3code";
2525
#[cfg(target_os = "macos")]
2626
const KEYCHAIN_ACCOUNT: &str = "paired-environment";
27-
const SUPPORTED_SERVER_VERSION: &str = "0.0.28";
28-
const PINNED_CONTRACT_COMMIT: &str = "ebe8afb1df357423a0e036b388af3e739d640205";
27+
/// Base server versions whose paired HTTP orchestration contract Microbridge
28+
/// has verified. Nightly builds of these bases (`0.0.29-nightly.…`) are also
29+
/// accepted — T3 ships nightlies with the same shell/dispatch surface.
30+
const SUPPORTED_SERVER_VERSIONS: &[&str] = &["0.0.28", "0.0.29"];
31+
const PINNED_CONTRACT_COMMIT: &str = "5d34f9ff235115d43a6cb4b4561d10badf218b87";
2932

3033
#[derive(Debug, Clone, Serialize, Deserialize)]
3134
pub struct T3Credential {
@@ -327,7 +330,7 @@ pub fn spawn(
327330
format!(
328331
"T3 Code server {} is incompatible with Microbridge's pinned {} contract ({}). Update Microbridge before reconnecting.",
329332
descriptor.server_version,
330-
SUPPORTED_SERVER_VERSION,
333+
SUPPORTED_SERVER_VERSIONS.join(" / "),
331334
&PINNED_CONTRACT_COMMIT[..12],
332335
),
333336
);
@@ -427,7 +430,12 @@ async fn fetch_descriptor(
427430
}
428431

429432
fn contract_is_supported(server_version: &str) -> bool {
430-
server_version == SUPPORTED_SERVER_VERSION
433+
SUPPORTED_SERVER_VERSIONS.iter().any(|base| {
434+
server_version == *base
435+
|| server_version
436+
.strip_prefix(base)
437+
.is_some_and(|rest| rest.starts_with("-nightly."))
438+
})
431439
}
432440

433441
async fn fetch_shell(
@@ -728,9 +736,13 @@ mod tests {
728736
#[test]
729737
fn pins_the_supported_t3_contract_version() {
730738
assert!(contract_is_supported("0.0.28"));
731-
assert!(!contract_is_supported("0.0.28-nightly.1"));
739+
assert!(contract_is_supported("0.0.28-nightly.1"));
740+
assert!(contract_is_supported("0.0.29"));
741+
assert!(contract_is_supported("0.0.29-nightly.20260720.859"));
732742
assert!(!contract_is_supported("0.0.27"));
733-
assert!(!contract_is_supported("0.0.29"));
743+
assert!(!contract_is_supported("0.0.30"));
744+
assert!(!contract_is_supported("0.0.290"));
745+
assert!(!contract_is_supported("0.0.29-beta.1"));
734746
assert_eq!(PINNED_CONTRACT_COMMIT.len(), 40);
735747
}
736748

0 commit comments

Comments
 (0)