Detect another tab and state the limits
See this course’s project requirements
A fictional local reading-list app with versioned saved data, explicit browser-only wording, validated JSON export/import and corrupt-save recovery tests.
Keep your working files in your own notebook or software. Save a private description, checklist, and work link in My Proof.
What to include
- Document the exact storage origin and distinguish reload persistence from account synchronization.
- Retain the validated envelope format and prove an invalid replacement leaves the earlier record intact.
- Demonstrate a rejected corrupt load and a failed write without silently discarding prior data.
- Create and inspect an actual JSON export and state its exact contents.
- Produce a valid/invalid import matrix proving rejected content retains the previous list.
- Deliver a two-tab observation or truthful unavailable note, alongside the validated backup/recovery project.
Review and revise
Use these criteria to check your work and choose what to improve.
- The implementation or declared simulation follows the supplied contract and retains inspectable original inputs.
- Normal, boundary and rejected cases are recorded with expected versus observed results.
- The changed case has a correct explanation and does not rely on hidden state.
- The project includes source, outputs, instructions and honest tool, privacy and verification limits.
Want more background?
The idea in everyday life
Use the supplied reading.html, reading-store.mjs and test-reading.mjs with the invented title Moon Garden. Serve the folder at http://localhost:8765 using python3 -m http.server 8765 --bind 127.0.0.1.
A storage event reports changes from another document sharing the origin. The warning reduces accidental overwrite but is not a transactional multi-user conflict solution.
Detect another tab and state the limits — original worked practice
A storage event reports changes from another document sharing the origin. The warning reduces accidental overwrite but is not a transactional multi-user conflict solution.
Use the supplied reading.html, reading-store.mjs and test-reading.mjs with the invented title Moon Garden. Serve the folder at http://localhost:8765 using python3 -m http.server 8765 --bind 127.0.0.1.
1. Step 1
Open reading.html in two tabs at the same localhost origin. Add River Map in the first.
You should see: The other tab shows a changed-list warning if the browser dispatches the event.
A storage event reports changes from another document sharing the origin. The warning reduces accidental overwrite but is not a transactional multi-user conflict solution.
2. Step 2
In the warned tab, try Add and save. Read the blocked-add message.
You should see: The tab requests export/reload before further additions.
A storage event reports changes from another document sharing the origin. The warning reduces accidental overwrite but is not a transactional multi-user conflict solution.
3. Step 3
Export any wanted draft, reload, and compare the latest stored revision.
You should see: The reloaded tab uses the current saved envelope.
A storage event reports changes from another document sharing the origin. The warning reduces accidental overwrite but is not a transactional multi-user conflict solution.
4. Step 4
Package all seven Node checks and observed browser cases; mark unavailable storage-event checks separately.
You should see: A browser-saving project with backup/recovery evidence and concurrency limits.
A storage event reports changes from another document sharing the origin. The warning reduces accidental overwrite but is not a transactional multi-user conflict solution.
What to finish
Deliver a two-tab observation or truthful unavailable note, alongside the validated backup/recovery project.
Watch for this
Treating a revision number and warning as complete concurrent-write protection.
How can I tell I understand it?
Demonstrate the rule: A storage event reports changes from another document sharing the origin. The warning reduces accidental overwrite but is not a transactional multi-user conflict solution. Use the supplied variant to distinguish a changed result from a broken implementation.
Quick knowledge check
Answer all 3 questions. Get at least 2 right and the lesson completes automatically.
You’ll get an explanation for each answer. Signed in? Your results save to your account.
Pass the check. We’ll save the progress.
Answer all 3 questions above and get at least 2 right. You can review the explanations and try again.
Go to the knowledge checkTools, templates, and lesson sources
Tools and templates
Tools open in a new tab so you can keep your place here.
Sources and further reading
Explore the references behind this lesson.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Report a problem with this lesson
Tell us what went wrong. Please leave out personal information and private project contents.