Harden add-in load paths and QuickFiler flows while adding CI and standardized repo tooling - #60
Merged
Conversation
- bootstrapped csharp agents, instructions, and skills. For now, agents and skills do not work. But instructions supposedly work.
- enabled filtering of GWSO folders through a configurable boolean filter - added unit testing to the entire class
- Add defensive null checks and safer event/task handling in QuickFiler form controller flows - Register code pages encoding provider for AngleSharp HTML parsing and add required test-time references/redirects - Harden Outlook COM/reflection helpers (InvokeMember binding flags, COM release guards) to avoid runtime exceptions - Improve ScoDictionary wrapper rehydration to recover Config and additional members via fields/properties - Update brittle MSTest cases to assert non-throwing behavior and align mocks with current UI/Outlook interactions; capture baseline/regression evidence
…r tests - Make QfcFormController theme/dark-mode logic tolerant of missing globals/themes in lightweight test contexts - Guard async/action paths against null dependencies and fix table layout row removal math in AdjustTlp - Update controller tests to seed minimal theme map and correct FormViewer.Invoke mocking to match Delegate signature - Mark interactive dialog-based tests ignored to avoid unattended test run deadlocks
- Replace last-group MessageBox in QfcFormController.SkipGroupAsync with log-only signaling - Update skip-related controller tests to drive the dequeue path and verify queue interaction - Remove unused exception variable in EmailMoveMonitor to keep builds warning-free
Harden load-time null/interop handling and stabilize QuickFiler flows while introducing repo-wide agent/tooling scaffolding
(feat) CI workflow added
…error The TaskMaster VSTO add-in project has SignManifests=true with a developer certificate thumbprint. In CI (GitHub Actions), this certificate is not installed, causing the build to fail with: error : Cannot find the certificate that matches the project system thumbprint. Fix: In Directory.Build.targets, the SetTaskMasterManifestCert target now conditionally sets SignManifests=false when the CI environment variable is 'true' (automatically set by GitHub Actions), overriding the static project property before ResolveKeySource runs. Closes the Build with analyzers and code style enforcement CI failure.
VSTO add-in projects require SignManifests=true — there is no option to disable ClickOnce manifest signing. Setting SignManifests=false (previous attempt) caused a second CI error: error : Cannot build because the ClickOnce manifest signing option is not selected. Fix: - ci.yml: add 'Generate ephemeral VSTO signing certificate' step that calls New-SelfSignedCertificate, installs the cert to CurrentUser\My, and writes its thumbprint to GITHUB_ENV as CI_CERT_THUMBPRINT. - Directory.Build.targets: when CI=true, keep SignManifests=true and substitute the developer thumbprint with \, which MSBuild resolves from the environment variable set by the step above. Developer builds are unchanged: the developer thumbprint is still used when CI is not set.
…same process Root cause of CI #6 failure: Out-File in PowerShell uses UTF-16 encoding by default. GitHub Actions reads GITHUB_ENV as UTF-8, so CI_CERT_THUMBPRINT was never parsed correctly. MSBuild received an empty thumbprint, triggering the 'cannot find certificate' error. Fix: - Directory.Build.targets: scope SetTaskMasterManifestCert to non-CI builds (added 'and $(CI) != rue' to the Target condition). A target-scoped PropertyGroup runs at execution time and would override a command-line /p:ManifestCertificateThumbprint value, so the target must not run in CI. Developer builds are unchanged. - ci.yml: remove the standalone cert-gen step that relied on GITHUB_ENV. Instead, create the ephemeral self-signed certificate and invoke MSBuild in the same PowerShell process for both build steps. The thumbprint stays in a local variable with no inter-step transfer, eliminating the encoding issue entirely. The nullable build step looks up the cert by subject so it does not need to create a second certificate.
…d cert errors All three prior CI failures stemmed from Microsoft.VisualStudio.Tools.Office.targets which requires Office PIAs and a developer signing certificate not available on CI runners. Instead of patching individual symptoms: - TaskMaster.csproj: add '$(CI)' != 'true'' to Office.targets import condition so FindRibbons, manifest signing, and ClickOnce targets are skipped entirely. - Directory.Build.targets: add top-level PropertyGroup that sets SignManifests=false and SignAssembly=false when CI=true, preventing ResolveKeySource in Microsoft.Common.targets from seeking the cert. - ci.yml: remove ephemeral certificate creation since it is no longer needed. Local developer builds are unaffected (CI env var is not set).
(bug): fixed nuget references for ci failure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Harden add-in load paths and QuickFiler flows while adding CI and standardized repo tooling
Summary
TaskMaster,QuickFiler,UtilitiesCS,ToDoModel, and related projects.QuickFiler.Test..github/workflows/ci.ymland follow-up build configuration changes inDirectory.Build.targets,.vscode/settings.json, andTaskMaster/TaskMaster.csproj.scripts/vscode/Invoke-VSBuild.ps1,scripts/vscode/Invoke-MSTest.ps1, and.vscode/tasks.json..github/agents/,.github/prompts/,.github/instructions/, and.github/skills/.TaskMaster.Test,QuickFiler.Test,UtilitiesCS.Test,TaskVisualization.Test, andToDoModel.Test, including new store/app-global focused tests and baseline/regression evidence documents.Why
What Changed
Core behavior / architecture
TaskMaster,QuickFiler,UtilitiesCS,ToDoModel,TaskVisualization,Tags,SVGControl, andUtilitiesSwordfishwhere startup, controller, queue, store, and helper flows are orchestrated.TaskMaster/AppGlobals/*,UtilitiesCS/OutlookObjects/Store/*, and related interfaces/tests.Tooling / automation / CI / DevEx
.github/workflows/ci.yml.scripts/vscode/Invoke-VSBuild.ps1andscripts/vscode/Invoke-MSTest.ps1..vscode/tasks.json,.vscode/settings.json, and.vscode/extensions.json.Directory.Build.targetsand updated project/build files affected by CI setup.Tests
TaskMaster.Test/AppGlobals/AppOlObjectsTests.cs.UtilitiesCS.Test/OutlookObjects/Store/StoresWrapperTests.cs.QuickFiler.Test,TaskMaster.Test,UtilitiesCS.Test,TaskVisualization.Test,ToDoModel.Test, andVBFunctions.Test.evidence/baseline/andevidence/regression-testing/.Docs / templates / agents
.github/customization surface, including agents, prompts, instructions, and skills for planning, execution, review, and PR authoring workflows.README.mdalongside the tooling/process additions.Architecture / How It Fits Together
TaskMasterstartup and ribbon/app-global surfaces coordinate withQuickFilercontrollers/viewers and shared services inUtilitiesCS,ToDoModel,TaskVisualization, and related projects..github/workflows/ci.ymlscripts/vscode/Invoke-VSBuild.ps1,scripts/vscode/Invoke-MSTest.ps1,.vscode/tasks.json.github/agents/,.github/prompts/,.github/instructions/,.github/skills/Verification
Completed
artifacts/pr_context.summary.txt).in_progressin the PR context.Recommended
dotnet restore TaskMaster.slnpwsh -NoProfile -ExecutionPolicy Bypass -File scripts/vscode/Invoke-VSBuild.ps1 -SolutionPath TaskMaster.sln -Configuration Debug -Platform "Any CPU"pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/vscode/Invoke-MSTest.ps1 -SearchRoot . -Configuration DebugBackward Compatibility / Migration Notes
.githubpolicy/agent assets become part of the expected development surface.Risks and Mitigations
543 files changed), which can hide regressions.TaskMaster,QuickFiler,UtilitiesCS, CI/tooling), then run the full build/test flow..github/workflows/ci.yml,Directory.Build.targets, and project files may introduce environment-specific failures.Review Guide
TaskMaster/AppGlobals/*,TaskMaster/ThisAddIn.cs, andTaskMaster/Ribbon/*for startup/load-path hardening.QuickFiler/Controllers/*together withQuickFiler.Test/*for interaction-flow and crash-prevention changes.UtilitiesCS/OutlookObjects/Store/*together withUtilitiesCS.Test/OutlookObjects/Store/StoresWrapperTests.csfor store-wrapper behavior and dependency wiring..github/workflows/ci.yml,Directory.Build.targets,.vscode/settings.json, andTaskMaster/TaskMaster.csprojas the CI/build enablement set.scripts/vscode/Invoke-VSBuild.ps1,scripts/vscode/Invoke-MSTest.ps1, and.vscode/tasks.jsonas the local execution path..github/agents/*,.github/prompts/*,.github/instructions/*, and.github/skills/*as important but secondary process/tooling additions.Follow-ups
GitHub Auto-close
Related issues / PRs