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
Certify v0.8.0 — Route Analytics & Reports (#30, #62, #63, #64, #82, and the carried-over #77; PR #80). It ships first as v0.8.0-rc.1 on Preview, then as Stable. Record evidence for each gate here.
What changes for certification
v0.8 adds the Insights page (tiles, Your Journals, Your Routes, Route Map), route maps in the Route view, Pipeline and Route reports, work types and tags, and one window per library. Like v0.7, it migrates the library: Schema 7 → 8, which adds work types, tags, and tag colors. The migration validates the library first and then advances only the schema marker, keeping the old marker as schema.v7.bak. So after an upgrade:
manuscripts.json, authors.json, settings, automatic backups, and managed files are byte-identical;
schema.json reads 8, and schema.v7.bak holds the previous marker byte-for-byte;
v0.7 refuses to open the upgraded library (expected; the upgrade notes say to keep a v0.7 backup).
Insights, route maps, and reports are read-only: they never save. Reports carry only titles, stages, journals, dates, and decisions (an automated test fills every private field with a marker and checks none appears).
Evidence comes first: the candidate verification JSON, the fixture collector JSON for data outcomes, and harness or installed-app captures for UI. A disposable VM is used only for clean install, the live updater, and installed-schema migration.
Local candidate (ManualCertification/Build-ReleaseCandidate.ps1 -Version 0.8.0-rc.1): VerifiedLocalCandidate from a clean commit, every test passing. Candidate-02 from c834421: 710 tests passed, product version 0.8.0-rc.1+c834421, assembly and file 0.8.0.0, published DLL 2c779846…21ad37f5 (identical in the package and portable payloads). Candidate-01 (27e240b, 710 passed) was superseded by the docs-only roadmap commit c834421.
Published Preview asset audit: fresh download, asset set, SHA-256, feed metadata, and DLL identity match the tagged source. v0.8.0-rc.1 was tagged on merge commit 2433512 (release run 36476960720) and published as a prerelease: every asset matches its size, GitHub digest, and SHA256SUMS; the sums cover exactly the other assets; the Preview feed lists the rc.1 full and delta packages; the full and portable DLLs are identical (f409bd70…56c08c, product version 0.8.0-rc.1+2433512, file 0.8.0.0).
Installed checks (disposable VM)
v0.7.0 → v0.8.0-rc.1 upgrade through the live Preview updater on a synthetic library: data files byte-identical (collector JSON), schema.json = 8, schema.v7.bak = the previous marker, the library opens, and Insights lists the fixture's journals and routes. Details below.
[v0.8] Open one PaperRoute window per library #77: a second launch of the installed app brings the open window forward instead of opening another. In installed rc.1, launching PaperRouteTracker.exe again while it was open, and again while minimized, restored the one window on its current page (Insights); tasklist showed a single PaperRouteTracker.exe (PID 5164) after each launch.
Clean install of the Stable candidate Setup: installed version and DLL hash; first run opens on the empty-library welcome. Candidate-01 on the 150% clean VM after uninstalling published v0.7.0: Setup completed, the installed PaperRouteTracker.dll is a42ffcb0…59631175 (certutil), byte-identical to the candidate package, and the first run opened on the empty-library welcome. Details below, including a first attempt that showed "Install Partially Succeeded" ([v0.9.1] First-run install step can exceed Velopack's 30-second limit #92).
Native UI
100%, 125%, and 150%, Light and Dark: Insights (tiles, Your Journals, Your Routes, Route Map with and without unfinished work), the Route view's route map, Pipeline Report and Route Report previews, the Overview's Type and tags card, tags on board cards, and the Library's Type and Tags columns. 125% Light and Dark (host, harness): board with tags, Your Journals, Your Routes, Route Map (published and with unfinished work), the Route view, the Pipeline Report preview, the Library's Type and Tags columns, and the update prompt. 150% (clean VM, self-contained harness from the share): board with tags, Your Journals, Route Map, the Route view, the Type and tags card on a manuscript's Overview, the update prompt (full Download & Restart label), and the installed app's welcome. 100% (upgrade VM): board with tags, Your Journals, Route Map, the Route view, and installed rc.1's Insights. No clipping or overlap. At 150% the Route View dialog opens at its 96-DPI size, so its map uses the one-column key; dialog scaling is tracked in [v0.9.1] Scale every code-built dialog with the display #93.
Keyboard: Ctrl+5 opens Insights and Ctrl+6 Import & Export; Enter on Your Journals shows that journal's routes and on Your Routes opens the manuscript; Up/Down and Enter on the Route Map open a route; Enter or comma adds a tag. Ctrl+5 in installed rc.1 and in the 100% harness; Enter on a board card link opened the manuscript at 150%. Enter on Your Journals and Your Routes, Enter on the Route Map, Enter and comma in the tag editor, and Ctrl+6 are covered by automated tests (InsightsSummarizeJournalsAndRoutesFromTheLibrary, TheRouteMapLinesUpRoutesAndOpensTheChosenOne, TypesAndTagsAreEditedOnThePageAndShownOnTheBoard).
A saved report opens in a browser as one self-contained page. The harness report surface saved a Pipeline Report through the real dialog (3,671 bytes, no external references and no web addresses at all); it opened in a browser with its header, table, and privacy footer.
Stable
Stable version and notes; local candidate. PR #90, CI green on 23b5b35 (run 36495708055); candidate-01 VerifiedLocalCandidate from 23b5b35, 710 tests passed, product version 0.8.0+23b5b35, DLL a42ffcb0…59631175.
Published Stable asset audit. v0.8.0, tagged on merge commit ab39c1f (PR #90, tree identical to the candidate commit 23b5b35; release run 36506669986): every asset matches its size, GitHub digest, and SHA256SUMS; the sums cover exactly the other assets; the Stable feed lists the full and delta packages; the full and portable DLLs are identical (c1dc8069…3c76d0, product version 0.8.0+ab39c1f, file 0.8.0.0).
Live updater from an installed v0.7.0 Stable offers 0.8.0, updates, restarts, migrates to Schema 8, and leaves the data files unchanged. From the snapshot "v0.7.0 fixture (Schema 7) before v0.8" on the Stable channel, v0.7.0's Check for Updates... offered 0.7.0 → 0.8.0 (its first check failed with "No such host is known" while the resumed guest's network came up); Download & Restart relaunched into v0.8.0. Collector …20260929-013503… against the baseline …20260928-203650…: installed DLL c1dc8069…, byte-identical to the published asset; schema.json 7 → 8 (18d97818…) with schema.v7.bak byte-identical to the previous marker (b67c097b…), and the v5 and v6 markers unchanged; manuscripts.json, authors.json, counts, associations, managed files, and the linked file byte-identical.
v0.8.0-rc.1: installed upgrade through the live Preview updater (September 28, 2026)
On PaperRoute-v05-Cert-20260922, from the new snapshot "v0.7.0 fixture (Schema 7) before v0.8" (v0.7.0 Stable installed by the live updater from v0.6.0, synthetic fixture library):
Collector v1.1 baseline …20260928-203650…: installed DLL 147ff97c… (0.7.0+7a2fa0b), schema.json 7 (b67c097b…), and data identical to the v0.7.0 upgrade report …20260928-163807….
In v0.7.0, Preferences → Update channel → Preview, then Check for Updates...: v0.7.0's updater offered 0.7.0 → 0.8.0-rc.1 on the Preview channel. Download & Restart relaunched into v0.8.0-rc.1, which opened the library with Insights in the rail.
Collector …20260928-212001… against the baseline: installed DLL f409bd70…56c08c (0.8.0-rc.1+2433512), byte-identical to the published asset; schema.json 7 → 8 (cb5d30fe…) with schema.v7.bak byte-identical to the previous marker (b67c097b…), and schema.v5.bak and schema.v6.bak unchanged; manuscripts.json, authors.json, counts, associations, the three managed files, and the linked file byte-identical; library unchanged during collection.
Ctrl+5 opened Insights on the fixture: 1 manuscript, 1 submission, a 9-day median to a first decision (of 1), and Fictional Certification Journal under Your Journals (1 submission, asked to revise).
The VM was saved and snapshotted as "v0.8.0-rc.1 (Schema 8) from v0.7.0 via Preview updater". The first resume of the saved v0.7.0 state hung within a minute (the guest clock stopped); the snapshot was restored and the run repeated cleanly.
Found: on the maintainer's PC, v0.7.0's update prompt cut off the Download & Restart label. The dialog's fixed sizes do not scale with display scaling (it sets AutoScaleMode.Dpi without AutoScaleDimensions, as About did before v0.7.0). Fixed for the Stable candidate; the prompt shown when updating comes from the installed version, so the fix applies to updates offered from v0.8 onward.
Stable candidate at 150% (September 28, 2026)
On PaperRoute-v05-Cert-Clean-20260926 (150%, published v0.7.0 installed, empty library), from the new snapshot "v0.7.0 published at 150% before v0.8":
First attempt. Setup was started before the uninstall's final cleanup had run, and first reported "already installed". A later run installed 0.8.0 but showed "Install Partially Succeeded". The Velopack log shows the post-install hook (PaperRouteTracker.exe --veloapp-install) was killed after 30 s before it reached VelopackApp.Run(), the first line of Main: cold start in a busy guest (Defender, and an unrelated Windows component that crashed at the same time). This VM's earlier install hooks took 9.2 s, 5.4 s, 29.6 s, and 26.1 s, so the margin was already thin before v0.8. Tracked in [v0.9.1] First-run install step can exceed Velopack's 30-second limit #92.
Repeat from the snapshot, in a calm state. Uninstall, wait for cleanup, then Setup: "Installation completed successfully", with the install hook taking 25.1 s. The first run opened on the empty-library welcome. certutil on the installed DLL: a42ffcb074e4ae2ff50427a4360f608a428c65fa7652c184e1d9a2db59631175, identical to the candidate package.
Saved as snapshot "v0.8.0 Stable candidate clean install at 150%".
Result
v0.8.0 is certified and published on Stable. Every gate above is complete. Found during certification and fixed before Stable: the update prompt's Download & Restart label was cut off at 125% and 150% (#90). Carried to v0.9.1 hardening: the install hook's cold start can pass Velopack's 30-second limit on a slow machine (#92), and 45 code-built dialogs still need display scaling (#93).
Goal
Certify v0.8.0 — Route Analytics & Reports (#30, #62, #63, #64, #82, and the carried-over #77; PR #80). It ships first as v0.8.0-rc.1 on Preview, then as Stable. Record evidence for each gate here.
What changes for certification
v0.8 adds the Insights page (tiles, Your Journals, Your Routes, Route Map), route maps in the Route view, Pipeline and Route reports, work types and tags, and one window per library. Like v0.7, it migrates the library: Schema 7 → 8, which adds work types, tags, and tag colors. The migration validates the library first and then advances only the schema marker, keeping the old marker as
schema.v7.bak. So after an upgrade:manuscripts.json,authors.json, settings, automatic backups, and managed files are byte-identical;schema.jsonreads 8, andschema.v7.bakholds the previous marker byte-for-byte;Insights, route maps, and reports are read-only: they never save. Reports carry only titles, stages, journals, dates, and decisions (an automated test fills every private field with a marker and checks none appears).
Evidence comes first: the candidate verification JSON, the fixture collector JSON for data outcomes, and harness or installed-app captures for UI. A disposable VM is used only for clean install, the live updater, and installed-schema migration.
Candidate (rc.1)
ManualCertification/Build-ReleaseCandidate.ps1 -Version 0.8.0-rc.1):VerifiedLocalCandidatefrom a clean commit, every test passing. Candidate-02 from c834421: 710 tests passed, product version0.8.0-rc.1+c834421, assembly and file0.8.0.0, published DLL2c779846…21ad37f5(identical in the package and portable payloads). Candidate-01 (27e240b, 710 passed) was superseded by the docs-only roadmap commit c834421.SHA256SUMS; the sums cover exactly the other assets; the Preview feed lists the rc.1 full and delta packages; the full and portable DLLs are identical (f409bd70…56c08c, product version0.8.0-rc.1+2433512, file0.8.0.0).Installed checks (disposable VM)
schema.json= 8,schema.v7.bak= the previous marker, the library opens, and Insights lists the fixture's journals and routes. Details below.PaperRouteTracker.exeagain while it was open, and again while minimized, restored the one window on its current page (Insights);tasklistshowed a singlePaperRouteTracker.exe(PID 5164) after each launch.PaperRouteTracker.dllisa42ffcb0…59631175(certutil), byte-identical to the candidate package, and the first run opened on the empty-library welcome. Details below, including a first attempt that showed "Install Partially Succeeded" ([v0.9.1] First-run install step can exceed Velopack's 30-second limit #92).Native UI
InsightsSummarizeJournalsAndRoutesFromTheLibrary,TheRouteMapLinesUpRoutesAndOpensTheChosenOne,TypesAndTagsAreEditedOnThePageAndShownOnTheBoard).reportsurface saved a Pipeline Report through the real dialog (3,671 bytes, no external references and no web addresses at all); it opened in a browser with its header, table, and privacy footer.Stable
VerifiedLocalCandidatefrom 23b5b35, 710 tests passed, product version0.8.0+23b5b35, DLLa42ffcb0…59631175.SHA256SUMS; the sums cover exactly the other assets; the Stable feed lists the full and delta packages; the full and portable DLLs are identical (c1dc8069…3c76d0, product version0.8.0+ab39c1f, file0.8.0.0).…20260929-013503…against the baseline…20260928-203650…: installed DLLc1dc8069…, byte-identical to the published asset;schema.json7 → 8 (18d97818…) withschema.v7.bakbyte-identical to the previous marker (b67c097b…), and the v5 and v6 markers unchanged;manuscripts.json,authors.json, counts, associations, managed files, and the linked file byte-identical.v0.8.0-rc.1: installed upgrade through the live Preview updater (September 28, 2026)
On PaperRoute-v05-Cert-20260922, from the new snapshot "v0.7.0 fixture (Schema 7) before v0.8" (v0.7.0 Stable installed by the live updater from v0.6.0, synthetic fixture library):
…20260928-203650…: installed DLL147ff97c…(0.7.0+7a2fa0b),schema.json7 (b67c097b…), and data identical to the v0.7.0 upgrade report…20260928-163807….…20260928-212001…against the baseline: installed DLLf409bd70…56c08c(0.8.0-rc.1+2433512), byte-identical to the published asset;schema.json7 → 8 (cb5d30fe…) withschema.v7.bakbyte-identical to the previous marker (b67c097b…), andschema.v5.bakandschema.v6.bakunchanged;manuscripts.json,authors.json, counts, associations, the three managed files, and the linked file byte-identical; library unchanged during collection.The VM was saved and snapshotted as "v0.8.0-rc.1 (Schema 8) from v0.7.0 via Preview updater". The first resume of the saved v0.7.0 state hung within a minute (the guest clock stopped); the snapshot was restored and the run repeated cleanly.
Found: on the maintainer's PC, v0.7.0's update prompt cut off the Download & Restart label. The dialog's fixed sizes do not scale with display scaling (it sets
AutoScaleMode.DpiwithoutAutoScaleDimensions, as About did before v0.7.0). Fixed for the Stable candidate; the prompt shown when updating comes from the installed version, so the fix applies to updates offered from v0.8 onward.Stable candidate at 150% (September 28, 2026)
On PaperRoute-v05-Cert-Clean-20260926 (150%, published v0.7.0 installed, empty library), from the new snapshot "v0.7.0 published at 150% before v0.8":
Update.exe --uninstallremoved v0.7.0 ("Uninstall Complete").PaperRouteTracker.exe --veloapp-install) was killed after 30 s before it reachedVelopackApp.Run(), the first line ofMain: cold start in a busy guest (Defender, and an unrelated Windows component that crashed at the same time). This VM's earlier install hooks took 9.2 s, 5.4 s, 29.6 s, and 26.1 s, so the margin was already thin before v0.8. Tracked in [v0.9.1] First-run install step can exceed Velopack's 30-second limit #92.certutilon the installed DLL:a42ffcb074e4ae2ff50427a4360f608a428c65fa7652c184e1d9a2db59631175, identical to the candidate package.Saved as snapshot "v0.8.0 Stable candidate clean install at 150%".
Result
v0.8.0 is certified and published on Stable. Every gate above is complete. Found during certification and fixed before Stable: the update prompt's Download & Restart label was cut off at 125% and 150% (#90). Carried to v0.9.1 hardening: the install hook's cold start can pass Velopack's 30-second limit on a slow machine (#92), and 45 code-built dialogs still need display scaling (#93).