feat(web): project icons can be chosen manually - #5775
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Needs human review New feature adding manual project icon selection, including a database migration, new UI dialog/workflow, orchestration event changes, and asset resolution modifications. The scope and schema impact warrant human review. You can customize Macroscope's approvability policy. Learn more. |
5237c45 to
c96de5d
Compare
74c7686 to
a224a27
Compare
0dda3a9 to
3b7d26e
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 3b7d26e. Configure here.
## What's Changed * feat(web): project icons can be chosen manually by @t3dotgg in pingdotgg/t3code#5775 * fix(server): one greedy agent process no longer takes down the whole server by @t3dotgg in pingdotgg/t3code#5788 **Full Changelog**: pingdotgg/t3code@v0.0.33-nightly.20260809.1040...v0.0.33-nightly.20260809.1041 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.33-nightly.20260809.1041

Projects currently rely on automatic icon detection with no way to correct the result. This adds an explicit project icon setting while keeping automatic detection as the default.
The new Appearance section shows the detected icon and path. Users can select a supported image from the project, or switch back to automatic detection. T3 Code stores the override with project metadata so web, desktop, mobile, and remote clients use the same icon.
Visual reference: Option C settings mock
Tests:
vp test run apps/server/src/project/ProjectFaviconResolver.test.ts apps/server/src/assets/AssetAccess.test.ts apps/server/src/orchestration/decider.projectScripts.test.ts apps/server/src/orchestration/Layers/ProjectionPipeline.test.ts apps/server/src/persistence/Migrations/039_ProjectionProjectFaviconPath.test.ts packages/client-runtime/src/state/assets.test.ts apps/web/src/components/ProjectFavicon.test.tsxBuilt by GPT-5.6 in T3 Code through the Codex harness.
Note
Medium Risk
Touches orchestration persistence, asset URL signing, and cross-client projection; mitigated by schema validation, server-authoritative paths, and broad tests.
Overview
Adds manual project icon selection while keeping automatic detection as the default. Users can pick a workspace image from project settings or reset to automatic; the choice syncs across web, mobile, and remote clients.
Persistence & pipeline:
faviconPathflows throughproject.meta.update, events, projector, and SQLite (favicon_pathvia migration 040). Contracts validate paths as supported image extensions only.Server resolution:
ProjectFaviconResolverprefers the saved override when the file exists, then falls back tot3.jsonand well-known paths. Asset URL issuance loads the authoritative path from the project projection (clientpathon the resource is a cache hint only), returns optionalsourcePath, and rejects non-image files.UI: New Appearance section and
ProjectFaviconPickerDialoguse workspace search with animageOnlyfilter.ProjectFaviconand thread/sidebar/header surfaces passfaviconPaththrough.Docs link to Customize a project icon in
project-settings.md.Reviewed by Cursor Bugbot for commit ae1e94e. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add manual project icon selection in project settings
ProjectFaviconPickerDialogthat searches project files filtered to image types, letting users select a custom icon for a project from the settings panel.faviconPaththrough the event/projection pipeline: newfaviconPathfield onOrchestrationProject,ProjectMetaUpdateCommand, and related payloads, backed by a newfavicon_pathcolumn added via migration 040.ProjectFaviconResolver.resolvePathnow checks the savedfaviconPathfirst (when the file exists in the workspace) before falling back tot3.jsonand well-known icon candidates.AssetAccess.issueAssetUrlaccepts an explicitprojectFaviconPathoverride, validates resolved paths against allowed image extensions, and returns asourcePathin the result.faviconPathis threaded through all UI surfaces that render project icons: sidebar rows, thread list headers, chat header, command palette, archived threads, and mobile screens.Macroscope summarized ae1e94e.