Skip to content

v1.10.0

Choose a tag to compare

@abir2afridi abir2afridi released this 08 Sep 11:22
· 47 commits to main since this release

Changelog

All notable changes to CubicLM are documented here. This is the single source of truth per docs/multiplatfrom.md §5.5.3 — Desktop and Android About → What's New links open this file's rendered route (or its GitHub URL), they do not keep separate copies.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[1.10.0+16] - 2026-09-08

Added

  • New cloud providers — AgentRouter (non-profit OpenAI gateway), OrcaRouter (cost-price gateway, sk-orca- keys, vendor/model IDs + orcarouter/auto), APInex (one-key gateway across 7 vendors). 23 providers total.
  • Verify-before-save keys — key dialog checks the live endpoint first (nothing saved), shows Verified — N models found, then unlocks Save; editing invalidates; clear (X) + paste moved above the field.
  • Honest model probes — connection-fast testing (first chunk = online, 15s window), one retry for transient 429/5xx, 250ms stagger, fail-closed key lookup.
  • Slide Maker chart layout — bar/donut/line charts (Flutter CustomPainter in-app, CSS/SVG in HTML, visual bars in PPTX); AI refine per slide, one-click restyle, audience targeting, thumbnail strip, duplicate slide, 20-slide max.
  • CubicWeb Builder IDE split — wide screens show chat (left) + live preview/files (right) side by side with pane headers; narrow keeps tabs.

Fixed

  • Ghost-key bug — unlisted provider IDs borrowed the OpenAI key and showed as configured; unknown IDs now fail closed in UI + send path.
  • Provider ordering — Custom always top, keyed (pinned → time/name) above, keyless in a separate Add-Key section, switcher shows keyed only; removed dead auto-detected vendor cards.
  • Zero-quota + wrong-key messages — quota-0 and non-AIza Gemini keys now explain themselves.
  • Slide HTML export — comparison/timeline lists render; free-layout notes included; touch/swipe navigation on mobile.
  • Image save on Windows — gallery plugin is Android/iOS only; desktop now saves via native file dialog.
  • Edit dialog data loss — comparison columns + chart data preserved and editable.

[1.9.0+15] - 2026-09-07

Added

  • CubicWeb Builder full flow - plan mode, checkpoint/undo history, syntax-highlighted editor, diff view, responsive viewports, screenshot-to-code, keyboard shortcuts, 6 project templates, split pane (landscape), deploy to Vercel/Netlify, share link, GitHub export, component library, extended-thinking + web-search toggles, browser auto-test with auto-fix.
  • Live streaming build - files appear in the Files tab as the AI writes (writing badges, live highlighted editor, auto-open); static preview reloads live v0-style with progress pill; cancel rolls back to checkpoint.
  • Real local runtime layer - project detector (static/Vite/Next/Node), source validator, dev-server manager (npm install, free-port pick, URL parse, health check, crash watcher, restart), real shell terminal with history/autocomplete/stdin attach.
  • Terminal CLI manager - install catalog (Claude Code, OpenCode, Cline, Kilo — verified packages), one-tap npm installs, Open/Verify/Update/Repair/Uninstall, persistent registry, ANSI-safe log, storage + cache tools.
  • CubicWeb System Logs - structured runtime/platform diagnostics (CW-* codes, evidence classifier, dedup, traces, redaction, persistence), diagnostics screen with filters/details/actions, AI no-rewrite guards.
  • Next.js pipeline - atomic writes, byte-for-byte integrity gates, framework adapters, npm run build validation, load-failure forwarding, external-browser button.
  • Cloud model tools - Import from /models (new-count report), Test all models (online/failed dots + latency), auto-hide failed, auto-sync interval (configurable 6h–weekly) with sync row.
  • Agent IDE chat tab + model switcher - conversation transcript with the builder AI; model/provider switch from the AppBar.
  • Preview reload + live build status - reload button + URL bar; preview shows live progress (streaming/files) until output is ready.
  • Browser-run prompt rules - Vue/React require import maps + esm.sh (kills the bare-specifier TypeError); plain-JS rule bans silent TS failures.
  • Web TTS / downloads / notifications / Model Hub guard - read-aloud in browsers, real file downloads, background-done ping, model-download guard with Cloud pointer.
  • Explore Toolkit tab - Model Hub + Toolkit; Battle Arena, Slide Maker and CubicWeb Builder as widget cards.
  • Slide viewer modes + freehand layout + manual photos - Docs/Slides/PDF switcher, drag/resize boxes, gallery/camera per slide.
  • F-Droid fastlane metadata - store submission title/descriptions/changelog/icon.

