v1.2.6 is primarily a stabilization and internationalization release.
It does not introduce a new scheduling engine or major analytics feature. Instead, it focuses on making ProjectEngine more reliable across different Excel environments, cleaning up legacy UI architecture, and resolving compatibility issues reported by users.
A special thank you to the users who tested ProjectEngine outside my own Excel environment and provided detailed feedback. Several of the changes below started directly from those reports.
🌍 Internationalization overhaul
ProjectEngine is no longer structurally dependent on English visible column headers.
The five user-facing tables now use a centralized language-independent schema covering 81 visible columns:
- WBS
- S-Curve
- Constraints
- Event History
- Event Acknowledgements
Their actual Excel table headers can now switch physically between English and French without breaking the scheduling engine or its consumers.
The old duplicated localization rows above the Excel tables have been completely removed.
This results in a cleaner workbook layout and removes a significant amount of legacy indexing and localization debt.
📅 Global date display format
A new workbook-wide date display setting is available in SETTINGS:
- DMY —
dd/mm/yyyy - MDY —
mm/dd/yyyy - ISO —
yyyy-mm-dd
The setting is independent from the selected interface language.
It changes display formatting only. Excel date values, formulas, calculations, signatures and analytics remain unchanged.
The setting applies across the main visible date surfaces, including WBS, Gantt, S-Curve, Constraints, Event History and Dashboard charts.
🗣️ Safer language lifecycle
Language changes are now explicit and controlled from SETTINGS.
Opening the workbook, running Planning Update, refreshing the S-Curve or rebuilding the Gantt no longer triggers unrelated language mutations.
Each visible area now creates or refreshes its own UI directly in the persisted language instead of relying on broad automatic translation passes.
Constraints also now has its own independent language owner and participates properly in GLOBAL language changes.
📝 Excel LTSC / perpetual compatibility — GitHub #10
ProjectEngine previously relied on Excel's modern threaded-comments VBA API for the WBS onboarding tutorials.
Some perpetual / LTSC Excel builds do not expose this API, which could cause a blocking error.
ProjectEngine now detects that capability before using it.
- Supported Excel versions continue to use modern threaded comments.
- Unsupported Excel versions fall back to classic Excel Notes.
- The 37 WBS onboarding tutorials remain available in both English and French.
- No threaded-comment API call is made when the feature is unavailable.
This means LTSC users no longer have to choose between avoiding the crash and losing the onboarding guidance.
The unsupported branch has been tested deterministically, but native validation on the exact LTSC environment reported in GitHub #10 is still pending user confirmation.
📈 S-Curve cache fix — GitHub #9
The S-Curve chart cache stored its full dynamic source signature inside an Excel Defined Name.
That signature could exceed Excel's 255-character formula-text limit, causing a runtime error after the S-Curve had already been built.
The raw signature is still used internally, but ProjectEngine now persists only a fixed-length versioned key:
SCV1:<SHA-256>
The stored key is always 69 ASCII characters.
This removes the 255-character failure and also restores the intended chart-cache behavior:
- unchanged S-Curve source → chart source reassignment is skipped;
- real source change → cache invalidates and the chart is rebuilt once;
- save / close / reopen → cache remains valid;
- workbook filename length no longer affects the cache.
🔤 VBA encoding hardening
The VBA synchronization pipeline was hardened to prevent French accented characters from being corrupted during import into the VBA editor.
Repository sources remain UTF-8, while imports now use a deterministic Windows-1252 staging step compatible with the VBE.
Final validation found:
- 0 source mojibake occurrences;
- 0 embedded-module mojibake occurrences;
- 0 module mismatches.
🧹 UI and legacy cleanup
Several historical localization layers were removed rather than merely hidden.
The visible Excel tables are now the single authoritative header surface.
The WBS onboarding row remains intact and aligned, while obsolete duplicated title rows were physically removed from:
- WBS
- S-Curve
- Constraints
- Event History
- Event Acknowledgements
The migration is guarded and idempotent: unexpected user content prevents automatic deletion instead of being silently removed.
🙌 Community shoutout
A special thank you to the two contributors whose feedback directly shaped this release.
andrerwolff
Andre's testing on a 32-bit English Excel environment exposed the language-dependent formula behavior that triggered the entire internationalization work behind v1.2.6.
What initially looked like a localized compatibility bug ultimately led to a much broader cleanup of:
- invariant formula handling;
- language-independent visible-table schema;
- physical FR / EN table headers;
- global DMY / MDY / ISO date display;
- explicit SETTINGS-driven language changes;
- removal of legacy duplicated localization rows;
- VBA encoding hardening.
That original report was therefore the starting point for most of the internationalization and localization architecture delivered in this release.
BekbolatBK
Bekbolat provided two exceptionally detailed bug reports against v1.2.5:
- #9 — S-Curve chart signature exceeds the 255-character formula text limit
- #10 — Workbook_Open fails on Excel LTSC / perpetual because of unsupported threaded-comments VBA APIs
Both reports included reproducible cases, environment details, source-level analysis and likely root causes.
They led directly to:
- the fixed-length SHA-256 S-Curve cache key;
- restoration of effective S-Curve chart caching;
- explicit threaded-comments capability detection;
- classic Excel Notes fallback for WBS onboarding tutorials on LTSC / perpetual Excel.
Thank you both for taking the time to test ProjectEngine outside my own environment and document the failures so precisely. This kind of feedback is exactly what makes an open-source project more robust.
✅ Validation
The release candidate has been validated across:
- the standard functional workbook;
- a 1,200-task load/scalability configuration;
- a separate analytics-focused dataset.
Validation included:
- VBA compilation;
- Planning Update;
- Gantt Update;
- S-Curve update;
- FR / EN language roundtrips;
- DMY / MDY / ISO date formats;
- save / close / reopen;
- WBS onboarding tutorials;
- LTSC compatibility branch;
- S-Curve cache invalidation;
- 1,200-task smoke tests;
- analytics non-regression.
Final analytics comparison reported no result changes.
Full changelog summary
- Fixed Excel LTSC / perpetual threaded-comment compatibility (#10)
- Added classic Notes fallback for WBS tutorials
- Fixed S-Curve Defined Name signature overflow (#9)
- Restored effective S-Curve chart caching
- Added physical FR / EN table header localization
- Added centralized language-independent schema for 81 visible columns
- Added global DMY / MDY / ISO date display selector
- Made language mutations explicit and SETTINGS-driven
- Added independent Constraints language control
- Removed five obsolete duplicated localized header rows
- Hardened VBA source import against encoding corruption
- Preserved scheduling and analytics results throughout the migration
Thanks to everyone testing ProjectEngine in real-world Excel environments. Reports like these are directly improving the portability, reliability and usability of the project.