Files
kniip/.cursor/plans/update-melding_blauwe_stip_0a210c0e.plan.md
T
2026-11-09 17:06:35 +01:00

7.4 KiB
Raw Blame History

name, overview, todos, isProject
name overview todos isProject
Update-melding blauwe stip kniip controleert op de achtergrond (bij het starten en daarna elke 24 uur, uit te zetten in Instellingen) op een nieuwe versie. Als die er is, krijgen de knop Instellingen in de editor-werkbalk en de tab Update in Instellingen een blauwe stip.
id content status
setting CheckForUpdates toevoegen aan AppSettings completed
id content status
notifier UpdateNotifier maken (controle na het starten en elke 24 uur, AvailabilityChanged-event, Report) completed
id content status
app UpdateNotifier koppelen in App: aanroepen bij het opstarten en in SaveSettings completed
id content status
editor-badge Blauwe stip op de knop Instellingen in EditorWindow completed
id content status
settings-tab Blauwe stip op de tab Update, vinkje voor automatische controle, Report na handmatige controle completed
id content status
changelog-readme CHANGELOG.md sectie 1.1.4 toevoegen en README bijwerken (achtergrondcontrole, versietabel, build-commentaar) completed
id content status
bump-version Versie naar 1.1.4 in build.ps1, installer/Kniip.iss en src/Kniip/Kniip.csproj completed
id content status
build-release build.ps1 draaien, commit "1.1.4", tag 1.1.4 en pushen; installer klaarzetten voor de release op git.hibbit.net completed
false

Blauwe update-melding bij Instellingen en de tab Update

Huidige situatie

flowchart LR
    AppStart[App start] --> Notifier[UpdateNotifier]
    Timer["Timer 24 uur"] --> Notifier
    Notifier -->|GetReleasesAsync| Checker[UpdateChecker]
    Notifier -->|AvailabilityChanged| EditorBadge[Stip op knop Instellingen]
    Notifier -->|AvailabilityChanged| TabBadge[Stip op tab Update]
    SettingsCheck[Handmatige controle in tab Update] -->|Report| Notifier

Stappen

  1. Nieuwe instelling in src/Kniip/Settings/AppSettings.cs: public bool CheckForUpdates { get; set; } = true;

  2. Nieuwe klasse UpdateNotifier in src/Kniip/Update/UpdateNotifier.cs:

    • Houdt ReleaseInfo? Available bij en bool IsUpdateAvailable, met een event AvailabilityChanged dat op de UI-thread wordt afgevuurd.
    • Apply(bool enabled): als de controle aanstaat, wordt die kort na het starten uitgevoerd (ongeveer 10 seconden vertraging, zodat het opstarten niet trager wordt) en daarna via een DispatcherTimer elke 24 uur. Als de controle uitstaat, stopt de timer en verdwijnt de stip.
    • CheckAsync() roept UpdateChecker.GetReleasesAsync aan en vangt UpdateException stil af, zodat een achtergrondcontrole nooit een foutmelding toont.
    • Report(ReleaseInfo? newest) wordt gebruikt door de handmatige controle in de tab Update, zodat de stip ook daarmee gelijkloopt.
    • "Nieuwer" betekent hetzelfde als in ShowReleases: r.Version > UpdateChecker.CurrentVersion.
  3. App (src/Kniip/App.xaml.cs):

    • Een property public UpdateNotifier Updates { get; } = new();
    • Bij het opstarten (na ApplyHotkeys) wordt Updates.Apply(Settings.CheckForUpdates) aangeroepen.
    • In SaveSettings() gebeurt dat opnieuw, zodat het aan- of uitzetten van de controle direct effect heeft.
  4. Stip op de knop Instellingen (src/Kniip/Editor/EditorWindow.xaml en .xaml.cs):

    • De inhoud van de knop wordt een Grid met de bestaande glyph plus <Ellipse x:Name="SettingsBadge" Width="8" Height="8" Fill="{StaticResource AccentBrush}" Stroke="White" StrokeThickness="1" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,-2,-3,0" Visibility="Collapsed" />.
    • In de code-behind abonneert de editor zich op App.Instance.Updates.AvailabilityChanged. Bij een wijziging worden SettingsBadge.Visibility en de tooltip bijgewerkt (de tooltip wordt "Instellingen - nieuwe versie beschikbaar"). Bij Closed wordt het abonnement weer opgezegd.
  5. Stip op de tab Update en een vinkje voor de achtergrondcontrole (src/Kniip/Settings/SettingsWindow.xaml en .xaml.cs):

    • De Header van UpdateTab wordt een horizontale StackPanel met de tekst "Update" en daarachter een blauwe Ellipse x:Name="UpdateTabBadge" van dezelfde stijl, met een margin links van 6.
    • In de tab Update, onder CurrentVersionText, komt <CheckBox x:Name="AutoUpdateCheckBox" Content="Automatisch controleren op nieuwe versies (bij starten en dagelijks)" />. Die wordt gevuld in LoadFrom, bewaard in Save_Click en meegenomen bij Standaardinstellingen.
    • Het venster abonneert zich op AvailabilityChanged om de zichtbaarheid van de stip te zetten, en zegt dat abonnement op bij Closed.
    • Na een handmatige controle roept ShowReleases App.Instance.Updates.Report(newer.FirstOrDefault()) aan.

