Ontwerp: samengesteld documentdossier met overzicht, tabbladen en SHA-256-controle #2440

Closed
opened 2026-10-15 12:18:19 +00:00 by brenno · 1 comment
Owner

Doel

Een gebruiker stelt in OciDeck een dossier samen uit aangewezen documenten. Het dossier biedt een aantrekkelijk, rustig leesbaar overzicht met een zelfgekozen volgorde en nummering. Vanuit dat overzicht kan de gebruiker documenten in tabbladen openen, tussen stukken springen en met één zichtbare actie terugkeren naar het overzicht. Per stuk bewaart het dossier de SHA-256 van de bestandsbytes en kan de gebruiker later opnieuw controleren of het bestand nog overeenkomt.

Dit is een ontwerpissue. Het bestaande audit_dossier.dart maakt een index voor een auditpakket; dit voorstel is een algemeen, door de gebruiker samengesteld dossier en mag die betekenis niet stilzwijgend veranderen. OciDeck heeft al document- en presentatietabbladen en een veilig openFileByPath-pad. De bestaande documentzegels gebruiken SHA-512; de gevraagde SHA-256 is een afzonderlijke dossiercontrole, geen vervanging van die zegels.

Gebruikersreis

  1. Nieuw dossier: geef titel en optionele omschrijving op. Kies bestanden via de bestandskiezer, voeg later meer toe en verwijder een verwijzing zonder het bronbestand te verwijderen. Elk stuk krijgt een duidelijke naam; oorspronkelijke bestandsnaam en vindplaats blijven zichtbaar in de details.
  2. Ordenen: sleep rijen naar een andere plaats, gebruik daarnaast toetsenbordacties Omhoog en Omlaag. De lijst toont direct de uiteindelijke nummers. Bied handmatige hernummering, een beginwaarde en zo nodig tussenvoegen zonder namen te veranderen. Nummering is dossiereigenschap; bronbestanden worden niet hernoemd.
  3. Overzicht bekijken: een verzorgde omslag met titel, aantal stukken en een duidelijke inhoudsopgave. Elke rij toont nummer, leesbare titel, bestandstype, korte vindplaats en integriteitsstatus. Veel witruimte, heldere typografie, subtiele kleur en consistente statusiconen; lange titels en smalle vensters blijven leesbaar. Donker thema, hoog contrast, zoom en schermlezer blijven bruikbaar. Geen kleur als enige statusdrager.
  4. Openen: bij Dossier openen kiest de gebruiker Alleen overzicht of Overzicht en documenten in tabbladen (met aantalsindicatie). In de tweede stand blijft het overzicht als herkenbaar dossier-tabblad beschikbaar. Een klik op een rij activeert een bestaand documenttabblad of opent het via de bestaande veilige openroute. Terug naar dossier staat zichtbaar in elk vanuit het dossier geopend documenttabblad. Sluiten van een documenttabblad verwijdert het stuk niet uit het dossier. Bij veel stukken opent de app tabbladen beheerst, met voortgang en annuleerbaarheid, zodat het venster responsief blijft.
  5. Controle: Controleer op een rij rekent SHA-256 opnieuw over de actuele bytes op schijf en vergelijkt met de vastgelegde hash. Toon Komt overeen, Gewijzigd, Bestand ontbreekt, Niet leesbaar of Nog niet gecontroleerd, plus tijdstip van de laatste controle. Controleer alles is een aparte actie met voortgang. Een gewijzigde of ontbrekende bron wordt nooit stilzwijgend als goed gemarkeerd. Nieuwe versie vastleggen is een expliciete, bevestigde actie die de referentiehash vervangt en de vorige waarde/aantekening zichtbaar houdt.

Voorstel voor gegevens en grenzen

  • Sla een dossier als eigen, leesbaar en overdraagbaar manifest naast de bestanden op; bewaar per stuk een stabiele ID, titel, volgorde/nummer, relatief pad waar mogelijk, oorspronkelijke bestandsnaam, sha256 en de bytegrootte bij vastleggen. De exacte extensie en het schema zijn nog een formaatbesluit: vóór implementatie apart aftekenen, inclusief oudere dossiers blijven lezen/bijwerken en onbekende velden veilig behouden.
  • Hash de ongewijzigde bestandsbytes, zonder Markdown-normalisatie of serialisatie. Toon de volledige hash kopieerbaar in de details en maak onafhankelijke narekening mogelijk (shasum -a 256 <bestand>). De hash van een dossiermanifest of een bestand in hetzelfde pakket bewijst op zichzelf geen authenticiteit van de maker; formuleer de UI als vergelijking met de vastgelegde referentie.
  • Bewaar geen documentinhoud in het dossier. Verwijzingen mogen niet ongemerkt buiten een gekozen dossiermap ontsnappen bij import of verplaatsen; behandel ontbrekende, verplaatste en gewijzigde bestanden expliciet. Toon absolute paden alleen lokaal waar nodig; een gedeeld dossier moet met relatieve verwijzingen kunnen werken.
  • Hergebruik bij openen de bestaande scan, foutafhandeling en detectie van al geopende bestanden. De dossieractie mag die veiligheidsroute niet omzeilen. Een pad naar een niet door OciDeck ondersteund formaat krijgt een begrijpelijke status en een expliciete externe-openactie; definieer de ondersteunde typen vóór bouw.
  • Hashcontrole werkt op opgeslagen bytes. Bij onopgeslagen wijzigingen in een open tabblad maakt de UI helder dat de controle de schijfversie betreft; geen stilzwijgende opslag of herberekening.

