# Changelog

All notable changes to Simple Scanner for Windows.

## 1.1.1 — 2026-08-16

### Security

- The published Windows build is now Authenticode-signed with a real Azure Artifact Signing
  (Trusted Signing) certificate, `CN=MyTechie`, issued by Microsoft ID Verified CS AOC CA 04 and
  RFC 3161 timestamped — the same certificate profile used for User Profile Migrator 2.2.1.
  Previously the Windows download shipped unsigned.
- No functional change. This release exists solely to carry the signature; bump from 1.1.0 to
  1.1.1 so the published filename changes and edge caches cannot continue to serve the
  superseded unsigned artifact under the same name.

### Operational

- Added `tools/sign.sh`, `tools/patch_pe.py` and `tools/SIGNING-SETUP.md` (ported from
  User Profile Migrator) so both Windows downloads (standalone and framework-dependent) are
  signed the same way. Added a bash `build.ps1` equivalent (`build.sh`) so the whole build,
  patch and sign pipeline runs cross-platform from macOS/Linux, matching the other desktop
  tools in this catalogue.

## 1.1.0 — 2026-08-10

Restyled to share the InstaHost desktop look already used by APFS Reader for Windows and User
Account Migrator. This release is purely presentational.

### What's new

- The main window now opens with the shared **insta.host** header bar: the cyan-to-violet
  word-mark, the product name, and a version pill, over the dark aurora-tinted background.
- The scanner and source settings, the output settings, the page list and the preview are each
  grouped onto flat **cards** with a hairline border and the brand rule along the top edge.
- Consistent dark theming across every window and dialog: flat controls, dark title bars, and
  dark scroll bars, list headers and combo drop-downs pushed through the shell's dark-mode hooks.
- Primary actions (**Scan**, **Save**) are tinted with the accent; destructive actions
  (**Delete**, **Clear all**) use the danger colour.
- The status strip — including the *Freeware* notice, the *Patrick Hamid* link and the
  *Buy me a coffee* link — and the busy progress bar are drawn to stay legible on the dark ground,
  with the progress bar filled by the brand gradient.
- The About window adopts the same header and card surface.

### Behaviour

- No scanning, saving, emailing, settings-persistence or file-naming behaviour changed. This is a
  look-and-feel change only.
- The About window still reports the version, build date, publisher and the SHA-256 of the running
  file, and its links (author, more free tools, privacy, buy me a coffee) are unchanged.
- The Windows UI is verified by compiling on macOS and reviewing the diff against the shared design
  reference; the rendered result is confirmed on the next run on Windows.

## 1.0.0 — 2026-08-06

First public release, published as freeware on <https://insta.host/tools>.

### What's new

- Scan from any WIA scanner: flatbed, document feeder, or double-sided feeder.
- Multi-page scanning that keeps feeding until the ADF is empty, with thumbnails that can be
  reordered, rotated (90/180/270) or deleted before saving.
- Save as a single multi-page **PDF**, or as **JPG** / **PNG** with one file per page.
- Colour, greyscale and black & white at 100–600 dpi, with A4, Letter, Legal and A5 page sizes.
- Remembered defaults: save folder, format, colour, resolution, page size, source, file-name
  pattern and JPEG quality, stored in `%APPDATA%\SimpleScanner\settings.json`.
- File-name patterns with embedded date formats, e.g. `Scan_{yyyy-MM-dd_HHmmss}`.
- Email the scan through Outlook or the default mail client (attached automatically), or directly
  through a configured SMTP server, with a *Send test email* button.
- *Scan using driver dialog...* for scanners with unusual options, and *Add image file...* to turn
  existing images into a PDF.
- About window reporting version, build date, publisher and the SHA-256 of the running file.

### Behaviour

- Existing files are never overwritten; a second `Scan.pdf` becomes `Scan (2).pdf`.
- Pages are cached as lossless PNGs in a per-session temporary folder, removed on exit.
- PDF page size is derived from the pixel size and the scan resolution, so an A4 scan produces an
  A4 page.

### Bugs fixed during development

- COM failures raised through WIA were wrapped by reflection in `TargetInvocationException`, so the
  HRESULT-specific handling never matched and an empty document feeder ended a multi-page scan with
  a hard error instead of stopping cleanly. `BindingFlags.DoNotWrapExceptions` restores it.
- Scan extents were calculated from the requested resolution even when the driver rejected it,
  which could crop or stretch the page; the accepted resolution is now read back first.
- 1-bit black & white pages could not be embedded in a PDF ("unsupported image format") and are now
  expanded to 24-bit for PDF output only.
- File-name sanitising depended on the host platform's invalid-character list; it is now a fixed
  Windows set, so `:` and `/` in a pattern can never reach a file name.
- Moving a page left two pages selected, which made rotate and delete act on both.
- A partially failed image import hid the pages that had already been added.

### Security

- The SMTP password is encrypted with Windows DPAPI for the current user and never written in clear
  text.

### Known limitations

- The executable is **not** Authenticode signed, so Windows SmartScreen shows a warning on first
  run. Verify the SHA-256 in the About window against the published checksum before running it.
- Scanner support depends on the WIA driver; a scanner Windows cannot see will not appear here.
- OCR and overview/preview scanning are not implemented.
