Jens Reinemann
c16c9fff97
chore: add resource-import skill + book import scripts + server docs update
2026-05-19 22:20:04 +02:00
Jens Reinemann
06fa017c04
chore: update generaltest_admin_message.cpython-313.pyc, receive_admin_messages.cpython-313.pyc, send_admin_messages.cpython-313.pyc
2026-05-18 18:04:50 +02:00
Jens Reinemann
6fd8528577
feat(admin-message): simplify scripts, add inbox route, fix notification chat switch
2026-05-18 17:45:19 +02:00
Jens Reinemann
cd8290098c
chore: remove accidental pycache artifact
2026-05-18 16:14:20 +02:00
Jens Reinemann
65913fa3b5
feat(server): token-only admin message API with sender/receiver usernames
2026-05-18 16:13:38 +02:00
Jens Reinemann
e3bcddac70
chore: update publish tooling and Android messaging integration
2026-05-18 15:13:49 +02:00
Jens Reinemann
cc8bbc3111
docs(knowledge-conduit): update Concept + SKILL
2026-05-18 13:22:08 +02:00
Jens Reinemann
f93b4d0b72
fix(docs): Mermaid-Diagramme in Concept.md verbessern
...
- Emojis aus Mermaid-Nodes entfernt (verursachten Fragezeichen)
- Pipeline-Diagramm vereinfacht (single flowchart statt verschachtelter Subgraphs)
- Dateistruktur: Subgraph-Labels gekuerzt damit Text nicht verdeckt wird
2026-05-18 13:03:13 +02:00
Jens Reinemann
bfa1f2b649
rename: Genome Engine → Knowledge Conduit
...
Gesamtes System umbenannt:
- .github/genome/ → .github/knowledge-conduit/
- .github/skills/genome/ → .github/skills/knowledge-conduit/
- genome-extract.py → kc-extract.py
- genome.prompt.md → knowledge-conduit.prompt.md
- genome-distill.prompt.md → kc-distill.prompt.md
- genome-propagate.prompt.md → kc-transfer.prompt.md
- Concept Genome Engine.md → Concept.md
- Alle internen Referenzen aktualisiert
- .gitignore aktualisiert
2026-05-18 13:01:02 +02:00
Jens Reinemann
ddf9272dda
refactor(genome): Terminologie vereinheitlichen – Trait→Capability, Mutation→Improvement, Growth Vector→Insight, Propagation→Transfer
...
Alle Genome-Engine-Dateien auf lernbasierte Begriffe umgestellt:
- Concept Doc: komplett überarbeitet mit Mermaid-Diagrammen
- genome.prompt.md: neue Dateinamen + Begriffe
- genome-distill.prompt.md: Improvements/Insights statt Mutations/Vectors
- genome-propagate.prompt.md: Transfer statt Propagation, Capability statt Trait
- genome-extract.py: Output-Dateiname + Ausgabetext aktualisiert
- SKILL.md: Beschreibung + Dateitabelle aktualisiert
2026-05-18 12:46:39 +02:00
Jens Reinemann
587c7c5f14
chore(genome): update SKILL.md
2026-05-18 12:33:32 +02:00
Jens Reinemann
ad0945ec3c
feat(ui): replace filter chips with BottomSheet + sort options
...
- Filter button with badge next to search bar
- BottomSheet with filter dropdowns (Kategorie, Lagerort, Ablauf)
- Sort options: Name, Ablaufdatum, Menge (asc/desc)
- 'Alle zurücksetzen' button to clear filters + sort
- docs(genome): Konzept nach .github/genome/ verschoben
2026-05-18 12:27:28 +02:00
Jens Reinemann
d59663a2fa
docs(genome): Konzept aktualisiert + Mermaid-Diagramme, Inkonsistenzen behoben
...
- genome-engine.md: Script-Name, Pfade, Scope korrigiert, Mermaid-Visualisierungen
- genome-extract.py: dynamisches Pattern statt hardcoded kotlin-conventions
- SKILL.md: vollständige Dateiliste mit korrekten Pfaden
- genome.prompt.md: Referenz auf Konzept-Dokument korrigiert
2026-05-18 12:16:23 +02:00
Jens Reinemann
39956cc7d9
feat(publish): Python-basierter publish-apk Workflow
2026-05-18 12:08:12 +02:00
Jens Reinemann
23e0a47967
fix(publish): robustes Error-Handling in publish-apk.ps1
...
- Pre-Checks vor jeder Dateiänderung (Token, Regex-Validierung, SSH-Agent)
- Rollback: build.gradle.kts wird bei Build- oder Upload-Fehler zurückgesetzt
- SCP/SSH mit ConnectTimeout (kein ewiges Hängen bei VPS-Ausfall)
- API-Call mit Retry (2 Versuche, 3s Pause) + Recovery-Hinweis
- Verify + Git: non-fatal (nur Warnung, kein Abbruch)
- versionCode-Validierung: neuer Code muss > aktueller sein
- Set-StrictMode -Version Latest
2026-05-18 11:38:01 +02:00
Jens Reinemann
76ad50e3aa
refactor(publish): publish-apk.ps1 übernimmt vollständigen Deploy-Workflow
...
- publish-apk.ps1: Version-Bump, Build, SCP, API, Verify, git commit/push
(alle Parameter optional – Standalone-Nutzung ohne Copilot möglich)
- publish.prompt.md: vereinfacht (kein manueller Version-Bump mehr nötig)
- SKILL.md: Parameter-Tabelle aktualisiert
- deploy.ps1 im Root entfernt (Logik lebt jetzt im Skill)
2026-05-18 11:34:42 +02:00
Jens Reinemann
301d60aea4
chore: lokales deploy.ps1 statt GitHub Actions
...
- deploy.ps1: ein Befehl für vollständigen Release-Workflow
(version bump + build + SCP + API + git commit/push)
- android-ci.yml entfernt (kein GitHub-Quota-Verbrauch mehr)
- BOLLWERK_ADMIN_TOKEN muss als Env-Var gesetzt sein
2026-05-18 11:29:47 +02:00
Jens Reinemann
ca1680b3a2
fix(genome): Distillation-Prompt schärfen – Specialized-Definition + Anti-Patterns
...
- Specialized klar abgegrenzt: nur konkrete Server-Deployments, Renames, Seeding
- 5 häufige Distillation-Fehler dokumentiert (member-added ignorieren, nur Anfang lesen, etc.)
- Erweiterte Evolutions-Muster (GPU-Hardening, Hot-Reload, API statt Restart)
- Zusätzliche Sanitization-Regeln (Server-IPs, Package-Namen)
- Erwartete Conversion-Rate: 15-30% als Orientierung
2026-05-18 11:23:56 +02:00
Jens Reinemann
bb578c5076
chore: version bump 1.6 (7) -> 1.7 (8), CI Deploy-Workflow redesign
...
- Version 1.7 (versionCode 8) deployed auf bollwerk.online
- android-ci.yml: nur workflow_dispatch, kein auto-Trigger
- Auto-Versionierung: versionCode wird im CI hochgezählt
- CI deployed direkt auf VPS via SCP + API-Call
- VPS: BOLLWERK_ADMIN_TOKEN konfiguriert (einmalig)
Benötigte Secrets in GitHub: BOLLWERK_ADMIN_TOKEN, VPS_SSH_PRIVATE_KEY
2026-05-18 11:09:26 +02:00
Jens Reinemann
5e73eccce6
chore(genome): alle genome-prompts auf Claude Opus 4.6 umgestellt
2026-05-18 10:55:53 +02:00
Jens Reinemann
e52f041d31
feat(genome): agent fragt immer nach Quell-Repo, Zeitraum und Ziel-Repo
2026-05-18 10:44:41 +02:00
Jens Reinemann
7dfdb6e505
chore(genome): formatting fixes (whitespace/table alignment)
2026-05-18 10:17:43 +02:00
Jens Reinemann
2071d758b5
fix(genome): improve distillation precision + propagation safety
...
genome-distill.prompt.md:
- Warnung vor versteckten Evolutions in Multi-Change-Commits
- Anleitung: Commit-Message ignorieren, jeden Hunk einzeln prüfen
- Rename-Churn-Erkennung (A→B→A = Specialized)
- Häufige versteckte Evolutions-Muster dokumentiert
- Analyse-Bericht am Ende mit Churn-Counter
genome-propagate.prompt.md:
- Neue Traits: immer einzeln vom User bestätigen lassen
- Nie automatisch neue Traits anlegen ohne explizite Bestätigung
2026-05-18 10:14:54 +02:00
Jens Reinemann
7ccd2dc1fd
refactor(genome): restructure as skill + prompt verbund
...
- Skill: .github/skills/genome/ (SKILL.md + genome-extract.py)
- Router: .github/prompts/genome.prompt.md (orchestriert alle 3 Phasen)
- Sub-Prompts: genome-distill.prompt.md, genome-propagate.prompt.md
- Output: .github/genome/output/ (gitignored)
Aufruf: /genome → fragt Quell-Repo + Zeitspanne, führt
Extraction → Distillation → Propagation durch.
2026-05-18 09:59:59 +02:00
Jens Reinemann
9cc69678e7
feat(genome): Phase 3 - Propagation Prompt
...
Matched Growth Vectors auf Ziel-Genome, generiert konkrete Patches
als Checkliste (Critical=an, Evolution≥7=an, <7=aus).
User wählt aus, Agent wendet Patches an.
2026-05-18 09:52:50 +02:00
Jens Reinemann
6318b0efe5
feat(genome): Phase 2 - Distillation Prompt
...
Klassifiziert Mutations (Critical/Evolution/Specialized),
scored Übertragungswert (1-10), sanitized sensitive Daten,
filtert projektspezifische Änderungen heraus.
2026-05-18 09:51:49 +02:00
Jens Reinemann
10cb474906
refactor(genome): rewrite extraction in Python for proper UTF-8 support
...
PowerShell auf Windows hat Encoding-Probleme mit Git-Output (Umlaute).
Python 3 handhabt UTF-8 nativ korrekt.
2026-05-18 09:49:37 +02:00
Jens Reinemann
8e75798507
feat(genome): Phase 1 - Extraction Script
...
Implementiert genome-extract.ps1:
- Trait-Erkennung (Skills/Agents/Prompts/Instructions)
- Verbund-Erkennung für Prompt-Router + Sub-Prompts
- Git-Log-Scanning mit Zeitspanne
- Mutation-Typ-Klassifizierung (content-change/member-added/member-removed)
- Strukturierte Markdown-Ausgabe mit Diffs
2026-05-18 09:32:57 +02:00
Jens Reinemann
5a26d6a85e
refactor: rename workflow-*.prompt.md → nextstep-*.prompt.md
...
Namenskonvention für Genome Engine Verbund-Erkennung:
Router <name>.prompt.md + Sub-Prompts <name>-*.prompt.md
ermöglicht rein pfadbasierte Trait-Zuordnung ohne Content-Parsing.
2026-05-18 09:26:36 +02:00
Jens Reinemann
01a6d911ec
feat(server): add POST /api/admin/version endpoint for APK deploy without restart
...
- Add VersionStore that persists versionCode/versionName to data/version.json
- Add POST /api/admin/version secured by BOLLWERK_ADMIN_TOKEN bearer auth
- GET /api/version now reads from VersionStore (fallback to env-vars)
- Update publish-apk.ps1 to use API call instead of SSH+sed+restart
- Update publish SKILL.md and vps-deploy SKILL.md documentation
Closes #100
2026-05-18 08:40:31 +02:00
Jens Reinemann
09777238c9
docs: krisenvorrat -> bollwerk in allen Skill- und Doku-Dateien
...
/opt/krisenvorrat/ ist veraltet. Korrekt: /opt/bollwerk/
Regel jetzt auch in copilot-instructions.md festgehalten.
2026-05-18 00:28:40 +02:00
Jens Reinemann
9631ec9a92
chore: ungestagede Aenderungen und neue Docs committen
2026-05-17 22:51:07 +02:00
Jens Reinemann
045a4b7674
feat: Migration-Safety – Room v7, AutoMigration, Flyway, kein fallbackToDestructiveMigration ( #99 )
...
- fallbackToDestructiveMigration() aus DatabaseModule entfernt
- BollwerkDatabase auf Version 7 gebumpt
- AutoMigration(from=5, to=6) und (from=6, to=7) definiert
- MigrationTestHelper-Test migrate6To7_preservesData implementiert
- 7.json Schema-Export generiert
- Server: Flyway 9.22.3 integriert (baselineOnMigrate=true)
- V1__initial_schema.sql + V2__cleanup_user_id.sql angelegt
- Skill android-db-migration erstellt
- versionCode 5 / versionName 1.4
2026-05-17 21:17:24 +02:00
Jens Reinemann
3d7c01cef5
feat(update): AlertDialog bei verfuegbarem Update anzeigen
...
- AlertDialog in MainScreen zeigt verfuegbare Version mit Bestaetigung
- UpdateBanner blendet bei UpdateStatus.Available aus (Dialog uebernimmt)
- FEATURE_CAMERA_ENABLED temporaer deaktiviert
fix(server): Logo-Pfad und statische Ressourcen bereinigen
- /res-Route fuer classpath-Assets (logo.png etc.) hinzugefuegt
- Logo-Pfad von /static/logo.png auf /res/logo.png korrigiert
- Build-Nummer aus Versionsanzeige auf der Homepage entfernt
ci: GitHub Actions Workflow fuer Swift-Tests hinzugefuegt
style: Tabellenformatierung im Code-Reviewer-Agenten bereinigt
2026-05-17 20:52:47 +02:00
Jens Reinemann
152f484d4f
chore: remove Swift/iOS remnants
...
- Delete .github/workflows/ci.yml (Swift CI on macOS)
- Remove 'Swift Code Reviewer' agent from code-reviewer.agent.md
- Remove 'migration' label (C# → Swift) from gh-tickets SKILL
2026-05-17 19:00:31 +02:00
Jens Reinemann
1485c0ba9c
chore: VPS-Pfad in Skills von /opt/bollwerk auf /opt/krisenvorrat korrigiert
2026-05-17 18:51:21 +02:00
Jens Reinemann
fe7501bd27
feat: HTTPS – URLs auf https://bollwerk.online aktualisiert, Docker-Ports auf localhost beschraenkt ( #95 )
2026-05-17 18:24:28 +02:00
Jens Reinemann
e73d3a11a0
ci: disable automatic CI triggers on push/PR
...
Both android-ci.yml and ci.yml now only run via workflow_dispatch
(manual trigger). Automatic builds on push/PR are disabled to stop
failing pipeline notifications.
2026-05-17 18:23:27 +02:00
Jens Reinemann
e0130910af
chore: migrate server URLs from IP to bollwerk.online domain
...
Replace all HTTP references to 195.246.231.210 with bollwerk.online
across skills, prompts, scripts, and app default settings:
- Dockerfile: rename KRISENVORRAT_JWT_SECRET to BOLLWERK_JWT_SECRET
- SettingsKey.kt: default server URL now http://bollwerk.online:8080
- publish SKILL/prompt/script: HTTP URLs updated to bollwerk.online
- vps-deploy SKILL: Admin-UI and health-check URLs updated
- run-integration-tests.ps1: default BaseUrl updated
SSH commands (ssh/scp) intentionally kept on IP, as DNS is not
used for SSH access.
2026-05-17 18:22:17 +02:00
Jens Reinemann
83ef83f4e7
revert: Repo-Name zurueck auf bollwerk (der neue korrekte Name)
...
Mein vorheriger Commit hat faelschlicherweise bollwerk -> krisenvorrat
geaendert. Richtig ist: krisenvorrat (alt) -> bollwerk (neu).
2026-05-17 18:12:38 +02:00
Jens Reinemann
7c768be648
fix: Repo-Name in Skripten/Skills auf krisenvorrat korrigieren
...
- create-next-ticket.ps1, next-ticket.ps1, watch-pipeline.ps1: \
- SKILL.md (gh-tickets): Repo-Referenz + Issue-URL
- workflow-planning.prompt.md, workflow-block-planning.prompt.md: Issue-URL
2026-05-17 18:11:23 +02:00
Jens Reinemann
a5f89e6a69
rename: Krisenvorrat -> Bollwerk
...
- Package: de.krisenvorrat.* -> de.bollwerk.*
- Klassen: KrisenvorratApp/Database/Theme -> Bollwerk*
- ApplicationId: de.bollwerk.app
- Server: BOLLWERK_* Env-Vars, bollwerk HOCON-Config
- Docker: bollwerk-server/db/backup Container-Namen
- Room DB: bollwerk.db, SharedPrefs: bollwerk_secure_prefs
- Export-Dateien: bollwerk_export/inventar
- UI-Strings, HTML, Admin-UI: alle auf Bollwerk
- Docs, Skills, README angepasst
- Alle Tests gruen, Build erfolgreich
2026-05-17 17:44:02 +02:00
Jens Reinemann
bba4ac0086
fix: publish-apk.ps1 PowerShell 5.1 Kompatibilitaet
...
- En-Dash durch Hyphen ersetzt (UTF-8 Encoding-Problem)
- SSH-Befehle: && durch ; ersetzt (PS 5.1 kennt kein &&)
- 2>/dev/null aus PS-Parsing entfernt (String-Konkatenation)
- SSH-Array-Rueckgabe korrekt behandeln (letztes Element)
2026-05-17 15:39:12 +02:00
Jens Reinemann
5434c00f20
feat: automatischer Sync nach Login/Reconnect, manuelle Push/Pull-Buttons entfernen
...
- WebSocket Connected-Event löst jetzt automatisch pullSync() aus
(nach Login = Full Sync, nach Reconnect = inkrementell)
- Push/Pull-Buttons ersetzt durch Hinweis 'Synchronisierung erfolgt
automatisch' + Fallback-Button 'Jetzt synchronisieren'
- ServerUrl: Default-Wert (VPS-IP) als Konstante in SettingsKey,
Reset-Button neben dem URL-Feld
- SettingsUiState: serverUrl Default = DEFAULT_SERVER_URL
- Tests angepasst (SettingsRepositoryImplTest)
2026-05-17 15:36:11 +02:00
Jens Reinemann
61ef56425d
test(server): Server-Integrationstests vervollständigen
...
Auth: Expired-Token-Tests (Access + Refresh), fehlende Felder
Message-API: Send, Get Conversation, Blank Body, Receiver Not Found,
Custom ID, Response-Format (9 Tests)
WebSocket: Connect mit gültigem/ungültigem/fehlendem/abgelaufenem Token,
inventoryUpdated-Event, new_message-Event, Disconnect, undelivered
Messages bei Connect (8 Tests)
CI-Pipeline: Auto-Trigger für push/PR auf app/shared/server-Pfade,
Step-Label verdeutlicht (app + shared + server)
Server-Tests: 130 gesamt, 0 Failures
Closes #80
2026-05-17 04:02:34 +02:00
Jens Reinemann
95e262d009
chore: Backlog-Status in Board-Skripten ergaenzen
...
- set-board-status.ps1: 'Backlog' (4ce6ee37) als gueltigen Status erganzt
- create-next-ticket.ps1: -Status Parameter (Todo|Backlog, Default: Todo)
Todo: Order = min - 1 (naechstes Ticket)
Backlog: Order = max + 10 (ans Ende gestellt)
Explizite Status-Setzung via gh project item-edit nach Board-Add
2026-05-17 01:51:18 +02:00
Jens Reinemann
56ac9b1425
feat: Messaging-System mit Offline-First und WebSocket-Push ( #58 )
...
## Server
- Messages-Tabelle (id, sender_id, receiver_id, body, sent_at, delivered_at)
- MessageRepository: save/getUndelivered/getConversation/markDelivered (JOIN statt N+1)
- POST /api/messages, GET /api/messages/{userId}: Nachrichten senden/abrufen
- GET /api/users: User-Liste fuer authentifizierte User (ohne eigenen Account)
- WebSocketManager: notifyNewMessage() + isOnline()
- WebSocketRoutes: unzugestellte Nachrichten bei Reconnect pushen
- LoginResponse: userId + username ergaenzt
- Server-Dependency: kotlinx.serialization fuer shared
## App
- MessageEntity + MessageDao (Room, Migration 3->4)
- KrisenvorratDatabase v4, Migrations.MIGRATION_3_4
- MessageRepositoryImpl: Offline-First (isPending), drain bei WebSocket-Connect
- WebSocketEvent.NewMessage -> MessageDto aus shared
- WebSocketClientImpl: new_message-Event parsen
- AUTH_USER_ID in SettingsKeys, SyncServiceImpl speichert userId bei Login
- UserListScreen + UserListViewModel: User-Liste anzeigen
- ChatScreen + ChatViewModel: WhatsApp-Style Chat (links/rechts, Zeitstempel)
- Navigation: Screen.UserList, Screen.Chat, MESSAGES in Bottom-Nav
- RepositoryModule: MessageRepository gebunden
## Tests
- 234 Tests, 0 Fehler
2026-05-16 23:35:25 +02:00
Jens Reinemann
db72a8b4ad
ci: Android CI deaktivieren (nur noch manuell per workflow_dispatch)
2026-05-16 18:58:49 +02:00
Jens Reinemann
748140acbd
docs: VPS-Deploy Skill hinzufügen (1984 Hosting, Docker, SSH)
2026-05-16 18:47:50 +02:00
Jens Reinemann
1236d61543
docs(device): Wireless ADB workflow und Screenshot-Pull dokumentiert
...
- Wireless ADB als bevorzugten Verbindungsweg dokumentiert
- Pull-Workflow für Screenshots (exec-out liefert über WLAN korrupte Bilder)
- Hinweis: adb -d nur USB, Wireless braucht adb -s <IP>:<PORT>
- Vollständiger Wireless-Deploy-Workflow (Build/Install/Launch)
2026-05-16 12:55:35 +02:00