Skip to content

Commit aa668fd

Browse files
committed
chore: merge main into Lineage subagent stop branch
2 parents bfb051d + b38aa18 commit aa668fd

840 files changed

Lines changed: 40968 additions & 22461 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.coderabbit.config.ts‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { defineConfig } from "@coderabbitai/config";
2+
3+
export default defineConfig({
4+
reviews: {
5+
high_level_summary: false,
6+
review_status: false,
7+
auto_review: {
8+
enabled: true,
9+
},
10+
pre_merge_checks: {
11+
docstrings: { mode: "off" },
12+
},
13+
path_filters: [
14+
// Vendored read-only reference checkouts of upstream Effect and Alchemy
15+
// (see scripts/lib/reference-repos.ts). Nothing imports from them.
16+
"!.repos/**",
17+
],
18+
path_instructions: [
19+
{
20+
path: "{apps,packages,infra}/**/*.ts",
21+
instructions: "Hold changed code to the rules in docs/internals/effect-services.md.",
22+
},
23+
{
24+
path: "apps/web/src/**/*.{tsx,css}",
25+
instructions: "Hold changed code to the rules in docs/internals/web-ui.md.",
26+
},
27+
],
28+
},
29+
knowledge_base: {
30+
code_guidelines: {
31+
filePatterns: [
32+
{ files: "docs/internals/effect-services.md", applyTo: "{apps,packages,infra}/**/*.ts" },
33+
{ files: "docs/internals/web-ui.md", applyTo: "apps/web/src/**/*.{tsx,css}" },
34+
],
35+
},
36+
},
37+
});

‎.coderabbit.yaml‎

Lines changed: 0 additions & 9 deletions
This file was deleted.

‎.cursor/rules/cursor-cloud.mdc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,4 @@ Gradle auto-downloads any additional pinned SDK packages on demand.
6969
## Known flaky tests (unrelated to setup)
7070

7171
- `apps/server/src/git/GitManager.test.ts` (cross-repo PR metadata, can time out at 12s).
72-
- `apps/server/src/provider/Layers/ProviderRegistry.test.ts` (codex binaryPath re-probe ordering).
72+
- `apps/server/src/provider/ProviderRegistry.test.ts` (codex binaryPath re-probe ordering).

‎.github/VOUCHED.td‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ github:cursoragent
2525
github:D3OXY
2626
github:dbalders
2727
github:eggfriedrice24
28+
github:esthor
2829
github:extoci
2930
github:f-trycua
3031
github:flamboh

‎.github/workflows/ci.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ jobs:
255255
# No Electron setup here: `t3` (apps/server) has no Electron dependency
256256
# and none of its tests touch the runtime. Only the non-server `test`
257257
# job, which covers @t3tools/desktop, needs the download.
258+
- name: Install Chromium for server browser integration tests
259+
run: node apps/server/node_modules/playwright-core/cli.js install --with-deps --only-shell chromium
260+
258261
- name: Test
259262
env:
260263
T3CODE_TRANSFER_BUDGET_REPORT_PATH: ${{ runner.temp }}/t3code-transfer-budget.md

‎.github/workflows/deploy-relay.yml‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ on:
44
push:
55
branches:
66
- main
7-
# Alchemy does not redeploy the Worker when only a Config value read in its
8-
# Init changes (alchemy-run/alchemy#1831), so a changed repository variable
9-
# needs a forced deploy to reach production.
7+
# Redeploys main after a variable or secret change. Alchemy redeploys the
8+
# Worker when a value it reads changes, so force is rarely needed, and it
9+
# replaces the Postgres runtime role (alchemy-run/alchemy#1832).
1010
workflow_dispatch:
1111
inputs:
1212
force:
13-
description: Redeploy every resource, including ones with no detected changes
13+
description: Redeploy every resource, including ones with no detected changes. Replaces the Postgres runtime role.
1414
type: boolean
15-
default: true
15+
default: false
1616