Acceptatiecriteria voor de uitwerking

  • Een dossier met minstens twintig stukken kan worden opgebouwd, geordend, hernummerd, opgeslagen en heropend met behoud van titels, volgorde, nummers en hashes.
  • Beide openkeuzes werken; navigatie vanuit het overzicht activeert het juiste tabblad en Terug naar dossier werkt ook na sluiten en opnieuw openen van een stuk.
  • Controle van één stuk en van alle stukken onderscheidt overeenkomst, wijziging, ontbrekend bestand en leesfout. De referentiehash verandert uitsluitend na een expliciete actie.
  • Een extern gewijzigd bestand en een onopgeslagen documenttabblad krijgen aantoonbaar verschillende, juiste meldingen.
  • De overzichtsweergave is visueel beoordeeld in licht/donker thema, smal/breed venster en met toetsenbord/schermlezer; status blijft zonder kleur te begrijpen.
  • Tests dekken manifestmigratie en behoud van onbekende velden, herordening/nummering, tabbladnavigatie, bytegetrouwe hashvergelijking en foutgevallen. Documentatie legt het formaat en de beperkte betekenis van SHA-256 uit.

Ontwerpbesluiten vóór bouw

  1. Welke bestanden vallen onder documenten: alleen OciDeck Markdown-documenten en presentaties, of ook PDF/Office/overige bestanden als extern te openen verwijzing?
  2. Wordt het dossier als losse manifestfile met relatieve bestandsverwijzingen aangeboden, of ook als draagbaar pakket met gekopieerde bestanden? Welke handeling is expliciet nodig om een pakket te maken?
  3. Welke nummeringsvormen zijn nodig naast opeenvolgend 1, 2, 3 (bijvoorbeeld 01, A.1 of handmatige nummers)? Hoe worden dubbele nummers gemeld?
  4. Mag Overzicht en documenten in tabbladen alle stukken standaard openen, of wordt vanaf een grens een keuze/waarschuwing getoond? Leg die grens vast met een prestatietoets.

Voorgestelde bouwvolgorde

  1. Formaatbesluit en dossiermodel met veilige opslag en bytegetrouwe SHA-256.
  2. Samenstellen, vriendelijk ordenen/nummeren en de overzichtsweergave.
  3. Openkeuze, tabbladnavigatie en terugknop.
  4. Controle per stuk en voor alles, statussen en expliciet opnieuw vastleggen.

Elke stap krijgt zijn eigen implementatie-issue zodra de vier ontwerpbesluiten zijn genomen; dit issue blijft de product- en acceptatiebron.

