Skip to content

fix: Bugfix-Sweep – FTS5-Trigger, GUI-Threading, Suche, Summarizer, Transit optional - #2

Merged
lukisch merged 3 commits into
mainfrom
claude/busy-ride-trvb0o
Oct 6, 2026
Merged

lukisch merged 3 commits into
mainfrom
claude/busy-ride-trvb0o

Conversation

@lukisch

@lukisch lukisch commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator

Zusammenfassung

Code-Review mit anschließenden Fixes. Wichtigster Befund: Die FTS5-Delete-Trigger brachen jedes DELETE auf Chunk-Tabellen (SQL logic error) – Re-Ingest geänderter Dateien, index --force, Löschen im Web-Viewer und deduplicate waren dadurch defekt. Außerdem brach tests/test_transit.py die gesamte Test-Collection ab (CI rot), weil sqlite-transit-sync nicht auf PyPI liegt.

Fixes

  • Schema v5: Trigger nutzen DELETE FROM <x>_fts WHERE rowid = old.id; bestehende DBs werden beim Öffnen migriert.
  • Löschen konsistent: erst DB-Transaktion, dann Datei → _Papierkorb (Web-Viewer, deduplicate).
  • GUI: falsche relative Imports (Dokumentliste immer leer), falsches Dokument nach Sortieren, SQLite-Connection aus GUI-Thread in Scan-Threads (jede Datei schlug fehl) → Connections pro Thread, EventBus dispatcht Events aus Worker-Threads in den GUI-Thread.
  • Summarizer: Fehlgeschlagene Chunks → error statt done; verwaiste processing-Einträge werden zurückgesetzt; Kostenschätzung aktualisiert.
  • Suche: FTS5-Syntaxfehler (COVID-19, E-Mail, c++) → quotierte Tokens → LIKE-Fallback; LIKE-Wildcards escaped; Verzeichnisfilter matcht keine Geschwister-Ordner mehr.
  • Ingest: Re-Ingest setzt Summaries/Queue zurück, archived_path-Fallback, UTF-8-BOM, harte 500-Wort-Obergrenze im Chunker.
  • Transit: sqlite-transit-sync optional (TRANSIT_SYNC_AVAILABLE), festbreite UTC-Zeitstempel für Lease-Vergleiche, get_task verändert keine fremde row_factory.
  • Kleinkram: is_active=0, content_hash-Operator-Präzedenz, Config-Deepcopy, zoll_station.py als Modulaufruf, plattformübergreifendes Datei-Öffnen.

Tests

  • python -m pytest tests → 214 passed, 5 skipped (vorher: Collection-Abbruch).
  • 43 neue Regressionstests in tests/test_bugfixes_2026_10.py (37 davon schlagen auf dem alten Stand fehl), neue Lifecycle-Tests in tests/test_transit.py.
  • ruff check .: keine neuen Befunde gegenüber main (bestehende Stil-Befunde unverändert).

Hinweis: Die 5 Sync-Tests laufen nur mit installiertem sqlite-transit-sync (pip install "git+https://github.com/ellmos-ai/sqlite-transit-sync").

🤖 Generated with Claude Code

https://claude.ai/code/session_014VFa8w68q2cEYMqHQqfiH2


Generated by Claude Code

claude added 2 commits October 6, 2026 04:20
tests/test_transit.py brach die gesamte Test-Collection ab, weil
sqlite_transit_sync nicht auf PyPI verfügbar ist (CI rot).

- Import in transit.py optional (TRANSIT_SYNC_AVAILABLE) mit klarer
  ImportError-Meldung in create_knowledge_sync / merge
- iso_timestamp liefert festbreite UTC-Zeitstempel (Mikrosekunden), da
  Leases lexikografisch verglichen werden
- get_task verändert die row_factory der Aufrufer-Connection nicht mehr
- Sync-Tests werden ohne Paket übersprungen; neue Lifecycle-Tests für
  ChunkTaskManager und Konfliktauflösung laufen ohne Paket

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014VFa8w68q2cEYMqHQqfiH2
…ngest

- Schema v5: FTS5-Delete-Trigger brachen jedes DELETE (SQL logic error) –
  Re-Ingest, index --force, Löschen und deduplicate waren defekt; Migration
  für bestehende DBs
- Löschen: erst DB-Transaktion, dann Datei in _Papierkorb
- GUI: falsche relative Imports (leere Dokumentliste), falsches Dokument
  nach Sortierung, SQLite-Connections pro Thread, EventBus dispatcht in den
  GUI-Thread
- Summarizer: fehlgeschlagene Chunks -> status error; verwaiste
  processing-Einträge werden zurückgesetzt; Kostenschätzung aktualisiert
- Suche: FTS5-Syntaxfehler -> quotierte Tokens -> LIKE-Fallback; LIKE- und
  Verzeichnisfilter escaped
- Ingest: Re-Ingest setzt Summaries/Queue zurück, archived_path-Fallback,
  UTF-8-BOM, harte Chunk-Obergrenze
- Kleinkram: is_active=0, content_hash-Präzedenz, Config-Deepcopy,
  zoll_station als Modulaufruf, plattformübergreifendes Datei-Öffnen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014VFa8w68q2cEYMqHQqfiH2
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown

Welcome! 👋 Thanks for your first pull request in this repository.

A maintainer will review it soon. Please make sure:

  • Your changes are tested
  • Documentation is updated if needed
  • The PR description explains what and why

Thanks for contributing!

Aktuelles setuptools lehnt `license = { text = "MIT" }` zusammen mit
`license-files` ab ("project.license must be string"), wodurch bereits
`pip install -e .[test]` in CI scheiterte. Jetzt SPDX-Ausdruck
`license = "MIT"`, setuptools>=77 als Build-Requirement und ohne den
überholten License-Classifier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014VFa8w68q2cEYMqHQqfiH2
@lukisch
lukisch merged commit c3dc7fc into main Oct 6, 2026
7 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