fix(slides): afbeelding meenemen bij slide-copy tussen mappen (#2104) #2105

Merged
brenno merged 1 commit from fix/slide-copy-cross-directory into main 2026-09-16 21:16:04 +00:00
Owner

Samenvatting

  • Bug: een slide kopiëren van een presentatie in map A naar een presentatie in map B liet de afbeelding achter als die in B nog niet bestond — het klembord bewaarde de slide met een relatief pad (images/foo.png), dat in B tegen de verkeerde projectmap resolveerde.
  • Fix, twee stappen: bij kopiëren maakt absolutizeSlideAssetPaths elke lokale verwijzing absoluut tegen de bronmap; bij plakken haalt ImageService.adoptSlideAssets de bestanden via de bestaande botsingveilige import (resolveAssetDestination) de doelmap in en maakt de paden weer projectrelatief.
  • Dekking: beeldvelden, inline Markdown-afbeeldingen, vraag-antwoordafbeeldingen, video, audio én de per-slide Marp-achtergrond. URLs, data:-URI's en mem:-verwijzingen blijven ongemoeid; identieke bestaande bestanden worden hergebruikt en naambotsingen wijken uit naar naam_2.ext.
  • Beide kopieerroutes gedekt: klembord plakken én "slides kopiëren naar ander deck". Documenttabbladen (geen deck) worden nu overgeslagen i.p.v. te gooien.

Closes #2104

Testplan

  • test/slide_copy_between_projects_test.dart — 8 regressietests (absolutiseren, meekopiëren, naambotsing, media, null-doelmap)
  • make check groen
  • make check-secrets groen
  • make sast groen

Generated with Devin

## Samenvatting - **Bug**: een slide kopiëren van een presentatie in map A naar een presentatie in map B liet de afbeelding achter als die in B nog niet bestond — het klembord bewaarde de slide met een relatief pad (`images/foo.png`), dat in B tegen de verkeerde projectmap resolveerde. - **Fix, twee stappen**: bij *kopiëren* maakt `absolutizeSlideAssetPaths` elke lokale verwijzing absoluut tegen de bronmap; bij *plakken* haalt `ImageService.adoptSlideAssets` de bestanden via de bestaande botsingveilige import (`resolveAssetDestination`) de doelmap in en maakt de paden weer projectrelatief. - **Dekking**: beeldvelden, inline Markdown-afbeeldingen, vraag-antwoordafbeeldingen, video, audio én de per-slide Marp-achtergrond. URLs, `data:`-URI's en `mem:`-verwijzingen blijven ongemoeid; identieke bestaande bestanden worden hergebruikt en naambotsingen wijken uit naar `naam_2.ext`. - Beide kopieerroutes gedekt: klembord plakken én "slides kopiëren naar ander deck". Documenttabbladen (geen deck) worden nu overgeslagen i.p.v. te gooien. Closes #2104 #### Testplan - [x] `test/slide_copy_between_projects_test.dart` — 8 regressietests (absolutiseren, meekopiëren, naambotsing, media, null-doelmap) - [x] `make check` groen - [x] `make check-secrets` groen - [x] `make sast` groen Generated with [Devin](https://devin.ai)
fix(slides): meegekopiëerde afbeelding bij slide-copy tussen mappen (#2104)
All checks were successful
scans / scans (pull_request) Successful in 2m59s
static-gate / static-gate (pull_request) Successful in 6m7s
94c0dc3f80
Een slide kopiëren naar een presentatie in een andere map liet de
afbeelding achter: het klembord bewaarde de kale slide met een relatief
pad, dat in het doel-deck tegen de verkeerde projectmap werd aangelegd.

Bij kopiëren maakt absolutizeSlideAssetPaths elke lokale verwijzing
absoluut tegen de bronmap; bij plakken haalt ImageService.adoptSlideAssets
de bestanden via de bestaande botsingveilige import de doelmap in. Dekt
beeldvelden, inline- en vraagafbeeldingen, video, audio en de Marp-
achtergrond; URLs en mem:-paden blijven ongemoeid.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 46354f95d0 into main 2026-09-16 21:16:04 +00:00
Sign in to join this conversation.
No description provided.