## Doel Een gebruiker stelt in OciDeck een dossier samen uit aangewezen documenten. Het dossier biedt een aantrekkelijk, rustig leesbaar overzicht met een zelfgekozen volgorde en nummering. Vanuit dat overzicht kan de gebruiker documenten in tabbladen openen, tussen stukken springen en met één zichtbare actie terugkeren naar het overzicht. Per stuk bewaart het dossier de SHA-256 van de bestandsbytes en kan de gebruiker later opnieuw controleren of het bestand nog overeenkomt. Dit is een **ontwerpissue**. Het bestaande `audit_dossier.dart` maakt een index voor een auditpakket; dit voorstel is een algemeen, door de gebruiker samengesteld dossier en mag die betekenis niet stilzwijgend veranderen. OciDeck heeft al document- en presentatietabbladen en een veilig `openFileByPath`-pad. De bestaande documentzegels gebruiken SHA-512; de gevraagde SHA-256 is een afzonderlijke dossiercontrole, geen vervanging van die zegels. ## Gebruikersreis 1. **Nieuw dossier**: geef titel en optionele omschrijving op. Kies bestanden via de bestandskiezer, voeg later meer toe en verwijder een verwijzing zonder het bronbestand te verwijderen. Elk stuk krijgt een duidelijke naam; oorspronkelijke bestandsnaam en vindplaats blijven zichtbaar in de details. 2. **Ordenen**: sleep rijen naar een andere plaats, gebruik daarnaast toetsenbordacties `Omhoog` en `Omlaag`. De lijst toont direct de uiteindelijke nummers. Bied handmatige hernummering, een beginwaarde en zo nodig tussenvoegen zonder namen te veranderen. Nummering is dossiereigenschap; bronbestanden worden niet hernoemd. 3. **Overzicht bekijken**: een verzorgde omslag met titel, aantal stukken en een duidelijke inhoudsopgave. Elke rij toont nummer, leesbare titel, bestandstype, korte vindplaats en integriteitsstatus. Veel witruimte, heldere typografie, subtiele kleur en consistente statusiconen; lange titels en smalle vensters blijven leesbaar. Donker thema, hoog contrast, zoom en schermlezer blijven bruikbaar. Geen kleur als enige statusdrager. 4. **Openen**: bij `Dossier openen` kiest de gebruiker `Alleen overzicht` of `Overzicht en documenten in tabbladen` (met aantalsindicatie). In de tweede stand blijft het overzicht als herkenbaar dossier-tabblad beschikbaar. Een klik op een rij activeert een bestaand documenttabblad of opent het via de bestaande veilige openroute. `Terug naar dossier` staat zichtbaar in elk vanuit het dossier geopend documenttabblad. Sluiten van een documenttabblad verwijdert het stuk niet uit het dossier. Bij veel stukken opent de app tabbladen beheerst, met voortgang en annuleerbaarheid, zodat het venster responsief blijft. 5. **Controle**: `Controleer` op een rij rekent SHA-256 opnieuw over de actuele bytes op schijf en vergelijkt met de **vastgelegde** hash. Toon `Komt overeen`, `Gewijzigd`, `Bestand ontbreekt`, `Niet leesbaar` of `Nog niet gecontroleerd`, plus tijdstip van de laatste controle. `Controleer alles` is een aparte actie met voortgang. Een gewijzigde of ontbrekende bron wordt nooit stilzwijgend als goed gemarkeerd. `Nieuwe versie vastleggen` is een expliciete, bevestigde actie die de referentiehash vervangt en de vorige waarde/aantekening zichtbaar houdt. ## Voorstel voor gegevens en grenzen - Sla een dossier als eigen, leesbaar en overdraagbaar manifest naast de bestanden op; bewaar per stuk een stabiele ID, titel, volgorde/nummer, relatief pad waar mogelijk, oorspronkelijke bestandsnaam, `sha256` en de bytegrootte bij vastleggen. De exacte extensie en het schema zijn **nog een formaatbesluit**: vóór implementatie apart aftekenen, inclusief oudere dossiers blijven lezen/bijwerken en onbekende velden veilig behouden. - Hash de ongewijzigde bestandsbytes, zonder Markdown-normalisatie of serialisatie. Toon de volledige hash kopieerbaar in de details en maak onafhankelijke narekening mogelijk (`shasum -a 256 <bestand>`). De hash van een dossiermanifest of een bestand in hetzelfde pakket bewijst op zichzelf geen authenticiteit van de maker; formuleer de UI als *vergelijking met de vastgelegde referentie*. - Bewaar geen documentinhoud in het dossier. Verwijzingen mogen niet ongemerkt buiten een gekozen dossiermap ontsnappen bij import of verplaatsen; behandel ontbrekende, verplaatste en gewijzigde bestanden expliciet. Toon absolute paden alleen lokaal waar nodig; een gedeeld dossier moet met relatieve verwijzingen kunnen werken. - Hergebruik bij openen de bestaande scan, foutafhandeling en detectie van al geopende bestanden. De dossieractie mag die veiligheidsroute niet omzeilen. Een pad naar een niet door OciDeck ondersteund formaat krijgt een begrijpelijke status en een expliciete externe-openactie; definieer de ondersteunde typen vóór bouw. - Hashcontrole werkt op opgeslagen bytes. Bij onopgeslagen wijzigingen in een open tabblad maakt de UI helder dat de controle de schijfversie betreft; geen stilzwijgende opslag of herberekening. ## Acceptatiecriteria voor de uitwerking - Een dossier met minstens twintig stukken kan worden opgebouwd, geordend, hernummerd, opgeslagen en heropend met behoud van titels, volgorde, nummers en hashes. - Beide openkeuzes werken; navigatie vanuit het overzicht activeert het juiste tabblad en `Terug naar dossier` werkt ook na sluiten en opnieuw openen van een stuk. - Controle van één stuk en van alle stukken onderscheidt overeenkomst, wijziging, ontbrekend bestand en leesfout. De referentiehash verandert uitsluitend na een expliciete actie. - Een extern gewijzigd bestand en een onopgeslagen documenttabblad krijgen aantoonbaar verschillende, juiste meldingen. - De overzichtsweergave is visueel beoordeeld in licht/donker thema, smal/breed venster en met toetsenbord/schermlezer; status blijft zonder kleur te begrijpen. - Tests dekken manifestmigratie en behoud van onbekende velden, herordening/nummering, tabbladnavigatie, bytegetrouwe hashvergelijking en foutgevallen. Documentatie legt het formaat en de beperkte betekenis van SHA-256 uit. ## Ontwerpbesluiten vóór bouw 1. Welke bestanden vallen onder `documenten`: alleen OciDeck Markdown-documenten en presentaties, of ook PDF/Office/overige bestanden als extern te openen verwijzing? 2. Wordt het dossier als losse manifestfile met relatieve bestandsverwijzingen aangeboden, of ook als draagbaar pakket met gekopieerde bestanden? Welke handeling is expliciet nodig om een pakket te maken? 3. Welke nummeringsvormen zijn nodig naast opeenvolgend `1, 2, 3` (bijvoorbeeld `01`, `A.1` of handmatige nummers)? Hoe worden dubbele nummers gemeld? 4. Mag `Overzicht en documenten in tabbladen` alle stukken standaard openen, of wordt vanaf een grens een keuze/waarschuwing getoond? Leg die grens vast met een prestatietoets. ## Voorgestelde bouwvolgorde 1. Formaatbesluit en dossiermodel met veilige opslag en bytegetrouwe SHA-256. 2. Samenstellen, vriendelijk ordenen/nummeren en de overzichtsweergave. 3. Openkeuze, tabbladnavigatie en terugknop. 4. Controle per stuk en voor alles, statussen en expliciet opnieuw vastleggen. Elke stap krijgt zijn eigen implementatie-issue zodra de vier ontwerpbesluiten zijn genomen; dit issue blijft de product- en acceptatiebron.
Author
Owner