Fixed

  • Header cleanup - project identity lives in the AppBar (name + framework/files, History + Auto-fix + New actions); duplicate below-header cards removed; composer options identical pre/post build.
  • Template grid overflow - template picker scrolls on short screens.
  • RadioListTile / Focus onKey deprecations - migrated to RadioGroup + onKeyEvent; const/lint pass clean.
  • Chat menu + SizeTransition - menu always visible with graceful disables; SDK-spanning deprecation silence (CI green).
  • Static 404 wording - neutral file-not-found; routing specifics live in the preview diagnosis card.

Performance

  • Streaming throttles - partial parse ~2/sec, live disk write 1.5s, preview reload only on change; capped buffers and file sizes throughout.

Fixed

  • Runtime hardening - npx version probe, live "which runtimes are running" registry (dev servers + CLI sessions), Case-A regression pins (framework kinds never route static), template grid scrolls on short screens.

[1.8.1+14] - 2026-09-05

Fixed

  • Chat ⋮ menu always visible - was hidden entirely with no open chat, so Battle Arena (and everything else) was unreachable from the empty state; session items now disable gracefully instead.

[1.8.0+13] - 2026-09-05

Added

  • Battle Arena - chat ⋮ menu → race up to 4 cloud models (same/different providers) on one prompt with live monitor (finish order, tok/s, length) and weighted overall verdict (40/30/30); One-by-one mode runs contenders serially in pick order and allows the loaded on-device model; v2 adds metric bars + TTFT, provider + FREE filters, full markdown responses with code preview, per-response TTS + .md export.
  • F-Droid flavor - fdroid build flavor (com.cubiclm.app.fdroid suffix); Crashlytics inert without google-services.json.
  • Staged rollout - backend-free buckets (10/25/50/100% over 7 days); manual checks bypass; rollout state on Update page.
  • Opt-in local stats - device-only counters (messages/images/loads/cloud calls) with viewer + reset; off by default.
  • Web build fixed - stub parity (shared SocFamily, engine + download stubs); flutter build web green.
  • Windows installer script - Inno Setup windows/installer/cubiclm.iss (unsigned; signing documented).

Fixed

  • versionCode downgrade trap - v1.6.0 shipped code 2011 vs small pubspec numbers, which Android rejects as a downgrade; build.gradle.kts now adds a +100000 base (verified 100012+) and the release checklist mandates aapt verification.

[1.7.0+12] - 2026-09-05

