All notable changes to FormEase are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Universal Ambient Breathing Glow Border Feedback (Zero-Slop Recompression Indicators):
- Engineered dynamic, color-coded ambient glowing border transitions (
border-2 ring-4 shadow-[...] animate-pulse duration-300) across all slots, cards, and batch controls during real-time recompression. - Color-harmonized by domain: Emerald (
PhotoSlotCard), Blue (SignatureSlotCard), Amber (DocumentSlotCard), and Emerald (SandboxQueueViewGrid/List &GlobalBatchBar). - Zero obstructive overlay badges, banners, or layout shifts — pure hardware-accelerated CSS feedback.
- Engineered dynamic, color-coded ambient glowing border transitions (
- Ultra-Responsive Mobile & Small-Width Screen Overhaul:
- Re-architected all queue cards (
PhotoSlotCard,SignatureSlotCard,DocumentSlotCard) with high-efficiency collapsible accordion panels for advanced controls. - Refactored all modals (
DossierExportModal,DiffViewer,CustomPresetModal) with responsive stacked layouts (flex-col sm:flex-row), scroll containment (data-lenis-prevent), and zero horizontal overflow on 320px–375px devices. - Adaptive scrubber controls and touch-target padding in
SizeCeilingController,PixelDimensionController,ByteCounter,GlobalBatchBar,ModeTabBar, andPresetSelector. - Responsive hero typography, edge-to-edge container margins, and wrapped footer navigation in
App.tsxandFooter.tsx.
- Re-architected all queue cards (
- FormEase Logo Light-Theme Typography Fix:
- Sanitized brand typography in
FormEaseLogo.tsxwith dynamic theme contrast, eliminating washed-out text on bright backgrounds.
- Sanitized brand typography in
- Universal Input Focus Sanitization:
- Sanitized harsh browser default rectangular focus rings in
index.csswith clean:focus-visibleoffset rings.
- Sanitized harsh browser default rectangular focus rings in
- Deployxa Cloud Host & Worker Configuration:
- Configured
vite.config.tswithhost: true,allowedHosts: true, and ES module worker formatting for zero-friction containerized deployment.
- Configured
- Zero Layout Shift (0px CLS) Floating Explainer Tooltips:
- Extracted layout-shifting inline alerts into a floating popover system (
ResolutionLimitExplainer.tsx) rendered directly intodocument.bodyvia React Portals (createPortal). - Added real-time screen boundary collision detection (
getBoundingClientRect) with automatic above/below vertical flipping and clamped viewport margins (left >= 16px,right <= innerWidth - 16px). - Implemented crisp SVG vector callout arrows (
<svg viewBox="0 0 16 8">) eliminating blurry or skewed CSS diamond artifacts across high-DPI screens. - Transformed static size warning pills in
ByteCounter.tsxinto interactive, keyboard-accessible trigger badges with tactile hover states and 1-click Auto-Scale resolution correction.
- Extracted layout-shifting inline alerts into a floating popover system (
- Hardware-Accelerated Lenis Inertia Physics:
- Integrated
lenissmooth scrolling via custom hookuseSmoothScroll.tsand core physics styles inmain.tsx. - Configured
respectReducedMotion: falseandautoRaf: trueto prevent Windows OS "Animation effects: Off" lerp freezes (lerp = 1), delivering fluid inertia for evaluators while maintaining mobile touch bypass. - Added
data-lenis-preventscroll-chaining isolation to internal scrollable containers inDiffViewer.tsx,DossierExportModal.tsx, andCustomPresetModal.tsx. - Normalized document root scrolling in
index.cssviahtml { overflow-x: clip; }, restoring native window scroll event capture.
- Integrated
- Ergonomic 2-Column Batch Studio & Compact List View:
- Restructured
SandboxQueueView.tsxfrom a 3-column layout into an ergonomic 2-column Studio Grid (grid-cols-1 lg:grid-cols-2, 560px+ minimum card width), eliminating control squashing and card drift. - Introduced an interactive
[⊞ Grid] / [☰ Compact]view switcher inGlobalBatchBar.tsxfeaturing an ultra-dense tabular list view for rapid multi-file auditing.
- Restructured
- Universal Feedback & Rating Collector:
- Shipped
FeedbackRatingCollector.tsxfeaturing an interactive 5-star rating matrix, 1-click preset sentiment chips, optional email field, and structured comments. - Integrated non-blocking telemetry dispatch to
https://visar-backend.onrender.com/api/v1/feedbackwith verified confirmation receipts and a 1-click[↺ Update / Re-give Feedback]reset loop.
- Shipped
- Expanded File Size Ceilings:
- Expanded user-configurable upper size bounds across all processing categories: Photos up to 10 MB, Signatures up to 2 MB, Documents up to 25 MB, and Batch Sandbox up to 25 MB.
- Decoupled Local Input Buffers:
- Decoupled numeric inputs from immediate state synchronization in
PixelDimensionController.tsxandSizeCeilingController.tsxusing local string draft buffers (draftWidth,draftHeight,draftCeiling). - Users can freely backspace, clear inputs, or type values like
999without premature numeric clamping or cursor jumping; values commit ononBlurorEnter.
- Decoupled numeric inputs from immediate state synchronization in
- Slot Card Overflow Decoupling:
- Removed
overflow-hiddenconstraints from slot card wrappers inPhotoSlotCard.tsx,SignatureSlotCard.tsx, andDocumentSlotCard.tsx, preventing floating tooltips and popovers from being clipped at container boundaries.
- Removed
- Zero Layout Shift (0px CLS):
- Eliminated UI jumping and content drift caused by resolution limit explainer banners mounting and unmounting in the DOM.
- Input Reset & Premature Clamping:
- Fixed a critical usability bug where typing multi-digit dimensions (e.g.,
1200) prematurely clamped to single-digit minimum bounds (e.g.,50).
- Fixed a critical usability bug where typing multi-digit dimensions (e.g.,
- Tooltip Viewport Clipping:
- Fixed popovers getting clipped by slot card container edges on short cards by hoisting overlays to root body level via React Portals.
- Arrow Geometry Skewing:
- Replaced rotated CSS square pseudo-elements with clean SVG triangles to eliminate border overlap and distortion.
- Dual-Theme Semantic Design System:
- Engineered full support for Paper Light (
#fbfbf9) and Midnight Dark (#090d16) palettes using CSS custom properties insrc/index.css. - Added tactile 28px radial-masked graph checkerboard canvas in
App.tsxfor visual depth across light and dark modes. - Built
useThemeStore.tswithlocalStoragepersistence and automaticprefers-color-schemeOS synchronization. - Integrated tactile Sun/Moon toggle switch in
Header.tsxwith smooth 0ms color transitions.
- Engineered full support for Paper Light (
- Multi-Route Navigation & Dedicated Workspaces:
- Implemented lightweight hash-based router (
useNavigationStore.ts) supporting#prepare,#presets, and#aboutroutes with automated scroll-to-top on navigation. - Created dedicated Preset Manager & Catalog (
PresetsPage.tsx) supporting single and bulk JSON export (FormEase_Custom_Presets.json), drag-and-drop JSON import, preset duplication, and instant re-optimization. - Created dedicated System Architecture & Telemetry Page (
AboutPage.tsx) documenting FormEase's 6 offline processing engines and zero-data-leakage guarantees. - Added
ModeTabBar.tsxto cleanly switch between "Guided Dossier" and "Batch Sandbox" modes while displaying active portal metadata.
- Implemented lightweight hash-based router (
- Semantic Token Harmonization:
- Refactored all slot cards (
PhotoSlotCard.tsx,SignatureSlotCard.tsx,DocumentSlotCard.tsx), modals (CustomPresetModal.tsx,DiffViewer.tsx,DossierExportModal.tsx), and canvases (BiometricCanvas.tsx,SignatureEnhancer.tsx) to use dynamic semantic color tokens. - Harmonized control instruments (
ByteCounter.tsx,SizeCeilingController.tsx,PixelDimensionController.tsx,StatusBadge.tsx,ActionButton.tsx) for consistent contrast across themes.
- Refactored all slot cards (
- Dark Mode Color Bleed in Light Theme:
- Fixed hardcoded dark slate backgrounds (
bg-slate-900,text-slate-100) leaking into light mode, ensuring WCAG 2.1 AA text contrast across both themes.
- Fixed hardcoded dark slate backgrounds (
- Page Route Transitions:
- Fixed route changes leaving scroll coordinates at bottom of page by adding automatic
window.scrollTo(0, 0)on route changes.
- Fixed route changes leaving scroll coordinates at bottom of page by adding automatic
- Interactive Signature Cropper:
- Added drag-to-pan, wheel zoom, and arrow-key nudge positioning to
SignatureSlotCard.tsxwith a tactile blue baseline alignment guide.
- Added drag-to-pan, wheel zoom, and arrow-key nudge positioning to
- Direct Pixel Dimension Steppers:
- Added exact width and height numeric inputs in
CustomPresetModal.tsxfor custom preset authoring.
- Added exact width and height numeric inputs in
- Dynamic Preflight Export Ceilings:
- Updated
DossierExportModal.tsxto display live custom size limits instead of static preset values.
- Updated
- Harmonized Studio Backgrounds:
- Standardized background styling of signature and document preview stages to deep slate, eliminating Troxler fading on white signature samples.
- Automatic Re-optimization:
- Slot processors now automatically re-run compression whenever a new custom preset is applied.
- Extreme Aspect Ratio Scaling:
- Removed artificial
100pxminimum width floor inPhotoSlotCard.tsx, allowing extreme aspect ratios (e.g., 55×3500 px or 4000×80 px) to scale down with true WYSIWYG proportions.
- Removed artificial
- Micro-Dimension Overlay Clipping:
- Added guardrails hiding biometric and signature alignment guides when preview dimensions are below 60px to prevent visual clutter.
- TypeScript Build Sanitization:
- Removed unused
isFullyOfflineimport inHeader.tsxthat caused TS6133 errors during strict production build checks.
- Removed unused
- Edge Deployment Hardening:
- Added dedicated
startscript (vite preview --port 3000 --host 0.0.0.0) inpackage.jsonfor cloud container hosting. - Configured
.dockerignoreto excludenode_modules,.git, anddist, reducing container build transfer payloads by ~90%.
- Added dedicated
- Unified Version Synchronization:
- Aligned application version across
package.json,package-lock.json,index.html,Header.tsx,Footer.tsx, andzipBundler.ts.
- Aligned application version across
- Documentation Overhaul:
- Restructured
README.mdwith algorithmic deep dives into near-ceiling binary search, binarization, and WCAG accessibility standards.
- Restructured
- Stacked Horizontal Studio Rows:
- Redesigned
DossierSlotsView.tsxfrom a cramped 3-column vertical grid into responsive, full-width horizontal studio rows (~42% stage viewfinder, ~58% controls and metrics).
- Redesigned
- Progressive Disclosure Accordions:
- Placed secondary dimensional controls and preset bookmarks inside collapsible accordions to keep the primary interface clean and focused.
- Dynamic 2D Aspect Ratio Bounding Box Engine:
- Built an aspect-ratio-aware viewport scaler (
containerMaxW = 280,containerMaxH = 192) ensuring custom aspect ratios display with 100% WYSIWYG fidelity.
- Built an aspect-ratio-aware viewport scaler (
- Dynamic Preflight Audit Telemetry:
- Connected
DossierExportModal.tsxto liveslot.customTargetMaxKBvalues to reflect real user-configured limits in export audits.
- Connected
- Stage Coordinate Normalization:
- Updated pan and zoom coordinate math in
useDossierStore.tsto compute offsets against dynamic stage aspect ratios.
- Updated pan and zoom coordinate math in
- Target Compression Band Tracking:
- Fine-tuned
ByteCounter.tsxinterpolation to reflect the official 92%–98.5% near-ceiling target band.
- Fine-tuned
- Pixel Dimension Label Truncation:
- Enforced strict minimum width boundaries (
min-w-[70px] sm:min-w-[84px]) inPixelDimensionController.tsxto prevent 3- and 4-digit dimension inputs from collapsing.
- Enforced strict minimum width boundaries (
- Dual-Mode Workspace Engine:
- Built instant mode switching between Guided Dossier Mode (
DossierSlotsView.tsx) and Universal Sandbox Mode (SandboxQueueView.tsx).
- Built instant mode switching between Guided Dossier Mode (
- ICAO 9303 Biometric Crop Guide:
- Integrated SVG facial alignment guidelines (Center Axis, Head Oval, Eye-Line at 44%, Chin-Line at 82%) in
PhotoSlotCard.tsx.
- Integrated SVG facial alignment guidelines (Center Axis, Head Oval, Eye-Line at 44%, Chin-Line at 82%) in
- Desk-Photo Signature Ink Bleaching Pipeline:
- Developed dynamic background thresholding and ink contrast scaling (
binarizeSignature.ts) to turn shadowy paper photos into pure black ink on clean white backgrounds.
- Developed dynamic background thresholding and ink contrast scaling (
- Document Enhancement Pipeline:
- Built grayscale BT.709 conversion, contrast boost, and unsharp text sharpening in
documentEnhancer.ts. - Added an automated 4 KB headroom guard to account for PDF wrapper structures under tight limits.
- Built grayscale BT.709 conversion, contrast boost, and unsharp text sharpening in
- Tactile Sliders and Steppers:
- Created
SizeCeilingController.tsxandPixelDimensionController.tsxwith aspect-ratio locks and DPI calculations.
- Created
- Vector Brand Identity:
- Designed custom SVG viewfinder logo mark in
FormEaseLogo.tsxand updatedfavicon.svg.
- Designed custom SVG viewfinder logo mark in
- Production-Grade Footer:
- Added comprehensive
Footer.tsxwith portal shortcuts, privacy badges, and direct developer links.
- Added comprehensive
- Zero-Telemetry In-Memory Demo:
- Added
loadDemoDossier()inuseDossierStore.tsandsampleDataGenerator.tsto populate realistic demo assets with 0 outbound requests.
- Added
- Hardware-Accelerated Crop Transforms:
- Switched viewfinder manipulation from canvas redraws to GPU CSS transforms (
translate3d,scale,rotate) for smooth 120 FPS interaction.
- Switched viewfinder manipulation from canvas redraws to GPU CSS transforms (
- Worker Sequence Locks:
- Implemented optimization sequence locks (
slotOptimizationSeq) and 280ms debounced store commits inuseDossierStore.tsto eliminate race conditions.
- Implemented optimization sequence locks (
- Redundant Configuration Drawers:
- Removed separate configuration drawers in favor of unified inline controls directly on slot cards.
- Initial Release of FormEase:
- 100% client-side document and biometric preparation engine running entirely in the browser.
- Near-Ceiling Binary Search Compression:
- Adaptive binary-search loop converging JPEG quality across up to 7 iterations to land between 92% and 98.5% of the file size ceiling.
- Pre-Configured Portal Presets:
- Built-in configurations for US Visa (DS-160), US Passport, Schengen Visa, UPSC Civil Services, SSC, NTA (NEET/JEE), Passport Seva/PAN, and General University/Job applications.
- Client-Side PDF Processing:
- In-browser PDF page rendering using
pdfjs-distand standards-compliant single-page PDF generation viapdf-lib.
- In-browser PDF page rendering using
- In-Browser ZIP Packaging:
- Multi-file bundling and instant download using
jszipandfile-saver.
- Multi-file bundling and instant download using
- Preflight Audit Manifest:
- Automated generation of
VALIDATION_SUMMARY.txtinside every exported ZIP, verifying file sizes, dimensions, and portal compliance.
- Automated generation of
- Zero-Telemetry Offline Privacy Architecture:
- Static client bundle with zero backend dependencies.
- Active network interception hook (
useOfflineTelemetry) guarding against accidental outbound network calls.