feat(terminal): add guided goals, tasks, and confirmed deletion
This commit is contained in:
1 parent
8ffeb2897f
commit
78c1ffe1fd
7 files changed
+175
-10
No files matched your search
@@ -79,6 +79,7 @@ const terminalContext = vm.createContext({
|
||||
APPS: { calendar: ['icon', 'CALENDAR'] }, openApp: id => terminalRenders.push(id),
|
||||
crypto: globalThis.crypto, day: () => '2026-09-28',
|
||||
mems: () => terminalStorage.get('lifeos_memories') || [],
|
||||
museum: () => terminalStorage.get('lifeos_museum') || [],
|
||||
sys: () => terminalStorage.get('lifeos_system') || { schemaVersion: 2 },
|
||||
save: (key, value) => terminalStorage.set(key, structuredClone(value)),
|
||||
renderAll: () => terminalRenders.push('render'),
|
||||
@@ -125,6 +126,38 @@ terminalUiNodes['.terminal-note'].value = 'A note from the guided form';
|
||||
terminalUiNodes['.terminal-compose'].listeners.click({ target: { closest: () => ({ dataset: { note: 'save' } }) } });
|
||||
assert.equal(terminalStorage.get('lifeos_memories').find(item => item.date === '2026-10-01').text, 'A note from the guided form');
|
||||
assert.equal(terminalUiNodes['.terminal-compose'].hidden, true);
|
||||
assert.match(command('goal add').message, /terminal\.flow\.title/);
|
||||
assert.match(command('A guided goal').message, /terminal\.flow\.description/);
|
||||
assert.match(command('').message, /terminal\.flow\.targetDate/);
|
||||
assert.match(command('2027-01-02').message, /terminal\.flow\.showOnDesktop/);
|
||||
assert.match(command('yes').message, /terminal\.flow\.confirmCreate/);
|
||||
assert.equal(command('yes').message, 'terminal.goalSaved');
|
||||
assert.equal(terminalStorage.get('lifeos_system').tasksBoard.goals[0].showOnDesktop, true);
|
||||
assert.match(command('task add').message, /terminal\.flow\.title/);
|
||||
assert.match(command('A guided task').message, /terminal\.flow\.dueDate/);
|
||||
assert.match(command('').message, /terminal\.flow\.goalId/);
|
||||
assert.match(command('1').message, /terminal\.flow\.priority/);
|
||||
assert.match(command('high').message, /terminal\.flow\.confirmCreate/);
|
||||
assert.equal(command('yes').message, 'terminal.taskSaved');
|
||||
assert.equal(terminalStorage.get('lifeos_system').tasksBoard.tasks[1].goalId, terminalStorage.get('lifeos_system').tasksBoard.goals[0].id);
|
||||
assert.match(command('task delete').message, /terminal\.flow\.pick/);
|
||||
assert.match(command('2').message, /terminal\.flow\.confirmDelete/);
|
||||
assert.equal(command('no').cancel, true);
|
||||
assert.equal(terminalStorage.get('lifeos_system').tasksBoard.tasks.length, 2);
|
||||
assert.match(command('task delete 2').message, /terminal\.flow\.confirmDelete/);
|
||||
assert.match(command('yes').message, /terminal\.flow\.deleted/);
|
||||
assert.equal(terminalStorage.get('lifeos_system').tasksBoard.tasks.length, 1);
|
||||
assert.match(command('memory delete 2026-09-30').message, /terminal\.flow\.confirmDelete/);
|
||||
assert.equal(command('yes').message.includes('terminal.flow.deleted'), true);
|
||||
assert.equal(terminalStorage.get('lifeos_memories').some(item => item.date === '2026-09-30'), false);
|
||||
terminalContext.LifeOSActions.createTask({ title: 'Linked task', goalId: terminalStorage.get('lifeos_system').tasksBoard.goals[0].id });
|
||||
assert.match(command('goal delete 1').message, /terminal\.flow\.confirmDelete/);
|
||||
assert.match(command('yes').message, /terminal\.flow\.deleted/);
|
||||
assert.equal(terminalStorage.get('lifeos_system').tasksBoard.tasks[1].goalId, '');
|
||||
terminalContext.LifeOSActions.createMemory({ date: '2026-10-02', title: 'Linked memory', taskId: terminalStorage.get('lifeos_system').tasksBoard.tasks[0].id });
|
||||
assert.match(command('task delete 1').message, /terminal\.flow\.confirmDelete/);
|
||||
assert.match(command('yes').message, /terminal\.flow\.deleted/);
|
||||
assert.equal(terminalStorage.get('lifeos_memories').find(item => item.date === '2026-10-02').taskId, '');
|
||||
assert.equal(command('open calendar').message, 'terminal.opened');
|
||||
assert.ok(terminalRenders.includes('calendar'));
|
||||
assert.deepEqual(Array.from(terminalContext.LifeOSTerminalEngine.words('task add "quoted title" --priority high')), ['task','add','quoted title','--priority','high']);
|
||||
|
||||
Reference in new issue
Block a user