Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
da976cf
fix(marketing): restore continuous endorsement scrolling (#10450)
t3dotgg Sep 7, 2026
bd280de
Revert "fix(marketing): restore continuous endorsement scrolling" (#1…
t3dotgg Sep 7, 2026
b22646c
fix(marketing): bring back the endorsement marquee (#10455)
t3dotgg Sep 7, 2026
de28fa1
chore: enable CodeRabbit automatic reviews (#10457)
t3dotgg Sep 7, 2026
1c1d38f
fix(codex): keep Spark limits from replacing the main allowance (#10458)
Yash-Singh1 Sep 7, 2026
7e03dcf
fix(marketing): send 95 nightly downloads to the downloads page (#10460)
t3dotgg Sep 7, 2026
ecf3716
fix(web): composer regains focus when you tab back into T3 Code (#10463)
t3dotgg Sep 7, 2026
4e969f3
fix(web): keep sidebar drag dividers clear and gestures smooth (#10453)
juliusmarminge Sep 7, 2026
6134b90
fix(server): mark Cursor transport error answers as failed (#10337)
shivamhwp Sep 7, 2026
f5fb056
fix(web): clear stuck panel resize cursor (#10461)
t3dotgg Sep 7, 2026
490eb17
fix(web): clarify sidebar drag dividers and empty targets (#10464)
juliusmarminge Sep 7, 2026
f729e8f
fix(web): make onboarding a shared multi-computer wizard (#10465)
juliusmarminge Sep 7, 2026
6abdf37
fix(shared): redeem reset credits through the hub when it holds the a…
juliusmarminge Sep 7, 2026
e1230d6
fix(mobile): keep pending messages in the chat timeline (#10449)
juliusmarminge Sep 7, 2026
bb5748b
fix(mobile): show connection status in the floating pill instead of a…
juliusmarminge Sep 7, 2026
a7028f1
fix: use Pierre icons consistently for attachments (#10475)
juliusmarminge Sep 7, 2026
08c715e
chore(release): prepare v0.0.39
t3-code[bot] Sep 7, 2026
5b68b2c
feat(mobile): open the thread screen as soon as a new task is submitt…
juliusmarminge Sep 7, 2026
7376536
fix(devcontainer): make repository setup work (#7875)
saphid Sep 7, 2026
d8bc683
fix(projects): prevent invalid script IDs from crashing threads (#10019)
saphid Sep 7, 2026
bc3dc26
fix(mobile): hide changed-files navigator and restore refresh in raw …
lnieuwenhuis Sep 7, 2026
e3b644c
fix(ios): scroll short source files from blank space (#10178)
juliusmarminge Sep 7, 2026
7dda0b1
feat(mobile): start a new thread on an existing branch (#10359)
StiensWout Sep 7, 2026
062987b
fix(mobile): improve font-size slider performance and prevent maximum…
bbernag Sep 7, 2026
b919d63
fix(web): keep composer toolbar controls anchored during transitions …
juliusmarminge Sep 7, 2026
f57d383
fix(web): resize the floating preview from any edge (#10467)
juliusmarminge Sep 7, 2026
7129797
fix(mobile): prevent chat from disappearing when scrolling (#10479)
juliusmarminge Sep 7, 2026
b248f5a
fix(mobile): smooth composer status pill resizing (#10484)
juliusmarminge Sep 7, 2026
c0d4e95
fix(mobile): release initial scroll target after dragging (#10483)
juliusmarminge Sep 7, 2026
e32dd42
fix(mobile): animate thread lifecycle transitions consistently (#10487)
juliusmarminge Sep 7, 2026
b717537
fix(mobile): restore assistant message bottom padding (#10491)
juliusmarminge Sep 7, 2026
dc39615
fix(mobile): preserve chat rows when toggling commands (#10492)
juliusmarminge Sep 7, 2026
8b2838e
feat(web): group onboarding project import by repository (#10493)
t3dotgg Sep 7, 2026
fe07ffe
fix(web): remove inserted citations on cancel (#10518)
extoci Sep 7, 2026
357b8d5
fix(mobile): match Working status color to desktop
baptisteArno Sep 7, 2026
8d7f781
fix(mobile): wait for native thread scroll before reveal (#10486)
juliusmarminge Sep 7, 2026
1d1bf50
chore(mobile): bump app version to 1.1.0
t3-code[bot] Sep 7, 2026
62fbbe0
fix(web): tolerate servers that predate git identity in project impor…
juliusmarminge Sep 7, 2026
72d9408
fix(web): restore settled PR colors on hover (#10023)
flamboh Sep 7, 2026
9cc9839
fix(web): keep popup triggers steady when pressed (#10468)
dominic-r Sep 7, 2026
0d34579
fix(web): keep project favicon shape consistent across sizes (#10502)
sameerr03 Sep 7, 2026
3bf74eb
fix(claude): report usage limits on retried turns (#10549)
StiensWout Sep 7, 2026
5b8a69c
refactor(desktop): classify backend exports (#10265)
juliusmarminge Sep 7, 2026
5a853a4
refactor(desktop): classify electron exports (#10266)
juliusmarminge Sep 7, 2026
89dd9ab
refactor(desktop): classify app exports (#10267)
juliusmarminge Sep 7, 2026
e279e40
refactor(desktop): classify preview exports (#10268)
juliusmarminge Sep 7, 2026
b491e41
ci(knip): enforce desktop exports (#10269)
juliusmarminge Sep 7, 2026
577b6cc
fix(web): remove excess sidebar thread spacing (#10569)
maria-rcks Sep 7, 2026
c8ec7df
fix(web): make settings project scopes searchable and scrollable (#10…
maria-rcks Sep 7, 2026
5ec6f77
fix(web): use `tabular-nums` with the ui font for sidebar timer (#10592)
extoci Sep 7, 2026
12f5604
fix(web): correct pending question attachment message (#10599)
dominic-r Sep 7, 2026
c0cad74
fix(mobile): restore brand artwork in the Android adaptive icon (#10598)
juliusmarminge Sep 7, 2026
0244333
fix(mobile): configure iOS Keychain access group (#3665)
VedankPurohit Sep 7, 2026
dadba6d
fix(web): remember Composer Fast mode across new chats (#2981)
aravhawk Sep 7, 2026
95834d6
fix(server): disable executable capabilities in Claude metadata gener…
maxwellyoung Sep 7, 2026
09e8de9
Add stop thread keybinding command (#4308)
jakeleventhal Sep 7, 2026
2c8e95a
fix(mobile): show the provider account badge on thread rows (#9899)
vitalyiegorov Sep 7, 2026
d64335b
fix(codex): name the usage limit and its reset instead of relaying "o…
vitalyiegorov Sep 7, 2026
ea2983a
fix(web): copy selected pull request link from PR page (#10615)
maria-rcks Sep 7, 2026
d67157a
fix(web): keep ref picker steady when opening (#9472)
Adamulek123 Sep 7, 2026
569a8cd
fix(web): play pull request videos inline (#10617)
maria-rcks Sep 7, 2026
8de9169
chore(release): prepare v0.0.40
t3-code[bot] Sep 8, 2026
e0e0bcb
fix(desktop): preserve browser editing shortcuts (#10621)
juliusmarminge Sep 8, 2026
d081ab7
fix(web): open pull request markdown links in the panel (#10623)
juliusmarminge Sep 8, 2026
892de47
fix(mobile): fit the Android splash icon to its circular mask (#10620)
juliusmarminge Sep 8, 2026
299404a
feat(desktop): add cross-platform window capture (#8103)
Bil0000 Sep 8, 2026
8588d7f
fix(web): open proactive panels when entering threads (#10610)
maria-rcks Sep 8, 2026
9fe4d65
fix(native): wait for the KDE feedback test listener (#10645)
juliusmarminge Sep 8, 2026
a01b227
fix(desktop): resolve local media linked from remote threads (#10619)
maria-rcks Sep 8, 2026
b7c002f
fix(web): add bottom padding to project actions header (#10634)
flamboh Sep 8, 2026
15193df
fix(web): update machines together in auto balance (#10596)
maria-rcks Sep 8, 2026
9e37f0c
fix(preview): transfer recordings to the agent environment (#10572)
maria-rcks Sep 8, 2026
f0bd43e
Add 'macroscope-review' label to conventions
juliusmarminge Sep 8, 2026
5a18fb9
Add 'macroscope-review' label to UI consistency
juliusmarminge Sep 8, 2026
6df0add
fix(web): navigate markdown images as galleries (#10625)
maria-rcks Sep 8, 2026
a37c664
chore: upgrade to TypeScript 7.0.2 (#10663)
juliusmarminge Sep 8, 2026
6ba15c0
fix: hide email-bearing account labels in usage limits (#10668)
juliusmarminge Sep 8, 2026
50a76ce
fix(web): keep scroll-to-end button close to composer (#10543)
Bil0000 Sep 8, 2026
bd56e92
chore(deps): upgrade Effect to rc.112 and Alchemy to beta.76 (#10652)
juliusmarminge Sep 8, 2026
458f502
chore(refs): sync Effect reference to rc.112 (#10653)
juliusmarminge Sep 8, 2026
9d345fa
chore(refs): sync Alchemy reference to beta.76 (#10654)
juliusmarminge Sep 8, 2026
bc4b006
fix: generate thread titles with the selected model across connection…
Bil0000 Sep 8, 2026
b5f7fa0
fix(desktop): enable context menus in the browser (#10670)
juliusmarminge Sep 8, 2026
bc88fdf
fix(desktop): stop generating declarations during bundling (#10679)
juliusmarminge Sep 8, 2026
349ce30
fix(desktop): restore layout control hit targets (#10673)
juliusmarminge Sep 8, 2026
7220dfe
feat(chat): attach files to question answers (#9871)
shivamhwp Sep 8, 2026
9915263
feat(desktop): refresh macOS installer with aurora artwork (#10632)
saphid Sep 8, 2026
430fbd1
fix(server): give completed turns a full session idle window (#10689)
StiensWout Sep 8, 2026
7d9aaf6
feat(web): add pull request merge defaults (#8088)
Bil0000 Sep 8, 2026
1f14d6d
fix(usage): keep account columns aligned across limit rows (#10690)
juliusmarminge Sep 8, 2026
11601da
fix(web): chat text no longer shows through a 1px gap under composer …
vitalyiegorov Sep 8, 2026
6f4cd07
refactor(server): classify runtime exports (#10274)
juliusmarminge Sep 8, 2026
0af04f1
refactor(server): classify orchestration exports (#10275)
juliusmarminge Sep 8, 2026
161715b
refactor(server): classify service exports (#10276)
juliusmarminge Sep 8, 2026
77d9ffc
refactor(server): classify telemetry exports (#10277)
juliusmarminge Sep 8, 2026
060c576
refactor(server): classify provider exports (#10278)
juliusmarminge Sep 8, 2026
3b6ce93
refactor(server): classify source control exports (#10279)
juliusmarminge Sep 8, 2026
7cdeb69
refactor(server): classify source control registry API (#10280)
juliusmarminge Sep 8, 2026
1f0a14c
refactor(server): classify preview toolkit exports (#10281)
juliusmarminge Sep 8, 2026
b284715
chore(mobile): bump app version to 1.1.1
t3-code[bot] Sep 8, 2026
7d62050
ci(knip): enforce server exports (#10282)
juliusmarminge Sep 8, 2026
134b719
feat(web): add previous/next turn navigation in minimap (#8531)
UtkarshUsername Sep 8, 2026
d6dbe8d
fix(web): stop the settings sidebar shifting when switching pages (#1…
t3dotgg Sep 8, 2026
83b865f
fix(web): copy terminal selection with Ctrl+Insert (#8541)
iamshadmantaqi Sep 8, 2026
82451ee
fix(web): show the same project icon in the command palette as everyw…
t3dotgg Sep 8, 2026
d7a59c6
fix(web): stop sidebar rows flashing and shifting on click (#10713)
t3dotgg Sep 8, 2026
eb11506
refactor(web): pass the project record to ProjectFavicon so icons can…
t3dotgg Sep 8, 2026
bde39d4
feat(web): accept file drops into sidebar threads (#7892)
UtkarshUsername Sep 8, 2026
b5d8903
feat(web): accept file drops into sidebar threads (#7892)
UtkarshUsername Sep 8, 2026
061543e
fix(mcp): keep preview snapshots usable by the agent and let it save …
t3dotgg Sep 8, 2026
47eed9f
fix(server): stop Windows terminal processes when closing (#10771)
SunkenInTime Sep 8, 2026
579266c
feat(mobile): use Android wallpaper colors (#10691)
juliusmarminge Sep 8, 2026
4664c57
feat(mobile): add optional Material You layout (#10692)
juliusmarminge Sep 8, 2026
12391bd
feat(web): show project favicon in new-thread project picker (#10790)
gsimone Sep 8, 2026
5d14c0e
fix(desktop): use official logo in macOS installer (#10819)
t3-code[bot] Sep 8, 2026
772ea14
fix(web): honor terminal link browser overrides (#10060)
UtkarshUsername Sep 8, 2026
0fe4c99
fix(desktop): neutral artwork for stable macOS installer (#10820)
t3-code[bot] Sep 8, 2026
5e6cc2b
fix(web): restore text-only draft project title (#10821)
juliusmarminge Sep 8, 2026
3faeee4
refactor(web): consolidate setup wizards into shared components (#10832)
juliusmarminge Sep 8, 2026
de545c4
fix(web): stop the bar under the composer popping in after threads lo…
t3dotgg Sep 8, 2026
7fbc545
fix(web): keep the composer footer still while thread data loads (#10…
t3dotgg Sep 8, 2026
20e2e89
fix(desktop): defer keyring loading until macOS cookie import (#10667)
simplythatguy Sep 8, 2026
fdf34c4
fix(relay): share notification policy and prioritize waiting agents (…
juliusmarminge Sep 8, 2026
3dfc134
fix(relay): recheck queued iOS alerts and retain fast completions (#1…
juliusmarminge Sep 8, 2026
9d6c43f
fix(mobile): respect notification permission when tokens rotate (#10850)
juliusmarminge Sep 8, 2026
3e6f856
fix(mobile): tolerate native Headers without getSetCookie (#10851)
juliusmarminge Sep 8, 2026
1862686
fix(relay): use current APNs registration routing for queued jobs (#1…
juliusmarminge Sep 9, 2026
08463e2
fix(server): release consumed event replay pages (#10777)
Gigioxx Sep 9, 2026
2a30353
feat(mobile): arrange threads with drag handles (#10496)
juliusmarminge Sep 9, 2026
6c58362
feat(mobile): add Android agent notifications and ongoing activity (#…
ryanrhughes Sep 9, 2026
3ba313f
chore(upstream): merge pingdotgg/t3code@6c583620
claude Sep 9, 2026
48b3610
fix(desktop): claim Marcode's own identity for the new capture surface
claude Sep 9, 2026
8a5e138
fix(relay): restore Marcode's identity in the new Android push path
claude Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
reviews:
review_status: false
auto_review:
enabled: false
enabled: true
85 changes: 63 additions & 22 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,32 +1,73 @@
// Dev container for Marcode. Mirrors CI (ubuntu-24.04, Node 24, Rust stable)
// and the canonical setup in docs/operations/development.md: global `vp`, `vp i`.
// Contributor doc: docs/internals/devcontainer.md
{
"name": "Marcode Dev",
"image": "debian:bookworm",
"name": "Marcode",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu-24.04",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers-extra/features/bun:1": {
"version": "1.3.11"
// nodeGypDependencies (default true) brings python3/make/g++, which Linux
// needs for node-pty's node-gyp fallback (its prebuilds are mac/win only).
"ghcr.io/devcontainers/features/node:2": {
"version": "24"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "24.13.1"
},
"ghcr.io/devcontainers/features/python:1": {
"version": "3.10",
"installTools": false
}
// native/resource-monitor (edition 2024, needs stable >= 1.85). The server
// degrades gracefully without the binary, but CI checks cargo fmt + test.
"ghcr.io/devcontainers/features/rust:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"hostRequirements": {
"cpus": 4,
"memory": "8gb",
"storage": "32gb"
},
"containerEnv": {
// Keep all runtime state inside the (gitignored) workspace .marcode,
// matching the worktree default. An explicit --home-dir still wins.
"MARCODE_HOME": "${containerWorkspaceFolder}/.marcode"
},
"overrideFeatureInstallOrder": [
"ghcr.io/devcontainers/features/git",
"ghcr.io/devcontainers-extra/features/bun"
"mounts": [
// vp keeps the pnpm content-addressable store and metadata cache under
// ~/.cache/pnpm (verified: the v11 store dir lives there); mounting a
// volume there lets installs survive container rebuilds.
"source=marcode-pnpm-store,target=/home/vscode/.cache/pnpm,type=volume",
// Root node_modules holds the whole pnpm virtual store (.pnpm), so one
// volume keeps the heavy tree off the slow macOS/Windows bind mount.
// Scoped by devcontainerId so parallel checkouts do not share it.
// Codespaces note: prebuild snapshots exclude volumes; drop these mounts
// if prebuilt codespaces become the primary workflow.
"source=marcode-node-modules-${devcontainerId},target=${containerWorkspaceFolder}/node_modules,type=volume"
],
"postCreateCommand": {
// corepack reads the pnpm version from package.json `packageManager`, so this
// never drifts from the lockfile. bun stays installed above: it is not the
// package manager, it is what AGENTS.md uses for `bun:sqlite` test-data seeding.
"install": "corepack enable && pnpm install --frozen-lockfile"
"onCreateCommand": "bash .devcontainer/on-create.sh",
"updateContentCommand": "bash .devcontainer/update-content.sh",
"forwardPorts": [5733, 13773],
"portsAttributes": {
"5733": {
"label": "marcode web (open via the pairing URL, not the bare origin)",
"onAutoForward": "notify"
},
"13773": {
"label": "marcode server",
"onAutoForward": "silent"
}
},
"customizations": {
"codespaces": {
"openFiles": ["docs/internals/devcontainer.md"]
},
"vscode": {
"extensions": ["oxc.oxc-vscode"]
"extensions": ["oxc.oxc-vscode", "rust-lang.rust-analyzer"],
"settings": {
// .repos is a large vendored read-only reference tree; watching it
// burns CPU and file handles.
"files.watcherExclude": {
"**/.repos/**": true,
"**/.marcode/**": true
},
"search.exclude": {
"**/.repos": true
}
}
}
}
},
"remoteUser": "vscode"
}
38 changes: 38 additions & 0 deletions .devcontainer/on-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
# One-time container setup, baked into prebuilds. Content-dependent work
# (dependency install, Chromium) lives in update-content.sh.
set -euo pipefail

# The Vite+ CLI is the repo task runner (vp i, vp run dev, vp test run).
# Download to a file first: a curl failure inside $( ) would yield an empty
# script and a false success. VP_NODE_MANAGER=no skips the installer's node
# shims; Node comes from the devcontainer feature. The VP_*_DIR group (set
# together, absolute) pins the install location instead of the installer's
# XDG platform defaults, which moved the binary from ~/.vite-plus/bin to
# ~/.local/share/vite-plus/bin between releases and would break the check
# below either way.
export VP_BIN_DIR="$HOME/.local/share/vite-plus/bin"
export VP_DATA_DIR="$HOME/.local/share/vite-plus"
export VP_CACHE_DIR="$HOME/.cache/vite-plus"
installer=$(mktemp)
curl -fsSL https://vite.plus -o "$installer"
VP_NODE_MANAGER=no bash "$installer"
rm -f "$installer"

# Non-login lifecycle shells never source the profile the installer edits,
# so expose vp on the default PATH. test -x keeps a bad install loud.
test -x "$VP_BIN_DIR/vp"
sudo ln -sf "$VP_BIN_DIR/vp" /usr/local/bin/vp

# First-run terminal notice, rendered by the devcontainers base image.
sudo mkdir -p /usr/local/etc/vscode-dev-containers
sudo tee /usr/local/etc/vscode-dev-containers/first-run-notice.txt >/dev/null <<'EOF'
Marcode devcontainer

vp run dev start server + web, then open the pairing URL it
prints (the bare forwarded port will not authenticate)
cp .env.example .env optional: enable Marcode Connect cloud features
(public identifiers, not secrets)

Details: docs/internals/devcontainer.md
EOF
19 changes: 19 additions & 0 deletions .devcontainer/update-content.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# Runs at creation and on every prebuild content refresh, so codespaces start
# with deps installed and caches warm. Everything here is idempotent.
set -euo pipefail

# Volume mounts (pnpm store, node_modules) and the directories docker creates
# for them arrive root-owned; hand them to the dev user before installing.
for dir in "$HOME/.cache" "$HOME/.cache/pnpm" node_modules; do
if [ -d "$dir" ] && [ "$(stat -c %U "$dir")" != "$(id -un)" ]; then
sudo chown "$(id -un):$(id -gn)" "$dir"
fi
done

CI=true vp i
# Repairs electron's path.txt and exec bits after install, same as CI.
vp run --filter @t3tools/desktop ensure:electron
# Pre-warms Vite's dep optimizer (cache is keyed on the absolute path, which
# is stable inside the container).
node apps/web/scripts/warm-dep-cache.ts
14 changes: 10 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -214,11 +214,17 @@ jobs:
with:
components: rustfmt

- name: Check resource monitor formatting
run: cargo fmt --manifest-path native/resource-monitor/Cargo.toml -- --check
- name: Check Rust formatting
run: |
for crate in resource-monitor kde-snap-shot hyprland-snap-shot; do
cargo fmt --manifest-path "native/$crate/Cargo.toml" -- --check
done

- name: Test resource monitor
run: cargo test --locked --manifest-path native/resource-monitor/Cargo.toml
- name: Test Rust crates
run: |
for crate in resource-monitor kde-snap-shot hyprland-snap-shot; do
cargo test --locked --manifest-path "native/$crate/Cargo.toml"
done

# The static analysis below needs a macOS runner, which bills ~6.7x a Linux
# minute, so gate it on the native sources it actually lints instead of paying
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/deploy-relay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ jobs:
AXIOM_TOKEN: ${{ secrets.AXIOM_TOKEN }}
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
APNS_PRIVATE_KEY: ${{ secrets.APNS_PRIVATE_KEY }}
FCM_SERVICE_ACCOUNT: ${{ secrets.FCM_SERVICE_ACCOUNT }}

- name: Publish relay deploy commit status
uses: actions/github-script@v8
Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -487,8 +487,18 @@ jobs:
path: native/resource-monitor/target/${{ matrix.rust_target }}/release/t3-resource-monitor${{ matrix.platform == 'win' && '.exe' || '' }}
key: resource-monitor-${{ matrix.rust_target }}-${{ hashFiles('native/resource-monitor/Cargo.lock', 'native/resource-monitor/Cargo.toml', 'native/resource-monitor/src/**') }}

- name: Cache Linux capture helpers
if: matrix.platform == 'linux'
id: capture_helper_cache
uses: actions/cache@v6
with:
path: |
native/kde-snap-shot/target/${{ matrix.rust_target }}/release/t3-kde-snap-shot
native/hyprland-snap-shot/target/${{ matrix.rust_target }}/release/t3-hyprland-snap-shot
key: linux-capture-helpers-${{ matrix.rust_target }}-${{ hashFiles('native/kde-snap-shot/Cargo.lock', 'native/kde-snap-shot/Cargo.toml', 'native/kde-snap-shot/src/**', 'native/hyprland-snap-shot/Cargo.lock', 'native/hyprland-snap-shot/Cargo.toml', 'native/hyprland-snap-shot/src/**', 'native/hyprland-snap-shot/protocols/**') }}

- name: Setup Rust
if: steps.resource_monitor_cache.outputs.cache-hit != 'true'
if: steps.resource_monitor_cache.outputs.cache-hit != 'true' || (matrix.platform == 'linux' && steps.capture_helper_cache.outputs.cache-hit != 'true')
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.rust_target }}
Expand Down Expand Up @@ -620,6 +630,7 @@ jobs:
env:
pnpm_config_cache_dir: ${{ runner.temp }}/pnpm-metadata
T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR: ${{ steps.resource_monitor_cache.outputs.cache-hit == 'true' }}
T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS: ${{ steps.capture_helper_cache.outputs.cache-hit == 'true' }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
Expand Down
3 changes: 2 additions & 1 deletion .macroscope/check-run-agents/effect-service-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ exclude:
- "**/*.test.ts"
labels:
- vouch:trusted
- macroscope-review
requires:
- Check
maxBudgetPerRun: 5
Expand Down Expand Up @@ -51,7 +52,7 @@ Review changed TypeScript for the conventions below. They apply when a pull requ

## Errors

- Define service failures with `Schema.TaggedErrorClass` and structured attributes: operation or stage, resource path or entity identifier, normalized category or status. Derive `message` from those attributes only. Never derive it from `cause`, `cause.message`, or a stringified defect, and do not add a `detail` field that copies `cause.message`.
- Define service failures with `Schema.TaggedError` and structured attributes: operation or stage, resource path or entity identifier, normalized category or status. Derive `message` from those attributes only. Never derive it from `cause`, `cause.message`, or a stringified defect, and do not add a `detail` field that copies `cause.message`.
- When wrapping a real failure, keep the immediate underlying error as `cause` so the chain and stack survive. Make `cause` required if every construction wraps a failure. Pure validation or domain errors created without an underlying failure need no cause.
- Keep attributes and log annotations safe and bounded: no raw wire payloads, command arguments or output, signed URLs, credentials, query strings, or arbitrary defect text. Preserve the exact value only as `cause`; expose normalized categories, lengths, counts, and safe URL protocol or hostname where useful.
- At a translation boundary, pass through an already structured domain error when it is part of the target error channel; wrap only unknown or lower-level failures. Map failures where the context is known instead of wrapping a whole multi-step pipeline in one generic error.
Expand Down
1 change: 1 addition & 0 deletions .macroscope/check-run-agents/ui-consistency.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ exclude:
- "apps/web/src/**/*.test.tsx"
labels:
- vouch:trusted
- macroscope-review
requires:
- Check
maxBudgetPerRun: 2
Expand Down
4 changes: 4 additions & 0 deletions .repos/alchemy-effect/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* text=auto eol=lf

.vendor/** linguist-vendored
distilled/** linguist-vendored
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
102 changes: 81 additions & 21 deletions .repos/alchemy-effect/.github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -1,41 +1,101 @@
name: check
name: Check

# Runs the website docs validator (`bun run docs:check`) on every PR
# so broken links / missing API references fail fast before merge.
# Validates the repository type graph and website docs.

on:
push:
branches: [main]
paths:
- "distilled"
- "benchmark/**"
- "examples/**"
- "packages/**"
- "website/**"
- "scripts/**"
- "patches/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "turbo.json"
- "tsconfig.json"
- ".github/workflows/check.yml"
pull_request:
types: [opened, reopened, synchronize]
paths:
- "distilled"
- "benchmark/**"
- "examples/**"
- "packages/**"
- "website/**"
- "scripts/**"
- "patches/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "turbo.json"
- "tsconfig.json"
- ".github/workflows/check.yml"
workflow_dispatch:

permissions:
contents: read

env:
NODE_VERSION: "24"
concurrency:
group: check-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
check:
runs-on: ubuntu-22-large
name: Check
runs-on: blacksmith-8vcpu-ubuntu-2404
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
# `bun install` needs the distilled submodule (workspace member)
submodules: true
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Checkout distilled
run: git submodule update --init --depth=1 --checkout -- distilled

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- name: Restore Astro build cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
node-version: ${{ env.NODE_VERSION }}
path: website/node_modules/.astro
key: website-astro-${{ runner.os }}-${{ github.event.pull_request.number || 'main' }}-${{ github.sha }}-${{ github.workflow }}-${{ github.run_attempt }}
restore-keys: |
website-astro-${{ runner.os }}-${{ github.event.pull_request.number || 'main' }}-${{ github.sha }}-
website-astro-${{ runner.os }}-${{ github.event.pull_request.number || 'main' }}-
website-astro-${{ runner.os }}-main-

- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
- name: Restore Turbo cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
bun-version: latest
path: .turbo
key: turbo-${{ runner.os }}-${{ github.repository_id }}-${{ github.sha }}-${{ github.workflow }}-${{ github.run_attempt }}
restore-keys: |
turbo-${{ runner.os }}-${{ github.repository_id }}-${{ github.sha }}-
turbo-${{ runner.os }}-${{ github.repository_id }}-

- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
- name: Setup pnpm, Node.js, Bun and install dependencies
uses: pnpm/setup@703c52620218391530e48b9e8870d5c0082e1b9b # v2.1.0
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }}
restore-keys: bun-${{ runner.os }}-
cache: true
install: true
require-lockfile: true

- name: Run Node Utils tests
run: pnpm -C packages/node-utils test

- name: Run Typecheck
run: pnpm tsc -b

- name: Check API JSDocs
run: pnpm docs:check-jsdoc

- run: bun install
- run: bun tsc -b
- run: bun run docs:check
# An internal PR carrying `deploy-website` gets a full Astro build in
# website.yml via StaticSite. That build runs the same output validators,
# so avoid building the site a second time here. Forks still run this
# check because they cannot access the preview deployment secrets.
- name: Check website docs
if: >-
github.event.pull_request.head.repo.full_name != github.repository ||
!contains(github.event.pull_request.labels.*.name, 'deploy-website')
run: pnpm docs:check
Loading
Loading