Changelog¶
All notable changes to the SDK (Loopl, LooplRuntimes, LooplUI), the app and this site.
Versions follow SemVer; dates are UTC. Pre-1.0, minor versions may break the API — each
breaking change is called out under Changed with the old → new symbol.
Pre-release
loopl is in its first week. The SDK surface is settling around the Strands event loop; until 0.2.0
ships, treat the pages under SDK as the direction, and the changelog as the contract.
0.2.0 — in progress¶
Phase 2, driven by the first hands-on review of the app on an iPhone 16 Pro.
Changed¶
- Event loop — the agent loop is a faithful Swift port of the Strands
event_loop_cycle: stream → assemble the assistant message from stream events → run tools concurrently whenstopReason == toolUse→ append the tool-result message → recurse. There is no iteration cap and no loop detector. The only bounds are the context window (a sliding-window conversation manager trims by token estimate) and cancellation. - Max-tokens recovery — when a model stops on
maxTokensmid tool call, the truncated assistant message is appended and the model is asked to continue (Strands_recover_message_on_max_tokens_reached). - Retries — model errors are retried with exponential backoff (Strands' throttle path).
- Defaults — generation parameters default to the model card's maximum sensible values (context from the catalog's 8 GB recommendation, generate until stop).
Added¶
- Hooks —
BeforeInvocation/AfterInvocation,BeforeModelCall/AfterModelCall,BeforeToolCall/AfterToolCall,MessageAdded. - GGUF runtime —
GGUFModelon the official llama.cpp xcframework (Metal,n_gpu_layers = 99, sampler chain, token-by-token streaming, chat template viallama_chat_apply_template). Catalog gains Qwen3-1.7B Q4_K_M, Llama 3.2 3B, gemma-3-1b and SmolLM2 GGUF entries. - App — automatic first-launch download of
mlx-community/Qwen3-0.6B-4bitand auto-load of the last model; a clean reading layout (no bubbles, no metrics strip — a debug sheet instead); keyboard dismiss on swipe; new app icon and launch screen; iPad layout; Dynamic Type and VoiceOver passes; App Store screenshots. - Docs — this site rebuilt for quality: social cards, 404, instant navigation, versioned changelog;
SDK pages rewritten from the final sources with compiling snippets and a DocC API reference under
/api/.
Removed¶
Budget.maxIterations,LoopDetector(and the "max iterations: 8" setting in the app).- Hugging Face token: no token UI, no Keychain code — only public, non-gated repositories are listed.
- The demo (scripted) runtime;
FakeModelnow lives inTests/only.
0.1.0 — 2026-10-05¶
Initial public repository: SDK, runtimes, UI kit, app and site in one night.
Added¶
- SDK —
Looplcore:Agentactor,AgentConfig/Budget(default unlimited) +LoopDetector(warns, never stops),Modelprotocol (actors),Toolprotocol +ToolSchema+ClosureTool,Message/ToolCall/ToolResult,ToolCallParserfor Hermes/Qwen, Llama 3 and generic-JSON dialects (repairs truncated calls),PromptBuilder,ModelSpec/Catalog, resumable offline-awareHFDownloader,NetworkPolicy, built-in tools (CurrentTimeTool,CalculatorTool,RememberTool,RecallTool,HttpGetTool),FakeModel. - Runtimes —
MLXModel(mlx-swift-lm 3.32.3, Metal, KV cap fromcontextLength, chat-template tools,enable_thinkingkwargs),AppleFoundationModel(iOS 26, availability reasons, manual tool prompting, snapshot→delta streaming, estimated token counts),GGUFModelstub. - UI —
LooplUI:AgentTranscriptView,StreamingTextView,UserBubble,ToolCallCard,TokenMeter,ModelPickerRow,DownloadProgressRow+ design tokens (LooplDesign,LooplCard,Pill);Transcriptreducer in the core. - App — Chat · Models · Agent · Settings tabs; 15-model catalog (
models.json); download with resume; HF token in Keychain; offline mode; Demo (scripted) switch; Increased Memory Limit entitlement;scripts/build-on-device.sh. First device proof on an iPhone 16 Pro with Qwen3-1.7B-4bit. - Docs — loopl.dev on GitHub Pages, generated models table (
docs/gen_models.py), privacy policy.