| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor(repo): cover `tools`, `apps/docs` and `cli-test-helpers` with effect lint (CLI-2881) (#7348) ## TL;DR brings `tools`, `apps/docs` and `packages/cli-test-helpers` under the effect lint ## whats introduced? - `apps/docs/**`, `packages/cli-test-helpers/**` and `tools/**` join the allow list - the release and config tools run as effect programs on `FileSystem` and `HttpClient`, with the same requests, console output, files written and exit codes, so the root gains `effect` and `@effect/platform-bun` dev dependencies - the test harness runs on effect too, so `cli-test-helpers` gains the same two as dependencies, and `makeTempDir` returns a promise of an async disposable dir, so its two `apps/cli-e2e` call sites await it - the docs page swaps its `async` functions for promise chains and renders the same pages - `local-registry.ts` adds one `oxlint-disable` for the `openSync` log descriptor Verdaccio shares across stdout and stderr, which effect's `ChildProcess` cannot hand over - a failed run prints the same error, with effect frames in the stack ## ref - closes: CLI-2881 | 4 天前 | |
refactor(repo): cover `tools`, `apps/docs` and `cli-test-helpers` with effect lint (CLI-2881) (#7348) ## TL;DR brings `tools`, `apps/docs` and `packages/cli-test-helpers` under the effect lint ## whats introduced? - `apps/docs/**`, `packages/cli-test-helpers/**` and `tools/**` join the allow list - the release and config tools run as effect programs on `FileSystem` and `HttpClient`, with the same requests, console output, files written and exit codes, so the root gains `effect` and `@effect/platform-bun` dev dependencies - the test harness runs on effect too, so `cli-test-helpers` gains the same two as dependencies, and `makeTempDir` returns a promise of an async disposable dir, so its two `apps/cli-e2e` call sites await it - the docs page swaps its `async` functions for promise chains and renders the same pages - `local-registry.ts` adds one `oxlint-disable` for the `openSync` log descriptor Verdaccio shares across stdout and stderr, which effect's `ChildProcess` cannot hand over - a failed run prints the same error, with effect frames in the stack ## ref - closes: CLI-2881 | 4 天前 | |
feat: wrap go binary in ts for legacy cli handling (#31) ## What kind of change does this PR introduce? Chore / feat: wraps the Go CLI binary in TypeScript/Effect for the legacy shell, ships the Go binary alongside the TS build, and adds a record-and-replay e2e compatibility test suite for verifying output parity between the Go CLI and the TypeScript port. ## What is the current behavior? The legacy shell has no TypeScript command/handler layer — all CLI invocations go directly to the Go binary, with no automated way to verify that the TS port produces identical output. ## What is the new behavior? **Legacy command wrapper layer** Every Go CLI command is wrapped in an Effect CLI command tree under `src/legacy/commands/`. Each command has a `.command.ts` (flag wiring, Effect CLI definition) and a `.handler.ts` (Phase 0: proxies to Go binary via `LegacyGoProxy`; Phase 1+: native TypeScript implementation). All Go CLI persistent global flags (`--profile`, `--debug`, `--workdir`, `--output`, etc.) are declared on `legacyRoot` via `Command.withGlobalFlags` and forwarded automatically through the proxy — no per-handler changes needed. The Go binary is cross-compiled for each target platform and shipped alongside the TS SFE in the platform packages. **Record-and-replay e2e compatibility suite** A new `packages/cli-test-helpers` package provides a `createHarness`/`exec` API for spawning Go, `ts-legacy`, and `ts-next` CLI subprocesses, plus a parity comparison engine (`normalize`, `parseTable`, `assertTableParity`, `runParity`) for asserting output equivalence. A new `apps/cli-e2e` Vitest suite runs against a Bun.serve replay server. In replay mode it serves committed fixtures; in record mode it proxies to staging and writes normalised fixture pairs (tokens, UUIDs, project refs, and timestamps replaced with stable placeholders). Control-plane endpoints (`/_ctrl/requests`, `/_ctrl/error`, `/_ctrl/overrides`) enable assertions and error injection without network access. Initial fixture coverage: `projects list`, `orgs list`, `functions list`, `secrets list`, `branches list`. The default test target is `ts-legacy`, so `pnpm test` validates the TS port against committed fixtures without requiring network access or credentials. Named scripts: `pnpm test:go`, `pnpm test:legacy`, `pnpm test:next`, `pnpm record`. Fixes CLI-1287, CLI-1347, CLI-1348, CLI-1349 | 6 个月前 | |
chore: upgrade Bun to 1.4.1 (#6470) ## Summary - pin Bun 1.4.1 through mise and refresh the locked runtime artifacts - replace the Istanbul Vitest coverage provider with the V8 provider across coverage-enabled workspaces - remove the unused coverage provider from the CLI e2e workspace and preserve pnpm global-store peer resolution [Bun 1.4.1](https://bun.com/blog/bun-v1.4.1#node-js-compatibility-improvements) fixes the Vitest/c8 V8 coverage merge failure that previously blocked this migration. ## Binary size impact Compared locally built Bun 1.4.1 executables with the checksum-verified [v2.117.0-beta.18 production artifacts](https://github.com/supabase/cli/releases/tag/v2.117.0-beta.18), which embed Bun 1.4.0. | Platform | Production 1.4.0 | Local 1.4.1 | Change | |---|---:|---:|---:| | macOS arm64 | 69.52 MiB | 67.53 MiB | -2.86% | | macOS x64 | 76.00 MiB | 74.20 MiB | -2.37% | | Linux arm64 | 91.92 MiB | 90.36 MiB | -1.70% | | Linux x64 | 92.58 MiB | 91.01 MiB | -1.69% | | Windows arm64 | 84.50 MiB | 83.17 MiB | -1.57% | | Windows x64 | 94.52 MiB | 91.54 MiB | -3.16% | The compressed release archives are also 0.37%-1.54% smaller. The comparison is not fully runtime-isolated: the current source is one commit beyond the production tag, and the local macOS binaries lack CI release signing. Linux and Windows provide the cleanest indication of the Bun upgrade size impact. | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 天前 | ||
| 4 天前 | ||
| 6 个月前 | ||
| 1 个月前 |