Jens Reinemann
9a7a666bfa
chore: release v1.7.26
2026-05-19 07:21:14 +02:00
Jens Reinemann
a84d130495
fix(resources): grant explicit URI permissions to all resolved activities before startActivity
...
Resolves 'Keine App gefunden' for ePub and PDF opening failures (e.g. Firefox).
FLAG_GRANT_READ_URI_PERMISSION alone is not sufficient when Android shows
the Chooser – each potential app must receive grantUriPermission() before
startActivity() is called.
- Extract openResourceFile() into FileOpenHelper.kt (eliminates DRY violation)
- Use PackageManager.ResolveInfoFlags (API 33+) with DEPRECATION suppress fallback
- Remove duplicate inline intent code from ResourceDetailScreen
Closes #129
2026-05-19 00:24:58 +02:00
Jens Reinemann
557a4bcaf8
feat(auth): show delete-local-data dialog on logout for logged-in users
2026-05-19 00:10:17 +02:00
Jens Reinemann
320f0e8880
chore: release v1.7.25
2026-05-18 23:56:45 +02:00
Jens Reinemann
fd2eae227b
feat(resources): compact cards, BottomSheet filter/sort (tags+format+language)
...
- Cards: title + author + overflow row (format, size, tags)
- Description removed from card (detail-only)
- SearchBar + FilterList icon (like Inventar)
- BottomSheet: Tags, Format, Sprache filter + Sortierung
- Crash-fix: catch exceptions in refresh()
2026-05-18 23:53:47 +02:00
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
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
ab2cbff8ba
fix(notification): set badge count via setNumber() for multi-sender notifications
2026-05-18 22:05:28 +02:00
Jens Reinemann
0b94a10acf
chore: release v1.7.22
2026-05-18 22:01:44 +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
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
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
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
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
Jens Reinemann
38394c6350
chore: release v1.7 (12)
2026-05-18 13:23:09 +02:00
Jens Reinemann
e43c0ebbb5
feat(update): UpToDate-Status mit temporärem Feedback anzeigen
...
- Neuer UpdateStatus.UpToDate State
- Button zeigt 'Keine Updates gefunden' für 5 Sekunden
- Mindestens 1s Checking-Anzeige (vermeidet Flicker bei schneller Antwort)
- UpdateBanner blendet UpToDate-Status aus
2026-05-18 13:04:12 +02:00
Jens Reinemann
1492fa879b
refactor(ui): Update-Status-Anzeige in Settings überarbeiten
...
- Einzelne Buttons pro Status statt gemeinsamer 'Auf Updates prüfen'-Button
- Available-Status als prominenter Button mit Icon
- Checking/Downloading als disabled OutlinedButton
- Error-Status mit 'Erneut prüfen'-Button
- Hidden-Status zeigt den Check-Button
2026-05-18 12:48:04 +02:00
Jens Reinemann
5eae3a4813
chore: release v1.7 (11)
2026-05-18 12:34:58 +02:00
Jens Reinemann
292c538d45
fix(ui): close BottomSheet when 'Alle zurücksetzen' is tapped
2026-05-18 12:29:49 +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
6a3009569b
fix(ui): filter chip label too long – show only selected value
2026-05-18 12:16:35 +02:00
Jens Reinemann
7ea7729f96
fix: version display format -> three-number (e.g. 1.7.10) without v prefix
2026-05-18 12:16:01 +02:00
Jens Reinemann
461fca7ead
chore: release v1.7 (10)
2026-05-18 12:09:11 +02:00