feat(v029): useInbox view enum + counts + setView + listByStatus/countsByStatus IPC

- store.ts: view enum ('inbox'|'completed'|'archived'|'trash'|'settings') + counts +
  setView + loadByView. setShowSettings delegates to setView (mirror).
- types.ts + preload + ipc/inboxApi: listByStatus + countsByStatus IPC.
- NoteRepository.countByStatus 신규.
- store.view.test (5) + NoteRepository.countByStatus test (1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
altair823
2026-05-09 15:51:51 +09:00
parent fd839f6afe
commit 606ac94976
7 changed files with 189 additions and 8 deletions

View File

@@ -966,6 +966,24 @@ describe('NoteRepository — setStatus + listByStatus', () => {
expect(note.moveReason).toBeNull();
});
it('countByStatus returns accurate count per status', () => {
const a = repo.create({ rawText: 'a' }).id; // active
repo.create({ rawText: 'b' }); // active
const c = repo.create({ rawText: 'c' }).id;
repo.setStatus(c, 'completed', null, new Date('2026-05-10T00:00:00.000Z'));
const d = repo.create({ rawText: 'd' }).id;
repo.setStatus(d, 'archived', null, new Date('2026-05-10T00:00:00.000Z'));
const e = repo.create({ rawText: 'e' }).id;
repo.setStatus(e, 'trashed', null, new Date('2026-05-10T00:00:00.000Z'));
expect(repo.countByStatus('active')).toBe(2);
expect(repo.countByStatus('completed')).toBe(1);
expect(repo.countByStatus('archived')).toBe(1);
expect(repo.countByStatus('trashed')).toBe(1);
// sanity — a 가 여전히 active.
expect(repo.findById(a)!.status).toBe('active');
});
it('restoreNote sets status=active + clears moveReason', () => {
const { id } = repo.create({ rawText: 'r' });
repo.setStatus(id, 'trashed', '실수', new Date('2026-05-15T00:00:00.000Z'));