Cumbersome Changelog
The public notes I published through Apple, with a short summary for the bigger releases.
Cumbersome changes fast. Apple only displays the newest slice of Version History on its public listing, so this page preserves the full English record published through Apple. Private commits, rejected builds, and internal release notes are excluded. For bigger releases, I added a short explanation before the original notes.
This archive was last updated and can lag behind the newest release. Check Cumbersome on the App Store (opens in new tab) for the current version and its latest changes.
Version 1.72.0
What changed
Turn off Cumbersome usage analytics from Settings and sync that choice through iCloud. You can also hear replies as they arrive and choose Save and Restart when editing a message. This release fixes several attachment, custom-provider, and chat issues.
Features
3- speechread replies aloud during generation
- chatadd remembered Save and Restart action
- settingsanalytics and synced opt-out
Fixes
5- custom-providerssupport HTTP .internal endpoints
- chatrestore sidebar actions for newly synced conversations
- shortcutsenable OpenCode Go requests from Spotlight
- attachmentsenforce image upload limits in pixels
- macosenable image-only paste in the composer
Version 1.71.0
What changed
Copy and export actions are grouped by conversation, while Compact and Ghost/Write live in the conversation title menu. Message menus are simpler, with further improvements to streaming and composer layout.
Features
2- chatgroup conversation copy and export actions
- chatmove Compact and Ghost/Write into title menus
Fixes
4- chatsimplify message menus
- iostighten composer spacing and model label typography
- iosalign the composer plus button inset
- releasekeep app and widget versions aligned
Performance
2- chatreuse tool transcript header summaries
- chatreduce streaming layout churn
Version 1.70.0
What changed
OpenCode Go connections now send the session information the service requires. OpenRouter requests keep a stable conversation session, and sidebar selection controls are more consistent.
Fixes
2- custom-providersprevent OpenCode Go session errors
- sidebarunify selection controls
Performance
1- openrouteradd stable conversation sessions
Version 1.69.0
What changed
Select multiple conversations to organize or delete them together, and export or import your full conversation collection on Mac. Custom providers support more local HTTP endpoints, and reasoning settings carry through to Face/Off, Mind/Meld, and Ghost/Write.
Features
3- chatmake empty-state tips dismissible
- macosexport and import all conversations
- sidebaradd multi-chat actions
Fixes
4- custom-providersallow non-public HTTP endpoints
- custom-providerssupport HTTP .local endpoints
- ghost-writepreserve generated thinking
- reasoninginherit in Face/Off, Mind/Meld, and Ghost/Write
Version 1.68.1
Fixes
6- networkallow longer-running responses
- backgroundsilence foreground response completion
- camerakeep capture controls visible in landscape
- ios-chatrestore first-message header interactions
- face-offpresent candidate details in a sheet
- searchprevent automatic drawer focus
Refactors
1- settingssimplify tool controls
Version 1.68.0
What changed
AI responses can continue when Cumbersome moves to the background on iOS 26. This release also added B&W and Terminal themes, multiple authentication headers for custom providers, and native Question Cards for structured clarification.
Features
4- backgroundcontinue AI responses on iOS 26
- themesadd B&W and Terminal appearance modes
- custom-providerssupport multiple authentication headers
- question-cardsadd native clarification cards
Fixes
6- accessibilityisolate drawer VoiceOver focus
- transcriptpreserve VoiceOver focus during responses
- mcppreserve numeric zero and one in tool arguments
- transcriptunify tool call and result rows
- settingsdistinguish inline provider options
- modalsstandardize presentation and dismissal
Version 1.67.0
What changed
Web Agent keeps one visible browser attached to the active chat for multi-step work. You can watch the page, take over when needed, and hand the same page state back to the model. Folders are now projects, OpenRouter presets appear in the model picker, and provider connections can be reordered.
Features
5- openrouteradd preset model selections
- aboutstreamline support links and layout
- settingsorder and reorder provider connections
- projectsrename conversation folders in app UI
- web-agentadd persistent interactive browsing
Fixes
5- chatdismiss stale iOS text selection
- ipad-navigationavoid overlap with window controls
- settingsremove redundant custom parameter caption
- settingstighten tool and reasoning guidance
- settingssimplify current date context control
Version 1.66.0
What changed
Take a photo from the composer, see cumulative API tokens in Message Details, and set the fallback order for local search engines.
Features
3- attachmentsadd in-app camera capture
- message-detailsshow total conversation tokens
- local-searchadd configurable provider fallbacks
Fixes
7- chat-uisimplify empty-state and Mind/Meld copy
- message-detailsinclude cumulative API token usage
- composerremove visible input placeholder
- mind-meldreset stale hidden model selections
- mac-uiscale detail text with native font metrics
- custom-provideraccept SSE data fields without spaces
- mac-chatrestore native searchable model popover
Version 1.65.0
What changed
Local Web Browser can run one JavaScript action before extracting a page, which helps when a simple interaction reveals the useful content. Cumbersome also gained on-device PDF text extraction and Copy Chat.
Features
3- local-browseradd one-shot JavaScript interaction
- pdfadd on-device text extraction fallback
- chatadd Copy Chat to conversation menus
Fixes
3- macosmake disclosure rows fully clickable
- latexpreserve abbreviated currency ranges
- gemmahandle Gemma 4 thought channels
Version 1.64.0
Features
1- settingssimplify AI connections and configuration
Fixes
6- settingsenable headless mode by default
- mac-chatavoid model picker popovers on macOS 27
- privacygate iCloud Drive diagnostics to debug
- mac-chatdefer selection until model picker dismisses
- ios-chatstabilize VoiceOver composer focus
- mermaidretain WebKit renderer session
Performance
2- mac-chatreduce long-transcript scroll stalls
- latexmove equation rendering off the main thread
Refactors
5- settingscollapse provider details and simplify MCP
- settingsunify conversation retention policy
- browsermake headless mode govern parallel tools
- settingsremove redundant on-device copy
- mcpenable bounded parallel execution by default
Version 1.63.0
What changed
You can highlight a passage in any completed message, attach a note, and include it with your next reply without rewriting the original. Cumbersome can also read replies aloud and turn Mermaid code into diagrams automatically.
Features
4- annotationsadd conversation passage notes
- read-aloudadd playback and voice guidance
- mermaidrender fenced diagrams automatically
- read-aloudadd spoken replies and auto-read
Fixes
3- latexstabilize macOS equation sizing
- latexpin MathJaxSwift after braced exponent regression
- ios-chatdismiss keyboard after message submission
Version 1.62.0
What changed
Cumbersome can analyze CSV, TSV, JSON, and text attachments with Python on your device, then return tables and charts. The same version added Markdown export, Mermaid diagrams, request details, and one-tap code copying.
Features
6- markdownadd code block copy controls
- mermaidadd offline diagram rendering
- conversation-exportadd Markdown export
- chat-toolbarmake title the conversation actions menu
- message-detailsadd request diagnostics
- data-analysisadd on-device Python tool
Fixes
2- ios-attachmentskeep picker labels on one line
- ios-chatpreserve conversation title width
Version 1.61.0
What changed
Google AI Studio conversations can send video files, while compatible custom AI servers can use OpenAI's newer Responses API. Cumbersome can also tell the AI the current date automatically.
Features
3- providersadd custom Responses endpoints
- geminiadd file-backed video uploads
- settingsadd current date context to AI requests
Fixes
1- accessibilitystop auto-follow during VoiceOver review
Performance
1- local-browserbound extraction work off main actor
Refactors
1- settingscentralize preference persistence
Version 1.60.1
Fixes
3- face-offsafely recover every legacy persistence shape
- sidebarretain footer backing above iOS keyboard
- persistenceharden legacy message migration
Version 1.60.0
What changed
Independent local browser and remote MCP tool calls can now run at the same time, helping research and other tool-heavy requests finish faster.
Features
3- mcpadd bounded parallel tool execution
- local-toolsadd bounded parallel headless execution
- chat-uirefine conversation actions and navigation
Fixes
14- face-offrecover legacy messages without SwiftData crashes
- findhighlight matches without strikethrough
- chatpreserve compaction and attachment ownership
- chatpreserve partial streams and navigate find matches
- mac-chattarget the realized transcript tail
- mac-chatpreserve streams and guard restart popovers
- mac-chatstabilize long transcript scrolling
- toolspreserve valid streamed tool names
- toolsdecode quoted search summaries correctly
- markdownrefresh LaTeX renderer when input changes
- ios-navigationrestore hamburger menu taps
- chat-uiclarify token usage accounting
- mind-meldstabilize iOS model configuration
- mind-meldrefine macOS configuration disclosure
Version 1.59.0
What changed
For difficult prompts, Mind/Meld can ask three independent AI tracks, then use another AI to combine the strongest ideas into one answer. Conversation controls and navigation also received a broad redesign.
Features
7- ios-chatshow conversation title in toolbar
- macOSshow conversation title in toolbar
- chatmodernize transcript message presentation
- chatconsolidate composer model selection
- sidebarmodernize navigation controls
- settingsrelocate clear-all conversation action
- chatadd adaptive multi-AI Mind/Meld synthesis
Fixes
1- mac-chatstabilize long transcript entry scroll
Version 1.58.0
What changed
Cumbersome is now fully available in Simplified Chinese. New sensitive conversation data also receives added iCloud encryption, alongside a broad pass on chat performance and Mac controls.
Features
3- localizationadd complete Simplified Chinese support
- privacyencrypt sensitive CloudKit fields for new records
- chatfocus composer on New Chat across platforms
Fixes
15- releaseuse Apple Git on Apple silicon
- macosrestore composer file drag and drop
- openrouterreplay stateless Responses tool history
- macosgroup controls in material toolbars
- macosrebalance chat toolbar controls
- macosrefine chat and settings toolbars
- chatsize message info popover for ADP footer
- markdownstop currency $ from swallowing headings and tables
- privacyDrive-back oversized tool and Face/Off payloads
- chatstream Ghost/Write drafts into the placeholder
- providersdrop max_tokens from custom OpenAI titles
- providersdecode Together-style custom models lists
- macoslabel Cmd-N as New Chat in File menu
- chatcapture Compact confirm before sheet dismiss
- chatharden Compact cancel and drain pending queue
Performance
2- chatthrottle light streaming UI updates to ~20fps
- chatdrop streaming dots TimelineView to ~12fps
Refactors
1- custom-paramsdrop duplicate JSONValidator helper
Maintenance
1- privacyplan CloudKit ADP encryption
Version 1.57.0
What changed
Ghost/Write uses the conversation so far to draft a pointed observation and follow-up question as your next turn, clearly marked as AI-written. Mac users can also import conversations from JSON backups.
Features
2- chatimport conversations from JSON on macOS
- chatadd Ghost/Write
Fixes
3- settingspreserve serif font and clarify local preferences
- latexpin SwiftDraw below 0.28 to restore equation images
- chatlabel MCP transcript rows as MCP, not local tools
Performance
5- chatcache LaTeX parse/blocks across MarkdownTextView body evals
- chatavoid full collapse checks for row identity
- chatreduce long-transcript streaming CPU
- chatstop idle long-transcript CPU hangs
- chatavoid transcript refetches during streaming
Version 1.56.0
What changed
You can connect remote MCP servers, choose their tools, and let the AI use them inside a conversation. New diagnostics also make long-response performance easier to inspect.
Features
3- chatdisplay streaming performance diagnostics
- toolsremote MCP client with settings UI and tool routing
- chatinclude info-bubble metadata in Final JSON
Fixes
2- corereplace expired Discord invite with new permanent link
- chatstop cloud models mimicking local tool transcript text
Version 1.55.0
What changed
Choose a visual theme and reading font to make Cumbersome fit how you prefer to work.
Features
1- settingstheme picker and font options
Fixes
2- ios-chatstop transcript blanking when typing during stream
- anthropicrequest summarized thinking on adaptive models
Version 1.54.0
What changed
Folders can carry their own reusable system instructions, so every chat inside a folder can start with the same guidance.
Features
3- chatdefault-collapse local tool transcript rows with summaries
- foldersadd folder-level system message presets and editor
- chatassign draft new chats to folders before first send
Fixes
8- latexdetect simple inline math without currency false positives
- sidebaradaptive bottom buttons for large Dynamic Type
- ios-chatanchor collapse/expand to the toggled row, not the bottom
- vercelroute Anthropic thinking through providerOptions
- local-browserformat local tool metadata as markdown bullets
- local-browserbound DOM snapshot timeout to unstick auto-extract
- ios-chatdescramble scroll overlap without settle jump
- chatdefault thinking section collapsed during streaming
Interface and style
2- ios-chatinset message rows from screen edges
- chatsoften message row corners on iOS and macOS
Refactors
1- corereplace regex HTML extraction with SwiftSoup
Version 1.53.0
What changed
Anthropic prompt caching can be controlled from Settings, and supported providers now show cache usage so you can see when repeated context is being reused.
Features
4- vercelunwrap nested stream errors
- settingsdefault Anthropic prompt caching toggles on
- chatsurface prompt-cache usage across providers
- settingsadd Anthropic prompt caching toggles
Fixes
8- vercelsend PDF attachments in gateway file shape
- geminisend toolConfig and round-trip thought signatures
- chatgate send and streaming on global model selection
- chatdescramble edited messages on iOS
- chatkeep sibling thinking toggles clickable on macOS
- chatright-align RTL (Farsi/Arabic/Hebrew) markdown per block
- iconsenable alternate app icons on iPad
- chatdefer preset selection on draft new chat (iOS)
Version 1.52.0
What changed
Save reusable system instructions and apply them to individual conversations instead of rewriting the same guidance each time.
Features
3- settingsadd reusable system message presets per conversation
- settingsoffload long global system messages to iCloud Drive
- settingsadd toggle to pause custom API parameters
Version 1.51.0
What changed
Compact summarizes older history for future requests while leaving the original transcript visible, which can reduce repeated context and API cost.
Features
2- chatoption to compact conversation to reduce API context credits
- settingsadd Discord to About feedback support bullets
Fixes
2- chatstop ChatFindResponder republishing on every streaming frame
- settingsstop model picker emptying on macOS/iOS sync
Performance
1- streamingremove O(n²) chunk joins and per-token cost scans
Version 1.50.0
What changed
Run HTML and JavaScript code blocks in an isolated in-app preview instead of copying them into another tool.
Features
1- chatrun HTML and JavaScript code blocks in WebView preview
Fixes
3- chatenable send when sole custom provider is selected
- macos-chatkeep penultimate reply full until off screen on send
- chatresolve sends against the global model selection
Performance
1- sidebarspeed up drawer search and gate message highlights
Version 1.49.0
Features
4- settingsdefault local tools on and link to Tools tab
- settingsOpenRouter PDF processing engine picker in Settings
- settingsOpenRouter search picker in Settings
- coreoffload oversized message text to iCloud Drive
Fixes
6- settingsshow OpenRouter picker row labels on iOS
- openroutermigrate web search from deprecated plugin to server tool
- ios-chatstop post-send scramble when penultimate reply truncates
- settingsmake API key optional for OpenAI-compatible providers
- ios-chatdescramble transcript on send via layout revalidation
- macosstop file-missing banner from blowing up window height
Build and automation
1- depsbump textual for empty table cell fix
Version 1.48.0
Features
3- onboardingtighten API-key welcome copy and vendor list
- aboutpersonalize About tab and trim onboarding chrome
- settingsorganize Settings into Models/Tools/App/About tabs
Fixes
5- ios-chatstop transcript squash on send/delete/loading toggle
- ios-chatclear stale streaming indicator on previous assistant rows
- ios-chatstop transcript drift after breaking streaming auto-follow
- coreomit reasoning_effort by default on customOpenAI chat
- settingsmatch iOS About legal row typography to intro copy
Performance
1- chatadd extraHeavy streaming throttle tier and retune gates
Version 1.47.0
Features
6- local-toolscross-reference search and browse tools when both are on
- coreenable KVS model-list compression writer (phase 2)
- macosconfigurable Quick Prompt shortcut and App Visibility settings
- uiapply brand backdrop across chat, Settings, and onboarding
- chatInternational Orange backdrop and clearer message bubbles
- foldersunify move-folder menus with icons and tinted glyphs
Fixes
14- macos-chatpin transcript to bottom on send in long convos
- settingsstop model picker and "Updated " from emptying
- local-toolsmake OpenAI Responses follow-up work on OpenRouter
- chatunwrap OpenRouter error.metadata in chat banners
- chatsurface gateway API errors in banners
- chatalso silence SwiftLint redundant_discardable_let
- chatkeep pending-queue subscribe line SwiftFormat-safe
- chatrestore ViewBuilder builds for pending queue subscription
- chatsubscribe pending-message bar to queue change counter
- corestop stale sheet onDismiss cancelling chained local tools
- iospause streaming auto-scroll during user touch/deceleration
- iostighten toolbar spacing between org chip and new chat
- macosalign chat toolbar chrome with primary styling
- uialign iOS chat toolbar organize chip and menus
Refactors
3- chatsplit StandardMessageContentView into support file
- coresplit Responses DTOs and test helpers across files
- macos-chatrelocate folder chip beside New Chat toolbar cluster
Version 1.46.0
What changed
Organize conversations into synced folders, then move and group chats without losing the familiar date-based history.
Features
1- coreconversation folders, grouping, and organize flows
Fixes
6- chatunbreak OpenAI image-edit follow-ups in /responses
- coreraise local tool hop limit from 5 to 25
- chatresolve huge-code-block crash via Textual TextBuilder fix
- chatrestore VoiceOver body for expanded message rows
- chatmacOS empty-state inset + Ready to Chat body typography
- macosreplace hero Image Button with tap gesture layout
Version 1.45.0
What changed
Conversation sections in the sidebar can be collapsed, and that choice syncs across devices.
Features
1- sidebarcollapsible conversation sections with synced persistence
Fixes
17- macosre-anchor LazyVStack transcript after mount race
- chatpersist built-in provider before model picker resolves
- chatseed message cache and stabilize macOS transcript layout
- settingstolerate transient iCloud Keychain misses
- macosmake error observation archive-safe
- macosbound long chat errors in bottom controls
- settingskeep model refresh freshness device-local
- iosimprove chat toolbar picker sizing
- streamingcompile render-cost logging in release
- chatstop streaming dots from bouncing
- chatkeep streaming indicator visible during thinking
- iosallow chat errors to wrap
- chatstream indicator in layout, not over Textual
- chatmacOS streaming dots overlay streak
- settingseliminate the "marketing screen with keys present" regression
- iosstop transcript bounce during streaming
- iosrestore Liquid Glass toolbar capsules and picker colors
Performance
3- streamingdefer LaTeX rendering while streaming
- streamingadapt UI cadence to render cost
- streamingrestore ~30fps UI throttle; align Quick Prompt
Maintenance
1- bump deps.
Version 1.44.0
What changed
Generate images with supported OpenAI and Google AI Studio connections, and watch partial previews appear while an image is still being created. The transcript was also rebuilt to handle long chats more smoothly.
Features
7- chatnative transcript lists on iOS and macOS
- imagesadd streaming partial previews for OpenAI image generation
- imagesstream OpenAI image previews
- imagesOpenAI image gen on OpenRouter; drop Vercel path
- imagesOpenAI image generation via Responses API image_generation tool
- imagesGemini image output via OpenRouter + Vercel gateways
- imagesGemini image output, origin tag, full-width render
Fixes
7- chatVStack multi-block markdown; iOS transcript cell sizing
- ioscompose UICollectionView insets from measured safeAreaBar heights
- settingsship compressed model-list reader before writer
- settingschat readiness gates on key presence, not stale test
- errorssurface hallucinated tool name and special-case hop limit
- local-toolsheadless mode uses WebPage API, not URLSession
- endemic-llmstop referencing disabled local tools to the model
Performance
4- chatconsolidate streaming auto-follow on revision signal
- chattrim message accessibility payloads
- chatcache parsed message content for visible rows
- settingsLZFSE-compress provider model lists in iCloud KVS
Refactors
3- chatremove automatic conversation collapse
- coreremove dead code and align build metadata
- chatremove "long press any message to edit" helper tip
Version 1.42.0
What changed
Local search and browsing tools now work through OpenAI, Anthropic, Google AI Studio, Z.ai, and compatible gateways. Search and page browsing can be switched on separately.
Features
6- coreChat Completions local tool loop for Z.AI and gateways
- corestream Gemini tool calls end-to-end via local tool loop
- corestream Anthropic tool calls end-to-end via local tool loop
- settingssplit Local Browser Use into Search + Browse toggles
- corein-modal recovery for local search
- corestream OpenAI post-tool continuations end-to-end + parallel tool calls
Interface and style
1- settingsmake macOS section headers dominant
Version 1.41.0
Fixes
3- corenon-thinking responses fail on Anthropic Opus 4.7+ due to explicit temperature
- coreheal streaming-thinking tables broken by mid-row blank lines
- corerestore macOS chat hit-testing after sidebar collapse
Version 1.40.0
What changed
Large model lists are now searchable, so you can find the exact model without scrolling through every option.
Features
1- chatsearchable model picker for large lists
Fixes
10- chatmatch searchable model picker to Menu styling
- chatTextual markdown chunking and truncation mask only when fading
- chatcap last-message auto-expand to avoid markdown stack blowups
- iosprevent content scrolling during sidebar edge swipe
- uiremove Beta chip from AI Reasoning in advanced modal
- corereview prompt uses host app product name
- coreharden chat sync, URLs, and title generation for crash mitigation
- add remote-notification background mode for CloudKit sync
- coreper-message expand stuck after Collapse All
- corestream thinking UI before think close tag
Performance
2- a11yscale preview icons with @ScaledMetric
- corereplace release prints with os.Logger via AppLog
Refactors
5- coreextract large files into focused modules
- corereplace ScrollViewReader with ScrollPosition in sidebar
- coremigrate settings and helpers to @observable
- coreremove LegacyChatMessage alias and getWebSearchTools
- coreremove dead DrawerView struct and clean up tests
Maintenance
1- track Xcode workspace Package.resolved in git
Version 1.39.0
Features
2- messagealways show full content for last message, no Show more
- messageadd header actions menu button for message actions
Fixes
3- chatreplace position-based auto-scroll break with gesture detection
- markdownclose unclosed code fences from truncated responses
- messagerename Copy to Copy Message in context menu
Performance
2- chatauto-collapse older messages on new message submission
- streamingreduce observation cascades during streaming
Version 1.38.1
Fixes
1- bug fixes and improvements
Version 1.38.0
Fixes
1- buildpin Textual to patched revision for iOS archive
Refactors
2- uiconsolidate beta chips, simplify Ollama settings copy
- markdownmigrate MarkdownUI to Textual, keep LaTeXSwiftUI for math, remove code block copy
Version 1.37.0
What changed
Reasoning and thinking controls now work across every supported provider and custom OpenAI-compatible connection, with returned thinking shown whenever the provider supplies it.
Features
3- reasoningalways display thinking when returned, regardless of toggle
- reasoningsupport reasoning option for all providers including custom OpenAI
- verceladd reasoning/thinking support for Vercel AI Gateway
Fixes
4- providerssend reasoning_effort none for custom OpenAI-compatible title generation
- settingspreserve model selection per custom OpenAI provider
- zaisend explicit thinking.type disabled when toggle off
- custom-providerparse native Ollama token counts and remove token estimation fallback
Version 1.36.0
Features
1- settingsdouble system message character limit to 10k
Fixes
2- iospreserve show-more position while keeping initial bottom placement
- scrollrestore scroll-to-bottom, auto-follow, and geometry-based break detection (iOS and macOS)
Version 1.35.0
Features
3- quickpromptrender markdown continuously during streaming
- shortcutssave conversations to history
- iosswipe from left edge to open drawer
Fixes
2- iosprevent scroll jump when expanding last message at bottom
- linkssupport ticket and markdown links open correctly on macOS and iOS
Version 1.34.0
What changed
Add Cumbersome to the iPhone Lock Screen for quick access, set old conversations to delete automatically, and use the document-style transcript everywhere.
Features
3- widgetadd iOS lock screen widget
- settingsoption to auto-delete conversations after X days
- uiremove bubble view, standardize on document layout
Fixes
1- sidebarfix conversation group ordering and add comprehensive tests
Version 1.33.1
Refactors
1- ToScentralize receipt store, global ToS agreement
Version 1.33.0
What changed
Cumbersome gained local browser tools, letting supported AI connections search the web and open pages through your device. Reasoning support also expanded across more providers.
Features
13- macosadd View menu zoom in/out for macOS
- local-browser-toolsPhase 1 local browser tool use for OpenAI direct
- local-browserhardcode extraction limit, inline links, parser extraction, settings copy
- local-browserimprove tool transcript visibility, extraction, and OS gating
- settingsrefine local browser tools + server-side web search UX
- geminiadd thinking/reasoning support for Google AI Studio
- uihide reasoning section for unsupported providers
- zaiadd thinking support
- anthropicuse adaptive thinking for all 4.6+ variants
- anthropicadd extended thinking support
- widgetimplement AI Digest widget extension
- widgetAI Digest Widget WIP implementation
- sidebaradd Duplicate to conversation context menu
Fixes
3- openaisupport dual-tool selection and valid web_search encoding
- settingspersist provider selection when switching to previously-used provider
- iosdisplay zoom on iPhone SE 2022 truncates text and UI elements
Performance
2- testremove mock streaming delay and reduce ensemble concurrency delay
- testspeed up test suite from ~15s to ~7s
Interface and style
1- settingsuse SettingsSectionHeader for Model Filters in iOS
Refactors
1- settingsnormalize typography, alignment, and spacing across macOS and iOS
Reverts
1- widgetback out AI Digest Widget implementation... too frustrating to get working
Version 1.32.0
What changed
Connect your own OpenAI-compatible service, including local or hosted endpoints, fetch its model list, and use attachments without waiting for a built-in provider integration.
Features
9- custom-provideradd OpenAI-compatible custom provider support
- custom-paramsprepend messages for Chat Completions system prompts
- settingsadd Beta chip to OpenAI-Compatible Providers section
- settingsOpenAI-Compatible section intro, Add Provider UX, a11y
- custom-providerimmediately fetch models when adding custom provider
- custom-providerenable attachments for OpenAI-compatible providers
- custom-provideradd title model picker below API key row
- disable AI Reasoning for unsupported providers; improve custom provider modal UI
- custom-providerharden API key requirements and fix ensemble metadata
Fixes
7- openrouteruse provider-appropriate reasoning-off for Anthropic models
- settingsimprove macOS settings sizing and simplify status messages
- latexadd horizontal scroll for wide block equations
- settingsalign macOS add-button styling across API key sections
- custom-providerOpenRouter compatibility, title picker UX, prune debug logs
- custom-providerapply model inclusion/exclusion filters to custom provider models
- openrouterexplicitly disable reasoning when off
Performance
1- ensembleparallelize Face/Off candidate calls with async let
Refactors
4- modelsreplace smart model selection with hardcoded defaults
- DRY pass across settings, URLs, and attachment views
- deduplicate SettingsManager init and title generation dispatch
- coreremove verified dead code paths
Version 1.31.0
What changed
Paste images straight into chat, preview attachments before sending, and use include filters to tame large model lists. Web search can also wait until you explicitly ask for it.
Features
5- searchadd "Only Search When Requested" smart search toggle
- attachmentsadd interactive preview and PDF thumbnails
- chatimage paste support for iOS and macOS
- chathide provider picker when only one provider is configured
- model-filtersadd positive model inclusion filters alongside existing exclusion filters
Fixes
1- openrouteradd PDF file attachment support to chat completions
Version 1.30.0
What changed
OpenAI and OpenRouter conversations can show collapsible reasoning while a response streams, making the model's returned thinking easier to inspect.
Features
4- openaiadd reasoning/thinking support with collapsible UI
- openrouteradd OpenAI-style reasoning support for streaming chat
- settingsimprove provider recommendations and web search warnings
- settingssplit API keys into Direct/Multi-providers, improve ZDR copy and UX
Fixes
8- uirestore link colors in markdown and unify with Link views
- quick-promptpersist thinking and raw API response
- reasoninggate capture by request config and prevent double-send race
- streamingpreserve thinking content after streaming completes
- streamingrepair chunk normalizer corruption and Face/Off judgment reliability
- openrouteradd web search plugin support
- openairemove unnecessary reasoning param from title generation
- markdownstop chunking from splitting fenced code blocks
Interface and style
1- settingsreduce API key toggle size on macOS
Documentation
2- quick-promptdocument Face/Off intentionally not used
- settingsclarify OpenRouter recommendation copy and link ZDR once
Maintenance
1- remove dead code (unused CoreData imports, empty deinit)
Version 1.29.0
What changed
Ask Cumbersome through Siri or Apple Shortcuts, making quick AI requests available from voice commands and personal automations.
Features
3- shortcutsadd Siri and Shortcuts integration
- verceladd app attribution headers for Vercel AI Gateway
- verceladd Zero Data Retention toggle for Vercel AI Gateway
Fixes
1- shortcutsadd Siri entitlement, fix phrase collision, add ping test
Interface and style
3- settingsremove redundant Provider row from Add API Key views
- onboardingfurther copy refinements
- onboardingtighten welcome screen copy and layout
Refactors
1- settingsimprove API key addition flow
Version 1.28.0
What changed
Vercel AI Gateway joined the provider list, and model filters let you hide options you never use.
Features
2- settingsadd model exclusion filters for large provider lists
- add Vercel AI Gateway as new API provider
Fixes
2- improve title generation prompt for shorter titles
- macosfix Cmd-F Find in conversation
Refactors
1- settingsrename Test to Update in API keys UI
Version 1.27.0
What changed
Voice Control, larger text, higher-contrast states, and non-color cues received dedicated support throughout the app.
Features
1- a11yadd Voice Control, Differentiate Without Color, Larger Text, and Sufficient Contrast support
Fixes
4- macosrestore arrow key navigation in sidebar
- markdownrestore inter-block spacing in chunked content
- streamingshow error banner for in-stream API failures
- scrollreduce excessive bottom spacer during auto-scroll
Refactors
2- DRY up duplicated view code in three files
- remove unused code identified by Periphery and manual review
Version 1.26.1
Performance
4- messagesstring-truncate long messages to reduce CPU usage
- scrollVStack + scroll-to-bottom + 5fps throttle for reliable positioning
- streamingfix high CPU during streaming with @observable and scroll throttling
- viewsfix iOS watchdog crash by removing message view observation overhead
Refactors
2- messagesrevert to VStack
- scrollmigrate to modern ScrollPosition API with auto-follow
Version 1.26.0
What changed
Long messages can be collapsed and expanded in the document view, making large conversations easier to scan.
Features
1- chatadd collapse/expand for messages in document view
Fixes
5- a11yimprove accessibility for collapse/expand feature
- a11yadd accessibility labels to ErrorBannerView
- anthropicdiscard pre-tool text to fix "double answer" with web search
- anthropichandle unsupported client-side tool requests gracefully
- iosshow auto-scroll button on first AI response
Performance
1- chatimprove CPU usage and fix scroll issues on macOS
Documentation
1- add critical performance warnings for LazyVStack
Maintenance
1- auto-applied settings.
Version 1.25.0
Features
1- a11yexpose markdown headings to VoiceOver rotor navigation
Fixes
3- resolve streaming buffer issues affecting UI and content preservation
- render markdown headers in pure-markdown paragraphs
- preserve user message and partial AI response on streaming error
Performance
4- use in-memory buffer for streaming to eliminate sidebar re-evaluation
- reduce redundant LaTeX parsing in MarkdownTextView
- throttle UI updates during streaming with VoiceOver bypass
- throttle SwiftData saves during streaming to reduce CPU/energy usage
Refactors
1- DRY up duplicated code across providers and views
Version 1.24.0
What changed
This release completed a major accessibility overhaul for VoiceOver, Dynamic Type, keyboard navigation, focus, and clearer control labels.
Features
3- a11ycomplete accessibility assessment with P3 resolution
- a11yimplement P2 accessibility features
- a11yimplement P0 and P1 accessibility features
Fixes
6- iosposition cursor snug against bottom gutter in chat input
- iosenable keyboard avoidance in expanded input sheet
- iosprevent text overlap with buttons in expanded chat input
- macosreduce excessive side margins in chat input
- messagesprevent crash when accessing deleted SwiftData models
- quick-promptOpen in App button not working on macOS
Performance
1- launchimprove macOS app startup time and window activation
Maintenance
1- linting.
Version 1.23.0
What changed
OpenRouter joined the provider list, giving you one API connection for models from multiple AI companies while keeping Cumbersome's model and parameter controls.
Features
3- openrouteradd OpenRouter provider integration
- add OpenRouter to marketing screens and sort providers alphabetically
- settingsadd OpenRouter to Custom API Parameters examples
Fixes
1- uialign iOS pending messages box with macOS rectangular styling
Documentation
1- plansadd OpenRouter integration plan
Tests
2- modernize and optimize test suite
- modernize and DRY test suite
Maintenance
2- complete feature and bump version.
- update OpenRouter HTTP-Referer to folding-sky.com/cumbersome
Version 1.22.0
What changed
Multiple conversations can now generate replies at the same time. You can also queue another message while a response is running, and stopping a reply preserves the partial answer.
Features
3- chatenable concurrent chats with per-conversation state
- chatadd pending message queue system
- chatpreserve streaming content when user stops response
Fixes
4- streamingadd cancellation checks in provider streaming loops
- iosclear message text after sending
- viewsrestore erroneously removed code from Periphery scan
- chatprevent sidebar thrashing during concurrent streaming
Refactors
2- settingssplit SettingsViewModel into focused files
- viewmodelextract ChatViewModel into focused helpers
Documentation
2- add pending message queue to feature highlights
- add concurrent chats to feature highlights
Maintenance
1- bump to 1.22.0
Version 1.21.0
What changed
Z.ai joined the provider list. Attachments also gained Mac drag and drop plus multi-select for sending several images or files at once.
Features
3- zaiAdd Z.ai provider support
- attachmentsadd macOS drag-and-drop file support
- attachmentsenable multi-selection for image and file pickers
Fixes
4- viewsremove per-item copy buttons from JSONTreeView
- latexprevent false positives on currency ranges and prose content
- markdownreduce chunk size to 4000 chars for safer margin
- markdownprevent stack overflow when rendering large text
Documentation
1- document xAI abandonment, pivot to Z.ai support
Maintenance
1- reduce image sizes using imageoptim.
Version 1.20.0
What changed
Math formulas now display as properly formatted equations, and entire conversations can be copied or exported as JSON for backup and reuse.
Features
3- latexLaTeX content parsing and rendering
- copyadd Copy Conversation feature with context menu
- exportadd conversation JSON export from sidebar context menu
Refactors
1- remove dead legacy code, rename LegacyChatMessage to APIMessage
Documentation
2- plansadd conversation JSON export feature plan
- add SwiftUI-only policy to project rules
Version 1.19.0
Features
2- deeplinkadd conversation deep links with Copy Deep Link menu option
- uiadd copy button to markdown code blocks
Maintenance
1- bump dependencies
Version 1.18.0
Features
6- iconsadd Joystick alternate icon and improve Settings UI
- iconsadd Gear Mesh alternate icon and fix macOS Dock sizing
- settingsRedesign iOS Settings with card-based layout
- settingsadd alternate app icons and switcher UI
- assetsadd alternative 'Cu' periodic table style app icons
- macostoggle menu bar icon visibility
Fixes
4- lintmove unused_declaration to analyzer_rules section
- settingsseparate icon choices, fix assets, align UI, use local storage
- attachmentsenforce API-safe image bytes for Anthropic
- dedupe authenticated request building
Refactors
6- viewsextract components from large view files
- remove unused code identified by Periphery
- toolingconfigure Periphery to be more strict
- viewsremove unused @State properties from ChatInterfaceView
- viewsextract ChatInterfaceView from MainNavigationView
- viewsextract components from MacOSNavigationView.swift
Documentation
1- plansdocument local storage decision for icon preference
Tests
1- remove useless, redundant, and brittle tests
Version 1.17.0
What changed
Restart a conversation from any earlier message to explore a different branch, or send a prompt into a brand-new chat from the Send button.
Features
3- auto-shrink images to 4mb to account for strict Anthropic image size limits.
- long-click on any user message to restart convo from that point, allowing for renewing conversation history by restarting the chat at any prior user message in a convo.
- long-press chat Send button provides context menu to send to new chat vs the existing one.
Fixes
1- a bug prevented icloud sync of chats with images/pdfs/files across devices. this fixes. IMPORTANT: delete old convos that have images/files for sync to work again.
Version 1.16.0
What changed
Pin important conversations so they stay easy to reach at the top of the sidebar or drawer.
Features
1- enable pinned conversations from drawer/sidebar.
Documentation
1- plan pin convo feature.
Maintenance
1- rename plans to .ai-plans.
Version 1.15.0
What changed
Quick Prompt brings up a lightweight Mac prompt window with Option-Space. PDFs and other files can now be analyzed and synced with their conversations across devices.
Features
2- quick prompt (press Option + Space in macOS for super-fast prompting).
- PDF and other attachment analysis and syncing between devices.
Fixes
1- macOS specific copy.
Documentation
3- help if processing.
- closing out quick prompt feature.
- key insights on missing CloudKit production promotion.
Tests
1- support PDF and other attachment analysis.
Maintenance
1- bump to 1.15.0.
Version 1.13.0
What changed
Inspect the raw response returned by an AI provider. On iPhone and iPad, in-progress replies can also keep running when you switch to another app.
Features
2- ability to view raw API response.
- enable iOS background tasks to allow completion of in-progress chats while in another app.
Fixes
4- various improvements to raw API view.
- DRY meta information in face/off responses; fix edited face/off.
- change sidebar selected to branded orange with white text.
- sidebar button colors.
Refactors
1- more logging for gemini calls.
Documentation
4- raw API response plan.
- mark background feature done.
- plan iOS background streaming.
- update README.
Tests
2- updated ensemble mode.
- add for sidebar, and update rules.
Maintenance
3- complete raw API viewer feature.
- bump to 1.13.0.
- rename docs to done.md.
Version 1.12.0
What changed
Search your conversation history from the sidebar. Liquid Glass navigation and refreshed app icons also arrived on current Apple systems.
Features
3- search feature.
- sidebar liquid glass.
- new icons for iOS and macOS.
Fixes
11- macOS sidebar button text in small width view.
- button colors in non-liquid glass iOS.
- iOS drawer fade-out extends above Search.
- auto-increment build count.
- iOS search input focus and soft keyboard.
- fade in bottom of drawer.
- make release ordering of edit types.
- remove Sora as an OpenAI option.
- Settings color when selected.
- test improvement.
- Unknown provider in intro iOS copy; missing macOS copy entirely.
Maintenance
2- update to reco settings and bump version.
- bump to 1.12.0.
Version 1.10.1
Fixes
3- soft cursor never vanishing in iOS.
- iOS PhotosPicker selection state.
- OpenAI follow-up message error to original message with attachment.
Documentation
1- for soft keyboard issue.
Maintenance
2- bump to 1.10.1.
- reco entitlement fix.
Version 1.10.0
What changed
Attach images and files to prompts on iPhone, iPad, and Mac so the AI can work with more than typed text.
Other changes
1- Attach images and files to prompts in iOS, iPadOS, and macOS.
Version 1.9.0
What changed
Send custom API parameters to OpenAI, Anthropic, or Google AI Studio for direct control over reasoning, sampling, token limits, stop sequences, and other provider options.
Other changes
9- TUNE ALL API PARAMS: Power users can now send custom parameters directly to AI provider APIs. Access advanced features like reasoning effort controls, sampling parameters, and custom stop sequences without waiting for app updates.
- Configure parameters in Advanced Features modal (tap + button in chat)
- Works across OpenAI, Anthropic, and Gemini
- Override built-in settings when needed
- Syncs via iCloud across all your devices
- Other Improvements:
- Enhanced chat input layout with improved button placement
- Platform-specific UI refinements for iOS and macOS
- Better handling of complex API configurations
Version 1.8.0
What changed
Conversation storage was rebuilt for more reliable iCloud syncing, while newer Apple systems gained more Liquid Glass styling.
Other changes
34- migrate to SwiftData for better cross-device syncing.
- overscroll UI improvements.
- more Liquid Glass for iOS and macOS 26.
- ### Bug Fixes
- scrolling spacing.
- deleting messages issue.
- streaming messages and swiftdata and cloudkit.
- face/off mode and migration.
- for smaller screens like 16e.
- indicate thinking + tools for all out tokens.
- glass style on ios >= 26.
- refine face/off button size in iOS.
- add more padding to input.
- auto-scroll.
- shorter input text.
- buttons inside macos chat input.
- ### Maintenance
- bump version to 1.8.0 build 27
- enable code stripping.
- bump to 1.8.0.
- try to fix legacy data.
- uninstall dev script.
- ### Tests
- swiftdata and cloudkit.
- complete swiftdata.
- keep refining.
- get them compiling.
- ### Documentation
- mostly complete swiftdata.
- plan swiftdata migration.
- add refactoring doc.
- liquid glass rules.
- ### Refactoring
- MainNavigationView.
Version 1.7.0
Other changes
6- organize convos by date.
- improve macOS title area.
- remove needless Your Chats and refresh in macOS and iOS.
- ### Bug Fixes
- adjust token counts.
- remove logos from sidebars.
Version 1.6.0
Features
2- auto-scroll to bottom when going to old convo.
- reorder convo list based on last update.
Fixes
1- subtle issue with iOS auto-scrolling.
Build and automation
1- fix changelog auto-generation.
Version 1.5.1
Other changes
1- Fix bug that was preventing full chat from being sent to OpenAI.
Version 1.5.0
What changed
Google AI Studio joined OpenAI and Anthropic as a direct provider. Cumbersome also began generating useful conversation titles automatically.
Other changes
25- Gemini / Google AI Studio API key support now available.
- Auto-generate titles using low-cost AI now available and ON by default.
- ### Bug Fixes
- no extra spacing needed for OpenAI and Gemini.
- duplicated pre-search content in Gemini.
- bug related to re-using old title when trying to swap to old chat during in progress new chat.
- don't overly restrict auto-title length.
- title summary issue with OpenAI.
- iCloud sync issue across devices.
- errant spaces in AI responses.
- swap provider and model mid-convo based on drop-down changes.
- ### Maintenance
- update CHANGELOG for v1.5.0-build19
- bump version to 1.5.0 build 19
- update marketing copy.
- bump and DRY.
- tests and debugging refinements for auto-generate titles feat.
- adjust cursor rules.
- ### CI/CD
- bump to 1.5.0.
- remedy issue with release.
- ### Documentation
- duplicated pre-search content in Gemini.
- ### Tests
- new Gemini option.
Version 1.4.0
Other changes
20- ### Features
- auto-scroll option.
- add new chat icon in upper-right in macOS.
- ### Bug Fixes
- restore non-streaming OpenAI calls.
- remove PRODUCT_PACKAGE_TYPE.
- reduce scrolling into infinity whitespace.
- MacOS double carets in drop-downs.
- improve auto-release notes.
- ### Build System
- try to fix app store connect distro issue.
- refine UI tests.
- prep release 1.4.0
- test and DRY for scrolling refinements.
- Modernize to iOS 18/macOS 15 with replace ScrollViewReader with .scrollPosition.
- Modernize to iOS 18/macOS 15 with macOS Window Management.
- Modernize to iOS 18/macOS 15 with Swift 6 Typed Throws.
- Replace NotificationCenter with Swift Observation.
- Modernize to iOS 18/macOS 15 with SF Symbols 6 with Animations.
- Modernize to iOS 18/macOS 15 with Swift 6 strict concurrency.
Version 1.3.0
What changed
Supported OpenAI conversations gained an AI-controlled search tool, letting the model look up current information when a prompt needs it.
Other changes
2- Agent tool (search) option now available.
- Various bug fixes and improvements.
Version 1.2.1
Other changes
1- Bump dependencies. Fix soft keyboard issue, allowing returns within prompts for better iOS editing.
Version 1.2.0
What changed
Face/Off sends one prompt to three AI candidates with different approaches, then asks another AI to judge the answers and explain its choice.
Other changes
6- FACE/OFF MODE IS HERE
- Generate 3 AI responses with different creativity levels (conservative, balanced, creative). Then an AI judge evaluates all 3, picks the winner, and tells you why it's superior.
- Stop doing manual trial-and-error. Get the best response on the first try.
- Perfect for critical tasks: business emails, complex code, research. When quality matters more than cost, Face/Off Mode delivers.
- Why consumer apps will never build this: Subscription models want you messaging more, not getting perfect answers immediately. With pay-per-use, our incentives align with yours.
- Uses ~5x the tokens, but when you need the absolute best response, it's worth it.
Version 1.1.0
What changed
Version 1.1 replaced chat bubbles with a full-screen document workspace, added editable messages, and synced conversations, settings, and API keys through your personal iCloud account.
Other changes
7- DOCUMENT WORKSPACE
- Finally. Stop squinting at chat bubbles. Full-screen document interface for actual work. Edit AI responses inline. Read long outputs without wanting to throw your phone.
- ICLOUD SYNC
- Your conversations, API keys, and settings now sync across iPhone, iPad, and Mac via your personal iCloud. Not our servers-yours. Start a conversation on your phone, finish it on your Mac.
- BETTER CONVERSATION EDITING
- Edit any message-yours or the AI's-to refine context. Delete off-topic tangents. Fix the AI's mistakes mid-conversation. Better context = better responses.
- And of course a bunch of bug fixes and little-bitty features.
Version 1.0.0
Initial release.