Release van Pragtical v3.14.0

Voordat we ingaan op de wijzigingen, volgt hier een blik op hoe Pragtical is geëvolueerd, inclusief enkele van de nieuwe interface-verbeteringen in deze release.

Pragtical v3.14.0 introduceert applicatiemenu's, flexibelere plaatsing van opdrachtprompts en projectzoekopdrachten, beheer van workspace-sessies, een vernieuwde Plugin Manager en een lager CPU-verbruik in ruststand. De onderstaande wijzigingen beslaan het werk dat is verricht sinds versie 3.13.1.

Applicatiemenu's en werkbalk

Veel editor-commando's zijn nu te vinden onder de menu's File, Edit, Search, View, Tools en Help. Dit maakt het eenvoudiger om commando's te ontdekken zonder dat men de exacte namen of alle sneltoetsen hoeft te kennen. Plugins kunnen nu ook hun eigen items toevoegen, waarbij sneltoetsen en actieve statussen de geregistreerde commando's volgen.

De 'borderless' modus en de menubalk zijn nu standaard ingeschakeld. In de borderless modus bevindt het menu zich naast het logo in de titelbalk, waardoor de rest van het titelgedeelte beschikbaar blijft om het venster te verslepen. (Bedankt aan Tocal op Discord voor het suggestie van deze plaatsing).

Zowel Borderless als Show Menu Bar kunnen worden aangepast onder Settings > Core > User Interface. Het resize-gebied in de borderless modus is nu een dunne strip aan alle vier de zijden, zodat klikken op items in de statusbalk niet langer wordt gehinderd. Het wijzigen van de grootte is uitgeschakeld wanneer het venster is gemaximaliseerd of in volledig scherm staat.

De werkbalk kan nu ook worden verplaatst. Onder Settings > Plugins > Treeview > Toolbar Position kan gekozen worden uit Left, Bottom, Top en Right. Hiermee kan de balk naast, boven of onder de bestandenboom worden geplaatst, of aan de rechterkant van de editor.

Opdrachtprompts en zwevende weergaven

Opdrachtprompts zijn niet langer beperkt tot de onderkant van het venster. De instelling Command Palette Position onder Core > User Interface biedt de opties Bottom, Top en Center. De optie Center zorgt ervoor dat de invoer en de suggesties over de editor zweven, in plaats van dat de documentpanelen worden aangepast. Bottom blijft de standaardinstelling.

Deze optie kan ook in de gebruikersmodule worden ingesteld:

local config = require "core.config"
config.commandview_position = "center"

Bij gecentreerde prompts blijft de bovenkant van het venster stabiel tijdens het filteren van resultaten, in plaats van dat het venster verschuift naarmate de lijst korter wordt.

Aan deze wijzigingen ten grondslag ligt een gedeelde floating-view API. Menu's, aanvullingspop-ups en dialoogvensters kunnen dezelfde plaatsing, focus en muisbehandeling gebruiken, waardoor plugins niet langer individueel editor-events hoeven te onderscheppen. Plugin-ontwikkelaars kunnen meer details vinden in de gids voor zwevende weergaven.

Prompts kunnen nu ook onthouden waar ze zijn achtergelaten. CommandView ondersteunt nu optionele snapshots van invoer, selectie en het scrollen door resultaten. Core-commando's gebruiken dit om herhaalde zoekopdrachten en commando's te hervatten, met contextcontroles zodat een 'Go To Line'-zoekopdracht niet per ongeluk overspringt naar een ander document.

Plaatsing van projectzoekopdracht

De globale projectzoekopdracht kan nu links blijven staan, naar rechts worden verplaatst, of worden geopend als een gecentreerde pop-up. Dit kan worden gewijzigd via Settings > Plugins > Project Search > Position. Navigatie door resultaten via het toetsenbord blijft beschikbaar, en de gecentreerde weergave blijft open terwijl een live-zoekopdracht de resultaten bijwerkt.

De overgangen van de projectzoekopdracht zijn hersteld; de gecentreerde zoekfunctie en het 'About'-venster kunnen nu in beeld glijden. De gedeelde floating API houdt rekening met de overgangsinstellingen, waardoor het uitschakelen van animaties consistent werkt voor deze pop-ups.

Workspace-sessies

De vorige release loste de automatische herstel van sessies op. Deze release voegt een manier toe om te kiezen welke opgeslagen sessie geladen moet worden en om sessies te verwijderen die niet langer nodig zijn. Dit kan via File > Sessions, of via de commando's workspace:load-session, workspace:remove-session en workspace:clear-sessions.

Voordat een andere sessie wordt geladen, maakt Pragtical een back-up van de huidige workspace, inclusief niet-opgeslagen tekst. Het laden van een sessie vervangt de huidige documentindeling, terwijl het verwijderen van opgeslagen sessies de openstaande tabbladen ongemoeid laat. Deze operaties zijn van toepassing op het huidige project, zonder sessies van andere projecten te wissen.

Bestandsteller in TreeView

Dankzij Vinfall kan de bestandenboom nu tonen hoeveel bestanden zich in een ingeklapte map bevinden. Deze tellingen volgen de instellingen voor verborgen en genegeerde bestanden van de boom.

