# Qortal Web — Changelog ## v0.0.29 — 2026-05-18 ### Fixes - **Changelog modal** — solid panel background (`--qw-bg-elev`); no longer transparent - **Read article** — embed opens the **selected article** (expanded card), not the full articles grid; republish QWB for visitor handler ## v0.0.28 — 2026-05-18 ### Embed theme sync - **Forum / poll / article / website embeds** follow Qortal Web light/dark — published site theme no longer overrides the shell when opened from Qortal Web - **`QORTAL_WEB_EMBED_THEME`** postMessage from Qortal Web; published visitor applies `data-site-theme` (republish QWB for handler on older sites) ### Avatars - **Masthead + top publishers** — wallet address included in avatar lookup; Hub bridge fetch tried first when `qortalRequest` is available - **Site logos** on top publishers resolve via the same media path helpers as browse cards ### Footer - **Click `v0.0.28`** (version label) to open the changelog modal ## v0.0.27 — 2026-05-18 ### Published-site block previews (forum / poll / article) - **Hybrid embed architecture** — hidden iframe warms the full published WEBSITE + masthead auth; visible iframe shows **only the target block** (site chrome hidden via block-focus CSS) - **Real visitor runtime** — posts, votes, and comments load inside the published site iframe (same as Hub), not stripped native panels - **Publisher resolution** — prefers `qortal://WEBSITE/…` href from index entries and website index row before display titles - **Republish QWB** for in-iframe block-focus handler (`QORTAL_WEB_EMBED_BLOCK_FOCUS`) ## v0.0.26 — 2026-05-18 ### Fast native forum / poll / article opens - **Correct WEBSITE publish name** — index `sitePublisher` and per-entry `publisher` win over DOCUMENT search hit and display titles (fixes 404s like `Biohackers Corner`) - **Instant block UI** — panel renders as soon as site config resolves; peer data loads in background (5s cap) - **No whole-site peer prefetch** on every open — removed storm of JSON/APP index shard fetches - **Masthead auth → native blocks** — signed-in masthead session sets `inQortal` so forum/poll gates recognize you without re-authenticating ### QWB index (republish to apply) - Index entries now include `meta.peerPublisher` — explicit QDN name for forum/poll/article peer JSON ## v0.0.25 — 2026-05-18 ### Single-block native viewers (forum / poll / article) - **Forum, poll, and article open as native blocks again** — only the target block UI, not the full website iframe - **Targeted peer preload** — loads QDN data for that one block before rendering (posts, votes, article comments) - **Website entries** still use the full-site embed preview ## v0.0.24 — 2026-05-18 ### Forum, poll, and article → published WEBSITE embed - **Interactive blocks open the real published site** in an iframe (same visitor runtime as the Hub) instead of stripped-down native panels — auth, forum posts, and poll votes use the site’s own QDN peer loading - **Correct publisher URL** — resolves registered QDN name via site config before building `/render/WEBSITE/` URL (not index display title) - **Masthead auth passthrough** — repeated `postMessage` auth sync + hidden per-site warmup iframe - **Scroll-to-block** after embed ready handshake (`QORTAL_WEB_EMBED_READY` from published visitor) ## v0.0.23 — 2026-05-26 ### Published site session (your architecture) - **Load full WEBSITE once per site** — config merged like the published visitor, all blocks in visitor store, masthead auth applied (same as opening the site in the background) - **Shared session cache** — open poll first, then forum/article on the same site reuses the warmed session (fast second open) - **Background peer prefetch** — forum, poll, and article discussion data for every interactive block on the site loads after the first open ## v0.0.22 — 2026-05-26 ### Native viewer speed + auth - **Removed heavy peer rescan** during publisher resolution (was loading full forum/poll search on every open) - **Removed cache bust on panel mount** that forced full QDN rescan every time - **Reject website display titles** as peer publishers (fixes 404s like `Biohackers Corner`) - **Negative cache** for missing site-config fetches (stops Simon James / display-title retry storms) - **Session sync** — masthead wallet passed into native panels via `syncNativeViewerSession` before forum/poll/article gates render ## v0.0.21 — 2026-05-26 ### Startup crash fix - **Cross-origin bridge probe** — reading `parent.qortalRequest` in the Hub iframe threw `SecurityError` and prevented Qortal Web from loading (v0.0.20 regression). All parent/top bridge checks are now wrapped in try/catch; the local postMessage stub is used when parent is not readable. ## v0.0.20 — 2026-05-26 ### Native forum, poll, and article interaction - **Correct peer publisher** — uses `publisherName` from loaded site config (and index `sitePublisher`) for forum/poll/article QDN fetches, not just the index document owner - **Article comment publisher probe** — resolves the QDN name that actually holds article discussion JSON - **Hub bridge priority** — prefers Hub-injected `qortalRequest` on parent/top over the local postMessage stub (fixes publish/search when both exist) - **Fresh peer load** — busts bundle + session caches when opening native forum/poll/article viewers - **Auth sync** — masthead session + `inQortal` stay aligned with the live bridge for compose/vote gates ## v0.0.15 — 2026-05-25 ### Forum / poll loading - **Skip `Your Name` placeholder** — never used for QDN fetches (root cause of empty forums in log) - **Publisher from index owner** — site config `publisherName` no longer overrides the QDN document owner - **Parallel bundle probe** — faster publisher detection (bridge + HTTP in parallel per candidate) - **Eager publisher** — visitor store gets correct QDN name before site config finishes loading ### Open website - **New tab** — opens `/render/WEBSITE/{publisher}` in a new Hub tab (was broken `qortal://` navigation) - **Button label** — `Open` + site avatar + website title ### Auth avatars - **Direct img load** — same fast path as site avatars; bridge fallback only on error - **Registered name lookup** — uses Hub `primaryName` + `/names/address` list, not truncated address label ## v0.0.14 — 2026-05-25 ### Avatars - **Robust QDN avatar fetch** — tries `/arbitrary/THUMBNAIL/{name}/qortal_avatar` and `/arbitrary/THUMBNAIL/{name}`, then Hub `FETCH_QDN_RESOURCE`; proper path encoding for names with apostrophes - **Authenticated user** — no longer uses truncated address as avatar lookup key; resolves registered name from Hub + `/names/address` - **Top publishers** — site logo from index used as avatar fallback when QDN name avatar is missing ### Search - **Result thumbnails** — search results show entry thumb when index has `thumbHref` (library, images, articles, etc.) ## v0.0.13 — 2026-05-25 ### Forum / poll / article data - **Deep QDN search on first open** — empty cache now triggers `rescan` (dual search pass) so live posts/votes load even when publish-time bundles were empty - **Publisher probe** — bridge-first, no stale HTTP cache; articles also probe forum bundle owner - **Forum/Poll panels** — sync probed `sitePublisher` into visitor store before block views mount ### Article comments - **Auth gate CSS** — hide “Authenticate” prompt only when bridge + wallet are both ready (`data-qw-can-auth`) - **Bridge-not-ready message** — signed-in users see guidance instead of a silent dead zone - **ContentViewer** — no longer clobbers publisher name from stale store on open ### Library thumbnails - **Configured thumbs first** — Folders block `thumbnailHref` wins over PDF page-1 preview - **Separate PDF cache key** — prefetched PDF blobs no longer overwrite custom thumbs - **Index: folder default thumbs** — `defaultThumbnailHref` on folders inherited into library index entries (requires QWB republish for folder-level thumbs) ## v0.0.12 — 2026-05-25 ### Auth - **`setSessionUser` implemented** — visitor store now keeps masthead session; article comments / forum / poll gates unlock when authenticated - **Logout (×) works** — explicit sign-out sets opt-out flag so auto `GET_USER_ACCOUNT` no longer re-logs you in - **`applyRuntimeContext` null fix** — passing `user: null` clears session instead of preserving stale auth ### Data loading - **QDN publisher from index owner** — fetches use DOCUMENT search `name` (not website display title); fixes 404s on `Biohackers Corner` / `The People of Qortal` - **Bridge-first site config** — `FETCH_QDN_RESOURCE` before HTTP for `qwb-site-config.json` - **Forum/poll probe** — tries bridge + all publisher candidates per block - **Safe base64 decode** — avoids `InvalidCharacterError: atob` on malformed QDN payloads ## v0.0.11 — 2026-05-25 ### Auth & interactive blocks - **`sessionUser` bridge** — masthead wallet synced to native forum/poll/article gates (fixes false “Authenticate to join”) - **Peer publisher probe** — tries QDN names until forum/poll JSON bundle loads - **Index publisher** — document owner preferred over website display title in cached index ### Browse & index (QWB) - **Folders tab search** — Q-Tube / playlist imports mirrored as folder-scoped entries (searchable in Folders + global search on Folders view) - **Library/PDF thumbs** — FILE href resolution for PDF page-1 previews; QDN thumb hrefs via `resolveMediaHref` - **Folder publisher avatars** — site logo from index when available - **Folder viewer** — dialog grows vertically when expanding folder tree - **Primary names** — authenticate resolves registered name; viewer chip shows name not address ## v0.0.10 — 2026-05-25 ### Interactive blocks (auth, forum, poll) - **Forum / poll / article auth** — `canAuth` / `canVote` use reactive `useQortalApiPresent()` (fixes “Authenticate to join” while signed in) - **Publisher for peer fetches** — site config `publisherName` used after load; better fallback when index title ≠ QDN name - **Visitor store** — `inQortal` stays true once Hub bridge is detected (avoids auth flicker) ### Browse UX - **Folders** — publisher list only (removed tree/grid toggles) - **Library thumbs** — resolve QDN thumbnail hrefs via shared `resolveMediaHref` (Folders block publish previews) - **Top publishers** — horizontal bar chart with count at bar end ## v0.0.9 — 2026-05-18 ### UX & reliability - **Websites tab** — scrollable Discover preview screenshots (same QWB `qwb_discover_preview_v1` images) - **Folders tab** — default **By publisher** list with folder/file counts; click opens the share-folders block - **Library** — PDF page-1 thumbnails rendered for browse cards; PDF.js worker bundled (fixes Hub 503 on lazy worker chunk) - **Top publishers** — denser compact rows on home - **Network stats** — “Folders” renamed to **Folder files** - **Avatars** — try registered names from wallet before address; fallback image when QDN thumbnail missing - **Articles** — forum auth reacts to Hub bridge; wallet synced into native blocks when the viewer opens - **Publisher fix** — prefer QDN SEARCH document owner over website display titles in index ## v0.0.8 — 2026-05-18 ### Hub runtime fixes (forums, polls, articles, library) - **No lazy-loaded panel chunks** — Hub returned 503 on `/render/APP/Qortal Web/assets/*.js`; all native panels ship in the main bundle so forums, polls, and articles load reliably - **Qortal bridge shim** — native blocks use the same parent-window `qortalRequest` bridge as the masthead so posting, voting, and comments work after Authenticate - **Publisher resolution** — prefers `qortal://WEBSITE/…` href from the index over website display titles (fixes site-config 404s) - **Avatars** — wallet address used for authenticated user thumbnail; initials hidden once image loads; bundled default avatar fallback - **Library thumbnails** — broader thumb href resolution (preview meta, image/video file hrefs) ## v0.0.7 — 2026-05-18 ### Content viewer fixes - **Close (×) button** — always visible top-right on the detail overlay; Escape also closes - **Full-screen overlay** — sits above the sticky masthead so nothing overlaps the viewer - **Authenticate in viewer header** — sign in without closing the detail view; session restores on Hub load - **Publisher name fix** — index entries use the QDN document owner (not website title) for site-config and peer fetches, fixing 404s like `Biohackers Corner/qwb-site-config.json` - **Hide duplicate auth banners** inside native forum/poll blocks when opened from Qortal Web ## v0.0.6 — 2026-05-18 ### Browse UX & auth - **Avatar in masthead** — larger profile avatar top-right when signed in; compact × sign-out button - **Sticky masthead** — Authenticate stays reachable while the content viewer is open; session applies to all native forums, polls, shops, and comments - **Grid / list / tree views** — every category tab has view toggles; folders default to an aggregated **tree** across all publishers - **Library thumbnails** — browse cards prefetch index thumbnail metadata and image fallbacks - **Thumbnail hover** — cards pop forward slightly on hover across grid, list, discover, and folder tree ## v0.0.5 — 2026-05-25 ### Full native block runtime (no iframe except websites) - **Articles** — `ArticleContentView` + `ArticleForumSection` with live QDN comment threads - **Music** — full `MusicBlockView` (albums, shuffle, playback rate); deep-links to indexed track - **Images** — `AlbumsBlockView` lightbox or native photo block viewer - **Videos** — native player or Q-Tube embed from block config - **Library / Folders** — full `ShareFoldersBlockView` (PDF preview, gallery, audio, download); opens indexed file on load - **Q-Shops** — native `QShopStorefront` (cart, checkout, auctions) via extended visitor store - **Code-split bundles** — forum, poll, qshop, folders, music, article load on demand (~50 KB initial JS) ### QWB publish sync - `MusicBlockView`, `AlbumsBlockView`, `ShareFoldersBlockView` accept deep-link props for Qortal Web index entries ## v0.0.4 — 2026-05-25 ### Native forum & poll (no iframe) - **`packages/qwb-visitor`** — shared visitor runtime with slim Zustand store replacing `builderStore` for block views - **Forum and Poll** open natively inside Qortal Web using real QWB `ForumBlockView` / `PollBlockView` + QDN peer stack - Single **Authenticate** in the Qortal Web masthead drives posting, replies, and voting - Vite aliases bundle `@qwb/core` (QWB source) with a `builderStore` shim → `@qwb/visitor` - Websites and Q-Shops still use site embed until native Q-Shop storefront is ported ### QWB index (write side) - Index entries include `pageSlug`, `contentRef`, `requiresAuth` for native block resolution ## v0.0.3 — 2026-05-25 ### In-app reading & interaction - **Content viewer modal** — opening any indexed item stays inside the Qortal Web Q-App instead of leaving via `qortal://` deep links - **Articles** — loads `qwb-site-config.json` from QDN and renders article HTML in-app - **Videos, music, images** — native `