b54a3139c7
Includes QWB, Qortal Web, and Q-Shops Q-Apps with shared packages and build scripts. Co-authored-by: Cursor <cursoragent@cursor.com>
14 KiB
14 KiB
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 moderator’s 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 Q‑Shops 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 Q‑Apps to the quick list (
toastreference in block library). - Versioning:
QWB_VERSION, root andpublic/manifest.json, this file, and the in-app changelog are 1.0.1;npm run zip:qwbuses v1.0.1 in the release archive name; Portfolio Q‑App zip script unchanged (Portfolio-Q-App-v3-YYYYMMDD.zip).
v1.0.0
- Publish WEBSITE — large sites fixed: Site config ships as
qwb-site-config.jsonin the WEBSITE zip with a tiny inline stub inindex.html, so multi‑MB 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 / Q‑Shops 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. - Q‑Apps 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, Q‑Shop, newsletter, forum/poll, footer, etc.). Q‑App tab labels wrap so every app button stays reachable.
- Folders — cross-publish: Share Folders can publish to Q‑Share, Q‑Tube, and Q‑Music from the inspector (batch preview, categories/genres, per-track metadata) without leaving QWB.
- Versioning:
QWB_VERSION, root andpublic/manifest.json, this file, and the in-app changelog are 1.0.0;npm run zip:qwbuses v1.0.0 in the release archive name; Portfolio Q‑App 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 andpublic/manifest.json, this file, and the in-app changelog are 0.1.1;npm run zip:qwbuses v0.1.1 in the release archive name.
v0.1.0
- Folders (Q‑Share) — 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 Q‑Share; 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 in‑app changelog list are 0.1.0;npm run zip:qwbuses 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-stylebeforepagination (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
resourceIdin 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:qwbarchive 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 uncappedGET_ACCOUNT_NAMESround-trip. - Poll search & reads:
SEARCH_QDN_RESOURCESover the bridge is time-capped; on timeout or empty results the app falls back to the node’s/arbitrary/resources/searchHTTP 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_DATAandGET_GROUPS_WITH_MEMBERso “Checking voting eligibility…” clears even when the bridge misbehaves. - Vote publish: Each vote is still a signed
PUBLISH_QDN_RESOURCEon theJSONservice (QWBIXVpayload, visible network-wide except where the site owner hides aresourceIdor 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:qwbarchive 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:
QShopDigitalDownloadLinknow importsresolveFileDownloadHrefso FILE links resolve correctly in the Hub. - Versioning:
QWB_VERSION, root /publicmanifest.json, and the in-app Changelog are 0.0.6;npm run zip:qwbarchive name uses v0.0.6.
v0.0.5
- Multi-column block: New block under Add blocks → Multi-column — section title (
h1), 2–6 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+MutationObserverDOM 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
qortalRequestpatterns (GET_NAME_DATAfor recipient,SEND_COINfor 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.zipviascripts/zip-qwb-release.sh(canonical QWB bundle going forward). ExistingPortfolio-Q-App-v3-*.zipscript unchanged.
v0.0.3
- Albums — bulk publish: Bulk publish to QDN uses
PUBLISH_MULTIPLE_QDN_RESOURCESso the Hub shows one approval for all selected images, not a separate confirmation per file. - Albums — carousel: The carousel stage sizes to each image’s 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 block’s Options.
- Music — Q-Music sync: Pending songs, per-track cover thumbnails, playlist payloads, and playlist art are published in a single
PUBLISH_MULTIPLEbatch (aligned with Q-Music 2.0), using thefilefield for AUDIO where the Hub allows it, with base64 and single-publish fallbacks. Per-track “Upload & publish” for AUDIO/VIDEO also prefersfilefor hub compatibility. - Versioning:
QWB_VERSIONandmanifest.jsonset 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.