Skip to content

No project can be renamed and re-iconed like a normal project, and its default icon cannot be restored #26445

Closed

Description

@M4n0x

What happened

The built-in No project entry can be renamed and given a new icon from Project settings, like any normal project. Every later thread started without a project lands in that same entry, so the custom name and icon carry over to all of them. You also can't get the original back. Clearing the icon leaves the entry with no icon, not the built-in gray dashed-message icon. The name only comes back if you type "No project" again by hand.

In the user's words: "No project" should be treated as a special type. We should be able to move its threads to another project, or turn it into a real project, but not change the type itself.

Diagnosis

The managed scratch project is created as an ordinary project row. Its default icon is applied once, in a separate command, right after it is created:

  • apps/server/src/project/ManagedProjectFolders.ts:266-293 (tag v0.1.4-nightly.20261028.3814): ensureScratchProject bootstraps the project with title: "No project", then runs projects.update({ projectIcon: { kind: "lucide", name: "message-square-dashed", color: "gray" } }) only when bootstrapped.created. The comment there says: "Set once at create, so a user's own icon choice is never overwritten."
  • Project settings has no scratch-specific handling. The Project settings entries in the sidebar, the thread menu and the chat header (Sidebar.tsx:1204, threadActionMenu.logic.ts:56, ChatHeader.tsx:254) are offered for the scratch project too. ProjectSettingsPanel renames it and changes its icon like any other project.
  • Nothing stores or restores the default identity. Once projectIcon is set to null, the server never applies the built-in icon again, because the project already exists.

#19720 already noted that "No project threads show the scratch project's custom name" and fixed the breadcrumb label. The maintainer's reply left this question open: "Whether Project settings should also lock the scratch project's name is a separate question." This issue asks for that decision.

Steps to reproduce

  1. Start a thread with No project so the environment has its managed scratch project, which shows the gray dashed-message icon.
  2. Open Project settings for No project, from the sidebar right-click / … menu or the thread's right-click menu.
  3. Rename it to anything, for example Custom. Then change its icon to an emoji.
  4. Try to get the original back: clear or remove the icon, then rename it to No project.
  5. Look at the sidebar and start a new thread without a project.

Expected: "No project" can't be renamed or re-iconed, or at least has a "reset to default". Users who want a custom identity move threads out of it into a real project, or turn it into a real project.
Actual: steps 3 and 4 succeed. After step 4 the entry has no icon, the built-in gray message-square-dashed icon can't be restored from a reset, and every new projectless thread inherits whatever identity was set last.

Version

0.1.4-nightly.20261028.3814 (desktop app against the local server on the same machine; the server reports this version)

Environment

macOS 27.2 (arm64), Node v24.22.0, T3 Code desktop app

Evidence

# orchestration_events for the scratch project (workspaceRoot <T3 home>/scratch), payloads trimmed
v0 project.created      2026-10-22T14:49:02.208Z  {"title":"No project","projectIcon":null}                                   commandId=scratch-project:<id>
v1 project.meta-updated 2026-10-22T14:49:02.212Z  {"projectIcon":{"kind":"lucide","name":"message-square-dashed","color":"gray"}} commandId=scratch-project-icon:<id>
v2 project.meta-updated 2026-10-28T10:12:40.621Z  {"title":"Custom"}                     # user renamed it (actual name redacted)
v3 project.meta-updated 2026-10-28T10:13:00.878Z  {"faviconPath":null,"projectIcon":{"kind":"emoji","emoji":"💰"}}
v4 project.meta-updated 2026-10-28T10:13:30.521Z  {"faviconPath":null,"projectIcon":null}  # cleared: no icon, NOT the default
v5 project.meta-updated 2026-10-28T10:13:46.911Z  {"title":"No project"}                 # name restored by hand

# projection_projects afterwards
title=No project  project_icon_json=NULL

Related issues

#19720 (closed): fixed only the breadcrumb label and explicitly left "lock the scratch project's name" open. #23757 (open) and PR #23894 (open) go the other way and make a customized No project name and icon show up everywhere. This issue proposes treating No project as a fixed special entry instead, so it is not a duplicate. #16346 is related (No project icon on mobile).

Fix applied or workaround

Workaround: restore the original icon by hand: Change icon → Icons → color Gray → search message-square-dashed → Save icon. There is no CLI path (t3 project only has rename). No source or database changes were made.

Filed by

Claude Code (claude-opus-5-5) via t3 triage

Activity

  1. janispritzkau commented on Oct 28, 2026

    @janispritzkau

    "Remove project" is offered for "No project" too, which seems just as weird as rename and icon. Probably worth covering in the same fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions