Ben's four changes of 2026-08-28, then build it, sign it, and make it deployable through Intune without alerts.
What changed
1. The row of icons is a fifth shorter. Every toolbar label mode comes down together so the proportions between them are unchanged: 34 → 27 for a caption beside the icon, 52/56 → 42/45 for a caption under it, padding reduced to match. Measured on screen at 800×600: the row was 60px, it is 48px.
2. Scan sits in the main bar. A solid white button on the band, left of the window buttons, reachable whatever the toolbar is showing.
Services/ScanService.cs — talks to the copier through WIA, the imaging service that ships with Windows. The COM objects are created late-bound by ProgID, so a machine without an imaging stack fails a check instead of failing to load. Enumerates scanners, sets intent, depth, resolution and paper extents, drives the sheet feeder, and treats "the tray is empty" as the end of a run rather than an error.
Features/Scan/ScanDialog — copier, feed, colour, detail, paper, and what to do afterwards. Cancel during a run stops after the sheet in progress, because a copier cannot be interrupted mid-sheet.
Shell/Scan.cs — pages take the same route into a document as an imported photograph (OpenImagesAsImportedTab). "Make the words searchable" runs the text recognition the application already carries.
3. The official MMD lockup, in white, because the band is red now.
4. The MMD design system locked on 2026-08-28. One merged top bar carrying the mark, the name, the tabs and the tools; 4px corners; 24px window buttons; the bevel on title bars only. Colours are not adjusted — the Red Plate silver and ink set already in Themes/MMD.xaml is untouched, exactly as the lock requires.
Two defects found by looking at it running
The window did not fit the screen it is for. The default 1000×700 does not fit an 800×600 plant machine, and a window taller than the screen puts its own title bar — and therefore Scan, the window buttons and the tabs — above the top edge where nobody can reach them. It starts maximised now when the screen cannot hold the default.
The close button was invisible.CaptionCloseBrush defaults to the danger red, which on a red band is red on red. The window buttons are white now; close inverts to a white plate with a red cross on hover.
What was actually run
Built and exercised on mmd-win-test-01 at 800×600 through keyboard and mouse only — real pointer and key events over RDP, no scripting back door into the application.
dotnet build -c Release — 0 errors.
The window opens maximised, the band renders with the white lockup, all three window buttons are visible, the icon row is 48px.
Clicking Scan with the mouse opens the dialog, which correctly reports no copier found on this machine and disables the Scan button. The test machine has no scanner attached, so the page-transfer path itself is not runtime-tested — enumeration, the dialog and the empty-copier case are.
The portable single-file build runs after signing, so the signature does not break the payload hash manifest.
Signing
Signed with an internal MMD code-signing certificate created for this — no MMD code-signing certificate existed anywhere before today:
root CN=MMD Steel Group Code Signing Root, O=MMD Steel Group, C=AE, SHA1 34BE105B335A09CC87AA9800DC90DD384E906DCB, 4096-bit, 10 years, path length 1
leaf CN=MMD Steel Group IT, 3072-bit, 3 years, code-signing EKU only
Payload signed first, package repacked so the hash manifest covers the signed file, launcher signed last. Both verify Valid, timestamped by DigiCert.
The private key currently lives only in the build machine's certificate store. It needs a proper home before this is a standing arrangement.
Intune
Win32 app MMD PDF published, content committed, offered to MMD-EUC-Pilot as available — a person installs it from Company Portal. Making it required fleet-wide is a fleet-impact decision and was deliberately not done.
Trusted-certificate profile puts the signing root in the machine Root store; a platform script also puts it in Trusted Publisher.
install.ps1 refuses to install if the copied file does not carry a valid signature, and deliberately does not touch the .pdf UserChoice registry key — forging that is what got PDFgear blocked on 2026-07-20.
Checked in the tenant: no attack-surface-reduction rules exist, AppLocker is notConfigured, and there is no WDAC policy. SmartScreen is on with override blocked, but an Intune Win32 app is installed by the Management Extension as SYSTEM from a local cache with no mark-of-the-web, so it is not gated by it.
Not done
The scan transfer path is untested against real hardware.
The design has had no independent review since the change, and no sign-off from Ben.
MMD PDFgear is still a published app in this tenant. It is the tool this replaces; retiring it is Ben's call.
Ben's four changes of 2026-08-28, then build it, sign it, and make it deployable through Intune without alerts.
## What changed
**1. The row of icons is a fifth shorter.** Every toolbar label mode comes down together so the proportions between them are unchanged: 34 → 27 for a caption beside the icon, 52/56 → 42/45 for a caption under it, padding reduced to match. Measured on screen at 800×600: the row was 60px, it is 48px.
**2. Scan sits in the main bar.** A solid white button on the band, left of the window buttons, reachable whatever the toolbar is showing.
- `Services/ScanService.cs` — talks to the copier through WIA, the imaging service that ships with Windows. The COM objects are created late-bound by ProgID, so a machine without an imaging stack fails a check instead of failing to load. Enumerates scanners, sets intent, depth, resolution and paper extents, drives the sheet feeder, and treats "the tray is empty" as the end of a run rather than an error.
- `Features/Scan/ScanDialog` — copier, feed, colour, detail, paper, and what to do afterwards. Cancel during a run stops after the sheet in progress, because a copier cannot be interrupted mid-sheet.
- `Shell/Scan.cs` — pages take the same route into a document as an imported photograph (`OpenImagesAsImportedTab`). "Make the words searchable" runs the text recognition the application already carries.
**3. The official MMD lockup, in white**, because the band is red now.
**4. The MMD design system locked on 2026-08-28.** One merged top bar carrying the mark, the name, the tabs and the tools; 4px corners; 24px window buttons; the bevel on title bars only. **Colours are not adjusted** — the Red Plate silver and ink set already in `Themes/MMD.xaml` is untouched, exactly as the lock requires.
## Two defects found by looking at it running
- **The window did not fit the screen it is for.** The default 1000×700 does not fit an 800×600 plant machine, and a window taller than the screen puts its own title bar — and therefore Scan, the window buttons and the tabs — above the top edge where nobody can reach them. It starts maximised now when the screen cannot hold the default.
- **The close button was invisible.** `CaptionCloseBrush` defaults to the danger red, which on a red band is red on red. The window buttons are white now; close inverts to a white plate with a red cross on hover.
## What was actually run
Built and exercised on **mmd-win-test-01 at 800×600 through keyboard and mouse only** — real pointer and key events over RDP, no scripting back door into the application.
- `dotnet build -c Release` — 0 errors.
- The window opens maximised, the band renders with the white lockup, all three window buttons are visible, the icon row is 48px.
- Clicking **Scan** with the mouse opens the dialog, which correctly reports **no copier found on this machine** and disables the Scan button. The test machine has no scanner attached, so **the page-transfer path itself is not runtime-tested** — enumeration, the dialog and the empty-copier case are.
- The portable single-file build runs after signing, so the signature does not break the payload hash manifest.
## Signing
Signed with an **internal MMD code-signing certificate created for this** — no MMD code-signing certificate existed anywhere before today:
- root `CN=MMD Steel Group Code Signing Root, O=MMD Steel Group, C=AE`, SHA1 `34BE105B335A09CC87AA9800DC90DD384E906DCB`, 4096-bit, 10 years, path length 1
- leaf `CN=MMD Steel Group IT`, 3072-bit, 3 years, code-signing EKU only
Payload signed first, package repacked so the hash manifest covers the signed file, launcher signed last. Both verify `Valid`, timestamped by DigiCert.
**The private key currently lives only in the build machine's certificate store.** It needs a proper home before this is a standing arrangement.
## Intune
- Win32 app **MMD PDF** published, content committed, offered to **MMD-EUC-Pilot** as *available* — a person installs it from Company Portal. Making it required fleet-wide is a fleet-impact decision and was deliberately not done.
- Trusted-certificate profile puts the signing root in the machine Root store; a platform script also puts it in Trusted Publisher.
- `install.ps1` refuses to install if the copied file does not carry a valid signature, and **deliberately does not touch the `.pdf` UserChoice registry key** — forging that is what got PDFgear blocked on 2026-07-20.
Checked in the tenant: no attack-surface-reduction rules exist, AppLocker is `notConfigured`, and there is no WDAC policy. SmartScreen is on with override blocked, but an Intune Win32 app is installed by the Management Extension as SYSTEM from a local cache with no mark-of-the-web, so it is not gated by it.
## Not done
- The scan transfer path is untested against real hardware.
- The design has had no independent review since the change, and no sign-off from Ben.
- **MMD PDFgear is still a published app in this tenant.** It is the tool this replaces; retiring it is Ben's call.
Replaces the app icon and word-mark drawn by an agent with the official MMD
artwork (mmd-logo-red.svg / mmd-logo.svg, unmodified). The Windows icon is the
lockup's baobab disc, cropped from the same file - the only square element in
it. It reads cleanly from 32px and goes muddy at 16-24px; no official small
mark exists, so that is an open question, not a solved one.
Themes/MMD.xaml carries the values of the new MMD shell design system
("red plate"): F1F1EC chrome, E4E3DC rails, F3F3F0 around the page, D4D0C6
desk, 23221E ink with 3C3A34 / 767368 / 6B6A64 below it, C8102E red with
A80D24 hover and 8E0B20 pressed, borders E6E5DF / D7D6CE / C7C6BD / B9B8AE.
NOT ACCEPTED. The design these values came from failed an independent design
review on 2026-08-27 with 3 blockers and 5 major findings. This branch is an
implementation preview only and must not be merged until the design is signed
off.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds the required doc set under docs/mmd-pdf/ - PRD, feature backlog with
status and sign-off per feature, screens with wireframes, test cases with the
test data and the agent-tasking prompts, and the sign-off log.
The sign-off log records the independent design review of 2026-08-27:
DESIGN-FAIL, three blockers and five major findings, which is why every design
feature in the backlog is blocked and the logo/token branch is unmerged.
Design working files live in docs/mmd-pdf/design/ so the next agent can
regenerate and re-render them. redplate.css there is the MMD shell design
system lifted verbatim from the session that owns it - do not edit it.
Also carries the session handover.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ben, 2026-08-28: four changes, then build it, sign it, and make it deployable
through Intune without alerts.
1. The row of icons is a fifth shorter. Every toolbar label mode comes down
together so the proportions between them are unchanged: 34 -> 27 for a
caption beside the icon, 52/56 -> 42/45 for a caption under it, with the
padding reduced to match. The row measures 48px on screen where it was 60.
2. Scan sits in the main bar. It is a solid white button on the band, to the
left of the window buttons, so a person can pull pages off a copier whatever
the toolbar is showing. Behind it, Services/ScanService.cs talks to the
copier through WIA - the imaging service that ships with Windows, reached
late-bound so a machine without it fails at a check instead of at load - and
Features/Scan/ScanDialog picks the copier, the feed, the colour, the detail
and the paper. Pages come back as images and take the same route into a
document as an imported photograph. "Make the words searchable" runs the
text recognition the application already carries.
3. The official MMD lockup, in white, because the band is red now.
4. The MMD design system locked on 2026-08-28: ONE merged top bar carrying the
mark, the name, the tabs and the tools; 4px corners; 24px window buttons;
the bevel on title bars only. Colours are NOT adjusted - the Red Plate
silver and ink set already in Themes/MMD.xaml is untouched.
Also fixed, both found by looking at the running application at 800x600:
- The default 1000x700 window does not fit an 800x600 plant screen, and a
window taller than the screen puts its own title bar - and therefore Scan,
the window buttons and the tabs - above the top edge where nobody can reach
them. MainWindow now starts maximised when the screen cannot hold the
default.
- The close button was invisible: CaptionCloseBrush defaults to the danger
red, which on a red band is red on red. The window buttons are white now,
and close inverts to a white plate with a red cross on hover.
Built and run on mmd-win-test-01 at 800x600 through keyboard and mouse only.
Signed with the internal MMD code-signing certificate and timestamped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Ben's four changes of 2026-08-28, then build it, sign it, and make it deployable through Intune without alerts.
What changed
1. The row of icons is a fifth shorter. Every toolbar label mode comes down together so the proportions between them are unchanged: 34 → 27 for a caption beside the icon, 52/56 → 42/45 for a caption under it, padding reduced to match. Measured on screen at 800×600: the row was 60px, it is 48px.
2. Scan sits in the main bar. A solid white button on the band, left of the window buttons, reachable whatever the toolbar is showing.
Services/ScanService.cs— talks to the copier through WIA, the imaging service that ships with Windows. The COM objects are created late-bound by ProgID, so a machine without an imaging stack fails a check instead of failing to load. Enumerates scanners, sets intent, depth, resolution and paper extents, drives the sheet feeder, and treats "the tray is empty" as the end of a run rather than an error.Features/Scan/ScanDialog— copier, feed, colour, detail, paper, and what to do afterwards. Cancel during a run stops after the sheet in progress, because a copier cannot be interrupted mid-sheet.Shell/Scan.cs— pages take the same route into a document as an imported photograph (OpenImagesAsImportedTab). "Make the words searchable" runs the text recognition the application already carries.3. The official MMD lockup, in white, because the band is red now.
4. The MMD design system locked on 2026-08-28. One merged top bar carrying the mark, the name, the tabs and the tools; 4px corners; 24px window buttons; the bevel on title bars only. Colours are not adjusted — the Red Plate silver and ink set already in
Themes/MMD.xamlis untouched, exactly as the lock requires.Two defects found by looking at it running
CaptionCloseBrushdefaults to the danger red, which on a red band is red on red. The window buttons are white now; close inverts to a white plate with a red cross on hover.What was actually run
Built and exercised on mmd-win-test-01 at 800×600 through keyboard and mouse only — real pointer and key events over RDP, no scripting back door into the application.
dotnet build -c Release— 0 errors.Signing
Signed with an internal MMD code-signing certificate created for this — no MMD code-signing certificate existed anywhere before today:
CN=MMD Steel Group Code Signing Root, O=MMD Steel Group, C=AE, SHA134BE105B335A09CC87AA9800DC90DD384E906DCB, 4096-bit, 10 years, path length 1CN=MMD Steel Group IT, 3072-bit, 3 years, code-signing EKU onlyPayload signed first, package repacked so the hash manifest covers the signed file, launcher signed last. Both verify
Valid, timestamped by DigiCert.The private key currently lives only in the build machine's certificate store. It needs a proper home before this is a standing arrangement.
Intune
install.ps1refuses to install if the copied file does not carry a valid signature, and deliberately does not touch the.pdfUserChoice registry key — forging that is what got PDFgear blocked on 2026-07-20.Checked in the tenant: no attack-surface-reduction rules exist, AppLocker is
notConfigured, and there is no WDAC policy. SmartScreen is on with override blocked, but an Intune Win32 app is installed by the Management Extension as SYSTEM from a local cache with no mark-of-the-web, so it is not gated by it.Not done
Replaces the app icon and word-mark drawn by an agent with the official MMD artwork (mmd-logo-red.svg / mmd-logo.svg, unmodified). The Windows icon is the lockup's baobab disc, cropped from the same file - the only square element in it. It reads cleanly from 32px and goes muddy at 16-24px; no official small mark exists, so that is an open question, not a solved one. Themes/MMD.xaml carries the values of the new MMD shell design system ("red plate"): F1F1EC chrome, E4E3DC rails, F3F3F0 around the page, D4D0C6 desk, 23221E ink with 3C3A34 / 767368 / 6B6A64 below it, C8102E red with A80D24 hover and 8E0B20 pressed, borders E6E5DF / D7D6CE / C7C6BD / B9B8AE. NOT ACCEPTED. The design these values came from failed an independent design review on 2026-08-27 with 3 blockers and 5 major findings. This branch is an implementation preview only and must not be merged until the design is signed off. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>Ben, 2026-08-28: four changes, then build it, sign it, and make it deployable through Intune without alerts. 1. The row of icons is a fifth shorter. Every toolbar label mode comes down together so the proportions between them are unchanged: 34 -> 27 for a caption beside the icon, 52/56 -> 42/45 for a caption under it, with the padding reduced to match. The row measures 48px on screen where it was 60. 2. Scan sits in the main bar. It is a solid white button on the band, to the left of the window buttons, so a person can pull pages off a copier whatever the toolbar is showing. Behind it, Services/ScanService.cs talks to the copier through WIA - the imaging service that ships with Windows, reached late-bound so a machine without it fails at a check instead of at load - and Features/Scan/ScanDialog picks the copier, the feed, the colour, the detail and the paper. Pages come back as images and take the same route into a document as an imported photograph. "Make the words searchable" runs the text recognition the application already carries. 3. The official MMD lockup, in white, because the band is red now. 4. The MMD design system locked on 2026-08-28: ONE merged top bar carrying the mark, the name, the tabs and the tools; 4px corners; 24px window buttons; the bevel on title bars only. Colours are NOT adjusted - the Red Plate silver and ink set already in Themes/MMD.xaml is untouched. Also fixed, both found by looking at the running application at 800x600: - The default 1000x700 window does not fit an 800x600 plant screen, and a window taller than the screen puts its own title bar - and therefore Scan, the window buttons and the tabs - above the top edge where nobody can reach them. MainWindow now starts maximised when the screen cannot hold the default. - The close button was invisible: CaptionCloseBrush defaults to the danger red, which on a red band is red on red. The window buttons are white now, and close inverts to a white plate with a red cross on hover. Built and run on mmd-win-test-01 at 800x600 through keyboard and mouse only. Signed with the internal MMD code-signing certificate and timestamped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>