Fix paused reconnects, add double-click seeking, and run tests in CI - #9
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Paused article sessions could lose their background connection when Chrome idled the Manifest V3 worker, and every disconnect told the user to refresh. Keep the worker active during a listening session, try once to recover at the current word while preserving pause state and voice, and retain cached playback after a completed stream disconnects. Only an invalidated extension context requires a refresh.
During article playback, double-clicking a word now seeks to its cached timestamp or starts a new stream from that word if its audio is not available yet. DOM source offsets distinguish repeated words and paragraphs, preserve highlighting, and leave selected-text listening intact.
Add GitHub Actions for pushes, pull requests, and manual runs covering type checking, the production build, JavaScript tests, Python bridge tests, and browser playback checks without a Fish API key.
Validation: Type checking, production build, 62 JavaScript tests, both Python bridge tests, and diff checks passed locally. Chromium playback checks passed for a 45-second frozen-tab pause, cached and uncached word seeking, recovery and retry limits, selected-text listening, listener cleanup, and cached playback after disconnect. Both GitHub Actions jobs also passed on the latest commit, including the full browser playback check with hosted Google Chrome.
The browser test uses real Web Audio with synthetic PCM and a controlled extension port. The environment blocks unpacked extension installation, so installed-extension worker lifecycle behavior and live Fish Audio still need manual verification. Reload the extension and refresh existing article tabs once after installing the update.