Het vervolgwerk heeft de telling verplaatst naar een eigen gebundelde plugin en ervoor gezorgd dat scans pauzeren tijdens het doorlopen van mappen, waardoor de editor bruikbaar blijft tijdens grote tellingen. Dit kan worden ingeschakeld onder Settings > Plugins > Treeview File Counts (standaard uitgeschakeld). TreeView beschikt nu ook over aparte row-drawing hooks voor plugins die inhoud in de marge of informatie naast een bestandsnaam willen toevoegen.

Pluginbeheerder

De Plugin Manager heeft een vernieuwde interface met zoekfuncties, categorie- en statusfilters, sortering, een detailpaneel en selectievakjes om meerdere plugins te selecteren. Geselecteerde items kunnen nu in één keer worden geïnstalleerd, bijgewerkt of verwijderd. Filters en de selectiestatus blijven behouden na een herstel van de workspace.

De pakketbeheerder maakt nu gebruik van core.json, en de oude losse JSON-bibliotheekkopieën zijn verwijderd uit lokale runs, pakketten en AppImages. De plugins-pin bevat nu ook de nieuwste LSP- en Ghostty-updates, de Center Doc menu-bar toggle voor Zen-modus en emoji-fixes.

Lager CPU-verbruik in ruststand en UI-verbeteringen

De hoofdloop maakt nu gebruik van SDL-events voor lange wachttijden en precieze 'sleeps' voor korte frame-vertragingen. De gratieperiode voor niet-gefocuste vensters wordt alleen vernieuwd wanneer er daadwerkelijke activiteit is. Hierdoor daalde het CPU-verbruik bij een niet-gefocust venster van 1,6% naar ongeveer 0,24% van één core (afhankelijk van de werklast en actieve plugins).

Widget-updates voeren minder werk uit, en ingeklapte panelen ontvangen geen negatieve afmetingen meer, wat voorkwam dat verborgen inhoud bleef animeren en opnieuw werd getekend. Animaties klikken nu exact op hun bestemming, waardoor zwevende weergaven volledig sluiten in plaats van een rand achter te laten.

Daarnaast zijn er fixes voor:

  • Layout-invalidatie na schaling.
  • Losse scheidingslijnen van verborgen panelen.
  • Geneste lijst-scrollbars.
  • Selecteren van lange TextBox-invoer met de muis.
  • TextBox-invoeren kunnen niet langer per ongeluk een 'Save'-dialoog openen bij het gebruik van document-save commando's.
  • SDL GPU behoudt nu de RGB-waarden van kleur-emoji's en past tekst-opaciteit toe zonder de glyphs te tinten met de huidige tekstkleur.

Build-updates

Gebundelde afhankelijkheden zijn vernieuwd naar:

  • SDL3 3.4.18
  • SDL3_image 3.4.8
  • FreeType 2.15.0
  • PCRE2 10.49
  • libpng 1.6.59

Daarnaast zijn de Widget, Plugin Manager, kleuren en plugin-revisies bijgewerkt. CI-acties en macOS-runners zijn eveneens geactualiseerd.

Vinfall is nu toegevoegd aan de lijst met contributors in het 'About'-dialoogvenster. Dank aan iedereen die problemen heeft gemeld, de rolling builds heeft getest en heeft geholpen de editor te verbeteren!

Downloads zijn beschikbaar op GitHub.

***

Changelog

Nieuwe functies

  • Toevoeging van applicatiemenu's, zwevende weergaven, plaatsing van de opdrachtpalette en toolbar-docking (#630).
  • Optionele onthoudfunctie voor de status van de opdrachtprompt (#631).
  • Configureerbare plaatsing van de projectzoekopdracht (#632).
  • Beheer van workspace-sessies (#633).
  • Optionele bestandstellingen voor mappen in TreeView (#623).

Verbeteringen

  • Borderless modus en applicatiemenu nu standaard ingeschakeld (#643).
  • Applicatiemenu geïntegreerd in de borderless titelbalk (#637).
  • Meer editor-commando's toegankelijk via de applicatiemenu's (#640).
  • Toevoeging van TreeView drawing hooks en asynchrone bestandstelling (#641).
  • Lager CPU-verbruik in ruststand (#645).
  • Widget bijgewerkt om CPU-verbruik te verminderen (#646).
  • Integratie van de vernieuwde Plugin Manager en verwijdering van verouderde JSON-bibliotheekkopieën (#624).

Fixes

  • Opslagcommando's uitschakelen voor ingebedde documentweergaven mogelijk gemaakt (#626).
  • Muisselectie en scrollen in TextBox-invoeren hersteld (#628).
  • Layout van Widget-lijsten en invoer van geneste scrollbars hersteld (#629).
  • UI-schaling, tekenen van verborgen panelen en Widget-integratie hersteld (#634).
  • Glij-animaties voor projectzoekopdracht en zwevende weergaven hersteld (#635).
  • Kleuren van emoji's behouden in SDL GPU tekstrendering (#636).
  • Gecentreerde opdrachtprompts stabiel gehouden tijdens het filteren (#638).
  • Animaties laten eindigen op hun exacte bestemming (#639).
  • Split-nodes en tab-inhoud binnen niet-negatieve grenzen gehouden (#647).

Build-systeem

  • Update van CI-acties, macOS-runners en gebundelde afhankelijkheden (#644).
  • Update van het plugins-subproject (a8f3b1a0).

Overige wijzigingen

  • Vinfall toegevoegd aan de contributors in het 'About'-dialoogvenster (#642).