From eb786899ccc037114602191cabc4d4df4421ad31 Mon Sep 17 00:00:00 2001 From: Melvin Carvalho Date: Sun, 24 May 2026 14:59:24 +0200 Subject: [PATCH] feat(apps): bundle profile + home alongside pilot in the curated set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit apps/ ships inside the package and seedPodFiles() copies it into the pod on first run — offline, no git, no network. It already carried pilot; add profile and home so embedders (esp. nodejs-mobile/Android via the in-process start, #58/#59) get a useful curated set installed offline at first boot, without the jsDelivr/git network path. Snapshots of each app's gh-pages deployable files (README/LICENSE excluded), matching how apps/pilot is vendored. --- apps/home/favicon.svg | 11 + apps/home/home.js | 535 +++++++++++++++++++++++++++ apps/home/icon-192.png | Bin 0 -> 17499 bytes apps/home/icon-512.png | Bin 0 -> 107899 bytes apps/home/index.html | 36 ++ apps/home/manifest.json | 14 + apps/home/og.png | Bin 0 -> 110419 bytes apps/profile/app.js | 497 +++++++++++++++++++++++++ apps/profile/favicon.svg | 11 + apps/profile/icon-192.png | Bin 0 -> 10597 bytes apps/profile/icon-512.png | Bin 0 -> 37743 bytes apps/profile/index.html | 114 ++++++ apps/profile/manifest.json | 14 + apps/profile/style.css | 414 +++++++++++++++++++++ apps/profile/xlogin.js | 737 +++++++++++++++++++++++++++++++++++++ 15 files changed, 2383 insertions(+) create mode 100644 apps/home/favicon.svg create mode 100644 apps/home/home.js create mode 100644 apps/home/icon-192.png create mode 100644 apps/home/icon-512.png create mode 100644 apps/home/index.html create mode 100644 apps/home/manifest.json create mode 100644 apps/home/og.png create mode 100644 apps/profile/app.js create mode 100644 apps/profile/favicon.svg create mode 100644 apps/profile/icon-192.png create mode 100644 apps/profile/icon-512.png create mode 100644 apps/profile/index.html create mode 100644 apps/profile/manifest.json create mode 100644 apps/profile/style.css create mode 100644 apps/profile/xlogin.js diff --git a/apps/home/favicon.svg b/apps/home/favicon.svg new file mode 100644 index 0000000..313efed --- /dev/null +++ b/apps/home/favicon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/home/home.js b/apps/home/home.js new file mode 100644 index 0000000..ab936b2 --- /dev/null +++ b/apps/home/home.js @@ -0,0 +1,535 @@ +// home — a launcher for whatever Solid apps are on this pod. +// +// Reads /public/apps/ as an LDP container, lists every app it finds, +// renders them in a macOS-style magnification dock. Visual lifted +// from JSS's Solid OS dashboard so it feels like the same suite. + +const app = document.getElementById('app') + +// Known apps: stable colors + emoji so familiar ones look the part. +// Anything not listed gets a colour from a hash of its name + the +// first letter as a glyph. +const KNOWN = { + plaza: { glyph: '\u{1F4AC}', color: '#7c4dff', color2: '#a78bfa' }, + chat: { glyph: '✉️', color: '#06b6d4', color2: '#22d3ee' }, + vellum: { glyph: '✍️', color: '#f59e0b', color2: '#fbbf24' }, + plume: { glyph: '\u{1FAB6}', color: '#a855f7', color2: '#c084fc' }, + taskify: { glyph: '✅', color: '#22c55e', color2: '#4ade80' }, + explorer: { glyph: '\u{1F4C1}', color: '#3b82f6', color2: '#60a5fa' }, + hub: { glyph: '\u{1F39B}️', color: '#ec4899', color2: '#f472b6' }, + chrome: { glyph: '\u{1FA9F}', color: '#10b981', color2: '#059669' }, + timeline: { glyph: '\u{1F4F0}', color: '#f97316', color2: '#fb923c' }, + win98: { glyph: '\u{1F4BB}', color: '#06b6d4', color2: '#22d3ee' }, + pdf: { glyph: '\u{1F4C4}', color: '#ef4444', color2: '#f87171' }, + alarm: { glyph: '⏰', color: '#fbbf24', color2: '#f59e0b' }, + playlist: { glyph: '\u{1F3B5}', color: '#a855f7', color2: '#c084fc' }, + mindstr: { glyph: '\u{1F9E0}', color: '#a855f7', color2: '#c084fc' }, + charlie: { glyph: '\u{1F916}', color: '#10b981', color2: '#059669' }, + forum: { glyph: '\u{1F4AD}', color: '#ec4899', color2: '#f472b6' }, + transcribe: { glyph: '\u{1F3A4}', color: '#06b6d4', color2: '#22d3ee' }, + store: { glyph: '\u{1F6CD}', color: '#7c4dff', color2: '#a78bfa' }, + git: { glyph: '\u{1F500}', color: '#1f8fff', color2: '#60a5fa' } +} + +const FALLBACK_COLORS = [ + ['#7c4dff', '#a78bfa'], ['#06b6d4', '#22d3ee'], ['#f59e0b', '#fbbf24'], + ['#22c55e', '#4ade80'], ['#3b82f6', '#60a5fa'], ['#ec4899', '#f472b6'], + ['#10b981', '#059669'], ['#f97316', '#fb923c'], ['#a855f7', '#c084fc'], + ['#ef4444', '#f87171'] +] +function pickColor(name) { + let h = 0 + for (let i = 0; i < name.length; i++) h = (h * 31 + name.charCodeAt(i)) >>> 0 + return FALLBACK_COLORS[h % FALLBACK_COLORS.length] +} + +function describe(name, url) { + const known = KNOWN[name.toLowerCase()] + if (known) return { name, url, glyph: known.glyph, color: known.color, color2: known.color2 } + const [color, color2] = pickColor(name) + return { name, url, glyph: (name[0] || '?').toUpperCase(), color, color2 } +} + +// Try the app's manifest.json. If it has theme_color + a 192px icon we +// prefer those over the hardcoded KNOWN map — each app brands itself. +async function fetchManifest(appUrl) { + try { + const r = await fetch(appUrl + 'manifest.json') + if (!r.ok) return null + return await r.json() + } catch { + return null + } +} + +// Merge manifest data onto the base descriptor. If manifest has an +// icon URL we set `iconUrl` and the renderer uses an ; otherwise +// we keep the glyph + gradient fallback. +async function enrichWithManifest(base) { + const m = await fetchManifest(base.url) + if (!m) return base + const icons = m.icons || [] + // Prefer a 192px icon — typical "small enough to be cheap, large + // enough to look sharp at the dock's 54px tile + retina". + const pick = icons.find(i => (i.sizes || '').includes('192')) || + icons.find(i => (i.sizes || '').includes('512')) || + icons[0] + const out = { ...base } + // Keep base.name (the path segment under /public/apps//) as the + // visible label — two installs of the same app under different paths + // (e.g. chat vs chat-x) should read distinctly. Manifest contributes + // icon + color only. + if (m.theme_color) { out.color = m.theme_color; out.color2 = m.theme_color } + if (pick && pick.src) { + try { out.iconUrl = new URL(pick.src, base.url).toString() } catch {} + } + return out +} + +async function fetchApps() { + try { + const r = await fetch('/public/apps/', { headers: { Accept: 'application/ld+json' } }) + if (!r.ok) return [] + const doc = await r.json() + const contains = doc['ldp:contains'] || doc['http://www.w3.org/ns/ldp#contains'] || doc['contains'] || [] + const arr = Array.isArray(contains) ? contains : [contains] + const bases = arr + .map(x => typeof x === 'string' ? x : x?.['@id']) + .filter(Boolean) + .filter(u => u.endsWith('/')) + .map(url => { + const segments = url.replace(/\/$/, '').split('/') + const name = segments[segments.length - 1] + return describe(name, url) + }) + // Read each app's manifest.json in parallel for theme + icon. + const enriched = await Promise.all(bases.map(enrichWithManifest)) + return enriched.sort((a, b) => a.name.localeCompare(b.name)) + } catch { + return [] + } +} + +// Parse `app:spec` strings the way `jspod install` does. Returns +// the renamed pod-path name (what would appear under /public/apps/) +// plus the canonical gh-pages URL of the app for preview links. +function parseSpec(input) { + let base = input + let renameName = null + const eqIx = base.lastIndexOf('=') + if (eqIx > 0) { renameName = base.slice(eqIx + 1); base = base.slice(0, eqIx) } + const hashIx = base.lastIndexOf('#') + if (hashIx > 0) base = base.slice(0, hashIx) + let name, url + if (/^https?:\/\//.test(base)) { + name = base.replace(/\/$/, '').split('/').pop() + url = base.endsWith('/') ? base : base + '/' + } else if (base.includes('/')) { + const [org, ...rest] = base.split('/') + const repo = rest.join('/') + name = repo.split('/').pop() + url = `https://${org}.github.io/${repo}/` + } else { + name = base + url = `https://solid-apps.github.io/${base}/` + } + if (renameName) name = renameName + return { name, url } +} + +// Fetch the canonical "jspod" bundle as a preview when the local +// pod has no apps installed (or when home is being viewed from +// gh-pages directly with no pod to read from). +async function fetchFallbackBundle() { + const FALLBACK_URL = 'https://raw.githubusercontent.com/solid-apps/bundles/HEAD/jspod.jsonld' + try { + const r = await fetch(FALLBACK_URL) + if (!r.ok) return [] + const doc = await r.json() + const items = doc['schema:itemListElement'] || doc['itemListElement'] || [] + const bases = items + .map(item => typeof item === 'string' ? item : item?.['app:spec']) + .filter(Boolean) + .map(spec => { + const { name, url } = parseSpec(spec) + return { ...describe(name, url), preview: true } + }) + // Pull each gh-pages app's manifest too so preview tiles get the + // app's own brand instead of our hash-derived fallback. + return Promise.all(bases.map(enrichWithManifest)) + } catch { + return [] + } +} + +async function render() { + const now = new Date() + const hour = now.getHours() + const greeting = hour < 12 ? 'Good morning' : hour < 18 ? 'Good afternoon' : 'Good evening' + let apps = await fetchApps() + let preview = false + if (apps.length === 0) { + apps = await fetchFallbackBundle() + preview = apps.length > 0 + } + + const style = document.createElement('style') + style.textContent = ` + @keyframes fadeUp { + from { opacity: 0; transform: translateY(20px); } + to { opacity: 1; transform: translateY(0); } + } + + * { box-sizing: border-box; margin: 0; padding: 0; } + .h { position: fixed; inset: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; overflow-y: auto; overflow-x: hidden; -webkit-font-smoothing: antialiased; } + + /* Static gradient background — orbs baked in as radial gradients, + no transform/blur animation, no backdrop-filter, GPU at idle. */ + .h-bg { + position: fixed; inset: 0; z-index: 0; + background: + radial-gradient(circle at 25% 8%, rgba(99,102,241,0.20) 0%, transparent 38%), + radial-gradient(circle at 85% 88%, rgba(168,85,247,0.16) 0%, transparent 38%), + radial-gradient(circle at 55% 50%, rgba(59,130,246,0.10) 0%, transparent 26%), + linear-gradient(160deg, #0a0618 0%, #1a1145 30%, #2d1b69 50%, #1a1145 70%, #0a0618 100%); + } + + .h-bar { + position: sticky; top: 0; z-index: 20; height: 38px; + background: rgba(10,6,24,0.82); + display: flex; align-items: center; justify-content: space-between; padding: 0 20px; + border-bottom: 1px solid rgba(255,255,255,0.06); + } + .h-logo { font-weight: 800; font-size: 13px; color: #fff; letter-spacing: 0.04em; } + .h-bar-r { display: flex; align-items: center; gap: 14px; color: rgba(255,255,255,0.6); font-size: 12px; font-weight: 500; } + .h-dot { width: 6px; height: 6px; border-radius: 50%; background: #22c55e; display: inline-block; margin-right: 4px; box-shadow: 0 0 8px #22c55e88; } + + .h-content { + position: relative; z-index: 5; max-width: 900px; margin: 0 auto; padding: 40px 24px 80px; + animation: fadeUp 0.6s ease-out; + } + + .h-clock { text-align: center; margin-bottom: 4px; } + .h-time { + font-size: 96px; font-weight: 100; letter-spacing: -0.04em; line-height: 1; + background: linear-gradient(180deg, #fff 0%, rgba(255,255,255,0.6) 100%); + -webkit-background-clip: text; -webkit-text-fill-color: transparent; + background-clip: text; + } + .h-date { font-size: 16px; color: rgba(255,255,255,0.4); margin-top: 2px; font-weight: 400; letter-spacing: 0.02em; } + .h-greet { text-align: center; margin: 16px 0 28px; } + .h-greet h1 { font-size: 20px; font-weight: 300; color: rgba(255,255,255,0.55); } + + .h-search { display: flex; justify-content: center; margin-bottom: 32px; } + .h-search-w { position: relative; } + .h-search-w::before { content: '\u{1F50D}'; position: absolute; left: 16px; top: 50%; transform: translateY(-50%); font-size: 13px; opacity: 0.3; } + .h-sinput { + width: 420px; max-width: 85vw; padding: 13px 18px 13px 44px; + background: rgba(255,255,255,0.09); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 16px; color: #fff; font-size: 14px; font-family: inherit; outline: none; + transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); + } + .h-sinput::placeholder { color: rgba(255,255,255,0.25); } + .h-sinput:focus { + background: rgba(255,255,255,0.11); + border-color: rgba(124,58,237,0.4); + box-shadow: 0 0 0 4px rgba(124,58,237,0.1), 0 8px 32px rgba(0,0,0,0.2); + transform: scale(1.01); + } + + .h-sec { font-size: 11px; font-weight: 700; color: rgba(255,255,255,0.25); text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 16px; padding-left: 4px; } + .h-dock { + display: flex; justify-content: center; align-items: flex-end; gap: 4px; + padding: 16px 24px 14px; + background: rgba(255,255,255,0.06); + border: 1px solid rgba(255,255,255,0.06); + border-radius: 28px; + position: relative; overflow: visible; flex-wrap: wrap; + } + .h-dock::before { + content: ''; position: absolute; top: 0; left: 20%; right: 20%; height: 1px; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.12), transparent); + } + + .h-app { + display: flex; flex-direction: column; align-items: center; + padding: 8px 8px 6px; border-radius: 16px; + cursor: pointer; text-decoration: none; + transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1); + -webkit-tap-highlight-color: transparent; + } + .h-app:hover { transform: translateY(-8px); } + .h-app:active { transform: scale(0.92); } + .h-app.hidden { display: none; } + + /* Preview apps (fallback bundle, not yet installed on this pod): + subtle dim so they read as "not yours yet" without losing the + dock's liveliness. Hover restores full color. */ + .h-app-preview .h-icon { opacity: 0.7; filter: saturate(0.7); transition: opacity 0.2s, filter 0.2s; } + .h-app-preview .h-app-name { color: rgba(255,255,255,0.35); } + .h-app-preview:hover .h-icon { opacity: 1; filter: saturate(1); } + .h-app-preview:hover .h-app-name { color: rgba(255,255,255,0.9); } + .h-preview-note { + text-align: center; + font-size: 12px; + color: rgba(255,255,255,0.45); + margin: -8px 0 20px; + letter-spacing: 0.02em; + } + .h-preview-note strong { color: rgba(255,255,255,0.7); font-weight: 600; } + .h-preview-note code { + font-family: ui-monospace, "SF Mono", Menlo, monospace; + font-size: 11.5px; + background: rgba(255,255,255,0.06); + padding: 2px 8px; + border-radius: 6px; + color: rgba(255,255,255,0.75); + } + + .h-icon { + width: 54px; height: 54px; border-radius: 14px; + display: flex; align-items: center; justify-content: center; + font-size: 24px; position: relative; + transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); + box-shadow: + 0 1px 2px rgba(0,0,0,0.3), + 0 4px 8px rgba(0,0,0,0.2), + 0 10px 20px rgba(0,0,0,0.15), + inset 0 1px 0 rgba(255,255,255,0.3), + inset 0 -2px 4px rgba(0,0,0,0.1); + color: #fff; + font-weight: 700; + letter-spacing: -0.01em; + } + .h-icon::before { + content: ''; + position: absolute; top: 1px; left: 1px; right: 1px; height: 50%; + border-radius: 13px 13px 40% 40%; + background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(255,255,255,0.15) 40%, rgba(255,255,255,0) 100%); + pointer-events: none; + } + .h-icon img { + width: 100%; height: 100%; + object-fit: cover; + border-radius: 14px; + display: block; + } + .h-icon::after { + content: ''; position: absolute; inset: 0; border-radius: 14px; + border: 1px solid rgba(255,255,255,0.2); + border-bottom-color: rgba(0,0,0,0.1); + pointer-events: none; + } + .h-app:hover .h-icon { + box-shadow: + 0 2px 4px rgba(0,0,0,0.3), + 0 8px 16px rgba(0,0,0,0.2), + 0 16px 32px rgba(0,0,0,0.15), + 0 0 30px var(--glow), + inset 0 1px 0 rgba(255,255,255,0.35), + inset 0 -2px 4px rgba(0,0,0,0.1); + transform: scale(1.12); + } + + .h-app-dot { + width: 4px; height: 4px; border-radius: 50%; + background: rgba(255,255,255,0.35); + margin-top: 6px; transition: all 0.2s; + } + .h-app:hover .h-app-dot { background: #fff; box-shadow: 0 0 6px rgba(255,255,255,0.5); } + + .h-app-name { + font-size: 11px; font-weight: 500; color: rgba(255,255,255,0.5); + text-align: center; margin-top: 4px; transition: all 0.2s; + } + .h-app:hover .h-app-name { color: rgba(255,255,255,0.9); } + + .h-tip { + position: absolute; bottom: calc(100% + 10px); left: 50%; transform: translateX(-50%) translateY(4px); + background: rgba(10,6,24,0.95); + border: 1px solid rgba(255,255,255,0.1); + color: #fff; font-size: 12px; font-weight: 600; + padding: 6px 14px; border-radius: 10px; white-space: nowrap; + pointer-events: none; opacity: 0; transition: opacity 0.15s, transform 0.15s; + box-shadow: 0 8px 24px rgba(0,0,0,0.4); + } + .h-tip::after { + content: ''; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); + border: 5px solid transparent; border-top-color: rgba(10,6,24,0.9); + } + .h-app:hover .h-tip { opacity: 1; transform: translateX(-50%) translateY(0); } + + .h-empty { + text-align: center; padding: 40px 24px; + color: rgba(255,255,255,0.4); font-size: 14px; + max-width: 480px; margin: 0 auto; + } + .h-empty strong { color: #fff; font-size: 16px; display: block; margin-bottom: 8px; font-weight: 600; } + .h-empty code { + display: inline-block; margin-top: 12px; padding: 6px 12px; + background: rgba(255,255,255,0.06); border-radius: 8px; + font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 12.5px; + color: rgba(255,255,255,0.8); + } + + @media (max-width: 600px) { + .h-content { padding: 24px 16px 60px; } + .h-time { font-size: 64px; } + .h-dock { flex-wrap: wrap; justify-content: center; gap: 6px; padding: 16px; border-radius: 24px; } + .h-icon { width: 48px; height: 48px; font-size: 22px; border-radius: 13px; } + .h-app-name { opacity: 1; transform: none; font-size: 10.5px; } + .h-tip { display: none; } + } + @media (prefers-reduced-motion: reduce) { + *, *::before, *::after { + animation-duration: 0.001s !important; + animation-iteration-count: 1 !important; + transition-duration: 0.001s !important; + } + } + ` + app.appendChild(style) + + const root = document.createElement('div') + root.className = 'h' + + const bg = document.createElement('div') + bg.className = 'h-bg' + root.appendChild(bg) + + const bar = document.createElement('div') + bar.className = 'h-bar' + bar.innerHTML = '' + const barR = document.createElement('div') + barR.className = 'h-bar-r' + barR.innerHTML = '' + apps.length + (preview ? ' demos' : ' apps') + '' + const barClock = document.createElement('span') + barR.appendChild(barClock) + bar.appendChild(barR) + root.appendChild(bar) + + const content = document.createElement('div') + content.className = 'h-content' + + const clock = document.createElement('div') + clock.className = 'h-clock' + const timeEl = document.createElement('div'); timeEl.className = 'h-time'; clock.appendChild(timeEl) + const dateEl = document.createElement('div'); dateEl.className = 'h-date'; clock.appendChild(dateEl) + content.appendChild(clock) + + const tick = () => { + const now = new Date() + timeEl.textContent = now.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' }) + dateEl.textContent = now.toLocaleDateString(undefined, { weekday: 'long', month: 'long', day: 'numeric' }) + barClock.textContent = now.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' }) + } + tick(); setInterval(tick, 10000) + + const greet = document.createElement('div') + greet.className = 'h-greet' + greet.innerHTML = '

' + greeting + '

' + content.appendChild(greet) + + const search = document.createElement('div') + search.className = 'h-search' + const sw = document.createElement('div'); sw.className = 'h-search-w' + const si = document.createElement('input') + si.className = 'h-sinput' + si.placeholder = 'Search apps…' + si.type = 'text' + sw.appendChild(si); search.appendChild(sw) + content.appendChild(search) + + const sec = document.createElement('div') + sec.className = 'h-sec' + sec.textContent = preview ? 'Preview' : 'Apps' + content.appendChild(sec) + + if (preview) { + const note = document.createElement('div') + note.className = 'h-preview-note' + note.innerHTML = 'No apps installed yet. Try the live demos below, then run jspod install --bundle jspod to make them yours.' + content.appendChild(note) + } + + if (apps.length === 0) { + const empty = document.createElement('div') + empty.className = 'h-empty' + empty.innerHTML = 'No apps installed yet.' + + 'Drop apps into /public/apps/ on this pod and they\'ll appear here.' + + '
jspod install --bundle teams' + content.appendChild(empty) + } else { + const dock = document.createElement('div') + dock.className = 'h-dock' + for (const a of apps) { + const el = document.createElement('a') + el.className = 'h-app' + (preview ? ' h-app-preview' : '') + el.href = a.url + if (preview) { + el.target = '_blank' + el.rel = 'noopener noreferrer' + } + el.dataset.name = a.name.toLowerCase() + + const icon = document.createElement('div') + icon.className = 'h-icon' + icon.style.setProperty('--glow', a.color + '44') + if (a.iconUrl) { + // App declared its own icon via manifest.json — use it directly. + const img = document.createElement('img') + img.src = a.iconUrl + img.alt = '' + img.loading = 'lazy' + icon.appendChild(img) + icon.style.background = a.color + } else { + icon.style.background = 'linear-gradient(145deg, ' + a.color2 + ', ' + a.color + ')' + icon.textContent = a.glyph + } + el.appendChild(icon) + + const dot = document.createElement('div'); dot.className = 'h-app-dot'; el.appendChild(dot) + const name = document.createElement('div'); name.className = 'h-app-name'; name.textContent = a.name; el.appendChild(name) + const tip = document.createElement('div'); tip.className = 'h-tip'; tip.textContent = a.name + (preview ? ' (demo)' : ''); el.appendChild(tip) + + dock.appendChild(el) + } + content.appendChild(dock) + + // macOS-style magnification on hover + dock.addEventListener('mousemove', (e) => { + const mouseX = e.clientX + for (const a of dock.querySelectorAll('.h-app')) { + const rect = a.getBoundingClientRect() + const center = rect.left + rect.width / 2 + const dist = Math.abs(mouseX - center) + const maxDist = 120 + if (dist < maxDist) { + const scale = 1 + 0.2 * (1 - dist / maxDist) + const lift = -6 * (1 - dist / maxDist) + a.style.transform = 'translateY(' + lift + 'px) scale(' + scale + ')' + } else { + a.style.transform = '' + } + } + }) + dock.addEventListener('mouseleave', () => { + for (const a of dock.querySelectorAll('.h-app')) a.style.transform = '' + }) + + si.addEventListener('input', () => { + const q = si.value.toLowerCase().trim() + for (const el of dock.querySelectorAll('.h-app')) { + const match = !q || el.dataset.name.includes(q) + el.classList.toggle('hidden', !match) + } + }) + } + + root.appendChild(content) + app.appendChild(root) +} + +render() diff --git a/apps/home/icon-192.png b/apps/home/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..4e24d97f743c59ecfe4d0e120223d325cc4c9b2b GIT binary patch literal 17499 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

O6tM!mMX*d43k1eki|p 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[K`K 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 + + + + +home — launcher for your Solid pod + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + diff --git a/apps/home/manifest.json b/apps/home/manifest.json new file mode 100644 index 0000000..d75fcf9 --- /dev/null +++ b/apps/home/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "home", + "short_name": "home", + "description": "Launcher for every Solid app on your pod", + "start_url": "./", + "scope": "./", + "display": "standalone", + "background_color": "#7c4dff", + "theme_color": "#7c4dff", + "icons": [ + { "src": "icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" }, + { "src": "icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" } + ] +} diff --git a/apps/home/og.png b/apps/home/og.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c5d82db0489d1874a0c53a74d6f32866faa5e8 GIT binary patch literal 110419 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 z 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 (window.solid?.session?.fetch || window.fetch)(...args), +} + +// ---------- Boot ---------- + +async function boot() { + const app = document.getElementById('app') + + ctx.editable = await detectOwner() + + let card + try { + const r = await ctx.fetch(CARD_URL, { credentials: 'include' }) + if (r.ok) card = await r.json() + } catch {} + + if (!card) { + app.classList.remove('loading') + if (ctx.editable) openWizard() + else renderEmpty() + return + } + + ctx.card = card + app.classList.remove('loading') + + // JSS auto-seeds card.jsonld with just foaf:name="me" on first boot. + // If we land on that stub and the owner is signed in, jump straight to + // the wizard — saves them hunting for click-to-edit affordances on an + // otherwise empty page. + if (ctx.editable && isStubCard(card)) { + openWizard() + return + } + + render() + renderAgentView() + loadInstalledApps() +} + +function isStubCard(c) { + if (!c) return true + const meaningful = [ + 'schema:description', 'description', + 'schema:alternateName', 'alternateName', + 'foaf:img', 'schema:image', 'image', + 'schema:url', 'url', + 'soul:values', 'soul:hardLimits', 'soul:commsStyle', 'soul:memoryPolicy', + ] + return !meaningful.some(k => c[k]) +} + +// ---------- Auth detection ---------- + +async function detectOwner() { + try { + const r = await ctx.fetch(`${POD}/profile/`, { + method: 'HEAD', + credentials: 'include', + }) + const wacAllow = r.headers.get('WAC-Allow') || '' + // WAC-Allow: user="read write append control" + return /user="[^"]*\bwrite\b/.test(wacAllow) + } catch { + return false + } +} + +// ---------- Render: human view ---------- + +function render() { + const c = ctx.card + setField('foaf:name', c['foaf:name'] || c.name) + setField('schema:alternateName', c['schema:alternateName'] || c.alternateName) + setField('schema:description', c['schema:description'] || c.description) + + // Avatar: only attempt to load if an explicit image URL is in the card. + // Otherwise show a clean initials circle — no 404 noise, looks intentional. + const img = c['foaf:img'] || c.image || c['schema:image'] + const avatarEl = document.getElementById('avatar') + const fallbackEl = document.getElementById('avatarFallback') + if (img) { + avatarEl.src = img + avatarEl.hidden = false + fallbackEl.style.display = 'none' + avatarEl.onerror = function () { + this.hidden = true + fallbackEl.style.display = '' + } + } else { + avatarEl.hidden = true + fallbackEl.style.display = '' + } + fallbackEl.textContent = initial(c['foaf:name'] || c.name) + + renderLinks(c['schema:url'] || c.url || []) + + if (ctx.editable) { + document.querySelectorAll('[data-field]').forEach(el => { + el.setAttribute('contenteditable', 'true') + el.addEventListener('blur', onFieldBlur) + }) + document.getElementById('addLink').hidden = false + document.getElementById('addLink').addEventListener('click', onAddLink) + document.getElementById('avatar').classList.add('editable') + document.getElementById('avatarFallback').classList.add('editable') + document.getElementById('avatar').addEventListener('click', triggerAvatarUpload) + document.getElementById('avatarFallback').addEventListener('click', triggerAvatarUpload) + document.getElementById('cover').classList.add('editable') + + // First-time edit hint — fades on first interaction, persists per pod. + if (!localStorage.getItem('profile:edit-hint-seen')) { + const hint = document.getElementById('editHint') + hint.hidden = false + const dismiss = () => { + hint.classList.add('fade-out') + localStorage.setItem('profile:edit-hint-seen', '1') + } + document.querySelectorAll('[data-field]').forEach(el => { + el.addEventListener('focus', dismiss, { once: true }) + }) + } + } +} + +function initial(name) { + if (!name) return '·' + const ch = name.trim().charAt(0) + return ch ? ch.toUpperCase() : '·' +} + +function setField(field, value) { + const el = document.querySelector(`[data-field="${field}"]`) + if (!el) return + el.textContent = value || '' + if (!value) el.classList.add('empty') + else el.classList.remove('empty') +} + +function renderLinks(urls) { + const list = document.getElementById('linkList') + list.innerHTML = '' + const arr = Array.isArray(urls) ? urls : (urls ? [urls] : []) + for (const url of arr) { + const li = document.createElement('li') + const a = document.createElement('a') + a.href = url + a.textContent = shortLink(url) + a.target = '_blank' + a.rel = 'noopener' + li.appendChild(a) + if (ctx.editable) { + const rm = document.createElement('button') + rm.className = 'remove-link' + rm.textContent = '×' + rm.title = 'Remove' + rm.addEventListener('click', () => removeLink(url)) + li.appendChild(rm) + } + list.appendChild(li) + } +} + +function shortLink(url) { + try { + const u = new URL(url) + if (u.protocol === 'nostr:') return 'nostr:' + u.pathname.slice(0, 16) + '…' + return u.hostname.replace(/^www\./, '') + (u.pathname === '/' ? '' : u.pathname) + } catch { + return url + } +} + +function renderEmpty() { + document.querySelector('.human-view').hidden = true + const empty = document.getElementById('emptyState') + empty.hidden = false + + // Tailor the message + button based on whether we're inside a pod + // (same-origin sign-in works) vs. served standalone from a static host + // (e.g. solid-apps.github.io — user needs to pick a pod via xlogin). + const onPod = isLikelyPod() + const sub = document.getElementById('emptySub') + const btn = document.getElementById('signInBtn') + + if (onPod) { + sub.textContent = 'Sign in as the pod owner to create one.' + btn.textContent = 'Sign in' + btn.addEventListener('click', () => { + const returnTo = encodeURIComponent(location.pathname + location.search) + location.href = `${POD}/signin?returnTo=${returnTo}` + }, { once: true }) + } else { + sub.textContent = 'This is the standalone view. Connect your pod to load (or create) your profile.' + btn.textContent = 'Connect your pod' + btn.addEventListener('click', () => { + document.querySelector('.xl-btn')?.click() + }, { once: true }) + } +} + +function isLikelyPod() { + // Heuristic: a JSS pod responds at /idp/ (the OIDC issuer) with 200/302. + // We can't do that synchronously here — instead use a coarse proxy: if + // location.host looks like a github.io / netlify / vercel / pages.dev + // domain, treat as standalone; otherwise assume pod. Refined in v0.1 + // with an actual /idp/ probe at boot. + const h = location.host + return !/\.(github|netlify|vercel|pages)\.(io|app|dev)$/i.test(h) +} + +// ---------- Editing ---------- + +function onFieldBlur(e) { + const el = e.currentTarget + const field = el.getAttribute('data-field') + const value = el.textContent.trim() + if (ctx.card[field] === value) return + ctx.card[field] = value || undefined + scheduleSave() +} + +function onAddLink() { + const url = prompt('Link URL?') + if (!url) return + const list = ctx.card['schema:url'] + const arr = Array.isArray(list) ? list : (list ? [list] : []) + if (arr.includes(url)) return + arr.push(url) + ctx.card['schema:url'] = arr + renderLinks(arr) + scheduleSave() +} + +function removeLink(url) { + const list = ctx.card['schema:url'] + const arr = Array.isArray(list) ? list : (list ? [list] : []) + ctx.card['schema:url'] = arr.filter(u => u !== url) + renderLinks(ctx.card['schema:url']) + scheduleSave() +} + +function triggerAvatarUpload() { + const input = document.createElement('input') + input.type = 'file' + input.accept = 'image/*' + input.onchange = async () => { + const file = input.files[0] + if (!file) return + await uploadAvatar(file) + } + input.click() +} + +async function uploadAvatar(file) { + try { + const r = await fetch(AVATAR_URL, { + method: 'PUT', + headers: { 'Content-Type': file.type || 'image/png' }, + credentials: 'include', + body: file, + }) + if (!r.ok) throw new Error(`HTTP ${r.status}`) + ctx.card['foaf:img'] = '/profile/avatar.png' + document.getElementById('avatar').src = AVATAR_URL + '?t=' + Date.now() + toast('avatar updated') + scheduleSave() + } catch (e) { + toast('avatar upload failed: ' + e.message, true) + } +} + +let saveTimer = null +function scheduleSave() { + ctx.dirty = true + clearTimeout(saveTimer) + saveTimer = setTimeout(save, 700) +} + +async function save() { + if (!ctx.dirty) return + ctx.dirty = false + try { + const r = await fetch(CARD_URL, { + method: 'PUT', + headers: { 'Content-Type': 'application/ld+json' }, + credentials: 'include', + body: JSON.stringify(ctx.card, null, 2), + }) + if (!r.ok) throw new Error(`HTTP ${r.status}`) + const md = renderSoulMd(ctx.card) + await fetch(SOUL_URL, { + method: 'PUT', + headers: { 'Content-Type': 'text/markdown' }, + credentials: 'include', + body: md, + }).catch(() => {}) + document.getElementById('soulPreview').textContent = md + toast('saved') + } catch (e) { + toast('save failed: ' + e.message, true) + ctx.dirty = true + } +} + +// ---------- Render: agent view (SOUL.md) ---------- + +function renderAgentView() { + const md = renderSoulMd(ctx.card) + document.getElementById('soulPreview').textContent = md + document.getElementById('soulUrl').textContent = new URL(SOUL_URL).pathname +} + +function renderSoulMd(card) { + const name = card['foaf:name'] || card.name || 'Anonymous' + const handle = card['schema:alternateName'] || card.alternateName + const status = card['schema:description'] || card.description + const values = toArray(card['soul:values']) + const comms = card['soul:commsStyle'] + const limits = toArray(card['soul:hardLimits']) + const memory = card['soul:memoryPolicy'] + const urls = toArray(card['schema:url'] || card.url) + + const lines = [] + lines.push(`# SOUL.md — ${name}`) + lines.push('') + lines.push('## Identity') + lines.push(`${name}${handle ? ` (${handle})` : ''}.${status ? ' ' + status : ''}`) + lines.push('') + + if (values.length) { + lines.push('## Values') + for (const v of values) lines.push(`- ${v}`) + lines.push('') + } + + if (comms) { + lines.push('## Communication Style') + if (typeof comms === 'string') lines.push(comms) + else for (const [k, v] of Object.entries(comms)) lines.push(`- ${k}: ${v}`) + lines.push('') + } + + if (limits.length) { + lines.push('## Hard Limits') + for (const l of limits) lines.push(`- ${l}`) + lines.push('') + } + + if (memory) { + lines.push('## Memory Policy') + lines.push(memory) + lines.push('') + } + + if (urls.length) { + lines.push('## Find me at') + for (const u of urls) lines.push(`- ${u}`) + lines.push('') + } + + lines.push(`*Generated from <${CARD_URL}>. Edit via the profile app, not this file.*`) + return lines.join('\n') +} + +function toArray(x) { + if (x == null) return [] + return Array.isArray(x) ? x : [x] +} + +// ---------- Apps installed on this pod ---------- + +async function loadInstalledApps() { + try { + const r = await fetch(APPS_CONTAINER, { + headers: { Accept: 'application/ld+json' }, + credentials: 'include', + }) + if (!r.ok) return + const j = await r.json() + const contains = j['@graph']?.[0]?.['ldp:contains'] || j['ldp:contains'] || [] + const arr = Array.isArray(contains) ? contains : [contains] + const list = document.getElementById('appList') + list.innerHTML = '' + for (const item of arr) { + const url = typeof item === 'string' ? item : item['@id'] + if (!url) continue + const name = url.replace(/\/$/, '').split('/').pop() + const li = document.createElement('li') + const a = document.createElement('a') + a.href = url + a.textContent = name + li.appendChild(a) + list.appendChild(li) + } + } catch {} +} + +// ---------- View toggle ---------- + +document.getElementById('viewToggle').addEventListener('click', () => { + const body = document.body + body.dataset.view = body.dataset.view === 'human' ? 'agent' : 'human' +}) + +document.getElementById('copyLink').addEventListener('click', (e) => { + e.preventDefault() + navigator.clipboard.writeText(`${POD}/profile/`).then(() => toast('link copied')) +}) + +// ---------- Wizard ---------- + +function openWizard() { + const wiz = document.getElementById('wizard') + wiz.showModal() + document.getElementById('wizardForm').addEventListener('submit', onWizardSubmit, { once: true }) +} + +async function onWizardSubmit(e) { + e.preventDefault() + const form = new FormData(e.currentTarget) + const name = (form.get('name') || '').toString().trim() + const status = (form.get('status') || '').toString().trim() + const photo = form.get('photo') + + const card = { + '@context': { + schema: 'https://schema.org/', + foaf: 'http://xmlns.com/foaf/0.1/', + soul: 'urn:soul:', + }, + '@id': '#me', + '@type': ['schema:Person', 'foaf:Person'], + 'foaf:name': name, + 'schema:description': status || undefined, + } + + if (photo && photo.size > 0) { + try { + await fetch(AVATAR_URL, { + method: 'PUT', + headers: { 'Content-Type': photo.type || 'image/png' }, + credentials: 'include', + body: photo, + }) + card['foaf:img'] = '/profile/avatar.png' + } catch {} + } + + ctx.card = card + document.getElementById('wizard').close() + await save() + document.getElementById('app').classList.remove('loading') + render() + renderAgentView() + loadInstalledApps() +} + +// ---------- Toast ---------- + +function toast(msg, isError = false) { + const t = document.getElementById('toast') + t.textContent = msg + t.classList.toggle('error', isError) + t.classList.add('show') + clearTimeout(toast._timer) + toast._timer = setTimeout(() => t.classList.remove('show'), 1800) +} + +// ---------- Go ---------- + +boot().catch((e) => { + console.error(e) + toast('profile failed to load: ' + e.message, true) +}) diff --git a/apps/profile/favicon.svg b/apps/profile/favicon.svg new file mode 100644 index 0000000..52a64ff --- /dev/null +++ b/apps/profile/favicon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/profile/icon-192.png b/apps/profile/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..2d68070139897732cb943c58c9249288471f3f9a GIT binary patch literal 10597 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%0AsY}WisFER*E`$VD`k#HB47jVo06D-`S*yOdR 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 literal 0 HcmV?d00001 diff --git a/apps/profile/index.html b/apps/profile/index.html new file mode 100644 index 0000000..53c85ca --- /dev/null +++ b/apps/profile/index.html @@ -0,0 +1,114 @@ + + + + + +Profile + + + + + + + + + +
+
profile
+
+ + +
+
+ +
+ + +
+ + +
+
+ + +
+

+

+

+ +
+ + + +
+

On this pod

+
    +
    + + +
    + + + + + +
    +

    + This is the markdown an AI agent sees when it visits + /profile/SOUL.md. It's regenerated from your profile on save. +

    +
    
    +  
    + +
    + + + +
    +

    Let's make your profile

    +

    Three questions. Takes 30 seconds. You can edit anything later.

    + + + + + + + +
    + +
    +
    +
    + + +
    + + + + + diff --git a/apps/profile/manifest.json b/apps/profile/manifest.json new file mode 100644 index 0000000..fe56458 --- /dev/null +++ b/apps/profile/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Profile", + "short_name": "Profile", + "description": "Your profile — human-friendly page, agent-friendly SOUL.md, one source of truth.", + "start_url": "./", + "scope": "./", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#ffffff", + "icons": [ + { "src": "icon-192.png", "sizes": "192x192", "type": "image/png" }, + { "src": "icon-512.png", "sizes": "512x512", "type": "image/png" } + ] +} diff --git a/apps/profile/style.css b/apps/profile/style.css new file mode 100644 index 0000000..e23d844 --- /dev/null +++ b/apps/profile/style.css @@ -0,0 +1,414 @@ +/* profile — VK/Bluesky-shaped profile page, light theme. */ + +:root { + --bg: #ffffff; + --surface: #f7f8fa; + --surface-2: #edf0f5; + --border: #e4e7ee; + --text: #1a1d24; + --muted: #5b6477; + --dim: #8a90a0; + --accent: #5476d7; + --accent-2: #8b5cf6; + --danger: #dc2626; + --ok: #059669; + --shadow: 0 4px 14px rgba(20, 30, 50, 0.08); +} + +* { box-sizing: border-box; } +html, body { margin: 0; padding: 0; } +body { + background: var(--bg); + color: var(--text); + font: 15px/1.55 -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif; + min-height: 100dvh; +} + +a { color: var(--accent); text-decoration: none; } +a:hover { text-decoration: underline; } +button { font: inherit; cursor: pointer; } + +/* ---------- topbar ---------- */ +.topbar { + position: sticky; + top: 0; + z-index: 10; + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 20px; + background: rgba(255,255,255,0.85); + backdrop-filter: blur(8px); + border-bottom: 1px solid var(--border); +} +.brand { + font-weight: 700; + letter-spacing: 0.5px; + color: var(--muted); + text-transform: lowercase; +} +.actions { + display: flex; + align-items: center; + gap: 10px; +} +.view-toggle { + background: var(--surface); + color: var(--text); + border: 1px solid var(--border); + border-radius: 999px; + padding: 6px 12px; + font-size: 13px; +} +.view-toggle:hover { border-color: var(--accent); color: var(--accent); } +.view-toggle [data-view-label="agent"] { display: none; } +body[data-view="agent"] .view-toggle [data-view-label="human"] { display: none; } +body[data-view="agent"] .view-toggle [data-view-label="agent"] { display: inline; } + +.copy-link { + font-size: 16px; + width: 32px; height: 32px; + display: grid; + place-items: center; + border-radius: 50%; + background: var(--surface); + border: 1px solid var(--border); + color: var(--text); +} +.copy-link:hover { border-color: var(--accent); color: var(--accent); text-decoration: none; } + +/* ---------- main ---------- */ +.app { + max-width: 720px; + margin: 0 auto; + padding-bottom: 60px; +} +.app.loading::after { + content: 'loading…'; + display: block; + padding: 60px 20px; + text-align: center; + color: var(--muted); +} + +/* ---------- views ---------- */ +body[data-view="human"] .agent-view { display: none; } +body[data-view="agent"] .human-view { display: none; } +.app.loading .human-view, .app.loading .agent-view { display: none; } + +/* ---------- cover + identity ---------- */ +.cover { + height: 180px; + background: + radial-gradient(circle at 20% 40%, rgba(84,118,215,0.18), transparent 55%), + radial-gradient(circle at 80% 60%, rgba(139,92,246,0.16), transparent 55%), + linear-gradient(135deg, #eef2ff, #f7f8fa); + border-bottom: 1px solid var(--border); +} +.cover.editable { cursor: pointer; } + +.identity { + position: relative; + padding: 0 20px; + margin-top: -60px; + text-align: left; +} +.avatar-wrap { + width: 120px; + height: 120px; + position: relative; +} +.avatar, .avatar-fallback { + width: 120px; + height: 120px; + border-radius: 50%; + border: 4px solid var(--bg); + background: var(--surface-2); + object-fit: cover; + box-shadow: var(--shadow); + position: absolute; + inset: 0; +} +.avatar { display: block; } +.avatar-fallback { + display: grid; + place-items: center; + font-size: 56px; + font-weight: 600; + color: var(--muted); + background: linear-gradient(135deg, #eef2ff, #f7f8fa); + user-select: none; +} +.avatar[hidden], .avatar-fallback[hidden] { display: none; } +.avatar.editable, .avatar-fallback.editable { + cursor: pointer; + transition: transform 0.15s; +} +.avatar.editable:hover, .avatar-fallback.editable:hover { transform: scale(1.02); } + +.edit-hint { + font-size: 12px; + color: var(--dim); + margin: 12px 0 0; + font-style: italic; + transition: opacity 0.6s; +} +.edit-hint.fade-out { opacity: 0; } + +.name { + font-size: 28px; + font-weight: 700; + margin: 12px 0 2px; + line-height: 1.2; + outline: none; + border-radius: 4px; +} +.handle { + color: var(--muted); + font-size: 15px; + margin: 0 0 14px; + outline: none; + border-radius: 4px; +} +.status { + font-size: 16px; + color: var(--text); + margin: 0; + outline: none; + border-radius: 4px; + min-height: 1.5em; +} + +[data-field][contenteditable="true"]:focus { + background: var(--surface); + outline: 1px solid var(--accent); + outline-offset: 2px; +} +[data-field].empty::before { + content: attr(data-placeholder); + color: var(--dim); + font-style: italic; +} + +/* ---------- sections ---------- */ +section.links, section.apps, section.recent { + padding: 28px 20px 0; +} +section h2 { + font-size: 12px; + font-weight: 700; + letter-spacing: 1.2px; + text-transform: uppercase; + color: var(--dim); + margin: 0 0 14px; +} + +/* ---------- links ---------- */ +.link-list { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-wrap: wrap; + gap: 8px; +} +.link-list li { + display: inline-flex; + align-items: center; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 999px; + padding: 4px 4px 4px 14px; + gap: 8px; + font-size: 14px; +} +.link-list a { color: var(--text); } +.remove-link { + background: transparent; + border: none; + color: var(--dim); + width: 24px; height: 24px; + border-radius: 50%; + padding: 0; + font-size: 16px; + line-height: 1; +} +.remove-link:hover { color: var(--danger); background: var(--surface-2); } + +.add-link { + margin-top: 12px; + background: transparent; + color: var(--accent); + border: 1px dashed var(--border); + border-radius: 10px; + padding: 8px 14px; + font-size: 13px; +} +.add-link:hover { border-color: var(--accent); background: var(--surface); } + +/* ---------- apps ---------- */ +.app-list { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-wrap: wrap; + gap: 6px; +} +.app-list li a { + display: inline-block; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 8px; + padding: 6px 12px; + font-size: 13px; + color: var(--muted); +} +.app-list li a:hover { color: var(--accent); border-color: var(--accent); text-decoration: none; } + +/* ---------- agent view ---------- */ +.agent-view { + padding: 28px 20px; +} +.agent-lede { + color: var(--muted); + font-size: 14px; + margin: 0 0 16px; +} +.agent-lede code { + background: var(--surface); + border: 1px solid var(--border); + padding: 1px 6px; + border-radius: 4px; + font-size: 13px; +} +.soul { + background: var(--surface); + border: 1px solid var(--border); + border-radius: 10px; + padding: 16px 20px; + font-family: 'SF Mono', Menlo, Consolas, monospace; + font-size: 13px; + line-height: 1.65; + color: var(--text); + white-space: pre-wrap; + overflow-x: auto; +} + +/* ---------- empty state ---------- */ +.empty-state { + max-width: 420px; + margin: 60px auto 0; + padding: 0 20px; + text-align: center; +} +.empty-avatar { + width: 96px; + height: 96px; + border-radius: 50%; + background: linear-gradient(135deg, var(--surface), var(--surface-2)); + border: 1px solid var(--border); + margin: 0 auto 20px; +} +.empty-title { + font-size: 22px; + font-weight: 700; + margin: 0 0 6px; +} +.empty-sub { + color: var(--muted); + font-size: 14px; + margin: 0 0 22px; +} +.empty-state .primary { + background: var(--accent); + color: #fff; + border: none; + border-radius: 10px; + padding: 12px 22px; + font-size: 15px; + font-weight: 600; +} +.empty-state .primary:hover { filter: brightness(1.05); } + +/* ---------- wizard ---------- */ +.wizard { + background: var(--bg); + color: var(--text); + border: 1px solid var(--border); + border-radius: 14px; + max-width: 440px; + width: 92vw; + padding: 28px; + box-shadow: 0 20px 60px rgba(20,30,50,0.15); +} +.wizard::backdrop { + background: rgba(20,30,50,0.35); + backdrop-filter: blur(4px); +} +.wizard h2 { margin: 0 0 6px; font-size: 22px; } +.wizard-sub { color: var(--muted); margin: 0 0 22px; font-size: 14px; } +.wizard label { + display: block; + margin-bottom: 18px; +} +.wizard label span:first-child { + display: block; + font-size: 12px; + color: var(--muted); + margin-bottom: 6px; + text-transform: uppercase; + letter-spacing: 0.6px; +} +.wizard input { + width: 100%; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 8px; + padding: 10px 12px; + color: var(--text); + font: inherit; +} +.wizard input:focus { outline: none; border-color: var(--accent); background: var(--bg); } +.photo-hint { display: block; font-size: 12px; color: var(--dim); margin-top: 4px; } +.wizard-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; } +.wizard .primary { + background: var(--accent); + color: #fff; + border: none; + border-radius: 8px; + padding: 10px 18px; + font-weight: 600; +} +.wizard .primary:hover { filter: brightness(1.05); } + +/* ---------- toast ---------- */ +.toast { + position: fixed; + bottom: 20px; + left: 50%; + transform: translateX(-50%) translateY(20px); + background: var(--text); + border: 1px solid var(--text); + color: var(--bg); + padding: 10px 18px; + border-radius: 999px; + font-size: 13px; + box-shadow: 0 6px 20px rgba(20,30,50,0.2); + opacity: 0; + transition: opacity 0.18s, transform 0.18s; + pointer-events: none; +} +.toast.show { + opacity: 1; + transform: translateX(-50%) translateY(0); +} +.toast.error { background: var(--danger); border-color: var(--danger); color: #fff; } + +/* ---------- mobile ---------- */ +@media (max-width: 520px) { + .topbar { padding: 10px 14px; } + .identity { padding: 0 14px; } + .name { font-size: 24px; } + section.links, section.apps, section.recent { padding-left: 14px; padding-right: 14px; } +} diff --git a/apps/profile/xlogin.js b/apps/profile/xlogin.js new file mode 100644 index 0000000..24c5195 --- /dev/null +++ b/apps/profile/xlogin.js @@ -0,0 +1,737 @@ +/** + * xlogin.js - Universal login widget for Nostr and Solid + * + * A single-script login button (bottom-right) with a tabbed modal dialog + * supporting both Nostr (NIP-07) and Solid (OIDC) authentication. + * + * Usage: + * + * Data attributes: + * data-idp="https://solidcommunity.net" — default Solid identity provider + * data-guest="<64-char-hex>" — enable Nostr guest key + * + * After login: + * window.xlogin.type — "nostr" or "solid" + * window.xlogin.id — pubkey (nostr) or webId (solid) + * window.nostr — NIP-07 API (when logged in via Nostr) + * window.solid.session — solid-oidc Session (when logged in via Solid) + * + * Events on document: + * "xlogin" → detail: { type, id } + * "xlogout" → detail: { type: "logout" } + * + * @license AGPL-3.0-or-later + * @author Melvin Carvalho + */ +(function () { + 'use strict' + if (window.__xloginLoaded) return + window.__xloginLoaded = true + + // --- Config --- + var _script = document.currentScript + var _defaultIdp = (_script && _script.dataset.idp) || '' + var _guestKey = _script && _script.dataset.guest + if (_guestKey && !/^[0-9a-f]{64}$/.test(_guestKey)) _guestKey = null + + // --- State --- + var _type = null // "nostr" or "solid" + var _id = null + var _ui = null + + // Nostr state + var _ext = null // captured browser extension + var _nostrProvider = null + var _nostrPrivKey = null + var _nostrPubKey = null + var _secp = null + var _keyResolvers = [] + + // Solid state + var _solidSession = null + + // --- Capture existing NIP-07 extension --- + _ext = window.nostr || null + + // --- Dynamic imports --- + var _secpReady = import('https://esm.sh/@noble/secp256k1@1.7.1').then(async function (mod) { + _secp = mod + // @noble/secp256k1@1.7.x's async sha256 always reaches into + // `crypto.subtle.digest`, which is undefined on non-secure + // contexts (plain-HTTP LAN/IP). Install a sync sha256 backed by + // @noble/hashes and route signing through `schnorr.signSync` so + // the async path (and crypto.subtle dependency) is never taken. + // See #10 for the call chain that surfaced this. + await loadHashesOnce() + _secp.utils.sha256Sync = function (...messages) { + var total = 0 + for (var i = 0; i < messages.length; i++) total += messages[i].length + var buf = new Uint8Array(total) + var off = 0 + for (var j = 0; j < messages.length; j++) { + buf.set(messages[j], off) + off += messages[j].length + } + return _nobleSha256(buf) + } + }) + + var _SolidSession = null + var _solidReady = import('https://esm.sh/solid-oidc@0.0.8').then(function (mod) { + _SolidSession = mod.Session || mod.default + }) + + var _nip98AuthFetch = null + var _nip98Ready = import('https://esm.sh/nip98').then(function (mod) { + _nip98AuthFetch = mod.authFetch + }) + + // Pure-JS SHA-256 fallback for non-secure contexts (plain-HTTP LAN/IP), + // where window.crypto.subtle is undefined (#8). Loaded only when needed. + var _nobleSha256 = null + var _hashesReady = null + function loadHashesOnce() { + if (!_hashesReady) { + _hashesReady = import('https://esm.sh/@noble/hashes@1.4.0/sha256').then(function (mod) { + // Validate the import resolved to the shape we expect — if esm.sh + // ever changes how it re-exports @noble/hashes/sha256 we want a + // clear error from this Promise rejection rather than the opaque + // `TypeError: _nobleSha256 is not a function` later in sha256(). + if (typeof mod.sha256 !== 'function') { + throw new Error('xlogin: @noble/hashes/sha256 import did not expose a `sha256` function (export shape changed)') + } + _nobleSha256 = mod.sha256 + }) + } + return _hashesReady + } + + // --- localStorage (Nostr accounts, compatible with nip07/Jumble) --- + function loadAccounts() { + try { return JSON.parse(localStorage.getItem('accounts')) || [] } catch (e) { return [] } + } + function saveAccounts(accounts) { localStorage.setItem('accounts', JSON.stringify(accounts)) } + function loadCurrentAccount() { + try { return JSON.parse(localStorage.getItem('currentAccount')) } catch (e) { return null } + } + function saveCurrentAccount(account) { + if (account) localStorage.setItem('currentAccount', JSON.stringify(account)) + else localStorage.removeItem('currentAccount') + } + + // --- Hex utilities --- + function hexToBytes(hex) { + if (_secp) return _secp.utils.hexToBytes(hex) + var b = new Uint8Array(hex.length / 2) + for (var i = 0; i < hex.length; i += 2) b[i / 2] = parseInt(hex.substr(i, 2), 16) + return b + } + function bytesToHex(bytes) { + if (_secp) return _secp.utils.bytesToHex(bytes) + return Array.from(bytes, function (b) { return b.toString(16).padStart(2, '0') }).join('') + } + async function sha256(msg) { + // crypto.subtle is exposed only in secure contexts (HTTPS or + // localhost). On plain-HTTP LAN/IP origins (e.g. + // http://192.168.0.10:4443/) it is undefined, which would throw + // "Cannot read properties of undefined (reading 'digest')". Fall + // back to a pure-JS SHA-256 there. See #8. + if (globalThis.crypto && globalThis.crypto.subtle) { + return new Uint8Array(await crypto.subtle.digest('SHA-256', msg)) + } + await loadHashesOnce() + return _nobleSha256(msg) + } + + // --- NIP-01 --- + async function computeEventId(ev) { + var ser = JSON.stringify([0, ev.pubkey, ev.created_at, ev.kind, ev.tags, ev.content]) + return bytesToHex(await sha256(new TextEncoder().encode(ser))) + } + async function nostrSignEvent(event) { + // _secpReady installs `_secp.utils.sha256Sync`; signSync then + // never touches `crypto.subtle` and works on non-secure contexts + // (#10). Awaiting _secpReady guarantees the sync hash is set + // before signSync runs. + await _secpReady + var ev = Object.assign({}, event, { pubkey: _nostrPubKey }) + ev.id = await computeEventId(ev) + var sig = _secp.schnorr.signSync(ev.id, _nostrPrivKey) + ev.sig = bytesToHex(sig) + return ev + } + + // --- NIP-04 --- + async function getSharedSecret(theirPubkey) { + await _secpReady + var shared = _secp.getSharedSecret(_nostrPrivKey, '02' + theirPubkey) + return shared.slice(1, 33) + } + async function nip04Encrypt(pubkey, plaintext) { + var secret = await getSharedSecret(pubkey) + var key = await crypto.subtle.importKey('raw', secret, { name: 'AES-CBC' }, false, ['encrypt']) + var iv = crypto.getRandomValues(new Uint8Array(16)) + var cipher = await crypto.subtle.encrypt({ name: 'AES-CBC', iv: iv }, key, new TextEncoder().encode(plaintext)) + return btoa(String.fromCharCode.apply(null, new Uint8Array(cipher))) + '?iv=' + btoa(String.fromCharCode.apply(null, iv)) + } + async function nip04Decrypt(pubkey, ciphertext) { + var parts = ciphertext.split('?iv=') + var secret = await getSharedSecret(pubkey) + var key = await crypto.subtle.importKey('raw', secret, { name: 'AES-CBC' }, false, ['decrypt']) + var iv = Uint8Array.from(atob(parts[1]), function (c) { return c.charCodeAt(0) }) + var cipher = Uint8Array.from(atob(parts[0]), function (c) { return c.charCodeAt(0) }) + var plain = await crypto.subtle.decrypt({ name: 'AES-CBC', iv: iv }, key, cipher) + return new TextDecoder().decode(plain) + } + + // --- Display helpers --- + function shortNostr(pubkey) { + return pubkey.slice(0, 8) + '\u2026' + pubkey.slice(-4) + } + function shortSolid(uri) { + if (!uri) return '' + try { + var u = new URL(uri) + // Just the subdomain, with a trailing dot to read as one: + // "nostr." for nostr.solid.social, "alice." for alice.example.com. + return u.hostname.split('.')[0] + '.' + } catch (e) { + return uri + } + } + + // --- Unified login success --- + function onLogin(type, id, btn) { + _type = type + _id = id + if (btn) { + btn.textContent = type === 'nostr' ? shortNostr(id) : shortSolid(id) + btn.title = id + } + window.xlogin = window.xlogin || {} + window.xlogin.type = type + window.xlogin.id = id + document.dispatchEvent(new CustomEvent('xlogin', { detail: { type: type, id: id } })) + } + + // --- Unified logout --- + function onLogout(btn) { + if (_type === 'nostr') { + _nostrProvider = null + _nostrPrivKey = null + _nostrPubKey = null + saveCurrentAccount(null) + } else if (_type === 'solid') { + if (_solidSession) _solidSession.logout() + _solidSession = null + window.solid = window.solid || {} + window.solid.session = null + window.solid.webId = null + } + _type = null + _id = null + if (btn) { + btn.textContent = 'Login' + btn.title = '' + } + window.xlogin = window.xlogin || {} + window.xlogin.type = null + window.xlogin.id = null + document.dispatchEvent(new CustomEvent('xlogout', { detail: { type: 'logout' } })) + } + + // --- Nostr login success --- + function nostrLoginSuccess(btn, pubkey, method) { + _nostrPubKey = pubkey + _nostrProvider = method + + // Persist + var signerType = method === 'extension' ? 'nip-07' : method + var account = { '@id': 'did:nostr:' + pubkey, pubkey: pubkey, signerType: signerType } + if ((method === 'key' || method === 'guest') && _nostrPrivKey) account.privkey = _nostrPrivKey + var accounts = loadAccounts() + var idx = accounts.findIndex(function (a) { return a.pubkey === pubkey }) + if (idx >= 0) accounts[idx] = account; else accounts.push(account) + saveAccounts(accounts) + saveCurrentAccount(account) + + _keyResolvers.forEach(function (r) { r.resolve() }) + _keyResolvers = [] + + onLogin('nostr', pubkey, btn) + } + + // --- NIP-07 API --- + function ensureNostrProvider() { + if (_nostrProvider) return Promise.resolve() + return new Promise(function (resolve, reject) { + _keyResolvers.push({ resolve: resolve, reject: reject }) + showModal() + }) + } + + window.nostr = { + getPublicKey: async function () { + await ensureNostrProvider() + if (_nostrProvider === 'extension') return _ext.getPublicKey() + return _nostrPubKey + }, + signEvent: async function (event) { + await ensureNostrProvider() + if (_nostrProvider === 'extension') return _ext.signEvent(event) + return nostrSignEvent(event) + }, + nip04: { + encrypt: async function (pubkey, plaintext) { + await ensureNostrProvider() + if (_nostrProvider === 'extension' && _ext.nip04) return _ext.nip04.encrypt(pubkey, plaintext) + return nip04Encrypt(pubkey, plaintext) + }, + decrypt: async function (pubkey, ciphertext) { + await ensureNostrProvider() + if (_nostrProvider === 'extension' && _ext.nip04) return _ext.nip04.decrypt(pubkey, ciphertext) + return nip04Decrypt(pubkey, ciphertext) + } + } + } + + // ========================================================================= + // UI + // ========================================================================= + + var CSS = [ + '.xl-btn{position:fixed;bottom:16px;right:16px;z-index:999999;background:#8B5CF6;color:#fff;border:none;border-radius:20px;padding:8px 16px;font:14px/1.4 system-ui,sans-serif;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:background .2s}', + '.xl-btn:hover{background:#7C3AED}', + '.xl-overlay{display:none;position:fixed;inset:0;z-index:1000000;background:rgba(0,0,0,.5);align-items:center;justify-content:center}', + '.xl-overlay.active{display:flex}', + '.xl-modal{background:#1a1a2e;color:#e0e0e0;border-radius:12px;padding:24px;width:380px;max-width:90vw;font:14px/1.4 system-ui,sans-serif;box-shadow:0 8px 32px rgba(0,0,0,.4)}', + '.xl-modal h2{margin:0 0 16px;font-size:18px;color:#fff}', + // Tabs + '.xl-tabs{display:flex;gap:0;margin-bottom:16px;border-bottom:1px solid #333}', + '.xl-tab{flex:1;padding:10px 0;border:none;background:transparent;color:#888;font:14px/1.4 system-ui,sans-serif;cursor:pointer;border-bottom:2px solid transparent;transition:all .2s}', + '.xl-tab:hover{color:#ccc}', + '.xl-tab.active{color:#8B5CF6;border-bottom-color:#8B5CF6}', + // Panels + '.xl-panel{display:none}', + '.xl-panel.active{display:block}', + // Buttons + '.xl-provider{width:100%;box-sizing:border-box;padding:10px 16px;border:1px solid #8B5CF6;border-radius:8px;background:transparent;color:#8B5CF6;font-size:14px;cursor:pointer;transition:background .2s;text-align:left;margin-bottom:8px}', + '.xl-provider:hover{background:#8B5CF620}', + '.xl-guest{width:100%;box-sizing:border-box;padding:10px 16px;border:1px solid #666;border-radius:8px;background:transparent;color:#aaa;font-size:14px;cursor:pointer;margin-bottom:8px;transition:background .2s}', + '.xl-guest:hover{background:#66666620}', + '.xl-sep{text-align:center;color:#666;font-size:12px;margin:12px 0}', + '.xl-modal input{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #333;border-radius:8px;background:#0d0d1a;color:#e0e0e0;font:13px system-ui,sans-serif;margin-bottom:8px}', + '.xl-modal .xl-nostr-key{font:13px monospace}', + '.xl-modal input:focus{outline:none;border-color:#8B5CF6}', + '.xl-error{color:#ef4444;font-size:12px;margin-bottom:8px;min-height:16px}', + '.xl-actions{display:flex;gap:8px;justify-content:flex-end}', + '.xl-actions button{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-size:14px}', + '.xl-cancel{background:#333;color:#aaa}', + '.xl-cancel:hover{background:#444}', + '.xl-submit{background:#8B5CF6;color:#fff}', + '.xl-submit:hover{background:#7C3AED}', + '.xl-submit:disabled{opacity:.5;cursor:not-allowed}', + '.xl-signup{text-align:center;font-size:12px;color:#666;margin-top:12px}', + '.xl-signup a{color:#8B5CF6;text-decoration:none}', + '.xl-signup a:hover{text-decoration:underline}' + ].join('') + + function createWidget() { + var host = document.createElement('div') + host.id = 'xlogin-widget' + document.body.appendChild(host) + var shadow = host.attachShadow({ mode: 'closed' }) + + var style = document.createElement('style') + style.textContent = CSS + shadow.appendChild(style) + + // --- Button --- + // Plaza vendored xlogin and suppressed this button because plaza + // renders its own login pill in the topbar. Profile shows the + // floating bottom-right pill — re-enabled. + var btn = document.createElement('button') + btn.className = 'xl-btn' + btn.textContent = 'Login' + btn.onclick = function () { + if (_type) onLogout(btn) + else showModal() + } + shadow.appendChild(btn) + + // --- Overlay --- + var overlay = document.createElement('div') + overlay.className = 'xl-overlay' + + // --- Modal --- + var nostrExtBtn = _ext + ? '' + : '' + var nostrGuestBtn = _guestKey + ? '' + : '' + var nostrSep = (_ext || _guestKey) ? '
    or paste a private key
    ' : '' + + var solidProviders = [ + { name: window.location.host, url: window.location.origin }, + { name: 'solidcommunity.net', url: 'https://solidcommunity.net' }, + { name: 'solidweb.me', url: 'https://solidweb.me' }, + { name: 'solidweb.org', url: 'https://solidweb.org' }, + { name: 'solidweb.app', url: 'https://solidweb.app' }, + { name: 'solid.social', url: 'https://solid.social' } + ] + var solidBtns = solidProviders.map(function (p) { + return '' + }).join('') + + overlay.innerHTML = + '
    ' + + '

    Login

    ' + + '
    ' + + '' + + '' + + '
    ' + + // Nostr panel + '
    ' + + nostrExtBtn + + nostrGuestBtn + + nostrSep + + '' + + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    ' + + // Solid panel + '
    ' + + solidBtns + + '
    or enter your identity provider
    ' + + '' + + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '' + + '
    ' + + '
    ' + shadow.appendChild(overlay) + + // --- Wire up tabs --- + var tabs = overlay.querySelectorAll('.xl-tab') + var panels = overlay.querySelectorAll('.xl-panel') + tabs.forEach(function (tab) { + tab.onclick = function () { + tabs.forEach(function (t) { t.classList.remove('active') }) + panels.forEach(function (p) { p.classList.remove('active') }) + tab.classList.add('active') + overlay.querySelector('[data-panel="' + tab.dataset.tab + '"]').classList.add('active') + } + }) + + // --- Cancel --- + var cancelBtns = overlay.querySelectorAll('.xl-cancel') + function cancel() { + hideModal() + _keyResolvers.forEach(function (r) { r.reject(new Error('User cancelled login')) }) + _keyResolvers = [] + } + cancelBtns.forEach(function (b) { b.onclick = cancel }) + overlay.onclick = function (e) { if (e.target === overlay) cancel() } + + // --- Nostr: Extension --- + var extBtn = overlay.querySelector('.xl-nostr-ext') + var nostrError = overlay.querySelector('.xl-nostr-error') + if (extBtn) { + extBtn.onclick = async function () { + try { + var pubkey = await _ext.getPublicKey() + hideModal() + nostrLoginSuccess(btn, pubkey, 'extension') + } catch (e) { + nostrError.textContent = 'Extension error: ' + e.message + } + } + } + + // --- Nostr: Guest --- + var guestBtn = overlay.querySelector('.xl-nostr-guest') + if (guestBtn) { + guestBtn.onclick = async function () { + await _secpReady + _nostrPrivKey = _guestKey + var pubkey = bytesToHex(_secp.schnorr.getPublicKey(_guestKey)) + hideModal() + nostrLoginSuccess(btn, pubkey, 'guest') + } + } + + // --- Nostr: Key --- + var nostrKeyInput = overlay.querySelector('.xl-nostr-key') + var nostrSubmit = overlay.querySelector('.xl-nostr-submit') + nostrSubmit.onclick = async function () { + var val = nostrKeyInput.value.trim().toLowerCase() + if (!/^[0-9a-f]{64}$/.test(val)) { + nostrError.textContent = 'Must be exactly 64 hex characters' + return + } + await _secpReady + _nostrPrivKey = val + var pubkey = bytesToHex(_secp.schnorr.getPublicKey(val)) + hideModal() + nostrKeyInput.value = '' + nostrError.textContent = '' + nostrLoginSuccess(btn, pubkey, 'key') + } + nostrKeyInput.addEventListener('keydown', function (e) { + if (e.key === 'Enter') nostrSubmit.onclick() + }) + nostrKeyInput.addEventListener('input', function () { + if (/^[0-9a-fA-F]{64}$/.test(nostrKeyInput.value.trim())) nostrSubmit.onclick() + }) + + // --- Solid: Provider buttons --- + var solidError = overlay.querySelector('.xl-solid-error') + overlay.querySelectorAll('.xl-solid-provider').forEach(function (b) { + b.onclick = function () { doSolidLogin(b.dataset.idp, btn, solidError) } + }) + + // --- Solid: Custom IDP --- + var solidIdpInput = overlay.querySelector('.xl-solid-idp') + var solidSubmit = overlay.querySelector('.xl-solid-submit') + solidSubmit.onclick = function () { + var val = solidIdpInput.value.trim() + if (!val) { + solidError.textContent = 'Enter an identity provider URL' + return + } + if (!/^https?:\/\//.test(val)) val = 'https://' + val + doSolidLogin(val, btn, solidError) + } + solidIdpInput.addEventListener('keydown', function (e) { + if (e.key === 'Enter') solidSubmit.onclick() + }) + + return { btn: btn, overlay: overlay } + } + + // --- Solid login --- + async function doSolidLogin(idp, btn, errorEl) { + try { + errorEl.textContent = '' + await _solidReady + _solidSession = new _SolidSession() + _solidSession.addEventListener('sessionStateChange', function (e) { + if (e.detail.isActive) { + var webId = e.detail.webId + window.solid = window.solid || {} + window.solid.session = _solidSession + window.solid.webId = webId + onLogin('solid', webId, btn) + } + }) + hideModal() + await _solidSession.login(idp, window.location.href) + } catch (e) { + if (errorEl) errorEl.textContent = e.message || 'Login failed' + } + } + + // --- Solid redirect callback --- + async function handleSolidRedirect() { + var url = new URL(window.location.href) + if (!url.searchParams.get('code')) return false + await _solidReady + _solidSession = new _SolidSession() + var ui = getUI() + _solidSession.addEventListener('sessionStateChange', function (e) { + if (e.detail.isActive) { + var webId = e.detail.webId + window.solid = window.solid || {} + window.solid.session = _solidSession + window.solid.webId = webId + if (ui && ui.btn) onLogin('solid', webId, ui.btn) + } + }) + await _solidSession.handleRedirectFromLogin() + return true + } + + // --- Solid session restore --- + async function trySolidRestore() { + await _solidReady + _solidSession = new _SolidSession() + var ui = getUI() + _solidSession.addEventListener('sessionStateChange', function (e) { + if (e.detail.isActive) { + var webId = e.detail.webId + window.solid = window.solid || {} + window.solid.session = _solidSession + window.solid.webId = webId + if (ui && ui.btn) onLogin('solid', webId, ui.btn) + } + }) + await _solidSession.restore() + } + + // --- Nostr session restore --- + // Returns a Promise so the caller can await the async nip-07 + // polling tail (#13). All other paths resolve synchronously. + function tryNostrRestore() { + var restored = loadCurrentAccount() + if (!restored) return Promise.resolve() + if ((restored.signerType === 'key' || restored.signerType === 'guest') && restored.privkey) { + _nostrPrivKey = restored.privkey + _nostrPubKey = restored.pubkey + _nostrProvider = restored.signerType + var ui = getUI() + if (ui && ui.btn) onLogin('nostr', restored.pubkey, ui.btn) + return Promise.resolve() + } + if (restored.signerType === 'nip-07') { + _nostrPubKey = restored.pubkey + return (async function () { + for (var i = 0; i < 50; i++) { + if (_ext) { + _nostrProvider = 'extension' + var ui = getUI() + if (ui && ui.btn) onLogin('nostr', _nostrPubKey, ui.btn) + return + } + await new Promise(function (r) { setTimeout(r, 100) }) + } + _nostrPubKey = null + saveCurrentAccount(null) + })() + } + return Promise.resolve() + } + + function getUI() { + if (!_ui && document.body) _ui = createWidget() + return _ui + } + + function showModal() { + var ui = getUI() + if (ui) ui.overlay.classList.add('active') + } + + function hideModal() { + var ui = getUI() + if (ui) ui.overlay.classList.remove('active') + } + + // --- Global API --- + window.xlogin = window.xlogin || {} + window.xlogin.type = null + window.xlogin.id = null + window.xlogin.login = function () { showModal() } + window.xlogin.logout = function () { onLogout(getUI().btn) } + // Resolves when init() has finished restoring (or settled on no + // session). Lets consumers `await window.xlogin.ready` instead of + // polling `window.xlogin.type` with a timeout. See #13. + var _readyResolve + window.xlogin.ready = new Promise(function (r) { _readyResolve = r }) + + /** + * Unified authenticated fetch. + * - Nostr login → NIP-98 Authorization header via nip98 + * - Solid login → DPoP Authorization header via solid-oidc + * - Not logged in → plain fetch + */ + window.xlogin.authFetch = async function (url, options) { + if (_type === 'nostr') { + await _nip98Ready + return _nip98AuthFetch(url, options) + } + if (_type === 'solid' && _solidSession) { + return _solidSession.authFetch(url, options) + } + return fetch(url, options) + } + + // --- Init --- + async function init() { + // Wrap in try/finally so `window.xlogin.ready` always settles — + // any unexpected throw inside (beyond the known catches below) + // would otherwise leave consumers awaiting it forever (#14). + try { + getUI() + + // 1. Solid redirect callback + var wasRedirect = await handleSolidRedirect().catch(function () { return false }) + + if (!wasRedirect) { + // 2. Try Nostr restore (await the async nip-07 tail too) + await tryNostrRestore() + + // 3. Try Solid restore if not already logged in via Nostr + if (!_type) { + await trySolidRestore().catch(function () {}) + } + + // 4. SSO-arrival handling. When a Solid app (e.g. jss.live/sso/) + // redirects the user to their pod with a ?webid= hint, xlogin + // owns that param — clean it from the URL on sight (phase 2c), + // and if no prior session restored AND a signer extension is + // present, auto-run the same getPublicKey + nostrLoginSuccess + // pair the "Use Browser Extension" button click runs (phase + // 2b). Saves the user a click; the signer is still in charge + // of approval. The pubkey returned by the signer wins — the + // hint is a "should we try this" signal, not a credential. + try { + var hint = new URLSearchParams(window.location.search).get('webid') + if (hint) { + // Phase 2c: scrub `?webid=` whether or not we can act on + // it (session already restored, no extension, etc.). + // Keeps refresh / bookmark / share clean. Other query + // params (if any) are preserved. + try { + var clean = new URL(window.location.href) + clean.searchParams.delete('webid') + history.replaceState(null, '', clean.href) + } catch (_) { /* history API unavailable — harmless, skip */ } + + // Phase 2b auto-trigger keeps its original guards. + if (!_type && _ext) { + var ui = getUI() + if (ui && ui.btn) { + // Fire-and-forget — do NOT await the signer prompt. + // The signer's getPublicKey() may block indefinitely + // while waiting for user approval (especially on + // extensions that show a popup), which would in turn + // delay window.xlogin.ready (the whole point of #14 + // was to settle ready promptly regardless of pending + // user interaction). Consumers see ready resolve as + // "no session yet"; nostrLoginSuccess fires its own + // state-change event when/if the signer approves + // later, so async consumers still see the eventual + // login. + _ext.getPublicKey().then(function (pubkey) { + // Mirror the manual extBtn.click() path: hide the + // modal first so it doesn't stay open in the corner + // case where the user opened it during the brief + // auto-trigger window. + hideModal() + nostrLoginSuccess(ui.btn, pubkey, 'extension') + }).catch(function () { /* signer declined or unavailable — fall through to manual login */ }) + } + } + } + } catch (_) { /* missing URLSearchParams or unexpected runtime — no-op */ } + } + } finally { + // Tell consumers (e.g., LOSOS shell) that restore has settled + // — success, no-session, or unexpected throw. See #13. + _readyResolve() + } + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init) + } else { + init() + } +})()