Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,6 @@ jobs:
run: |
$assets = Get-ChildItem artifacts -File | Where-Object { $_.Extension -in '.zip', '.sha256' } | Select-Object -ExpandProperty FullName
if ($assets.Count -ne 2) { throw "Expected two release assets, found $($assets.Count)." }
gh release create $env:RELEASE_TAG @assets --verify-tag --generate-notes --title "Tiny11 GUI $env:RELEASE_TAG"
$prereleaseArgs = @()
if ($env:RELEASE_TAG -like '*-*') { $prereleaseArgs = @('--prerelease') }
gh release create $env:RELEASE_TAG @assets --verify-tag --generate-notes --title "Tiny11 GUI $env:RELEASE_TAG" @prereleaseArgs
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,25 @@ Notable changes to Tiny11 GUI are documented here. The project follows semantic

## Unreleased

## 1.3.0-beta.1 — 2026-10-11

### Added

- Optional **Disable Windows Defender** checkbox for Standard builds. When selected, Defender antivirus services are disabled in the offline image and Defender package removal is attempted — the same Defender servicing CORE builds apply. CORE-only destructive operations (recovery image removal, Windows Update service disabling) are not applied to Standard builds.
- Build pre-checks before any servicing starts: source ISO existence, output path must differ from the source ISO and stay outside the working directory, and output/working directories must be creatable.
- Free disk space pre-check. The working drive needs roughly 2× the ISO size plus 10 GB and the output drive 1.2× the ISO size; the build refuses to start with a clear message instead of failing mid-way through DISM.
- The UI language is now chosen from the operating system's UI language (with English fallback) instead of always starting in Turkish.

### Changed

- The main window is now resizable (`CanResizeWithGrip`, minimum 880×560) instead of fixed-size, so it fits smaller or high-DPI screens.
- Versioned releases whose tag contains a pre-release suffix (for example `v1.3.0-beta.1`) are published as GitHub pre-releases.

### Fixed

- Removed hardcoded Turkish and English status messages ("Hazır", "Windows sürümleri yükleniyor...", "Exporting image...") that appeared regardless of the selected UI language; they are now localized in all eight languages.
- Localization resource files are consistent again: 66 unused legacy keys were removed, and all eight languages now carry the identical 174-key set. Previously six translations were missing 49 keys that only existed in English and Turkish.

