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

14 KiB
Raw Permalink Blame History

Changelog — Qortal Web Builder (QWB)

v1.0.1

  • Discover Templates: New Discover Templates button above Add blocks opens a catalog of global websites published through QWB (matched via builder DOCUMENT + verified WEBSITE bundle). Search, category filter, live previews, Open in new tab, and Choose to apply block layout and sub-pages as a fresh draft.
  • Site admin appearance: Options → Pages — toggle Highlight site admin (golden avatar & name) in Comments, Forum, and Vote / poll (on by default; turn off to blend the publisher in like any other participant).
  • Forum — archived posts: Bottom strip renamed Archived; posts stay hidden until you click the moderators avatar; gold highlight in that section respects the admin-appearance setting; duplicate Archive / Remove on your own posts fixed; Reply sits left of Replies.
  • Forum — reply avatars: The Replies strip lists everyone in the thread (including nested repliers); clicking an avatar expands the branch and highlights all replies from that person.
  • Poll — moderation UI: Removed per-option Hide vote buttons on the published site (use avatar click → Block / Hide votes in moderator view).
  • Publish WEBSITE — fewer redundant QDN writes: Skips republishing unchanged forum/poll snapshot JSON and QShops index/directory DOCUMENT rows when content fingerprints match the last successful publish (toast reports skipped count).
  • Fix: Start building after login no longer crashes when pinning QApps to the quick list (toast reference in block library).
  • Versioning: QWB_VERSION, root and public/manifest.json, this file, and the in-app changelog are 1.0.1; npm run zip:qwb uses v1.0.1 in the release archive name; Portfolio QApp zip script unchanged (Portfolio-Q-App-v3-YYYYMMDD.zip).

v1.0.0

  • Publish WEBSITE — large sites fixed: Site config ships as qwb-site-config.json in the WEBSITE zip with a tiny inline stub in index.html, so multiMB configs no longer corrupt on load and visitors no longer fall back to the starter template. Republish WEBSITE after upgrading QWB to pick this up.
  • Publish flow — modal & batching: Publish Website shows a center-screen progress modal (prepare bundles → build ZIP → Hub approval → open live site). Forum/poll JSON snapshot bundles are included in the same Hub batch as the WEBSITE (and draft / QShops index files when present), with a labeled transaction count before you approve.
  • Published site performance: Negative caches and smarter rescans cut repeated QDN noise — peer JSON 404 skips, avatar miss caches (HrefAvatar, peer names), newsletter service 801 HTTP skip (persisted in session), map tile owner misses, GET_USER_ACCOUNT dedupe, bridge message debounce, and forum/poll bundle cache rules that avoid wiping good data on rescan.
  • QApps block — faster, clearer loading: Tab mode loads only the active embed (pool keeps state when you switch tabs). Grid mode lazy-loads off-screen tiles. Embed URLs use the /render/APP/… fast path instead of blocking up to 45s on status polls first. A spinner overlay and “Loading [app name]…” show while resolving and while the iframe loads — no more “Could not load this embed” during a normal slow start.
  • Mobile — published sites: Header with more than 3 nav buttons collapses to ; the menu opens as a dropdown under the icon with centered horizontal button rows. Block layout polish for phones (hero, buttons, multi-column stack, QShop, newsletter, forum/poll, footer, etc.). QApp tab labels wrap so every app button stays reachable.
  • Folders — cross-publish: Share Folders can publish to QShare, QTube, and QMusic from the inspector (batch preview, categories/genres, per-track metadata) without leaving QWB.
  • Versioning: QWB_VERSION, root and public/manifest.json, this file, and the in-app changelog are 1.0.0; npm run zip:qwb uses v1.0.0 in the release archive name; Portfolio QApp zip script unchanged (Portfolio-Q-App-v3-YYYYMMDD.zip).

v0.1.1

  • Folders — PDF preview (published site): PDF.js runs on a Hub-safe main-thread worker path; the PDF modal keeps Download and removes extra open actions. Theme controls (Light / Dim / Smart) tune the chrome and page rendering (Smart = saturation-aware invert for text-heavy pages). Zoom re-renders at the chosen scale with a scrollable stage (no CSS down-scale that looked like stretching).
  • Folders — image thumbnails: Thumbnails use object-fit: contain so images stay true to aspect in grid/list “windows”; multi-image open remains View (aligned with single-image wording).
  • Folders — sort by name: Numeric ordering for numbered sequences (e.g. 1 … 214), including when a shared publish title leaves the sequence only in the filename (trailing digit run after stripping extension). Digit-only titles and subfolder names with a trailing numeric suffix follow the same ordering rules.
  • Versioning: QWB_VERSION, root and public/manifest.json, this file, and the in-app changelog are 0.1.1; npm run zip:qwb uses v0.1.1 in the release archive name.

