Skip to content

Create New Project ignores "Add project starts in" and always uses ~/.t3/projects #14960

Description

@areidyOTH

What happened

"Add Project" and "Create New Project" use different base directories.

My Settings → "Add project starts in" is set to a custom directory (a mounted data drive). Add Project starts there as expected, but Create New Project creates the project under ~/.t3/projects/. I expected Create New Project to respect the configured base directory, or to offer its own destination setting.

Diagnosis

The new-project location is fixed. No setting controls it.

  • v0.0.45, apps/server/src/ws.ts:2026: const newProjectsRoot = path.resolve(config.baseDir, "projects"); is passed to NewProject.createNewProjectFolder({ root: newProjectsRoot, ... }) and advertised to clients as ServerConfig.newProjectsRoot. addProjectBaseDirectory is never read on this path. It is only used client-side as the starting folder of the Add Project browser.
  • This is deliberate. The code comment and feat: start a new project from just a name #14527 say these projects "live beside Scratch and worktrees, away from folders the user organizes by hand."
  • main is unchanged in behaviour. refactor(server): projects T3 creates for you run through one service #14569 moved the logic into ManagedProjectFolders (apps/server/src/project/ManagedProjectFolders.ts), and namedProjectsRoot is still path.resolve(config.baseDir, "projects").
  • The name step shows a path preview (Goes in <newProjectsRoot>), so the destination is visible. But users who have set "Add project starts in" expect a project they create to land in that folder. The only way to change the location today is to move the whole T3 home, or to symlink ~/.t3/projects.

