“New Version Loaded” Popup
The small
PSI.Common.Forms.NewVersionPopUpdialog many desktop apps show on launch after Pro Update installs a new build. It is not tied to real release notes and not gated by version — a per-user “don’t show again” flag decides whether it appears at all.
Overview
| Metric | Value |
|---|---|
| Component | PSI.Common.Forms.NewVersionPopUp (shared WPF window) |
| Source | PSI.Shared/trunk/PSI.Common.Forms/NewVersionPopUp.xaml(.cs) |
| Invoked from | Each app’s own MainWindow.Window_Loaded — not triggered by Pro Update itself |
| Gate | Properties.Settings.Default.DoNotShowAgain (per-app, per-user, per-machine) — not tied to app version |
| Message source | A hardcoded string literal per app, manually written by whoever last touched that Window_Loaded handler |
| Participating apps | 20+ (OpenPurchaseOrderInq, POMaintenance, InventoryManager, NCNManager, PartManager, Redbook, WorkOrderManager, and others that construct NewVersionPopUp) |
How it fires
Each app wires this itself in its main window — it’s not something Pro Update triggers directly:
this.Loaded += Window_Loaded;
...
private void Window_Loaded(object sender, RoutedEventArgs e)
{
if (!Properties.Settings.Default.DoNotShowAgain)
{
var versionInfo = AssemblyInfo.Version;
string tmpMessage = "..."; // hardcoded per app, per developer, per release
var nv = new PSI.Common.Forms.NewVersionPopUp(appName, releaseNotesUrl, tmpMessage, versionInfo.ToString());
nv.ShowDialog();
if (nv._doNotShowAgain)
{
Properties.Settings.Default.DoNotShowAgain = true;
Properties.Settings.Default.Save();
}
}
}The dialog’s own “Do not show this again” checkbox defaults to checked (IsChecked="True" in NewVersionPopUp.xaml) — a single click of OK in the default state suppresses it going forward for that user/machine.
Two known design gaps
1. The message is hardcoded, not real release notes
tmpMessage is a plain string literal the developer types by hand describing whatever they just changed — it isn’t pulled from the release_notes input passed to release.yml’s workflow dispatch, and it isn’t read from the GitHub Release body. If nobody updates it on a later release, users see stale or flatly wrong content.
This actually happened: PSI.OpenPurchaseOrderInq.View’s message described a Feb 2026 “Load My Department’s Purchase Request” change all the way through the 2026-07-08 CSM-receipt-notification beta — nobody had touched it in the five months between (fixed in PR #202).
2. Gated by “seen it once, ever,” not by version
DoNotShowAgain is a single boolean, not “which version’s notes have I seen.” Once a user dismisses it, they never see it again for any future release, ever — not until the setting is cleared (or they log into a machine/profile that’s never dismissed it before). Combined with gap #1, the practical effect is: most users see this dialog exactly once, with content describing whatever was true the first time they happened to see it — which may bear no relation to what actually shipped since.
Why it can appear twice in one sitting
Not a bug in the dialog itself — confirmed there’s only one Loaded subscription and one window instance per app launch. The likely explanation is Pro Update’s own update flow: on detecting a new version, it closes the running app, copies files, and restarts it (see “How Updates Work → Application Updates” on the Pro Update page). If a user also manually launches the app around the same time — before the first process’s DoNotShowAgain save has landed — each process is an independent instance with its own Window_Loaded, so each shows the popup once. Two processes in quick succession, two popups, in the same sitting.
Related Pages
- Pro Update — the updater that overlay-copies binaries and restarts apps, which is what puts this dialog’s launch-time check in play
- AFTEC Email Notifications — a completely unrelated notification system (email, not an in-app popup) — don’t confuse the two
- Onboard New App — if wiring
NewVersionPopUpinto a new app, know the two gaps above before copy-pasting the pattern; at minimum, remember to actually updatetmpMessageon every release that touches this window
Last updated: July 8, 2026
Source: PSI.Common.Forms.NewVersionPopUp + PSI.OpenPurchaseOrderInq.View.Views.OpenPOInquiry.xaml.cs, investigated live while diagnosing a stale/duplicate popup report from beta testing of PR #199 (fix shipped in PR #202)