Gedrag

  • De stip blijft zichtbaar zolang er een nieuwere versie is. Na het updaten start kniip met de nieuwe versie, en dan is er geen nieuwere versie meer, dus verdwijnt de stip vanzelf.
  • Er komen geen extra meldingen in het systeemvak, zoals afgesproken.

Changelog en release 1.1.4 (na de codewijzigingen)

  1. CHANGELOG.md: bovenaan een nieuwe sectie ## 1.1.4 - 2026-11-09 in dezelfde stijl als de eerdere versies, bijvoorbeeld:
    • Onder ### Nieuw: Melding bij een nieuwe versie. kniip kijkt bij het starten en daarna elke dag of er een nieuwere versie is. Als die er is, staat er een blauwe stip op de knop Instellingen in de editor en op de tab Update. Je zet dit uit in de tab Update met Automatisch controleren op nieuwe versies.
    • Onder ### Gewijzigd: kniip zoekt nu standaard zelf op de achtergrond naar updates. Tot nu toe gebeurde dat alleen als je de tab Update opende, zoals vermeld bij 1.1.0.
  2. README.md:
    • In de versietabel 1.1.3 vervangen door 1.1.4, met de link .../releases/download/1.1.4/Kniip-Setup-1.1.4.exe.
    • Het commentaar # versie 1.1.3 bij het bouwen wordt # versie 1.1.4.
    • Bij "Updaten vanuit kniip" komt een zin over de automatische controle en de blauwe stip.
  3. Versienummer van 1.1.3 naar 1.1.4 in build.ps1 ($Version), installer/Kniip.iss (#define AppVersion) en src/Kniip/Kniip.csproj (<Version>).
  4. Bouwen en uitbrengen, op dezelfde manier als bij 1.1.2 en 1.1.3:
    • .\build.ps1 draaien. Dat levert artifacts\Kniip-1.1.4.exe en artifacts\Kniip-Setup-1.1.4.exe op.
    • Daarna git add -A, git commit -m "1.1.4", git tag 1.1.4 (zonder v, net als de vorige tags) en git push origin HEAD plus git push origin 1.1.4.
    • De release op git.hibbit.net maak je, net als eerder, zelf aan. Je hangt daar artifacts\Kniip-Setup-1.1.4.exe aan als bijlage en plakt de 1.1.4-tekst uit de changelog in de beschrijving. Ik lever die tekst kant-en-klaar aan.