This reads as a design gap, not a regression. Two possible fixes:

  1. Default new projects to addProjectBaseDirectory when it is set, and fall back to <baseDir>/projects when it is not.
  2. Add a separate server-scoped "New projects are created in" setting next to "Add project starts in" (per environment, consistent with [Bug]: "Add project starts in" is a per-environment path exposed as a global setting, so local and remote environments cannot differ #11756).

Steps to reproduce

  1. In Settings, set "Add project starts in" to a custom directory, for example /mnt/data/.
  2. Open Add Project and confirm the folder browser starts in that directory.
  3. Choose New project (the first row of Add Project, or the command palette action) and enter a name, for example Pinball Stats.
  4. The project is created at ~/.t3/projects/pinball-stats, not under the configured directory.

Version

0.0.45 (v0.0.45, 6c8fed3)

Environment

Ubuntu Linux (kernel 7.0.0-38), x64, Node v26.8.2, T3 Code desktop app with a local server

Evidence

# settings.json
"addProjectBaseDirectory": "/mnt/<data-drive>/"

# A project created with "New project" landed under the T3 home instead
$ ls ~/.t3/projects
cc-debate

# v0.0.45 apps/server/src/ws.ts:2023-2031
// Projects started from just a name live beside Scratch and worktrees,
// away from folders the user organizes by hand. ...
const newProjectsRoot = path.resolve(config.baseDir, "projects");
...
const folder = yield* NewProject.createNewProjectFolder({ root: newProjectsRoot, name: input.name })

# main apps/server/src/project/ManagedProjectFolders.ts:376
const namedProjectsRoot = path.resolve(config.baseDir, "projects");

Related issues

#14527 introduced the feature with the fixed location. #14569 refactored it on main without changing the location. #11756 is about "Add project starts in" being exposed as a global setting instead of per environment, which is a different problem. No existing issue asks for the new-project location to be configurable.

Fix applied or workaround

None applied. Workaround: replace ~/.t3/projects with a symlink to the preferred directory. Any projects already in it must be moved and re-added first, because their stored paths would change.

Filed by

Claude Code (Claude Opus 5.5) via t3 triage

Activity

  1. juliusmarminge commented on Oct 3, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Triage

    Thanks for the detailed write-up, @areidyOTH! You're right about how it works today, and this is the designed location for New project rather than a bug.

    Add project starts in only chooses the folder the Add Project browser opens in. Its settings row says to leave it empty to use ~/ when that browser opens, and the command palette uses addProjectBaseDirectory only as that starting path. Creating a project from a name doesn't read it.

    New project always creates <T3 home>/projects/<slug> (normally ~/.t3/projects/<slug>). On current main that's namedProjectsRoot in ManagedProjectFolders:

    // Projects started from just a name live beside Scratch and worktrees, away
    // from folders the user organizes by hand. A nested repository is fine here
    // (unlike Scratch) because each project gets its own `git init`.
    const namedProjectsRoot = path.resolve(config.baseDir, "projects");

    That location was specified in #14527, and #14569 moved the logic into this service without changing it. The name step already shows Goes in <root> or Creates <path> before anything is created, and web, desktop, and mobile all use the server's newProjectsRoot. #11756 is a separate (closed) report about where Add project starts in is scoped, and it never controlled where New project writes.

    Choosing a different directory would be a new capability. Pointing New project at addProjectBaseDirectory would mix "where the browser opens" with "where T3 keeps repositories it creates", which #14527 deliberately kept apart. A separate "New projects are created in" setting fits that split better, but it needs a product decision first, so a proposal in Ideas is the best next step. I'm tagging this as an enhancement for now.

    Until then, your workaround is the targeted one: move any projects already under ~/.t3/projects, then symlink that directory to the folder you want. T3CODE_HOME or --base-dir relocates the whole T3 data directory, including the database, not just these projects.

    Reviewed at 8ed276c246: ManagedProjectFolders.ts, SettingsPanels.tsx, CommandPalette.tsx.

  2. AugusDogus commented on Oct 8, 2026

    @AugusDogus
    Contributor

    Same behavior on the newest nightly, and one point that may be worth adding to the enhancement framing: for users who had set "Add project starts in", this reads as a behavior change, not only a missing option.

    Why it feels like a regression

    Before #14527 (merged 2026-10-01), the sidebar "+" and the draft heading's menu item were labeled "New project" but opened Add project. That browser starts in addProjectBaseDirectory, and typing a path that doesn't exist yet and pressing Enter ("Create & Add") creates the folder there and registers it. So "New project" used to land in the configured directory.

    Since #14527, those entry points say "Add project", and the thing now called New project always writes to <T3 home>/projects/<slug>. Same label as before, different destination. The "Create & Add" path still works, so nothing was removed, but the obvious button moved.

    Environment

    • T3 Code 0.0.46-nightly.20261008.2833 (a6ec88f), run as a background service, web client
    • Linux x64, Node v26.8.2
    • settings.json: "addProjectBaseDirectory": "~/<base-dir>"

    Evidence

    Projects added via Add project (including typed-in new folders) all sit under the configured base directory. Every project created with New project since the 2026-10-01 nightly sits under ~/.t3/projects:

    # projection_projects, newest first (workspace_root | created_at)
    ~/<base-dir>/project-g    | 2026-10-06   (Add project)
    ~/.t3/projects/project-f  | 2026-10-04   (New project)
    ~/.t3/projects/project-e  | 2026-10-03   (New project)
    ~/.t3/projects/project-d  | 2026-10-02   (New project)
    ~/<base-dir>/project-c    | 2026-09-28   (Add project, folder created from the browser)
    ~/<base-dir>/project-b    | 2026-09-25   (Add project, folder created from the browser)
    ~/<base-dir>/project-a    | 2026-09-24   (Add project, folder created from the browser)
    

    The ~/.t3/projects repos start with the scaffold's Initial commit (README + assets/icon.svg). The earlier base-directory repos have ordinary first commits, consistent with "Create & Add" plus the first turn's own commit.

    Source on this tag matches the diagnosis above: apps/server/src/project/ManagedProjectFolders.ts:376 resolves path.resolve(config.baseDir, "projects") and never reads addProjectBaseDirectory; apps/web/src/components/CommandPalette.tsx:1119 reads the setting only to seed the Add project browser.

    Either fix proposed in the issue would work for me. Defaulting New project to addProjectBaseDirectory when set would restore what the old "New project" label did.

    Filed via t3 triage (Claude Code, Claude Fable 5.1).

  3. Lightning11wins commented on Oct 10, 2026

    @Lightning11wins

    For what it's worth, I second this. I asked Claude how to change the new project directory, and you can't, so I guess I'll have to create all my projects manually unless this gets updated.

  4. areidyOTH commented on Oct 10, 2026

    @areidyOTH
    Author

    @Lightning11wins I raised it as an idea, see #14973 . Hopefully it gets enough up votes that it is implemented

  5. locked and limited conversation to collaborators on Oct 11, 2026
  6. converted this issue into a discussion #18021 on Oct 11, 2026
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

    enhancementRequested improvement or new capability.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions