web_companion/library.js:sortRows(rows, columns, options)— clientseitige Spalten-Sortierung als pure-logic-Funktion (DOM-frei). Sortiert numerisch oder perlocaleCompare, null-Werte stets zuletzt, unbekannte Spalte gibt unveränderte Kopie zurück. Sieben neue Tests inweb_companion/tests/library.test.mjs.web_companion/app.js: Spaltensortierung per Klick auf Tabellenkopf — Event-Delegation auf<thead>, Sortierrichtung per Wiederholklick umkehren, Sort-Indikator (↑/↓) im aktiven Spaltenkopf,aria-sort-Attribut gesetzt, Tastatur-Bedienbarkeit (Enter/Leertaste) übertabIndex+keydown-Handler.web_companion/style.css: Stile für klickbare Spaltenköpfe (cursor: pointer, Hover-Hintergrund, Focus-Ring,.sort-indicatorin Akzentfarbe).web_companion/library.js:exportToCsv(columns, rows)— erzeugt RFC-4180-konformes CSV für die aktuell sichtbaren Zeilen (CRLF-Trennung, Blob-Werte als lesbarer Text, Quoting bei Komma/Anführungszeichen/Zeilenumbrüchen, null → leeres Feld). Sechs neue Tests inweb_companion/tests/library.test.mjs.web_companion/: neuer Button „CSV exportieren" im Ergebniszeilen-Panel — lädt die gefilterten sichtbaren Zeilen als<datenbankname>.csvherunter; Button bleibt deaktiviert bis ein Export geladen ist.- German
README_de.mdwith local-first usage, privacy context, comparison table, and SQLiteViewer search phrases. web_companion/: static offline-first viewer forsqliteviewer-export-v1.jsonwith local file import, demo mode, row filtering, metadata cards, LocalStorage restore, manifest, service worker, and Node smoke tests.- Three regression tests in
tests/test_execute_sql.pycovering sort-indicator propagation in search mode, redundant-binding double-sort prevention, and empty-table CSV export. tests/source_platform_smoke.py: headless smoke tests for Linux and macOS source installs — covers module import, export serialization,_build_export_payload, SQL execution, and identifier escaping via fake infrastructure (no display required)..github/workflows/source-platform-smoke.yml: CI matrix forubuntu-latestandmacos-latestrunning the smoke tests on every push/PR tomain.llms.txtwith canonical repository, use cases, key files, discovery phrases, and boundaries for LLM/search crawlers.- Local release bundle workflow documented for the ignored
releases/workspace; public source files stay lightweight. - Application icon support in the Tk window.
- Optional startup argument for opening a database file directly.
RELEASES.mddocuments the local release bundle layout.SQLiteViewer.specis tracked for reproducible PyInstaller builds.- Optional JSON companion export
sqliteviewer-export-v1.jsonwith source metadata, row limits, visible columns, and serialized result rows. EXPORTFORMAT.mddocuments the JSON export contract for desktop-to-web/mobile companion workflows.- Reproducible Windows Store screenshot generation under
_WARTUNG/generate_store_screenshots.py; generated screenshots stay in the ignored localreleases/windowsstore/screenshots/workspace whileREADME/screenshots/main.pngis refreshed for GitHub. - Local WACK notes remain in the ignored
releases/windowsstore/workspace; public root docs now describe only the source-controlled workflow.
- Internal platform plan now separates desktop database inspection from read-only Web/PWA review and keeps Android/iOS as export-first companion targets instead of native SQLiteViewer clones.
- README now links the German guide and expands discovery phrases for
file-bricks/SQLiteViewer, Python/Tkinter SQLite browser searches, and SQLite Viewer Pro. llms.txtnow records the 2026-06-12 marketing/discovery check and broader search/disambiguation notes.- Public docs now describe the export-first PWA path as the implemented mobile/browser companion strategy; raw
.sqliteparsing stays a later optional evaluation step. - README is now English-first with a Start Here table, clearer local-first positioning, search/disambiguation context, and repaired German umlauts.
- README now embeds the existing GUI screenshot from
README/screenshots/main.png. - Repository URLs and community health files now point to
file-bricks/SQLiteViewer. START.batnow forwards command-line arguments and reports missing Python cleanly.- Store listings and Store metadata now reflect the current CSV/JSON export feature set and the active
file-bricks/SQLiteViewerprivacy/support links. - Store listing and screenshot workflow notes now avoid requiring ignored release artifacts in the public repo.
- Community workflows now use
actions/stale@v10andactions/first-interaction@v3with current input names.
tests/source_platform_smoke.pybootstraps the project root intosys.pathbefore the first import, so the documented direct smoke commandpython tests/source_platform_smoke.pynow works outsidepytestinstead of failing withModuleNotFoundError: SQLiteViewer.- Web Companion zeigt den vollständigen lokalen
database_pathnicht mehr in der sichtbaren Shell-Zusammenfassung; dort stehen jetzt Datenbankname und ein Hinweis, dass der volle Pfad im Export ausgeblendet wird. - Exportaktionen zeigen jetzt klarer ihren aktiven Kontext an: Tabellenansicht und SQL-Ergebnis bekommen eigene CSV-/JSON-Beschriftungen, und leere Exportzustände sind direkt deaktiviert statt erst in einen Warn-Dialog zu laufen. Regressionen ergänzt in
tests/test_execute_sql.py. - SQL-Editor und Daten-Tab halten ihren Export-/View-State jetzt getrennt:
execute_sql()schreibt Query-Ergebnisse nicht mehr in den Data-Tab-State, sondern in eigenesql_result_*-Felder; Exporte wählen abhängig vom aktiven Kontext den passenden Snapshot. Regressionen ergänzt intests/test_execute_sql.pyundtests/source_platform_smoke.py. _search_datanow fetches column names viaPRAGMA table_info()instead of relying onself.current_columns. After running a SQL query in the SQL Editor,current_columnsreflected the query result columns rather than the actual table columns, causing a silentSuchfehler: no such column: ...whenever the search box was used afterwards. Three regression tests added (tests/test_bugsweep_20260627.py).- Web companion metadata cards now render imported export metadata as inert text instead of interpolating it into
innerHTML. - Sorting an active table search now keeps the filtered result set and export context intact instead of jumping back to the full unfiltered table.
- Toolbar now uses a visible
Suche:label instead of an icon-only search hint, and the refresh action is labeled consistently asAktualisierenin the German UI. - SQL Editor now detects result-returning statements via
cursor.description, so queries with leading comments are rendered correctly instead of being treated as DML. - SQL Editor now refreshes the currently selected table after data-changing statements instead of jumping back to the first table in the database.
- Search now escapes
%,_, and\correctly so literal LIKE searches do not fail on wildcard-containing terms. - Opening a database now only closes the current session after the new read-only connection succeeds, so failed open attempts keep the existing database in place.
- Sort indicator (↑/↓) was absent from column headings when viewing a search result —
_search_datanow adds the indicator to column headings when a sort column is active. - Double sort triggered by a redundant
<Button-1>binding combined with the Treeviewheading command— removed the explicit binding;heading commandalone handles sorting. export_csvblocked empty-table exports with a "no data" warning — now exports a header-only file consistently withexport_json.
- SQL Editor with syntax highlighting and query execution
- Schema view with CREATE TABLE inspection
- Full-text search across all columns
- CSV export functionality
- Column sorting (click headers)
- Keyboard shortcuts (Ctrl+O, Ctrl+F, Ctrl+E, F5, F9)
- Dark theme for code editors
- Table info display (row count, indexes, foreign keys)
- Complete rewrite from basic viewer to full-featured browser
- Upgraded UI with notebook tabs (Data, Schema, SQL)
- Improved identifier escaping for safe SQL operations
- Initial release
- Basic table browser with Treeview
- Database open dialog
- Row limit control
- Refresh functionality