feat: repo config in .paradev/, .superset/ still read (SUPER-2984, SUPER-2986)

Merged
SA
2d ago
+707-398

Finishes the user-facing side of the .superset → .paradev move (Linear SUPER-2984, SUPER-2986), after #9157 and #9158 moved the app home. Nobody has to change anything: repos configured in .superset/ keep working, and everything new says and uses .paradev.

Repo config folder

  • resolveProjectConfigDir (@superset/shared/project-config/dir) decides by the main config first: .paradev/ if it has config.toml or config.json, else .superset/ if it does; only then by the other config files (local overlays, ports.json, setup/teardown/run/start.sh); else .paradev/ for new config. A stray ports.json or local overlay in .paradev/ therefore never hides a repo's .superset/config.toml, and a folder is never judged by existing alone, because pdev keeps its own settings.json, agents/ and prompts/ in <repo>/.paradev/.
  • Every reader and writer goes through it: host-service's TOML and v1 loaders, <key>.sh fallbacks, ports, the config editors and their .git/info/exclude entry, the desktop's v1 config, the copy into new worktrees, and the cloud's GitHub reads (.paradev/ first, then .superset/). A repo configured in .superset/ keeps being edited there, so a repo never ends up with config in both.
  • Files the app writes for agents (attachments and task prompts) go to .paradev/attachments/, and every writer drops a self-ignoring .gitignore there, so they never show up as repo changes. The transcript still recognizes .superset/attachments/ so older messages keep rendering. An older desktop talking to an updated cloud box will show new attachments as plain tags until it updates.
  • The v1 worktree copy fills in missing config files when the worktree already has a .paradev/ (pdev's tracked files), and never copies attachments or task prompts.

Copy

  • App strings (translated in every locale), CLI help, the setup-script prompts, the setup, environment and browser skills (plugin 0.3.3).
  • Docs: home paths are ~/.paradev, config is .paradev/ with a note that .superset/ still works, and two FAQ entries: where ~/.superset went (including when the move is retried), and keeping or moving a repo's .superset/ (merge into an existing .paradev/, update ./.superset/ paths).
  • READMEs and the compare pages. This repo's own .superset/ stays.

Verified

  • tsc clean; tests: shared 1534, trpc 832, cli 474, agent-setup 434, host-service 2711, desktop 9037, all passing. New tests cover the folder rule (pdev-only .paradev/ ignored, .paradev/ preferred once it holds config), the config editor keeping a .superset/ repo in place, the cloud reads, and old attachment paths.
  • In the dev desktop app (scratch HOME): a project with a committed .superset/config.toml and a pdev-only .paradev/settings.json ran its setup from .superset/ in a new workspace; a new project's setup saved from Settings landed in .paradev/config.json and ran in a new workspace.