Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
changelog:
exclude:
labels:
- no-release-note
- documentation
categories:
- title: Breaking changes
labels:
- semver:major
- breaking-change
- title: Features
labels:
- enhancement
- feature
- semver:minor
- title: Fixes
labels:
- bug
- fix
- semver:patch
- title: Runtime updates
labels:
- area:codex
- area:claude
- area:grok
- area:opencode
- title: Upstream updates
labels:
- upstream
- upstream-sync
- title: Dependencies and maintenance
labels:
- dependencies
- maintenance
- title: Other changes
labels:
- "*"
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
check:
name: Check
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -42,7 +42,7 @@ jobs:

test:
name: Test
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
Expand All @@ -63,7 +63,7 @@ jobs:

mobile_native_static_analysis:
name: Mobile Native Static Analysis
runs-on: blacksmith-12vcpu-macos-26
runs-on: macos-15
timeout-minutes: 10
steps:
- name: Checkout
Expand All @@ -84,7 +84,7 @@ jobs:

release_smoke:
name: Release Smoke
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/mobile-showcase-screenshots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
ios:
name: iPhone 6.9, iPhone 6.5, and iPad 13
if: inputs.platform == 'all' || inputs.platform == 'ios'
runs-on: blacksmith-12vcpu-macos-26
runs-on: macos-15
timeout-minutes: 60
steps:
- name: Checkout
Expand Down Expand Up @@ -70,7 +70,7 @@ jobs:
android:
name: Android phone, 7-inch tablet, and 10-inch tablet
if: inputs.platform == 'all' || inputs.platform == 'android'
runs-on: blacksmith-16vcpu-ubuntu-2404
runs-on: ubuntu-24.04
Comment thread
cursor[bot] marked this conversation as resolved.
timeout-minutes: 60
env:
T3_SHOWCASE_ANDROID_ABI: x86_64
Expand Down
14 changes: 14 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,17 @@ Full glossary with file links: `docs/reference/encyclopedia.md`

- Don't verify with browsers or computer use unless the user explicitly agrees or requests it.
- Security is important, but should not be over-indexed on, especially for dev mode/maintainer-only features.

## Agent skills

### Issue tracker

Product specs and implementation issues are tracked in this fork's GitHub Issues. See `docs/agents/issue-tracker.md`.

### Triage labels

Engineering skills use the repository's existing triage vocabulary plus explicit agent and human readiness labels. See `docs/agents/triage-labels.md`.

### Domain docs

This monorepo uses a multi-context domain layout. The root glossary and encyclopedia remain authoritative until context-specific maps are introduced. See `docs/agents/domain.md`.
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Changelog

This file records user-visible changes made by this product fork. Upstream T3 Code changes are recorded when they are integrated, not when they first appear upstream.

The project follows semantic versioning after its first public release.

## Unreleased

### Added

### Changed

### Fixed

### Removed

### Security
23 changes: 23 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Roadmap

The roadmap describes product direction, not delivery promises. Detailed work lives in GitHub Issues.

## Now

- Establish the standalone product identity and repository boundaries.
- Revamp the T3 Code web GUI while preserving its typed runtime contracts.
- Keep one real provider path working throughout the redesign.
- Establish upstream synchronization, release notes, and repository governance.

## Next

- Qualify Codex, Claude Code, Grok Build, and OpenCode across the redesigned interface.
- Add runtime-aware skills, MCP, plugins, commands, and settings surfaces.
- Make OpenCode the default terminal experience while retaining native provider CLIs.
- Harden local data isolation, recovery, permissions, and runtime observability.

## Later

- Package the web-first product for desktop distribution.
- Add multi-pane and multi-agent orchestration after workspace isolation is proven.
- Add beta-user access controls and support workflows.
30 changes: 30 additions & 0 deletions UPSTREAM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Upstream relationship

