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.