Repository navigation
Conversation
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Usage aggregation incorrectly treats environment-local provider instance IDs as globally unique, which can combine and mislabel unrelated accounts.
Review effort: Balanced
Findings: 1
Open (1)
What changed in this PR
Rebases the fork onto upstream d15210cd, incorporates 310 upstream commits, and re-derives fork-specific functionality. Landing must use the documented force-with-lease workflow rather than a merge-button merge.
Changes:
- Updates web, desktop, mobile, server, provider, and relay functionality from upstream.
- Rebuilds per-provider-instance usage attribution across environments.
- Refreshes fork documentation, workflows, dependencies, packaging, and tests.
| File | Description |
|---|---|
FORK.md, README.md |
Documents the rebase and retained fork changes. |
.github/** |
Updates CI/release automation and removes fork-disabled workflows. |
apps/desktop/** |
Updates startup, packaging, previews, connections, and update handling. |
apps/mobile/** |
Adds device streaming and updates navigation, settings, usage, and native UI. |
apps/server/** |
Updates orchestration, providers, persistence, usage, relay recovery, and APIs. |
apps/web/** |
Updates chat, settings, usage reporting, previews, and shared UI behavior. |
apps/marketing/** |
Refreshes provider assets and download/landing content. |
infra/relay/** |
Adds managed-tunnel recovery and associated validation. |
packages/client-runtime/** |
Updates shared client state, device integration, and aggregation behavior. |
packages/contracts/** |
Extends wire schemas for providers, usage, devices, and orchestration. |
packages/shared/** |
Updates usage merging, tracing, readiness, source control, and utilities. |
packages/effect-*, packages/ssh, packages/tailscale |
Updates provider protocols and connectivity support. |
scripts/**, root configuration |
Updates worktree setup, release checks, dependencies, linting, and tooling. |
packaging/**, patches/** |
Refreshes distribution metadata and dependency patches. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Fork Git/GitHub policy sections in AGENTS.md, the About-this-fork banner in README.md, and FORK.md, the authoritative list of what this fork carries on top of upstream. Entries 12 and 13. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
Standard GitHub-hosted runners, no credentials beyond GITHUB_TOKEN, and only what building and code quality need. ci.yml keeps upstream's check/test/test_server/rust/release_smoke jobs plus knip, drops the mobile jobs and the Blacksmith-only apt-mirror and nightly-release steps. desktop-artifacts.yml builds unsigned desktop artifacts on every push to main and publishes them as pruned desktop-dev prereleases, with update checking disabled at the feed. Every other upstream workflow is deleted. Entry 14 and the workflow half of entry 20. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
A Claude Code CLI with no login still answers the capabilities probe, with a blank account and tokenSource "none"; that used to render as Authenticated while every turn failed. Classify auth three ways (evidence, explicit none, unknown), report the resolved config directory alongside, show it in the provider card, and document the PowerShell tilde trap. Entry 15. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
One server setting, worktreeBranchPrefix, applied where the server names a worktree branch. Placeholders carry a t3- marker so a configured prefix can never rename a user's own branch; the matcher accepts the configured and default prefixes; a blank prefix falls back to t3code. Entry 17. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
Opening a thread cleared its green completed dot immediately. Track a per-thread completion acknowledgement beside last-visited, stamp it on visit, and read it in the sidebar status so the dot survives wake-driven visit bumps. Entry 6. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
A Commit button on the completion Changed files card opens the commit dialog with only that turn's checkpoint files checked; the regular commit button still selects everything. Entry 5. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
With the sidebar filtered to one project, the new thread button creates there straight away instead of opening the project picker; its tooltip names the target and drops the scope-unaware shortcut. Unscoped behaviour is unchanged. Entry 18. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PijserGApUwNHjWJ7mqVBH
A GitHub item in the sidebar footer links to this repository; its tooltip shows the build commit and time from two Vite defines. Pairs with the update-feed disable in desktop-artifacts.yml. Entry 20. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
…bble Read upstream's ServerProvider.usageLimits where the provider is chosen and where the turn's cost is shown, rendered as percent left with reset countdowns, aged when the popover opens, silent for unavailable snapshots. Web-only. Entry 22. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcznayRMN5UxdP5zKNijDG
The usage report groups by provider instance rather than provider kind, so two Claude accounts read as two series, rows and columns and their models are listed per instance. Each scanned source carries its instance id, configured name and accent colour; buckets stay upstream's and are joined to instances through the directory they already name, so the wire contract only gains optional fields and older environments report under each provider's default instance. Entry 19. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SSDousnH2iGtENjg7KWiBJ
jmclaren7
force-pushed
the
jcs/dreamy-hypatia-la48i2
branch
from
September 28, 2026 00:53
63729ef to
30b7e0e
Compare
jmclaren7
force-pushed
the
main
branch
2 times, most recently
from
October 4, 2026 00:43
3eb5ed5 to
e885b6e
Compare
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.

What Changed
mainrebased ontopingdotgg/t3coded15210cd(fix(web): prevent usage summary shift for unpriced records (fix(web): prevent usage summary shift for unpriced records pingdotgg/t3code#13991)), taking in 310 upstream commits. The fork is now ten commits on top of upstream, one per FORK.md entry.UsageSourceas optional fields and buckets are joined to instances through upstream'ssourcePath, so the wire contract gains no version bump and older environments report under each provider's default instance. Web and mobile usage screens rebuilt on it, with ramps for upstream's new Cursor, OpenCode and Antigravity providers.resolveClaudeHomePath;apiKeySourceon the probe made optional for upstream's new test.no-raw-colors,no-restyleandno-arbitrary-valueslint rules (text-destructive!, scale text tokens, box styling offScrollArea).ci.ymlunchanged upstream; a note indesktop-artifacts.ymlthat the Linux leg now also ships a.deb. The previous cycle'spnpm-workspace.yamlrepair is retired (upstream removed the placeholder).FORK.mdrewritten: new "last rebase" summary, per-entry check notes atd15210cd, and two new superseded rows (the double-count half of 19 bye5a46d6c, the entry 14 repair by803f94e7). README banner marker refreshed.Why
The fork syncs to upstream by rebase so
git diff upstream/main HEADstays the authoritative answer to "what does this fork carry". Every drop-check in FORK.md still comes back 0, so every entry is kept; entry 19 was rebuilt rather than force-merged because upstream reworked the same subsystem.Verified with Node 24:
tsc --noEmitclean in all seven packages,vp lint0 errors over every fork-changed file,vp fmt --checkclean,knip:checkclean, and the fork-touched test suites pass (server usage/aggregation/ClaudeHome/reactor/registry/probe,server.test.tsworktree/bootstrap/prefix cases, shared git/usage format/usage merge, web usage components and unit files, mobile usage tests).UI Changes
Usage page and mobile usage screen: a single-instance setup renders as upstream does; only environments with two accounts of one provider gain extra series/rows/columns. Not checked in a browser this run.
Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01SSDousnH2iGtENjg7KWiBJ
Generated by Claude Code