Forward-looking work plan organized by semester (calendar year + quarter, e.g. CY26Q2). Sits between ROADMAP.md (high-level phase plan) and FUTURES.md (backlog index, no scheduling).
The semester is the primary planning unit. Each semester maps to a GitHub milestone of the same name. Themed groupings ("Milestones A, B, C, ...") stay as stable identifiers for what kind of work an item is, while the when is the semester.
Done milestones (Phase 1, Phase 2, etc.) are summarized in
COMPLETED.md. What follows is forward-looking only.
Before any change that would reduce the project's reach — TFM bumps, modern-.NET moves, Visio version baseline shifts — we prioritize work that makes the current audience better served: documentation, convenience features, code quality, testing, maintainability, and addressing user feedback. The reasoning: if anyone later wants to pick up maintenance of an older-Visio or older-.NET fork, they should start from a finished, well-documented, well-tested baseline rather than inheriting a half-renovated codebase.
This principle drives the semester sequencing below. 2026 (CY26Q2 through CY26Q4) is dedicated to audience-preserving improvements. 2027 onward (CY27Q1+) is when audience-reducing modernization begins, after the Windows 10 LTSB 2016 mainstream-support sunset (2026-10-13) and after the 2026 priority work is mature.
GitHub milestone — due 2026-06-30
Theme: Kick off audience-preserving improvements. Schedule the cmdlet-ergonomics review, start the portfolio audit, sweep older issues, formalize the test-suite design decision.
| Item | Themed milestone | Issue |
|---|---|---|
| Scoping review (May 2026): VisioBot3000 + PSVA borrowed-ideas backlog | D | #149 |
| PSVA cmdlet-surface audit (feeds the May review) | D | #150 |
Phase B: pipeline-friendly parameter set on Connect-VisioShape |
D | #163 |
| Q2 2026 issue triage pass (#80, #82, #102, #105, #117) | Triage | #151 |
| Visio repo portfolio audit Phase H1 (centralized index + per-repo READMEs) | H | #152 |
| Tests-need-Visio design-decision write-up | F | #153 |
| Version compatibility tables on user-facing gitbooks | E | #161 |
GitHub milestone — due 2026-09-30
Theme: Execute on the May 2026 cmdlet-ergonomics shortlist; close the docs and test decisions that are blocking later work; ship the existing docs-coverage backlog.
| Item | Themed milestone | Issue |
|---|---|---|
VisioScripting.Client undocumented in gitbook |
E | #131 |
VisioAutomation.Models undocumented (DOM + Layouts) |
E | #132 |
| Add troubleshooting page to .NET gitbook | E | #133 |
| Audit: test coverage gaps on the public API surface | F | #154 |
| Cmdlet-binding test coverage (first slice from #154 audit) | F | #173 |
Trim redundant <frameworkAssembly> from VisioAutomation2010.nuspec |
B | #176 |
| Discussion: doc-sample-as-test linkage mechanism | E | #155 |
| Decide: VisioScripting public-API status | E | #156 |
| Decide: long-term docs location | E | #157 |
| Phase A scoping: PSVA candidate cmdlets (semantics + test plans) | D | #162 |
| (Cmdlet ergonomics implementation work from Phase A scoping) | D | (issues filed from #162 outcome) |
GitHub milestone — due 2026-12-31
Theme: Identity transition push. Move GitHub repo and gitbook spaces to SevenPens-owned hosting; rewrite in-repo URLs once the destinations are stable.
| Item | Themed milestone | Issue |
|---|---|---|
| Migrate GitHub repo to SevenPens-owned account | A | #146 |
| Migrate gitbook spaces to SevenPens-owned hosting | A | #147 |
| Phase 5b: in-repo URL rewrite (single commit after #146 + #147 land) | A | (no issue; one-shot commit) |
Retire unused VisioAutomation PSGallery co-owner account |
A | #148 (ride-along) |
Open NuGet support case to declassify the saveenr account |
A | #179 |
| Revise user-facing gitbook docs for accuracy across cmdlets and library APIs | E | #172 |
GitHub milestone — due 2027-03-31
Theme: Modernization unlock (gated on Windows 10 LTSB 2016 mainstream-support sunset 2026-10-13). TFM bump, VS 2026, manifest deprecation cleanups. Plus the spike-and-audit work that informs 2027's deeper changes.
| Item | Themed milestone | Issue |
|---|---|---|
| TFM bump shipping-libs 4.5.2 → 4.7.2 | B | #174 |
| Move dev environment to VS 2026 | B | #171 |
Visio.psd1 deprecation cleanups (ModuleToProcess/PowerShellVersion) |
B | #178 |
| Re-evaluate version-policy decision | B | (no issue yet) |
| Switch module-release builds Debug → Release | B | #177 |
| Spike: NetOffice / NetOfficeFw as a Visio PIA replacement | C | #158 |
| Audit: identify Visio-2010-only paths in the codebase | G | #159 |
| ShapeSheet query ergonomics spike (LINQ and other shapes) | F | #170 |
GitHub milestone — due 2027-06-30
Theme: Modern .NET multi-target work begins; Visio 2013 baseline decisions. Both informed by the CY27Q1 spike and audit.
| Item | Themed milestone | Issue |
|---|---|---|
| C# 14 / .NET 10 multi-target migration (informed by #158) | C | #175 |
| Visio PIA replacement decision (informed by #158) | C | (folded into #158's deliverable) |
| Decide: Visio 2013 baseline branding | G | #160 |
| Visio 2013 baseline migration implementation (gated on #160) | G | (no issue yet) |
Items pending but not yet semester-assigned:
- Documentation work past the CY26Q3 burst — treated as continuous through CY26Q4 and into 2027 as items come up. New docs items get assigned to the semester they're picked up in.
- Visio repo portfolio audit Phase H2 (per-repo retire / merge / maintain decisions). Opportunistic through CY26Q4 and CY27 as the picture clarifies.
The semester schedule above is the when. The themed milestones below are the what kind of work. Each item in the schedule is tagged with a milestone letter so you can read by theme. Each milestone may span multiple semesters.
Theme: Finish the dev-team identity transition from Saveen / saveenr to SevenPens.
User impact: Old hosting URLs keep resolving via redirects; new canonical URLs live under SevenPens-owned hosting. No broken bookmarks, no consumer disruption.
Semesters: CY26Q4 (target window).
Items: see CY26Q4 schedule above. Detail in futures/identity.md.
Theme: Bump shipping-lib TFMs from .NET Framework 4.5.2 to 4.7.2, move dev to VS 2026, clear longstanding deprecation / version-hygiene cruft.
User impact: Audience-reducing. Minimum supported .NET Framework rises from 4.5.2 to 4.7.2 — affects only consumers on pre-1803 Windows, which leave mainstream support October 2026. Modern IDE tooling, faster builds, cleaner manifest metadata.
Semesters: CY27Q1 (target window). Gated on the Windows 10 LTSB 2016 sunset 2026-10-13.
Items: see CY27Q1 schedule above. Detail in futures/build-and-code.md and futures/releases.md.
Theme: Add net10.0-windows (or current .NET 10 TFM) alongside net48. Decide whether to replace the Visio PIA with NetOffice / NetOfficeFw.
User impact: Modern C# features (extension members, etc.) and better .NET 10 perf become available. Existing net48 consumers unaffected (multi-target). Windows PowerShell 5.1 users of VisioPS get the net48 build; PowerShell 7+ users get the .NET 10 build.
Semesters: CY27Q1 (spike) → CY27Q2 (implementation begins). Sequenced after Milestone B.
Items: see CY27Q1 and CY27Q2 schedules above. Detail in futures/build-and-code.md.
Theme: Adopt the good ideas from sibling community PowerShell-for-Visio projects (VisioBot3000, PSVA) plus the EncodeValues simplification.
User impact: Friendlier authoring for VisioPS users — nickname registry, block-style nesting for containers, bulk shape operations, custom-property authoring without manual EncodeValues(). Limited to the items the May 2026 scoping review picks; rest stays in backlog.
Semesters: CY26Q2 (review) → CY26Q3 (implementation through bandwidth).
Items: see CY26Q2 and CY26Q3 schedules above. Detail in futures/build-and-code.md.
Theme: Close documentation gaps on user-facing gitbooks and in-repo dev guides. Includes the long-running policy decisions about where docs live and what is public.
User impact: Easier onboarding for new contributors and consumers; fewer "had to read the source" moments. Reference docs cover the surface that users actually program against.
Semesters: CY26Q3 (concentrated burst — the existing docs issues + the location/public-API decisions). Continuous through CY26Q4 and into 2027 as items come up.
Items: see CY26Q3 schedule above. Detail in futures/docs.md.
Plus longer-running items not yet semester-assigned (will be picked up as bandwidth allows):
- Restructure user-docs repos — gated on the docs-location decision (#157).
- Keep CHANGELOGs current (process item, not a one-shot).
- Visio version ↔ PIA mapping reference page — new doc page explaining the version-number table (Visio 2010 = 14, 2013 = 15, ...) and where to get each PIA. Couples to the
Visio-PIAssibling repo.
Theme: Modernize the test suite and address the live-Visio dependency that currently keeps tests off CI.
User impact: More reliable releases (catch regressions in CI rather than at publish time); contributor onboarding without a Visio install for the test buckets that don't actually need one.
Semesters: CY26Q2 (design-decision write-up) → CY26Q3 (coverage audit) → CY26Q4+ (implementation as bandwidth allows).
Items: see CY26Q2 and CY26Q3 schedules above. Detail in futures/build-and-code.md and futures/tests.md. The "tests need a live Visio" rule that gates CI today is now formalized in decisions/tests-need-visio.md. The no-Visio test split has de facto started: ManifestTests and XmlErrorLogTests are existing examples of the no-Visio bucket; the planned tagging work to turn the implicit split explicit is part of this milestone.
Theme: Move the codebase's baseline Visio version from 2010 to 2013.
User impact: Audience-reducing. Consumers still on Visio 2010 (released 2010, mainstream support ended 2015, extended support ended 2020) would no longer see new releases. Visio 2013+ users get access to capabilities the 2013-era Visio API added.
Semesters: CY27Q1 (audit) → CY27Q2 (branding decision → implementation).
Items: see CY27Q1 and CY27Q2 schedules above.
Theme: Take stock of the broader Visio-related repo portfolio. Make each repo's status visible; decide what to retire / merge / maintain.
User impact: Visitors to any of the 9 sibling repos can tell at a glance whether it's active. Reduces "is this still maintained?" friction. Cleanup of dormant repos shrinks reader surface area.
Semesters: CY26Q2 (Phase H1: index + per-repo READMEs). CY26Q3+ for Phase H2 (per-repo retire/merge/maintain decisions, opportunistic).
Items: see CY26Q2 schedule. Phase H2 not yet scheduled to a specific semester. Repos in scope:
saveenr/VisioAutomation(this repo) — primary, active.saveenr/VisioAutomation2007saveenr/VisioAutomation.VDXsaveenr/Visio-PIAssaveenr/visio-templatessaveenr/visio-referencesaveenr/Visio-Power-Toolssaveenr/Visio-Export-Pages-To-Docssaveenr/Visio-Font-Comparesaveenr/Visio-Code-Samples
Triage backlog (handled in #151, CY26Q2)
Older issues triaged on 2026-05-07. Per-issue rationale in #151's decision comment. Summary of outcomes:
- #80 — New logo. Closed as not-planned (any branding work belongs in Axis 5, CY26Q4).
- #82 — Size + Cells on directed graph node. Real bug, fix in flight on a branch this session. Milestoned to CY26Q2; closes when the fix lands on master.
- #102 — Problem creating shape from template. Closed as completed (both questions answered in-thread on 2026-05-06).
- #105 — directed-graph layout/direction umbrella. Closed as completed (sub-items shipped in NuGet 3.0.0; docs page live).
- #117 — Custom-properties on directed graph. Open, revisit ~2026-05-27. Fix shipped in Visio PowerShell 4.7.0 on 2026-05-06; awaiting reporter confirmation.
- When a milestone item lands, move it from this doc to
COMPLETED.md(or strike it through here if the semester is mid-flight). - When a proposed semester slips, move the item to a later semester in this doc and re-tag the GitHub issue's milestone.
- When a new item arrives, decide its semester first (when does it land?), then its themed milestone (what kind of work is it?). Add to the semester schedule and tag the issue accordingly.
- Add new semesters as the long-term picture clarifies. CY27Q3 and beyond aren't yet structured here; they will be when the current 2027 work matures enough to forecast.
- The targets here are not commitments to consumers — release notes and CHANGELOGs are the authoritative "what's shipped when" record. This doc is internal planning.
- The guiding principle (improve before audience-reducing changes) governs sequencing. If a future change bumps a 2027+ item earlier, the principle should be revisited at the same time, not silently overruled.