Added

  • Windows toast notifications - background-done ping via WinRT (win_toast facade + web stub).
  • Desktop pause-draft - window blur snapshots streaming replies (kill-recovery parity with Android).
  • Parity verification doc - docs/TASK_VERIFICATION_ANDROID_TO_WIN.md (APK + bundle teardown, checklist, corrections).
  • Update center - App info → View Update status page (icon, status, version, highlights, check/install, ⋮ menu with Update Settings / What's New / More → Feedback & Privacy Policy).
  • Update settings - auto-download master, Wi-Fi-only, mobile-data, scheduled hours with on/off time pickers, auto-install, auto-check; enforced via connectivity_plus + time window.
  • Device specification card - Nodes → Config shows Device (brand+model), OS version, CPU cores/ABI, RAM with free-space bar, display size, plus one-tap refresh.

[1.6.0+11] - 2026-09-05

Added

  • Offline outbox - network failures queue text/file prompts (FIFO, cap 20, per-chat); auto-send on next send/open with 2-min backoff.
  • Pause-draft kill recovery - backgrounding mid-answer snapshots the partial reply; superseded drafts are dropped on completion/stop.
  • Launcher shortcut - long-press app icon → New chat (Android static shortcut).
  • Undo delete chat - 5s UNDO snackbar restores session + messages.
  • Whole-chat PDF export - chat menu → Export as PDF (same Bangla-safe raster builder).
  • Local sampling controls - Top-P / Top-K / repeat-penalty sliders (Nodes → Config); plumbed through GGUF + LiteRT (cloud keeps provider defaults).
  • Chat labels/folders - free-form label per chat, drawer chips filter, menu dialog with existing-label shortcuts.
  • Per-chat lock - device-auth gate on open (title stays visible); menu toggle.
  • Settings-only sync - export/import preferences without secrets (API keys + custom profiles excluded by name + pattern).
  • Skill share - preview dialog → Share .md (frontmatter bundle, re-importable via From file).
  • Server request viewer - Nodes → Node shows last 10 requests (status/method/path/IP, 2s poll).
  • Share-target - Android ACTION_SEND text lands in the composer (manifest + channel + warm/cold hooks).
  • Background-done ping - answer finishing while backgrounded fires a notification with preview.
  • Cold-start trace - [boot +Nms] phase lines (critical path, first frame, deferred done) in System Logs.
  • CI gate - analyze + test on push/PR to main.
  • Quant variants schema - catalog variants[] (quant/filename/url/size) parsed + card picker + filename-keyed download resolution (no data seeded yet).
  • History-budget unit tests - pure trim logic extracted to lib/utils/history_budget.dart (9 tests).

[1.5.0+10] - 2026-09-05

Added

  • Chat context memory guard - history rebuilt from storage with token-budget trim (local ~60% ctx, cloud 48k chars); oversized turns middle-truncated, current + previous turn always kept; UI fallback when storage is empty; per-send Chat context: N turns… proof line in System Logs.
  • Prompt templates - 6 built-ins (explain/fix/summarize/ELI12/translate/mail) + custom add/delete, one-tap insert from the composer.
  • Multi-select messages - long-press or header toggle → bulk copy/share/delete with a selection bar.
  • Per-chat model pin - switcher-sheet toggle remembers the active local/cloud model for one chat (📌 pill), auto-applied on open.
  • Side-by-side compare - one-shot challenger (cloud or downloaded local) answers the same prompt; primary setup restored in finally.
  • Cloud usage estimates - per-provider in/out tokens + calls (chars/4) in Explore → Online, with reset.
  • MCP tool approval - Deny / Allow once / Always-allow gate (fail-closed) + Explore toggle.
  • Auto backup - silent JSON every N days (last 3 kept) in App Settings → DATA.
  • Lock options - re-lock timeout (immediate/1/5/15 min) + biometric-only mode.
  • Hidden chats - stronger hide than archive (out of drawer AND search) with show/hide toggle.
  • Local API hardening - 120 POSTs/min/IP rate limit (429), in-memory request ring surfaced in capabilities, honest 400 for /v1/embeddings.
  • Claude-style prompt View/Code - every AI answer gets a View ↔ raw toggle; Code mode copies/exports the exact visible text (.md + PDF via share sheet).
  • Chat header overflow menu - Find / Export / Select moved into a ⋮ menu with icons (cleaner 360dp header).

Fixed

  • HTML preview localStorage crash - preview now loads with https://localhost/ origin + DOM storage enabled (SecurityError gone for games with saves/high-scores).
  • Code-block header overflow - 39px right overflow on narrow screens; buttons go icon-only under 320dp.
  • Provider 429 wall - rate-limit errors now show a short remedy bubble (wait/retry ETA, BYOK hint); full JSON stays in System Logs.
  • Log spam - 60 per-vendor Auto-detected provider rows collapsed to one summary line.
  • Assistant Copy included think tags - copy/export now uses the visible answer text.

[1.4.0+9] - 2026-09-04

Added

  • Find in chat - in-conversation search with match counter, prev/next jump, and deep search across older pages.
  • Per-chat persona - extra instructions per conversation (empty = global prompt), editable from the chat menu.
  • Archive chats - hide from history with a show/hide toggle; survives backup/restore.
  • Encrypted backups - optional AES-256-CBC passphrase encryption plus optional image inclusion (was plaintext, imageless).
  • Multi-MCP servers - connect several servers at once with per-server tokens, merged tools, and collision-safe routing.
  • Image controls - negative prompt, guidance (CFG) slider, and fixed/random seed in Settings.
  • Hands-free voice mode - listen → auto-send → speak reply → listen loop with headset toggle.
  • Tasks export ADB scripts - planner output becomes a runnable .sh via share sheet (on-device shell exec is impossible for stock apps).
  • OTA model catalog - assets/catalog/models.json fetched with validation, cache, and bundled fallback (dart run tool/gen_catalog.dart to regenerate).

Changed

  • Updater picks the right APK - ABI-matched split asset instead of first .apk; install-permission gate with settings deep-link.
  • Local server secure by default - auto-generated API key enforced on first start (LAN bind kept).
  • Mic + STT - runtime microphone permission flow; recognition follows the app language (was hardcoded en_US).
  • Streaming performance - memoized markdown stylesheets/builders, chat pagination (100/page with load-more), sidebar search on isolate, image preload, PDF/DOCX/PNG/base64 on workers.
  • History hygiene - 500-session cap (unpinned eviction), paused-download TTL, crash-orphan .part sweep, gallery existence cache.
  • MCP settings - card is now a multi-server summary linking to Explore manager.
  • Deps - removed dead flutter_inappwebview (+ orphan WebGPU asset), speech_to_text 7.4 migration.
  • Windows build - vendored speech_to_text_windows fix (upstream registration bug).
  • Desktop parity - App Lock screenshot blackout (FLAG_SECURE), real Windows RAM detection, close guard, shortcuts, save dialogs.

Fixed

  • Backup restore always invalid (bytes stringified), pin-sort jump, Windows image-attach crash, lock race/enrollment, mic dead button.
  • New-chat/revision/branch/export flows made pagination-safe (context from storage, full-history branch, window-edge guards).

[1.3.0+8] - 2026-09-03

Added

  • Biometric App Lock - local_auth gate (Android biometrics + Windows Hello) on launch and background-resume, with lock screen, enrollment detection, and device-PIN fallback.
  • Chat backup & restore - export every session/message to JSON (Android share sheet, Windows save dialog), validated merge-import, plus session pinning (pinned chats float to top).
  • In-app APK update - GitHub Releases check with download progress and one-tap install on Android; Windows links out to the desktop build.
  • Save models to Downloads - Model Hub can save GGUF/LiteRT files to the system Downloads folder (Android DownloadManager bridge, desktop stream-then-move with auto-rename).
  • Desktop shortcuts & close guard - Ctrl+N new chat, Ctrl+F history search, Ctrl+, settings, Ctrl+1..4 tabs; window close confirms while generating/downloading.
  • Read-aloud (TTS) - per-bubble text-to-speech with App Settings toggle, locale-matched voices.
  • Gallery history - SD1.5 generations persist (capped at 200, oldest evicted with files).
  • 3-page onboarding - private/cloud/model setup flow with recommended-model deep link to Explore.
  • Full i18n - 243 keys x 15 languages, 100% coverage with instant switch.
  • Log viewer + notification history + web-fetch source pills - in-app diagnostics, past notifications, URL-augmented answers with Sources chips.

Changed

  • Streaming performance - chat list no longer rebuilds per token (scoped Obx + RepaintBoundary), token flush 40ms to 150ms, cacheWidth thumbnails, one-time base64 decode in composer.
  • Boot recovery - BootReceiver no longer launches the UI (blocked since Android 10); resumes interrupted model downloads via the foreground service only.
  • Windows device info - real RAM via device_info_plus (was fake 4 GB mistuning context sizes); processor label.
  • Manifest hardening - backup rules wired (dataExtractionRules), predictive back, per-app language config (15 locales).
  • Deps - removed dead firebase_messaging, speech_to_text 7.4.0.

Fixed

  • Backup restore always reporting invalid - picked bytes were stringified ("[123, ...]") instead of UTF-8 decoded.
  • Windows image-attach crash - gallery pick routes through FilePicker (no image_picker_windows registered); camera shows guidance instead of MissingPluginException.
  • App Lock first-launch race - gate awaits biometric detection instead of fail-opening; nothing-enrolled honesty in settings.
  • Mic dead button - hidden when STT unavailable, snackbar on failed start.
  • Windows build (STT plugin) - vendored speech_to_text_windows 1.0.1 under local_plugins/ fixing upstream pluginClass + missing public header (fatal C1083/C3861).
  • Stale channel name - com.aichat.ai_chat/model_import renamed to com.cubiclm.app/model_import on all 4 ends.
  • New chats jumping above pinned sessions until reload.

[1.2.0+7] - 2026-08-28

Added

  • Multi-language support — 15 languages (EN, BN, HI, AR, ZH, ES, FR, JA, KO, PT, DE, TR, ID, RU, UR) with instant-switch Apple-style picker in App Settings. GetX translations, ~70 keys × 15 languages.
  • GitHub community infrastructure — issue forms (15 types), PR template, CONTRIBUTING, CODE_OF_CONDUCT, SECURITY, SUPPORT, auto-label workflows, Dependabot, FUNDING.yml, 51 synced labels.

Fixed

  • Android build stability — Gradle JVM heap reduced from 8 GB to 3 GB (-Xmx3072m) to prevent Kotlin daemon incremental cache OOM/corruption on 16 GB machines. Stale caches cleaned.

[1.1.0+6] - 2026-08-28

Added

  • Windows Desktop (production) — Signed cubiclm.exe bundle (41.1 MB / 16.22 MB zip) ships alongside Android APK. Same lib/ codebase, no separate fork.

Fixed

  • Windows buildCMAKE_POLICY_VERSION_MINIMUM 3.5 for Firebase C++ SDK (CMake 3.5 compat removed in 4.x), _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS for flutter_inappwebview_windows / MSVC 14.51 STL1011, native_assets install guard (if(EXISTS)), and missing ATL headers (Microsoft.VisualStudio.Component.VC.ATL).

Known Limitations

  • Webdart:ffi (sd_ffi_bindings.dart) not yet web-compatible; flutter build web fails. Tracked for next release. Android + Windows are the supported targets for v1.1.0.

[1.0.5+5] - 2026-08-28

Added

  • Windows Desktop — Flutter Windows shell via flutter create --platforms=windows + window_manager (400×700 min, 1280×800 default, centered, CubicLM title). Single codebase (lib/) ships to Android, Web, and Windows.
  • Shared platform linksshared/constants/platformLinks.dart + lib/shared/constants/platformLinks.dart (re-export) with REPLACE_ME_* placeholders; all About screens import from here (§5.4.1).
  • Cross-platform About — per §5.5.2: Web links to Desktop+Android+changelog, Desktop links to Website+Android+changelog, Android links to Website+Desktop+changelog; never to itself. Shows platformLabel • version from PlatformLinks + SettingsController.appVersion (§5.5.5).
  • Startup auto-loadApp Settings → STARTUP → Auto-load last model (keyAutoLoadLastModel), deferred until chat UI idle (splash gone + DeviceInfo ready + 1200ms), with 90s crash-loop guard, 80% RAM guard, 90s load timeout, and resident-model check.

Changed

  • Warm native splashandroid/res/values/colors.xml + drawable*/launch_background.xml now #F8F4ED (Dt.canvas) instead of white — seamless native→Flutter transition.
  • Smooth splash exitsplash_view.dart RepaintBoundary isolation + 760ms fade-in/out, 1380ms dwell before Get.offAllNamed(home); deferred heavy services now 2200ms after runApp() (was 900ms), never janks shimmer.
  • Header & composer sync — both Obx on InferenceService.loadedModelName / LocalImageService.loadedModelName; composer pill Flexible + 14 char truncate fixes RenderFlex overflow 4.4/12px on 360dp.
  • Download resumedownload_service.dart stale paused_downloads.json cleanup via isModelDownloaded + ModelController.refreshDownloaded() fixes “completed but still shows downloading”.
  • Log copy toastlog_view.dart Get.snackbar BOTTOMAppSnackbar.showTop (spring, copyCheck).

Fixed

  • HiveService per-box 3s timeout + _MemoryBox fallback (was Future.wait on 7 boxes, one corrupt killed all).
  • ChatControllerHiveService defensive isOpen + on HiveError (was Box has already been closed flood).
  • InferenceService growable residentTextModels (was FixedLengthListMixin on clear()).
  • SkillRegistryService missing try brace.

[1.0.4] - 2026-08-21

Added

  • Skills + MCP 4-way toggle in Explore, GitHub/URL skill import, MCP remote HTTP/SSE, notification history, web source favicon chips, ThinkingOrbs per-context picker.

Fixed

  • Model switcher free filter, serial numbers, header model row non-tappable, sticky Explore toggle.

[1.0.0] - 2026-08-01

  • Initial Android release — local llama.cpp/LiteRT-LM + cloud providers + OpenAI-compatible server.