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

66 lines
3.5 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.
# 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 Editor_**Q-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.