This repository is a product fork of [pingdotgg/t3code](https://github.com/pingdotgg/t3code).

## Remotes

- `origin` is the product fork.
- `upstream` is the official T3 Code repository.

## Policy

Product `main` is never updated from upstream automatically. Each upstream update is evaluated on a dedicated integration branch and merged through a pull request after focused tests and the provider qualification matrix pass.

Prefer a released upstream tag or a recorded commit over an unpinned nightly. Selective cherry-picks are reserved for isolated fixes whose dependencies are understood.

## Local changes

Keep product identity, design tokens, product configuration, documentation, and feature policy as separate as practical from provider and orchestration internals. Avoid moving inherited directories or copying upstream components into parallel implementations.

## Updating

1. Fetch the official upstream remote.
2. Create an `integration/upstream-YYYY-MM-DD` branch from product `main`.
3. Merge the selected upstream tag or commit.
4. Resolve conflicts without discarding product behavior.
5. Run focused checks, client integration validation, and the provider matrix.
6. Record the new baseline and any retained local patches.
7. Merge the integration branch through a reviewed pull request.

See `docs/upstream/` for the current baseline and operating details.
7 changes: 5 additions & 2 deletions apps/web/src/lib/stashImageCompression.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,12 @@ describe("compressImageForStash", () => {
});

it("reports too-large when even the smallest encoding overflows the budget", async () => {
const { close } = stubCanvasPipeline(() => 8_000_000);
// Keep the fixture small: the encoder runs once per quality and scale
// step, so multi-megabyte blobs make this assertion CPU-bound in CI.
const budgetChars = 1_300;
const { close } = stubCanvasPipeline(() => 8_000);

const result = await compressImageForStash(makeFile(9_000_000));
const result = await compressImageForStash(makeFile(9_000), budgetChars);

expect(result).toEqual({ ok: false, reason: "too-large" });
// The bitmap must still be released on the give-up path.
Expand Down
32 changes: 32 additions & 0 deletions docs/agents/domain.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Domain documentation

This repository is a multi-context monorepo.

## Current sources of truth

Before exploring a product area:

1. Read the glossary and operating model in the root `AGENTS.md`.
2. Read the matching entries in `docs/reference/encyclopedia.md`.
3. Read relevant architecture and provider documentation.
4. Read applicable ADRs when they exist.

The established terms include provider, client, environment, project, thread, turn, and T3 home. Use those terms consistently in specs, issues, tests, and product copy.

## Future context maps

When domain-modeling work creates context documents, the root `CONTEXT-MAP.md` will point to the relevant context. Expected contexts include:

- Web client
- Desktop client
- Mobile client
- Server and orchestration
- Provider runtime boundary
- Shared contracts
- Shared client runtime

Context documents and ADRs are created only when a real terminology or durable-decision need appears. Their absence does not block repository work.

## ADR conflicts

If proposed work conflicts with an existing ADR, name the conflict explicitly rather than silently replacing the prior decision.
27 changes: 27 additions & 0 deletions docs/agents/issue-tracker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Issue tracker: GitHub

Issues, product specs, and implementation tickets for this repository live in GitHub Issues. Use the `gh` CLI from this clone so the fork is inferred from `origin`.

## Conventions

- Create a product spec or ticket with `gh issue create`.
- Read the full issue, labels, and comments before changing its state.
- Use native GitHub issue dependencies for blocking relationships when available.
- Apply the repository triage label that matches the engineering workflow role.
- Close an implementation ticket only after its acceptance behavior and validation notes are recorded.

## Pull requests as a triage surface

PRs as a request surface: no.

Pull requests implement already accepted work. Raw feature requests and bug reports enter through Issues.

## Publishing from an engineering skill

When an engineering skill says to publish to the issue tracker, create a GitHub issue in this fork.

When a skill says to fetch the relevant ticket, read the issue body, labels, dependencies, assignees, and comments.

## Wayfinding

A wayfinding map is one GitHub issue whose child issues hold individual decisions. Prefer native sub-issues and issue dependencies. If those features are unavailable, use an ordered task list in the map and a `Blocked by:` line in each child.
13 changes: 13 additions & 0 deletions docs/agents/triage-labels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Triage labels

The engineering skills speak in canonical triage roles. This table maps those roles to this fork's GitHub labels.

| Engineering role | Repository label | Meaning |
| ----------------- | ----------------- | ---------------------------------------------------- |
| `needs-triage` | `needs-triage` | Maintainer needs to evaluate the issue |
| `needs-info` | `needs more info` | Waiting for the reporter to provide information |
| `ready-for-agent` | `ready-for-agent` | Fully specified and safe for an implementation agent |
| `ready-for-human` | `ready-for-human` | Requires a human decision or implementation |
| `wontfix` | `wontfix` | Will not be actioned |

Use the repository label in the middle column when a skill refers to an engineering role.
Loading
Loading