feat(vscode): statut git détaillé, sessions archivées, lien IDE web, fetch/pull (0.2.0)
Reflète la refonte IDE en supervision légère, sans dupliquer l'éditeur : - statut git fin dans l'arbre (staged/unstaged/conflits + dernier commit) ; - commande « Open Worktree IDE » → deep-link /workspace/:repoId/:wt ; - commandes fetch / pull (ff-only|rebase) sur les worktrees ; - event WS session_archived + réglage showArchivedSessions (badge + filtre). README/CHANGELOG + tests (config/rest-client/ws-client).
This commit is contained in:
@@ -124,6 +124,18 @@ describe('ArbWsClient', () => {
|
||||
expect(acks[acks.length - 1]).toMatchObject({ bytes: FLOW.ACK_EVERY_BYTES });
|
||||
});
|
||||
|
||||
it('route session_archived vers onSessionArchived', () => {
|
||||
const archived: string[] = [];
|
||||
const f = new FakeSocket();
|
||||
const c = new ArbWsClient({ socketFactory: () => f, onSessionArchived: (id) => archived.push(id) });
|
||||
c.configure('http://127.0.0.1:7317', 'tok');
|
||||
c.connect();
|
||||
f.fireOpen();
|
||||
f.fireText({ type: 'hello_ok', protocol: 1, serverVersion: '2.0.0' });
|
||||
f.fireText({ type: 'session_archived', sessionId: 'sess-42' });
|
||||
expect(archived).toEqual(['sess-42']);
|
||||
});
|
||||
|
||||
it('envoie stdin/resize sur le bon canal', async () => {
|
||||
const p = client.attach({ sessionId: 'sess', mode: 'interactive', cols: 80, rows: 24, sink: makeNoopSink() });
|
||||
fake.fireText({ type: 'attached', channel: 5, sessionId: 'sess', mode: 'interactive', controlling: true });
|
||||
|
||||
Reference in New Issue
Block a user