feat: l'IDE devient la vue par défaut + deep-link worktree unifié
Some checks failed
CI / Build & test (Node 22) (push) Successful in 10m13s
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / No em/en dashes (push) Has been cancelled
CI / Build & test (Node 24) (push) Has been cancelled

Route / redirige vers /ide ; le dashboard passe à /dashboard (nom inchangé). /workspace/:repoId/:wt rend désormais l'IDE (IdeShell) : au montage il décode la clé, active et déplie le worktree ciblé, ouvre ?file= le cas échéant. WorkspaceView et useWorkspaceLayout retirés.

encode/decodeWtKey déplacés dans @arboretum/shared (source unique) avec décodeur TOLÉRANT (base64url OU chemin percent-encodé), corrigeant la divergence historique du deep-link VS Code. config.ts de l'extension aligné sur encodeWtKey. Tests wt-key (shared) + config (vscode) mis à jour. 431 tests.
This commit is contained in:
2026-07-17 17:28:48 +02:00
parent 6741b2d47c
commit d287c3c1d1
10 changed files with 97 additions and 262 deletions

View File

@@ -1,6 +1,7 @@
// Lecture des réglages `arboretum.*` : module pur (aucun import vscode) pour rester testable.
// L'extension fournit un `ConfigSnapshot` lu depuis workspace.getConfiguration ; ce module
// normalise/dérive les valeurs (notamment l'URL WebSocket à partir de l'URL HTTP).
import { encodeWtKey } from '@arboretum/shared';
export interface ConfigSnapshot {
url: string;
@@ -23,9 +24,10 @@ export function wsUrlFromBase(baseUrl: string): string {
/**
* Construit l'URL de la vue IDE web d'un worktree : deep-link vers la route `/workspace/:repoId/:wt`
* (le routeur web est en history mode). `repoId` et le chemin du worktree sont encodés par segment.
* (le routeur web est en history mode). Le chemin du worktree est encodé en base64url via la source
* partagée `encodeWtKey` (exactement comme le front), pour un décodage cohérent des deux côtés.
*/
export function workspaceUrl(baseUrl: string, repoId: string, worktreePath: string): string {
const base = normalizeBaseUrl(baseUrl);
return `${base}/workspace/${encodeURIComponent(repoId)}/${encodeURIComponent(worktreePath)}`;
return `${base}/workspace/${encodeURIComponent(repoId)}/${encodeWtKey(worktreePath)}`;
}