Lanjut ke konten
Samkarsa Logbook

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:

  1. 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: actions kini 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.
  2. 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 ReactMarkdown dan grafik Plotly.
    • Solusi: Setiap gelembung chat kini dibungkus React.memo dengan perbandingan properti kustom. Mengetik di textarea menghasilkan 0 re-render pada riwayat pesan lama (Keystroke latency < 1ms).
  3. Eliminasi Layout Thrashing via RAF Follow-Scroll:

    • Masalah: Pembacaan scrollHeight dan 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.