v0.1.0

  • Folders (QShare) — paste published links: Add files that already live on QDN by pasting a qortal://APP/Q-Share/share/… metadata link; descriptions and categories are read from DOCUMENT JSON (no duplicate upload).
  • Folders — subcategories & metadata: When publishing from QWB (or importing from links), second-tier categories and optional music genre (third tier under Audio → Music) align with QShare; viewer cards show plain/HTML descriptions with expand/collapse for long text plus a compact category breadcrumb.
  • Folders — playlists & galleries: In a folder whose files include multiple audio tracks, playback runs as an automatic playlist (next track starts when one ends). Opening an image uses a fullscreen-style viewer with Prev / Next controls, arrow keys, and a thumbnail strip of nearby images including previous/next items.
  • Published site — QDN interactive payloads: Reads for comments, polls, and forums use more resilient bridge/HTTP merges (timeouts, retries, optional rescan/cache bust, dual-pass searches) so sparse peers still converge on useful data instead of wiping what you already have.
  • Versioning: QWB_VERSION, manifest.json, CHANGELOG.md, and the inapp changelog list are 0.1.0; npm run zip:qwb uses v0.1.0 in the archive filename.

v0.0.8

  • Forum & polls — QDN reads: Peer search (SEARCH_QDN_RESOURCES + node /arbitrary/resources/search) uses keyset-style before pagination (same idea as Quitter), skips 32-byte placeholder and junk size rows, merges bridge + HTTP results, and allows a longer bridge walk before falling back so different nodes see a more consistent slice of topics, replies, votes, and poll tallies.
  • Published site — no phantom “empty” wipes: Full refreshes merge new QDN payloads into existing state instead of replacing with an empty list when a leg returns no rows, so a thin or lagging indexer no longer clears posts or votes that were already loaded.
  • Forum & Poll blocks: A Refresh control on the published site reruns QDN loads for that block (forum topics/replies/votes; poll votes and moderation rows).
  • Optimistic posts & votes: Right after you submit a topic, reply, forum score, or poll choice, the UI shows that row slightly faded with a small circular spinner until a sync sees the same resourceId in QDN search results (chain + indexer), then it returns to solid styling.
  • Versioning: QWB_VERSION, manifest.json, and the in-app Changelog are 0.0.8; npm run zip:qwb archive name uses v0.0.8.

v0.0.7

  • Polls on published sites — reliability: Voting and loading results no longer stall on slow or stuck Hub bridges. Registered-name resolution for publishing votes uses the same layered lookup as Q-Mail (same-origin /names/address/…, login gate cache, short Hub fallback) instead of an uncapped GET_ACCOUNT_NAMES round-trip.
  • Poll search & reads: SEARCH_QDN_RESOURCES over the bridge is time-capped; on timeout or empty results the app falls back to the nodes /arbitrary/resources/search HTTP API. Paginated HTTP search uses per-request timeouts so the UI cannot hang indefinitely.
  • Poll eligibility: Restricted polls (account level / group membership) use bounded Hub timeouts on GET_ACCOUNT_DATA and GET_GROUPS_WITH_MEMBER so “Checking voting eligibility…” clears even when the bridge misbehaves.
  • Vote publish: Each vote is still a signed PUBLISH_QDN_RESOURCE on the JSON service (QWBIXV payload, visible network-wide except where the site owner hides a resourceId or blocks an address). The publish call now uses the long Hub window (qReqLong) so approval and PoW are not cut off by default bridge timeouts.
  • Versioning: QWB_VERSION, manifest.json, and the in-app Changelog are 0.0.7; npm run zip:qwb archive name uses v0.0.7.

