ident
All repositories: gitoria
1.9 KB
// components/main.hl — THE SHELL: the application header and the slot the page renders// into. All CSS is in components/styles.hl.import { siteName } from '../project.hl'slot = null// OFFLINE (mission 046): true while the shell's probe cannot reach ident (the header says so)noNetwork = falseView {body {applicationHeader {a { class = "brand" href = "/" siteName }span { class = "tagline" "worldapi login" }nav {a { id = "navidentities" href = "/" "Identities" }a { id = "navinbox" href = "/inbox" "Inbox" }a { id = "navapps" href = "/apps" "Apps" }}if (noNetwork) { offlineNote { id = "offline" "Offline — ident needs the network to sign in and to save" } }}// THE NETWORK PROBE: a CSS animation (components/styles.hl `ident-net-probe`) starts half a second// after the page is up and repeats every 20 s; each start and repeat asks /api/online.// A View has no "mounted" event, and a probe that fired before the page is hydrated// would be lost, so the delayed animation is the trigger. No JavaScript of ours.netProbe { on animationstart(e) { emit probe(e) } on animationiteration(e) { emit probe(e) } }main { slot }script { src = "/avatar.js" }}}// the probe: no answer (or not ident's 204) = offline; the next repeat clears it again.// On `/start` (the installed app's start page, start.hl) an answer means: go on to `/`.on probe(e) {r = window.__hlAttempt(() => { return fetch('/api/online', { cache = 'no-store' }) })noNetwork = !r.ok || r.value.status != 204if (!noNetwork && window.location.pathname == '/start') { window.location.replace('/') }}// "SIGN OUT EVERYWHERE" from another device or tab (home.hl signOutAll): the server pushes// this to every open page of the account (project.hl audience), which reloads into the// signed-out state at once — no click needed.on client signedOutAll(accountId) {window.location.reload()}
Branches
- mainmain branch
Latest commits
- 5fdbb6b2ident mission 009: report — scratch folder notemre
- 74235815ident mission 009 (4/4): docs (README files map + same-output test, STATUS, LOG), report, tests/letcount.py + realdata-baseline/comparemre
- fe183516ident mission 009 (3/4): let only where reassigned — 293 never-reassigned lets are plain declarations; kept: reassigned, loop bodies, names of a file member, a name declared twice in one function; same outputmre
- d2e7f91bident mission 009 (2/4): one lib file per topic (login, accounts, identities, apps, invites, selector, notify + helpers, util), function routes as thin wrappers in lib/api.hl, project.hl = the map; same outputmre
- 91017164ident mission 009 (1/4): file moves — the root .hl files into lib/ (api.hl → lib/api-helpers.hl), styles.hl → components/styles.hl; imports adjusted, no other changemre
- f8bdcbc2ident: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, mpackdb 2cb7ae5e, http1 773de63e); all gates greenmre
- ff78726cident: Hybriel master 190aa11d (fc838894 GC correctness, #127, #126 closure scopes); gates all greenmre
- a3a7d21aident: Hybriel master 8efba065 (#126 GC by bytes, #48 lambda params copy); session-writing lambdas take &sessionmre
- 98226b41antcolony#40: mission references point to the moved missionsmre
- ff805b9aantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
- 51a7bcdfident: Hybriel master 73267707 (#122); /code uses the new page() signature; pending address passed as parameter; once-checksmre
- 836f644fident#24: installable app (manifest, service worker, data-free offline /start), own iconmre
- 8bebbbf2deploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
- cc063ea2deploy.sh: never send .git or .gitignore to Byrodinmre
- 81b15b7bState of 2026-09-27, before the move to gitoriamre