Releases: BoneFishStudio/BoneFish
Release list
BoneFish v7.0.0
No changelog entry found for v7.0.0. See CHANGELOG.md for details.
BoneFish v6.3.1
v6.3.1 — Fix: Icon Sidebar Tofu (Global Font Override) 🔤
Release date: 2026-07-22
🐛 Bug — Global TextBlock Style Merusak SymbolIcon
Global Style TargetType="TextBlock" di App.xaml meng-override FontFamily untuk semua TextBlock,
termasuk yang dipakai internal WPF UI's SymbolIcon untuk render icon glyph (Segoe Fluent Icons).
Karena JetBrains Mono tidak punya glyph icon, semua ikon sidebar muncul sebagai kotak kosong (tofu).
🔧 Fix — Ganti dari Implicit Style ke Attached Property Inheritance
Akar masalah:
- Implicit Style (
Style TargetType="TextBlock") → precedence lebih tinggi dari TemplatedParent template properties - SymbolIcon internal template set
FontFamily="Segoe Fluent Icons"via TemplatedParent — tapi kalah sama implicit style
Perbaikan:
| Sebelum (❌) | Sesudah (✅) |
|---|---|
App.xaml: Style TargetType="TextBlock" (blanket override) |
Dihapus |
MainWindow.xaml root Grid |
+TextElement.FontFamily="{StaticResource JetBrainsMonoRegular}" |
12 file halaman Pages/*.xaml (root ui:UiPage) |
+TextElement.FontFamily="{StaticResource JetBrainsMonoRegular}" |
Mengapa ini bekerja:
TextElement.FontFamily adalah inherited attached property — prioritinya lebih rendah dari eksplisit
FontFamily="Segoe Fluent Icons" yang di-set di template SymbolIcon. Regular TextBlocks tanpa FontFamily
eksplisit mewarisi JetBrains Mono, sementara SymbolIcon tetap pakai Segoe Fluent Icons.
✅ Verifikasi
- Semua 10 ikon sidebar muncul normal (bukan kotak kosong) ✅
- Font JetBrains Mono di teks label/heading tetap utuh di semua halaman ✅
- Build 0 error, 0 warning ✅
Files Changed (14 files)
| File | Perubahan |
|---|---|
Bloxstrap/App.xaml |
Hapus Style TargetType="TextBlock" global |
Bloxstrap/UI/Elements/Settings/MainWindow.xaml |
+TextElement.FontFamily di root Grid |
Bloxstrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/ExperimentalPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/IntegrationsPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/BootstrapperPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/ChannelPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/AppearancePage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/ShortcutsPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/ModsPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/FastFlagEditorPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/FastFlagEditorWarningPage.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/FastFlagsDisabled.xaml |
+TextElement.FontFamily |
Bloxstrap/UI/Elements/Settings/Pages/GlobalSettingsPage.xaml |
+TextElement.FontFamily |
BoneFish v6.1.0
v6.1.0 — Auto-Reconnect + Documentation Polish 📝
Release date: 2026-07-22
🚀 Fitur Baru — Auto-Reconnect Setelah Crash
Saat Roblox crash (exit code != 0 dan negatif / NTSTATUS error), BoneFish sekarang mendeteksi dan menawarkan tombol "Sambung Ulang":
- Deteksi crash via exit code — Exit code 0 = normal (user klik Leave/X). Negatif (e.g. -1073741819 / 0xC0000005) = crash.
- Session duration guard — Hanya trigger jika sesi > 2 menit (hindari false trigger pas Roblox gagal buka).
- Notifikasi system tray — Balloon notification + klik untuk sambung ulang ke server yang sama (PlaceId + JobId).
- Fallback server baru — Jika JobId sudah tidak valid, join server baru di PlaceId yang sama.
- Manual only — User harus klik notifikasi / tombol Yes. Tidak auto-rejoin.
- Setting toggle —
EnableAutoReconnectPrompt(bool, default true) di Settings.
📖 Documentation — v7.0.0 Preparation
📜 License Fix
Kontradiksi diperbaiki:
LICENSE: Copyright "returnrqt" → BoneFishStudio (+ atribusi Bloxstrap)LICENSE.Bloxstrap: NEW — file lisensi terpisah untuk original Bloxstrap (MIT, pizzaboxer)README.mdTL;DR: ❌ "Commercial use not allowed" → ✅ "Free for any use (personal & commercial)" — MIT-compliant
🔗 Badge & Link Updates
Semua link faizinuha/BoneFish → BoneFishStudio/BoneFish di README.md dan YOUTUBE-CONTENT-SCRIPT.md.
Badge statis → dinamis (shields.io):
| Badge | Sebelum | Sesudah |
|---|---|---|
| Version | v3.5.0 hardcoded |
github/v/release — auto dari tag |
| Downloads | 10k+ hardcoded |
github/downloads/total — auto dari API |
| Build | build-passing statis |
github/actions/workflow/ci-release.yml — real-time |
| License | BoneFish custom |
MIT standar |
| Stars | faizinuha |
BoneFishStudio ✅ |
🌐 Website Link
Tombol "Visit Website" → https://bonefishstudioo.vercel.app di header README.
✨ Key Features — Sinkron dengan Kode Terkini
Rewrite total bagian fitur untuk mencakup semua fitur yang sudah ditambahkan:
- 🎯 Crosshair Overlay (4 style, drag-to-move, color/size/opacity)
- ⌨️ Global Hotkeys (Ctrl+Shift+C/F)
- 🚀 Turbo Mode
- 💾 HDD/SSD Auto-Detection + HDD Balanced preset
- 🛡️ Anti Not-Responding System (3-layer)
- 🔄 Auto-Reconnect After Crash
- 🗑️ Auto-Cache Cleaner
- 🔧 Quick Repair Shortcuts
- 🔋 Battery Saver Mode
- 🚀 Fast Loading Toggle
- 💻 System Info Panel
- 🎨 Custom Wallpaper (upload sendiri)
- 📐 2-column responsive layout
Files Changed
| File | Perubahan |
|---|---|
Bloxstrap/Bloxstrap.csproj |
Version 6.0.0 → 6.1.0 |
Bloxstrap/Models/WatcherData.cs |
+PlaceId, +JobId fields |
Bloxstrap/Bootstrapper.cs |
Pass _joinData.PlaceId/JobId ke Watcher |
Bloxstrap/Models/Persistable/Settings.cs |
+EnableAutoReconnectPrompt |
Bloxstrap/Watcher.cs |
+IsCrashExit(), crash detection, RejoinRoblox() |
Bloxstrap/Resources/Strings.resx |
+4 entries (balloon, message, title, desc) |
Bloxstrap/Resources/Strings.id.resx |
+4 entries |
Bloxstrap/Resources/Strings.Designer.cs |
+4 properties |
LICENSE |
Copyright returnrqt → BoneFishStudio |
LICENSE.Bloxstrap |
NEW — original Bloxstrap MIT license |
README.md |
Badges dinamis, link BoneFishStudio, +website, License fix, Key Features rewrite |
YOUTUBE-CONTENT-SCRIPT.md |
faizinuha → BoneFishStudio |
BoneFish v6.0.0
v6.0.0 — Network Refactor, Fast Loading Toggle, Anti Not-Responding Audit + Night Vision Removal 🧹
Release date: 2026-07-20
♻️ Refactor — Network Flags Ekstrak ke Method Reusable
5 lokasi duplikasi App.FastFlags.SetValue("...") untuk flag network (FIntRakNetPacketRateLimit, DFIntMaxReceivePPS, DFIntMaxSendPPS, DFIntConnectionMTUSize, DFIntOptimizeSendQueue) diekstrak ke AutoOptimizeService.ApplyNetworkOptimizations(). Semua 5 preset (AutoOptimize, Stable, UltraLow, Balanced, ExtremePerformance) panggil method ini — 100% identik, zero drift.
| Sebelum | Sesudah |
|---|---|
| 5× copy-paste 7 baris | 1× method reusable |
| Risiko: update nilai di 1 tempat lupa 4 lainnya | Update di 1 tempat, semua preset ikut |
🚀 Fitur Baru — Fast Loading Toggle
Toggle independen baru "Fast Loading (Percepat Muncul Aset)" di halaman FastFlags (kolom kanan, setelah Force Extreme Mode):
- DFIntTextureCompositorActiveJobs=2 — jika cpuCores >= 4
- FIntRuntimeMaxNumOfThreads=6 — jika cpuCores >= 8
- Stack dengan preset apa pun — bukan preset berdiri sendiri, tapi toggle tambahan
- Persisten — state disimpan di
Settings.EnableFastLoadingFlags - Re-apply otomatis — setiap kali preset diterapkan, Fast Loading flags di-set ulang jika toggle ON
Flag yang TIDAK dipakai (ditemukan melalui riset Allowlist):
FFlagEnableAsyncResourceLoading❌ Tidak di AllowlistFIntRenderChunkLODThreshold❌ Tidak di AllowlistFFlagEnableTextureStreamingFix❌ Tidak di AllowlistFIntPartSizeBoostThreshold❌ Tidak di Allowlist
📋 Audit — Anti Not-Responding (Long Session) — Laporan Lengkap
Dokumentasi lengkap di XML comment ApplyExtremePerformancePreset():
| Aspek | Temuan |
|---|---|
| Status ACTIVE | Manual only (button click). Tidak auto-activate. |
| Visual flags | FFlagDebugSSAOForce=False, FIntSSAOMipLevels=0, FIntRobloxGuiBlurIntensity=0, FIntRenderGrainScale=0 — efek kosmetik, tidak gameplay-breaking |
| Anti-freeze flags | DFIntMaxActiveAnimationTracks=32, 7 telemetry flags, FIntRenderLocalLightFadeInMs=0 |
| Keputusan | Tidak dibuat toggle terpisah. Preset ini SATU PAKET agresif untuk target low-end extreme (dual-core, <4GB RAM). |
🧹 Pembersihan — Night Vision Dihapus Total
FFlagFastGPULightCulling3 dan FFlagNewLightAttenuation sudah deprecated sejak September 2025 (Roblox Allowlist). Client Roblox abaikan flag ini. Semua kode dihapus:
Settings.EnableNightVision→ dihapusNightVisionEnabledproperty → dihapusToggleNightVision()+ToggleNightVisionCommand→ dihapusCtrl+Shift+Ndari HotkeyService → dihapusNightVisionEnabled = falsedari semua preset method → dihapus
🎯 Crosshair — Preview Panel Real-Time
Panel preview crosshair di halaman FastFlag New menampilkan perubahan style/size/opacity/color secara real-time via binding ke CrosshairColor property baru.
📐 Layout — Redesign 2 Kolom (Responsive)
3 halaman Settings di-redesign dari 1 kolom panjang jadi 2 kolom kiri-kanan:
- AppearancePage (232→2 kolom): Theme+Language kiri, Bootstrapper+Custom kanan
- ChannelPage (191→2 kolom): Fishstrap kiri, Channel info kanan
- IntegrationsPage (162→2 kolom): Activity Tracking kiri, Discord RPC kanan
Tidak diubah (konten pendek/cukup 1 kolom): Mods(114), Bootstrapper(131), FastFlagEditor(100), Shortcuts(89), GlobalSettings(90). Responsive fallback otomatis ke 1 kolom jika lebar window < 700px.
🔧 GAP Fixes Lainnya
| GAP | Fix |
|---|---|
| GAP 1 — HotkeyService leak | Dikonfirmasi pakai HwndSource (bukan Thread). IsWatcherRunning() + CleanupServices() sudah terpasang. |
| GAP 2 — Custom Loading Screen | Flow diverifikasi: Pilih gambar → NewState → Execute() → copy file ✅. Tidak ada bug. |
| GAP 5 — Crosshair drag-to-move | Kode Window_MouseDown/Move/Up + SavePosition() diverifikasi ✅. Hanya 1 instance setelah FIX 1. |
Files Changed
| File | Perubahan |
|---|---|
Bloxstrap/Bloxstrap.csproj |
Version 5.5.3 → 6.0.0 |
Bloxstrap/Integrations/AutoOptimizeService.cs |
+3 methods: ApplyNetworkOptimizations(), ApplyFastLoadingFlags(), RemoveFastLoadingFlags() |
Bloxstrap/UI/ViewModels/Settings/FastFlagsViewModel.cs |
Refactor 5→1 network call. +EnableFastLoadingFlags. +Audit doc di ApplyExtremePerformancePreset(). Night Vision dihapus. |
Bloxstrap/Models/Persistable/Settings.cs |
+EnableFastLoadingFlags (bool, default false) |
Bloxstrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml |
+Toggle Fast Loading |
Bloxstrap/UI/Elements/Settings/Pages/AppearancePage.xaml |
Redesign 2 kolom |
Bloxstrap/UI/Elements/Settings/Pages/ChannelPage.xaml |
Redesign 2 kolom |
Bloxstrap/UI/Elements/Settings/Pages/IntegrationsPage.xaml |
Redesign 2 kolom |
Bloxstrap/Resources/Strings.resx |
+2 entries Fast Loading |
Bloxstrap/Resources/Strings.id.resx |
+2 entries Fast Loading |
BoneFish v5.5.3
v5.5.3 — Fix: FastFlags ComboBox Reset + ProductVersion Build Config
Release date: 2026-07-18
🐛 FastFlags Enum ComboBox — Nilai Tidak Bertahan
Bug: Saat FastFlags MSAA / RenderingMode / TextureQuality telah diaktifkan, membuka halaman FastFlags kembali membuat kontrol terlihat nonaktif/ter-reset ke posisi default.
Root Cause: Binding Text pada ComboBox untuk tipe enum dapat menyebabkan nilai ter-parse ulang dan mengubah state yang sudah disimpan saat halaman dibuka ulang.
Fix: Ganti Text="{Binding ...}" → SelectedItem="{Binding ...}" pada 3 ComboBox:
| ComboBox | Properti Binding |
|---|---|
| MSAA Level | SelectedMSAALevel |
| Rendering Mode | SelectedRenderingMode |
| Texture Quality | SelectedTextureQuality |
Ketiganya kini konsisten menggunakan SelectedItem, menjaga nilai enum tetap stabil saat halaman dibuka ulang.
🔧 ProductVersion — Selalu Terisi di Semua Build Config
Bug: ProductVersion pada binary kadang kosong di Debug build, menyebabkan logic HandleUpgrade() di Installer.cs salah mendeteksi versi dan memunculkan dialog version mismatch.
Fix: Tambahkan AssemblyVersion dan AssemblyInformationalVersion eksplisit di csproj:
<AssemblyVersion>$(Version)</AssemblyVersion>
<AssemblyInformationalVersion>$(Version)</AssemblyInformationalVersion>Dengan $(Version), cukup update <Version> di satu tempat — AssemblyVersion dan AssemblyInformationalVersion ikut otomatis. Ini memastikan FileVersionInfo.GetVersionInfo().ProductVersion selalu mengembalikan nilai yang benar di semua build config (Debug, Release, CI/CD).
Files Changed
| File | Perubahan |
|---|---|
Bloxstrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml |
3 ComboBox: Text → SelectedItem |
Bloxstrap/Bloxstrap.csproj |
+<AssemblyVersion>, +<AssemblyInformationalVersion> |
BoneFish v5.5.0
v5.5.0 — Plan 1 Fixes + Plan 2: 4 Fitur Baru 🚀
Release date: 2026-07-17
🔧 Plan 1 — FastFlag New Bug Fixes
1. 🔑 Global Hotkey Tidak Berfungsi
- 🐛 Isu:
HotkeyServicecuma berjalan di Watcher process. Toggle ON/OFF di Settings cuma nyimpen setting, gak benar-benar start/stop service. - 🔧 Fix:
ExperimentalViewModel.EnableHotkeyssekarang start/stopHotkeyServicelangsung dari Settings UI — gak perlu nunggu Watcher process.
2. 🎯 Crosshair Tidak Muncul
- 🐛 Isu:
CrosshairService.Instancenull di Settings process karena Watcher belum jalan. - 🔧 Fix:
ExperimentalViewModel.EnableCrosshairsekarang create & startCrosshairServicesecara lokal jika Instance null.
3. 🖼️ Wallpaper Tidak Terlihat di UI
- 🐛 Isu:
BackgroundImageproperty ada di ViewModel tapi tidak di-bind ke XAML — wallpaper gak pernah tampak. - 🔧 Fix: Ditambahkan
ImageBrushbinding +ProgressBarloading indicator. Background sekarang tampil dengan opacity 0.15. - 🐛 Plus: Wallpaper Tidak Full Screen — background cuma selebar konten karena di-daleman ScrollViewer.
- 🔧 Fix: Restructure page layout: manual
Grid+ScrollViewer— background sekarang full viewport! ✅
4. 🧹 Wallpaper Tidak Hapus Saat Dinonaktifkan
- 🔧 Fix:
AppBackgroundService.ClearCache()dipanggil saat disable. Random mode mati → restore saved background.
5. 📂 Custom Background Fallback images/img/
- 🔧 Fix: Folder
images/img/otomatis discan sebagai fallback custom background. Browse default ke folder ini.
🚀 Plan 2 — 4 Fitur Baru
Fitur A 🔧 — Repair Shortcut Otomatis
- Method baru
Installer.RepairShortcuts()— verifikasi target shortcut Desktop & Start Menu, recreate jika rusak/salah path - UI: Tombol "🔧 Perbaiki Sekarang" di halaman Shortcuts + snackbar notifikasi hasil
- Manual action — tidak otomatis di background, user klik sendiri saat butuh
Fitur B 🗑️ — Auto-Cleaner Cache Roblox
- Service baru
CacheCleanerService.cs— two-phase cleanup:- Hapus file lebih tua dari
maxAgeDays(default 14 hari) - Jika total ukuran > 500MB, hapus file terlama sampai di bawah limit
- Hapus file lebih tua dari
- Safety: Cek dulu apakah Roblox sedang berjalan — skip cleanup jika ada proses Roblox aktif
- Startup: Non-blocking
Task.RundiApp.xaml.cs.OnStartup()— jalan sekali per sesi - Settings baru:
EnableAutoCacheCleanup(bool, default true),CacheCleanupMaxAgeDays(int, default 14) - UI: Toggle "Bersihkan cache otomatis" di halaman FastFlag New (Cache & Storage section)
Fitur C 💻 — Panel System Info di UI
- Card baru di halaman FastFlags (sebelum InfoBar warning) menampilkan:
- CPU Cores, RAM terdeteksi, Storage type (HDD/SSD), System Tier
- Data dari
AutoOptimizeService.GetSystemInfo()(reuse method existing) - Auto-refresh setiap kali
RequestPageReloadEventterpicu melaluiOnRequestPageReload()
Fitur D 🔋 — Mode Hemat Baterai untuk Auto-Wallpaper
- Helper baru
BatteryHelper.cs— deteksi status baterai viaSystem.Windows.Forms.SystemInformation.PowerStatus - Logic: Jika
EnableBatterySaverForWallpaperON + laptop tidak dicharge + ada baterai → skip auto-refresh wallpaper - Fallback: PC desktop (tanpa baterai) — toggle otomatis tersembunyi dari UI
- UI: Toggle "Hemat Baterai (Auto-Wallpaper)" di halaman FastFlag New — hanya muncul jika
HasBattery() == true
Files Changed (15 files)
| File | Perubahan |
|---|---|
Bloxstrap/Bloxstrap.csproj |
Version 5.3.0 → 5.5.0 |
Bloxstrap/Models/Persistable/Settings.cs |
+3 settings: EnableAutoCacheCleanup, CacheCleanupMaxAgeDays, EnableBatterySaverForWallpaper |
Bloxstrap/Integrations/CacheCleanerService.cs |
NEW — auto cache cleanup service |
Bloxstrap/Utility/BatteryHelper.cs |
NEW — battery detection utility |
Bloxstrap/Installer.cs |
+RepairShortcuts() method |
Bloxstrap/App.xaml.cs |
+Auto cache cleanup di startup |
Bloxstrap/Integrations/AppBackgroundService.cs |
+Fallback images/img/ scanning |
Bloxstrap/Paths.cs |
+CustomImagesDir, +GetCustomUserImages() |
Bloxstrap/UI/ViewModels/Settings/ExperimentalViewModel.cs |
Fix hotkey/crosshair/wallpaper + battery saver + cache cleanup toggle |
Bloxstrap/UI/Elements/Settings/Pages/ExperimentalPage.xaml |
Restructure full-screen background + battery/cache toggles |
Bloxstrap/UI/ViewModels/Settings/FastFlagsViewModel.cs |
+SystemInfoText, +OnRequestPageReload() |
Bloxstrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml |
+System Info card |
Bloxstrap/UI/ViewModels/Settings/ShortcutsViewModel.cs |
+RepairShortcutsCommand, +RequestNotificationEvent |
Bloxstrap/UI/Elements/Settings/Pages/ShortcutsPage.xaml |
+Repair button + snackbar |
Bloxstrap/UI/Elements/Settings/Pages/ShortcutsPage.xaml.cs |
+Notification handler |
BoneFish v5.3.0
v5.3.0 — Optimasi Total: Rounding Fix, HDD Detection, Custom Wallpaper, Memory Leak Fix 🚀
Release date: 2026-07-12
🎯 PART 1 — Optimasi Performa Laptop Low-End
🔧 Rounding Trap Fix — RAM 8GB Gak Kesiplah!
Dulu: totalMemGB = bytes / (1024^3) → integer division truncate ke bawah. Laptop 8GB yang lapor 7.6GB (karena reserved BIOS/iGPU) kebaca jadi 7GB → salah klasifikasi ke LowEnd! 😤
Sekarang: Pake MB comparison dengan toleransi:
- 8GB class →
totalMemMB >= 7800(toleransi ~200MB reserved) - 16GB class →
totalMemMB >= 15600 - 4GB class →
totalMemMB < 3800
Laptop 8GB lo sekarang bener-bener kebaca sebagai MidRange! ✅
💾 HDD Detection — Bukan Tebak-Tebakan Lagi!
Dulu: Tebak vendor name via WMI ("Samsung", "WDC", "Kingston" dll) — sering salah, apalagi kalo vendor bikin HDD + SSD.
Sekarang: DeviceIoControl + IOCTL_STORAGE_QUERY_PROPERTY + StorageDeviceSeekPenaltyProperty:
- Buka
\\.\C:viaCreateFile(volume handle, gak perlu admin) - Tanya driver storage: "lo punya seek penalty?" →
IncursSeekPenalty = 0= SSD,1= HDD - 100% presisi, zero dependencies (
System.Managementdihapus ✅) - Cache di static field — query cuma sekali seumur proses
🚀 HDD Balanced Preset — Otomatis Aktif!
Kalo storage lo HDD + tier LowEnd/MidRange + belom pilih preset manual → HDD Balanced otomatis ON!
Basis visual: SAMA dengan ExtremePerformance (FRM=3, texture rendah, SSAO off, LOD 250) — sudah terbukti gak bikin game gelap
+ I/O khusus HDD:
- Thread dibatasi (
FIntRuntimeMaxNumOfThreads=4) — head HDD gak oleng - Async compression (
DFFlagEnableRequestAsyncCompression=True) — aset cepet di-download - Texture compositor 2 thread (
DFIntTextureCompositorActiveJobs=2) — komposisi lancar - FPS cap 30 — kurangi render frame = kurangi I/O pipeline
- Telemetry mati total — kurangi write ke disk
💾 Persistence Fix — Setting Lo Gak Ilang Lagi!
- ForceExtremeMode + ExtremeModeFpsTarget: Sekarang auto
Save()tiap kali diubah 🛡️ - MainWindow closing:
App.Settings.Save()dipanggil sebelum window beneran nutup — gak ada lagi setting ilang 🎯
🎨 PART 2 — Wallpaper System Overhaul
🖼️ WallpaperService.cs — DIHAPUS!
Service yang ganti wallpaper DESKTOP WINDOWS lo (bukan background app) udah dihapus total. 0 references, 0 sisa.
🎨 Custom Background — Pake Gambar Lo Sendiri!
Sekarang lo bisa pilih gambar kustom dari komputer lo sebagai wallpaper background BoneFish!
Cara pake:
- Buka Settings → FastFlag New → Wallpaper Background
- Klik Browse... → pilih file
.jpg/.jpeg/.png - Langsung muncul! Background random mode otomatis mati
Validasi otomatis: Kalo file ilang / rusak → fallback ke Default + log error
💾 Background Persistence — Gak Lupa Lagi!
SelectedBackgroundType+BackgroundRandomMode= background lo keinget terus- Mode Random ON: Ganti background tiap buka app
- Mode Random OFF: Background tetap sesuai pilihan terakhir (Default/Cool/Quality/Extra/Custom)
- Startup auto-load: Kalo random mode ON → random. Kalo ada saved type → load saved
- Exit pre-select: Pas app ditutup, kalo random mode ON → pilih random untuk sesi berikutnya
🧹 Memory Leak Fix — CrosshairService Lazy Start
- Dulu: Thread + dispatcher CrosshairService jalan TERUS meski EnableCrosshair = false (boros ~2-5 MB)
- Sekarang:
Instancedi-set di constructor,Start()cuma dipanggil kalo crosshair beneran ON - Hotkey
Ctrl+Shift+Ctetep bisa lazy-start viaToggle()🎯
Files Changed (13 files)
| File | Perubahan |
|---|---|
AutoOptimizeService.cs |
Rounding trap fix, DeviceIoControl HDD detection, HDD Balanced preset, UserHasManualPreset() |
Bloxstrap.csproj |
Version 5.1.0 → 5.3.0, hapus System.Management NuGet |
Settings.cs |
+SelectedBackgroundType, +BackgroundRandomMode |
FastFlagsViewModel.cs |
+try/catch Save() di ForceExtremeMode + ExtremeModeFpsTarget |
MainWindow.xaml.cs |
+App.Settings.Save() di Closing |
AppBackgroundService.cs |
+Custom type, +GetCustomBackgroundAsync(), +_customCache |
ExperimentalViewModel.cs |
+Custom/Browse commands, +LoadSavedBackgroundAsync(), +BackgroundRandomMode |
ExperimentalPage.xaml |
+Custom row, +Browse button, +Mode Random toggle |
App.xaml.cs |
+Startup pre-select, +exit pre-select di SoftTerminate() |
WallpaperService.cs |
DELETED |
BoneFish v5.1.0
v5.1.0 — Crosshair, Hotkey, Turbo Mode, Wallpaper Restore + Memory Fix 🧹
Release date: 2026-07-12
🎯 Crosshair Overlay — Bikin Sendiri Crosshair Lo!
Bosan sama crosshair game yang jelek? Sekarang lo bisa bikin crosshair kustom sendiri! Overlay transparan di tengah layar yang bisa lo:
- Ganti style — ada 4: Cross, Dot, Circle, sama CrossDot (campuran Cross + Dot)
- Ganti warna — tinggal pencet salah satu dari 8 warna preset, dari ijo lime sampe putih
- Atur ukuran — dari kecil (20px) sampe gede (200px)
- Atur transparansi — dari 10% sampe 100%
- Drag & drop — tinggal klik & geser ke posisi mana aja, posisinya bakal keinget terus
- Toggle pake hotkey — pencet
Ctrl+Shift+Cbuat munculin/sembunyiin
Dimana? Settings → FastFlag New → Crosshair. Tinggal enable, langsung muncul!
⌨️ Global Hotkeys — Pake Keyboard Buat Semua!
Bosan harus alt-tab ke settings buat matiin/ngewaktifin fitur? Sekarang lo bisa pake keyboard shortcut! Works meski BoneFish di-minimize ke system tray:
| Tombol | Fungsi |
|---|---|
Ctrl+Shift+C |
Tampilin/Sembunyiin Crosshair |
Ctrl+Shift+F |
Tampilin/Sembunyiin FPS Monitor |
Ctrl+Shift+N |
Aktifin/Nonaktifin Night Vision |
Bisa lo matiin kalo ganggu di Settings → FastFlag New → Enable Hotkeys.
🚀 Turbo Mode — Satu Klik, PC Lo Ngebut!
Fitur paling gacor buat laptop kentang! Tinggal toggle ON, dan BoneFish langsung:
- Paksa Extreme Performance mode — sama kayak Potato Mode paling agresif
- Terapin FastFlags agresif — turunin render quality, tekstur low-res, shadow dikurangin
- Auto-reset pas restart — pas lo buka BoneFish lagi, Turbo Mode balik ke OFF otomatis. Gak bakal ngehek settingan permanen lo!
Pas di-click OFF — semua balik normal + FastFlags dihapus. Aman cuy!
🖼️ Wallpaper Background — Restored & Fixed!
Fitur wallpaper background di halaman FastFlag New balik lagi! Sekarang pake async loading jadi gak bikin UI lemot. Bisa pilih 4 wallpaper: Default, Cool, Quality, Extra.
Yang di-fix:
- ✅ Loading pake async + MemoryStream — gak blocking UI thread kayak dulu
- ✅ Auto-load pas buka halaman (sebelumnya cuma muncul kalo toggle manual)
- ✅ Cache 4 gambar — gak loading ulang tiap ganti halaman
🐛 Bug Fixes — Crosshair & Hotkeys Gak Jalan
Masalah: CrosshairService & HotkeyService di-init di DALEM blok EnableActivityTracking. Artinya:
- Kalo user matiin Activity Tracking → Crosshair & Hotkeys GAK PERNAH JALAN
- Kalo file log Roblox ilang (self-update) → Crosshair & Hotkeys GAK PERNAH JALAN
Fix: Pindahin inisialisasi ke LUAR blok ActivityTracking. Sekarang Crosshair & Hotkeys jalan INDEPENDEN — gak peduli tracking hidup/mati.
🏷️ Rename: "Experimental" → "FastFlag New"
Halaman Experimental sekarang bernama FastFlag New biar lebih jelas isinya.
🧠 Optimasi Memory — Lazy Start & Anti Leak
1. CrosshairService — Lazy Start 🎯
- Dulu: thread + dispatcher jalan TERUS meski crosshair mati (boros ~2-5 MB)
- Sekarang: thread cuma dibuat kalo EnableCrosshair ON. Kalo user pencet hotkey
Ctrl+Shift+C, auto lazy-start.
2. ActivityWatcher History — Auto-Prune 📜
- History game yang pernah lo mainin sekarang auto di-prune ke max 50 entries. Gak bakal numpuk sampe ribuan.
3. DNS Cache — Auto Cleanup 🌐
- Cache DNS yang expired (>5 menit) otomatis dibersihin tiap kali lookup. Gak numpuk.
4. HotkeyService — Constructor Pattern 🔧
- Instance sekarang di-set di constructor (konsisten sama CrosshairService).
🔧 Fix Lainnya
- HandleUpgrade Auto-Redirect — pas lo jalanin BoneFish versi lama dari folder download, sekarang otomatis ngarahin ke yang udah ke-install. Gak bakal muncul dialog aneh-aneh lagi.
- 🐛 Wallpaper auto-load di startup — sebelumnya wallpaper cuma muncul kalo user toggle ON/OFF manual. Sekarang otomatis loading pas buka halaman FastFlag New! (fix: pindahin loading dari MainWindow yang salah DataContext ke ExperimentalViewModel).
BoneFish v5.0.1
v5.0.1 - FIx Installers
Release date: 2026-07
- Mmerpbaiki Error Yang menimpa versi terbaru
BoneFish v5.0.0
v5.0.0 - Apply & Restart, Dark Game Fix, Flag Verification & Auto-Optimize Guard
Release date: 2026-07-05
Major release — menambahkan Apply & Restart Roblox, memperbaiki root cause game gelap, verifikasi flag otomatis, dan proteksi AutoOptimizeService terhadap preset user.
New Features — 🚀 Apply & Restart Roblox
Tombol baru di halaman Fast Flags yang memungkinkan user menerapkan semua flag dan restart Roblox dalam satu klik.
Cara kerja:
- User pilih preset / atur flag sesuai keinginan
- Klik 🚀 Apply & Restart Roblox
- Konfirmasi dialog muncul
- Otomatis: Save FastFlag + Settings → Kill Roblox + system tray → Launch BoneFish bootstrapper
- Settings window tertutup, bootstrapper mengambil alih
Yang dilakukan:
- Save semua
App.FastFlagsdanApp.Settingske disk - Kill proses
RobloxPlayerBetadanRobloxCrashHandler(async, UI tidak freeze) - Signal
BoneFish-WatcherExitEventuntuk clean up system tray - Launch
BoneFish.exe -playeruntuk restart dengan flag baru - Tutup settings window agar tidak ada 2 window aktif
New Features — ✅ FastFlag Verification (VerifyAndNotify)
Setiap kali user mengapply preset, sistem sekarang membaca kembali ClientAppSettings.json dari disk dan menghitung jumlah flag yang berhasil ditulis.
Contoh notifikasi:
✅ Ultra Low aktif — 32 FastFlag berhasil ditulis ke disk.✅ Balanced aktif — 28 FastFlag berhasil ditulis ke disk.✅ Potato Mode aktif — 41 FastFlag berhasil ditulis ke disk.✅ Stable aktif — 25 FastFlag berhasil ditulis ke disk.
Tujuan: memastikan user yakin flag sudah benar-benar tersimpan sebelum restart.
New Features — ⏳ Loading Indicator
ProgressRing + teks "Menerapkan preset..." muncul saat user mengklik preset, menggantikan tombol sementara. Snackbar timeout dinaikkan dari 3 detik ke 5 detik agar user sempat membaca verifikasi.
Bug Fixes — 🌑 Game Gelap (Root Cause Found & Fixed)
Penyebab sesungguhnya ditemukan dengan membaca file ClientAppSettings.json yang BENAR-BENAR ada di disk (bukan hanya di kode):
| Flag di Disk | Nilai Sebelumnya | Dampak |
|---|---|---|
DFIntDebugFRMQualityLevelOverride |
1 | FRM minimum → lighting pipeline rusak total |
FIntRenderShadowIntensity |
0 | Semua bayangan dimatikan → area gelap |
DFFlagDebugPauseVoxelizer |
True | Voxelizer dimatikan → baked lighting mati |
FIntCSGVoxelizerFadeRadius |
0 | Tidak ada transisi lighting |
3 flag terakhir (shadow=0 + voxelizer pause + fade=0) bersama FRM=1 MEMATIKAN seluruh pipeline lighting Roblox — bukan hanya mengurangi, tapi benar-benar mematikan. Ini menyebabkan game (terutama horror/RPG seperti Phasmophobia) menjadi hitam di area yang seharusnya terang.
Fix yang diterapkan:
-
ExtremePerformance preset (
FastFlagsViewModel.cs):- FRM:
1→3(masih sangat ringan, tapi preserve lighting pipeline) - HAPUS
FIntRenderShadowIntensity = 0(shadow biarkan default Roblox) - HAPUS
DFFlagDebugPauseVoxelizer = True(voxelizer biarkan jalan) - HAPUS
FIntCSGVoxelizerFadeRadius = 0(fade biarkan default)
- FRM:
-
AutoOptimizeService (
AutoOptimizeService.cs):- FRM:
1→3(sama, untuk auto-detected low-end) - HAPUS 3 flag shadow/voxelizer yang sama
- FRM:
-
UltraLow preset (
FastFlagsViewModel.cs):- FRM:
1→5(sedikit lebih tinggi dari Extreme, preserve lighting)
- FRM:
Bug Fixes — 💾 Save Order Bug (Preset Tidak Tersimpan ke Disk)
Root cause: Di ApplyUltraLowSpecPreset() dan ApplyExtremePerformancePreset(), SelectedPreset di-set SETELAH App.Settings.Save(). Jadi nama preset tidak pernah tertulis ke disk.
Akibat: Saat bootstrapper restart, AutoOptimizeService.CheckAndApply() baca SelectedPerformancePreset dari disk → preset tidak ditemukan → OVERWRITE semua flag user dengan FRM=1 + shadow=0 + voxelizer=True → game gelap.
Fix: Pindahkan SelectedPreset = "..." SEBELUM App.Settings.Save() di kedua method. Sekarang preset tertulis ke disk SEBELUM save, sehingga bootstrapper membaca nilai yang benar.
Bug Fixes — 🛡️ AutoOptimizeService Overwrite Guard
Root cause: ApplyAggressiveOptimizations() di AutoOptimizeService.cs berjalan setiap kali BoneFish launch dan OVERWRITE preset pilihan user — memaksa FRM=1, shadow=0, voxelizer=True meskipun user sudah memilih preset lain.
Fix: Early-return check di ApplyAggressiveOptimizations(): jika user sudah memilih preset manual (UltraLow/Balanced/Stable/ExtremePerformance), skip semua aggressive overrides dan return. Preset user dihormati.
Bug Fixes — 🔁 Auto-Upgrade Downgrade Loop pada HandleUpgrade()
Gejala: Dialog InstallChecker_VersionLessThanInstalled ("Versi BoneFish yang kamu jalankan adalah versi lama…") muncul tiap kali launch untuk user yang menjalankan BoneFish dari staging path auto-updater (%localappdata%\Temp\BoneFish\Updates\BoneFish.exe). Bukan cuma spam dialog — kalau user klik Yes, kode HandleUpgrade() di Installer.cs tetap lanjut ke File.Copy(Paths.Process, Paths.Application, true), yaitu staging binary di-copy ke lokasi install canonical. Kalau staging binary lebih lama dari installed, install canonical di-downgrade. Launch berikutnya: dialog fire lagi → user klik Yes → downgrade lagi. Loop tak berhingga sampai user secara manual hapus staging binary atau reinstall penuh.
Akar masalah: Di HandleUpgrade(), logika lama memblok File.Copy hanya kalau MD5 paths cocok atau kalau user klik No pada dialog. Untuk auto-upgrade session, dialog tetap ditampilkan (tidak di-skip meskipun isAutoUpgrade=true), dan setelah Yes, tidak ada cek apakah currentVer < existingVer (running < installed) — yang justru adalah kondisi downgrade yang harus di-block.
Fix yang diterapkan di Bloxstrap/Installer.cs HandleUpgrade():
- Pre-dialog early-return khusus auto-upgrade. Jika
isAutoUpgrade=trueANDcurrentVer < existingVer, langsungreturnsebelum dialog pertama sempat fire. Tidak adaFile.Copy, tidak ada downgrade, tidak ada yes/no dialog. - Log informatif 4 baris menggantikan dialog — user bisa langsung baca dari
BoneFish_*.logapa yang terjadi dan bagaimana cara recover:- Versi running vs installed
- Path staging vs path install
- Penyebab umum (stale staging binary dari versi sebelumnya)
- Solusi: hapus staging binary atau reinstall untuk membuat install canonical jadi build aktif
- Manual downgrade flow tetap utuh. Untuk run non-auto-upgrade (user klik kanan exe dari folder atau dari shortcut ke lokasi lama), dialog "older version" tetap ditampilkan dengan perilaku existing — supaya user tetap aware kalau mereka sengaja menjalankan binary lama.
Skenario yang sekarang ter-handle benar:
| Skenario | Sebelum fix | Sesudah fix |
|---|---|---|
| Auto-upgrade dengan staging lebih lama (running < installed) | Dialog Yes/No → kalau Yes, install canonical DOWNGRADE → loop | Silent abort + log informatif + no copy |
| Auto-upgrade dengan staging lebih baru (running > installed) | Quiet upgrade — sudah benar sebelumnya | Quiet upgrade — tetap |
| Auto-upgrade dengan staging = installed (MD5 match) | Early-return no-op — sudah benar sebelumnya | Early-return no-op — tetap |
| Manual run dengan binary lebih lama dari install | Dialog Yes/No — sudah benar sebelumnya | Dialog Yes/No — tetap (perilaku existing dipertahankan) |
Cara recover user yang sudah terkena downgrade loop:
- Delete
%localappdata%\Temp\BoneFish\Updates\BoneFish.exe - Run installer BoneFish dari canonical install location (
%localappdata%\Programs\BoneFish\BoneFish.exe) — sekarang akan rebuild staging fresh dengan versi sama dengan install - Atau reinstall penuh via
unins000.exe+ install dari distribusi terbaru
Performance Presets — Deskripsi Lengkap
BoneFish menyediakan 5 preset performa untuk menyesuaikan Roblox dengan spesifikasi perangkat:
🤖 Auto-Optimize (Default)
- Target: Semua spesifikasi
- Filosofi: Deteksi hardware otomatis, apply optimasi yang sesuai
- Yang diatur: FRM=21, Texture=Level0, MSAA=x1, Mesh=LOD0, D3D11, Disable Animations, Low Memory Mode
- Cocok untuk: User yang tidak ingin repot atur manual
🛡️ Stable
- Target: Semua spesifikasi, prioritaskan stabilitas
- Filosofi: Auto-Optimize base + Network optimization + Nonaktifkan background updates
- Yang diatur: Sama seperti Auto-Optimize + Network flags (No Delay) + BackgroundUpdates=False + FakeBorderlessFullscreen=False
- Cocok untuk: User yang sering crash/freeze, ingin pengalaman paling stabil
🐌 Ultra Low-Spec
- Target: PC kentang (2 core, 2-4GB RAM, Intel HD)
- Filosofi: Aggressif tapi TIDAK mematikan lighting
- Yang diatur: FRM=5, Texture=Level0, MSAA=x1, LOD=250, FPS=30, LightUpdates=4, Compositor=1, Animations Off, Low Memory Mode
- Cocok untuk: Laptop lawas, PC integrated graphics, ingin main Roblox di spek minimum
🥔 Extreme Performance (Potato Mode)
- Target: PC paling lemah (2 core, <4GB RAM, no GPU dedicated)
- Filosofi: Maksimal performa, pertahankan VISIBILITAS game
- Yang diatur: FRM=3, Texture=Level0, MSAA=x1, LOD=250/500/750, FPS=24-60 (configurable), LightUpdates=4, Compositor=1, Telemetry Off, Animations Off, Low Memory Mode
- Yang TIDAK dilakukan (perubahan dari v4.4.0):
- ❌ TIDAK mematikan shadow (sebelumnya
FIntRenderShadowIntensity=0→ game gelap) - ❌ TIDAK pause voxelizer (sebelumnya
DFFlagDebugPauseVoxelizer=True→ lighting baked mati) - ❌ TIDAK paksa Voxel lighting (merusak game ShadowMap/Future)
- ❌ TIDAK disable PostFx (visual game rusak)
- ❌ TIDAK ubah SkyGray (atmosphere berubah)
- ❌ TIDAK ubah LightAttenuation (model lighting berubah)
- ❌ TIDAK mematikan shadow (sebelumnya
- Cocok untuk: Device paling lemah yang ingin tetap bisa MELIHAT game dengan jelas
⚖️ Balanced
- Target: Mid-range PC (4 core, 8GB RAM)
- Filosofi: Keseimbangan antara performa dan visual
- **Yang ...