feat(continue): resume reading and games on another device - #75
Open
MadhuS-1605 wants to merge 2 commits into
Open
MadhuS-1605 wants to merge 2 commits into
MadhuS-1605 wants to merge 2 commits into
Conversation
Start on one device, carry on with another — no account, no server. A "Continue on another device" trigger on the reader, Padabandha, the daily word, and Collections builds a single progress blob and shows a QR + link. The whole snapshot rides inside the URL hash (base64url JSON, ~36h self expiry); nothing is uploaded and the daily-word answer is never included. - blobCodec: encode/decode with version + expiry checks, URL-size fitting that sheds stars then Padabandha while keeping the reading position - buildProgress/applyProgress: read and write the same localStorage keys each feature already uses, so there is no second save format - loadWordGameState replays a target-less carry-over onto today's word - QR renders inline SVG with the Sirigannada mark, error correction "H" - /continue landing page decodes, applies, and does a full-page redirect Signed-off-by: MadhuS-1605 <madhusgowda56@gmail.com>
MadhuS-1605
force-pushed
the
feat/continue-device
branch
from
September 6, 2026 06:44
f753e05 to
b72fdf6
Compare
|
Preview (commit Cloudflare needs a minute or two to build after each push. Test on a phone width. The branch |
Signed-off-by: MadhuS-1605 <madhusgowda56@gmail.com> # Conflicts: # src/components/icons/index.tsx # src/lib/i18n.ts
Contributor
Author
|
Merged Conflicting files:
|
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.
Summary
Start on one device, carry on with another — no account, no server. A "Continue on another device" trigger on the reader, Padabandha, the daily word, and Collections builds a single progress snapshot and shows a QR code + link. The whole snapshot rides inside the URL hash (base64url JSON, ~36h self-expiry); nothing is uploaded and the daily-word answer is never included. Consistent with the site's offline-first, serverless design.
Closes: #21
What changed
blobCodec— encode/decode the progress blob for the URL hash, with version + expiry checks so an old or corrupt link fails cleanly.fitContinueUrlsheds optional parts (stars, then Padabandha) to keep the QR scannable, always keeping the reading position and the daily-word date/guesses.buildProgress/applyProgress— read and write the samelocalStoragekeys each feature already uses (reader progress, Padabandha grid, daily-word guesses, Favourites collection). No second save format.loadWordGameState— replays a target-less carry-over record onto today's word instead of dropping it; normal local play is unaffected.QrCode— inline SVG QR (pureqrcode-generatorencoder, no canvas/network) with the Sirigannada mark knocked into the centre; error correction forced to "H" so the logo never breaks the scan./continue— landing page decodes the hash, applies progress into the features' own keys, then does a full-page redirect to the right screen (reading position wins, then games, then collections)..gitignore: ignore.claude-flow/.next.config.ts: removed stray dev-only cruft.Testing
npm run typecheck— cleannpm test— 517 passing (66 files), including newblobCodec.test.tsandapplyProgress.test.tsnpm run build— succeeds;/continueprerenders as static content