diff --git a/.gitignore b/.gitignore index e16286c0736..5e941c7b9f0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,6 @@ __screenshots__/ .tanstack squashfs-root/ .vercel +.gstack/ dist-electron/ .electron-runtime/ diff --git a/apps/marketing/public/apple-touch-icon.webp b/apps/marketing/public/apple-touch-icon.webp new file mode 100644 index 00000000000..fc990561902 Binary files /dev/null and b/apps/marketing/public/apple-touch-icon.webp differ diff --git a/apps/marketing/public/favicon-16x16.webp b/apps/marketing/public/favicon-16x16.webp new file mode 100644 index 00000000000..b09dc155aef Binary files /dev/null and b/apps/marketing/public/favicon-16x16.webp differ diff --git a/apps/marketing/public/favicon-32x32.webp b/apps/marketing/public/favicon-32x32.webp new file mode 100644 index 00000000000..72c9243de42 Binary files /dev/null and b/apps/marketing/public/favicon-32x32.webp differ diff --git a/apps/marketing/public/harnesses/claude-ai-icon.svg b/apps/marketing/public/harnesses/claude-ai-icon.svg new file mode 100644 index 00000000000..324389017b5 --- /dev/null +++ b/apps/marketing/public/harnesses/claude-ai-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/marketing/public/harnesses/cursor_light.svg b/apps/marketing/public/harnesses/cursor_light.svg new file mode 100644 index 00000000000..e61e0be3bfd --- /dev/null +++ b/apps/marketing/public/harnesses/cursor_light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/marketing/public/harnesses/openai_dark.svg b/apps/marketing/public/harnesses/openai_dark.svg new file mode 100644 index 00000000000..b78a51db7bc --- /dev/null +++ b/apps/marketing/public/harnesses/openai_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/marketing/public/harnesses/opencode-dark.svg b/apps/marketing/public/harnesses/opencode-dark.svg new file mode 100644 index 00000000000..fc467bf8440 --- /dev/null +++ b/apps/marketing/public/harnesses/opencode-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/marketing/public/icon.webp b/apps/marketing/public/icon.webp new file mode 100644 index 00000000000..aa6826dd36d Binary files /dev/null and b/apps/marketing/public/icon.webp differ diff --git a/apps/marketing/public/pfps/BennettBuhner.webp b/apps/marketing/public/pfps/BennettBuhner.webp new file mode 100644 index 00000000000..39d5af923c5 Binary files /dev/null and b/apps/marketing/public/pfps/BennettBuhner.webp differ diff --git a/apps/marketing/public/pfps/DavidKPiano.webp b/apps/marketing/public/pfps/DavidKPiano.webp new file mode 100644 index 00000000000..d6b322bc2c1 Binary files /dev/null and b/apps/marketing/public/pfps/DavidKPiano.webp differ diff --git a/apps/marketing/public/pfps/Josikinz.webp b/apps/marketing/public/pfps/Josikinz.webp new file mode 100644 index 00000000000..68d5825222a Binary files /dev/null and b/apps/marketing/public/pfps/Josikinz.webp differ diff --git a/apps/marketing/public/pfps/Shay_Benshabtay.webp b/apps/marketing/public/pfps/Shay_Benshabtay.webp new file mode 100644 index 00000000000..c827f7504c4 Binary files /dev/null and b/apps/marketing/public/pfps/Shay_Benshabtay.webp differ diff --git a/apps/marketing/public/pfps/_winter_wonders.webp b/apps/marketing/public/pfps/_winter_wonders.webp new file mode 100644 index 00000000000..8acff2310aa Binary files /dev/null and b/apps/marketing/public/pfps/_winter_wonders.webp differ diff --git a/apps/marketing/public/pfps/aronprins.webp b/apps/marketing/public/pfps/aronprins.webp new file mode 100644 index 00000000000..90db37d28f2 Binary files /dev/null and b/apps/marketing/public/pfps/aronprins.webp differ diff --git a/apps/marketing/public/pfps/developedbyed.webp b/apps/marketing/public/pfps/developedbyed.webp new file mode 100644 index 00000000000..8f1dfbab6db Binary files /dev/null and b/apps/marketing/public/pfps/developedbyed.webp differ diff --git a/apps/marketing/public/pfps/ex0t1clol.webp b/apps/marketing/public/pfps/ex0t1clol.webp new file mode 100644 index 00000000000..05bd80e019a Binary files /dev/null and b/apps/marketing/public/pfps/ex0t1clol.webp differ diff --git a/apps/marketing/public/pfps/gnukeith.webp b/apps/marketing/public/pfps/gnukeith.webp new file mode 100644 index 00000000000..aa24d1996ff Binary files /dev/null and b/apps/marketing/public/pfps/gnukeith.webp differ diff --git a/apps/marketing/public/pfps/iamkaffe.webp b/apps/marketing/public/pfps/iamkaffe.webp new file mode 100644 index 00000000000..ded6ed2cd86 Binary files /dev/null and b/apps/marketing/public/pfps/iamkaffe.webp differ diff --git a/apps/marketing/public/pfps/jetpackjoe_.webp b/apps/marketing/public/pfps/jetpackjoe_.webp new file mode 100644 index 00000000000..da415598564 Binary files /dev/null and b/apps/marketing/public/pfps/jetpackjoe_.webp differ diff --git a/apps/marketing/public/pfps/kostyniuk00.webp b/apps/marketing/public/pfps/kostyniuk00.webp new file mode 100644 index 00000000000..c52f0b305b9 Binary files /dev/null and b/apps/marketing/public/pfps/kostyniuk00.webp differ diff --git a/apps/marketing/public/pfps/leodev.webp b/apps/marketing/public/pfps/leodev.webp new file mode 100644 index 00000000000..91a47d5de94 Binary files /dev/null and b/apps/marketing/public/pfps/leodev.webp differ diff --git a/apps/marketing/public/pfps/mil000.webp b/apps/marketing/public/pfps/mil000.webp new file mode 100644 index 00000000000..37d784b752c Binary files /dev/null and b/apps/marketing/public/pfps/mil000.webp differ diff --git a/apps/marketing/public/pfps/peculiarnewbie.webp b/apps/marketing/public/pfps/peculiarnewbie.webp new file mode 100644 index 00000000000..74be17008b2 Binary files /dev/null and b/apps/marketing/public/pfps/peculiarnewbie.webp differ diff --git a/apps/marketing/public/pfps/pocarles.webp b/apps/marketing/public/pfps/pocarles.webp new file mode 100644 index 00000000000..f259df83124 Binary files /dev/null and b/apps/marketing/public/pfps/pocarles.webp differ diff --git a/apps/marketing/public/pfps/tannerlinsley.webp b/apps/marketing/public/pfps/tannerlinsley.webp new file mode 100644 index 00000000000..8ea61b5dd46 Binary files /dev/null and b/apps/marketing/public/pfps/tannerlinsley.webp differ diff --git a/apps/marketing/public/pfps/teja2495.webp b/apps/marketing/public/pfps/teja2495.webp new file mode 100644 index 00000000000..457901988d4 Binary files /dev/null and b/apps/marketing/public/pfps/teja2495.webp differ diff --git a/apps/marketing/public/pfps/uwunetes.webp b/apps/marketing/public/pfps/uwunetes.webp new file mode 100644 index 00000000000..f15366aa66f Binary files /dev/null and b/apps/marketing/public/pfps/uwunetes.webp differ diff --git a/apps/marketing/public/screenshot.jpeg b/apps/marketing/public/screenshot.jpeg deleted file mode 100644 index 0844b50ad5b..00000000000 Binary files a/apps/marketing/public/screenshot.jpeg and /dev/null differ diff --git a/apps/marketing/public/screenshot.webp b/apps/marketing/public/screenshot.webp new file mode 100644 index 00000000000..b9b0703dca0 Binary files /dev/null and b/apps/marketing/public/screenshot.webp differ diff --git a/apps/marketing/public/updated-screenshot.webp b/apps/marketing/public/updated-screenshot.webp new file mode 100644 index 00000000000..c245ddb64a1 Binary files /dev/null and b/apps/marketing/public/updated-screenshot.webp differ diff --git a/apps/marketing/src/components/TuxIcon.astro b/apps/marketing/src/components/TuxIcon.astro new file mode 100644 index 00000000000..a6f1b4902c6 --- /dev/null +++ b/apps/marketing/src/components/TuxIcon.astro @@ -0,0 +1,53 @@ +--- +interface Props { + class?: string; + idPrefix: string; +} + +const { class: className, idPrefix } = Astro.props; +--- + + diff --git a/apps/marketing/src/layouts/Layout.astro b/apps/marketing/src/layouts/Layout.astro index b4fa945e25a..e60637cbfd1 100644 --- a/apps/marketing/src/layouts/Layout.astro +++ b/apps/marketing/src/layouts/Layout.astro @@ -6,7 +6,7 @@ interface Props { const { title = "T3 Code", - description = "T3 Code — The best way to code with AI.", + description = "T3 Code — The open-source control plane for coding agents.", } = Astro.props; --- @@ -18,7 +18,7 @@ const { @@ -30,18 +30,25 @@ const {
@@ -49,23 +56,54 @@ const {
+ + diff --git a/apps/marketing/src/lib/tweets.ts b/apps/marketing/src/lib/tweets.ts new file mode 100644 index 00000000000..7d6be71c5f1 --- /dev/null +++ b/apps/marketing/src/lib/tweets.ts @@ -0,0 +1,123 @@ +export type Tweet = { + handle: string; + content: string; + excerpt?: string; + link: string; +}; + +export const tweets = [ + { + handle: "Shay_Benshabtay", + 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", + }, + { + handle: "teja2495", + 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: "I’ve completely switched to T3 Code for all my workflows.", + link: "https://x.com/teja2495/status/2052420254991581623", + }, + { + handle: "developedbyed", + content: "might say alpha but T3 code is pretty awesome, really fast too", + link: "https://x.com/developedbyed/status/2030627970532921605", + }, + { + handle: "tannerlinsley", + 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", + }, + { + 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: "BennettBuhner", + 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", + }, + { + handle: "ex0t1clol", + content: "T3 Code is proof electron apps don't have to suck", + link: "https://x.com/ex0t1clol/status/2054666870008021197", + }, + { + 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: "jetpackjoe_", + content: "T3 code is pretty alright I guess", + link: "https://x.com/jetpackjoe_/status/2054666792933404959", + }, + { + handle: "mil000", + content: "T3 code saved my relationship!", + link: "https://x.com/mil000/status/2030120041451246071", + }, + { + 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: + "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: "gnukeith", + 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", + }, + { + handle: "leodev", + content: + "T3 Code is probably the first coding gui that didn't suck performance wise and had a smart team behind it.", + link: "https://x.com/leodev/status/2054679746353537042", + }, + { + handle: "pocarles", + 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", + }, + { + handle: "iamkaffe", + content: "T3Code was the first one to truly care about Linux users.", + link: "https://x.com/iamkaffe/status/2054675539311411280", + }, + { + handle: "uwunetes", + 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", + }, +] satisfies Tweet[]; diff --git a/apps/marketing/src/pages/download.astro b/apps/marketing/src/pages/download.astro index 54454d40264..b9e0e0181e4 100644 --- a/apps/marketing/src/pages/download.astro +++ b/apps/marketing/src/pages/download.astro @@ -4,6 +4,7 @@ import { RELEASES_URL } from "../lib/releases"; --- +

Download T3 Code

Loading latest release… @@ -64,6 +65,7 @@ import { RELEASES_URL } from "../lib/releases"; GitHub releases page

+
diff --git a/apps/marketing/tweets.md b/apps/marketing/tweets.md new file mode 100644 index 00000000000..92a087d8018 --- /dev/null +++ b/apps/marketing/tweets.md @@ -0,0 +1,19 @@ +https://x.com/Shay_Benshabtay/status/2054668503857156326 +https://x.com/teja2495/status/2052420254991581623 +https://x.com/developedbyed/status/2030627970532921605 +https://x.com/tannerlinsley/status/2031102771529920966 +https://x.com/aronprins/status/2045102518196183109 +https://x.com/BennettBuhner/status/2054667115697754387 +https://x.com/ex0t1clol/status/2054666870008021197 +https://x.com/Josikinz/status/2030367951694745870 +https://x.com/jetpackjoe_/status/2054666792933404959 +https://x.com/mil000/status/2030120041451246071 +https://x.com/_winter_wonders/status/2052350198764970434 +https://x.com/kostyniuk00/status/2052041388179468521 +https://x.com/gnukeith/status/2054670073579630730 +https://x.com/peculiarnewbie/status/2054671685027233827 +https://x.com/leodev/status/2054679746353537042 +https://x.com/pocarles/status/2054673964274758046 +https://x.com/DavidKPiano/status/2054682983504719930 +https://x.com/iamkaffe/status/2054675539311411280 +https://x.com/uwunetes/status/2054683356022120640 diff --git a/bun.lock b/bun.lock index 476c50c005c..ffc4a5922bd 100644 --- a/bun.lock +++ b/bun.lock @@ -154,6 +154,7 @@ "name": "@t3tools/client-runtime", "dependencies": { "@t3tools/contracts": "workspace:*", + "@t3tools/shared": "workspace:*", "effect": "catalog:", }, "devDependencies": {