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

294 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 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 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 `<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