- tab Files (tree + tree actions + segmented Materi/Assets + tools rail)
selalu ada dan keep-mounted (expand folder/scroll tree tidak hilang)
- tab konten full width; split 65/35 dan aturan .no-tabs dihapus
- auto-select: klik file -> tab konten pertama file (skip Files);
tanpa file/tab -> Files; sisa activeTab 'features' dibersihkan
- aksi esensial file aktif (edit/simpan/publish) selalu di panel-actions
- varian mobile & floating memakai chrome-tabs yang sama (Files nyata)
- manager mengekspos previewPath sebagai penanda preview siap
- locator script E2E disesuaikan ke tab Files + tree-action-btn
Hasil review pasca-fix upload asset:
Keamanan:
- Mitigasi stored-XSS via SVG (route /assets/* publik, same-origin):
CSP 'default-src none; sandbox' saat serve SVG — di backend
(send_assets) DAN di proxy SvelteKit (proxy hanya meneruskan
content-type/set-cookie, jadi CSP backend tak sampai ke browser).
- Deteksi 413 proxy kini ber-test status code + pesan.
Testing:
- Regression guard: error jaringan biasa tetap 502, bukan 413.
- 413 via status code saja (tanpa regex pesan) tetap 413.
- Boundary 5 MiB: file TEPAT 5 MiB lolos; 5 MiB+1 ditolak (cabang
len(raw) — SVG dipakai karena dikecualikan validasi PIL).
- CSP: SVG dapat header, raster tidak.
- E2E script (verify_asset_upload.py) memakai file asli
mr-edu/assets/ilustrasi_beban.jpeg + test 413 terintegrasi.
Reuseability:
- Komentar silang-referensi _MAX_ASSET_BYTES (sumber) dengan pesan 413
proxy dan BODY_SIZE_LIMIT compose.