fix(update): the relaunched OpsLog was starting invisibly
The relaunch after an update called hideConsole on the command that
starts the new build. That sets SysProcAttr{HideWindow: true}, which on
Windows becomes SW_HIDE in the STARTUPINFO handed to CreateProcess — and
Windows applies it to the first top-level window the new process shows.
So the updated OpsLog started correctly, took the single-instance mutex,
opened the logbook and connected the rig, and never appeared.
That is the report, in full: a process in the task manager, no window,
no autostart programs, and ending it then launching OpsLog by hand
working every time. Two operators, both on 0.27.23.
Why 0.27.19 did not fix it: that commit fixed the other half of the same
symptom — the new instance being less patient than the old one is slow —
which was real and is still fixed. The window was never part of it.
Where it came from: removing the PowerShell helper. Start-Process
launched the exe with a normal show; the direct exec.Command that
replaced it borrowed hideConsole from the console tools next to it,
where hiding a console window is exactly right and where the three
remaining callers (tasklist, taskkill, the deferred-swap PowerShell)
still belong.
The proof it was this and not the waiting: OpsLog relaunches itself in
two places, and RestartApp — the database switch — was byte-identical
except that it never called hideConsole. It has never been reported
broken. Both now go through relaunchCmd, so the rule lives in one place
with the reason written down, rather than in two call sites that differed
by one line.
Two tests: relaunchCmd leaves SysProcAttr nil, and update.go does not
call hideConsole at all.
This commit is contained in:
+4
-2
@@ -8,7 +8,8 @@
|
||||
"More colour where it decides something: the band of each frequency, the Doppler offset, an inverting transponder, the passband width and the peak elevation of a pass are badges in the app's own status colours rather than rows of grey words.",
|
||||
"The ground track is visible on every basemap. It was drawn in a CSS variable, which is not a colour a canvas can use, so the browser kept whatever it had and the track came out a pale near-white that disappeared over the imagery and the deserts alike. It is now a proper colour, drawn over a dark casing the way a road is on a map — one line cannot hold up over both a pale sea and a dark continent, but a line with an outline can.",
|
||||
"The sky plot and the position now share the left column, and it opens and shuts with the same kind of control as the readout column on the right — it used to be a radar icon, from when it toggled a plot inside that column. The plot and the numbers are the same answer at different precisions, azimuth and elevation drawn and then written out, and having them on opposite sides of the window meant reading a bearing off one and finding it on the other.",
|
||||
"The decode panel's band-drift warning stops firing on a second slice. It compared the decoder's band against the radio's TRANSMIT band, so a station with slice A on 20 m, slice B on 40 m and transmit focus on B was told its 20 m decoder disagreed with a radio that had been on 20 m all along — on the slice that decoder listens to. The comparison is now against every band the radio has a receiver on, which is what the warning was always about: a decoder announcing a band nothing on the radio is on, the way a lost CAT link looks."
|
||||
"The decode panel's band-drift warning stops firing on a second slice. It compared the decoder's band against the radio's TRANSMIT band, so a station with slice A on 20 m, slice B on 40 m and transmit focus on B was told its 20 m decoder disagreed with a radio that had been on 20 m all along — on the slice that decoder listens to. The comparison is now against every band the radio has a receiver on, which is what the warning was always about: a decoder announcing a band nothing on the radio is on, the way a lost CAT link looks.",
|
||||
"The updated OpsLog appears again after an update. The relaunch was starting the new build with SW_HIDE in its startup information, which Windows applies to the first window a process shows — so the new OpsLog started, took the single-instance lock and connected the rig, entirely invisibly. What operators saw was a process in the task manager, no window, and killing it then starting OpsLog by hand working every time. The 0.27.19 fix addressed the other half of the same report, the waiting, which is why 0.27.23 still did it. The two places OpsLog restarts itself now share one builder, since they differed by exactly that one line and only the hidden one was ever broken."
|
||||
],
|
||||
"fr": [
|
||||
"L’onglet Satellites est réagencé. Le tracé du ciel passe dans sa propre colonne à GAUCHE de la carte, où un graphique qui veut être carré ne dispute plus la largeur aux chiffres — il occupait la colonne de droite et repoussait le tableau des passes hors de l’écran, alors que la marge de l’autre côté de la carte restait vide. Sa largeur se règle à la souris, et un double-clic sur la poignée la réinitialise.",
|
||||
@@ -17,7 +18,8 @@
|
||||
"Plus de couleur là où elle décide de quelque chose : la bande de chaque fréquence, l’écart Doppler, un transpondeur inverseur, la largeur de bande passante et le pic d’élévation d’une passe sont des pastilles aux couleurs d’état de l’application, plutôt que des rangées de mots gris.",
|
||||
"Le tracé au sol est visible sur tous les fonds de carte. Il était dessiné avec une variable CSS, qui n’est pas une couleur exploitable par un canvas : le navigateur conservait ce qu’il avait et le tracé sortait dans un blanc pâle qui disparaissait aussi bien sur l’imagerie que sur les déserts. C’est maintenant une vraie couleur, tracée sur un liseré sombre comme on dessine une route sur une carte — une seule ligne ne peut pas tenir à la fois sur une mer claire et un continent sombre, une ligne avec un contour si.",
|
||||
"Le tracé du ciel et la position partagent désormais la colonne de gauche, qui s’ouvre et se ferme avec le même type de bouton que le panneau de droite — c’était une icône radar, héritée de l’époque où elle basculait un graphique à l’intérieur de ce panneau. Le tracé et les chiffres sont la même réponse à deux précisions près, l’azimut et l’élévation dessinés puis écrits, et les avoir aux deux extrémités de la fenêtre obligeait à lire un relèvement d’un côté pour le retrouver de l’autre.",
|
||||
"L’avertissement de dérive de bande du panneau de décodages ne se déclenche plus sur une seconde tranche. Il comparait la bande du décodeur à la bande d’ÉMISSION de la radio : une station avec la tranche A sur 20 m, la B sur 40 m et le focus d’émission sur B se voyait annoncer que son décodeur 20 m contredisait une radio qui était sur 20 m depuis le début — sur la tranche que ce décodeur écoute. La comparaison porte désormais sur toutes les bandes où la radio a un récepteur, ce qui a toujours été le sujet de cet avertissement : un décodeur qui annonce une bande sur laquelle rien de la radio ne se trouve, comme le fait une liaison CAT perdue."
|
||||
"L’avertissement de dérive de bande du panneau de décodages ne se déclenche plus sur une seconde tranche. Il comparait la bande du décodeur à la bande d’ÉMISSION de la radio : une station avec la tranche A sur 20 m, la B sur 40 m et le focus d’émission sur B se voyait annoncer que son décodeur 20 m contredisait une radio qui était sur 20 m depuis le début — sur la tranche que ce décodeur écoute. La comparaison porte désormais sur toutes les bandes où la radio a un récepteur, ce qui a toujours été le sujet de cet avertissement : un décodeur qui annonce une bande sur laquelle rien de la radio ne se trouve, comme le fait une liaison CAT perdue.",
|
||||
"OpsLog réapparaît après une mise à jour. La relance démarrait la nouvelle version avec SW_HIDE dans ses informations de démarrage, ce que Windows applique à la première fenêtre qu’un processus affiche — le nouvel OpsLog démarrait donc, prenait le verrou d’instance unique et connectait la radio, entièrement invisible. Les opérateurs voyaient un processus dans le gestionnaire de tâches, aucune fenêtre, et le fait de le tuer puis de lancer OpsLog à la main fonctionnait chaque fois. Le correctif de 0.27.19 traitait l’autre moitié du même rapport, l’attente, d’où la persistance en 0.27.23. Les deux endroits où OpsLog se relance partagent maintenant un même constructeur, puisqu’ils différaient précisément par cette ligne et que seul celui qui masquait était cassé."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user