Skip to content

Linux-ondersteuning en webtools in tabbladen - #2

Merged
martijn3BM merged 2 commits into
OpenAEC-Foundation:mainfrom
Nozzit:claude/linux-compatibility-d19a51
Jul 20, 2026
Merged

Linux-ondersteuning en webtools in tabbladen#2
martijn3BM merged 2 commits into
OpenAEC-Foundation:mainfrom
Nozzit:claude/linux-compatibility-d19a51

Conversation

@Nozzit

@Nozzit Nozzit commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Waarom

De installer werkte in de praktijk alleen op Windows: hij koos altijd een Windows-installer-asset en kon op Linux niets installeren, detecteren of starten. Daarnaast openden webtools altijd in een externe browser, terwijl ze alleen een webview nodig hebben.

Wat er verandert

Linux-ondersteuning. Het gekozen release-asset volgt nu het platform: op Linux alleen x86-64 AppImages (.deb vergt root, ARM-builds draaien niet op een gewone desktop). AppImages worden zonder beheerdersrechten beheerd in ~/.local/share/openaec-installer/apps/<tool>/ — geplaatst, uitvoerbaar gemaakt, oude versies opgeruimd en met een menu-snelkoppeling. Detectie leest die map en haalt de versie uit de bestandsnaam. Zelf bijwerken vervangt de draaiende AppImage via $APPIMAGE. Op macOS wordt bewust geen asset gekozen, zodat de app eerlijk "geen installer" toont in plaats van een Windows-exe aan te bieden.

Webtools in tabbladen. Een browserachtige tabbalk met een vaste catalogus-tab plus een sluitbare tab per geopende webtool. Elke tool met een webUrl kan in een tab, dus ook de webversies van desktop-tools. Open tabs blijven gemount, zodat wisselen de tool niet herlaadt en sessie en invoer behouden blijven; ze worden bewaard en bij het opstarten hersteld. Openen in de externe browser blijft overal beschikbaar, ook als vluchtroute mocht een site ooit embedding blokkeren.

Drie fouten rond het starten van tools. Een gestarte tool stond in de procesgroep van de installer, waardoor het afsluiten van de installer elke gestarte tool meenam — die verdween dan zomaar van het scherm. Verder lieten afgesloten tools een zombieproces achter en schreven ze hun logregels door de uitvoer van de installer heen.

Zichtbaar geknipper bij installeren. De voortgangsbalk verdween al bij het laatste downloadevent, waarna melding en statuswissel er los achteraan kwamen. De balk blijft nu staan tot de installatie helemaal afrondt.

Getest

  • cargo test — 5 tests, waaronder een install-, detectie- en updaterondgang op schijf.
  • npm test — 10 tests op de tab-logica (openen, dedupliceren, sluitfocus, herstelfiltering). Vitest is toegevoegd en draait mee in CI.
  • Handmatig op Linux: alle zeven tools die een AppImage publiceren zijn geïnstalleerd, gedetecteerd en gestart, inclusief menu-snelkoppelingen.
  • Tabbladen in de draaiende frontend: openen, wisselen met behoud van staat, dubbel openen, sluiten van actieve en laatste tab.
  • De procesgroep-fix is met een gecontroleerde proef aangetoond: zonder de fix sterft de gestarte tool mee met de ouder, met de fix blijft hij draaien.

Bekende beperkingen

  • Vijf tools publiceren geen AppImage (3D Studio, Calc Studio, Calculations Studio, FEM2D Studio, Speech Studio) en blijven op Linux niet-installeerbaar tot hun release-workflow die bouwt.
  • Installeren op macOS is nog niet geïmplementeerd.
  • Detectie ziet alleen wat de installer zelf beheert, dus geen tools die via .deb of anderszins buiten de app om geïnstalleerd zijn.
  • target="_blank"-popups werken binnen een iframe mogelijk niet; de vervolgstap zou native child-webviews zijn.

Ontwerp van de tabbladen: docs/superpowers/specs/2026-07-20-webtool-tabs-design.md

🤖 Generated with Claude Code

Nozzit and others added 2 commits July 20, 2026 14:51
De installer koos altijd een Windows-installer-asset en kon op Linux dus
niets installeren, detecteren of starten. Deze commit maakt de backend
platform-bewust.

- github.rs kiest het asset dat bij het platform past: op Linux alleen
  x86-64 AppImages (.deb vergt root, ARM-builds draaien niet op een gewone
  desktop). Op macOS wordt bewust niets gekozen, zodat de app eerlijk
  "geen installer" toont in plaats van een Windows-exe aan te bieden.
- linux.rs beheert AppImages zonder beheerdersrechten: plaatsen in
  ~/.local/share/openaec-installer/apps/<tool>/, uitvoerbaar maken, oude
  versies opruimen en een menu-snelkoppeling schrijven. Zelf bijwerken
  vervangt de draaiende AppImage via $APPIMAGE.
- registry.rs detecteert op Linux via die beheerde map; de versie komt uit
  de bestandsnaam, met dezelfde logica als voor de release-assets.
- Gestarte tools krijgen een eigen procesgroep, losgekoppelde uitvoer en
  worden opgeruimd. Zonder de eigen procesgroep sleepte het afsluiten van
  de installer elke gestarte tool mee het graf in.

Getest met een install-, detectie- en updaterondgang op schijf, en met
alle zeven tools die daadwerkelijk een AppImage publiceren.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Webtools openden altijd in een externe browser. Ze hebben alleen een
webview nodig, dus draaien ze nu in tabbladen binnen de installer zelf.

- Browserachtige tabbalk: een vaste catalogus-tab plus een sluitbare tab
  per geopende webtool. De balk verschijnt alleen zodra er iets openstaat.
- Elke tool met een webUrl kan in een tab, dus ook de webversies van
  desktop-tools. Die krijgen daarvoor een eigen knop op de kaart; zonder
  die knop was er voor een geinstalleerde tool geen enkele route naar een
  tabblad, omdat een klik op de kaart de native app start.
- Open tabs blijven gemount, zodat wisselen de tool niet herlaadt en
  sessie en invoer behouden blijven. Open tabs worden bewaard en bij het
  opstarten hersteld; ids die niet meer bestaan vallen weg.
- Openen in de externe browser blijft overal beschikbaar, ook als
  vluchtroute mocht een site ooit embedding blokkeren.

Daarnaast in deze commit:
- De installatiemelding volgt het platform: op Linux is de tool direct
  klaar voor gebruik, op Windows loopt de gebruiker een setup-UI door.
- De voortgangsbalk blijft staan tot de installatie helemaal afrondt. Hij
  verdween eerder al bij het laatste downloadevent, waarna melding en
  statuswissel er los achteraan kwamen: dat gaf zichtbaar geknipper.
- Vitest toegevoegd voor de tab-logica (10 tests) en meegenomen in CI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@martijn3BM
martijn3BM merged commit b12c5fc into OpenAEC-Foundation:main Jul 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants