Improvement v0.0.6 (FIX) #7

Closed
rdenadai wants to merge 0 commits from improvements-v0.0.6-fix into main
Owner

Improvements v0.0.6

Lighthouse perf/a11y pass, accordion/tabs refactor, installable PWA, and docs.

Performance

  • Logo: 191 KiB PNG -> 16 KiB WebP with explicit width / height.
  • Google Fonts and Google Tag Manager moved out of index.html into src/libs/thirdParty.js, injected after window.load with a requestIdleCallback fallback.
  • Accordion tool components mount lazily on first open; mounted state persists across collapse / reopen.

Accessibility

  • <html lang="en"> and <main> wrapping router-view.
  • TabView / TabPanel now expose role="tablist", unique IDs, roving tabindex, and arrow / Home / End keyboard navigation with focus management.
  • RangeView exposes <label for> plus aria-label on each handle.
  • Per-tool unique IDs plus aria-label on QR, Social Card, and Shortener inputs.
  • Light-mode color tokens re-tuned for AA contrast.

Architecture

  • Extracted AccordionTooltip.vue (Teleport + markup) from AccordionView.
  • Accordion state, observers, and ARIA IDs keyed by stable item.key slugs so favorites reordering does not misroute state.
  • Replaced eager ResizeObserver setup with lazy attach-on-open / detach-on-close.
  • RangeView uses Vue 3.5 useId() for stable input IDs.

Security

  • Strict Content-Security-Policy in ui/nginx.conf (self + Google Fonts / Tag Manager allowlist, frame-ancestors 'none', form-action 'self', base-uri 'self').
  • nginx.conf adds Referrer-Policy and correct Content-Type for the Web App Manifest.

PWA

  • vite-plugin-pwa with generated SW: precaches the SPA shell and all lazy tool chunks.
  • Runtime cache: NetworkOnly for /api/* (GET queued in background sync, POST fails visibly), CacheFirst for Google Fonts.
  • navigateFallback to /index.html for SPA routes; /api/ and /sitemap.xml stay on the network.
  • registerType: 'prompt' plus a usePwaUpdate composable and a reload banner in App.vue.
  • manifest.webmanifest with 192 / 512 / maskable icons and apple-touch-icon.

Documentation

  • docs/RULES.md.
  • public/llms.txt with concrete method / body examples for each API-assisted tool.
  • Removed false "JWT signature verification" claim.
  • README updates: implemented tools moved out of "Planned"; current project structure.

Versions

  • ui/package.json, api/pyproject.toml, MenuBar.vue all aligned to 0.0.5.
# Improvements v0.0.6 Lighthouse perf/a11y pass, accordion/tabs refactor, installable PWA, and docs. ## Performance - Logo: 191 KiB PNG -> 16 KiB WebP with explicit `width` / `height`. - Google Fonts and Google Tag Manager moved out of `index.html` into `src/libs/thirdParty.js`, injected after `window.load` with a `requestIdleCallback` fallback. - Accordion tool components mount lazily on first open; mounted state persists across collapse / reopen. ## Accessibility - `<html lang="en">` and `<main>` wrapping `router-view`. - `TabView` / `TabPanel` now expose `role="tablist"`, unique IDs, roving `tabindex`, and arrow / Home / End keyboard navigation with focus management. - `RangeView` exposes `<label for>` plus `aria-label` on each handle. - Per-tool unique IDs plus `aria-label` on QR, Social Card, and Shortener inputs. - Light-mode color tokens re-tuned for AA contrast. ## Architecture - Extracted `AccordionTooltip.vue` (Teleport + markup) from `AccordionView`. - Accordion state, observers, and ARIA IDs keyed by stable `item.key` slugs so favorites reordering does not misroute state. - Replaced eager `ResizeObserver` setup with lazy attach-on-open / detach-on-close. - `RangeView` uses Vue 3.5 `useId()` for stable input IDs. ## Security - Strict `Content-Security-Policy` in `ui/nginx.conf` (self + Google Fonts / Tag Manager allowlist, `frame-ancestors 'none'`, `form-action 'self'`, `base-uri 'self'`). - `nginx.conf` adds `Referrer-Policy` and correct `Content-Type` for the Web App Manifest. ## PWA - `vite-plugin-pwa` with generated SW: precaches the SPA shell and all lazy tool chunks. - Runtime cache: `NetworkOnly` for `/api/*` (GET queued in background sync, POST fails visibly), `CacheFirst` for Google Fonts. - `navigateFallback` to `/index.html` for SPA routes; `/api/` and `/sitemap.xml` stay on the network. - `registerType: 'prompt'` plus a `usePwaUpdate` composable and a reload banner in `App.vue`. - `manifest.webmanifest` with 192 / 512 / maskable icons and `apple-touch-icon`. ## Documentation - `docs/RULES.md`. - `public/llms.txt` with concrete method / body examples for each API-assisted tool. - Removed false "JWT signature verification" claim. - README updates: implemented tools moved out of "Planned"; current project structure. ## Versions - `ui/package.json`, `api/pyproject.toml`, `MenuBar.vue` all aligned to `0.0.5`.
rdenadai closed this pull request 2026-08-24 17:17:13 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rdenadai/tilens!7
No description provided.