Skip to content

Binot v1.1.8

Choose a tag to compare

@LexicoON LexicoON released this 18 Sep 22:59
· 61 commits to main since this release
9e4d31c

Obinot v1.1.8 — Changelog

Version: 1.1.8 (versionCode 20)

For Everyone

✨ Highlights

  • The app is now called Obinot (a fork of Binot) so it can coexist with the original on the same device. Existing notes, audio, and backups are 100% compatible.
  • 7 color palette styles to theme the whole app (Tonal Spot, Vibrant, Expressive, Fruit Salad, Neutral, Fidelity, Monochrome).
  • Colored labels — assign a color to each label so you can spot them at a glance in History and the reader.
  • Auto Compression — long recordings get shrunk automatically before being sent to AI providers that have a size limit.
  • Unified file picker (BETA) — one sheet that lists both device audio files and exported .binot notes.
  • Drag & drop import — drag audio files or .binot notes into the app from a file manager.

🆕 New Features

  • Rebranded to Obinot across the app, notifications, exports, and share messages.
  • Color palette selector in Settings, powered by MaterialKolor.
  • Label colors with a swatch picker (including a "Dynamic" option that follows the theme).
  • Auto Compression with three levels: Off, Balanced (24 MB target), Max (15 MB target).
  • Live Transcript toggle (BETA) — in Accurate mode you can now choose whether the phone’s recognizer runs alongside the recorder. Off by default because it fails on many devices.
  • Native Audio Picker (BETA) — Settings toggle to use Obinot’s own picker instead of the system file picker.
  • Unified picker with two tabs: Audio and .binot Notes, plus a "Browse files" fallback.
  • Drag & drop in both the Record and History screens, with a visual “Drop to import” overlay.
  • Enhanced Markdown reader — tables, code blocks, blockquotes, links, KaTeX, and Mermaid diagrams all render properly.
  • Per-task AI models — lighter models for titles/explanations, heavier models for transcription/processing.
  • Better background-recording notification with a native chronometer and no flicker.
  • Dynamic mode — the old “Mix” mode has been renamed for clarity (same feature).

🐛 Bug Fixes

  • Fixed color palette styles being ignored when the device supported wallpaper colors.
  • Fixed Fruit Salad/Rainbow behavior: the label now maps to a genuinely colorful palette.
  • Fixed Audio Compressor hanging on long recordings; rewritten to be reliable and to report progress.
  • Fixed compression stalls being reported as “Unknown error”; now they fail fast with a clear message.
  • Fixed buttons sometimes not bouncy on very quick taps; the squish is now forced when needed.
  • Fixed FAB shadow glitch while scrolling in History.
  • Fixed drag & drop rejecting valid files whose MIME type wasn’t audio/*.
  • Fixed labels rendering gray instead of using the theme color when no color was assigned.
  • Fixed Audio picker showing “no files” because the storage permission was never requested.
  • Fixed live transcript caption saying “disabled” even when it was running.
  • Fixed Markdown losing KaTeX/Mermaid renders while scrolling (no more “blank until re-render”).
  • Fixed several Material 3 Expressive build issues (DropdownMenu, AnimatedVisibility, ButtonGroup).
  • Fixed notification updating every second during background recording.

For Developers

  • Rebrand: app_name, Theme.Obinot, ObinotFilePickerSheet, share MIME text, and export filenames updated. DB schema and .binot format unchanged for compatibility.
  • New data layer: LabelEntity, LabelDao, LabelRepository; DB bumped to v7 with MIGRATION_6_7 for the labels table.
  • Theme: integrated MaterialKolor (DynamicMaterialExpressiveTheme); ColorStyle enum (7 values) mapped to PaletteStyle; wallpaper color now used only as seed.
  • AudioCompressor: rewritten from sync dequeue*Buffer loop to async MediaCodec.Callback with dedicated HandlerThreads, a bounded LinkedBlockingQueue for backpressure, stall detection, and hard timeout.
  • Live Transcript: new LIVE_TRANSCRIPT_KEY in SettingsRepository; AudioRecorderManager.startRecording(...) takes liveTranscriptEnabled; default OFF.
  • Native picker toggle: NATIVE_PICKER_KEY; ObinotFilePickerSheet replaces AudioFilePickerSheet (kept as alias).
  • Drag & drop wired via Modifier.dragAndDropTarget in RecordScreen and HistoryScreen; uses clipData only for URIs.
  • MarkdownText: migrated from LazyColumn to Column + verticalScroll to preserve WebView state; accepts optional SnapshotStateMap<Int, Int> for scroll-to-line.
  • Bouncy components: unified observeBouncyPress(...) helper; extracted from every Bouncy* composable.
  • Model routing: GeminiModels / GroqModels constants; per-task model selection; Dynamic mode routes by size/context with quota balancing.
  • Settings refactor: reusable SettingsSelectorRow + SettingsSelectionSheet + BetaBadge.
  • Manifest: READ_MEDIA_AUDIO (33+) and READ_EXTERNAL_STORAGE (≤32) added for the native picker.
  • Version: 1.1.8 / 20.