SOURCE / PINNED RELEASE
Made of little things.
Napplet Feed
- Release
- 19057542768b…
- Author-recorded commit
- Not provided
- License
- Check the original source
The hash-verified playable HTML, which may contain bundled or minified code. This view does not execute it.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" /><title>Napplet Feed</title><meta name="description" content="Napplet manifests published by your contacts, with quick naddr copy."><meta name="napplet-id" content="nap-feed"><meta name="napplet-requires" content="identity outbox"><meta name="napplet-optional" content="config theme"><link rel="icon" href="data:image/png;base64,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" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script type="module" crossorigin>function e(){let e=window;if(!e.napplet)throw Error(`window.napplet is unavailable -- runtime did not inject the napplet namespace`);return e.napplet}function t(t){let n=e()[t];if(!n)throw Error(`window.napplet.${String(t)} is unavailable -- runtime did not inject this domain`);return n}function n(){let e=window;if(!e.napplet?.theme)throw Error(`window.napplet.theme is unavailable -- runtime did not inject this domain`);return e.napplet.theme}function r(){return n().get()}function i(e){return n().onChanged(e)}function a(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function o(e,t,n=``){let r=a(e),i=e?.length,o=t!==void 0;if(!r||o&&i!==t){let a=n&&`"${n}" `,s=o?` of length ${t}`:``,c=r?`length=${i}`:`type=${typeof e}`;throw Error(a+`expected Uint8Array`+s+`, got `+c)}return e}var s=typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`,c={_0:48,_9:57,A:65,F:70,a:97,f:102};function l(e){if(e>=c._0&&e<=c._9)return e-c._0;if(e>=c.A&&e<=c.F)return e-(c.A-10);if(e>=c.a&&e<=c.f)return e-(c.a-10)}function u(e){if(typeof e!=`string`)throw Error(`hex string expected, got `+typeof e);if(s)return Uint8Array.fromHex(e);let t=e.length,n=t/2;if(t%2)throw Error(`hex string expected, got unpadded hex of length `+t);let r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){let n=l(e.charCodeAt(i)),a=l(e.charCodeAt(i+1));if(n===void 0||a===void 0){let t=e[i]+e[i+1];throw Error(`hex string expected, got non-hex character "`+t+`" at index `+i)}r[t]=n*16+a}return r}function d(...e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];o(r),t+=r.length}let n=new Uint8Array(t);for(let t=0,r=0;t<e.length;t++){let i=e[t];n.set(i,r),r+=i.length}return n}function ee(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function te(e,t){return Array.isArray(t)?t.length===0?!0:e?t.every(e=>typeof e==`string`):t.every(e=>Number.isSafeInteger(e)):!1}function ne(e){if(typeof e!=`function`)throw Error(`function expected`);return!0}function f(e,t){if(typeof t!=`string`)throw Error(`${e}: string expected`);return!0}function p(e){if(!Number.isSafeInteger(e))throw Error(`invalid integer: ${e}`)}function m(e){if(!Array.isArray(e))throw Error(`array expected`)}function h(e,t){if(!te(!0,t))throw Error(`${e}: array of strings expected`)}function g(e,t){if(!te(!1,t))throw Error(`${e}: array of numbers expected`)}function _(...e){let t=e=>e,n=(e,t)=>n=>e(t(n));return{encode:e.map(e=>e.encode).reduceRight(n,t),decode:e.map(e=>e.decode).reduce(n,t)}}function v(e){let t=typeof e==`string`?e.split(``):e,n=t.length;h(`alphabet`,t);let r=new Map(t.map((e,t)=>[e,t]));return{encode:r=>(m(r),r.map(r=>{if(!Number.isSafeInteger(r)||r<0||r>=n)throw Error(`alphabet.encode: digit index outside alphabet "${r}". Allowed: ${e}`);return t[r]})),decode:t=>(m(t),t.map(t=>{f(`alphabet.decode`,t);let n=r.get(t);if(n===void 0)throw Error(`Unknown letter: "${t}". Allowed: ${e}`);return n}))}}function y(e=``){return f(`join`,e),{encode:t=>(h(`join.decode`,t),t.join(e)),decode:t=>(f(`join.decode`,t),t.split(e))}}function b(e,t=`=`){return p(e),f(`padding`,t),{encode(n){for(h(`padding.encode`,n);n.length*e%8;)n.push(t);return n},decode(n){h(`padding.decode`,n);let r=n.length;if(r*e%8)throw Error(`padding: invalid, string should have whole number of bytes`);for(;r>0&&n[r-1]===t;r--)if((r-1)*e%8==0)throw Error(`padding: invalid, string has too much padding`);return n.slice(0,r)}}}function re(e){return ne(e),{encode:e=>e,decode:t=>e(t)}}var ie=(e,t)=>t===0?e:ie(t,e%t),x=(e,t)=>e+(t-ie(e,t)),S=(()=>{let e=[];for(let t=0;t<40;t++)e.push(2**t);return e})();function C(e,t,n,r){if(m(e),t<=0||t>32)throw Error(`convertRadix2: wrong from=${t}`);if(n<=0||n>32)throw Error(`convertRadix2: wrong to=${n}`);if(x(t,n)>32)throw Error(`convertRadix2: carry overflow from=${t} to=${n} carryBits=${x(t,n)}`);let i=0,a=0,o=S[t],s=S[n]-1,c=[];for(let r of e){if(p(r),r>=o)throw Error(`convertRadix2: invalid data word=${r} from=${t}`);if(i=i<<t|r,a+t>32)throw Error(`convertRadix2: carry overflow pos=${a} from=${t}`);for(a+=t;a>=n;a-=n)c.push((i>>a-n&s)>>>0);let e=S[a];if(e===void 0)throw Error(`invalid carry`);i&=e-1}if(i=i<<n-a&s,!r&&a>=t)throw Error(`Excess padding`);if(!r&&i>0)throw Error(`Non-zero padding: ${i}`);return r&&a>0&&c.push(i>>>0),c}function w(e,t=!1){if(p(e),e<=0||e>32)throw Error(`radix2: bits should be in (0..32]`);if(x(8,e)>32||x(e,8)>32)throw Error(`radix2: carry overflow`);return{encode:n=>{if(!ee(n))throw Error(`radix2.encode input should be Uint8Array`);return C(Array.from(n),8,e,!t)},decode:n=>(g(`radix2.decode`,n),Uint8Array.from(C(n,e,8,t)))}}function T(e){return ne(e),function(...t){try{return e.apply(null,t)}catch{}}}_(w(4),v(`0123456789ABCDEF`),y(``)),_(w(5),v(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`),b(5),y(``)),_(w(5),v(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`),y(``)),_(w(5),v(`0123456789ABCDEFGHIJKLMNOPQRSTUV`),b(5),y(``)),_(w(5),v(`0123456789ABCDEFGHIJKLMNOPQRSTUV`),y(``)),_(w(5),v(`0123456789ABCDEFGHJKMNPQRSTVWXYZ`),y(``),re(e=>e.toUpperCase().replace(/O/g,`0`).replace(/[IL]/g,`1`)));var ae=typeof Uint8Array.from([]).toBase64==`function`&&typeof Uint8Array.fromBase64==`function`;ae||_(w(6),v(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`),b(6),y(``)),_(w(6),v(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`),y(``)),ae||_(w(6),v(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`),b(6),y(``)),_(w(6),v(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`),y(``));var E=_(v(`qpzry9x8gf2tvdw0s3jn54khce6mua7l`),y(``)),oe=[996825010,642813549,513874426,1027748829,705979059];function D(e){let t=e>>25,n=(e&33554431)<<5;for(let e=0;e<oe.length;e++)(t>>e&1)==1&&(n^=oe[e]);return n}function se(e,t,n=1){let r=e.length,i=1;for(let t=0;t<r;t++){let n=e.charCodeAt(t);if(n<33||n>126)throw Error(`Invalid prefix (${e})`);i=D(i)^n>>5}i=D(i);for(let t=0;t<r;t++)i=D(i)^e.charCodeAt(t)&31;for(let e of t)i=D(i)^e;for(let e=0;e<6;e++)i=D(i);return i^=n,E.encode(C([i%S[30]],30,5,!1))}function ce(e){let t=e===`bech32`?1:734539939,n=w(5),r=n.decode,i=n.encode,a=T(r);function o(e,n,r=90){f(`bech32.encode prefix`,e),ee(n)&&(n=Array.from(n)),g(`bech32.encode`,n);let i=e.length;if(i===0)throw TypeError(`Invalid prefix length ${i}`);let a=i+7+n.length;if(r!==!1&&a>r)throw TypeError(`Length ${a} exceeds limit ${r}`);let o=e.toLowerCase(),s=se(o,n,t);return`${o}1${E.encode(n)}${s}`}function s(e,n=90){f(`bech32.decode input`,e);let r=e.length;if(r<8||n!==!1&&r>n)throw TypeError(`invalid string length: ${r} (${e}). Expected (8..${n})`);let i=e.toLowerCase();if(e!==i&&e!==e.toUpperCase())throw Error(`String must be lowercase or uppercase`);let a=i.lastIndexOf(`1`);if(a===0||a===-1)throw Error(`Letter "1" must be present between prefix and data only`);let o=i.slice(0,a),s=i.slice(a+1);if(s.length<6)throw Error(`Data must be at least 6 characters long`);let c=E.decode(s).slice(0,-6),l=se(o,c,t);if(!s.endsWith(l))throw Error(`Invalid checksum in ${e}: expected "${l}"`);return{prefix:o,words:c}}let c=T(s);function l(e){let{prefix:t,words:n}=s(e,!1);return{prefix:t,words:n,bytes:r(n)}}function u(e,t){return o(e,i(t))}return{encode:o,decode:s,encodeFromBytes:u,decodeToBytes:l,decodeUnsafe:c,fromWords:r,fromWordsUnsafe:a,toWords:i}}var le=ce(`bech32`);ce(`bech32m`),typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`||_(w(4),v(`0123456789abcdef`),y(``),re(e=>{if(typeof e!=`string`||e.length%2!=0)throw TypeError(`hex.decode: expected string, got ${typeof e} with length ${e.length}`);return e.toLowerCase()})),new TextDecoder(`utf-8`);var ue=new TextEncoder,de=5e3;function fe(e,t){let n=le.toWords(t);return le.encode(e,n,de)}function pe(e){let t=new ArrayBuffer(4);return new DataView(t).setUint32(0,e.kind,!1),fe(`naddr`,me({0:[ue.encode(e.identifier)],1:(e.relays||[]).map(e=>ue.encode(e)),2:[u(e.pubkey)],3:[new Uint8Array(t)]}))}function me(e){let t=[];return Object.entries(e).reverse().forEach(([e,n])=>{n.forEach(n=>{let r=new Uint8Array(n.length+2);r.set([parseInt(e)],0),r.set([n.length],1),r.set(n,2),t.push(r)})}),d(...t)}var he={getPublicKey(){return t(`identity`).getPublicKey()},onChanged(e){return t(`identity`).onChanged(e)},getRelays(){return t(`identity`).getRelays()},getProfile(){return t(`identity`).getProfile()},getFollows(){return t(`identity`).getFollows()},getList(e){return t(`identity`).getList(e)},getZaps(){return t(`identity`).getZaps()},getMutes(){return t(`identity`).getMutes()},getBlocked(){return t(`identity`).getBlocked()},getBadges(){return t(`identity`).getBadges()}},ge={get(){return t(`config`).get()},subscribe(e){return t(`config`).subscribe(e)},openSettings(e){t(`config`).openSettings(e)},registerSchema(e,n){return t(`config`).registerSchema(e,n)},onSchemaError(e){return t(`config`).onSchemaError(e)},get schema(){return t(`config`).schema}},_e={getEvent(e,n){return t(`outbox`).getEvent(e,n)},query(e,n){return t(`outbox`).query(e,n)},subscribe(e,n){return t(`outbox`).subscribe(e,n)},publish(e,n){return t(`outbox`).publish(e,n)},resolveRelays(e){return t(`outbox`).resolveRelays(e)}},ve=/^#[0-9a-f]{6}$/i;function ye(e){return ve.test(e)}function O(e,t){if(!ye(e))throw Error(`${t} must be a #rrggbb color`)}function k(e){return{r:Number.parseInt(e.slice(1,3),16),g:Number.parseInt(e.slice(3,5),16),b:Number.parseInt(e.slice(5,7),16)}}function A(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,`0`)}function j({r:e,g:t,b:n}){return`#${A(e)}${A(t)}${A(n)}`}function be({r:e,g:t,b:n}){let r=e/255,i=t/255,a=n/255,o=Math.max(r,i,a),s=Math.min(r,i,a),c=(o+s)/2;if(o===s)return{h:0,s:0,l:c};let l=o-s,u=c>.5?l/(2-o-s):l/(o+s),d;return d=o===r?(i-a)/l+(i<a?6:0):o===i?(a-r)/l+2:(r-i)/l+4,{h:d*60,s:u,l:c}}function M(e,t,n){return n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function xe({h:e,s:t,l:n}){if(t===0){let e=n*255;return{r:e,g:e,b:e}}let r=e/360,i=n<.5?n*(1+t):n+t-n*t,a=2*n-i;return{r:M(a,i,r+1/3)*255,g:M(a,i,r)*255,b:M(a,i,r-1/3)*255}}function N(e,t){let n=be(k(e));return j(xe({...n,l:Math.max(0,Math.min(1,n.l+t))}))}function P(e,t,n){let r=k(e),i=k(t);return j({r:r.r*(1-n)+i.r*n,g:r.g*(1-n)+i.g*n,b:r.b*(1-n)+i.b*n})}function Se(e){let{r:t,g:n,b:r}=k(e),[i,a,o]=[t,n,r].map(e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4});return .2126*i+.7152*a+.0722*o}function F(e){return Se(e)>.5?`#111827`:`#ffffff`}function Ce(e){return O(e.background,`background`),Se(e.background)<=.56}function we(e){O(e.background,`background`),O(e.text,`text`),O(e.primary,`primary`);let t=Ce(e),n=N(e.background,t?.05:-.04),r=N(e.background,t?.1:-.08),i=P(e.background,e.text,t?.18:.12),a=P(e.background,e.primary,t?.26:.18),o=P(e.primary,e.text,.22);return{"color-scheme":t?`dark`:`light`,"--color-base-100":e.background,"--color-base-200":n,"--color-base-300":r,"--color-base-content":e.text,"--color-primary":e.primary,"--color-primary-content":F(e.primary),"--color-secondary":a,"--color-secondary-content":e.text,"--color-accent":o,"--color-accent-content":F(o),"--color-neutral":i,"--color-neutral-content":F(i),"--color-info":t?`#38bdf8`:`#0284c7`,"--color-info-content":t?`#082f49`:`#ffffff`,"--color-success":t?`#22c55e`:`#16a34a`,"--color-success-content":t?`#052e16`:`#ffffff`,"--color-warning":t?`#facc15`:`#d97706`,"--color-warning-content":t?`#422006`:`#ffffff`,"--color-error":t?`#f87171`:`#dc2626`,"--color-error-content":t?`#450a0a`:`#ffffff`}}function Te(e){return{...we(e),"--radius-selector":`0.25rem`,"--radius-field":`0.25rem`,"--radius-box":`0.375rem`,"--size-selector":`0.21875rem`,"--size-field":`0.21875rem`,"--border":`1px`,"--depth":`0`,"--noise":`0`}}var Ee=`napplet-runtime`,De={background:`#14110c`,text:`#f5f1e8`,primary:`#9be564`};function I(e){document.documentElement.setAttribute(`data-theme`,Ee);let t=document.documentElement.style;for(let[n,r]of Object.entries(e))t.setProperty(n,r)}function Oe(e){let t={},n=e.fonts?.body?.name;typeof n==`string`&&n.trim()&&(t[`--gm-font-body`]=n);let r={background:e.colors.background,text:e.colors.text,primary:e.colors.primary};return Object.values(r).every(e=>typeof e==`string`&&ye(e))&&Object.assign(t,Te(r)),t}function ke(){if(I(Te(De)),!globalThis.napplet?.theme)return{close:()=>void 0};try{r().then(e=>I(Oe(e))).catch(()=>void 0)}catch{}let e=null;try{e=i(e=>I(Oe(e)))}catch{}return{close:()=>e?.close()}}var Ae=ke,je=35129,Me=/^[0-9a-f]{64}$/;function Ne(e,t=[]){if(e.kind!==35129)return null;let n=L(e,`d`);if(!n)return null;let r=e.tags.some(e=>e[0]===`path`),i=e.tags.filter(e=>e[0]===`x`),a=!r&&i.length===1&&i[0]?.length===2&&Me.test(i[0][1]??``)?i[0][1]??null:null,o=L(e,`title`)||n,s=e.content.trim()||r&&L(e,`description`)||``,c=R(e,`O`),l=(r?R(e,`requires`):R(e,`R`)).filter(e=>!c.includes(e)),u=r?R(e,`archetype`):R(e,`z`),d=r?[...new Set(e.tags.filter(e=>e[0]===`archetype`&&!!e[2]).map(e=>e[2]))]:R(e,`i`);return{address:`${e.kind}:${e.pubkey}:${n}`,naddr:pe({kind:e.kind,pubkey:e.pubkey,identifier:n,relays:t}),title:o,description:s,identifier:n,pubkey:e.pubkey,createdAt:e.created_at,artifactHash:a,isLegacy:r,requires:l,optional:c,archetypes:u,intents:d,hasConfig:e.tags.some(e=>e[0]===`config`&&!!e[1])}}function Pe(e,t){let n=e.get(t.address);return n&&n.createdAt>=t.createdAt?!1:(e.set(t.address,t),!0)}function Fe(e){return[...e].sort((e,t)=>t.createdAt-e.createdAt||e.title.localeCompare(t.title))}function L(e,t){return e.tags.find(e=>e[0]===t&&!!e[1])?.[1]??null}function R(e,t){return[...new Set(e.tags.filter(e=>e[0]===t&&!!e[1]).map(e=>e[1]))]}var z={scanWindowDays:30,contactBatchSize:100,includeSelf:!0},Ie=document.querySelector(`#app`);if(!Ie)throw Error(`Missing #app root`);var B=Ie,Le=Ae(),V={...z},H=`loading`,U=`Starting napplet feed...`,W=0,G=0,K=0,q=0,J=``,Y=[],X=new Map;Re();async function Re(){Q(),V=await ze(),await He()}async function ze(){if(!Qe(`config`))return{...z};try{return Be(await ge.get())}catch{return{...z}}}function Be(e){return{scanWindowDays:Ve(e.scanWindowDays,z.scanWindowDays,1,365),contactBatchSize:Ve(e.contactBatchSize,z.contactBatchSize,25,250),includeSelf:typeof e.includeSelf==`boolean`?e.includeSelf:z.includeSelf}}function Ve(e,t,n,r){return typeof e!=`number`||!Number.isInteger(e)?t:Math.min(r,Math.max(n,e))}async function He(){let e=q+1;q=e,Ke(),X.clear(),W=0,G=0,K=0,H=`loading`,U=`Loading identity and contacts...`,J=``,Q();let t=[`identity`,`outbox`].filter(e=>!Qe(e));if(t.length>0)H=`error`,U=`Missing required NAP domain${t.length===1?``:`s`}: ${t.join(`, `)}.`,Q();else try{let t=await he.getPublicKey();if(e!==q)return;if(!t){H=`signed-out`,U=`Connect an identity in the shell to see contacts' napplets.`,Q();return}let n=[...new Set(await he.getFollows())];if(e!==q)return;let r=V.includeSelf?Ze([t,...n]):n;if(W=n.length,r.length===0){H=`empty`,U=`No contacts to scan.`,Q();return}let i=Math.floor(Date.now()/1e3)-V.scanWindowDays*24*60*60,a=Xe(r,V.contactBatchSize);K=a.length,U=`Scanning ${r.length.toLocaleString()} author${r.length===1?``:`s`} across ${a.length.toLocaleString()} OUTBOX batch${a.length===1?``:`es`}...`,Q();for(let t of a){if(e!==q)return;Ue(t,i,e)}}catch(t){if(e!==q)return;H=`error`,U=t instanceof Error?t.message:`Could not load the napplet feed.`,Q()}}function Ue(e,t,n){let r=[{kinds:[je],authors:e,since:t,limit:100}],i={authors:e,timeoutMs:6e3},a=_e.subscribe(r,i);Y.push(a),a.on(`event`,e=>{n===q&&(Z(e),Ge())}),a.on(`closed`,()=>{n===q&&(Y=Y.filter(e=>e!==a))}),(async()=>{try{let{events:e}=await _e.query(r,i);if(n!==q)return;for(let t of e)Z(t)}catch{}finally{if(n!==q)return;G+=1,Ge()}})()}function Z(e){let t=Ne(e.event,We(e));t&&Pe(X,t)&&Q()}function We(e){let t=e.sidecar,n=t?.relayHints??t?.relays;return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function Ge(){let e=X.size;e>0?(H=`live`,U=`Showing ${e.toLocaleString()} napplet${e===1?``:`s`} from contacts${V.includeSelf?` and you`:``}.`):G>=K&&(H=`empty`,U=`No napplet manifests found in the selected scan window.`),Q()}function Ke(){for(let e of Y)e.close();Y=[]}function Q(){let e=Fe(X.values());B.innerHTML=`
<main class="shell ${H}">
<section class="status-card" aria-live="polite">
<div>
<strong>${$(U)}</strong>
<span>${W.toLocaleString()} contacts · includes you · no artifact downloads</span>
</div>
<button class="refresh" type="button" data-action="refresh">Refresh</button>
${J?`<p class="copy-status">${$(J)}</p>`:``}
</section>
${qe(e)}
</main>
`,B.querySelector(`[data-action="refresh"]`)?.addEventListener(`click`,()=>{He()});for(let e of B.querySelectorAll(`[data-copy-naddr]`))e.addEventListener(`click`,()=>{Ye(e.dataset.copyNaddr??``,e.dataset.copyTitle??`napplet`)})}function qe(e){return H===`signed-out`||H===`error`||H===`empty`&&e.length===0?`<section class="empty"><h2>${$e(H)}</h2><p>${$(U)}</p></section>`:`
<section class="feed" aria-label="Napplet manifests">
${e.map(Je).join(``)}
${e.length===0?`<article class="skeleton"><span></span><span></span><span></span></article>`:``}
</section>
`}function Je(e){let t=e.requires.length>0?e.requires:[`No special access listed`],n=[...e.archetypes,...e.intents],r=n.length>0?n:[`General napplet`],i=e.isLegacy?`Older format, needs republishing`:e.artifactHash?`Ready for sandboxed shells`:`Malformed manifest`,a=e.hasConfig?`Has settings`:`No settings listed`;return`
<article class="nap-card">
<div class="card-main">
<p class="publisher">Published by a contact · Updated ${et(e.createdAt)}</p>
<h2>${$(e.title)}</h2>
<p class="description">${$(e.description||`No description published.`)}</p>
</div>
<div class="copy-box">
<button type="button" data-copy-naddr="${$(e.naddr)}" data-copy-title="${$(e.title)}">Copy naddr</button>
<details>
<summary>Show reference</summary>
<input readonly value="nostr:${$(e.naddr)}" aria-label="naddr for ${$(e.title)}" />
</details>
</div>
<div class="friendly-facts" aria-label="Napplet details">
<span>${$(i)}</span>
<span>${$(a)}</span>
<span>App id: ${$(e.identifier)}</span>
</div>
<p class="section-label">Needs from the shell</p>
<div class="chips" aria-label="Shell capabilities needed">
${t.map(e=>`<span>${$(e)}</span>`).join(``)}
</div>
${e.optional.length>0?`<p class="section-label">Uses when available</p>
<div class="chips subtle" aria-label="Optional shell capabilities">
${e.optional.map(e=>`<span>${$(e)}</span>`).join(``)}
</div>`:``}
<p class="section-label">Works well as</p>
<div class="chips subtle" aria-label="Suggested uses">
${r.map(e=>`<span>${$(e)}</span>`).join(``)}
</div>
</article>
`}async function Ye(e,t){let n=`nostr:${e}`;try{await navigator.clipboard?.writeText(n),J=`Copied ${t} naddr.`}catch{let e=[...B.querySelectorAll(`input[readonly]`)].find(e=>e.value===n);e?.focus(),e?.select(),J=`Clipboard was unavailable; the naddr field is selected for manual copy.`}Q()}function Xe(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Ze(e){return[...new Set(e.filter(Boolean))]}function Qe(e){return!!globalThis.napplet?.[e]}function $e(e){return e===`signed-out`?`No identity connected`:e===`error`?`Feed unavailable`:`Nothing found yet`}function et(e){return new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e*1e3))}function $(e){return e.replace(/[&<>"]/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`})[e]??e)}globalThis.addEventListener(`beforeunload`,()=>{Ke(),Le.close()});</script>
<style rel="stylesheet" crossorigin>:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--panel:color-mix(in srgb, var(--color-base-200,#241f16) 88%, transparent);--panel-strong:color-mix(in srgb, var(--color-base-300,#342c1f) 86%, transparent);--text:var(--color-base-content,#f5f1e8);--muted:color-mix(in srgb, var(--color-base-content,#f5f1e8) 62%, var(--color-base-100,#14110c) 38%);--line:color-mix(in srgb, var(--color-base-content,#f5f1e8) 18%, transparent);--accent:var(--color-primary,#9be564);--accent-ink:var(--color-primary-content,#111827);--napplet-text-selection:text}*,:before,:after{box-sizing:border-box}body{background:radial-gradient(circle at top left, color-mix(in srgb, var(--accent) 24%, transparent), transparent 34rem), var(--color-base-100,#14110c);min-width:0;color:var(--text);font-family:var(--gm-font-body,ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, Consolas, monospace);margin:0}button,input{font:inherit}::selection{background:color-mix(in srgb, var(--accent) 38%, transparent)}.shell{min-height:100dvh;padding:clamp(.75rem,3cqi,1.5rem);container-type:inline-size}h2,p{margin-block-start:0}.refresh,.copy-box button{background:var(--accent);color:var(--accent-ink);cursor:pointer;white-space:nowrap;border:0;border-radius:999px;padding:.72rem 1rem;font-weight:800}.status-card,.empty,.nap-card,.skeleton{border:1px solid var(--line);background:color-mix(in srgb, var(--color-base-100,#14110c) 80%, transparent);border-radius:1.25rem;box-shadow:0 1rem 3rem #0000002e}.status-card{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;padding:.85rem 1rem;display:flex}.status-card span,.publisher,.section-label,.copy-status{color:var(--muted);font-size:.82rem}.status-card span{margin-top:.2rem;display:block}.copy-status{text-align:right;margin:0}.feed{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1rem;display:grid}.nap-card{gap:.9rem;padding:clamp(.9rem,3cqi,1.2rem);display:grid}.publisher{margin-bottom:.4rem}.nap-card h2{letter-spacing:-.04em;margin-bottom:.45rem;font-size:clamp(1.25rem,5cqi,1.8rem);line-height:1}.description{color:var(--muted);margin-bottom:0}.copy-box{gap:.5rem;display:grid}.copy-box details{color:var(--muted);font-size:.84rem}.copy-box summary{cursor:pointer;width:max-content}.copy-box input{border:1px solid var(--line);background:var(--panel);width:100%;min-width:0;color:var(--text);-webkit-user-select:all;user-select:all;border-radius:.85rem;margin-top:.55rem;padding:.65rem .75rem}.friendly-facts{flex-wrap:wrap;gap:.55rem;display:flex}.friendly-facts span{background:var(--panel);color:var(--muted);border-radius:.9rem;padding:.5rem .65rem;font-size:.84rem}.section-label{margin:0 0 -.45rem;font-weight:800}.chips{flex-wrap:wrap;gap:.4rem;display:flex}.chips span{border:1px solid var(--line);background:var(--panel-strong);border-radius:999px;padding:.3rem .55rem;font-size:.78rem}.chips.subtle span{color:var(--muted);background:0 0}.empty,.skeleton{padding:clamp(1.2rem,5cqi,2rem)}.empty h2{margin-bottom:.45rem}.skeleton{gap:.7rem;display:grid}.skeleton span{background:var(--panel-strong);border-radius:999px;height:1rem}.skeleton span:first-child{width:55%}.skeleton span:last-child{width:75%}@container (width<=28rem){.status-card{display:grid}.refresh,.copy-box button{width:100%}.copy-status{text-align:left}.friendly-facts span{width:100%}}
/*$vite$:1*/</style>
</head>
<body>
<div id="app"></div>
</body>
</html>
