Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
d897641
fix(pull-requests): keep cached PR chrome on reopen (#9294)
maria-rcks Sep 3, 2026
0fbb942
feat(environments): draw each environment as the machine it runs on (…
juliusmarminge Sep 3, 2026
9ebbeda
feat(web): apply and remove labels from the pull request tab (#9313)
juliusmarminge Sep 3, 2026
31eeb44
fix(sidebar): collapse settled and snoozed shelves by default (#9314)
maria-rcks Sep 3, 2026
922bd69
refactor(media): unify file and media previews across clients (#9253)
juliusmarminge Sep 3, 2026
ec44bc5
fix(chat): keep live tool labels in present tense (#9316)
maria-rcks Sep 3, 2026
194f838
chore: audit lint directives and move plugin allowlists into config (…
juliusmarminge Sep 3, 2026
b9b1b8f
chore(ci): narrow the Effect conventions check-run agent (#9321)
juliusmarminge Sep 3, 2026
85f2479
refactor(mobile): style plain views with Uniwind classes instead of t…
juliusmarminge Sep 3, 2026
66419a1
fix(dev): share dev servers on the loopback Vite actually binds (#9324)
juliusmarminge Sep 3, 2026
12f1fc4
fix(web): line up the titlebar wordmark label and version pill (#9255)
tristanmanchester Sep 3, 2026
9409dd2
fix(web): make the diff layout toggle a persisted setting (#9326)
juliusmarminge Sep 3, 2026
3b2de9d
chore: dedupe lightningcss and tailwind node bindings (#9331)
juliusmarminge Sep 3, 2026
f5fbb1b
chore: upgrade vite-plus to 0.3.0 (#9327)
juliusmarminge Sep 3, 2026
1aa44a0
feat(web): add a file tree to the diff panel and pull request code ta…
juliusmarminge Sep 3, 2026
5f84efa
feat(web): add PageUp/PageDown chat navigation (#9315)
Yash-Singh1 Sep 3, 2026
2a3cfe4
fix(web): collapse PR header actions to icons when narrow (#9334)
maria-rcks Sep 3, 2026
d42254d
fix(web): resolve Vite sourcemap and supports warnings (#9343)
juliusmarminge Sep 3, 2026
18062da
feat(web): choose whether links open in the default browser or in T3 …
juliusmarminge Sep 3, 2026
6a5a18c
fix(web): add press feedback to buttons (#9349)
maria-rcks Sep 3, 2026
f6c04c5
feat(web): add customizable project icons (#9137)
saphid Sep 3, 2026
1575ada
fix(mobile): stop indented code overflowing Android chat bubbles (#9347)
Adamulek123 Sep 3, 2026
0bc59bb
fix(web): let the pull request list use wide screens (#9351)
juliusmarminge Sep 3, 2026
6cf0c6e
feat: display native app and browser icons in work logs (#9093)
Yash-Singh1 Sep 3, 2026
48ba76b
fix(web): collapse oldest pull request comments (#9323)
maria-rcks Sep 3, 2026
854541a
fix(pull-requests): shared state + not settling? (#9332)
maria-rcks Sep 3, 2026
9f9359b
fix(web): stop usage summary requests reporting slow RPCs (#9358)
juliusmarminge Sep 3, 2026
b5f4e81
feat(web): suggest ssh hosts in a dropdown under the host field (#9171)
flamboh Sep 3, 2026
d4bd892
feat(web): mod+w closes the active right panel tab before the window …
juliusmarminge Sep 3, 2026
5eb4f45
test(web): remove static markup-only component tests (#9364)
t3-code[bot] Sep 3, 2026
829c3db
fix(environments): draw the machine icon everywhere an environment is…
juliusmarminge Sep 3, 2026
c89e3e1
fix(web): settled sidebar rows use the project fallback icon (#9366)
juliusmarminge Sep 3, 2026
cf0bb4c
fix(web): match project icon chooser button sizes (#9368)
Yash-Singh1 Sep 3, 2026
1f7a3c1
fix(mobile): pressed and disabled styles no longer apply unconditiona…
juliusmarminge Sep 3, 2026
24799de
fix(mobile): size expanded tool groups correctly (#9359)
juliusmarminge Sep 3, 2026
5b8445b
fix(web): collapse the resting composer (#7855)
chrisdeeming Sep 3, 2026
4b26132
fix(web): keep trailing tool groups out of "Worked for" accordion (#9…
Yash-Singh1 Sep 3, 2026
5d1b02c
feat(marketing): put named-developer quotes on the landing page (#9385)
t3dotgg Sep 3, 2026
18573d6
fix(claude): expand slash commands when a message has attachments (#9…
t3dotgg Sep 3, 2026
044ea8e
fix(web): stop the resting composer layout loop (#9393)
t3dotgg Sep 3, 2026
652515a
fix(web): render assistant images inline in chat (#9126)
t3dotgg Sep 3, 2026
21edfe6
sync: integrate upstream wave 2 through 652515a34
cursoragent Sep 4, 2026
6ed8ca8
fix(web): restore video-open loading state after composer merge
cursoragent Sep 4, 2026
79f716e
fix(sync): restore attachment inline metadata and CI test expectations
cursoragent Sep 4, 2026
2fe44d4
chore: format wave 2 files for vp check
cursoragent Sep 4, 2026
dbf294c
fix(web): drop unused react-hooks eslint-disable comments
cursoragent Sep 4, 2026
dba0bc5
fix(sync): unblock CI after upstream merge leftovers
cursoragent Sep 4, 2026
3161b7f
merge: wave 1 ClaudeAdapter CI fixes into wave 2
cursoragent Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
89 changes: 31 additions & 58 deletions .macroscope/check-run-agents/effect-service-conventions.md

Large diffs are not rendered by default.

16 changes: 7 additions & 9 deletions apps/desktop/src/backend/DesktopBackendManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -663,15 +663,13 @@ export const makeBackendInstance = Effect.fn("makeBackendInstance")(function* (
Ref.update(state, withActiveRun(runId, f));

const snapshot = Ref.get(state).pipe(
Effect.map(
(current): DesktopBackendSnapshot => ({
desiredRunning: current.desiredRunning,
ready: current.ready,
activePid: activePid(current.active),
restartAttempt: current.restartAttempt,
restartScheduled: Option.isSome(current.restartFiber),
}),
),
Effect.map((current): DesktopBackendSnapshot => ({
desiredRunning: current.desiredRunning,
ready: current.ready,
activePid: activePid(current.active),
restartAttempt: current.restartAttempt,
restartScheduled: Option.isSome(current.restartFiber),
})),
);
const currentConfig = Ref.get(state).pipe(Effect.map((current) => current.config));

Expand Down
2 changes: 2 additions & 0 deletions apps/desktop/src/ipc/DesktopIpcHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
fetchSshEnvironmentDescriptor,
fetchSshSessionState,
issueSshWebSocketTicket,
resolveSshHost,
resolveSshPasswordPrompt,
} from "./methods/sshEnvironment.ts";
import {
Expand Down Expand Up @@ -72,6 +73,7 @@ export const installDesktopIpcHandlers = Effect.fn("desktop.ipc.installHandlers"
yield* ipc.handle(clearConnectionCatalog);

yield* ipc.handle(discoverSshHosts);
yield* ipc.handle(resolveSshHost);
yield* ipc.handle(ensureSshEnvironment);
yield* ipc.handle(disconnectSshEnvironment);
yield* ipc.handle(fetchSshEnvironmentDescriptor);
Expand Down
1 change: 1 addition & 0 deletions apps/desktop/src/ipc/channels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export const GET_CONNECTION_CATALOG_CHANNEL = "desktop:get-connection-catalog";
export const SET_CONNECTION_CATALOG_CHANNEL = "desktop:set-connection-catalog";
export const CLEAR_CONNECTION_CATALOG_CHANNEL = "desktop:clear-connection-catalog";
export const DISCOVER_SSH_HOSTS_CHANNEL = "desktop:discover-ssh-hosts";
export const RESOLVE_SSH_HOST_CHANNEL = "desktop:resolve-ssh-host";
export const ENSURE_SSH_ENVIRONMENT_CHANNEL = "desktop:ensure-ssh-environment";
export const DISCONNECT_SSH_ENVIRONMENT_CHANNEL = "desktop:disconnect-ssh-environment";
export const FETCH_SSH_ENVIRONMENT_DESCRIPTOR_CHANNEL = "desktop:fetch-ssh-environment-descriptor";
Expand Down
10 changes: 10 additions & 0 deletions apps/desktop/src/ipc/methods/sshEnvironment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,16 @@ export const discoverSshHosts = DesktopIpc.makeIpcMethod({
}),
});

export const resolveSshHost = DesktopIpc.makeIpcMethod({
channel: IpcChannels.RESOLVE_SSH_HOST_CHANNEL,
payload: Schema.String,
result: DesktopSshEnvironmentTargetSchema,
handler: Effect.fn("desktop.ipc.sshEnvironment.resolveHost")(function* (alias) {
const sshEnvironment = yield* DesktopSshEnvironment.DesktopSshEnvironment;
return yield* sshEnvironment.resolveHost(alias);
}),
});

export const ensureSshEnvironment = DesktopIpc.makeIpcMethod({
channel: IpcChannels.ENSURE_SSH_ENVIRONMENT_CHANNEL,
payload: DesktopSshEnvironmentEnsureInputSchema,
Expand Down
1 change: 1 addition & 0 deletions apps/desktop/src/preload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ contextBridge.exposeInMainWorld("desktopBridge", {
ipcRenderer.invoke(IpcChannels.SET_CONNECTION_CATALOG_CHANNEL, catalog),
clearConnectionCatalog: () => ipcRenderer.invoke(IpcChannels.CLEAR_CONNECTION_CATALOG_CHANNEL),
discoverSshHosts: () => ipcRenderer.invoke(IpcChannels.DISCOVER_SSH_HOSTS_CHANNEL),
resolveSshHost: (alias) => ipcRenderer.invoke(IpcChannels.RESOLVE_SSH_HOST_CHANNEL, alias),
ensureSshEnvironment: async (target, options) =>
unwrapEnsureSshEnvironmentResult(
await ipcRenderer.invoke(IpcChannels.ENSURE_SSH_ENVIRONMENT_CHANNEL, {
Expand Down
1 change: 0 additions & 1 deletion apps/desktop/src/preview-pip-preload.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// @effect-diagnostics globalDate:off - This isolated Electron preload does not run inside an Effect runtime.
import type { DesktopPreviewRecordingFrame } from "@t3tools/contracts";
import { contextBridge, ipcRenderer } from "electron";

Expand Down
2 changes: 2 additions & 0 deletions apps/desktop/src/settings/DesktopClientSettings.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const clientSettings: ClientSettings = {
browserDefaultZoomFactor: 1.25,
browserDefaultAppearance: "dark",
browserRecordingFrameRate: 60,
browserLinkTarget: "app",
browserAutoShowFloatingPreview: false,
browserProfiles: [{ id: "work", name: "Work", kind: "persistent" }],
browserDefaultProfileId: "work",
Expand All @@ -29,6 +30,7 @@ const clientSettings: ClientSettings = {
contextWindowMeterEnabled: false,
dismissedProviderUpdateNotificationKeys: [],
diffIgnoreWhitespace: true,
diffLayout: "stacked",
environmentIdentificationMode: "artwork",
sidebarArtworkOverride: null,
favorites: [],
Expand Down
9 changes: 9 additions & 0 deletions apps/desktop/src/ssh/DesktopSshEnvironment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import type {
} from "@t3tools/contracts";
import * as NetService from "@t3tools/shared/Net";
import * as SshAuth from "@t3tools/ssh/auth";
import { resolveSshTarget } from "@t3tools/ssh/command";
import { discoverSshHosts } from "@t3tools/ssh/config";
import {
SshCommandError,
Expand Down Expand Up @@ -54,6 +55,9 @@ export class DesktopSshEnvironment extends Context.Service<
readonly discoverHosts: (input?: {
readonly homeDir?: string;
}) => Effect.Effect<readonly DesktopDiscoveredSshHost[], DesktopSshEnvironmentDiscoverError>;
readonly resolveHost: (
alias: string,
) => Effect.Effect<DesktopSshEnvironmentTarget, SshCommandError | SshInvalidTargetError>;
readonly ensureEnvironment: (
target: DesktopSshEnvironmentTarget,
options?: { readonly issuePairingToken?: boolean },
Expand Down Expand Up @@ -136,6 +140,11 @@ export const make = Effect.gen(function* () {
Effect.provide(runtimeContext),
Effect.withSpan("desktop.ssh.discoverHosts"),
),
resolveHost: (alias) =>
resolveSshTarget(alias.trim()).pipe(
Effect.provide(runtimeContext),
Effect.withSpan("desktop.ssh.resolveHost"),
),
ensureEnvironment: (target, ensureOptions) =>
manager
.ensureEnvironment(target, ensureOptions)
Expand Down
Binary file added apps/marketing/public/pfps/JoshuaRileyDev.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/marketing/public/pfps/QuinnyPig.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/marketing/public/pfps/RhysSullivan.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/marketing/public/pfps/enunomaduro.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed apps/marketing/public/pfps/gnukeith.webp
Binary file not shown.
Binary file removed apps/marketing/public/pfps/jetpackjoe_.webp
Binary file not shown.
Binary file removed apps/marketing/public/pfps/peculiarnewbie.webp
Binary file not shown.
Binary file added apps/marketing/public/pfps/ryanrhughes.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed apps/marketing/public/pfps/uwunetes.webp
Binary file not shown.
140 changes: 80 additions & 60 deletions apps/marketing/src/lib/tweets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,88 +7,97 @@ export type Tweet = {

export const tweets = [
{
handle: "Shay_Benshabtay",
handle: "QuinnyPig",
content:
"T3 code is not perfect, but it's damn good. Open and fun , I can make my own fork for my uses and use the great tooling with my own needs.",
link: "https://x.com/Shay_Benshabtay/status/2054668503857156326",
"Of course @theo is gonna favor his own product.\n\nBut I don’t have a horse in this race, so believe me when I say T3 code is freaking transformational.",
excerpt:
"...I don’t have a horse in this race, so believe me when I say T3 code is freaking transformational.",
link: "https://x.com/QuinnyPig/status/2089581739887014376",
},
{
handle: "teja2495",
handle: "tannerlinsley",
content: "I would just use T3 Code at that point and contribute back.",
link: "https://x.com/tannerlinsley/status/2035067912659341399",
},
{
handle: "ryanrhughes",
content:
"I’ve completely switched to T3 Code for all my workflows. I just switch between different subscriptions and harnesses depending on what I need.",
excerpt: "Ive completely switched to T3 Code for all my workflows.",
link: "https://x.com/teja2495/status/2052420254991581623",
"I think I've finally found the one AI harness to steal me away from the terminal — @t3dotcodes.",
excerpt: "I think I've finally found the one AI harness to steal me away from the terminal",
link: "https://x.com/ryanrhughes/status/2093051703616573769",
},
{
handle: "developedbyed",
content: "might say alpha but T3 code is pretty awesome, really fast too",
link: "https://x.com/developedbyed/status/2030627970532921605",
},
{
handle: "tannerlinsley",
handle: "RhysSullivan",
content:
"The minute T3 Code supports Claude Code, it could potentially become my daily driver. There's something special there.",
link: "https://x.com/tannerlinsley/status/2031102771529920966",
"T3 Code is worth giving a try if you haven’t yet\n\nIt takes what I liked so much about codex’s remote setup and improves upon it, it’s a great UX using it on both desktop and mobile\n\nAlso is just nice to have all the official harnesses in one app",
excerpt:
"It takes what I liked so much about codex’s remote setup and improves upon it, it’s a great UX using it on both desktop and mobile",
link: "https://x.com/RhysSullivan/status/2089750636686643493",
},
{
handle: "aronprins",
content:
"I already loved T3 Code by @theo and @jullerino, but their Connections implementation is next level epic and for this they should both earn maximum repect 🔥🫡",
excerpt: "I already loved T3 Code, but their Connections implementation is next level epic.",
link: "https://x.com/aronprins/status/2045102518196183109",
handle: "DavidKPiano",
content: "It's like Claude Code if they didn't vibe-code the entire thing",
link: "https://x.com/DavidKPiano/status/2054682983504719930",
},
{
handle: "BennettBuhner",
handle: "JoshuaRileyDev",
content:
"T3 Code is literally Codex but better; all your favorite models and harnesses, accessible anywhere! The app is great but the website is even greater, so instead of needing to SSH into a machine, T3 IS my SSH!",
excerpt:
"T3 Code is literally Codex but better; all your favorite models and harnesses, accessible anywhere.",
link: "https://x.com/BennettBuhner/status/2054667115697754387",
"Well I was 2,000 miles away on holiday and able to do iOS development from just my phone, T3 Code’s remote feature is a magical experience",
excerpt: "I was 2,000 miles away on holiday and able to do iOS development from just my phone",
link: "https://x.com/JoshuaRileyDev/status/2094379365408616837",
},
{
handle: "ex0t1clol",
content: "T3 Code is proof electron apps don't have to suck",
link: "https://x.com/ex0t1clol/status/2054666870008021197",
handle: "aronprins",
content:
"T3 Code works better than Claude and Codex combined… and T3 actually combines then (and more!) 🤯\n\nHuge shoutout to @theo and @jullerino\n\nAmazing product fellers 🔥🙌",
excerpt:
"T3 Code works better than Claude and Codex combined… and T3 actually combines then (and more!)",
link: "https://x.com/aronprins/status/2089761738358915267",
},
{
handle: "Josikinz",
handle: "teja2495",
content:
"T3 code is better because it’s like if the codex Mac app didn’t make my computer run like shit 😋",
link: "https://x.com/Josikinz/status/2030367951694745870",
"I’ve completely switched to T3 Code for all my workflows. I just switch between different subscriptions and harnesses depending on what I need.",
excerpt: "I’ve completely switched to T3 Code for all my workflows.",
link: "https://x.com/teja2495/status/2052420254991581623",
},
{
handle: "jetpackjoe_",
content: "T3 code is pretty alright I guess",
link: "https://x.com/jetpackjoe_/status/2054666792933404959",
handle: "ryanrhughes",
content:
"Then there's the mobile app. All of my threads, on all of my environments, in my pocket. Fantastic.\n\nWhile traveling the other day, I had to use T3 Code alongside my old Claude Code + Herdr setup from 36,000ft on my phone.\n\nOn T3 Code, it felt like LAN. On the TUI, every keystroke took about 1sec to show up because it had to roundtrip to the device before I was able to actually see it. Brutal.",
excerpt: "...from 36,000ft on my phone. On T3 Code, it felt like LAN.",
link: "https://x.com/ryanrhughes/status/2093051708939059204",
},
{
handle: "mil000",
content: "T3 code saved my relationship!",
link: "https://x.com/mil000/status/2030120041451246071",
handle: "ex0t1clol",
content: "T3 Code is proof electron apps don't have to suck",
link: "https://x.com/ex0t1clol/status/2054666870008021197",
},
{
handle: "_winter_wonders",
content: "Heartbreaking: AI-hater has to admit T3 Code is really good.",
link: "https://x.com/_winter_wonders/status/2052350198764970434",
handle: "enunomaduro",
content: "So I tried @theo's T3 Code...",
link: "https://x.com/enunomaduro/status/2091915930141876495",
},
{
handle: "kostyniuk00",
handle: "pocarles",
content:
"I was not expecting a year ago, that my anti-AI colleagues would thank me a year later, for persuading them to try T3 Code Beta, that really helped them with organizing their workflows. \n\nFantastic product by @jullerino and @theo. Go try it out if you haven’t yet!",
"Only using Codex and T3 now.\n\nI thought all AI coding harnesses had roughly the same impact. Using T3 Code taught me how wrong I was. The interface between you and the model changes everything.",
excerpt:
"My anti-AI colleagues thanked me for persuading them to try T3 Code Beta. Fantastic product.",
link: "https://x.com/kostyniuk00/status/2052041388179468521",
"Using T3 Code taught me how wrong I was. The interface between you and the model changes everything.",
link: "https://x.com/pocarles/status/2054673964274758046",
},
{
handle: "gnukeith",
handle: "BennettBuhner",
content:
"I tried T3 Code it actually fixed issues that Opus couldn’t solve in Claude Code + Theo has replied with “UwU” under my post. Dario has not.",
link: "https://x.com/gnukeith/status/2054670073579630730",
},
{
handle: "peculiarnewbie",
content: "T3 Code is iOS and other harnesses are androids",
link: "https://x.com/peculiarnewbie/status/2054671685027233827",
"T3 Code is literally Codex but better; all your favorite models and harnesses, accessible anywhere! The app is great but the website is even greater, so instead of needing to SSH into a machine, T3 IS my SSH!",
excerpt:
"T3 Code is literally Codex but better; all your favorite models and harnesses, accessible anywhere.",
link: "https://x.com/BennettBuhner/status/2054667115697754387",
},
{
handle: "leodev",
Expand All @@ -97,27 +106,38 @@ export const tweets = [
link: "https://x.com/leodev/status/2054679746353537042",
},
{
handle: "pocarles",
handle: "Shay_Benshabtay",
content:
"Only using Codex and T3 now.\n\nI thought all AI coding harnesses had roughly the same impact. Using T3 Code taught me how wrong I was. The interface between you and the model changes everything.",
excerpt:
"Using T3 Code taught me how wrong I was. The interface between you and the model changes everything.",
link: "https://x.com/pocarles/status/2054673964274758046",
},
{
handle: "DavidKPiano",
content: "It's like Claude Code if they didn't vibe-code the entire thing",
link: "https://x.com/DavidKPiano/status/2054682983504719930",
"T3 code is not perfect, but it's damn good. Open and fun , I can make my own fork for my uses and use the great tooling with my own needs.",
link: "https://x.com/Shay_Benshabtay/status/2054668503857156326",
},
{
handle: "iamkaffe",
content: "T3Code was the first one to truly care about Linux users.",
link: "https://x.com/iamkaffe/status/2054675539311411280",
},
{
handle: "uwunetes",
handle: "_winter_wonders",
content: "Heartbreaking: AI-hater has to admit T3 Code is really good.",
link: "https://x.com/_winter_wonders/status/2052350198764970434",
},
{
handle: "kostyniuk00",
content:
"claude code make me go *whine whine whine* and t3 code make me go woof woof awooooo!!!",
link: "https://x.com/uwunetes/status/2054683356022120640",
"I was not expecting a year ago, that my anti-AI colleagues would thank me a year later, for persuading them to try T3 Code Beta, that really helped them with organizing their workflows. \n\nFantastic product by @jullerino and @theo. Go try it out if you haven’t yet!",
excerpt:
"My anti-AI colleagues thanked me for persuading them to try T3 Code Beta. Fantastic product.",
link: "https://x.com/kostyniuk00/status/2052041388179468521",
},
{
handle: "Josikinz",
content:
"T3 code is better because it’s like if the codex Mac app didn’t make my computer run like shit 😋",
link: "https://x.com/Josikinz/status/2030367951694745870",
},
{
handle: "mil000",
content: "T3 code saved my relationship!",
link: "https://x.com/mil000/status/2030120041451246071",
},
] satisfies Tweet[];
Loading
Loading