1717
permissions:
1818
contents: read
@@ -40,6 +40,7 @@ jobs:
4040
RELAY_API_ZONE_NAME: ${{ vars.RELAY_API_ZONE_NAME }}
4141
RELAY_TUNNEL_ZONE_NAME: ${{ vars.RELAY_TUNNEL_ZONE_NAME }}
4242
RELAY_TUNNEL_CLEANUP_MODE: ${{ vars.RELAY_TUNNEL_CLEANUP_MODE }}
43+
RELAY_LEGACY_TUNNEL_CLEANUP_MODE: ${{ vars.RELAY_LEGACY_TUNNEL_CLEANUP_MODE }}
4344
CLERK_PUBLISHABLE_KEY: ${{ vars.CLERK_PUBLISHABLE_KEY }}
4445
CLERK_JWT_AUDIENCE: ${{ vars.CLERK_JWT_AUDIENCE }}
4546
APNS_ENVIRONMENT: ${{ vars.APNS_ENVIRONMENT }}

‎.github/workflows/release.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,9 @@ jobs:
330330
# No Electron setup here: `t3` (apps/server) has no Electron dependency
331331
# and none of its tests touch the runtime. Only the non-server `test`
332332
# job, which covers @t3tools/desktop, needs the download.
333+
- name: Install Chromium for server browser integration tests
334+
run: node apps/server/node_modules/playwright-core/cli.js install --with-deps --only-shell chromium
335+
333336
- name: Test
334337
run: vp run --filter t3 test --shard ${{ matrix.shard }}/${{ strategy.job-total }}
335338

