gitoriaLog in with ident

notes

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Branchmain2149e902notes mission 002 (4/4): code order — README file map + same-output test, STATUS, LOG, report; tests/letcount.py, tests/realdata-baseline.mjs, tests/realdata-compare.pymremain/sw.js

1.6 KB

  1. // sw.js — the service worker of notes.worldapi.org (ticket notes#2): the app opens without a network.
  2. // NETWORK FIRST: every page and asset is fetched as usual and the answer is kept; with no network the kept copy
  3. // answers. A page (`/` or `/note/<id>`) is kept once, under '/shell': the page carries no note data (the notes come
  4. // from the browser's IndexedDB, /notes-offline.js), so one page serves every note. The API and the socket are never
  5. // touched here. /notes-offline.js also puts the page and the assets it was loaded with into the same cache.
  6. const CACHE = 'notes-shell-v1';
  7. const isPage = (url) => url.pathname === '/' || url.pathname.startsWith('/note/');
  8. self.addEventListener('install', () => self.skipWaiting());
  9. self.addEventListener('activate', (e) => e.waitUntil((async () => {
  10. for (const k of await caches.keys()) if (k !== CACHE) await caches.delete(k);
  11. await self.clients.claim();
  12. })()));
  13. self.addEventListener('fetch', (e) => {
  14. const req = e.request;
  15. const url = new URL(req.url);
  16. if (req.method !== 'GET' || url.origin !== self.location.origin) return;
  17. if (url.pathname.startsWith('/api/') || url.pathname.startsWith('/login/')) return;
  18. if (req.mode === 'navigate' && !isPage(url)) return;
  19. e.respondWith((async () => {
  20. const cache = await caches.open(CACHE);
  21. const key = req.mode === 'navigate' ? '/shell' : req.url;
  22. try {
  23. const res = await fetch(req);
  24. if (res.ok && !res.redirected && res.type === 'basic') cache.put(key, res.clone());
  25. return res;
  26. } catch (err) {
  27. const kept = await cache.match(key);
  28. if (kept) return kept;
  29. throw err;
  30. }
  31. })());
  32. });

Branches

  • mainmain branch

Latest commits

  • 2149e902notes mission 002 (4/4): code order — README file map + same-output test, STATUS, LOG, report; tests/letcount.py, tests/realdata-baseline.mjs, tests/realdata-compare.pymre
  • 47db4fc1notes mission 002 (3/4): code order — let only where reassigned (58 dropped; 34 left: 19 reassigned, 15 loop-bound); gates 50/0 + 18/0, live-data run = step 2mre
  • 3f8cb383notes mission 002 (2/4): code order — topics, map, thin wrappers: lib/util.hl, lib/notes(-helpers).hl, lib/users.hl (+userOfLoginCode, tagOf), lib/api(-helpers).hl; project.hl = map; login routes take &req/&sessions (failed-login reason now kept); dead notes#1 functions removed; gates 50/0 + 18/0mre
  • 8cda5412notes mission 002 (1/4): code order — files moved: lib/notes.hl, lib/users.hl, lib/jsoncheck.hl, components/styles.hl (imports only); gates 50/0 + 18/0, live-data run identicalmre
  • 47dad68bnotes: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, mpackdb 2cb7ae5e, http1 773de63e); gates 50/0 + 18/0mre
  • a4a2b2aeantcolony#40: tracker missions moved too — references to them in missions/reports/LOG.md updatedmre
  • 3dea0ef2notes: Hybriel master 190aa11d (fc838894 GC correctness, #126 closure scopes, #127); gate 50/0mre
  • e27c7d71notes: Hybriel master 8efba065 (#126 GC by bytes, #48 lambda params copy; audit: nothing to fix; gate 50/0)mre
  • 124613b6antcolony#40: mission references point to the moved missionsmre
  • 1ca2f34dantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
  • 2bebebdanotes: Hybriel master ff51cf46 (re-vendor round)mre
  • 3eff126dnotes#3: installable app (manifest + own icon/favicon; notes' own sw.js kept)mre
  • 9883c540deploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
  • eee693b8deploy.sh: never send .git or .gitignore to Byrodinmre
  • c8904061State of 2026-09-27, before the move to gitoriamre