Vinarium - Releases

← App details

Nextcloud 33

Vinarium 0.2.0
Release Details
UpdatedMay 19, 2026, 8:59 p.m.
Changelog

Added

  • Fächer eines Regals lassen sich nachträglich hinzufügen und löschen — „+ Fach hinzufügen"-Button am Ende eines Regals, ✕-Button pro Fach mit Bestätigungsdialog; Flaschen aus gelöschten Fächern landen in der Parkzone (Fixes #49)
  • Cellar-View: Parkzone ist jetzt unabhängig vom Cellar immer sichtbar; das letzte Regal lässt sich löschen — die View fällt dann auf einen schlanken Empty-State zurück (Fixes #48)

Changed

  • Native Browser-confirm()-Dialoge ersetzt durch NC-styled ConfirmDialog (knallroter Delete-Button, NC-Look) — durchgängig in Wine-Picker, Bottle-Move, Shelf-Delete, Compartment-Delete (Fixes #50)
  • NcButton-Migration typevariant an 21 Stellen: Primary-Buttons sind jetzt wieder NC-blau, Tertiary transparent — die visuelle Hierarchie war zuvor verloren gegangen (Fixes #55)
  • Bessere Fehlermeldungen im TastingDialog und beim Bottle-Picker bei API-Fehlern statt stiller Fehlschläge (Fixes #41)
  • App-Beschreibung in info.xml gestrafft

Fixed

  • TastingService::consumeWithTasting() ist jetzt atomar — Flasche und Verkostung werden in einer DB-Transaktion erstellt; schlägt die Verkostung fehl, wird der Flaschen-Status zurückgerollt (Fixes #36)
  • DoesNotExistException in den neuen Compartment-Endpoints wird jetzt korrekt zu HTTP 404 statt 500

Removed

  • Toter Code: consumeBottle() aus API und Store entfernt (Fixes #37)
  • Toter Code: ungenutzter Frontend-Wrapper createDefaultCellar() aus api/cellar.ts
  • Standard-Regal-Button im Empty-State entfernt — Anlegepfad ist jetzt einheitlich der „+ Neues Regal"-Wizard

Refactored

  • cssColorFor in src/utils/wineColors.ts extrahiert (6 Aufrufer statt zuvor 2 dupliziert) (Fixes #39)
  • restoreBottle als Store-Action ergänzt (Fixes #40)

Compliance

  • Apache-2.0-Attribution für mdi-grapes in THIRD_PARTY_NOTICES.md ergänzt (Fixes #38)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignatureNPwU40rhD1C6vL+MBWzsgJo+OWOJFr8SEkaGQNebPMvf20saNa7rP5FxdfiQ/4DUKTRgJE+088PBLeSL2UdzYmTjzVFr0MLAvwvSNBB8qUsqQNOyXL/jazq3UIiTlo4AcqDcxUpgj70M9ZHZYuN99yBTWAsdjjd5rxlKU7qCxnRvMpso29L9/OhbgqwoaQjLwr5jPcYXbVF1umhCazOZDDfbZFLDZVp5beC8w2KgFo5DcV/+1y/rKjlibKqtvx9wIPTDqTU3DwwFc07QFCNI8xyxKm6995H48uP2E8zit4ovoLOqs6DpRJEw1BnH2J/oyz3S1wNm3dfIyIkeldyEzQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Vinarium 0.1.2
Release Details
UpdatedMay 18, 2026, 5:42 p.m.
Changelog

Added

  • App Store Screenshots (Dashboard, Wines, Inventory, Tasting-Detail, Tastings)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignaturehkhxxeKp/qxcQIGp2bRTUjO1iwK8W7X7bShRF85w9Vb3xvkc6CxS/t0CCiFdSZHD6HRkqkVKAeb9wlJKaWhQt/SaFDBJOw6xK5eX1GDVGr9y+Yi3Rrz9whjgQxTKDlZdEzZyIOphTdM7BZwwzuKpm9Sixxej0Bts8gIiy2JMlDdPaYINJObPZ6GQ5CCPVx1gjlGZbqtE9RO9uVEHRxtsPTEXTiXXINC6R/IA4LotR02LUgNz/cv7O34aAc/LpGLtEP/Ft8eTIfI0NPZKfoskgvwpX9HXst6Fm/m+CiBZIdoOZ5kWWGQBlDjuxLbkl74BFGQ4Ymv1YB9PfHgpR4WaHQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Vinarium 0.1.1
Release Details
UpdatedMay 18, 2026, 12:57 p.m.
Changelog

Fixed

  • l10n: JSON-Dateien hatten keinen translations-Wrapper → HTTP 500 für Nutzer mit EN-Locale
  • l10n: ASCII-Anführungszeichen " statt typografischem " in l10n-Keys → JS-Syntaxfehler beim Laden
  • NcModal: name-Prop in TastingDialog, TastingDetailModal, EntityEditModal und PurchaseWizardModal ergänzt (Accessibility)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignaturejZ4bYSjrgI5OtRUgR5l1OswIygA23KIIh4dCJawWzAyoT+F+ebyMZA45lTfLqfhen8rDs+fSIyYSVsfRLqNdu5BOW8gECIzN14OzkgB80NALiv0Yi9J/69Es4DOskW09uOu85iDMOprOeXcxpRWmBikLbJSeAcfhvXR4tnF056MdcZyX9gVhtclwsYJByPfWZBCQUjXOXmoyuyfzh0iuIEF7tcHzK3EgICUGMznnQAdPQkvDHFfkhyekvr9Fzut5NNjrNtKI6iEGge79yYodoBoZYvXwG6nA3quIYHUfTvc7N5bUg/a++hcWqwpVYNQizRv7CqehzbVmaMXw4U0B+A==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Vinarium 0.1.0
Release Details
UpdatedMay 18, 2026, 6:49 a.m.
Changelog

Erste offizielle Veröffentlichung — Weinverwaltung End-to-End.

Added

Datenbank + Backend - 10 DB-Tabellen via Migration (Cellar, Shelf, Compartment, Slot, Producer, Wine, Vintage, Purchase, Bottle, Tasting) - 10 Entities + 10 QBMapper-Subklassen mit Owner-Queries - CellarService: Default-Regal (234 Slots), Reconfigure mit Parkzonen-Migration - ProducerService, WineService, VintageService: CRUD mit Ownership-Checks - PurchaseService: CRUD + Bottle-Size-Validation - BottleService: Bulk-Insert, Move (409 SlotOccupied), Swap, Consume, Restore, Filter (4-Table JOIN) - TastingService: Create, Update, ConsumeWithTasting, List (denormalisiert), Detail-View - DashboardService: Stats-Aggregation (Bestand, Farb-Verteilung, Bald-Trinken) - ExportService: CSV-Export (UTF-8 BOM, Semikolon, denormalisiert) - PhotoService: Foto-Upload in NC-Files (IRootFolder), Thumbnail via NC Preview API - Foto-Upload für Flaschen (1 Foto) und Verkostungen (mehrere Fotos)

REST-API - 40+ Endpoints unter /api/v1/ (Producer, Wine, Vintage, Purchase, Bottle, Tasting, Cellar, Dashboard, Export, Photo) - DataResponse mit HTTP-Status-Mapping (404/403/400/409/201/204) - CSRF-Schutz auf allen mutierenden Endpoints

Frontend - Vue 3 + TypeScript + Vite + Pinia - PurchaseWizardModal: 4-Step-Wizard (Weingut → Wein → Jahrgang → Kauf) - Single-Action-Flow (Weiter = speichert + advanced) - Form zeigt Daten bei Auswahl eines bestehenden Eintrags - Deutsche Farblabels (Rot/Weiß/Rosé/Schaumwein/Dessertwein/Likörwein) - WinesView: 4 Tabs (Weingüter/Weine/Jahrgänge/Käufe) mit Edit/Delete - InventoryView: Flaschen-Tabelle mit Filter (Farbe/Status/Jahrgang), Foto-Upload, Flasche zurücksetzen - SimpleShelfView: Regal-Ansicht mit HTML5 Drag & Drop + Bottle-Swap, Detail-Panel mit Split-View - Slots mit 2-Zeilen-Weinname + Jahrgang - Parkzone mit Wein-Labels - Slot-Labels menschenlesbar (Fach/Ebene/Platz) - Regal-Einstellungen: Ebenen/Spalten/Versatz konfigurieren - TastingDialog: Bewertungs-Slider (0.5–10), Notizen, Anlass, Begleitung, Foto-Upload (mehrere) - TastingsView: Chronologische Tabelle mit Foto-Badge, Entkorken direkt aus Liste - TastingDetailModal: Detail-Ansicht mit Foto-Strip, Lightbox-Vollbild, verwandte Verkostungen - DashboardView: 4 Stat-Widgets, Farb-Verteilung, Bald-Trinken, letzte Verkostungen, CSV-Export - Entkorken-Funktion: Flasche öffnen + Verkostung in einem Schritt - Weingut standalone erfassen (ohne Wizard) - App-Icon: Weintraube (MDI mdi-grapes)

Internationalisierung - Vollständige Zweisprachigkeit DE + EN

Infrastruktur - Vue 3.5 + Composition API + TypeScript 5.7 + Vite 7.3 - @nextcloud/vue 9.6, @nextcloud/axios, @nextcloud/router - Pinia Stores mit Optimistic Updates + Rollback - 88 PHPUnit-Tests + 24 Vitest-Tests (112 gesamt) - Pre-Commit-Hook für OCP-only API-Enforcement

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignaturekRhu1SmG7i9VmNtsp1dMId19I1oCjMwkQ5d0ZY8g3BCo/IlAg2hJvUmiFyYroa/NLtTkGm6o31SissX8NrfNZku2A6csuiTBBdnsy9lTWIYXPgxZaoA+Ne6zGYEna7QxVOb7+Zi1UceD3Jj6T97kBCBaA8NzZ/1WUkKi7nwwq202N4Nmk6cMsF6UAK7u+GLHa8SapoeGZF0QkZURxOTViJqp1RZGGtJbFGPiUxbdTZXZVIVBL3O2VPKugmw2AvH3npgqcIQeso62ONhpgQk/MBTCdLvR6Uyy55v/YRlGPwCZxwMRVnaxqool0PgbXq1BdWcNdhIA8Vq5ayNErYapzQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 32

Vinarium 0.2.0
Release Details
UpdatedMay 19, 2026, 8:59 p.m.
Changelog

Added

  • Fächer eines Regals lassen sich nachträglich hinzufügen und löschen — „+ Fach hinzufügen"-Button am Ende eines Regals, ✕-Button pro Fach mit Bestätigungsdialog; Flaschen aus gelöschten Fächern landen in der Parkzone (Fixes #49)
  • Cellar-View: Parkzone ist jetzt unabhängig vom Cellar immer sichtbar; das letzte Regal lässt sich löschen — die View fällt dann auf einen schlanken Empty-State zurück (Fixes #48)

Changed

  • Native Browser-confirm()-Dialoge ersetzt durch NC-styled ConfirmDialog (knallroter Delete-Button, NC-Look) — durchgängig in Wine-Picker, Bottle-Move, Shelf-Delete, Compartment-Delete (Fixes #50)
  • NcButton-Migration typevariant an 21 Stellen: Primary-Buttons sind jetzt wieder NC-blau, Tertiary transparent — die visuelle Hierarchie war zuvor verloren gegangen (Fixes #55)
  • Bessere Fehlermeldungen im TastingDialog und beim Bottle-Picker bei API-Fehlern statt stiller Fehlschläge (Fixes #41)
  • App-Beschreibung in info.xml gestrafft

Fixed

  • TastingService::consumeWithTasting() ist jetzt atomar — Flasche und Verkostung werden in einer DB-Transaktion erstellt; schlägt die Verkostung fehl, wird der Flaschen-Status zurückgerollt (Fixes #36)
  • DoesNotExistException in den neuen Compartment-Endpoints wird jetzt korrekt zu HTTP 404 statt 500

Removed

  • Toter Code: consumeBottle() aus API und Store entfernt (Fixes #37)
  • Toter Code: ungenutzter Frontend-Wrapper createDefaultCellar() aus api/cellar.ts
  • Standard-Regal-Button im Empty-State entfernt — Anlegepfad ist jetzt einheitlich der „+ Neues Regal"-Wizard

Refactored

  • cssColorFor in src/utils/wineColors.ts extrahiert (6 Aufrufer statt zuvor 2 dupliziert) (Fixes #39)
  • restoreBottle als Store-Action ergänzt (Fixes #40)

Compliance

  • Apache-2.0-Attribution für mdi-grapes in THIRD_PARTY_NOTICES.md ergänzt (Fixes #38)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignatureNPwU40rhD1C6vL+MBWzsgJo+OWOJFr8SEkaGQNebPMvf20saNa7rP5FxdfiQ/4DUKTRgJE+088PBLeSL2UdzYmTjzVFr0MLAvwvSNBB8qUsqQNOyXL/jazq3UIiTlo4AcqDcxUpgj70M9ZHZYuN99yBTWAsdjjd5rxlKU7qCxnRvMpso29L9/OhbgqwoaQjLwr5jPcYXbVF1umhCazOZDDfbZFLDZVp5beC8w2KgFo5DcV/+1y/rKjlibKqtvx9wIPTDqTU3DwwFc07QFCNI8xyxKm6995H48uP2E8zit4ovoLOqs6DpRJEw1BnH2J/oyz3S1wNm3dfIyIkeldyEzQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Vinarium 0.1.2
Release Details
UpdatedMay 18, 2026, 5:42 p.m.
Changelog

Added

  • App Store Screenshots (Dashboard, Wines, Inventory, Tasting-Detail, Tastings)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignaturehkhxxeKp/qxcQIGp2bRTUjO1iwK8W7X7bShRF85w9Vb3xvkc6CxS/t0CCiFdSZHD6HRkqkVKAeb9wlJKaWhQt/SaFDBJOw6xK5eX1GDVGr9y+Yi3Rrz9whjgQxTKDlZdEzZyIOphTdM7BZwwzuKpm9Sixxej0Bts8gIiy2JMlDdPaYINJObPZ6GQ5CCPVx1gjlGZbqtE9RO9uVEHRxtsPTEXTiXXINC6R/IA4LotR02LUgNz/cv7O34aAc/LpGLtEP/Ft8eTIfI0NPZKfoskgvwpX9HXst6Fm/m+CiBZIdoOZ5kWWGQBlDjuxLbkl74BFGQ4Ymv1YB9PfHgpR4WaHQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Vinarium 0.1.1
Release Details
UpdatedMay 18, 2026, 12:57 p.m.
Changelog

Fixed

  • l10n: JSON-Dateien hatten keinen translations-Wrapper → HTTP 500 für Nutzer mit EN-Locale
  • l10n: ASCII-Anführungszeichen " statt typografischem " in l10n-Keys → JS-Syntaxfehler beim Laden
  • NcModal: name-Prop in TastingDialog, TastingDetailModal, EntityEditModal und PurchaseWizardModal ergänzt (Accessibility)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignaturejZ4bYSjrgI5OtRUgR5l1OswIygA23KIIh4dCJawWzAyoT+F+ebyMZA45lTfLqfhen8rDs+fSIyYSVsfRLqNdu5BOW8gECIzN14OzkgB80NALiv0Yi9J/69Es4DOskW09uOu85iDMOprOeXcxpRWmBikLbJSeAcfhvXR4tnF056MdcZyX9gVhtclwsYJByPfWZBCQUjXOXmoyuyfzh0iuIEF7tcHzK3EgICUGMznnQAdPQkvDHFfkhyekvr9Fzut5NNjrNtKI6iEGge79yYodoBoZYvXwG6nA3quIYHUfTvc7N5bUg/a++hcWqwpVYNQizRv7CqehzbVmaMXw4U0B+A==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Vinarium 0.1.0
Release Details
UpdatedMay 18, 2026, 6:49 a.m.
Changelog

Erste offizielle Veröffentlichung — Weinverwaltung End-to-End.

Added

Datenbank + Backend - 10 DB-Tabellen via Migration (Cellar, Shelf, Compartment, Slot, Producer, Wine, Vintage, Purchase, Bottle, Tasting) - 10 Entities + 10 QBMapper-Subklassen mit Owner-Queries - CellarService: Default-Regal (234 Slots), Reconfigure mit Parkzonen-Migration - ProducerService, WineService, VintageService: CRUD mit Ownership-Checks - PurchaseService: CRUD + Bottle-Size-Validation - BottleService: Bulk-Insert, Move (409 SlotOccupied), Swap, Consume, Restore, Filter (4-Table JOIN) - TastingService: Create, Update, ConsumeWithTasting, List (denormalisiert), Detail-View - DashboardService: Stats-Aggregation (Bestand, Farb-Verteilung, Bald-Trinken) - ExportService: CSV-Export (UTF-8 BOM, Semikolon, denormalisiert) - PhotoService: Foto-Upload in NC-Files (IRootFolder), Thumbnail via NC Preview API - Foto-Upload für Flaschen (1 Foto) und Verkostungen (mehrere Fotos)

REST-API - 40+ Endpoints unter /api/v1/ (Producer, Wine, Vintage, Purchase, Bottle, Tasting, Cellar, Dashboard, Export, Photo) - DataResponse mit HTTP-Status-Mapping (404/403/400/409/201/204) - CSRF-Schutz auf allen mutierenden Endpoints

Frontend - Vue 3 + TypeScript + Vite + Pinia - PurchaseWizardModal: 4-Step-Wizard (Weingut → Wein → Jahrgang → Kauf) - Single-Action-Flow (Weiter = speichert + advanced) - Form zeigt Daten bei Auswahl eines bestehenden Eintrags - Deutsche Farblabels (Rot/Weiß/Rosé/Schaumwein/Dessertwein/Likörwein) - WinesView: 4 Tabs (Weingüter/Weine/Jahrgänge/Käufe) mit Edit/Delete - InventoryView: Flaschen-Tabelle mit Filter (Farbe/Status/Jahrgang), Foto-Upload, Flasche zurücksetzen - SimpleShelfView: Regal-Ansicht mit HTML5 Drag & Drop + Bottle-Swap, Detail-Panel mit Split-View - Slots mit 2-Zeilen-Weinname + Jahrgang - Parkzone mit Wein-Labels - Slot-Labels menschenlesbar (Fach/Ebene/Platz) - Regal-Einstellungen: Ebenen/Spalten/Versatz konfigurieren - TastingDialog: Bewertungs-Slider (0.5–10), Notizen, Anlass, Begleitung, Foto-Upload (mehrere) - TastingsView: Chronologische Tabelle mit Foto-Badge, Entkorken direkt aus Liste - TastingDetailModal: Detail-Ansicht mit Foto-Strip, Lightbox-Vollbild, verwandte Verkostungen - DashboardView: 4 Stat-Widgets, Farb-Verteilung, Bald-Trinken, letzte Verkostungen, CSV-Export - Entkorken-Funktion: Flasche öffnen + Verkostung in einem Schritt - Weingut standalone erfassen (ohne Wizard) - App-Icon: Weintraube (MDI mdi-grapes)

Internationalisierung - Vollständige Zweisprachigkeit DE + EN

Infrastruktur - Vue 3.5 + Composition API + TypeScript 5.7 + Vite 7.3 - @nextcloud/vue 9.6, @nextcloud/axios, @nextcloud/router - Pinia Stores mit Optimistic Updates + Rollback - 88 PHPUnit-Tests + 24 Vitest-Tests (112 gesamt) - Pre-Commit-Hook für OCP-only API-Enforcement

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDAzCCAesCAhNBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTEzMTQwODIwWhcNMzYwODE4MTQwODIwWjATMREwDwYD
VQQDDAh2aW5hcml1bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMUy
Uf45nxsw9A85lkErb0KHGlESd4xVFuXULhPxrfu0468oXo+FAFGR66OcZd7Dz0ju
cwIrI2S+wwD5Un6NbK/AIw1SeUIZ2iOtpyPu1Rfefp3QDXrHWSVeirwBAynhR3Xu
auyE/SVSX19cSU3cxomVZpI6/fD5A1rYsfV13jKfJSVqk8GgJpob28sAOJPGz5wf
cTUILWh/fBJLWHE8PhowV2r2AnlQCeMScOgIZ5Okg3GX5P1VWMgohr8MafIAgeib
hl9fiUrHdSb445ph/9SGuLwZ7achJN0Yk27+SjqpvDLDT965yqHMqe9hqZRwWqSY
ErR46cHuDKqEUQHBtLcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU6RQMAMbEMoj
hwEQ34AYwy7sYrSOYYhRxy5HrZ8cZGHwDbNIRNhglMs1UDe+GqDFRhibNVA4Dmou
pvVWqRTihM/hRs+dUKrqgQ3owf/3KbA9VSD5/nEE8MiehZVvMA0ecJ26JqTbrekF
eAVFzcZul1wJkH0hO5wlM3h7RHNKUDViOi3hUsYiDJot4BWN3ndlTuAqgrsAonPm
x28mIRLs8XPn023C9IY/D9VRnw/6Fc3aMyB/vkUe5FWwYAuoo9ntnkeA8v5AxLlH
Os1dIxl+8sW8SJtfZ6BDqnnpK9/J11ZLvQFoWHVqK5Z/kN+ZLTaUtCVKCgC2LNB1
BoFrOxGkfQ==
-----END CERTIFICATE-----
SignaturekRhu1SmG7i9VmNtsp1dMId19I1oCjMwkQ5d0ZY8g3BCo/IlAg2hJvUmiFyYroa/NLtTkGm6o31SissX8NrfNZku2A6csuiTBBdnsy9lTWIYXPgxZaoA+Ne6zGYEna7QxVOb7+Zi1UceD3Jj6T97kBCBaA8NzZ/1WUkKi7nwwq202N4Nmk6cMsF6UAK7u+GLHa8SapoeGZF0QkZURxOTViJqp1RZGGtJbFGPiUxbdTZXZVIVBL3O2VPKugmw2AvH3npgqcIQeso62ONhpgQk/MBTCdLvR6Uyy55v/YRlGPwCZxwMRVnaxqool0PgbXq1BdWcNdhIA8Vq5ayNErYapzQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0