b54a3139c7
Includes QWB, Qortal Web, and Q-Shops Q-Apps with shared packages and build scripts. Co-authored-by: Cursor <cursoragent@cursor.com>
18 KiB
18 KiB
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_THEMEpostMessage from Qortal Web; published visitor appliesdata-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
qortalRequestis 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
sitePublisherand per-entrypublisherwin over DOCUMENT search hit and display titles (fixes 404s likeBiohackers 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
inQortalso 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
postMessageauth sync + hidden per-site warmup iframe - Scroll-to-block after embed ready handshake (
QORTAL_WEB_EMBED_READYfrom 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
syncNativeViewerSessionbefore forum/poll/article gates render
v0.0.21 — 2026-05-26
Startup crash fix
- Cross-origin bridge probe — reading
parent.qortalRequestin the Hub iframe threwSecurityErrorand 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
publisherNamefrom loaded site config (and indexsitePublisher) 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
qortalRequeston 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 +
inQortalstay aligned with the live bridge for compose/vote gates
v0.0.15 — 2026-05-25
Forum / poll loading
- Skip
Your Nameplaceholder — never used for QDN fetches (root cause of empty forums in log) - Publisher from index owner — site config
publisherNameno 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 brokenqortal://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/addresslist, not truncated address label
v0.0.14 — 2026-05-25
Avatars
- Robust QDN avatar fetch — tries
/arbitrary/THUMBNAIL/{name}/qortal_avatarand/arbitrary/THUMBNAIL/{name}, then HubFETCH_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
sitePublisherinto 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
thumbnailHrefwins over PDF page-1 preview - Separate PDF cache key — prefetched PDF blobs no longer overwrite custom thumbs
- Index: folder default thumbs —
defaultThumbnailHrefon folders inherited into library index entries (requires QWB republish for folder-level thumbs)
v0.0.12 — 2026-05-25
Auth
setSessionUserimplemented — 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_ACCOUNTno longer re-logs you in applyRuntimeContextnull fix — passinguser: nullclears session instead of preserving stale auth
Data loading
- QDN publisher from index owner — fetches use DOCUMENT search
name(not website display title); fixes 404s onBiohackers Corner/The People of Qortal - Bridge-first site config —
FETCH_QDN_RESOURCEbefore HTTP forqwb-site-config.json - Forum/poll probe — tries bridge + all publisher candidates per block
- Safe base64 decode — avoids
InvalidCharacterError: atobon malformed QDN payloads
v0.0.11 — 2026-05-25
Auth & interactive blocks
sessionUserbridge — 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/canVoteuse reactiveuseQortalApiPresent()(fixes “Authenticate to join” while signed in) - Publisher for peer fetches — site config
publisherNameused after load; better fallback when index title ≠ QDN name - Visitor store —
inQortalstays 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_v1images) - 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
qortalRequestbridge 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+ArticleForumSectionwith live QDN comment threads - Music — full
MusicBlockView(albums, shuffle, playback rate); deep-links to indexed track - Images —
AlbumsBlockViewlightbox 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,ShareFoldersBlockViewaccept 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 replacingbuilderStorefor 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 abuilderStoreshim →@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,requiresAuthfor 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.jsonfrom 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 site’s 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
pageSlugandcontentRefmetadata 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-scrollpostMessage 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-v1DOCUMENT 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:qortalwebfrom 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