Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,22 @@ Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.1.0/).

## [Unreleased]

### Marketing, Discoverability, README-Architektur & Sequenzdiagramme (Pfad B) - 2026-11-07
- **International README Badge Parity (EN, DE, ES, JA, RU, ZH)**:
- Verifizierter Testnachweis-Badge (`tests-204 passed`) auf Basis realer lokaler Messergebnisse in alle 6 Sprachversionen integriert.
- Zero-Core-Dependency-Badge (`core deps: zero (stdlib)`) und Local-First-Architektur-Badge (`storage: local-first`) synchron über alle Sprachausgaben ergänzt.
- **Sequenzdiagramm-Erweiterung (README.md & README_de.md)**:
- Abschnitt 3 um den Lebenszyklus des lokalen GUI-Edit-Servers (`edit_server.py`) auf `127.0.0.1` erweitert (Visualisierung der Host-Header-Validierung, PBKDF2-Sitzungsprüfung, atomares Schreiben/Rollback, Soft-Delete-Papierkorb via `wikistub_seed_trash.json` und automatischer PWA-Index-Neuerstellung).
- **PWA-Landing-Page & SEO-Metadaten (`web_publisher/index.html`)**:
- Vollständige Open-Graph- (`og:title`, `og:description`, `og:type`, `og:url`, `og:image`) und Twitter-Card-Metadaten (`twitter:card`, `twitter:title`, `twitter:description`, `twitter:image`) für optimierte Social-Previews und Suchmaschinen-Auffindbarkeit implementiert.
- Strukturierte Meta-Description und Keywords zur Präzisierung des RAG- und Wissensbasis-Profils hinzugefügt.
- **Community Health & Umlautdisziplin**:
- Deutsche Umlautkorrektur in `CODE_OF_CONDUCT.md` ("Geschlechtsidentität", "sexueller Identität") durchgeführt.
- **Vertragstests & Testsuiten-Erweiterung (`tests/test_metadata.py` & `web_publisher/tests/publisher.test.mjs`)**:
- Neue Vertragstests `test_readme_sequence_diagram_crud_edit_server_parity()` und `test_pwa_landing_page_seo_metadata()` in `test_metadata.py` angelegt.
- Testsuite `test_all_readme_international_badge_parity()` um Testnachweis- und Local-First-Badges über alle 6 Sprachfassungen erweitert.
- Node.js-Testsuite in `publisher.test.mjs` um Überprüfung der SEO- und Open-Graph-Metadaten ergänzt (46/46 PWA-Tests grün).

### Repository-Hygiene, CI-Matrix-Härtung, PEP 621 Metadaten & Vertragstests (Pfad A) - 2026-11-02
- **Mitgelieferter Produkt-Skill & LLM-Pointer (P-022 / GITHUB-POLICY)**:
- `SKILL.md` als softwarespezifische Nutzungsanleitung für Agenten im Repo-Root angelegt (beschreibt Aufgaben, Voraussetzungen, CLI-Aufrufe, Verifikation und Grenzen von WikiStub-Seed).
Expand Down
4 changes: 2 additions & 2 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
Wir als Mitglieder, Beitragende und Leitende verpflichten uns, die Teilnahme an unserer
Community zu einer belästigungsfreien Erfahrung für alle zu machen, unabhängig von
Alter, Körpergröße, sichtbarer oder unsichtbarer Behinderung, ethnischer Zugehörigkeit,
Geschlechtsmerkmalen, Geschlechtsidentitaet und -ausdruck, Erfahrungsgrad, Bildung,
Geschlechtsmerkmalen, Geschlechtsidentität und -ausdruck, Erfahrungsgrad, Bildung,
sozioökonomischem Status, Nationalität, persönlichem Aussehen, Herkunft, Religion
oder sexueller Identitaet und Orientierung.
oder sexueller Identität und Orientierung.

### Unsere Standards

Expand Down
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
WikiStub-Seed is a knowledge-stub seed library, not a wiki.

