Skip to content

Commit 232643e

Browse files
committed
Preserve resident journals across daily rollover
1 parent 6fabefd commit 232643e

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

src/progress.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
if (!raw) return defaultProgress();
2929
try {
3030
const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;
31-
if (!parsed || parsed.version !== SAVE_VERSION) return defaultProgress();
31+
if (!parsed || (parsed.version !== SAVE_VERSION && parsed.version !== 1)) return defaultProgress();
3232
return {
3333
version: SAVE_VERSION,
3434
challengeDate: typeof parsed.challengeDate === 'string' ? parsed.challengeDate : '',
@@ -53,7 +53,11 @@
5353
function scopeProgressToChallenge(progress, challengeDate) {
5454
const normalized = parseProgress(progress);
5555
if (normalized.challengeDate === challengeDate) return normalized;
56-
return { ...defaultProgress(), challengeDate };
56+
return {
57+
...defaultProgress(),
58+
challengeDate,
59+
discoveredNPCs: normalized.discoveredNPCs,
60+
};
5761
}
5862

5963
function saveProgress(storage, progress) {

tests/progress.test.cjs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,32 @@ test('progress normalizes lists and ignores unknown fields', () => {
4747
});
4848
});
4949

50+
test('version one saves migrate resident discoveries', () => {
51+
assert.deepEqual(parseProgress({
52+
version: 1,
53+
discoveredNPCs: ['OVERSEER'],
54+
complete: true,
55+
}), {
56+
...defaultProgress(),
57+
discoveredNPCs: ['OVERSEER'],
58+
complete: true,
59+
});
60+
});
61+
5062
test('daily progress restores only for the matching challenge date', () => {
5163
const completed = {
5264
...defaultProgress(),
5365
challengeDate: '2026-07-15',
5466
discoveredFragments: ['field-coil'],
5567
collectedFragments: ['field-coil'],
68+
discoveredNPCs: ['OVERSEER'],
5669
complete: true,
5770
};
5871
assert.deepEqual(scopeProgressToChallenge(completed, '2026-07-15'), completed);
5972
assert.deepEqual(scopeProgressToChallenge(completed, '2026-07-16'), {
6073
...defaultProgress(),
6174
challengeDate: '2026-07-16',
75+
discoveredNPCs: ['OVERSEER'],
6276
});
6377
});
6478

0 commit comments

Comments
 (0)