Skip to content

feat/remote-ssh-projects#6

Merged
MidnightCrowing merged 5 commits into
mainfrom
feat/remote-ssh-projects
Jun 22, 2026
Merged

feat/remote-ssh-projects#6
MidnightCrowing merged 5 commits into
mainfrom
feat/remote-ssh-projects

Conversation

@MidnightCrowing

Copy link
Copy Markdown
Owner

No description provided.

Manually add remote (SSH) directories alongside local projects and open
them via VS Code Remote-SSH or an ssh terminal.

- LocalProject gains isRemote/remoteHost/remotePath; the store skips local
  existence checks and verbatim-path normalization for remote entries
- New open_remote_project command (vscode/terminal modes) that bypasses
  local path validation; auth/port/keys delegated to ~/.ssh/config
- Project editor adds a Local/Remote toggle with SSH host + remote path
  fields and limits the editor choice to the VS Code family
- HomeView wires remote open/terminal and shows a remote badge; the
  language popover is skipped for remote projects

List view refinements (same views, hence one commit):
- Add an Editor column, moved out of the project title line
- Dim missing-project names to the secondary text color
- i18n for the above (en/zh-CN/zh-TW)
- Replace the Kind column with title-line Fork/Clone badges; Mine shows no
  badge (badge the exceptions, not the default). The Kind filter in the
  toolbar is unaffected.
- Flatten the language/license/editor cells to plain text; Kind keeps its
  colored tag. Card-view pills are untouched.
- Swap the Editor and License columns and tune their widths and gap.
…ote ssh terminal

On Windows, editor launchers like code.cmd are batch scripts. Launching them
from the GUI process made Windows allocate a console window (a stray terminal
alongside the editor, most noticeable on remote opens).

- Run batch launchers via `cmd /C` with CREATE_NO_WINDOW instead of `start`
  (which forces a new console for batch files); .exe editors get the flag too.
- Remote ssh terminal: build the command line with raw_arg so Rust's MSVCRT
  escaping doesn't clash with cmd parsing and corrupt the ssh hostname.
- Remove the group filter: it's already covered by search (Fuse indexes group)
  and the inline "group/" prefix. Also drops the dead groupOptions/projectStats
  accounting and the now-unused i18n keys.
- Align remote action buttons by disabling (not hiding) "show in folder" for
  remote projects, matching how missing-path projects already grey it out.
- Remove the duplicate "use folder" button from the remote project form.
- Extract useDisplayPathCache (66 lines) - path display caching
- Extract useProjectSearch (98 lines) - Fuse.js search with debounce
- Extract useProjectFilters (218 lines) - filtering, sorting, stats
- Extract useProjectOpenState (167 lines) - opening state management
- Extract useVirtualScroll (139 lines) - incremental rendering
- Extract useProjectMenus (159 lines) - menu item construction
- Extract useProjectNavigation (88 lines) - scroll position memory

Reduces HomeView.vue from 2745 to 2154 lines (-21.5%)

Architecture improvements:
- Create shared types.ts (ScrollAreaRef, LayoutMode, ProjectActionKey)
- Create shared constants.ts (menu prefixes, sync timings, regex)
- Extract formatActionError to utils/error.ts
- Eliminate duplicate definitions
- All composables use dependency injection pattern

Add trae-color icon to assets
@MidnightCrowing MidnightCrowing merged commit d027d2f into main Jun 22, 2026
3 checks passed
@MidnightCrowing MidnightCrowing deleted the feat/remote-ssh-projects branch June 22, 2026 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant