Skip to content

Support custom workspace locations per repository #892

Description

@aidxun

Support custom workspace locations per repository

Helmor currently creates new worktree workspaces under its default workspace directory, such as:

~/helmor/workspaces/<repo>/<workspace-name>

This works for most standalone repositories, but not for projects that must stay under a specific parent directory.

One example is Mi Home plugin development. A Mi Home plugin project usually needs to live inside the Xiaomi/Mi Home SDK structure, for example:

/path/to/miot-plugin-sdk/projects/<plugin-id>

SDK tooling may rely on this layout for project discovery, build scripts, debugging, or resource resolution. If Helmor creates the workspace under ~/helmor/workspaces/, the worktree is no longer inside the SDK structure, so the project may not build or run correctly.

Mi Home plugins are only one example. The same issue can happen with SDK plugins, monorepo packages, embedded projects, game engine plugins, or any project whose tooling depends on a fixed local directory layout.

Proposal

Allow each repository to configure a custom workspace root directory.

When configured, new worktree workspaces for that repository should be created under that directory instead of Helmor's default workspace location.

Example:

Custom workspace root:
  /path/to/miot-plugin-sdk/projects

New Helmor workspace:
  /path/to/miot-plugin-sdk/projects/<workspace-name>

Expected behavior

  • Repositories without a custom workspace root keep the current default behavior.
  • Repositories with a custom workspace root create new worktree workspaces under that path.
  • Existing workspaces are not moved when the setting changes.
  • The UI explains that this setting only affects future workspaces.
  • Invalid paths show clear, actionable errors.

Why this matters

This lets Helmor keep its isolated worktree workflow while supporting projects that depend on a specific filesystem layout.

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions