- Fix createReceiptZip path traversal guard blocking new ImagePath entries
(UploadReceipt stores bare filenames, guard required 'storage/' prefix)
- Add DeleteExpense DB function, handler with ownership verification,
DELETE /expenses/{id} route, and 🗑️ button in both expense templates
- Uses existing htmx.trigger confirm pattern for delete UX
|
||
|---|---|---|
| .. | ||
| ai | ||
| auth | ||
| database | ||
| handlers | ||
| utils | ||