Version history, notes on highlights and bookmarks, "you've studied this", prayer journal
Build and Push Docker Image / build-and-push (push) Successful in 5m13s
Build and Push Docker Image / build-and-push (push) Successful in 5m13s
- Earlier versions of a study: the server keeps compressed copies (about one per ten minutes of editing, the latest 30); Export shows what differs and puts one back (the replaced copy is kept) - Notes on highlights and bookmarks: synced, merged without loss, in exports and backups - Reader verse panel lists your studies and chunks that cover the verse, and opens them - Prayer journal: requests, who for, linked verses, days prayed, answers; synced, in backups and the account export; daily prayer reminder through ntfy - TODO.md lists the ideas not built yet Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
54cb1c217d
commit
207bfcb919
45 files changed
+1669
-75
No files matched your search
@@ -20,7 +20,7 @@ test('a backup holds the studies, marks and plans, and round-trips through valid
|
||||
expect(backup.projects.map((p) => p.id)).toEqual(['p1']);
|
||||
const checked = validateBackup(JSON.parse(JSON.stringify(backup)));
|
||||
expect(checked.ok).toBe(true);
|
||||
expect(checked.summary).toEqual({ projects: 1, bookmarks: 1, highlights: 1, inkPages: 1, plans: 1 });
|
||||
expect(checked.summary).toEqual({ projects: 1, bookmarks: 1, highlights: 1, inkPages: 1, prayers: 0, plans: 1 });
|
||||
expect(backupFileName(new Date('2026-10-01T12:00:00Z'))).toBe('bible-study-backup-2026-10-01.json');
|
||||
});
|
||||
|
||||
@@ -56,3 +56,15 @@ test('merging plans keeps every run once, preferring the later activity', () =>
|
||||
expect(merged.customPlans.map((p) => p.id)).toEqual(['c1', 'c2']);
|
||||
expect(merged.activity).toEqual(['2026-09-01', '2026-09-02']);
|
||||
});
|
||||
|
||||
|
||||
test('prayers are in the backup, deleted ones are not, and they survive validation', () => {
|
||||
const prayers = [{ id: 'a', text: 'Peace', forWhom: '', verses: [], prayedOn: [], createdAt: 1, updatedAt: 2, answeredAt: null, answerNote: '' }, { id: 'b', deleted: true, updatedAt: 3 }];
|
||||
const backup = buildBackup({ reader: {}, readingPlans: null, prayers });
|
||||
expect(backup.prayers.map((p) => p.id)).toEqual(['a']);
|
||||
const checked = validateBackup(JSON.parse(JSON.stringify(backup)));
|
||||
expect(checked.ok).toBe(true);
|
||||
expect(checked.summary.prayers).toBe(1);
|
||||
expect(checked.backup.prayers[0].text).toBe('Peace');
|
||||
expect(validateBackup({ app: 'bible-study-project', version: 1, prayers: [{ id: 'x' }, 5, { id: 'y', text: ' ' }] }).backup.prayers).toEqual([]);
|
||||
});
|
||||
Reference in new issue
Block a user