Author SHA1 Message Date
kua-agent 2085dad3b9 chore: version 2026.8.2 so the fixed build can actually reach installed machines 2026-08-28 07:15:12 +00:00
kua-agent b6f046abdd Merge pull request 'fix: no black area around the window over a remote desktop' (#7) from fix/mmd-pdf-remote-desktop-black-area-20260828 into main 2026-08-28 06:56:02 +00:00
kua-agent 9dcd9055d9 fix: draw in software over remote desktop so the window has no black area 2026-08-28 06:56:00 +00:00
kua-agent cc579d794e Merge pull request 'fix: remove the last upstream wordmark from dialogs, About and every language file' (#6) from fix/mmd-pdf-remove-killer-wordmark-20260828 into main 2026-08-28 06:40:16 +00:00
kua-agent 19d9e906b7 fix: MMD PDF wordmark in Strings/zh-TW.xaml 2026-08-28 06:40:04 +00:00
kua-agent a9b8f314a7 fix: MMD PDF wordmark in Strings/zh-CN.xaml 2026-08-28 06:40:02 +00:00
kua-agent a26a4a7f46 fix: MMD PDF wordmark in Strings/tr-TR.xaml 2026-08-28 06:40:00 +00:00
kua-agent 221a7962ea fix: MMD PDF wordmark in Strings/pl-PL.xaml 2026-08-28 06:39:58 +00:00
kua-agent ac092ccccc fix: MMD PDF wordmark in Strings/ja-JP.xaml 2026-08-28 06:39:55 +00:00
kua-agent 031c386191 fix: MMD PDF wordmark in Strings/hu-HU.xaml 2026-08-28 06:39:53 +00:00
kua-agent 0abfa700fe fix: MMD PDF wordmark in Strings/fr-FR.xaml 2026-08-28 06:39:51 +00:00
kua-agent b29e087029 fix: MMD PDF wordmark in Strings/es.xaml 2026-08-28 06:39:49 +00:00
kua-agent 9287248214 fix: MMD PDF wordmark in Strings/en-US.xaml 2026-08-28 06:39:47 +00:00
kua-agent 1527e9fd7a fix: MMD PDF wordmark in Strings/de-DE.xaml 2026-08-28 06:39:44 +00:00
kua-agent b789881134 fix: MMD PDF wordmark in Strings/cs-CZ.xaml 2026-08-28 06:39:42 +00:00
kua-agent 2090f57008 fix: MMD PDF wordmark in Strings/bn.xaml 2026-08-28 06:39:40 +00:00
kua-agent b4bb2544f6 fix: MMD PDF wordmark in Shell/About.cs 2026-08-28 06:39:37 +00:00
kua-agent edc2a3f050 fix: MMD PDF wordmark in Controls/KillerDialog.cs 2026-08-28 06:39:36 +00:00
kua-agent 0d8c86eccd Merge pull request 'fix: remove the last KillerPDF wordmark and put MMD PDF in the title bar' (#5) from fix/mmd-pdf-wordmark-titlebar-20260828 into main 2026-08-28 06:27:09 +00:00
kua-agent 19791f1aca fix: show the MMD PDF wordmark instead of the upstream one in MainWindow.xaml 2026-08-28 06:26:59 +00:00
kua-agent 1ed999f3c8 fix: show the MMD PDF wordmark instead of the upstream one in Controls/DialogChrome.cs 2026-08-28 06:26:56 +00:00
kua-agent 31447b8d80 Stop shipping the upstream manual, move Scan to the toolbar, MMD version (#4) 2026-08-28 04:36:14 +00:00
kua-agentandClaude Opus 5 87649cd77f docs: record the 2026-08-28 round and what Ben found
Sign-off log gains the design-system rebuild, the scan work, signing from
mmd-fsn-01 and the Intune publish, then the three defects Ben found by looking
at the running application and what was done about each.

Backlog: PDF-07, PDF-08 and PDF-09 go green (built, run and looked at on the
test machine at 800x600), PDF-17 and PDF-18 go green (signed, published), and
PDF-14 goes amber with the reason stated plainly - the copier conversation and
the dialog are proven, the page transfer has never met real hardware.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 04:36:06 +00:00
kua-agentandClaude Opus 5 a351e8e9a0 fix: stop shipping the upstream manual, move Scan to the toolbar, MMD version
Three things Ben saw on the running application that all read as "this is still
the tool it was forked from".

1. The upstream 50-page manual was sitting in the repository root as MmdPdf.pdf,
   so it was the document on screen whenever it was opened or restored from the
   last session - a full-page green upstream logo on black. It was never shipped
   in the payload, but it was there to be opened, which is the same thing to
   whoever is looking at the screen. Removed, and added to .gitignore so it does
   not come back with a source drop. With no document, the application opens on
   its own empty view.

2. Scan was in the title bar beside minimise, maximise and close. That is window
   chrome, not a tool. It is a toolbar button now, next to Print in the file
   group, with a caption in every label mode like every other tool. The band
   button style it used has no other user and is gone with it.

3. The footer read v1.7.5, which is the upstream project's version. MMD PDF 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 would read it as
   a downgrade. The Intune detection rule moves with it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 04:24:59 +00:00
kua-agent 29850c364a One merged MMD band, Scan in the main bar, shorter icon row, signed and Intune-ready (#3) 2026-08-28 03:26:28 +00:00
kua-agent 2cc2f1b627 Merge pull request 'MMD PDF: rebrand, single corporate theme, and real removal of edited text' (#1) from feat/mmd-pdf-rebrand-20260827 into main
Verified live on mmd-win-test-01 by keyboard-and-mouse test: edited value replaces the original in the saved file and the old value is no longer recoverable.
2026-08-27 05:37:41 +00:00
23 changed files with 91 additions and 83 deletions
+1
View File
@@ -1,3 +1,4 @@
bin/
obj/
*.user
MmdPdf.pdf
+20 -1
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
@@ -68,8 +68,27 @@ namespace MmdPdf
// Startup
// ============================================================
// Windows reports whether we are being viewed over a remote desktop. In that case WPF's
// hardware compositing hands the session a surface it never repaints when the desktop is
// resized, which leaves the part of the window outside the original size drawn as flat
// black. Drawing in software costs nothing at this size and keeps the whole window painted.
[DllImport("user32.dll")]
private static extern int GetSystemMetrics(int index);
private const int SM_REMOTESESSION = 0x1000;
private static void UseSoftwareRenderingOnRemoteDesktops()
{
try
{
if (GetSystemMetrics(SM_REMOTESESSION) != 0)
RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;
}
catch { /* never let a rendering hint stop the application starting */ }
}
protected override void OnStartup(StartupEventArgs e)
{
UseSoftwareRenderingOnRemoteDesktops();
StartupTrace.Mark("App.OnStartup entered");
DispatcherUnhandledException += OnDispatcherException;
AppDomain.CurrentDomain.UnhandledException += OnDomainException;
+2 -2
View File
@@ -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 -3
View File
@@ -82,7 +82,7 @@ namespace MmdPdf
{
var wm = new StackPanel { Orientation = Orientation.Horizontal };
var wmTb = new TextBlock { VerticalAlignment = VerticalAlignment.Center };
wmTb.Inlines.Add(new System.Windows.Documents.Run("Killer") { FontFamily = UiKit.WordmarkFont, FontWeight = FontWeights.Normal, FontSize = 15, Foreground = R("TextBrush") });
wmTb.Inlines.Add(new System.Windows.Documents.Run("MMD ") { FontFamily = UiKit.WordmarkFont, FontWeight = FontWeights.Normal, FontSize = 15, Foreground = R("TextBrush") });
wmTb.Inlines.Add(new System.Windows.Documents.Run("PDF") { FontFamily = UiKit.WordmarkFontPdf, FontWeight = FontWeights.Bold, FontSize = 19.5, Foreground = R("AccentLogo") });
wm.Children.Add(wmTb);
// No DropShadowEffect on the text - it rasterizes and blurs the wordmark. Kept crisp.
@@ -241,7 +241,7 @@ namespace MmdPdf
if (title == "MmdPdf")
{
var wmTb = new TextBlock { VerticalAlignment = VerticalAlignment.Center };
wmTb.Inlines.Add(new System.Windows.Documents.Run("Killer") { FontFamily = UiKit.WordmarkFont, FontWeight = FontWeights.Normal, FontSize = 15, Foreground = R("TextBrush") });
wmTb.Inlines.Add(new System.Windows.Documents.Run("MMD ") { FontFamily = UiKit.WordmarkFont, FontWeight = FontWeights.Normal, FontSize = 15, Foreground = R("TextBrush") });
wmTb.Inlines.Add(new System.Windows.Documents.Run("PDF") { FontFamily = UiKit.WordmarkFontPdf, FontWeight = FontWeights.Bold, FontSize = 19.5, Foreground = R("AccentLogo") });
titleBar.Child = wmTb;
}
@@ -386,7 +386,7 @@ namespace MmdPdf
titleBar.MouseLeftButtonDown += (_, e) => { if (e.ButtonState == MouseButtonState.Pressed) win.DragMove(); };
var wm = new StackPanel { Orientation = Orientation.Horizontal };
var wmTb = new TextBlock { VerticalAlignment = VerticalAlignment.Center };
wmTb.Inlines.Add(new System.Windows.Documents.Run("Killer") { FontFamily = UiKit.WordmarkFont, FontWeight = FontWeights.Normal, FontSize = 15, Foreground = R("TextBrush") });
wmTb.Inlines.Add(new System.Windows.Documents.Run("MMD ") { FontFamily = UiKit.WordmarkFont, FontWeight = FontWeights.Normal, FontSize = 15, Foreground = R("TextBrush") });
wmTb.Inlines.Add(new System.Windows.Documents.Run("PDF") { FontFamily = UiKit.WordmarkFontPdf, FontWeight = FontWeights.Bold, FontSize = 18, Foreground = R("AccentLogo") });
wm.Children.Add(wmTb);
titleBar.Child = wm;
+3 -52
View File
@@ -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="&#xE8FE;" 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="&#xE70D;" FontSize="10" Width="13" Padding="0" Margin="-6,0,0,0" Style="{StaticResource ToolbarButton}" Click="OcrMenu_Click" ToolTip="{DynamicResource Str_TT_OcrOptions}"/>
<Button Content="&#xE8B9;" Style="{StaticResource ToolbarButton}" Click="SaveFlattened_Click" ToolTip="{DynamicResource Str_TT_SaveFlattened}"/>
<Button Content="&#xE749;" Style="{StaticResource ToolbarButton}" Click="Print_Click" ToolTip="{DynamicResource Str_TT_Print}"/>
<Button x:Name="ScanBtn" Content="&#xE8FE;" 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="&#xE710;" Style="{StaticResource ToolbarButton}" Click="Merge_Click" ToolTip="{DynamicResource Str_TT_MergePDFs}"/>
+6 -4
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
@@ -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.2</Version>
<AssemblyVersion>2026.8.2.0</AssemblyVersion>
<FileVersion>2026.8.2.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
View File
Binary file not shown.
+2 -2
View File
@@ -110,7 +110,7 @@ namespace MmdPdf
{
AboutLogoBlock.Inlines.Clear();
var hl = new Hyperlink { TextDecorations = null };
hl.Inlines.Add(new Run("Killer")
hl.Inlines.Add(new Run("MMD ")
{
FontFamily = UiKit.WordmarkFont,
FontSize = 21,
@@ -133,7 +133,7 @@ namespace MmdPdf
var shadowBrush = new System.Windows.Media.SolidColorBrush(
System.Windows.Media.Color.FromArgb(0xB0, 0, 0, 0));
shadowBrush.Freeze();
AboutLogoShadowBlock.Inlines.Add(new Run("Killer")
AboutLogoShadowBlock.Inlines.Add(new Run("MMD ")
{
FontFamily = UiKit.WordmarkFont,
FontSize = 21,
+1
View File
@@ -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",
+1 -1
View File
@@ -671,7 +671,7 @@ Windows সেটিংস - ডিফল্ট অ্যাপ খুলবে
<sys:String x:Key="Str_Key_WheelLogo">লোগোর উপর হুইল</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">মাঝের বোতামে টানুন</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">স্পেস + টানুন</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">খুলুন</sys:String>
<sys:String x:Key="Str_Btn_Replace">পরিবর্তন</sys:String>
+1 -1
View File
@@ -676,7 +676,7 @@ Změnit jejich velikost na podporovanou? Stránky si zachovají vzhled i proporc
<sys:String x:Key="Str_Key_WheelLogo">Kolečko nad logem</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Tažení prostředním tlačítkem</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Mezerník + tažení</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Otevřít</sys:String>
<sys:String x:Key="Str_Btn_Replace">Nahradit</sys:String>
+1 -1
View File
@@ -677,7 +677,7 @@ Auf eine unterstützte Größe skalieren? Aussehen und Proportionen der Seiten b
<sys:String x:Key="Str_Key_WheelLogo">Rad über Logo</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Mittlere Taste ziehen</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Leertaste + ziehen</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Öffnen</sys:String>
<sys:String x:Key="Str_Btn_Replace">Ersetzen</sys:String>
+3 -1
View File
@@ -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>
@@ -694,7 +696,7 @@ Scale them to a supported size? The pages keep their look and proportions.</sys:
<sys:String x:Key="Str_Key_WheelLogo">Wheel on logo</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Middle drag</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Space + drag</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Open</sys:String>
<sys:String x:Key="Str_Btn_Replace">Replace</sys:String>
+1 -1
View File
@@ -671,7 +671,7 @@ Abre Configuración de Windows - Aplicaciones predeterminadas.</sys:String>
<sys:String x:Key="Str_Key_WheelLogo">Rueda sobre el logotipo</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Arrastrar con el botón central</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Espacio + arrastrar</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Abrir</sys:String>
<sys:String x:Key="Str_Btn_Replace">Reemplazar</sys:String>
+1 -1
View File
@@ -687,7 +687,7 @@ Les redimensionner à une taille prise en charge ? Les pages conservent leur app
<sys:String x:Key="Str_Key_WheelLogo">Molette sur le logo</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Glisser avec le bouton du milieu</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Espace + glisser</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Ouvrir</sys:String>
<sys:String x:Key="Str_Btn_Replace">Remplacer</sys:String>
+1 -1
View File
@@ -692,7 +692,7 @@ Megnyílik a Windows Beállítások - Alapértelmezett alkalmazások.</sys:Strin
<sys:String x:Key="Str_Key_WheelLogo">Görgő a logó felett</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Húzás középső gombbal</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Szóköz + húzás</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Megnyitás</sys:String>
<sys:String x:Key="Str_Btn_Replace">Csere</sys:String>
+1 -1
View File
@@ -676,7 +676,7 @@ Windows の設定 - 既定のアプリ を開きます。</sys:String>
<sys:String x:Key="Str_Key_WheelLogo">ロゴ上でホイール</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">中ボタンでドラッグ</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Space + ドラッグ</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">開く</sys:String>
<sys:String x:Key="Str_Btn_Replace">置き換え</sys:String>
+1 -1
View File
@@ -669,7 +669,7 @@ Przeskalować je do obsługiwanego rozmiaru? Strony zachowują swój wygląd i p
<sys:String x:Key="Str_Key_WheelLogo">Kółko nad logo</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Przeciąganie środkowym przyciskiem</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Spacja + przeciąganie</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Otwórz</sys:String>
<sys:String x:Key="Str_Btn_Replace">Zamień</sys:String>
+1 -1
View File
@@ -671,7 +671,7 @@ Desteklenen bir boyuta ölçeklensin mi? Sayfaların görünümü ve oranları k
<sys:String x:Key="Str_Key_WheelLogo">Logo üzerinde tekerlek</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">Orta tuşla sürükleme</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">Boşluk + sürükleme</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">Aç</sys:String>
<sys:String x:Key="Str_Btn_Replace">Değiştir</sys:String>
+1 -1
View File
@@ -675,7 +675,7 @@ MMD PDF 不会创建两个已安装的副本。</sys:String>
<sys:String x:Key="Str_Key_WheelLogo">在徽标上滚动滚轮</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">中键拖动</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">空格 + 拖动</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">打开</sys:String>
<sys:String x:Key="Str_Btn_Replace">替换</sys:String>
+1 -1
View File
@@ -673,7 +673,7 @@ MMD PDF 不會建立兩個已安裝的複本。</sys:String>
<sys:String x:Key="Str_Key_WheelLogo">在標誌上滾動滾輪</sys:String>
<sys:String x:Key="Str_Key_MiddleDrag">中鍵拖曳</sys:String>
<sys:String x:Key="Str_Key_SpaceDrag">空白鍵 + 拖曳</sys:String>
<sys:String x:Key="Str_Wordmark_A">Killer</sys:String>
<sys:String x:Key="Str_Wordmark_A">MMD </sys:String>
<sys:String x:Key="Str_Wordmark_B">PDF</sys:String>
<sys:String x:Key="Str_Btn_Open">開啟</sys:String>
<sys:String x:Key="Str_Btn_Replace">取代</sys:String>
+14 -6
View File
@@ -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 1624px | — | — | ⛔ | 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
+25 -1
View File
@@ -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