feat(bijsnijden): draaien schrijft een kopie en laat het origineel staan #1873
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1873
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/rotatie-kopie-optie-a"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat dit is
Optie A uit
docs/design/IMAGE_ROTATION.md, gebouwd. Je koos hem op 2026-08-30; #1872 legde de afweging en de tussentijdse waarschuwing vast, dit is het gedrag.Het probleem dat weggaat
Een kwartslag in het aanpasvenster overschreef het bronbestand. Geen undo, geen kopie — en omdat één afbeelding meer dia's en meer decks kan voeden, draaide een klik hier de foto ook in decks die de auteur niet openhad. Voor een foto die hij niet zelf maakte, was dat de enige die hij had.
Wat het nu doet
Draaien schrijft een afgeleide kopie náást de bron en laat de dia daarnaar wijzen:
foto.jpg→foto.r90.jpg. Naast de bron betekent binnen de projectmap of de stagingmap — een dia mag nergens anders heen wijzen — dus de kopie reist mee in het pakket en het git-vlak als elke andere deck-asset, zonder een OciDeck-artefact in de fotomap van de gebruiker achter te laten.De hoek telt op in de naam in plaats van te nesten:
foto.r90.jpgnog een kwartslag isfoto.r180.jpg, nooitfoto.r90.r90.jpg. Een volle ronde levert geen vierde bestand op maar wijst de dia terug naar het origineel.Die regel zit in
rotatedCopyNameensplitRotationSuffix— pure functies, apart getoetst, want dáár zit het gedrag dat stil kan rotten. Op web hetzelfde viaWebAssetStore.putin plaats vanreplace, zodat een dia die nog naar de ongedraaide bytes wijst die ook houdt.De tekst in de dialoog is meegegaan
Hij zei "draaien verandert het afbeeldingsbestand zelf" — met deze wijziging is dat juist niet meer waar, en hij stond op het punt onwaar mee te liften. Hij zegt nu dat er een kopie naast het origineel komt en dat het origineel ongewijzigd blijft. In 31 talen; de oude sleutel is uit alle 32 tabellen verwijderd zodat er geen wees achterblijft.
Wat NIET meereist
De doelen van beeldverwijzingen draaien niet mee. Ze staan in beeldruimte van de oude oriëntatie, dus na een draai wijzen de markeringen verkeerd. Dat gold ook toen draaien de pixels bakte — deze wijziging veroorzaakt het niet en verhelpt het niet — maar hij maakt het wél goedkoper te repareren: het origineel staat er nog, en het geometriecontract uit §5.2 weet al hoe je een target draait. De gids zegt de auteur de oriëntatie vast te zetten vóór hij callouts plaatst; dat is een omweg, geen antwoord. Staat als open punt in §9.
Toetsing
test/image_crop_dialog_test.dart— 28/28 groen, met als kern de assertie dat het bronbestand ná een draai byte-identiek is. Dat is de hele wijziging; valt die weg, dan is de bug terug.foto.r180.png; zes unit-tests op de naamregel (inclusief.r45, dat niet van ons is en blijft staan).make check-staticgroen ·make check-registrationsgroen ·flutter analyzeschoonDocumentatie
USER_GUIDE(nl+en) herschreven naar het nieuwe gedrag met een gedateerde notitie over wat er veranderde,IMAGE_ROTATION.mdop decided and built met §8a (hoe het gebouwd is) en het callout-punt in §9,docs/README.md-index bijgewerkt, CHANGELOG-regel erbij.