Files
q-edit/docs/RELEASE_NOTES_v0.6.0.md
2025-09-02 18:43:09 -04:00

3.5 KiB
Raw Permalink Blame History

Q-Edit v0.6.0 — Release Notes

Date: 2025-08-23

Overview

This release rebrands QDN Editor to Q-Edit and delivers a major overhaul to authentication, content previews, filtering, and support for PRIVATE services on QDN.

Highlights

  • Rename: QDN EditorQ-Edit (UI and docs updated).
  • Multi-name auth: New Authenticate flow detects the users primary name (fallback to first name) and provides a name switcher in the header.
  • Global loading UX: Full-page overlay spinner appears during authenticate, name switching, filter changes, and pagination.
  • Preview pipeline: Uses qortalRequest(FETCH_QDN_RESOURCE) instead of /arbitrary/... to avoid auto-downloads and render inline.
  • Readiness polling: Uses GET_QDN_RESOURCE_STATUS (build:true initially) and polls until 100%; per-cell “XX% Loaded” progress.
  • Media previews: Base64 → Blob URLs with lightweight MIME detection, enabling audio/video controls in-browser.
  • Images UX: Previews constrained to a max height with aspect preserved. Click to open a fullscreen overlay (also preserves aspect).
  • Service chips: Replaced dropdown with toggle chips showing per-service counts. Multiple services can be browsed concurrently.
  • Identifier column: Icon-first — Edit (file-up.png), Delete (red-x.svg), then the identifier text.
  • PRIVATE services: Decrypt after local build using qortalRequest({ action: 'DECRYPT_DATA' }) (no publicKey required for the owners content).
  • THUMBNAIL support: THUMBNAIL services are now treated as images for previews.

Technical Changes

Authentication & Name Handling

  • Added accountLogin() integration with GET_USER_ACCOUNT, GET_ACCOUNT_NAMES, GET_PRIMARY_NAME.
  • Maintains isAuthenticated, authStatus, namesStatus; updates top-right UI.
  • Name switch triggers full refresh (loadAllResults() + fetchPage()).

Loading & Progress

  • Added showSpinner()/hideSpinner(); cover the content area during longer transitions.
  • waitForResourceReady() polls GET_QDN_RESOURCE_STATUS and calls an onProgress(pct) callback to update per-cell text.

Previews

  • Text-like services try raw first (string/JSON), fallback to base64 → UTF-8 decode; render via sandboxed iframe.srcdoc or <pre>.
  • Binary/media services fetch base64 only; convert to Blob URLs using detected/guessed MIME.
  • PRIVATE services always fetch base64 → DECRYPT_DATA → render by base kind.
  • getBaseServiceKind() now maps THUMBNAIL to image.

Filtering & Pagination

  • loadAllResults() loads all items for the active name once; builds serviceCounts.
  • selectedServices is a Set of included services; empty set shows all.
  • applyServiceFilter() derives filteredResults, totalResults, and totalSize.
  • fetchPage() slices filteredResults for client-side pagination.

Identifier Column

  • Replaced text links with icons and moved to Edit, Delete, Identifier ordering.

Fixes & Correctness

  • Omit identifier parameter when empty/"default" to fix default resource fetching.
  • Resolved duplicate DOM declarations and stray braces from earlier merges.
  • Ensured produced ZIPs are flat (no nested folder).

Known Areas / Next

  • Optional: mini per-cell spinner alongside percentage.
  • Cache last selected services and name in localStorage.
  • Add search within results and chip filtering by substring.
  • Add lazy pagination for extremely large resource sets.