Files
q-edit/docs/RELEASE_NOTES_v1.0.0.md

75 lines
4.0 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 v1.0.0 — Release Notes
Date: 2025-09-05
## Summary
QEdit 1.0 is a major redesign and stabilization release. The UI is now a singleview file explorer with a sidebar tree, a dedicated fullpage Preview, and global media controls that keep audio/video playing as you navigate. Under the hood, we modularized key logic, added URLhash state for pagination, and shipped a small but solid test suite with coverage gates.
## Highlights
- Singleview routing so pages never overlap
- Sidebar file tree with service folders, prefix groups, and leaf navigation to Preview
- Fullpage Preview with Edit / Replace / Delete actions and multifile path input (for WEBSITE/APP)
- Safer Preview rendering: JSON prettyprint; 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 jumptopage, URL hash deeplinking (e.g. `#page=17`) and persistent itemsperpage
- Hide Deleted toggle (ON by default) with conservative tinyfile detection
- Auth autoinit; 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.hash` and restored on reload/back/forward.
- Itemsperpage preference persists in `localStorage` under `qedit:itemsPerPage`.
- 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.
## Breaking/Behavior Changes
- Default “Hide Deleted” is ON; tiny delete markers are hidden from counts and lists.
- Itemsperpage preference now stored as `qedit:itemsPerPage` (prior adhoc 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
1. Replace `index.html`, `style.css`, and `script.js` with the v1.0.0 versions.
2. Include `src/` and `scripts/` for the new hash/prefs/pagination bindings.
3. Hard refresh your browser to clear cached assets.
Optional: run the local server and tests
- `node scripts/serve.mjs` → http://localhost:5173
- `node node_modules/vitest/vitest.mjs run --coverage`
- `node 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 `#page` reflects 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 deletedetection heuristics may need tuning per service edge cases.
## Developer Notes
- New modules under `src/` and `scripts/` are unittested (Vitest + jsdom). Coverage thresholds are enforced by `scripts/ci-check-coverage.mjs`.
- The legacy controller `script.js` remains the central coordinator; further modularization is planned.