Releases: salmanasmat/InPageToUnicode
Release list
v1.1.2
Release Notes
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.1.2] - 2026-07-24
🚀 New Features
- Add Space After Commas & Numbers: Added an option (
add_comma_number_space) to automatically insert a space after commas (,,،) and numeric runs (0-9,۰-۹) when not followed by whitespace across both conversion directions.
⚡ Improvements
- GUI Option Toggle: Added an interactive "Add space after commas and numbers" checkbox to the main window options panel.
🏗️ Infrastructure & Maintenance
- Expanded Test Suite: Added unit and GUI interaction tests (
test_add_comma_number_space_option,test_add_comma_number_space_checkbox) to verify punctuation and digit spacing. - Packaging Release: Updated version to 1.1.2 and re-compiled PyInstaller executable and Inno Setup installer package (
InPageUnicodeConverter-Setup-1.1.2.exe).
v1.1.1
Release Notes
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.1.1] - 2026-07-24
🚀 New Features
- Remove Consecutive Double Spaces: Added an option (
remove_double_space) to automatically collapse consecutive multiple spaces into a single space during both InPage-to-Unicode and Unicode-to-InPage conversions. - Add Space After Every Word: Added an option (
add_word_space) to append an extra space after each word across both conversion pipelines.
⚡ Improvements
- GUI Options Panel: Updated the main window interface to include interactive checkboxes for both "Remove consecutive double spaces" and "Add space after every word" alongside export options.
🏗️ Infrastructure & Maintenance
- Expanded Test Suite: Added complete unit tests and GUI interaction tests (
test_remove_double_space_option,test_add_word_space_option,test_remove_double_space_checkbox,test_add_word_space_checkbox) to verify whitespace handling and UI controls.
v1.1.0
Release Notes
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.1.0] - 2026-07-10
⚡ Improvements
- Diacritics in Hamza Combinations: Enhanced InPage-to-Unicode conversion to handle diacritics (zabar, zer, pesh, shadda) residing between a base letter (Heh or Wao) and a Hamza modifier, ensuring proper round-trip conversion and rendering.
🏗️ Infrastructure & Maintenance
- Version Release: Updated to version 1.1.0.
- Installer Naming: Appended the version number to the output installer file name (
InPageUnicodeConverter-Setup-1.1.0.exe).
v1.0.1
Release Notes
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.1] - 2026-07-07
⚡ Improvements
- Optimized UI Performance: Simplified and optimized raw text and selection extraction in
InPageInputTextEditby utilizing native Qt methods (toRawTextandselectedText), completely eliminating Python-level text traversal loops and GUI thread locking on large text documents. - Defensive Clipboard Checks: Added robust guards to verify the initialization of a
QApplicationinstance before accessing the Windows clipboard. This prevents application crashes when utility modules are imported or run in non-GUI, test, or headless environments.
🐛 Bug Fixes
- Heh-Hamza Round-Trip Conversion: Fixed a critical conversion gap where Heh-Hamza (
ۂ) characters in Unicode Urdu were left unconverted when writing back to legacy InPage encoding. They now correctly map back to the legacy CP-1252 byte representation (\x04\xa6\x04\xbf). - ANSI File Save Integrity: Resolved an issue where saving legacy InPage converted outputs to a file utilized UTF-8 encoding. The exporter now dynamically writes legacy outputs using
latin-1(CP-1252), keeping the resulting files fully compatible with ANSI-based legacy import workflows. - Removed Dead Mapping Entry: Cleaned up the
ITU_MAPglyph mappings by removing the duplicate and dead entry for the Kashida character (\x04\xa9), which is handled manually by custom rules.
🏗️ Infrastructure & Maintenance
- Conversion Test Cases: Expanded the automated test suite in
tests/test_pairs.pyto assert correct Heh-Hamza round-trip conversions.
[1.0.0] - 2026-06-30
🚀 New Features
- Bidirectional Conversion: Full support for converting between InPage legacy glyph encoding (CP-1252/custom) and standard Unicode Urdu text.
- Direct Clipboard Integration: Implemented a custom clipboard handler using native Windows
ctypesAPI. This directly grabs CP-1252 raw bytes from theCF_TEXTformat, bypassing Windows lossy ANSI/Unicode normalizations that strip key character indicators (like the non-breaking space\xa0representing Noon). - Nastaliq Rendering: Bundled Google's open-source Noto Nastaliq Urdu font and configured automatic Right-to-Left (RTL) reading layout for Unicode text, ensuring consistent rendering on any Windows machine.
- Optional File Export: Added a direct toggle in the GUI to export converted outputs into a clean, UTF-8 encoded
.txtfile using native Windows save-file dialogs.
⚡ Improvements
- Interactive UI Utilities: Added helper buttons for "Paste from Clipboard" and "Clear", along with live input character counts.
- Intelligent Font Loading: Configured dynamic font loading via PyQt5's
QFontDatabaseto guarantee proper Nastaliq styling even if the system does not have Urdu fonts pre-installed. - Validation Dialogs: Added warning notifications for empty text inputs and direction checking (raising a warning if the conversion output does not appear to contain valid Urdu characters).
🐛 Bug Fixes
- Non-breaking Space Preservation: Fixed a critical issue where standard text edit paste events would collapse the
\xa0character into a standard space, breaking ligature reconstruction. - Error Boundaries: Implemented try-catch safeguards around OS operations (like file system writes) to present formatted error dialogs to users instead of raw tracebacks.
📚 Documentation
- Architecture & Code Docs: Created CODE_DOCUMENTATION.md detailing the MVC layout, ctypes clipboard calls, and mapping flow.
- Design Philosophy: Created DESIGN_PHILOSOPHY.md outlining project architecture, decoupling decisions, and technical trade-offs.
- Developer Guidelines: Created CONTRIBUTING.md to onboard contributors with repository standards and branch setup.
🏗️ Infrastructure & Maintenance
- Packaging Pipeline: Created
InPageConverter.specfor compiling the project into a standalone.exeusing PyInstaller. - Standard Installer: Created
inno_setup.issto package the compiled executable into a professional Windows Installer with Desktop/Start Menu shortcuts. - Automated Tests: Structured automated unit and integration tests under the
tests/directory verifying mapping logic, digit reversal, Hamza correction, and custom clipboard mechanics.
v1.0.0 (Initial Release)
Release Notes
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.0] - 2026-06-30
🚀 New Features
- Bidirectional Conversion: Full support for converting between InPage legacy glyph encoding (CP-1252/custom) and standard Unicode Urdu text.
- Direct Clipboard Integration: Implemented a custom clipboard handler using native Windows
ctypesAPI. This directly grabs CP-1252 raw bytes from theCF_TEXTformat, bypassing Windows lossy ANSI/Unicode normalizations that strip key character indicators (like the non-breaking space\xa0representing Noon). - Nastaliq Rendering: Bundled Google's open-source Noto Nastaliq Urdu font and configured automatic Right-to-Left (RTL) reading layout for Unicode text, ensuring consistent rendering on any Windows machine.
- Optional File Export: Added a direct toggle in the GUI to export converted outputs into a clean, UTF-8 encoded
.txtfile using native Windows save-file dialogs.
⚡ Improvements
- Interactive UI Utilities: Added helper buttons for "Paste from Clipboard" and "Clear", along with live input character counts.
- Intelligent Font Loading: Configured dynamic font loading via PyQt5's
QFontDatabaseto guarantee proper Nastaliq styling even if the system does not have Urdu fonts pre-installed. - Validation Dialogs: Added warning notifications for empty text inputs and direction checking (raising a warning if the conversion output does not appear to contain valid Urdu characters).
🐛 Bug Fixes
- Non-breaking Space Preservation: Fixed a critical issue where standard text edit paste events would collapse the
\xa0character into a standard space, breaking ligature reconstruction. - Error Boundaries: Implemented try-catch safeguards around OS operations (like file system writes) to present formatted error dialogs to users instead of raw tracebacks.
📚 Documentation
- Architecture & Code Docs: Created CODE_DOCUMENTATION.md detailing the MVC layout, ctypes clipboard calls, and mapping flow.
- Design Philosophy: Created DESIGN_PHILOSOPHY.md outlining project architecture, decoupling decisions, and technical trade-offs.
- Developer Guidelines: Created CONTRIBUTING.md to onboard contributors with repository standards and branch setup.
🏗️ Infrastructure & Maintenance
- Packaging Pipeline: Created
InPageConverter.specfor compiling the project into a standalone.exeusing PyInstaller. - Standard Installer: Created
inno_setup.issto package the compiled executable into a professional Windows Installer with Desktop/Start Menu shortcuts. - Automated Tests: Structured automated unit and integration tests under the
tests/directory verifying mapping logic, digit reversal, Hamza correction, and custom clipboard mechanics.