‎AGENTS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ Architecture and its constraints: `docs/internals/overview.md`. Glossary: `docs/
151151

152152
- Complexity belongs at the adapter boundary. Orchestration stays pure, UI stays dumb.
153153
- Server features are services; transports stay thin. A `ws.ts` RPC handler, HTTP route, or MCP tool decodes input, calls one service method, and maps errors. See [Effect services](docs/internals/effect-services.md).
154-
- `apps/web/src/components/ui` exports own their look. Pick a `variant` or `size`; do not restyle one with `className`. If none fits and the look is a generic concept, add a variant to the component; a look that belongs to one feature stays in that feature's own component, not in `components/ui`. Layout classes (width, flex, margin, position) belong on the parent. `shadcn/no-restyle` fails lint on violations.
154+
- `apps/web/src/components/ui` exports own their look. Pick a `variant` or `size`; do not restyle one with `className`. If none fits and the look is a generic concept, add a variant to the component; a look that belongs to one feature stays in that feature's own component, not in `components/ui`. Layout classes (width, flex, margin, position) belong on the parent. `shadcn/no-restyle` fails lint on violations. See [Web UI](docs/internals/web-ui.md).
155155
- Inferred types over annotations. `any` is the enemy.
156156
- Comments describe how a thing is used, and move when the code moves. To be used mostly to describe functions, not to annotate every line of behavior.
157157
- Our users drive agents all day and notice a dropped frame, a lying spinner, and a stale label. No continuously repainting animations; they peg the GPU on high-refresh displays.

‎apps/desktop/src/app/DesktopAppIdentity.test.ts‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ interface ElectronAppCalls {
3838
readonly setName: string[];
3939
}
4040

41-
const makeElectronAppLayer = (calls: ElectronAppCalls) =>
41+
const layerElectronApp = (calls: ElectronAppCalls) =>
4242
Layer.succeed(ElectronApp.ElectronApp, {
4343
metadata: Effect.die("unexpected metadata read"),
4444
name: Effect.succeed("T3 Code"),
@@ -70,7 +70,7 @@ const makeElectronAppLayer = (calls: ElectronAppCalls) =>
7070
on: () => Effect.void,
7171
} satisfies ElectronApp.ElectronApp["Service"]);
7272

73-
const makeAssetsLayer = (png: Option.Option<string>) =>
73+
const layerAssets = (png: Option.Option<string>) =>
7474
Layer.succeed(DesktopAssets.DesktopAssets, {
7575
iconPaths: Effect.succeed({
7676
ico: Option.none(),
@@ -80,7 +80,7 @@ const makeAssetsLayer = (png: Option.Option<string>) =>
8080
resolveResourcePath: () => Effect.succeedNone,
8181
} satisfies DesktopAssets.DesktopAssets["Service"]);
8282

83-
const makeEnvironmentLayer = (overrides: TestEnvironmentInput = {}) => {
83+
const layerEnvironment = (overrides: TestEnvironmentInput = {}) => {
8484
const { env, ...environmentOverrides } = overrides;
8585
return DesktopEnvironment.layer({
8686
...defaultEnvironmentInput,
@@ -138,9 +138,9 @@ const withIdentity = <A, E, R>(
138138
Effect.succeed(input.packageJson ?? '{"t3codeCommitHash":"abcdef1234567890"}'),
139139
}),
140140
),
141-
Layer.provideMerge(makeAssetsLayer(input.pngIconPath ?? Option.none())),
142-
Layer.provideMerge(makeElectronAppLayer(calls)),
143-
Layer.provideMerge(makeEnvironmentLayer(input.environment)),
141+
Layer.provideMerge(layerAssets(input.pngIconPath ?? Option.none())),
142+
Layer.provideMerge(layerElectronApp(calls)),
143+
Layer.provideMerge(layerEnvironment(input.environment)),
144144
),
145145
),
146146
);

‎apps/desktop/src/app/DesktopAssets.test.ts‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import * as DesktopAssets from "./DesktopAssets.ts";
1111
import * as DesktopConfig from "./DesktopConfig.ts";
1212
import * as DesktopEnvironment from "./DesktopEnvironment.ts";
1313

14-
const environmentLayer = DesktopEnvironment.layer({
14+
const layerEnvironment = DesktopEnvironment.layer({
1515
dirname: "/repo/apps/desktop/dist-electron",
1616
homeDirectory: "/Users/alice",
1717
platform: "darwin",
@@ -30,7 +30,7 @@ const environmentLayer = DesktopEnvironment.layer({
3030
describe("DesktopAssets", () => {
3131
it.effect("uses canonical source-tree icons for unpackaged development", () =>
3232
Effect.gen(function* () {
33-
const developmentEnvironmentLayer = DesktopEnvironment.layer({
33+
const layerDevelopmentEnvironment = DesktopEnvironment.layer({
3434
dirname: "/repo/apps/desktop/dist-electron",
3535
homeDirectory: "/Users/alice",
3636
platform: "linux",
@@ -49,13 +49,13 @@ describe("DesktopAssets", () => {
4949
),
5050
),
5151
);
52-
const fileSystemLayer = FileSystem.layerNoop({
52+
const layerFileSystem = FileSystem.layerNoop({
5353
exists: (path) => Effect.succeed(String(path).includes("/assets/dev/")),
5454
});
5555
const assets = yield* DesktopAssets.DesktopAssets.pipe(
5656
Effect.provide(
5757
DesktopAssets.layer.pipe(
58-
Layer.provide(Layer.merge(fileSystemLayer, developmentEnvironmentLayer)),
58+
Layer.provide(Layer.merge(layerFileSystem, layerDevelopmentEnvironment)),
5959
),
6060
),
6161
);
@@ -79,13 +79,13 @@ describe("DesktopAssets", () => {
7979
pathOrDescriptor: candidatePath,
8080
description: "private filesystem diagnostic",
8181
});
82-
const fileSystemLayer = FileSystem.layerNoop({
82+
const layerFileSystem = FileSystem.layerNoop({
8383
exists: (path) => (path === candidatePath ? Effect.fail(cause) : Effect.succeed(false)),
8484
});
85-
const assetsLayer = DesktopAssets.layer.pipe(
86-
Layer.provide(Layer.merge(fileSystemLayer, environmentLayer)),
85+
const layerAssets = DesktopAssets.layer.pipe(
86+
Layer.provide(Layer.merge(layerFileSystem, layerEnvironment)),
8787
);
88-
const assets = yield* DesktopAssets.DesktopAssets.pipe(Effect.provide(assetsLayer));
88+
const assets = yield* DesktopAssets.DesktopAssets.pipe(Effect.provide(layerAssets));
8989

9090
const error = yield* assets.resolveResourcePath(fileName).pipe(Effect.flip);
9191

0 commit comments

Comments
 (0)