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
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
7dfdb6e505
chore(genome): formatting fixes (whitespace/table alignment)
2026-05-18 10:17:43 +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
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
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
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
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
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
Jens Reinemann
4aba9f24a4
chore: Dokumentation, SKILL.md und Drawables aktualisieren
2026-05-13 23:56:56 +02:00
Jens Reinemann
74bf5ef060
fix(gh-tickets): set-board-status akzeptiert 'In Progress' mit Leerzeichen
...
- ValidateSet entfernt (war zu restriktiv - kein Agent-Fehler mehr bei 'In Progress')
- Normalisierung: 'In Progress' → 'InProgress' via .Trim()/-replace
- Fehlerdetails bei gh-Fehler sichtbar (kein Out-Null mehr)
- Null-Check auf content vor content.number-Vergleich (robuster gegen Draft-Items)
- Board-Fehler mit Exit 1 und Klartext-Meldung
- Getestet: alle 3 Status-Übergänge + 'In Progress' mit Leerzeichen + Fehlerfälle
2026-05-13 22:46:46 +02:00
Jens Reinemann
085d8685a8
docs(skills): align emulator and build docs with actual scripts
...
android-emulator SKILL.md:
- Added hot-reload and screenshot.ps1 to operations section
- Replaced broken 'exec-out > file' screenshot command with
screenshot.ps1 reference and UTF-16 corruption warning
- Replaced blocking 'adb wait-for-device' with polling loop + timeout
(consistent with android-dev.ps1 implementation)
- Added 30s PackageManager wait note after boot
android-build SKILL.md:
- Added screenshot.ps1 section with usage examples
- Documented PowerShell binary redirect UTF-16 bug as known issue
Motivation: docs diverged from scripts after GPU-mode, PM-wait,
screenshot.ps1 and hot-reload changes were added to the scripts.
2026-05-13 22:29:09 +02:00
Jens Reinemann
6603016369
feat(skills): add hot-reload action and robust screenshot script
...
android-dev.ps1:
- Added 'hot-reload' action: build + force-stop + install + launch on
a running emulator/device without restart (saves 60-90s vs deploy-emulator)
- Removed 'screenshot' action (replaced by standalone script)
screenshot.ps1 (new):
- Uses adb pull instead of exec-out pipe to avoid PowerShell's UTF-16
CRLF corruption of binary data (root cause of all broken screenshots)
- Validates PNG magic bytes after capture
- ADB commands wrapped with configurable timeout (prevents hangs)
- Optional -UiDump flag extracts visible text via uiautomator for
automated verification without image viewing
SKILL.md:
- Documented hot-reload action
app/build.gradle.kts:
- Version bump 1.0 → 1.1 (versionCode 1 → 2)
2026-05-13 22:27:06 +02:00
Jens Reinemann
a9a999fd1e
fix(skills): harden deploy scripts for GPU and timing issues
...
android-dev.ps1:
- Changed GPU mode from 'auto' to 'guest' (host/auto/swiftshader/angle
all fail with 'OpenGL Core Profile not supported' on this machine)
- Added -no-snapshot-load flag (prevents corrupt snapshot issues)
- Increased PackageManager wait from 5s to 30s (PM needs ~30s after
sys.boot_completed=1 before adb install succeeds)
- Replaced blocking 'adb wait-for-device' with polling loop (120s timeout)
- Improved emulator-stop with force-kill fallback for hung processes
- Simplified screenshot action: exec-out screencap instead of push/pull/rm
- Made all timing values configurable via variables at top of script
android-emulator SKILL.md:
- Updated manual start command to use -gpu guest
- Updated PM wait time reference from 5s to 30s
- Added known issue #3 : OpenGL Core Profile not supported (documents
symptoms, affected GPU modes, and workaround)
2026-05-13 22:16:11 +02:00
Jens Reinemann
9ea57f89a5
chore(skills): update paths after project move from OneDrive to X:\
...
android-build SKILL.md:
- Replaced all OneDrive path references with x:\krisenvorrat
- Changed 'OneDrive-Locks' terminology to 'File-Locks'
android-build android-dev.ps1:
- Changed 'OneDrive-Lock' comments to 'File-Lock'
- Script already used dynamic $PSScriptRoot path resolution, no path fix needed
android-emulator SKILL.md:
- Updated path references to new project location
Motivation: project was moved from C:\Users\JensR\OneDrive\Code\krisenvorrat
to x:\krisenvorrat to avoid OneDrive sync issues.
2026-05-13 21:57:13 +02:00
Jens Reinemann
906397fb4c
docs(emulator): Pixel-Referenzen als SDK-Basisprofil klarstellen
...
pixel_7_pro ist nur das SDK-Hardwareprofil, kein Zielgerät. Erklärung
ergänzt, dass kein Samsung-Profil im SDK verfügbar ist und das AVD
über config.ini auf S24-Ultra-Werte angepasst wird.
2026-05-13 17:00:27 +02:00
Jens Reinemann
e2c77b4ba5
chore: temporäre Dateien in tmp/ speichern
...
Screenshots und andere temporäre Dateien werden jetzt nach tmp/ statt
ins Projekt-Root geschrieben. tmp/ ist in .gitignore eingetragen.
Betrifft android-dev.ps1 Screenshot-Aktion und Skill-Beispiele.
2026-05-13 16:59:26 +02:00
Jens Reinemann
6116a6c6ef
docs: Android-Skills und Dev-Skript hinzufügen
...
Drei Copilot-Skills für den Android-Workflow:
- android-build: Gradle-Build, bekannte Issues (OneDrive, stderr)
- android-emulator: AVD-Verwaltung, Boot-Handling, S24Ultra_API35
- android-device: Physisches Gerät (Samsung S24 Ultra), USB/Wireless ADB
Zentrales PowerShell-Skript android-dev.ps1 mit 13 Aktionen:
build, clean, clean-build, emulator-start/stop, install-emulator/device,
launch, deploy-emulator/device, logcat, devices, screenshot.
Getestet: build, deploy-emulator, screenshot, emulator-stop.
2026-05-13 16:57:24 +02:00
Jens Reinemann
8a6882cc56
fix(gh-tickets skill): 3 Bugs in next-ticket + create-next-ticket korrigiert
...
next-ticket.ps1:
- --json-Flag: Leerzeichen nach Kommas entfernt ('number, title, labels'
→ 'number,title,labels'). gh CLI interpretierte die Felder als 3
separate Argumente → Fehler 'accepts 1 arg(s), received 3'.
- gh project item-list ohne --limit ergänzt (--limit 200). Das
Standard-Limit von 20 führt bei >20 Board-Items dazu, dass Tickets
nicht gefunden werden.
create-next-ticket.ps1:
- Type-Label-Validierung war unvollständig: nur migration, tech-decision
und infrastructure wurden akzeptiert. Alle 8 gültigen Typen ergänzt
(block-planning, feature, refactoring, planning, test).
2026-05-13 15:10:28 +02:00
Jens Reinemann
cf05c54a42
chore: Grobplanung abgeschlossen, Planungs-Tickets #2-#11 angelegt
2026-05-13 14:38:58 +02:00
Jens Reinemann
fbac5fbcaf
fix: remove spaces in gh CLI --json args (formatter artifact)
2026-05-13 14:02:38 +02:00
Jens Reinemann
5d4e139a2f
docs: add original requirements document to Anforderungen/
2026-05-13 13:54:21 +02:00
Jens Reinemann
f62d069555
chore: update all paths and IDs from kispielwiese to krisenvorrat repo
2026-05-13 13:49:40 +02:00
Jens Reinemann
60d1281b40
chore: initial project setup with Copilot config, skills, and workspace structure
2026-05-13 13:40:41 +02:00