v0.0.6

  • Q-Shop — digital products: Products can be physical or digital (Options / block inspector). Digital items attach a published QDN FILE (PDF, zip, book asset, etc.) at product level or per variant. Checkout stores a snapshot of the file identifier on each order line so buyers keep access even if the catalog changes later.
  • Digital-only checkout: Carts with only digital lines use delivery mode digital — no ship/pickup choice or address required; shipping charges stay off those orders.
  • Downloads after payment: On order confirmation, My Orders, and the invoice, buyers see a Download control per digital line once the order is paid or fulfilled (pending payment shows “download after payment”).
  • Mixed carts: Physical + digital in one order still uses ship/pickup for fulfillment; only digital lines show file downloads.
  • Bugfix: QShopDigitalDownloadLink now imports resolveFileDownloadHref so FILE links resolve correctly in the Hub.
  • Versioning: QWB_VERSION, root / public manifest.json, and the in-app Changelog are 0.0.6; npm run zip:qwb archive name uses v0.0.6.

v0.0.5

  • Multi-column block: New block under Add blocks → Multi-column — section title (h1), 26 columns with square cover image, heading, description, optional column link, and a primary-style bottom button; desktop uses an equal-width grid; mobile supports stack (single column) or swipe (horizontal scroll with snap). Vertical padding 36px / 16px; theme surfaces use Block appearance (same chrome presets as other blocks).
  • Rich text — media links on touch: Links created with Attach image or Q-Tube preview inject an inline image or thumbnail (plus play affordance for video) so viewers without hover still see the media; behavior matches between published sites, builder, and Mobile View (RteMediaLinkOverlay + MutationObserver DOM enhancement).

v0.0.4

  • Q-Shop — full storefront in the block: Catalog with FilterSidebar (category, price min/max, availability, tags), SortBar (newest, price ascending/descending, bestseller), and ProductGrid with image, name, price, stock badge, and quick-add.
  • Product detail: Modal from the product name with Gallery (carousel), ProductInfo (variants, quantity, add to cart), and ProductTabs (Description, Ingredients, Shipping, Reviews — reviews only after a purchase recorded in this browser from checkout).
  • Cart & checkout: CartLineItems, CouponField, CartSummary, CheckoutButton; CheckoutView steps for customer info (Q-Mail-oriented), shipping vs pickup (address or coordinates in DD / DMS / DDM), PaymentMethodSelector (QORT vs custom Q-Asset with Q-Assets Q-App link), and review/submit. Uses qortalRequest patterns (GET_NAME_DATA for recipient, SEND_COIN for QORT when available); see Qortal API documentation for node concepts.
  • Order confirmation: Order id, payment note, OpenStreetMap embed when coordinates resolve, formatted DMS pair (unicode primes, per GPS Pins — DD, DMS, DDM), link to World Map Q-App, Q-Mail and optional phone.
  • My orders & merchant: Expandable local order history; Merchant tab for site admins — ledger, inventory overrides (browser-local), stats, coupon visibility; full product schema still in Options.
  • Release zip: Qortal_Web_Builder-v0.0.4-YYYYMMDD.zip via scripts/zip-qwb-release.sh (canonical QWB bundle going forward). Existing Portfolio-Q-App-v3-*.zip script unchanged.

v0.0.3

  • Albums — bulk publish: Bulk publish to QDN uses PUBLISH_MULTIPLE_QDN_RESOURCES so the Hub shows one approval for all selected images, not a separate confirmation per file.
  • Albums — carousel: The carousel stage sizes to each images natural aspect. Controls include on-frame prev/next, bottom dot indicators, swipe, and arrow keys when the region is focused; corner radius comes from the blocks Options.
  • Music — Q-Music sync: Pending songs, per-track cover thumbnails, playlist payloads, and playlist art are published in a single PUBLISH_MULTIPLE batch (aligned with Q-Music 2.0), using the file field for AUDIO where the Hub allows it, with base64 and single-publish fallbacks. Per-track “Upload & publish” for AUDIO/VIDEO also prefers file for hub compatibility.
  • Versioning: QWB_VERSION and manifest.json set to 0.0.3; in-app Changelog (top bar) documents this file.

v0.0.2

  • Interactive blocks: Comments, Vote / poll, and Q-Shop under Add blocks → Interactive. Visitors use Authenticate for comments, voting, and (when enabled) the Q-Shop cart.
  • Comments & poll: QDN peer posts, owner moderation, poll UI with bars and avatars.
  • Q-Shop: optional “require Authenticate for cart”.
  • Block library: popular Q-Apps, rich-text qortal:// link defaults.

v0.0.1

  • Session, drafts (DOCUMENT), core blocks, visual editor, media uploads, publish WEBSITE, resizable UI, themes.