- ApiClient: add getSuppliers, addSupplier, updateSupplier,
orderSuppliers, deleteSupplier on article namespace
- api/index.js: expose same methods in legacy http client
- StorageManager: add #supplierWatchers Map and watchArticleSuppliers()
backed by article-<sku> SSE signal; wired up as article.supplierWatch
- ArticleTileTab: pass article prop to ArticleSupplierTab
- ArticleSupplierDialog (new): dialog to assign / edit a supplier link
(supplier autocomplete, Lief.-SKU, VPE, stock, EK Netto + MwSt.)
- ArticleSupplierTab: full supplier management table with reordering
(up/down arrows → PUT /supplier/order), inline edit and delete,
stock badge, purchase price display and empty state
Move reusable GUI primitives (PanelTile, EditablePanelTile, base Tile,
ElevatedPill, SingleLineTextEdit) into the shared dashgui package and
consume them via a file: dependency. EditablePanelTile now accepts an
onError prop so error notification stays app-side.
- Update patchArticleInLists reducer to add/remove articles from category lists
- Articles are now correctly added to rootArticles and current category's articles
- Articles are correctly removed when no longer in a category
- Remove unnecessary loadCategoryTree dispatch (reducer handles sync now)
- Add setCategories API method for PUT /api/article/:sku/categories
- Create CategoryPickerDialog component for selecting categories
- Add CategoryPills component with add/remove functionality
- Category changes are now draft-based (like name editing)
- Save button commits both name and category changes together
- Delete icons hidden when only one category remains
- Plus button only visible in edit mode
Implements category assignment flow similar to name editing pattern.
- Remove 'Artikel angelegt.' snackbar from NewArticleTile
- Remove 'Kategorie angelegt.' snackbar from NewCategoryTile
- Remove dead handleEnableAllCategories method and binding from CompanySettingsDialog
- Updated API documentation to reflect changes in article data structure.
- Improved ArticlePhoto component to support dynamic sizing and object fit options.
- Added performance logging for image upload in ArticlePhotosDialog and ArticlePhotoTile components.
- Enhanced ArticleTile to conditionally render photos and adjusted styling for better layout.
- Optimized image preparation process with configurable AVIF encoding speed.