Files
Simon James b54a3139c7 Initial commit: Qortal Web Builder monorepo.
Includes QWB, Qortal Web, and Q-Shops Q-Apps with shared packages and build scripts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 12:17:29 +00:00

18 KiB
Raw Permalink Blame History

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
  • 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 sites 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 labelOpen + 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
  • 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 thumbsdefaultThumbnailHref 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 configFETCH_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 authcanAuth / 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 storeinQortal 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)

  • ArticlesArticleContentView + ArticleForumSection with live QDN comment threads
  • Music — full MusicBlockView (albums, shuffle, playback rate); deep-links to indexed track
  • ImagesAlbumsBlockView 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 <video>, <audio>, and <img> players via Hub /arbitrary/… URLs
  • Library & folders — PDF/text inline preview with download; other files offer direct download
  • Forums, polls, Q-Shops, full websites — embedded published site iframe (/render/WEBSITE/…) with scroll-to-block via postMessage; use the sites own Authenticate bar to post, vote, or checkout
  • Auth banner in viewer when interactive content needs a wallet (masthead auth still applies globally)
  • Open in Hub fallback on every viewer

Index (QWB write side)

  • Index entries now include pageSlug and contentRef metadata for faster in-app resolution
  • Fixed block id indexing for non-peer blocks (articles, media, folders)

Visitor sites (QWB)

  • Published websites listen for qwb-qortal-web-scroll postMessage from Qortal Web embeds to scroll to the target block

v0.0.2 — 2026-05-18

Navigation & browse pages

  • Category nav bar — Home + each content type (Websites, Articles, Forums, Polls, Q-Shops, Library, Folders, Videos, Music, Images) as dedicated browse pages
  • Each category page aggregates all items of that type from every indexed QWB site, with Open forum / Read article / Browse shop actions plus View site
  • Compact Authenticate moved to masthead (right of Refresh index); signed-in state shows avatar + name pill
  • Search engine stays centered; when on a category page, search scopes to that type
  • Home retains stats, What's new, and a quick discover websites strip

v0.0.1 — 2026-05-24

First release of the Qortal Web Q-App — a decentralized directory and search engine for content published through Qortal Web Builder (QWB).

Qortal Web Q-App

  • Qortal Web Engine — large centered search bar indexing all QWB-published content client-side
  • Home dashboard when not searching:
    • Network statistics (total indexed items, websites, content-type breakdown)
    • Top publishers with QDN avatars
    • What's new — latest indexed publishes
    • Discover websites grid with homepage preview snapshots (from QWB Discover Templates)
  • Content types indexed: websites, forums, polls, articles, Q-Shops (links to Q-Shops Q-App), folders, library documents (PDFs etc.), videos, music, images
  • Light / dark themes — styled to match published QWB sites (Paper / Slate palette)
  • Authentication — Hub wallet sign-in with avatar and registered name
  • IndexedDB cache — index files cached by publisher + modified timestamp; only changed sites re-fetched
  • No custom backend — all data via qortalRequest / QDN SEARCH + FETCH

Qortal Web Builder (write side)

  • On Publish Website, QWB now emits a qwb-qortal-web-index-v1 DOCUMENT at .__qwb__/qortal-web-index.json
  • Index includes structured entries for all supported blocks on the site
  • WEBSITE description tagged with index schema marker for QDN search discoverability
  • Publish batch fingerprint skip when index content unchanged

Packaging

  • Flat Hub zip: Qortal-Web-v0.0.1-YYYYMMDD.zip
  • Build: npm run zip:qortalweb from repo root

Notes

  • Republish existing QWB websites once to populate the Qortal Web index on QDN
  • Q-Shops product catalogs continue to use the dedicated Q-Shops Q-App; Qortal Web indexes Q-Shop blocks and deep-links to Q-Shops