Setting Anime sync mode to Instant silently turns off the progress bar, the saved playback position and the resume prompt. Nothing in the setting's name or its options suggests it governs any of that.
How I ran into it
I binge released series. I watch a few episodes, open the next one to queue it up, and come back later — sometimes in the middle of an episode. With Instant selected I never get offered to resume where I stopped, and the progress bar in the flash message never fills.
It took a while to understand why, because the setting reads as "when should my list be updated", not "should MAL-Sync remember where I am in the video".
Where it comes from
Everything position-related lives behind one guard in syncPage.ts:
if ('addListener' in tracking) {
const localItem = localStore.getItem(progressStorageKey);
const lastProgress = ...
tracking.addListener(progress => {
// progress bar width
// resume prompt
// localStore.setItem(progressStorageKey, ...)
});
}
And only two of the four strategies implement it:
| strategy |
addListener |
canResume |
VideoStrategy |
yes |
yes |
MangaStrategy |
yes |
no |
InstantStrategy |
no |
no |
ManualStrategy |
no |
no |
So with Instant or Manual, the progress bar, the position saving and the resume prompt are all inert together. MangaStrategy gets the bar and the saving but no resume prompt.
There is a second, subtler part. startSyncHandling clears the saved position when tracking ends:
localStore.removeItem(progressStorageKey);
In video mode that is fine — tracking ends at 85%, the episode is over, forgetting the position is correct. In instant mode the sync fires at delay seconds (0 by default), so the position would be wiped almost immediately even if it were being saved. The cleanup is triggered by the list being updated rather than by the episode being finished, and those only coincide in video mode.
And on a revisit, checkSync returns false because the episode is already marked watched, so startSyncHandling is not called at all and the resume prompt could not appear regardless.
What I think would fix it
Rather than adding addListener to InstantStrategy, it seems cleaner to separate the two concerns:
- when the list gets updated stays the tracking mode's job;
- whether the playback position is remembered becomes independent of it, with its own toggle, on by default;
- the saved position is cleared when the episode actually finishes, not when the list is updated.
That would also cover two cases that are broken today in video mode: rewatching an episode, and any episode at or below the current list progress — both go through the Nothing to Sync branch and get no position tracking either.
A sub-setting shown under Instant would work too, but it leaves position tracking coupled to the mode, so Manual and the rewatch case would still be affected.
Happy to open a PR if you have a preference on the shape — I did not want to guess, since this changes behaviour for every user and every site.
Steps to reproduce
- Settings → Anime sync mode →
Instant
- Open an episode that is ahead of your list progress, so the sync actually runs
- Let the video play past a minute, then reload the page
Expected: the progress bar fills while watching, and the reload offers to resume.
Actual: the bar never fills, nothing is stored under progress/… in localStorage, and no resume prompt appears.
Switching Anime sync mode back to Video and repeating the same steps works as expected, which is what pointed at the mode rather than at the site.
Environment
- MAL-Sync 0.12.4
- Browser: Chrome
- Type: extension (unpacked build from
master)
- URL: reproduced on
https://anime-sama.to, but it is not site-specific — the guard is in syncPage.ts
- Relevant settings:
syncMode: MAL, autoTrackingModeanime: instant
Setting Anime sync mode to
Instantsilently turns off the progress bar, the saved playback position and the resume prompt. Nothing in the setting's name or its options suggests it governs any of that.How I ran into it
I binge released series. I watch a few episodes, open the next one to queue it up, and come back later — sometimes in the middle of an episode. With
Instantselected I never get offered to resume where I stopped, and the progress bar in the flash message never fills.It took a while to understand why, because the setting reads as "when should my list be updated", not "should MAL-Sync remember where I am in the video".
Where it comes from
Everything position-related lives behind one guard in
syncPage.ts:And only two of the four strategies implement it:
addListenercanResumeVideoStrategyMangaStrategyInstantStrategyManualStrategySo with
InstantorManual, the progress bar, the position saving and the resume prompt are all inert together.MangaStrategygets the bar and the saving but no resume prompt.There is a second, subtler part.
startSyncHandlingclears the saved position when tracking ends:In
videomode that is fine — tracking ends at 85%, the episode is over, forgetting the position is correct. Ininstantmode the sync fires atdelayseconds (0 by default), so the position would be wiped almost immediately even if it were being saved. The cleanup is triggered by the list being updated rather than by the episode being finished, and those only coincide invideomode.And on a revisit,
checkSyncreturns false because the episode is already marked watched, sostartSyncHandlingis not called at all and the resume prompt could not appear regardless.What I think would fix it
Rather than adding
addListenertoInstantStrategy, it seems cleaner to separate the two concerns:That would also cover two cases that are broken today in
videomode: rewatching an episode, and any episode at or below the current list progress — both go through theNothing to Syncbranch and get no position tracking either.A sub-setting shown under
Instantwould work too, but it leaves position tracking coupled to the mode, soManualand the rewatch case would still be affected.Happy to open a PR if you have a preference on the shape — I did not want to guess, since this changes behaviour for every user and every site.
Steps to reproduce
InstantExpected: the progress bar fills while watching, and the reload offers to resume.
Actual: the bar never fills, nothing is stored under
progress/…inlocalStorage, and no resume prompt appears.Switching Anime sync mode back to
Videoand repeating the same steps works as expected, which is what pointed at the mode rather than at the site.Environment
master)https://anime-sama.to, but it is not site-specific — the guard is insyncPage.tssyncMode: MAL,autoTrackingModeanime: instant