@@ -199,7 +199,7 @@ export class SnapshotManager {
199199
200200 // Sort queue:
201201 // 1. Suspendable changes always go to the back
202- // 2. Snapshot changes are ordered by ID
202+ // 2. Snapshot changes are ordered by creation time, with the latest snapshot last
203203 this . changeQueue . sort ( ( a , b ) => {
204204 if ( a . change . type === "suspendable" && b . change . type === "snapshot" ) {
205205 return 1 ; // a goes after b
@@ -208,17 +208,15 @@ export class SnapshotManager {
208208 return - 1 ; // a goes before b
209209 }
210210 if ( a . change . type === "snapshot" && b . change . type === "snapshot" ) {
211- // sort snapshot changes by creation time of the latest snapshot, CUIDs are sortable
212- const aLatestSnapshot = a . change . snapshots [ a . change . snapshots . length - 1 ] ;
213- const bLatestSnapshot = b . change . snapshots [ b . change . snapshots . length - 1 ] ;
211+ const snapshotA = a . change . snapshots [ a . change . snapshots . length - 1 ] ;
212+ const snapshotB = b . change . snapshots [ b . change . snapshots . length - 1 ] ;
214213
215- if ( ! aLatestSnapshot || ! bLatestSnapshot ) {
214+ if ( ! snapshotA || ! snapshotB ) {
216215 return 0 ;
217216 }
218217
219- return aLatestSnapshot . snapshot . friendlyId . localeCompare (
220- bLatestSnapshot . snapshot . friendlyId
221- ) ;
218+ // Sort snapshot changes by creation time, old -> new
219+ return snapshotA . snapshot . createdAt . getTime ( ) - snapshotB . snapshot . createdAt . getTime ( ) ;
222220 }
223221 return 0 ; // both suspendable, maintain insertion order
224222 } ) ;
0 commit comments