From e4b730c8dbcb7227207f0696c1e2d3c73f7ae53c Mon Sep 17 00:00:00 2001 From: congsh Date: Sat, 18 Apr 2026 19:52:34 +0800 Subject: [PATCH] fix(phase3): subscription leak, image mime type validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ledger store: add stopSubscription() to properly clean up realtime subscriptions, matching asset store pattern - LedgerList: call stopSubscription on unmount - Assets migration: restrict image upload to image/* mime types (C3 updateRule is a known tradeoff — PocketBase lacks field-level permissions, frontend enforces edit restrictions instead) Co-Authored-By: Claude Opus 4.7 --- .../pb_migrations/1776510002_created_assets.js | 2 +- frontend/src/components/ledger/LedgerList.vue | 6 +++++- frontend/src/stores/ledger.ts | 15 ++++++++++++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/backend/pb_migrations/1776510002_created_assets.js b/backend/pb_migrations/1776510002_created_assets.js index 4720384..14495c5 100644 --- a/backend/pb_migrations/1776510002_created_assets.js +++ b/backend/pb_migrations/1776510002_created_assets.js @@ -112,7 +112,7 @@ migrate((db) => { "presentable": false, "unique": false, "options": { - "mimeTypes": null, + "mimeTypes": ["image/*"], "thumbs": ["200x200"], "maxSelect": 1, "maxSize": 5242880, diff --git a/frontend/src/components/ledger/LedgerList.vue b/frontend/src/components/ledger/LedgerList.vue index 7bbb909..e560086 100644 --- a/frontend/src/components/ledger/LedgerList.vue +++ b/frontend/src/components/ledger/LedgerList.vue @@ -1,5 +1,5 @@