Ontwerpbesluiten en uitvoering in PR #2441:

  • Een dossier is een document met een omslag en inhoudsopgave. Ook een Markdown-presentatie kan als bijlage worden aangewezen.
  • Deze versie ondersteunt .md-documenten en .md-presentaties. PDF/Office vallen buiten de huidige selectie.
  • dossier.json bewaart bronverwijzingen, titels, volgorde, nummers, SHA-256 en controlehistorie; overzicht.md is een leesbare afgeleide. Originele bestanden worden niet gekopieerd of hernoemd. Bronnen binnen de dossiermap krijgen relatieve paden.
  • Nummering begint bij een instelbaar getal en kan per stuk uniek worden overschreven. Dubbelen worden geweigerd.
  • Bij openen kiest de gebruiker alleen overzicht of overzicht met bijlagen in tabbladen. Alles openen toont voortgang en is annuleerbaar; er is geen vaste grens van twintig.
  • Hercontrole leest de bytes op schijf. Een nieuwe referentiehash wordt alleen na bevestiging vastgelegd en de vorige waarde blijft zichtbaar.

Handmatig getest op macOS met drie stukken, waaronder een presentatie: toevoegen, verifiëren, alle tabbladen openen en terugkeren. De volledige projectpoort is lokaal doorlopen; een tijdelijk onbereikbare OSV-dienst slaagde bij herhaling. PR: #2441

Ontwerpbesluiten en uitvoering in PR #2441: - Een dossier is een document met een omslag en inhoudsopgave. Ook een Markdown-presentatie kan als bijlage worden aangewezen. - Deze versie ondersteunt `.md`-documenten en `.md`-presentaties. PDF/Office vallen buiten de huidige selectie. - `dossier.json` bewaart bronverwijzingen, titels, volgorde, nummers, SHA-256 en controlehistorie; `overzicht.md` is een leesbare afgeleide. Originele bestanden worden niet gekopieerd of hernoemd. Bronnen binnen de dossiermap krijgen relatieve paden. - Nummering begint bij een instelbaar getal en kan per stuk uniek worden overschreven. Dubbelen worden geweigerd. - Bij openen kiest de gebruiker alleen overzicht of overzicht met bijlagen in tabbladen. Alles openen toont voortgang en is annuleerbaar; er is geen vaste grens van twintig. - Hercontrole leest de bytes op schijf. Een nieuwe referentiehash wordt alleen na bevestiging vastgelegd en de vorige waarde blijft zichtbaar. Handmatig getest op macOS met drie stukken, waaronder een presentatie: toevoegen, verifiëren, alle tabbladen openen en terugkeren. De volledige projectpoort is lokaal doorlopen; een tijdelijk onbereikbare OSV-dienst slaagde bij herhaling. PR: https://pawprint.vigilis.online/LibreKAT/Ocideck/pulls/2441
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2440
No description provided.