Skip to content

Commit 0fc5aad

Browse files
author
web3blind
committed
Speed stale checkpoint catch-up
1 parent c514629 commit 0fc5aad

4 files changed

Lines changed: 27 additions & 13 deletions

File tree

app/index.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,11 @@
111111
<script src="lib/viz.min.js"></script>
112112

113113
<!-- Config -->
114-
<script src="js/config.js?v=20260621b"></script>
114+
<script src="js/config.js?v=20260621c"></script>
115115

116116
<!-- I18n -->
117-
<script src="js/i18n/ru.js?v=20260621b"></script>
118-
<script src="js/i18n/en.js?v=20260621b"></script>
117+
<script src="js/i18n/ru.js?v=20260621c"></script>
118+
<script src="js/i18n/en.js?v=20260621c"></script>
119119

120120
<!-- Utilities -->
121121
<script src="js/utils/helpers.js"></script>
@@ -125,7 +125,7 @@
125125
<!-- Blockchain layer -->
126126
<script src="js/blockchain/connection.js"></script>
127127
<script src="js/blockchain/account.js"></script>
128-
<script src="js/blockchain/history-source.js?v=20260621b"></script>
128+
<script src="js/blockchain/history-source.js?v=20260621c"></script>
129129
<script src="js/blockchain/broadcast.js"></script>
130130
<script src="js/blockchain/invite.js"></script>
131131

@@ -152,7 +152,7 @@
152152
<script src="js/engine/duel.js"></script>
153153
<script src="js/engine/duel-state.js"></script>
154154
<script src="js/engine/validator.js"></script>
155-
<script src="js/engine/guild.js?v=20260621b"></script>
155+
<script src="js/engine/guild.js?v=20260621c"></script>
156156
<script src="js/engine/territory.js"></script>
157157
<script src="js/engine/crafting.js"></script>
158158
<script src="js/engine/enchanting.js"></script>
@@ -186,8 +186,8 @@
186186
<script src="js/ui/screens/inventory.js"></script>
187187
<script src="js/ui/screens/chronicle.js"></script>
188188
<script src="js/ui/screens/duel.js"></script>
189-
<script src="js/ui/screens/arena.js?v=20260621b"></script>
190-
<script src="js/ui/screens/guild.js?v=20260621b"></script>
189+
<script src="js/ui/screens/arena.js?v=20260621c"></script>
190+
<script src="js/ui/screens/guild.js?v=20260621c"></script>
191191
<script src="js/ui/screens/map.js"></script>
192192
<script src="js/ui/screens/marketplace.js"></script>
193193
<script src="js/ui/screens/crafting.js"></script>

app/js/ui/app.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -588,17 +588,25 @@ var App = (function() {
588588

589589
_updateSyncStatus(_calculateSyncPercent(_lastPolledBlock, headBlock));
590590

591-
// Cap batch size — scale with gap for faster catch-up
592591
var startBlock = _lastPolledBlock + 1;
593-
var gap = headBlock - _lastPolledBlock;
594-
var maxBatch = gap > 1000 ? 200 : gap > 100 ? 50 : 10;
595-
var endBlock = Math.min(headBlock, startBlock + maxBatch - 1);
592+
var endBlock = _nextCatchupBatchEnd(startBlock, headBlock);
596593

597594
_processBlockBatch(startBlock, endBlock, headBlock);
598595
});
599596
}, POLL_INTERVAL_MS);
600597
}
601598

599+
/**
600+
* Choose a catch-up batch size based on remaining gap.
601+
* Keep large gaps moving quickly after stale checkpoints/reloads, then
602+
* shrink near head so UI updates stay responsive.
603+
*/
604+
function _nextCatchupBatchEnd(startBlock, chainHead) {
605+
var remaining = Math.max(0, chainHead - startBlock + 1);
606+
var maxBatch = remaining > 1000 ? 200 : remaining > 100 ? 50 : 10;
607+
return Math.min(chainHead, startBlock + maxBatch - 1);
608+
}
609+
602610
/**
603611
* Process a batch of blocks sequentially, then save checkpoint.
604612
*/
@@ -634,7 +642,7 @@ var App = (function() {
634642
// If there are more blocks to process, continue immediately
635643
if (endBlock < chainHead) {
636644
var nextStart = endBlock + 1;
637-
var nextEnd = Math.min(chainHead, nextStart + 9);
645+
var nextEnd = _nextCatchupBatchEnd(nextStart, chainHead);
638646
_processBlockBatch(nextStart, nextEnd, chainHead);
639647
} else {
640648
_syncStartBlock = 0;

app/sw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Viz Magic — Service Worker
2-
var CACHE_NAME = 'viz-magic-v14';
2+
var CACHE_NAME = 'viz-magic-v15';
33
var ASSETS = [
44
'/',
55
'/index.html',

tests/player-bug-regressions.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@ test('chronicle keeps loaded tabs visible and shows sent blessings immediately',
122122
assert.ok(/_injectLocalBlessing\(account, energy\)/.test(chronicleJs), 'blessing success path should inject visible local action');
123123
});
124124

125+
test('stale checkpoint catch-up keeps using scaled batches after first batch', function () {
126+
assert.ok(/function _nextCatchupBatchEnd/.test(appJs), 'app should centralize catch-up batch sizing');
127+
assert.ok(/var remaining = Math\.max\(0, chainHead - startBlock \+ 1\)/.test(appJs), 'batch sizing should use remaining gap');
128+
assert.ok(/var nextEnd = _nextCatchupBatchEnd\(nextStart, chainHead\)/.test(appJs), 'continued catch-up should not fall back to fixed 10-block batches');
129+
});
130+
125131
test('guild joining explains and enforces preparation requirements', function () {
126132
assert.ok(/var GUILD_JOIN_MIN_LEVEL = 4/.test(guildJs), 'guild join level gate should be explicit');
127133
assert.ok(/guild_join_requirements/.test(guildJs), 'guild screen should explain join requirements');

0 commit comments

Comments
 (0)