Blonjo v1.5.0-010: Chat Memoization, Instant Action Buttons & Zero-Jank RAF Stream
Optimasi performa ekstrim Vibes Chat: isolasi re-render pesan dengan React.memo, pemisahan tombol aksi instan tanpa stream, dan eliminasi layout thrashing via RAF.
1mnt baca
Pembaruan ini menuntaskan kendala lag, pengetikan patah-patah, dan keterlambatan tombol aksi pada antarmuka Vibes Chat:
-
Pemisahan Tombol Aksi Instan (Decoupled Instant Actions):
- Masalah: Tag
<!-- ACTIONS -->sebelumnya ikut tertelan ke dalam typewriter streaming, sehingga teks komentar HTML sempat bocor ke layar dan tombol aksi baru muncul setelah streaming selesai. - Solusi:
actionskini diekstrak di awal sebelum typewriter streaming dimulai. Tombol navigasi aksi modul Blonjo (misal: Buka Kasir, Rekap Transaksi) muncul LANGSUNG seketika begitu respon diterima, tanpa menunggu streaming teks naratif selesai.
- Masalah: Tag
-
Isolasi Re-render Pesan Masa Lalu (
ChatMessageItem = React.memo):- Masalah: Setiap ketukan tombol di textarea me-re-render seluruh pohon percakapan dari atas sampai bawah, memicu parsing ulang ratusan node
ReactMarkdowndan grafik Plotly. - Solusi: Setiap gelembung chat kini dibungkus
React.memodengan perbandingan properti kustom. Mengetik di textarea menghasilkan 0 re-render pada riwayat pesan lama (Keystroke latency < 1ms).
- Masalah: Setiap ketukan tombol di textarea me-re-render seluruh pohon percakapan dari atas sampai bawah, memicu parsing ulang ratusan node
-
Eliminasi Layout Thrashing via RAF Follow-Scroll:
- Masalah: Pembacaan
scrollHeightdan pemaksaan scroll pada setiap tick 16ms memicu forced synchronous layout reflow yang meruntuhkan framerate browser. - Solusi: Scroll dinamis kini disinkronkan dengan refresh monitor via
requestAnimationFrame(RAF lock), dan cadence streaming dioptimalkan ke 28ms dengan adaptive chunking yang halus dan ramah CPU.
- Masalah: Pembacaan