Commons Mineventory experiment

Bron: docs/overdracht.md op GitHub

Overdracht – Commons Mineventory

Stand: versie 0.40.7, 13 november 2026. Voor wie (mens of Claude-sessie) het werk overneemt. Lees daarna, in deze volgorde: CLAUDE.md, het functioneel ontwerp, de backlog en de changelog.

Waar het staat

De interface in het kort

Van links naar rechts, in de volgorde van het werk (sinds 0.29.0):

Kolom Wat Bestanden
Bekeken geopende afbeeldingen met miniatuur; daaronder Opzij gezet (inklapbaar, slepen of prullenbakje; pijl omhoog zet terug) ViewedPanel.vue, HistoryList.vue, state.js
Beeld de viewer (gewone JS, niet herschrijven in Vue) met zoom, Maskers/Kaders/Namen; daaronder de Kleurenlegenda (standaard open, de (i) in de kop) met Alleen deze kaders tonen en Alleen deze maskers tonen: vinkjes met aantallen en Alle · Geen · Omkeren. Kader = status, masker = soort, rand van het masker = wit ViewerPane.vue, viewer/viewer.js, class-colors.js
Beschrijven en vinden AI-suggesties (beschrijving en zoektermen, elk apart opnieuw of weg; beschrijving met de hand aan te passen, met versies), Uit Commons, Zoeken, Aanwijzen of tekenen, CropTool DetectionPanel.vue, PageDescription.vue
Gevonden objecten (uitsneden) Minimale zekerheid; de objecten met een zoekveld en Alle · Geen · Omkeren (genummerd: man 1, man 2; beschreven of nog niet beschreven); daaronder de uitklappers Bulkacties (vier tabbladen) en Bewaren en exporteren (Selectie opslaan, zip, Naar Commons, Bewaartermijnen), standaard dicht ObjectList.vue, CutterApp.vue, BulkDescribeDialog.vue

Afspraken die je niet uit de code haalt

Na het hernoemen van de map

Gedaan op 5-11-2026: stap 1, 3 en 4 (de code staat sinds 0.31.3 op GitHub); stap 2 doet Olaf. Voor de geschiedenis:

Een Claude-sessie hoort bij het mappad; begin na het hernoemen een nieuwe sessie in de nieuwe map (het Claude-geheugen van de oude map was leeg, er gaat niets verloren). Daarna, in deze volgorde:

  1. Python-omgeving opnieuw maken: .venv bevat vaste paden naar de oude map. Verwijder .venv, maak hem opnieuw (py -3.14 -m venv .venv) en installeer (.venv\Scripts\pip install -r requirements.txt). node_modules werkt gewoon door.
  2. .env bijwerken (Olaf; Claude leest .env nooit): BRONCODE_URL en de URL in COMMONS_USER_AGENT naar https://github.com/KBNLwikimedia/commons-mineventory. De User-Agent zonder spatie in de naam: CommonsMineventory/0.1 (…).
  3. Controleren: git -c safe.directory=D:/KB-OPEN/github-repos/commons-mineventory status, pytest, npm test, en de app starten (flask --app app run --debug en npm run dev).
  4. GitHub (Olaf, maakt de repo openbaar): gh repo create KBNLwikimedia/commons-mineventory --public --source . --push. Op 5-11-2026 was die naam nog vrij.
  5. Daarna backlog 12f afvinken. De Toolforge-naam wordt pas bij de deploy (17) nagekeken.

Werkwijze en valkuilen

DETECTIE_MODUS=dummy CACHE_DIR=<tijdelijk>/cache UITVOER_DIR=<tijdelijk>/uitvoer VITE_DEV=uit flask --app app run --port 5055

De dummy vindt altijd iets; "niets gevonden" is daar niet na te bootsen. - Teksten verversen: Olaf draait npm run dev; Vite werkt de code live bij, maar de vertalingen zitten in de pagina en komen pas mee na herladen. Een stijlbestand met hetzelfde versienummer kan in de browsercache blijven (Ctrl+F5). - Geen :class op het element van de viewer (ViewerPane.vue): Vue herschrijft dan bij elke wijziging de hele class-lijst en wist wat de viewer daar zelf zet (filters, vervagen, kruisdraad). De schakelaars zetten hun class met classList.toggle. - Vite en Codex: op Olafs dev-server laadt de CSS van Codex ná app.css, in de build ervoor. Een regel die Codex moet overschrijven, moet daarom specifieker zijn; gelijke specificiteit werkt alleen in de build. Test uiterlijk dus ook op zijn server. - watch en const: een watch of immediate leest zijn bron meteen; staat die bron verderop in <script setup>, dan start de component niet (de viewer bleef zo eens leeg, zonder melding in de console). - Bestanden wijzigen: grote of meervoudige wijzigingen gingen het betrouwbaarst met een klein Python-script (.venv/Scripts/python -I script.py); heredocs in de shell braken op aanhalingstekens. - Git: altijd git -c safe.directory=D:/KB-OPEN/github-repos/commons-mineventory …; niet pushen zonder opdracht. - Commit-routine: versie ophogen in cutter/__init__.py en package.json (dan npm install --package-lock-only), README "Fase 1 is klaar (versie …)" en CLAUDE.md "Klaar (stand …)", de Unreleased-sectie van CHANGELOG.md een versie en datum geven, pytest, npm test en npm run build draaien, en de commit afsluiten met de Co-Authored-By-regel. - GET /objecten kent geen q: zoeken op de server zit alleen in de export (/objecten/export?formaat=json&q=…, antwoord in rijen); de pagina Objecten zoekt in de browser (objectText in facets.js). Houd die drie (lijst naast het beeld in CutterApp.vue, facets.js, _matching in api.py) gelijk. - De dummy kent geen Beeldt af-overeenkomsten: de nagebootste zoektermen (coat of arms, portrait, …) passen niet bij de items van Olafs testbestand; het blok Staat al op Commons is in dummy-modus dus niet te zien. - Grote antwoorden over loopback worden op Olafs machine soms afgekapt (ERR_CONNECTION_RESET); dat ligt niet aan de app. - Projectsite (GitHub Pages): documentatie en uitleg, niet de app (die komt op Toolforge). Bronnen in site/ (index.html, docs.css, build.py); de Action .github/workflows/pages.yml bouwt bij een push naar main die site/, docs/, BACKLOG.md of CHANGELOG.md raakt. Een nieuw document voeg je toe aan DOCS in site/build.py; nieuwe schermafbeeldingen aan docs/screenshots/ en aan SLIDES in site/index.html (met bijschrift in beide talen). Op Windows kan de indexer _site/ vergrendelen; bouw dan naar een andere map (python site/build.py <map>).

Wat openstaat