Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PRD.md
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,7 @@ not block stable.

**Strand.** A single thread or fiber — clean, technical, and a natural fit alongside `@pierre/trees`. Suggests something light and fast without being cute about it. The name evokes the visual metaphor of Git itself: branches, threads of history, things woven together.

**Domain:** [`strand.danielss.dev`](https://strand.danielss.dev) — landing page, downloads, docs, and auto-update manifest live here.
**Domain:** [`strandgit.com`](https://strandgit.com) — landing page, downloads, docs, and auto-update manifest live here.

Remaining pre-launch checks:

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
[![CI](https://github.com/danielss-dev/strand/actions/workflows/ci.yml/badge.svg)](https://github.com/danielss-dev/strand/actions/workflows/ci.yml)
[![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](./LICENSE)

**[Website](https://strand.danielss.dev)** ·
**[Docs](https://strand.danielss.dev/docs/)** ·
**[Website](https://strandgit.com)** ·
**[Docs](https://strandgit.com/docs/)** ·
**[Download](https://github.com/danielss-dev/strand/releases/latest)** ·
**[Roadmap](./ROADMAP.md)** ·
**[Commercial license](./COMMERCIAL.md)**
Expand Down Expand Up @@ -281,7 +281,7 @@ strand/
│ └── strand-tauri/ # Tauri 2 app shell + IPC commands
├── packaging/ # Store/distribution manifests assembled around release binaries
├── ui/ # Vite + React + TypeScript frontend
├── website/ # strand.danielss.dev: landing page + user guide (website/docs/, no build step)
├── website/ # strandgit.com: landing page + user guide (website/docs/, no build step)
├── docs/ # design notes, perf baseline, packaging
├── PRD.md # product spec
├── ROADMAP.md # milestones and status
Expand Down
6 changes: 3 additions & 3 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ also pending (only `aarch64-apple-darwin` is installed).
check / download / restart + auto-check & auto-install prefs); release CI
publishes a signed all-platform `latest.json` per release (since v0.5.0); the
updater endpoint now points at the GitHub Releases manifest
(`releases/latest/download/latest.json`) — the dead `strand.danielss.dev/updates`
(`releases/latest/download/latest.json`) — the dead `strandgit.com/updates`
host was dropped in 0.6.1 (`ce1ffd0`). Operational note: CI opens a **draft**
release; `releases/latest/download/` only resolves once it's published.
- ☑ **Settings view** — multi-section dialog (Appearance / Diff / Git /
Expand Down Expand Up @@ -556,7 +556,7 @@ of both popup variants + the stacking fix.
**0.5 remaining (as of 2026-06-05):** the public-beta milestone's open items are
now all platform/infra rather than features: Windows 11 + Linux builds (need the
target OSes to build/validate — can't be done from the macOS dev box), the
auto-update *endpoint* (`strand.danielss.dev` must be live; pubkey + signed
auto-update *endpoint* (`strandgit.com` must be live; pubkey + signed
manifests already done), and the **performance pass** to hit PRD §8 targets —
the concrete code items live in TASKS.md → Performance → "Audit follow-ups" and
want benchmarking against large repos before merge (the prime directive forbids
Expand Down Expand Up @@ -718,7 +718,7 @@ markdown), `tsc`, `cargo check -p strand-tauri`.

**Landing page (2026-06-12):** First pass at the public face, ahead of the
beta: `website/` holds a static, no-build-step landing page for
`strand.danielss.dev`. It reuses the app's identity wholesale — the OKLCH
`strandgit.com`. It reuses the app's identity wholesale — the OKLCH
token palette from `tokens.css`, self-hosted Geist + JetBrains Mono, the
single-hue accent system (a row of hero dots rotates `--accent-h` live,
exactly like Settings → Appearance) — so the site *is* the product's design
Expand Down
6 changes: 3 additions & 3 deletions TASKS.md
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ Detailed comparison and sequencing: [`docs/git-client-1.0-audit.md`](./docs/git-
release by CI since v0.5.0, all platforms). **Endpoint resolved (0.6.1,
`ce1ffd0`):** the updater now points at the GitHub Releases manifest
(`https://github.com/danielss-dev/strand/releases/latest/download/latest.json`),
which `tauri-action` publishes per release — the dead `strand.danielss.dev/updates`
which `tauri-action` publishes per release — the dead `strandgit.com/updates`
host (it only ever served the landing page, so checks 404'd) is gone. CI opens a
**draft** release; `releases/latest/download/` only resolves once it's published.
(2026-06-07: on the Windows box the `TAURI_SIGNING_PRIVATE_KEY` in env does
Expand Down Expand Up @@ -2009,11 +2009,11 @@ quick-wins from that audit already landed (see ROADMAP changelog).
Authenticode `NotSigned`, the Git tag has no cryptographic signature, and the
legal, updater-rehearsal, and real-platform checks in
`docs/release-checklist.md` remain open.
- ☑ Landing page at `strand.danielss.dev` + downloads + auto-update manifest
- ☑ Landing page at `strandgit.com` + downloads + auto-update manifest
(site built: `website/` — static, no build step, design tokens + fonts lifted
from the app, interactive app-replica demo + ⌘K palette, AGPL/honor-system
pricing section. **Deployed on Railway** — project `landings`, service
`strand-landing`, live at https://strand.danielss.dev (custom domain DNS
`strand-landing`, live at https://strandgit.com (custom domain DNS
flipped). Site links point at the public `danielss-dev/strand` repo as of
2026-06-12. Download buttons resolve release assets and `latest.json` is
served from GitHub Releases. Social previews use the checked-in 1200×630
Expand Down
2 changes: 1 addition & 1 deletion docs/improvements.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ escape hatch (PRD §6.4 P1) keeps the modal simple while unblocking the hard cas
nothing exists yet. At minimum wire a panic hook + Tauri webview error listener
to a local log file now, so alpha bug reports come with evidence — the opt-in
remote part can come later.
- **Auto-update endpoint (P1).** Signing is done; `strand.danielss.dev` manifest
- **Auto-update endpoint (P1).** Signing is done; `strandgit.com` manifest
hosting is the last blocker (ROADMAP 0.5). Cheap to finish, unblocks the beta
loop.
- **License clarity for Pierre libs (P0-before-launch).** PRD open question 1 is
Expand Down
10 changes: 5 additions & 5 deletions docs/microsoft-store-submission.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ external CA-backed Windows code-signing certificate.
`dev.danielss.strand` unless Partner Center actually assigned that value.
- Complete owner/counsel review of the open Strand trademark gate and approve
the factual privacy notice and user-content guidelines at
`https://strand.danielss.dev/docs/?page=privacy` and
`https://strand.danielss.dev/docs/?page=content-guidelines`.
`https://strandgit.com/docs/?page=privacy` and
`https://strandgit.com/docs/?page=content-guidelines`.
- Do not obtain or upload a Windows publisher certificate for this route.
Partner Center signs the accepted MSIX during certification.

Expand Down Expand Up @@ -110,11 +110,11 @@ installer-specific step does not apply to the MSIX route.
repository content and connected Git-host data, and an optional
user-reviewed crash report can contain repository paths.
- Privacy policy:
`https://strand.danielss.dev/docs/?page=privacy`
- Website: `https://strand.danielss.dev`
`https://strandgit.com/docs/?page=privacy`
- Website: `https://strandgit.com`
- Support: `https://github.com/danielss-dev/strand/issues`
- User-generated content guidelines:
`https://strand.danielss.dev/docs/?page=content-guidelines`
`https://strandgit.com/docs/?page=content-guidelines`
- Non-Microsoft drivers or NT services: **No**
- Tested to meet accessibility guidelines: **Do not claim this yet.** Strand
is keyboard-operable, but no external conformance audit is recorded.
Expand Down
2 changes: 1 addition & 1 deletion docs/packaging.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ locally instead:
2. Ship the stapled `.dmg`. (Auto-update is fully wired: the updater pubkey is
real, `bundle.createUpdaterArtifacts` is on, and the `endpoints` point at the
GitHub Releases manifest — `releases/latest/download/latest.json`, which
`tauri-action` publishes per release. The old `strand.danielss.dev/updates`
`tauri-action` publishes per release. The old `strandgit.com/updates`
host was dropped in 0.6.1 (`ce1ffd0`). Note: the release workflow opens a
**draft**, and `releases/latest/download/` only resolves once you publish it.)

Expand Down
8 changes: 4 additions & 4 deletions website/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Strand landing page

Static site for `strand.danielss.dev`. No build step.
Static site for `strandgit.com`. No build step.

**Deployed on Railway**: project `landings` → service `strand-landing`
(`railway up` from this folder redeploys; `npm start` is what Railway runs —
`serve . -l $PORT`; `npm run build` is a no-op that exists only because the
Railway image build wants a build command). Test URL:
<https://strand-landing-production.up.railway.app>. The custom domain
`strand.danielss.dev` is live through the Railway service.
`strandgit.com` is live through the Railway service.

Preview locally with `pnpm site` from the repo root (serves on
<http://localhost:4321> via [`serve`](https://github.com/vercel/serve)).
Expand Down Expand Up @@ -46,7 +46,7 @@ Preview locally with `pnpm site` from the repo root (serves on

## Before launch

- [x] Custom-domain DNS and TLS are live at `strand.danielss.dev`.
- [x] Custom-domain DNS and TLS are live at `strandgit.com`.
- [x] Download CTAs resolve the latest platform assets through the GitHub
Releases API, with the release page as the failure fallback.
- [ ] Point "Get a commercial license" at `COMMERCIAL.md` / a purchase flow
Expand All @@ -56,6 +56,6 @@ Preview locally with `pnpm site` from the repo root (serves on
- [x] Tauri updater manifest (`latest.json`) is served from GitHub Releases
(`releases/latest/download/latest.json`), which `tauri-action` publishes
automatically — `tauri.conf.json` points the updater there. No custom
`/updates` route on `strand.danielss.dev` is needed.
`/updates` route on `strandgit.com` is needed.
- [x] The performance figures in §02 match `docs/perf-baseline.md` as of the
2026-07-18 1.0 content pass.
6 changes: 3 additions & 3 deletions website/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
<meta property="og:title" content="Strand — Review what your AI agent did" />
<meta property="og:description" content="A fast, keyboard-first Git client built around reviewing AI coding agents' changes. Free for individuals." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://strand.danielss.dev" />
<meta property="og:image" content="https://strand.danielss.dev/og-image.png" />
<meta property="og:url" content="https://strandgit.com" />
<meta property="og:image" content="https://strandgit.com/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Strand — a fast, keyboard-first Git client for reviewing agent-written code" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Strand — Review what your AI agent did" />
<meta name="twitter:description" content="A fast, keyboard-first Git client built around reviewing AI coding agents' changes." />
<meta name="twitter:image" content="https://strand.danielss.dev/og-image.png" />
<meta name="twitter:image" content="https://strandgit.com/og-image.png" />
<meta name="twitter:image:alt" content="Strand — a fast, keyboard-first Git client for reviewing agent-written code" />
<meta name="theme-color" content="#171511" />
<link rel="icon" href="favicon.svg" type="image/svg+xml" />
Expand Down
Binary file modified website/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion website/og-image.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion website/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "strand-website",
"private": true,
"version": "0.0.1",
"description": "Static landing page for strand.danielss.dev (no build step).",
"description": "Static landing page for strandgit.com (no build step).",
"scripts": {
"build": "echo 'static site - nothing to build'",
"start": "serve . -l ${PORT:-4321}",
Expand Down
Loading