Jens Reinemann
c24a32b033
release: v1.7.24 – ResourceDetailScreen with markdown rendering
2026-05-18 23:42:09 +02:00
Jens Reinemann
26117ac23f
feat(app): add ResourceDetailScreen with markdown rendering and clickable cards
...
- ResourceDetailScreen: full metadata display, download button, markdown description
- ResourceListScreen: cards now clickable, navigates to detail view
- Navigation: added ResourceDetail route with guid parameter
- Dependencies: compose-markdown 0.5.4 (JitPack), added toRoute import
- settings.gradle.kts: added JitPack repository
2026-05-18 23:37:00 +02:00
Jens Reinemann
506374f35b
fix(admin-ui): improve D&D confirm UX – spinner, success/error feedback, auto-reset
2026-05-18 23:22:05 +02:00
Jens Reinemann
e88e2d04c0
feat(server): add D&D resource upload with metadata extraction and tag suggestions
...
- Add ResourceAnalyzer: PDF (PDFBox), EPUB, image (EXIF/IPTC) metadata extraction
- Add POST /api/admin/resources/analyze + /confirm endpoints
- Add GET /api/admin/resources/tags with default tag seeding
- Admin UI: D&D zone, review panel with textarea description (4096 chars, MD), tag chips
- Dependencies: PDFBox 3.0.4, Commons Compress 1.27.1, metadata-extractor 2.19.0
2026-05-18 23:13:17 +02:00
Jens Reinemann
25c5f4675f
chore: version bump 1.7.22 → 1.7.23
2026-05-18 22:28:33 +02:00
Jens Reinemann
2b33f930d0
feat(app): implement resource download + 'open with' dialog
...
Closes #123
2026-05-18 22:19:23 +02:00
Jens Reinemann
44476b21e6
feat(app): add ResourceListScreen + BottomBar navigation
...
Closes #122
2026-05-18 22:15:40 +02:00
Jens Reinemann
542fbb0941
feat(app): add ResourceEntity, Dao, Repository + DB migration 8→9
...
Closes #121
2026-05-18 22:10:51 +02:00
Jens Reinemann
6fc37ee203
fix(notification): wire up updateBadgeCount to launcher badge via setNumber()
2026-05-18 22:10:04 +02:00
Jens Reinemann
ab5aad8f3e
feat(server): add REST-API for resources (CRUD + download)
...
Closes #120
2026-05-18 22:06:24 +02:00
Jens Reinemann
ab2cbff8ba
fix(notification): set badge count via setNumber() for multi-sender notifications
2026-05-18 22:05:28 +02:00
Jens Reinemann
22112e7978
feat(server): add Resources table + docker volume + Caddy upload limit
...
Closes #119
2026-05-18 22:02:59 +02:00
Jens Reinemann
0b94a10acf
chore: release v1.7.22
2026-05-18 22:01:44 +02:00
Jens Reinemann
332b814e14
feat(shared): add ResourceDto for resource catalog
...
Closes #118
2026-05-18 22:00:45 +02:00
Jens Reinemann
ae3cf3e660
fix(notification): minimize FGS notification visibility (bump channel to v2)
2026-05-18 21:59:58 +02:00
Jens Reinemann
5c187db1f9
chore: release v1.7.21
2026-05-18 21:46:15 +02:00
Jens Reinemann
afbec03ebb
fix(item-form): make kcal label dynamic based on selected unit
...
Analogous to the price label, kcal now shows 'kcal pro [Einheit]'
based on the dropdown selection from #114 .
Closes #115
2026-05-18 21:41:04 +02:00
Jens Reinemann
645578b66e
feat(item-form): add unit dropdown with predefined list and custom option
...
Provides 8 predefined units (Stück, g, kg, ml, l, Packung, Dose, Flasche)
plus a custom input option. Normalizes legacy unit strings on app start.
Dynamic price label shows selected unit.
Closes #114
2026-05-18 21:39:24 +02:00
Jens Reinemann
975976fd06
feat(chat): add message pagination with cursor-based loading
...
Load initial 200 messages, auto-load older messages on scroll to top.
Uses cursor-based DAO queries for stable scroll position.
Also fixes pre-existing ackMessage compile errors in test fakes.
Closes #113
2026-05-18 21:32:47 +02:00
Jens Reinemann
7b21394cc6
fix(chat): increase message text size from bodyMedium to bodyLarge
...
Closes #112
2026-05-18 21:25:27 +02:00
Jens Reinemann
9eefa79c64
fix(notifications): merge FG-service and message notifications into one
...
Use a single notification ID (9999) for both idle foreground-service state
and incoming-message alerts. Shows sender name for 1 message, summary for
multiple senders. Cancelling resets to idle instead of removing.
Closes #111
2026-05-18 21:23:58 +02:00
Jens Reinemann
b7ef6af0a4
chore: release v1.7.20
2026-05-18 20:12:09 +02:00
Jens Reinemann
37fd66a417
fix(messaging): keyboard layout, message delivery ACK, background foreground service
2026-05-18 19:26:27 +02:00
Jens Reinemann
a6cc4ca4bf
fix(ui): remove duplicate versionCode from update button label
2026-05-18 19:07:42 +02:00
Jens Reinemann
309f6961a5
chore: release v1.7.19
2026-05-18 19:00:14 +02:00
Jens Reinemann
93a52c5814
fix(sync): patchItemPartial upserts new items instead of returning 404
2026-05-18 18:58:34 +02:00
Jens Reinemann
6d5066e26a
fix(sync): notify all co-users on inventory mutations (PATCH/DELETE/PUT)
2026-05-18 18:53:21 +02:00
Jens Reinemann
5a5e2548ac
chore(db): Room-Schema v8 exportieren (is_read-Spalte)
2026-05-18 18:33:25 +02:00
Jens Reinemann
084b315b95
chore: release v1.7.18
2026-05-18 18:30:57 +02:00
Jens Reinemann
512829dd49
feat(messaging): ungelesene Nachrichten als Badges anzeigen ( #110 )
...
- DB-Migration 7→8: is_read-Spalte in messages (default 1 für bestehende Rows)
- DAO: getUnreadCountsBySender, getTotalUnreadCount, markConversationAsRead
- Repository: totalUnreadCount Flow + getUnreadCountsBySender() + markConversationAsRead()
- ChatViewModel: markConversationAsRead beim Öffnen/Empfangen
- UserListViewModel: unreadCounts StateFlow
- UserListScreen: rote Badge-Anzeige pro Chat
- MainViewModel: totalUnreadCount StateFlow
- MainScreen: BadgedBox am Nachrichten-Icon in Bottom Nav
- NotificationHelper: updateBadgeCount() für Launcher-Badge
- Tests: 3 neue Fälle, FakeDao+FakeRepo aktualisiert (328 Tests grün)
2026-05-18 18:28:49 +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
33c7ddb9ab
fix(notification): suppress only when active chat is visible
2026-05-18 17:59:54 +02:00
Jens Reinemann
4ce585971d
chore: release v1.7.17
2026-05-18 17:59:15 +02:00
Jens Reinemann
fb46c83f7b
chore: release v1.7.16
2026-05-18 17:58:05 +02:00
Jens Reinemann
bce4abc1dd
chore: release v1.7.15
2026-05-18 17:54:17 +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
0a4d9fc20e
fix(server): use CleartextKeysetHandle for admin E2EE encryption
2026-05-18 16:23:12 +02:00
Jens Reinemann
e0026b6eff
fix(server): use direct Tink primitive for admin message encryption
2026-05-18 16:17:50 +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
a1a9529b7d
chore: release v1.7.14
2026-05-18 15:15:53 +02:00
Jens Reinemann
e3bcddac70
chore: update publish tooling and Android messaging integration
2026-05-18 15:13:49 +02:00
Jens Reinemann
87a8deb83c
docs: add slim knowledge-conduit generaltest concept
2026-05-18 15:11:53 +02:00
Jens Reinemann
73d5e62a4e
chore: release v1.7 (13)
2026-05-18 15:04:59 +02:00
Jens Reinemann
64ebb737d1
chore: add ADMIN_MESSAGE_TOKEN to VPS docker-compose config
2026-05-18 14:13:52 +02:00
Jens Reinemann
61ef0aa1ac
feat(admin): implement E2EE encryption for admin test messages using recipient public keys
2026-05-18 14:12:12 +02:00
Jens Reinemann
ff80293c7a
fix(server): add startShadowScripts dependency
2026-05-18 13:57:14 +02:00
Jens Reinemann
ca6cfbfad9
feat: add plaintext admin message endpoint for testing
...
- New POST /api/admin/send-message endpoint (admin-only)
- Messages prefixed with [PLAINTEXT] bypass E2EE decryption
- App recognizes [PLAINTEXT] marker and strips it before display
- Allows easy chat testing without E2EE key management
2026-05-18 13:56:15 +02:00
Jens Reinemann
30e86bb7e0
feat(notifications): request POST_NOTIFICATIONS permission on app start
2026-05-18 13:54:03 +02:00
Jens Reinemann
c39bc5e485
feat: foreground service for background message notifications
2026-05-18 13:45:06 +02:00