Added
- Live document detection: edges are found in the viewfinder and the page is captured and cropped to them automatically.
- Expsosure, focus, grid, autocapture controls for camera live mode
- Six document filter modes (replacing the old photo filters), applied to one page or the whole document.
- Camera controls: pinch-to-zoom slider, tap-to-focus and -expose, manual exposure, and a front/back switch.
- On-device integration tests covering the capture, crop, library, settings and export flows, plus a database migration test.
- Tamil and Hindi translations. The interface is now fully translated in English, Greek, Hindi, Hungarian, Polish and Tamil, with plural forms and dates that follow the locale.
- Settings page added
Changed
- The tutorial's illustrations are drawn from the theme's own tokens rather than shipped as screenshots, so they follow the chosen accent and cannot go stale against the screens they depict.
- Each page is processed the moment its shutter fires, cropped to the detected boundary and re-encoded while the shutter shows a spinner.
- Cropping and edge detection are pure Dart; the OpenCV dependency is gone.
- Captures are stored through the platform's own image decoder, which decodes and downscales in one native step instead of several seconds of pure-Dart work per page.
- The database moved from a table-per-document schema to documents + pages, migrated automatically on first launch.
- Export quality is now a compression scale, and an export is named after its document.
- Rebuilt the interface on a warm-white, single-accent design system, with matching light and dark themes and a system/light/dark switch in Settings.
- targetSdk 36, scoped storage, Java 17.
- Documents export to Downloads/OpenScan.
Fixed
- Crop handles stay clear of the system back-gesture strip (can be toggled in settings).
- Pages the app cannot draw are no longer kept, and exports no longer leave files the user cannot delete.
- The tutorial's back button, opened from Settings, sat in the top-right corner where Skip belongs; it is now on the leading edge.
- Every outbound link works again. Android 11+ package visibility hid all browsers from canLaunchUrl, so the About screen's GitHub button did nothing at all; the manifest now declares the browser query, and a link that still cannot open says so instead of only logging.
- The About screen's description no longer opens mid-sentence: every locale writes it to follow the app's name inline, and the name had been dropped from the paragraph.
Removed
- RECORD_AUDIO, READ_MEDIA_AUDIO, READ_MEDIA_VIDEO and READ_MEDIA_IMAGES, which dependencies declared but OpenScan never used.
- The storage permission request, made redundant by scoped storage.