Repository navigation
fix(fix): label the Gemini provider experimental - #37
Merged
Merged
Conversation
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>
In fix --help, the LLM line fix prints and the docs. Its evaluation runs on the storefront fixture failed on service errors (docs/provider-evaluation.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 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>
It publishes at the root there (https://uptide-dev.github.io): site/, its Pages workflow, its test and its screenshots now live in that repository, with their history. This pull request keeps the Gemini label only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
7 tasks done
lucasbraum
added a commit
that referenced
this pull request
Oct 7, 2026
… writing to /repo (#40) ## What and why Two tests failed in a cloud container, which runs as root with `NODE_PATH` set, but not in CI. **CI on `main` is green.** The latest run on 3e7f744 (#37) passed, and the last red run on `main` was 089f7b9 (#34), already followed by green runs. So no merge let a red `main` through. Both failures were environment-dependent: CI passes them by accident rather than by design. 1. **`fix.test.ts` › checks workspace source under its own resolution mode** — a code bug. `resolveCompiler` loaded `typescript` with `createRequire(...)`, and Node's resolution also searches `NODE_PATH` and the global folders. In the container `NODE_PATH` holds a global TypeScript 6.0.2, so a repository without its own compiler was verified with TS 6, which reports TS5107 (`moduleResolution: node10` deprecated). In CI `NODE_PATH` is unset and the bundled 5.9 compiler is used, so the test passes there. The same thing would happen to any user with a global TypeScript on `NODE_PATH`. Now `consumerCompilerDir` takes `node_modules/typescript` from the repository or the nearest ancestor that has one, else the bundled compiler. 2. **`cli.test.ts` › uptide verify › ends with the summary and the next commands** — a test bug. `fixReport()` set `prBody: '/repo/.uptide/pr-body.md'`, and `fix` writes `report.html` next to the stored run. On a CI runner (non-root) creating `/repo` fails silently, so the engine's `html` path survives. As root the write succeeds, replaces `html`, the assertion fails, and `/repo/.uptide/` is left behind. Now each report gets a fresh temporary directory. The test asserts the absolute path of its own stored run outside the working directory. One formatter assertion now matches its line regardless of column padding, since the padding depends on path lengths. No test was skipped. ## How it was verified - New `compiler.test.ts` cases: a workspace finds the root's `node_modules/typescript`; a repository without TypeScript gets the bundled compiler. The second case fails on the old `resolveCompiler` in the container (where it got the global 6.0.2) and passes now. - In the container, which has `NODE_PATH` and runs as root: core 852 passed (3 files skipped, as before), CLI 343/343, `pnpm lint` and `pnpm typecheck` clean. `/repo/.uptide/report.html` kept its old timestamp across the CLI run, so nothing writes there anymore. ## Checklist - [x] Tests for the change (the compiler fix starts with a test that fails) - [x] `pnpm lint && pnpm typecheck && pnpm test` pass - [x] README and docs updated if behavior changed (no doc describes compiler resolution beyond "the consumer's TypeScript", which is now what it does) - [x] Changeset added (`.changeset/consumer-compiler-only.md`, patch) - [x] No new dependency - [x] No private code, names or paths in fixtures, tests or docs - [x] The rules in CONTRIBUTING.md ("Rules that do not bend") still hold 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01B2T8GmEVnZwfNrugajEMqi --- _Generated by [Claude Code](https://claude.ai/code/session_01B2T8GmEVnZwfNrugajEMqi)_ --------- Signed-off-by: Claude <noreply@anthropic.com> Co-authored-by: Claude <noreply@anthropic.com>
Merged
lucasbraum
pushed a commit
that referenced
this pull request
Oct 8, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## uptide@0.5.0 ### Minor Changes - [#39](#39) [`b9f9974`](b9f9974) Thanks [@lucasbraum](https://github.com/lucasbraum)! - A verified migration pack for the AI SDK (`ai`) 6 → 7: the renamed options (`system` → `instructions`, `onFinish` → `onEnd`, `onStepFinish` → `onStepEnd`, `experimental_telemetry` → `telemetry`), `stepCountIs` → `isStepCount`, `fullStream` → `stream`, `totalUsage` → `usage` and the removed `experimental_*` options are rewritten by rule; telemetry `metadata`, tool `context` and the stream result helpers go to the agent with the guide; what the compiler cannot see (telemetry registration, results that now cover every step, rejected system messages) is listed for review. Scored against vercel/chatbot and miurla/morphic at the commit before their own upgrade: no false positive. `uptide pack test` gains `--update-fixtures`, fixture markers take the compiler's `message`, and ground-truth repositories can use bun. - [#39](#39) [`b9f9974`](b9f9974) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `check` and `fix` upgrade a package together with the packages that must move with it, using the groups `list` already draws (family, peer link, shared pin), each at the version that agrees with the target. `fix ai` also bumps `@ai-sdk/react`, `@ai-sdk/provider` and the installed `@ai-sdk/*` providers in one install and one commit; check's plan, the fix summary and the PR description say which and why, and `fix` stops before changing anything when a member has no release that agrees. npm and pnpm installs resolve the exact version first, so a `^` range keeps the version the target pins. Ground-truth entries take `with`, the packages the real upgrade moved, and `pack test` fails when check would leave one behind. - [#38](#38) [`adaf8f9`](adaf8f9) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Migration packs are a public, testable contract (docs/packs.md). `uptide pack new` scaffolds a pack (an example rule, a fixture pair, a test, empty ground truth) and registers it; `uptide pack test` scores packs against their fixtures and against public repositories at the commit before their upgrade, with precision and recall per rule, every false positive and false negative, and `--json` for CI. A pack is labeled verified only with ground truth from at least two public repositories and no false positive among its breaking findings; otherwise it ships as a candidate and `check`, `list` and `fix` treat the dependency as generic. ### Patch Changes - [#44](#44) [`b4cc21f`](b4cc21f) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `check` no longer dies with "Manipulation error: A syntax error was inserted." on packages whose type aliases give their type parameters defaults (`type-fest` 4 → 5, `i18next` 23 → 26): the alias body is read after the parameter list, not at the first default's ` = `, so these aliases are compared by the checker instead of breaking the comparison program. - [#40](#40) [`3e3a5fa`](3e3a5fa) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `fix` verifies with the repository's own TypeScript (its `node_modules/typescript`, or an ancestor's) or the bundled one, and never with a TypeScript that `NODE_PATH` or Node's global folders happen to provide. A machine with a global TypeScript 6 made verification report TS5107 deprecations the repository never sees. - [#37](#37) [`3e7f744`](3e7f744) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Gemini is labelled experimental: in `fix --help`, in the `LLM:` line `fix` prints, and in the docs. Its evaluation runs on the storefront fixture failed on service errors (HTTP 503/429), so its migration quality is not established yet. Co-authored-by: uptide-release[bot] <338861287+uptide-release[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Labels the Gemini provider experimental in the CLI and the docs.
fix --help:--providerreads "anthropic, openai or gemini (experimental)".fixprints:LLM: gemini (experimental) / gemini-3.8-flash · budget $1.00.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, 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