[![WikiStub-Seed test gates](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml/badge.svg)](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml)
![Tests](https://img.shields.io/badge/tests-204%20passed-brightgreen)
[![Version](https://img.shields.io/badge/version-1.1.12-blue.svg)](pyproject.toml)
[![Ecosystem: dev-bricks](https://img.shields.io/badge/ecosystem-dev--bricks-blue.svg)](https://github.com/dev-bricks)
[![Umbrella: open-bricks](https://img.shields.io/badge/umbrella-open--bricks-indigo.svg)](https://github.com/open-bricks)
Expand All @@ -17,6 +18,8 @@ WikiStub-Seed is a knowledge-stub seed library, not a wiki.
![Format](https://img.shields.io/badge/format-JSON-green)
![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-yellow)
![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)
![Core Dependencies](https://img.shields.io/badge/core%20deps-zero%20(stdlib)-success)
![Architecture](https://img.shields.io/badge/architecture-local--first-blue)
[![Code Style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
[![Attribution Notice](https://img.shields.io/badge/attribution-NOTICE-informational.svg)](NOTICE)
[![Marketing Log](https://img.shields.io/badge/marketing%20log-active-blue.svg)](MARKETING-LOG.txt)
Expand Down Expand Up @@ -117,6 +120,9 @@ sequenceDiagram
autonumber
actor User as Developer / AI Agent
participant CLI as wikistub_seed_cli / pipeline
participant Server as edit_server (127.0.0.1)
participant Auth as wiki_auth (PBKDF2)
participant Store as wiki_store (CRUD + Trash)
participant Data as wikistub_seed.json (630 Stubs)
participant Builder as web_publisher/_build.py
participant PWA as Static PWA / ServiceWorker
Expand All @@ -132,6 +138,18 @@ sequenceDiagram
CLI-->>User: Write structured Markdown to output/
end

opt Local GUI Edit Server & Soft-Delete Trash (127.0.0.1)
User->>Server: HTTP POST /api/entry (JSON payload)
Server->>Auth: Verify Host header & PBKDF2 session cookie
Auth-->>Server: Permission verified
Server->>Store: Atomic create / update / soft-delete
Store->>Data: Write dataset with backup rollback
Store-->>Server: Operation confirmed
Server->>Builder: Trigger _build.py re-index
Builder-->>Server: web_publisher data updated
Server-->>User: HTTP 200 / 201 Response
end

opt Build & Serve Local PWA
User->>Builder: Run _build.py
Builder->>Data: Slices & indexes stubs
Expand Down
20 changes: 19 additions & 1 deletion README_de.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
WikiStub-Seed ist eine Wissens-Stub-Seed-Bibliothek, kein Wiki.

[![WikiStub-Seed test gates](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml/badge.svg)](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml)
![Tests](https://img.shields.io/badge/tests-204%20passed-brightgreen)
[![Version](https://img.shields.io/badge/version-1.1.12-blue.svg)](pyproject.toml)
[![Ecosystem: dev-bricks](https://img.shields.io/badge/ecosystem-dev--bricks-blue.svg)](https://github.com/dev-bricks)
[![Umbrella: open-bricks](https://img.shields.io/badge/umbrella-open--bricks-indigo.svg)](https://github.com/open-bricks)
Expand All @@ -17,6 +18,8 @@ WikiStub-Seed ist eine Wissens-Stub-Seed-Bibliothek, kein Wiki.
![Format](https://img.shields.io/badge/format-JSON-green)
![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-yellow)
![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)
![Core Dependencies](https://img.shields.io/badge/core%20deps-zero%20(stdlib)-success)
![Architecture](https://img.shields.io/badge/architecture-local--first-blue)
[![Code Style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
[![Attribution Notice](https://img.shields.io/badge/attribution-NOTICE-informational.svg)](NOTICE)
[![Marketing Log](https://img.shields.io/badge/marketing%20log-active-blue.svg)](MARKETING-LOG.txt)
Expand Down Expand Up @@ -117,6 +120,9 @@ sequenceDiagram
autonumber
actor User as Entwickler / KI-Agent
participant CLI as wikistub_seed_cli / pipeline
participant Server as edit_server (127.0.0.1)
participant Auth as wiki_auth (PBKDF2)
participant Store as wiki_store (CRUD + Papierkorb)
participant Data as wikistub_seed.json (630 Stubs)
participant Builder as web_publisher/_build.py
participant PWA as Statische PWA / ServiceWorker
Expand All @@ -132,11 +138,23 @@ sequenceDiagram
CLI-->>User: Schreibe strukturiertes Markdown nach output/
end

opt Lokaler GUI-Edit-Server & Soft-Delete Papierkorb (127.0.0.1)
User->>Server: HTTP POST /api/entry (JSON-Payload)
Server->>Auth: Host-Header & PBKDF2-Sitzungscookie prüfen
Auth-->>Server: Berechtigung bestätigt
Server->>Store: Atomares Erstellen / Aktualisieren / Soft-Delete
Store->>Data: Datensatz mit Backup-Rollback speichern
Store-->>Server: Vorgang bestätigt
Server->>Builder: _build.py Neuindizierung auslösen
Builder-->>Server: web_publisher Daten aktualisiert
Server-->>User: HTTP 200 / 201 Antwort
end

opt Lokale PWA bauen & nutzen
User->>Builder: Ausführen von _build.py
Builder->>Data: Zerlegt & indiziert Stubs
Builder-->>PWA: Erzeugt data/wikistub_seed.json & search-index.json
PWA-->>User: Suche in zwischengespeicherten Daten mit gewählter Datensatzsprache
PWA-->>User: Suche in zwischengespeicherten Daten mit gewählter Datensatzsprache
end
```

Expand Down
3 changes: 3 additions & 0 deletions README_es.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
WikiStub-Seed es una biblioteca semilla de stubs de conocimiento, no un wiki.

[![WikiStub-Seed test gates](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml/badge.svg)](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml)
![Tests](https://img.shields.io/badge/tests-204%20passed-brightgreen)
[![Version](https://img.shields.io/badge/version-1.1.12-blue.svg)](pyproject.toml)
[![Ecosystem: dev-bricks](https://img.shields.io/badge/ecosystem-dev--bricks-blue.svg)](https://github.com/dev-bricks)
[![Umbrella: open-bricks](https://img.shields.io/badge/umbrella-open--bricks-indigo.svg)](https://github.com/open-bricks)
Expand All @@ -17,6 +18,8 @@ WikiStub-Seed es una biblioteca semilla de stubs de conocimiento, no un wiki.
![Format](https://img.shields.io/badge/format-JSON-green)
![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-yellow)
![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)
![Core Dependencies](https://img.shields.io/badge/core%20deps-zero%20(stdlib)-success)
![Architecture](https://img.shields.io/badge/architecture-local--first-blue)
[![Code Style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
[![Aviso de atribución](https://img.shields.io/badge/attribution-NOTICE-informational.svg)](NOTICE)
[![Marketing Log](https://img.shields.io/badge/marketing%20log-active-blue.svg)](MARKETING-LOG.txt)
Expand Down
3 changes: 3 additions & 0 deletions README_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
WikiStub-Seedはナレッジスタブのシードライブラリであり、Wikiではありません。

[![WikiStub-Seed test gates](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml/badge.svg)](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml)
![Tests](https://img.shields.io/badge/tests-204%20passed-brightgreen)
[![Version](https://img.shields.io/badge/version-1.1.12-blue.svg)](pyproject.toml)
[![Ecosystem: dev-bricks](https://img.shields.io/badge/ecosystem-dev--bricks-blue.svg)](https://github.com/dev-bricks)
[![Umbrella: open-bricks](https://img.shields.io/badge/umbrella-open--bricks-indigo.svg)](https://github.com/open-bricks)
Expand All @@ -17,6 +18,8 @@ WikiStub-Seedはナレッジスタブのシードライブラリであり、Wiki
![Format](https://img.shields.io/badge/format-JSON-green)
![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-yellow)
![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)
![Core Dependencies](https://img.shields.io/badge/core%20deps-zero%20(stdlib)-success)
![Architecture](https://img.shields.io/badge/architecture-local--first-blue)
[![Code Style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
[![Attribution Notice](https://img.shields.io/badge/attribution-NOTICE-informational.svg)](NOTICE)
[![Marketing Log](https://img.shields.io/badge/marketing%20log-active-blue.svg)](MARKETING-LOG.txt)
Expand Down
3 changes: 3 additions & 0 deletions README_ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
WikiStub-Seed — это начальная библиотека заглушек знаний, не вики.

[![WikiStub-Seed test gates](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml/badge.svg)](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml)
![Tests](https://img.shields.io/badge/tests-204%20passed-brightgreen)
[![Version](https://img.shields.io/badge/version-1.1.12-blue.svg)](pyproject.toml)
[![Ecosystem: dev-bricks](https://img.shields.io/badge/ecosystem-dev--bricks-blue.svg)](https://github.com/dev-bricks)
[![Umbrella: open-bricks](https://img.shields.io/badge/umbrella-open--bricks-indigo.svg)](https://github.com/open-bricks)
Expand All @@ -17,6 +18,8 @@ WikiStub-Seed — это начальная библиотека заглуше
![Format](https://img.shields.io/badge/format-JSON-green)
![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-yellow)
![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)
![Core Dependencies](https://img.shields.io/badge/core%20deps-zero%20(stdlib)-success)
![Architecture](https://img.shields.io/badge/architecture-local--first-blue)
[![Code Style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
[![Attribution Notice](https://img.shields.io/badge/attribution-NOTICE-informational.svg)](NOTICE)
[![Marketing Log](https://img.shields.io/badge/marketing%20log-active-blue.svg)](MARKETING-LOG.txt)
Expand Down
3 changes: 3 additions & 0 deletions README_zh-Hans.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
WikiStub-Seed 是一个知识存根种子库,而非 Wiki。

[![WikiStub-Seed test gates](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml/badge.svg)](https://github.com/dev-bricks/WikiStub-Seed/actions/workflows/tests.yml)
![Tests](https://img.shields.io/badge/tests-204%20passed-brightgreen)
[![Version](https://img.shields.io/badge/version-1.1.12-blue.svg)](pyproject.toml)
[![Ecosystem: dev-bricks](https://img.shields.io/badge/ecosystem-dev--bricks-blue.svg)](https://github.com/dev-bricks)
[![Umbrella: open-bricks](https://img.shields.io/badge/umbrella-open--bricks-indigo.svg)](https://github.com/open-bricks)
Expand All @@ -17,6 +18,8 @@ WikiStub-Seed 是一个知识存根种子库,而非 Wiki。
![Format](https://img.shields.io/badge/format-JSON-green)
![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-yellow)
![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)
![Core Dependencies](https://img.shields.io/badge/core%20deps-zero%20(stdlib)-success)
![Architecture](https://img.shields.io/badge/architecture-local--first-blue)
[![Code Style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
[![Attribution Notice](https://img.shields.io/badge/attribution-NOTICE-informational.svg)](NOTICE)
[![Marketing Log](https://img.shields.io/badge/marketing%20log-active-blue.svg)](MARKETING-LOG.txt)
Expand Down
35 changes: 35 additions & 0 deletions tests/test_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -621,6 +621,41 @@ def test_all_readme_international_badge_parity():
assert "version-1.1.12" in content, f"version badge missing in {rname}"
assert "dev--bricks" in content, f"dev-bricks ecosystem badge missing in {rname}"
assert "open--bricks" in content, f"open-bricks umbrella badge missing in {rname}"
assert "tests-204%20passed" in content, f"test count badge missing in {rname}"
assert "core%20deps-zero%20(stdlib)" in content, f"core deps badge missing in {rname}"
assert "architecture-local--first" in content, f"local-first architecture badge missing in {rname}"


def test_readme_sequence_diagram_crud_edit_server_parity():
"""Verify both English and German READMEs feature the Local GUI Edit Server sequence block."""
readme_en = (PROJECT_ROOT / "README.md").read_text(encoding="utf-8")
readme_de = (PROJECT_ROOT / "README_de.md").read_text(encoding="utf-8")

assert "edit_server (127.0.0.1)" in readme_en
assert "wiki_auth (PBKDF2)" in readme_en
assert "wiki_store (CRUD + Trash)" in readme_en
assert "opt Local GUI Edit Server & Soft-Delete Trash (127.0.0.1)" in readme_en

assert "edit_server (127.0.0.1)" in readme_de
assert "wiki_auth (PBKDF2)" in readme_de
assert "wiki_store (CRUD + Papierkorb)" in readme_de
assert "opt Lokaler GUI-Edit-Server & Soft-Delete Papierkorb (127.0.0.1)" in readme_de


def test_pwa_landing_page_seo_metadata():
"""Verify web_publisher/index.html includes complete SEO, Open Graph and Twitter Card tags."""
index_html = (PROJECT_ROOT / "web_publisher" / "index.html").read_text(encoding="utf-8")
assert '<meta name="description"' in index_html
assert '<meta name="keywords"' in index_html
assert '<meta property="og:title"' in index_html
assert '<meta property="og:description"' in index_html
assert '<meta property="og:type"' in index_html
assert '<meta property="og:url"' in index_html
assert '<meta property="og:image"' in index_html
assert '<meta name="twitter:card"' in index_html
assert '<meta name="twitter:title"' in index_html
assert '<meta name="twitter:description"' in index_html
assert '<meta name="twitter:image"' in index_html


def test_product_skill_and_llm_pointer():
Expand Down
11 changes: 11 additions & 0 deletions web_publisher/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@
<meta name="apple-mobile-web-app-title" content="WikiStub-Seed">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<title>WikiStub-Seed — Wissenschaftliches Lexikon</title>
<meta name="description" content="Local-first multilingual JSON knowledge-stub framework with 630+ stubs across 12 domains for AI research, documentation, RAG and LLM workflows.">
<meta name="keywords" content="WikiStub-Seed, knowledge-base, json, multilingual, ontology, rag, llm, local-first, python, pwa">
<meta property="og:title" content="WikiStub-Seed — Multilingual Knowledge-Stub Framework">
<meta property="og:description" content="630 curated knowledge stubs across 12 domains in DE, EN, ES, ZH, JA, RU. Local-first RAG and documentation scaffold.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://dev-bricks.github.io/WikiStub-Seed/">
<meta property="og:image" content="./icons/Icon-512.png">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="WikiStub-Seed — Multilingual Knowledge-Stub Framework">
<meta name="twitter:description" content="Local-first multilingual JSON knowledge-stub framework with 630+ stubs for AI research, documentation, and RAG.">
<meta name="twitter:image" content="./icons/Icon-192.png">
<link rel="manifest" href="./manifest.webmanifest">
<link rel="icon" href="./icons/Icon-192.png" type="image/png">
<link rel="apple-touch-icon" sizes="180x180" href="./icons/apple-touch-icon-180.png">
Expand Down
10 changes: 10 additions & 0 deletions web_publisher/tests/publisher.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,16 @@ describe("index.html", () => {
}
assert.ok(html.includes('aria-label="Sprache auswählen"'));
});
it("enthält SEO-, Open-Graph- und Twitter-Card-Metadaten", () => {
html = html || readText("index.html");
assert.ok(html.includes('name="description"'), "meta description fehlt");
assert.ok(html.includes('name="keywords"'), "meta keywords fehlt");
assert.ok(html.includes('property="og:title"'), "og:title fehlt");
assert.ok(html.includes('property="og:description"'), "og:description fehlt");
assert.ok(html.includes('property="og:type"'), "og:type fehlt");
assert.ok(html.includes('name="twitter:card"'), "twitter:card fehlt");
assert.ok(html.includes('name="twitter:title"'), "twitter:title fehlt");
});
});

// ── 6: sw.js ist in ASSETS vollständig ───────────────────────────────────────
Expand Down
Loading