From 9eeb44281e068d24b10769606a1917b84965fac2 Mon Sep 17 00:00:00 2001 From: badcuban <108198679+badcuban@users.noreply.github.com> Date: Fri, 31 Jul 2026 11:20:28 -0400 Subject: [PATCH 1/2] Improve OSS discovery and download conversion --- README.md | 43 ++++++++++++++++++------- apps/marketing/src/lib/releases.ts | 15 ++------- apps/marketing/src/pages/download.astro | 11 ++++--- apps/marketing/src/pages/index.astro | 23 +++++++++---- 4 files changed, 55 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index a1b8bf06..ad5a4c52 100644 --- a/README.md +++ b/README.md @@ -8,15 +8,25 @@ [![Latest release](https://img.shields.io/github/v/release/Threadlines/threadlines)](https://github.com/Threadlines/threadlines/releases/latest) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) -Threadlines is a local-first desktop workspace for Codex and Claude Code. - -It brings agent threads, terminals, diffs, branches, source-control workflows, -and session recovery into one focused app so coding agents stay manageable under -real project load. - -The maintained provider paths are Codex and Claude. Other inherited provider -surfaces may remain while Threadlines narrows toward a smaller native desktop -surface. +**[Website](https://www.threadlines.dev/) · [Download](https://www.threadlines.dev/download/) · [What's new in v0.3](https://www.threadlines.dev/changelog/v0.3.0) · [Latest release](https://github.com/Threadlines/threadlines/releases/latest)** + +Threadlines is an open-source desktop workspace for Codex and Claude Code. Keep +the agent conversation, a live browser, project files, terminal, and source +control open together so you can see, steer, and recover agent work without +reconstructing context across tools. + +## Why Threadlines + +- **A browser beside every thread.** Review visual changes and send the exact + page state back to the agent without leaving the workspace. +- **Source control you can act on.** Inspect per-file changes and the commit + graph, then commit, push, and open a pull request from the same app. +- **Exact context instead of repeated prompts.** Attach selected reply, code, + or terminal lines directly to the next message. +- **Nothing runs invisibly.** Track tasks, subagents, and background processes, + including their live state and stop controls. +- **Durable, provider-flexible sessions.** Resume work after restarts and switch + between Codex and Claude Code without losing the thread or working tree. ## Installation @@ -29,13 +39,16 @@ surface. ### Desktop app -Install the latest desktop alpha from -[GitHub Releases](https://github.com/Threadlines/threadlines/releases). +Install the latest stable desktop app from the +[download page](https://www.threadlines.dev/download/) or +[GitHub Releases](https://github.com/Threadlines/threadlines/releases/latest). Signed Windows and macOS builds and a Linux x64 AppImage are published through the desktop release workflow. Linux builds are unsigned; integrity for auto-updates is verified through the updater manifest hashes. +Then open a local project and start a thread with the provider you already use. + ### Server CLI The npm package supports advanced CLI/server and remote-bootstrap usage: @@ -63,11 +76,17 @@ output noticeably slows installs, builds, and file watching. ```powershell vp install --frozen-lockfile -vp run dist:desktop:artifact -- --platform win --target nsis --arch x64 --build-version 0.2.0 +vp run dist:desktop:artifact -- --platform win --target nsis --arch x64 --build-version 0.3.0 ``` The artifact is written to `release/`. +## Supported providers + +Codex and Claude Code are the maintained provider paths. Other inherited +provider surfaces may remain visible while Threadlines narrows toward a smaller +native desktop surface, but they are not actively supported. + ## Origins Threadlines began as a fork of [T3 Code](https://github.com/pingdotgg/t3code). diff --git a/apps/marketing/src/lib/releases.ts b/apps/marketing/src/lib/releases.ts index 79877bd6..1f076821 100644 --- a/apps/marketing/src/lib/releases.ts +++ b/apps/marketing/src/lib/releases.ts @@ -1,10 +1,7 @@ const REPO = "Threadlines/threadlines"; -export const RELEASES_URL = `https://github.com/${REPO}/releases`; - const LATEST_URL = `https://api.github.com/repos/${REPO}/releases/latest`; -const LIST_URL = `https://api.github.com/repos/${REPO}/releases?per_page=1`; -const CACHE_KEY = "threadlines-latest-release-v2"; +const CACHE_KEY = "threadlines-latest-stable-release-v3"; export interface ReleaseAsset { name: string; @@ -42,15 +39,7 @@ export async function fetchLatestRelease(): Promise { if (isRelease(parsed)) return parsed; } - // /releases/latest only knows stable releases; fall back to the newest - // release of any kind (nightlies are prereleases) when none exists yet. - let data: unknown; - try { - data = await fetchJson(LATEST_URL); - } catch { - const list = await fetchJson(LIST_URL); - data = Array.isArray(list) ? list[0] : undefined; - } + const data = await fetchJson(LATEST_URL); if (!isRelease(data)) throw new Error("No release available"); diff --git a/apps/marketing/src/pages/download.astro b/apps/marketing/src/pages/download.astro index a42d4d30..bda8bd14 100644 --- a/apps/marketing/src/pages/download.astro +++ b/apps/marketing/src/pages/download.astro @@ -6,7 +6,6 @@ import Layout from "../layouts/Layout.astro"; title="Download Threadlines" description="Download Threadlines for macOS, Windows, and Linux. Free and open source." canonicalPath="/download/" - noindex >
@@ -60,7 +59,7 @@ import Layout from "../layouts/Layout.astro";

Download from GitHub @@ -75,7 +74,7 @@ import Layout from "../layouts/Layout.astro";
@@ -621,6 +621,15 @@ const playGlyphs = ` + Download Threadlines + Star on GitHub +

github.com/Threadlines/threadlines · macOS + Windows + Linux

@@ -658,17 +667,17 @@ const playGlyphs = ` { const installers = classifyAssets(release.assets); const asset = isWin ? (installers.winX64 ?? installers.winArm) - : isLinux - ? installers.linuxX64 - : (installers.macArm ?? installers.macX64); + : installers.linuxX64; if (asset) dl.href = asset.browser_download_url; }) .catch(() => {}); From 6fc9914ba68ddd30dcc8dea2ccb7879314bfad82 Mon Sep 17 00:00:00 2001 From: badcuban <108198679+badcuban@users.noreply.github.com> Date: Fri, 31 Jul 2026 11:35:51 -0400 Subject: [PATCH 2/2] Format social banner markup --- docs/brand/social/x-banner-workspace.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/brand/social/x-banner-workspace.html b/docs/brand/social/x-banner-workspace.html index 61eb6619..b190567b 100644 --- a/docs/brand/social/x-banner-workspace.html +++ b/docs/brand/social/x-banner-workspace.html @@ -104,7 +104,10 @@ - +