Skip to content

feat(ux): enhance usability with high-res page preview, global loading mask, and i18n localization - #7

Merged
gzz727007 merged 1 commit into
mainfrom
feat/ux-improvements
Sep 24, 2026
Merged

gzz727007 merged 1 commit into
mainfrom
feat/ux-improvements

Conversation

@gzz727007

Copy link
Copy Markdown
Member

🦭 Pull Request Description

Summary of Changes

This PR brings comprehensive usability, mobile responsiveness, and internationalization (i18n) improvements across the tool suite:

  1. Clean State Reset on Navigation:
    • Removed <KeepAlive> wrapper around the router-view in App.vue to ensure switching between tools automatically unmounts previous states and returns to a fresh initial screen.
  2. Global Loading Mask with Glassmorphism Design:
    • Created GlobalLoadingMask.vue and useGlobalLoading.js with full i18n localization.
    • Connected it to large document loading operations (e.g. in CompressTool.vue) to block interaction race conditions and prevent target size options from being unexpectedly overridden.
  3. High-Resolution Page Preview System:
    • Built a reusable PagePreviewModal.vue component equipped with interactive zoom controls (0.5x ~ 3.0x), fit-to-screen reset, mouse wheel zoom (Ctrl + Wheel), and keyboard shortcuts (+, -, 0, Esc).
    • Integrated on-the-fly 2.5x high-DPI rendering and native page rotation across:
      • OrganizeTool.vue (Visual Page Reorder, Rotate & Delete)
      • SplitTool.vue (Page Split & Extraction, with persistent document lifecycle)
      • PdfToImageTool.vue (PDF to Image conversion)
      • ImageToPdfTool.vue (Image to PDF conversion, with support for scanner-enhanced previews)
  4. Card UI Overhaul & Touch/Mobile Responsiveness:
    • Re-architected thumbnail cards in OrganizeTool.vue to separate header actions from thumbnail hover overlays, permanently eliminating button-and-badge crowding and overlapping.
    • Adapted actions with responsive visibility (opacity-85 md:opacity-0 md:group-hover:opacity-100) so mobile/touch users can tap buttons directly without relying on desktop mouse hover.
  5. Target Size Compression Progress Internationalization:
    • Replaced hardcoded English progress messages in src/utils/pdfCompress.js with dynamic t() calls.
    • Added complete translations to zh.json, en.json, de.json, es.json, and fr.json.

Type of Change

  • 🐛 Bug fix (non-breaking change fixing an issue)
  • ✨ New feature (non-breaking change adding functionality)
  • ⚡ Performance optimization (rendering, memory, or bundle size)
  • 🎨 UI / UX refinement
  • 🌍 Internationalization / Translations (new or updated language)
  • 📝 Documentation update (README, Guides, Comments)
  • 🧪 Test suite enhancement

🛡️ Privacy & Quality Checklist

  • 100% Client-Side Invariant: All code runs strictly in the browser RAM / WebAssembly. No user documents or telemetry data are ever sent over the network.
  • Automated Tests: I have verified that all existing tests pass (npm test). (35 test files, 224 unit tests passing).
  • New Tests Added: Updated unit test assertion to support localized progress strings in tests/compressTargetSize.test.js.
  • Responsive & Cross-Browser: Verified that UI works smoothly across desktop and mobile screens.
  • Self-Review: I have performed a self-review of my own code and removed unnecessary console.log statements.

Related Issues

Closes #

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
pdfseal f36cd60 Commit Preview URL

Branch Preview URL
Sep 24 2026, 02:45 PM

@gzz727007
gzz727007 merged commit b7fb886 into main Sep 24, 2026
4 checks passed
@gzz727007
gzz727007 deleted the feat/ux-improvements branch September 24, 2026 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant