Repository navigation
ProjectEngine v1.5.2 is a maintenance release focused on reliable Gantt rendering across Windows display scaling configurations, safer workbook operations, and more consistent financial and calendar calculations.
The headline fix addresses a Gantt update failure reported by @phobo3s in GitHub issue #18. Investigating that report helped reproduce a real SVG_PHYSICAL_TOLERANCE / NOT_READY failure and correct the way ProjectEngine publishes its SVG dependency layer in Excel.
This release also includes previously completed reliability improvements affecting financial forecasts, calendars, scenario creation, workbook closing, and error handling.
🖥️ Gantt SVG Rendering — Display Scaling Fix (#18)
On some Windows display configurations, Excel can assign slightly different physical positions or dimensions to embedded SVG images. In the affected Gantt workflow, subsequent worksheet layout operations could alter the dependency image again after it had been positioned.
ProjectEngine's physical validation correctly detected that the image no longer matched the expected dependency geometry, but repeated attempts to rebuild the Gantt could fail to restore a valid READY state.
What changed
- Display-scaling-aware SVG placement: The dependency image's SVG viewport is calibrated to the physical frame Excel actually assigns, when calibration is needed.
- Correct rendering order: Worksheet layout and constraint presentation are finalized before the dependency SVG is published, preventing later layout operations from disturbing the completed image.
- Less unnecessary layout mutation: Row heights that are already correct are not rewritten simply to reassert the same values.
- Preserved dependency geometry: Dependency routes remain anchored to the intended Gantt coordinates; the fix does not shift task links to disguise an error.
- Strict validation retained: The existing physical tolerance and READY checks remain in place. If the image cannot be made consistent, ProjectEngine still reports a failure rather than claiming success.
- Controlled recovery: Invalid or older dependency-image cache data is rebuilt through the existing rendering workflow, without introducing a second rendering engine.
The failure was reproduced in Microsoft Excel for Windows when moving between 100% and 125% display scaling, then verified after the correction. Tests included repeated Gantt updates, task-date changes, simulations, switching views, and saving and reopening the workbook.
Compatibility note: The original report came from Microsoft 365 32-bit, Turkish-language Excel. The corrected behavior has been validated natively on the available 64-bit Windows Excel environment, including both scaling configurations above. The reporter's exact environment has not yet been tested, so this release does not claim exhaustive coverage of every Excel/display configuration.
📊 Additional Gantt Reliability Fixes
Summary view with no selected tasks
A project containing valid activities could previously fail a Gantt update when Summary view had no activities selected for display. The filtered view was incorrectly treated as an empty project, potentially clearing Gantt elements and preventing READY validation.
ProjectEngine now preserves the underlying project and applies the Summary filter normally. Returning to Detail restores the activities without requiring the project to be reconstructed.
Deferred Gantt updates survive save and reopen
When a planning update was performed from the WBS, the Gantt could defer its visual refresh until the user next opened the Gantt sheet. Previously, saving and reopening the workbook before visiting that sheet could lose the pending refresh request, leaving a visually consistent but outdated Gantt.
The pending update is now preserved across save and reopen, and the Gantt completes its refresh when the sheet is next activated. This does not force a Gantt redraw during saving or workbook startup.
💰 Financial Calculation Improvements
The Finance module now handles partially available cost estimates more consistently.
- Estimate at Completion (EAC) can be calculated from the known components when Actual Cost or Estimate to Complete is available and the other is genuinely blank.
- When both components are unknown, EAC remains unavailable rather than silently treating missing information as a complete estimate.
- Explicit zero values remain distinct from blank values.
- Negative remaining-cost estimates, including adjustments, are handled according to the existing validation rules.
- Financial totals and variance reporting follow the corrected EAC behavior.
The existing distinction between shared and independent financial records is preserved: shared costs are counted once in consolidated reporting, while independent costs remain additive.
These changes do not introduce new Finance charts or trigger automatic financial recalculation during unrelated planning operations.
📅 More Predictable Calendar Calculations
Several calendar-related edge cases have been corrected:
- Date calculations affected by time-of-day values now consistently operate on the intended calendar date, instead of unexpectedly shifting a result because of rounding.
- Fractional activity durations and dependency lags are explicitly rejected where the scheduling contract requires whole days, rather than being silently rounded.
- Existing five-, six-, and seven-day calendar behavior is preserved.
ProjectEngine continues to use day-based scheduling; this update does not introduce hourly scheduling or automatic public-holiday calendars.
🛡️ Safer Workbook and Scenario Operations
This release also improves the handling of interrupted or unsuccessful operations.
- Canceling workbook closure: The Gantt drag watcher remains available if the user chooses Cancel in Excel's save/close prompt. It is stopped when the workbook actually closes.
- Scenario creation: A failed scenario initialization no longer leaves behind a copy presented as a successfully created project. Cleanup is restricted to the copy created by that operation, and the original workbook is preserved.
- Excel application settings: Selected operations now restore the caller's existing event and screen-update settings instead of assuming those settings were initially enabled.
- Error handling: Missing or unavailable objects in selected Dashboard, Gantt constraint, and WBS onboarding paths are handled without unrelated object-reference failures.
- Save and close failures: Errors during tutorial or workbook lifecycle cleanup are propagated more reliably rather than allowing an operation to appear successful prematurely.
These are targeted safeguards, not a claim that every possible Excel interruption or recovery scenario has been certified.
✅ Validation & Compatibility
Validation included both targeted before/after reproductions and regression checks using everyday project schedules, larger planning datasets, and analytics-focused cases.
The Gantt checks covered SVG physical alignment, dependency-route and arrow integrity, repeated updates, Summary/Detail transitions, TEST/LOCK/Reset interactions, and save/reopen behavior. Financial and calendar checks covered missing versus zero cost values, signed adjustments, consolidated totals, whole-day date handling, and preservation of existing scheduling outputs.
The relevant VBA changes were compiled, saved, reopened, and checked in the supported development environment.
Microsoft Excel for Windows remains the target platform. Native validation of this release was performed on the available 64-bit Excel installation; 32-bit Excel, Turkish-language Excel, LTSC/perpetual builds, and other display scaling arrangements have not all been tested natively. Performance will vary with workbook complexity and the host machine's current workload; no general speedup is claimed.
🔄 Upgrading
- Back up your current ProjectEngine workbook.
- Download the prepared
.xlsmworkbook attached to this release. - Open the new version in Microsoft Excel for Windows and enable macros only if you trust the source.
- Use Import Previous Project to transfer supported project data from your existing workbook.
- Review the imported inputs and refresh the relevant planning, Gantt, reporting, or Finance views as needed.
The source workbook is not modified by the import. Import replaces supported data in the destination, so keep a backup before proceeding.
❤️ Community Shoutout — @phobo3s
A special thank you to @phobo3s for reporting issue #18 — SVG_PHYSICAL_TOLERANCE error, documenting the problem on a Turkish Microsoft 365 32-bit installation, and providing a workbook to investigate.
The issue exposed a particularly difficult category of Excel rendering problems: the same Gantt can behave differently depending on the host display configuration, and the underlying mismatch is not always reproduced by repeating the same user actions.
That report helped direct the investigation toward a real display-scaling-related failure and ultimately a more robust SVG rendering workflow. Thank you for helping make ProjectEngine more reliable for everyone.
If you encounter a similar issue on another Excel configuration, please share the environment details and a reproducible, anonymized example on GitHub.
ProjectEngine remains free, open source (GPL-3.0), Excel-native, and available in English and French.
Source code and downloads: https://github.com/TMailletFR/ProjectEngine
Project website: https://tmailletfr.github.io/ProjectEngine/
Real scheduling. Native Excel. Reliable project controls.