Skip to content

feat: the Uptide landing page, published on GitHub Pages - #1

Merged
lucasbraum merged 7 commits into
mainfrom
site/landing
Oct 7, 2026
Merged

lucasbraum merged 7 commits into
mainfrom
site/landing

Conversation

@lucasbraum

Copy link
Copy Markdown
Contributor

The Uptide landing page, moved here from uptide-dev/uptide#37 so it publishes at the root, https://uptide-dev.github.io.

What's in it

  • site/, with its history from #37. The five commits that touched the page were replayed with their original authors, messages and sign-offs, keeping only site/ and the screenshots. The result is byte-identical to #37's site/.
    • Some messages still mention parts that stay in uptide-dev/uptide (the Gemini label in the CLI, the CLI test), because they are the original messages.
    • The page content is unchanged: numbers rerun with uptide 0.4.0 from npm, Gemini experimental, --html --open / --pr --yes in the examples, and fix described as deterministic rules first, then AI with your API key.
  • 8e84d88: SITE_URL is now https://uptide-dev.github.io/, and site/README.md links back to uptide's source and fixture instead of repo-relative paths.
  • 37a8790, CI:
    • pages.yml deploys site/ as it is (upload-pages-artifact + deploy-pages; contents read, pages write, id-token write) on a push to main that changes it.
    • dco.yml plus scripts/ are copied unchanged from uptide-dev/uptide, where they are tested.
    • ci.yml runs the private-material check with the denylist and the page's tests (node --test, no dependencies).
  • README explains how to preview locally, how publishing works, and the one-time setup.

Checks (local)

  • node --test 'test/*.test.mjs': 4 pass. Every font sits next to its OFL license, the four URLs come from %SITE_URL%, nothing loads from another origin, and the deploy has the right trigger and permissions.
  • Private material with the real denylist (13 identifiers): clean. No private repo, company or person name is on the page.
  • DCO: every commit is signed off. actionlint: 0 findings.

Before it can deploy

  1. Make this repository public. It is private now, and Pages on a private repository needs a paid plan.
  2. Settings → Pages → Source: GitHub Actions.
  3. Secret UPTIDE_PRIVATE_DENYLIST (same value as in uptide-dev/uptide). Until it's set, CI's private-material check fails on pushes and on PRs from this repository, this one included.

Screenshots

light dark
desktop (1440) desktop light desktop dark
mobile (390) mobile light mobile dark

🤖 Generated with Claude Code

lucasbraum and others added 7 commits October 6, 2026 22:13
A static page in site/: tagline, list/check/fix/pr, real output (list on
supabase/supabase at 9d1661d with uptide 0.4.0, check and fix on the
storefront fixture as in the README), verification, safety, keys and
privacy (the CLI's privacy text verbatim), what is supported today, and
how to contribute a pack. Same design tokens as the HTML report, light
and dark, self-hosted OFL fonts, no external requests.

Also a 1280x640 social preview (og.png) and its source.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jfs6nzMrWv3mgXR2tdoiRb
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…n npm; Gemini experimental

- .github/workflows/pages.yml publishes site/ as it is on a push to main that changes it
  (upload-pages-artifact, deploy-pages; contents read, pages write, id-token write). The
  canonical URL, og:url, og:image and twitter:image come from its one SITE_URL
  (https://uptide-dev.github.io/uptide/), written into %SITE_URL% at deploy time.
- list on supabase/supabase at 9d1661d, rerun with npx uptide@latest (0.4.0): 20s, 12
  urgent (a new @modelcontextprotocol/sdk advisory leads), ai 7.0.130, @ai-sdk/openai
  4.0.86; the terminal blocks, the urgent tile, the hero note and the footnote together.
  Counts (273/116/100/57/15/53) and check on storefront are unchanged.
- The providers row says Gemini is experimental, as the CLI now does.
- A test keeps every font next to its OFL license, the URL placeholder, and no request to
  another origin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
list and check with --html --open, fix with --pr --yes; the fix row says what --pr --yes
does, and the pr row is for a branch fix left local. The terminal blocks keep the commands
as they were run. On a phone the hero's copy button is an icon, so the command fits one line.
Screenshots retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…PI key

The fix row in How it works shows the two passes: the pack's rules (no LLM, no key, the
same on every run), then the agent for what rules can't do, which needs ANTHROPIC_API_KEY,
OPENAI_API_KEY or GEMINI_API_KEY (experimental); without a key the rules still run and the
rest is listed, and a dependency with no pack needs the key. list and check say they need
no LLM and no key. On a phone every copy button is an icon and a command never wraps
inside a flag. Screenshots retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…tide

SITE_URL is https://uptide-dev.github.io/ now that the page has its own repository, and the
references to uptide's source and fixture are links.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…the page's tests

pages.yml deploys site/ as it is (SITE_URL https://uptide-dev.github.io/). dco.yml and the
scripts it and the private-material check use are copies from uptide-dev/uptide. The page's
tests run with node --test, with no dependencies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
lucasbraum added a commit to uptide-dev/uptide that referenced this pull request Oct 7, 2026
Labels the Gemini provider **experimental** in the CLI and the docs.

- `fix --help`: `--provider` reads "anthropic, openai or gemini
(experimental)".
- The provider line `fix` prints: `LLM: gemini (experimental) /
gemini-3.8-flash · budget $1.00`.
- README and docs/cli.md: "Assisted fixes support Anthropic, OpenAI and
Gemini (experimental)".
- The test that selects each provider from its key checks the label.
There's a patch changeset.

Why: Gemini's evaluation runs on the storefront fixture failed on
service errors (HTTP 503/429; docs/provider-evaluation.md), so its
migration quality isn't established yet.

**The landing page that this PR first carried moved to its own
repository**, so it publishes at the root, https://uptide-dev.github.io:
[uptide-dev/uptide-dev.github.io#1](uptide-dev/uptide-dev.github.io#1),
with its history. The last commit here removes `site/`, the Pages
workflow, its test and its screenshots. The earlier commits are left as
they were, not rewritten. Net diff against main: 5 files, Gemini only.

Checks: cli tests 51 passed in `cli.test.ts`; biome clean; changeset
check ok; every commit signed off.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@lucasbraum
lucasbraum merged commit 8642624 into main Oct 7, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant