You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🏗️ Native COM Engine Architecture (Windows 11 Primary)
Full COM Pipeline (core/com_engine.py): The entire data processing engine has been reconstructed to use win32com.client as the primary file I/O engine on Windows 11. An invisible Microsoft Excel instance reads/writes ledger files natively, guaranteeing 100% preservation of all enterprise fonts, styles, borders, and layouts.
OS-Aware Dispatcher: engine.py now detects sys.platform == 'win32' and routes processing to the COM engine. On macOS/Linux, it gracefully falls back to openpyxl.
Zombie-Safe Memory Management: The ExcelCOM context manager wraps all Excel operations in a strict try/finally lifecycle. excel.Quit() is always called — even if the script crashes mid-processing — preventing zombie EXCEL.EXE processes from lingering in Task Manager.
Absolute Pathing Enforced: Every file path is converted via os.path.abspath() before touching the COM interface, preventing COM crashes from relative path resolution failures.
VENV-Free Global Compatibility: run.bat now runs on the global system Python installation (no virtual environment) for frictionless enterprise deployment.
Native Excel Formatting (Zero-Fidelity Loss)
Windows Enterprise Ready (win32com): Handles 100% of .xls to .xlsx conversions natively through Microsoft Excel. pywin32>=306 injected as a platform-aware dependency.
Bulletproof COM Execution: Traps pywintypes.com_error and ImportError gracefully, falling back to LibreOffice if Excel is unavailable.
Mac / Linux Native (LibreOffice): Seamlessly interfaces with soffice --headless on non-Windows platforms.
Holiday Parser Fix (Invisible BOT API Weekends)
Smart Static Gap-Filler Overlay: Injects unmoving Thai Public Holidays (e.g., Songkran April 13-15) directly onto the grid when the BOT API omits them from weekend dates.
Windows UX Headless Deployments
run.bat / run_windows.bat for instant GUI launch without terminal windows.
scripts/build_windows.bat with PyInstaller --noconsole --windowed flags.
Global sys.excepthook for headless crash logging to error.log + GUI popup.