4.0 KiB
4.0 KiB
Q-Edit v1.0.0 — Release Notes
Date: 2025-09-05
Summary
Q‑Edit 1.0 is a major redesign and stabilization release. The UI is now a single‑view file explorer with a sidebar tree, a dedicated full‑page Preview, and global media controls that keep audio/video playing as you navigate. Under the hood, we modularized key logic, added URL‑hash state for pagination, and shipped a small but solid test suite with coverage gates.
Highlights
- Single‑view routing so pages never overlap
- Sidebar file tree with service folders, prefix groups, and leaf navigation to Preview
- Full‑page Preview with Edit / Replace / Delete actions and multi‑file path input (for WEBSITE/APP)
- Safer Preview rendering: JSON pretty‑print; HTML via sandboxed iframe; PDF and media inline with responsive sizing
- Global media playback with header controls; promotion on navigate; Stop revokes Blob URLs
- Pagination with jump‑to‑page, URL hash deep‑linking (e.g.
#page=17) and persistent items‑per‑page - Hide Deleted toggle (ON by default) with conservative tiny‑file detection
- Auth auto‑init; Name switcher refreshes lists cleanly; Publish menu scaffold + compose text shell
- Tooling: ESLint/Prettier, Vitest + jsdom tests, coverage thresholds, docs & tests audits
Notable Changes
- Pagination state
- Current page is reflected in
location.hashand restored on reload/back/forward. - Items‑per‑page preference persists in
localStorageunderqedit:itemsPerPage.
- Current page is reflected in
- Content table
- Identifier text opens Preview; image thumbnails are compact; summary shows total size.
- Bulk Delete mode retained from 0.7.x with clearer buttons and selection persistence.
- Media
- Playing media migrates to a global host when switching views so playback continues.
- Stop clears playback and revokes Blob URLs to free memory.
- Accessibility & UX
- Active pagination item marked with
aria-current="page". - Sidebar can be collapsed and restored; state persisted.
- Active pagination item marked with
Breaking/Behavior Changes
- Default “Hide Deleted” is ON; tiny delete markers are hidden from counts and lists.
- Items‑per‑page preference now stored as
qedit:itemsPerPage(prior ad‑hoc keys are still read when present for compatibility and then mirrored). - Preview opens as a full page instead of inline by default; an inline viewer remains available for future use.
Upgrade Steps
- Replace
index.html,style.css, andscript.jswith the v1.0.0 versions. - Include
src/andscripts/for the new hash/prefs/pagination bindings. - Hard refresh your browser to clear cached assets.
Optional: run the local server and tests
node scripts/serve.mjs→ http://localhost:5173node node_modules/vitest/vitest.mjs run --coveragenode scripts/ci-check-coverage.mjs
QA Checklist
- Authenticate → name(s) populated; switching names refreshes lists.
- Hide Deleted toggle defaults ON; toggling updates counts and results.
- Pagination: First/Prev/Next/Last, windowed pages with ellipses; Jump input clamps to 1..N.
- Items per page persists; URL
#pagereflects navigation and is restored on reload. - Sidebar: services show correct counts; prefix groups expand; leaf click opens Preview.
- Preview: JSON prettified; HTML sandboxed; PDF and media render inline; media continues when switching views; Stop resets.
- Bulk Delete: selections persist across page/filter changes; Delete N Files publishes and removes rows.
Known Limitations
- Search is scaffolded (form + shell); wiring to results tree is next.
- Editors are basic; richer text/HTML and media tools are planned.
- Very large accounts may require virtualization for best performance.
- Some tiny delete‑detection heuristics may need tuning per service edge cases.
Developer Notes
- New modules under
src/andscripts/are unit‑tested (Vitest + jsdom). Coverage thresholds are enforced byscripts/ci-check-coverage.mjs. - The legacy controller
script.jsremains the central coordinator; further modularization is planned.