## 1.2.3 — 2026-09-18

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Tiny11 GUI is inspired by [tiny11builder](https://github.com/ntdevlabs/tiny11bui

- Build from WIM- or ESD-based Windows 11 media with edition selection
- Removable apps: Edge, OneDrive, Cortana, Chat, Teams, Xbox
- Disable telemetry, Windows Update, Defender, sponsored apps, reserved storage, BitLocker
- Disable telemetry, Windows Update, sponsored apps, reserved storage, BitLocker, and (optionally) Windows Defender
- Size reduction: DISM component store cleanup, recovery compression of `install.wim`, Hyper-V/Recall/Speech/OCR/Handwriting stripping, driver store cleanup
- Bypass TPM/CPU/RAM/Secure Boot checks and MS account/network/privacy setup steps
- Built-in presets: Minimal, Balanced, Gaming, Enterprise
Expand Down
29 changes: 14 additions & 15 deletions Resources/Strings.de-DE.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
AppTitle=Tiny11 Builder GUI
IsoSelection=Quell-ISO:
WorkingDirectory=Arbeitsverzeichnis:
OutputPath=Pfad der Ausgabe-ISO:
Expand Down Expand Up @@ -31,7 +30,6 @@ PresetEnterpriseTooltip=Für Unternehmensumgebungen geeignet
MicrosoftEdge=Microsoft Edge
OneDrive=OneDrive
Cortana=Cortana
WindowsChat=Windows-Chat
MicrosoftTeams=Microsoft Teams / Chat
XboxApps=Xbox-Apps
Telemetry=Telemetrie (Datenerfassung)
Expand All @@ -56,15 +54,12 @@ Copilot=Copilot
SpeechOcrHandwriting=Sprache / OCR / Handschrift
DriverCleanup=Nicht verwendete Treiber (Drucker/Scanner/Modem/Xbox)
Ready=Bereit
Processing=Verarbeitung...
Completed=Abgeschlossen!
Error=Ein Fehler ist aufgetreten
IsoSelected=ISO-Datei ausgewählt: {0}
WorkingDirSelected=Arbeitsverzeichnis ausgewählt: {0}
OutputPathSelected=Pfad der Ausgabe-ISO ausgewählt: {0}
AutounattendSelected=Eigene autounattend.xml ausgewählt: {0}
AutounattendCleared=Auswahl der autounattend.xml gelöscht.
BuildStarted=Tiny11-Erstellung gestartet
BuildCompleted=Vorgang erfolgreich abgeschlossen!
BuildFailed=Vorgang fehlgeschlagen!
TPMTooltip=TPM-2.0-Anforderung umgehen
Expand Down Expand Up @@ -147,22 +142,12 @@ LogEditionParseLineError=Analysefehler: {0} - Zeile: {1}
LogEditionsRetrievalFailed=Windows-Editionen konnten nicht ermittelt werden: {0}
LogExpectedLocation=Erwarteter Speicherort: {0}
LogFileSize=Dateigröße: {0} GB ({1} Bytes)
LogIsoCopyError=Fehler beim Kopieren der ISO: {0}
LogIsoCopying=ISO-Datei wird kopiert: {0}
LogIsoPath=ISO: {0}
LogIsoSaved=ISO-Datei erfolgreich gespeichert: {0}
LogIsoUnmounted=ISO ausgehängt.
LogIsoUnmountError=Fehler beim Aushängen der ISO: {0}
LogIsoUnmounting=ISO wird ausgehängt...
LogOutputLocation=Ausgabeort: {0}
LogOutputPath=Ausgabe: {0}
LogProcessCompletedBanner=*** Vorgang erfolgreich abgeschlossen ***
LogProcessFailed=Vorgang fehlgeschlagen (Exitcode: {0}), Bereinigung läuft...
LogProcessFailedBanner=*** Vorgang mit Fehlercode beendet: {0} ***
LogProcessing=Verarbeitung...
LogProcessSuccess=Vorgang erfolgreich abgeschlossen!
LogRegistryUnloading=Registrierungs-Hives werden entladen...
LogRemoveChat=Chat entfernen: {0}
LogRemoveCortana=Cortana entfernen: {0}
LogRemoveEdge=Edge entfernen: {0}
LogRemoveOneDrive=OneDrive entfernen: {0}
Expand All @@ -174,3 +159,17 @@ LogTempFilesDeleting=Temporäre Dateien werden gelöscht...
LogTiny11Starting=Tiny11-Erstellung wird gestartet...
LogWimUnmounting=WIM wird ausgehängt (Änderungen werden verworfen)...
LogWorkingDir=Arbeitsverzeichnis: {0}

DefenderTooltip=Wenn ausgewählt, werden die Windows-Defender-Antivirendienste im Image deaktiviert (wie bei CORE-Builds). Das installierte System hat keinen Antivirenschutz.
StatusLoadingEditions=Windows-Editionen werden geladen...
StatusReadyDefaultEditions=Bereit (Standardeditionen)
StatusExportingImage=Image wird exportiert...
ValidationFailed=Vorabprüfungen fehlgeschlagen. Der Build wurde nicht gestartet.
ValidationIsoNotFound=Windows-ISO-Datei nicht gefunden: {0}
ValidationInvalidPath=Ungültiger Pfad: {0}
ValidationOutputEqualsIso=Die Ausgabe-ISO darf nicht mit der Quell-ISO identisch sein.
ValidationOutputInsideScratch=Die Ausgabe-ISO darf nicht im Arbeitsverzeichnis liegen.
ValidationOutputDirCreateFailed=Ausgabeverzeichnis konnte nicht erstellt werden: {0}
ValidationScratchCreateFailed=Arbeitsverzeichnis konnte nicht erstellt werden: {0}
ValidationDiskSpace=Nicht genug freier Speicherplatz auf {0}: {1:F1} GB erforderlich, {2:F1} GB verfügbar.
ValidationDiskSpaceUnknown=Freier Speicherplatz konnte nicht geprüft werden ({0}). Es wird fortgefahren.
78 changes: 14 additions & 64 deletions Resources/Strings.en-US.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
AppTitle=Tiny11 Builder GUI
IsoSelection=Source ISO:
WorkingDirectory=Working Directory:
OutputPath=Output ISO Path:
Expand Down Expand Up @@ -43,7 +42,6 @@ PresetEnterpriseTooltip=Business environment suitable
MicrosoftEdge=Microsoft Edge
OneDrive=OneDrive
Cortana=Cortana
WindowsChat=Windows Chat
MicrosoftTeams=Microsoft Teams / Chat
XboxApps=Xbox Apps

Expand Down Expand Up @@ -78,8 +76,6 @@ DriverCleanup=Unused Drivers (Printer/Scanner/Modem/Xbox)

# Status Messages
Ready=Ready
Processing=Processing...
Completed=Completed!
Error=Error Occurred
IsoSelected=ISO file selected: {0}
WorkingDirSelected=Working directory selected: {0}
Expand All @@ -88,17 +84,10 @@ AutounattendSelected=Custom autounattend.xml selected: {0}
AutounattendCleared=Custom autounattend.xml selection cleared.

# Build Process Messages
BuildStarted=Tiny11 Build Process Started
MountingIso=Mounting ISO file...
RunningScript=Running PowerShell script...
BuildCompleted=Process completed successfully!
BuildFailed=Process failed!

# Error Messages
IsoMountFailed=Could not mount ISO file!
ScriptNotFound=Script file not found: {0}
AdminRightsWarning=Running with administrator privileges is recommended
MissingFields=Missing: {0}

# Tooltips
TPMTooltip=Bypass TPM 2.0 requirement
Expand All @@ -112,15 +101,9 @@ AutounattendTooltip=Use your own autounattend.xml instead of the built-in OOBE b

# Language Selection
Language=Application Language:
LanguageTurkish=Türkçe
LanguageEnglish=English
LanguageChangedTR=Language changed to Turkish
LanguageChangedEN=Language changed to English
LanguageChanged=Language changed to {0}

# Image Types Content
StandardTypeContent=Standard (tiny11maker)
CoreTypeContent=Core (tiny11Coremaker)

# Startup Messages
AppStarted=Tiny11 GUI started
Expand All @@ -145,7 +128,6 @@ LogSelectedOptions=Selected Options:
LogRemoveEdge=Remove Edge: {0}
LogRemoveOneDrive=Remove OneDrive: {0}
LogRemoveCortana=Remove Cortana: {0}
LogRemoveChat=Remove Chat: {0}
LogRemoveTeams=Remove Teams: {0}
LogRemoveXbox=Remove Xbox: {0}
LogDisableTelemetry=Disable Telemetry: {0}
Expand All @@ -160,8 +142,6 @@ LogNo=No
# Log Messages - Process Status
LogScriptCreated=Custom script created: {0}
LogTiny11Starting=Tiny11 build process starting...
LogIsoMounting=ISO file is being mounted...
LogIsoMounted=ISO mounted: {0}
LogProcessing=Processing...
LogBuildSuccess=Tiny11 ISO created successfully!
LogOutputLocation=Output location: {0}
Expand All @@ -179,46 +159,13 @@ LogWimUnmounting=WIM unmounting (discarding changes)...
LogIsoUnmounting=ISO unmounting...
LogRegistryUnloading=Registry hives unloading...
LogTempFilesDeleting=Temporary files deleting...
LogTempFilesError=Some temporary files could not be deleted: {0}
LogCancelComplete=Process cancelled and cleanup completed.
LogCancelError=Error during cancellation: {0}
LogCancelByUser=Process cancelled by user.
LogCancelReceived=Cancel request received...
LogAlreadyRunning=A process is already running!

# Log Messages - Script Process
LogPreparingDirs=Directories are being prepared...
LogCopyingIso=ISO content is being copied...
LogConvertingEsd=ESD -> WIM converting...
LogMountingWim=Windows image mounting...
LogRemovingApps=Removing unnecessary applications...
LogRemoving=Removing: {0}
LogSkipped=Skipped: {0}
LogRemovingEdge=Microsoft Edge is being removed...
LogDeleted=Deleted: {0}
LogRemovingOneDrive=OneDrive is being removed...
LogApplyingRegistry=Registry settings are being applied...
LogBypassingRequirements=System requirements are being bypassed...
LogDisablingTelemetry=Telemetry is being disabled...
LogDisablingSponsoredApps=Sponsored apps are being disabled...
LogDisablingReservedStorage=Reserved Storage is being disabled...
LogDisablingBitLocker=BitLocker auto-encryption is being disabled...
LogBypassingMSAccount=Microsoft account requirement is being bypassed...
LogDisablingWindowsUpdate=Windows Update is being disabled...
LogDisablingDefender=Windows Defender is being disabled (Security risk!)...
LogSavingRegistry=Registry is being saved...
LogCreatingOobeScript=OOBE bypass script is being created...
LogCreatingAutounattend=autounattend.xml is being created...
LogSavingChanges=Changes are being saved...
LogUnmountingSourceIso=Source ISO unmounting...
LogCreatingIso=Tiny11 ISO is being created...
LogOscdimgNotFound=oscdimg.exe not found! Windows ADK must be installed.
LogOscdimgFound=oscdimg found: {0}
LogCleaningUp=Cleanup in progress...
LogIsoCreatedSuccess=Tiny11 ISO created successfully!
LogLocation=Location: {0}
LogSize=Size: {0} GB
LogIsoCreationFailed=ISO could not be created!

# Status Messages
StatusStarting=Starting process...
Expand Down Expand Up @@ -251,29 +198,32 @@ EditionsLoadFailed=Could not load Windows editions
LoadingDefaultEditions=Loading default editions...

# Process Messages
LogProcessFailed=Process failed (Exit Code: {0}), cleaning up...
LogProcessSuccess=Process completed successfully!
LogIsoCopying=Copying ISO file: {0}
LogIsoSaved=ISO file saved successfully: {0}
LogIsoCopyError=ISO copy error: {0}
LogSystemCleanupComplete=System cleanup completed
LogCleanupError=Cleanup error: {0}
LogComprehensiveCleanup=Performing comprehensive system cleanup...
LogComprehensiveCleanupComplete=Comprehensive cleanup completed
LogCleanupContinue=Cleanup error (continuing): {0}
LogSystemCleanupInProgress=System cleanup in progress...

# Log Messages - Additional
LogAdminRightsRecommended=Warning: Running the application with administrator privileges is recommended.
LogAdminRightsNeededForEditions=Administrator privileges may be required to read Windows editions.
LogProcessCompletedBanner=*** Process Completed Successfully ***
LogProcessFailedBanner=*** Process Ended With Error Code: {0} ***
LogPresetMinimalApplied=Minimal preset applied - Maximum optimization
LogPresetBalancedApplied=Balanced preset applied - Balanced optimization
LogPresetGamingApplied=Gaming preset applied - Performance optimization
LogPresetEnterpriseApplied=Enterprise preset applied - Business environment optimization
LogEditionParseLineError=Parse error: {0} - Line: {1}
LogEditionParseFallback=Parsing failed, adding all default editions...
LogEditionsRetrievalFailed=Could not retrieve Windows editions: {0}
LogIsoUnmounted=ISO unmounted.
LogIsoUnmountError=ISO unmount error: {0}

DefenderTooltip=When selected, Windows Defender antivirus services are disabled in the image (same as CORE builds). The installed system will have no antivirus protection.
StatusLoadingEditions=Loading Windows editions...
StatusReadyDefaultEditions=Ready (default editions)
StatusExportingImage=Exporting image...
ValidationFailed=Pre-checks failed. The build was not started.
ValidationIsoNotFound=Windows ISO file not found: {0}
ValidationInvalidPath=Invalid path: {0}
ValidationOutputEqualsIso=The output ISO cannot be the same as the source ISO.
ValidationOutputInsideScratch=The output ISO cannot be inside the working directory.
ValidationOutputDirCreateFailed=The output directory could not be created: {0}
ValidationScratchCreateFailed=The working directory could not be created: {0}
ValidationDiskSpace=Not enough free disk space on {0}: {1:F1} GB required, {2:F1} GB available.
ValidationDiskSpaceUnknown=Free disk space could not be checked ({0}). Continuing anyway.
29 changes: 14 additions & 15 deletions Resources/Strings.es-ES.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
AppTitle=Interfaz de Tiny11 Builder
IsoSelection=ISO de origen:
WorkingDirectory=Carpeta de trabajo:
OutputPath=Ruta de la ISO de salida:
Expand Down Expand Up @@ -31,7 +30,6 @@ PresetEnterpriseTooltip=Adecuado para entornos empresariales
MicrosoftEdge=Microsoft Edge
OneDrive=OneDrive
Cortana=Cortana
WindowsChat=Chat de Windows
MicrosoftTeams=Microsoft Teams / Chat
XboxApps=Aplicaciones de Xbox
Telemetry=Telemetría (recopilación de datos)
Expand All @@ -56,15 +54,12 @@ Copilot=Copilot
SpeechOcrHandwriting=Voz / OCR / escritura a mano
DriverCleanup=Controladores sin usar (impresora/escáner/módem/Xbox)
Ready=Listo
Processing=Procesando...
Completed=¡Completado!
Error=Se produjo un error
IsoSelected=Archivo ISO seleccionado: {0}
WorkingDirSelected=Carpeta de trabajo seleccionada: {0}
OutputPathSelected=Ruta de la ISO de salida seleccionada: {0}
AutounattendSelected=autounattend.xml personalizado seleccionado: {0}
AutounattendCleared=Se borró la selección de autounattend.xml.
BuildStarted=Se inició la creación de Tiny11
BuildCompleted=¡El proceso terminó correctamente!
BuildFailed=¡El proceso ha fallado!
TPMTooltip=Omitir el requisito de TPM 2.0
Expand Down Expand Up @@ -147,22 +142,12 @@ LogEditionParseLineError=Error de análisis: {0} - Línea: {1}
LogEditionsRetrievalFailed=No se pudieron obtener las ediciones de Windows: {0}
LogExpectedLocation=Ubicación esperada: {0}
LogFileSize=Tamaño del archivo: {0} GB ({1} bytes)
LogIsoCopyError=Error al copiar la ISO: {0}
LogIsoCopying=Copiando archivo ISO: {0}
LogIsoPath=ISO: {0}
LogIsoSaved=Archivo ISO guardado correctamente: {0}
LogIsoUnmounted=ISO desmontada.
LogIsoUnmountError=Error al desmontar la ISO: {0}
LogIsoUnmounting=Desmontando la ISO...
LogOutputLocation=Ubicación de salida: {0}
LogOutputPath=Salida: {0}
LogProcessCompletedBanner=*** Proceso completado correctamente ***
LogProcessFailed=El proceso falló (código de salida: {0}); limpiando...
LogProcessFailedBanner=*** El proceso terminó con el código de error: {0} ***
LogProcessing=Procesando...
LogProcessSuccess=¡Proceso completado correctamente!
LogRegistryUnloading=Descargando subárboles del Registro...
LogRemoveChat=Eliminar Chat: {0}
LogRemoveCortana=Eliminar Cortana: {0}
LogRemoveEdge=Eliminar Edge: {0}
LogRemoveOneDrive=Eliminar OneDrive: {0}
Expand All @@ -174,3 +159,17 @@ LogTempFilesDeleting=Eliminando archivos temporales...
LogTiny11Starting=Iniciando la creación de Tiny11...
LogWimUnmounting=Desmontando WIM (descartando cambios)...
LogWorkingDir=Carpeta de trabajo: {0}

DefenderTooltip=Al seleccionarlo, los servicios antivirus de Windows Defender se desactivan en la imagen (igual que en las compilaciones CORE). El sistema instalado no tendrá protección antivirus.
StatusLoadingEditions=Cargando ediciones de Windows...
StatusReadyDefaultEditions=Listo (ediciones predeterminadas)
StatusExportingImage=Exportando imagen...
ValidationFailed=Las comprobaciones previas fallaron. La compilación no se inició.
ValidationIsoNotFound=No se encontró el archivo ISO de Windows: {0}
ValidationInvalidPath=Ruta no válida: {0}
ValidationOutputEqualsIso=La ISO de salida no puede ser la misma que la ISO de origen.
ValidationOutputInsideScratch=La ISO de salida no puede estar dentro del directorio de trabajo.
ValidationOutputDirCreateFailed=No se pudo crear el directorio de salida: {0}
ValidationScratchCreateFailed=No se pudo crear el directorio de trabajo: {0}
ValidationDiskSpace=Espacio insuficiente en {0}: se requieren {1:F1} GB, hay {2:F1} GB disponibles.
ValidationDiskSpaceUnknown=No se pudo comprobar el espacio libre en disco ({0}). Se continúa.
Loading