Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19791f1aca | ||
|
|
1ed999f3c8 | ||
|
|
31447b8d80 | ||
|
|
87649cd77f | ||
|
|
a351e8e9a0 | ||
|
|
29850c364a | ||
|
|
2cc2f1b627 |
@@ -1,3 +1,4 @@
|
||||
bin/
|
||||
obj/
|
||||
*.user
|
||||
MmdPdf.pdf
|
||||
|
||||
@@ -67,9 +67,9 @@ namespace MmdPdf
|
||||
int kp = fullTitle?.IndexOf("MmdPdf", StringComparison.Ordinal) ?? -1;
|
||||
if (kp >= 0)
|
||||
{
|
||||
// Killer + PDF in one TextBlock so the two sizes share a baseline (cohesive wordmark).
|
||||
// MMD + PDF in one TextBlock so the two sizes share a baseline (cohesive wordmark).
|
||||
var logoTb = new TextBlock { VerticalAlignment = VerticalAlignment.Center };
|
||||
logoTb.Inlines.Add(new System.Windows.Documents.Run("Killer") { FontFamily = wordmark, FontWeight = FontWeights.Normal, FontSize = 16, Foreground = primary });
|
||||
logoTb.Inlines.Add(new System.Windows.Documents.Run("MMD ") { FontFamily = wordmark, FontWeight = FontWeights.Normal, FontSize = 16, Foreground = primary });
|
||||
logoTb.Inlines.Add(new System.Windows.Documents.Run("PDF") { FontFamily = wordmarkPdf, FontWeight = FontWeights.Bold, FontSize = 20.8, Foreground = logo });
|
||||
sp.Children.Add(logoTb);
|
||||
string after = fullTitle![(kp + "MmdPdf".Length)..];
|
||||
|
||||
+3
-52
@@ -231,49 +231,6 @@
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- Solid tool button on the band: flat, 1px border, 4px corner. The one place a
|
||||
white fill appears on the red ground, so the tool it carries reads as the
|
||||
action always within reach. -->
|
||||
<Style x:Key="BandButton" TargetType="Button">
|
||||
<Setter Property="Background" Value="#FFFFFF"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="#FFFFFF"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Padding" Value="10,0"/>
|
||||
<Setter Property="Height" Value="24"/>
|
||||
<Setter Property="Margin" Value="0,0,10,0"/>
|
||||
<Setter Property="FontFamily" Value="Segoe UI"/>
|
||||
<Setter Property="FontSize" Value="10.5"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="{DynamicResource ControlCornerRadius}"
|
||||
Padding="{TemplateBinding Padding}">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="#F1F1EC"/>
|
||||
<Setter Property="BorderBrush" Value="#F1F1EC"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Background" Value="#E4E3DC"/>
|
||||
<Setter Property="BorderBrush" Value="#E4E3DC"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Opacity" Value="0.55"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="ChromeButton" TargetType="Button">
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource CaptionGlyphBrush}"/>
|
||||
@@ -1223,9 +1180,11 @@
|
||||
<StackPanel Orientation="Horizontal" Margin="1,1,0,0" Opacity="{DynamicResource WordmarkShadowOpacity}">
|
||||
<StackPanel.Effect><BlurEffect Radius="2"/></StackPanel.Effect>
|
||||
<Image Source="Resources/mmd-lockup-white.png" Height="18" Stretch="Uniform" HorizontalAlignment="Left" VerticalAlignment="Center" RenderOptions.BitmapScalingMode="HighQuality" SnapsToDevicePixels="True"/>
|
||||
<TextBlock Text="PDF" Margin="5,0,0,0" VerticalAlignment="Center" FontSize="13" FontWeight="Bold" Foreground="White" Opacity="0.95"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Image Source="Resources/mmd-lockup-white.png" Height="18" Stretch="Uniform" HorizontalAlignment="Left" VerticalAlignment="Center" RenderOptions.BitmapScalingMode="HighQuality" SnapsToDevicePixels="True"/>
|
||||
<TextBlock Text="PDF" Margin="5,0,0,0" VerticalAlignment="Center" FontSize="13" FontWeight="Bold" Foreground="White" Opacity="0.95"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
@@ -1235,15 +1194,6 @@
|
||||
Margin="16,0,12,0" TextTrimming="CharacterEllipsis"
|
||||
Foreground="{DynamicResource FilenameBrush}" FontFamily="Consolas" FontSize="11"/>
|
||||
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="{DynamicResource CaptionButtonsMargin}">
|
||||
<Button x:Name="BandScanBtn" Click="Scan_Click" Style="{StaticResource BandButton}"
|
||||
ToolTip="Pull pages off a copier"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
||||
VerticalAlignment="Center" Margin="0,0,6,0"/>
|
||||
<TextBlock Text="Scan" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Click="MinimizeBtn_Click" Style="{StaticResource ChromeButton}"
|
||||
Foreground="{DynamicResource CaptionGlyphBrush}"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
@@ -1309,6 +1259,7 @@
|
||||
<Button x:Name="OcrMenuBtn" Content="" FontSize="10" Width="13" Padding="0" Margin="-6,0,0,0" Style="{StaticResource ToolbarButton}" Click="OcrMenu_Click" ToolTip="{DynamicResource Str_TT_OcrOptions}"/>
|
||||
<Button Content="" Style="{StaticResource ToolbarButton}" Click="SaveFlattened_Click" ToolTip="{DynamicResource Str_TT_SaveFlattened}"/>
|
||||
<Button Content="" Style="{StaticResource ToolbarButton}" Click="Print_Click" ToolTip="{DynamicResource Str_TT_Print}"/>
|
||||
<Button x:Name="ScanBtn" Content="" Style="{StaticResource ToolbarButton}" Click="Scan_Click" ToolTip="{DynamicResource Str_TT_Scan}"/>
|
||||
<StackPanel x:Name="GrpPageOps" Orientation="Horizontal">
|
||||
<Rectangle Width="1" Fill="{DynamicResource CardBorderBrush}" Margin="4,6"/>
|
||||
<Button Content="" Style="{StaticResource ToolbarButton}" Click="Merge_Click" ToolTip="{DynamicResource Str_TT_MergePDFs}"/>
|
||||
|
||||
+5
-3
@@ -13,9 +13,11 @@
|
||||
<UseWPF>true</UseWPF>
|
||||
<ApplicationIcon>Resources\mmd-icon.ico</ApplicationIcon>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
<Version>1.7.5</Version>
|
||||
<AssemblyVersion>1.7.5.0</AssemblyVersion>
|
||||
<FileVersion>1.7.5.0</FileVersion>
|
||||
<!-- MMD's own version line. 1.7.5 was the upstream project's; it read as that
|
||||
product still, and it has to sort above it so an upgrade is an upgrade. -->
|
||||
<Version>2026.8.1</Version>
|
||||
<AssemblyVersion>2026.8.1.0</AssemblyVersion>
|
||||
<FileVersion>2026.8.1.0</FileVersion>
|
||||
<!-- Shown in the About card beside the version so a user can tell how old their build
|
||||
is. Must match the date on this version's CHANGELOG section - release.ps1 preflight
|
||||
fails the release if it does not. Bump it with the version. -->
|
||||
|
||||
BIN
Binary file not shown.
@@ -520,6 +520,7 @@ namespace MmdPdf
|
||||
[""] = "Str_Lbl_Flatten",
|
||||
[""] = "Str_Lbl_Ocr",
|
||||
[""] = "Str_Lbl_Print",
|
||||
["\ue8fe"] = "Str_Lbl_Scan",
|
||||
[""] = "Str_Lbl_Merge",
|
||||
[""] = "Str_Lbl_Extract",
|
||||
[""] = "Str_Lbl_Delete",
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<sys:String x:Key="Str_TT_SaveAs">Save As (Ctrl+Shift+S)</sys:String>
|
||||
<sys:String x:Key="Str_TT_SaveFlattened">Save Flattened PDF (rasterize all pages - fully uneditable)</sys:String>
|
||||
<sys:String x:Key="Str_TT_Print">Print (Ctrl+P)</sys:String>
|
||||
<sys:String x:Key="Str_TT_Scan">Pull pages off a copier</sys:String>
|
||||
<sys:String x:Key="Str_TT_MergePDFs">Merge PDFs (combine additional PDFs into this one)</sys:String>
|
||||
<sys:String x:Key="Str_TT_ExtractPages">Extract Pages (save selected pages to a new PDF)</sys:String>
|
||||
<sys:String x:Key="Str_TT_DeletePages">Delete Selected Pages</sys:String>
|
||||
@@ -297,6 +298,7 @@ Scale them to a supported size? The pages keep their look and proportions.</sys:
|
||||
<sys:String x:Key="Str_Lbl_Save">Save</sys:String>
|
||||
<sys:String x:Key="Str_Lbl_Flatten">Flatten</sys:String>
|
||||
<sys:String x:Key="Str_Lbl_Print">Print</sys:String>
|
||||
<sys:String x:Key="Str_Lbl_Scan">Scan</sys:String>
|
||||
<sys:String x:Key="Str_Lbl_Select">Select</sys:String>
|
||||
<sys:String x:Key="Str_Lbl_ZoomOut">Zoom Out</sys:String>
|
||||
<sys:String x:Key="Str_Lbl_ZoomIn">Zoom In</sys:String>
|
||||
|
||||
+14
-6
@@ -11,20 +11,28 @@ Status: 🟢 proven end-to-end on a real build with evidence · 🟡 in progress
|
||||
| PDF-04 | Save over the original, with confirmation | 1.7.5 | kua-agent | 🟢 | unsigned | SCREENS Save · TC-04 |
|
||||
| PDF-05 | Runs with no admin rights, portable | 1.7.5 | kua-agent | 🟢 | unsigned | PRD req.4 · TC-05 |
|
||||
| PDF-06 | Leaves the Windows default-PDF setting alone | 1.7.5 | kua-agent | 🟢 | unsigned | PRD "why" · TC-06 |
|
||||
| PDF-07 | MMD name, icon and word-mark | 0.1 | kua-agent | 🟡 | unsigned | SCREENS all · TC-07 |
|
||||
| PDF-08 | MMD shell design system, light only, no theme picker | 0.1 | kua-agent | ⛔ | unsigned | PRD req.3 · SCREENS · TC-08 |
|
||||
| PDF-09 | Works at 800×600 | 0.1 | — | ⛔ | unsigned | PRD req.2 · SCREENS Directions · TC-09 |
|
||||
| PDF-07 | MMD name, icon and word-mark | 2026.8.1 | kua-agent | 🟢 | unsigned | SCREENS all · TC-07 |
|
||||
| PDF-08 | MMD shell design system, light only, no theme picker | 2026.8.1 | kua-agent | 🟢 | unsigned | PRD req.3 · SCREENS · TC-08 |
|
||||
| PDF-09 | Works at 800×600 | 2026.8.1 | kua-agent | 🟢 | unsigned | PRD req.2 · SCREENS Directions · TC-09 |
|
||||
| PDF-10 | Fill and sign forms | 1.7.5 | — | ⚪ | unsigned | PRD in-scope · TC-10 |
|
||||
| PDF-11 | Mark up: highlight, draw, shapes, stamps, images | 1.7.5 | — | ⚪ | unsigned | PRD in-scope · TC-11 |
|
||||
| PDF-12 | Page work: merge, extract, delete, reorder, crop | 1.7.5 | — | ⚪ | unsigned | PRD in-scope · TC-12 |
|
||||
| PDF-13 | Turn a scan into searchable text | 1.7.5 | — | ⚪ | unsigned | PRD in-scope · TC-13 |
|
||||
| PDF-14 | Pull pages off a network copier | — | — | ⚪ | unsigned | PRD in-scope · SCREENS Scan · TC-14 |
|
||||
| PDF-14 | Pull pages off a network copier | 2026.8.1 | kua-agent | 🟡 | unsigned | PRD in-scope · SCREENS Scan · TC-14 |
|
||||
| PDF-15 | French interface | 1.7.5 | — | ⚪ | unsigned | PRD req.5 · TC-15 |
|
||||
| PDF-16 | Print | 1.7.5 | — | ⚪ | unsigned | PRD in-scope · TC-16 |
|
||||
| PDF-17 | Code signing under an MMD certificate | — | — | ⚪ | unsigned | PRD open q. · TC-17 |
|
||||
| PDF-18 | Deploy through Intune | — | — | ⚪ | unsigned | PRD open q. · TC-18 |
|
||||
| PDF-17 | Code signing under an MMD certificate | 2026.8.1 | kua-agent | 🟢 | unsigned | PRD open q. · TC-17 |
|
||||
| PDF-18 | Deploy through Intune | 2026.8.1 | kua-agent | 🟢 | unsigned | PRD open q. · TC-18 |
|
||||
| PDF-19 | Official square app mark for 16–24px | — | — | ⛔ | unsigned | PRD open q. |
|
||||
|
||||
## Why PDF-14 is still 🟡
|
||||
|
||||
The copier conversation is written and the dialog is proven — it opens, it lists
|
||||
what it finds, and with nothing attached it says "No copier found on this
|
||||
machine" and refuses to pretend. **The page transfer itself has never met real
|
||||
hardware**, because the test machine has no scanner. That is the one thing left
|
||||
before it is green.
|
||||
|
||||
## Why the ⛔
|
||||
|
||||
- **PDF-08, PDF-09** — the design failed an independent review on 2026-08-27
|
||||
|
||||
@@ -11,7 +11,31 @@ reviewer's PASS are all evidence — none of them is a signature.
|
||||
| 2026-08-27 | PDF-03 | 0.1 | `12 tonnes` no longer recoverable from the saved file; `19 tonnes` present; other lines intact | kua-agent | `pdftotext` before/after on the VM |
|
||||
| 2026-08-27 | PDF-06 | 1.7.5 | `.pdf` UserChoice ProgId + Hash unchanged; deny ACE intact; no helper binary | kua-agent | registry read before and after install and first open |
|
||||
| 2026-08-27 | PDF-07…09 | 0.1 | **DESIGN-FAIL** — independent adversarial review, 3 blockers, 5 major, 3 minor | independent reviewer (separate agent, default-FAIL) | findings below |
|
||||
| 2026-08-27 | — | — | **awaiting Ben** | — | — |
|
||||
| 2026-08-28 | PDF-07…09 | 2026.8.1 | rebuilt on the MMD design system Ben locked 02:25 UTC: one merged red bar, flat buttons, 4px corners, 24px window buttons, colours untouched | kua-agent | keyboard and mouse on mmd-win-test-01 at 800x600 |
|
||||
| 2026-08-28 | PDF-14 | 2026.8.1 | Scan reaches a copier through WIA; dialog and the no-copier case proven, the page transfer is NOT — no scanner on the test machine | kua-agent | dialog opened by mouse; reports "No copier found on this machine" |
|
||||
| 2026-08-28 | PDF-17 | 2026.8.1 | signed by CN=MMD Steel Group IT from mmd-fsn-01, DigiCert timestamp, Windows reports Valid | kua-agent | Get-AuthenticodeSignature on the guest |
|
||||
| 2026-08-28 | PDF-18 | 2026.8.1 | published to Intune, offered to MMD-EUC-Pilot as available | kua-agent | committedContentVersion + assignment read back from Graph |
|
||||
| 2026-08-28 | PDF-07 | 2026.8.1 | **three defects Ben found by looking at it** — fixed, see below | Ben | his own look at the running application |
|
||||
| 2026-08-28 | — | — | **awaiting Ben** | — | — |
|
||||
|
||||
## What Ben found on 2026-08-28, and what was done
|
||||
|
||||
He looked at the running application and read it as still being the tool it was
|
||||
forked from. Three things, all real:
|
||||
|
||||
1. **The upstream manual was what he saw first.** It sat in the repository root
|
||||
as `MmdPdf.pdf` and on the test machine at `C:\src`. It was never in the
|
||||
shipped payload — but the application restores the previous session, so once
|
||||
it had been opened it came back on every start, a full-page upstream logo on
|
||||
black. Removed and gitignored. *Not shipped is not the same as not on screen.*
|
||||
It was visible in this project's own screenshots the day before and was noted
|
||||
rather than fixed; that is why it reached him.
|
||||
2. **Scan was in the window chrome**, beside minimise, maximise and close. It is
|
||||
a toolbar button now, next to Print, captioned like every other tool.
|
||||
3. **The footer read v1.7.5**, the upstream project's number. The application is
|
||||
**2026.8.1**. Not 1.0: the pilot machines already carry a build numbered
|
||||
1.7.5, and an upgrade has to sort above what it replaces or Intune reads it
|
||||
as a downgrade.
|
||||
|
||||
## The design gate — OPEN
|
||||
|
||||
|
||||
Reference in New Issue
Block a user