LineCode Pro v2.0.12026-10-30
LineCode Pro v2.0.1
版本信息
- 版本名称: v2.0.1
- 版本号: 47
v2.0.1
English
Chat streaming and ordering
- One queue per turn - every stream delta, tool result and turn boundary now goes through SerialEvents, which drains in submission order on the main thread; sequence numbers are assigned during the drain and ChatState keeps a stable order, so a finished message can no longer overtake its last delta and flash prose into the answer area.
- Turn pipeline - the streaming draft moved into ChatTurnPipeline, which owns the buffers, the assistant message and every seq advance, and drops events from a generation that has already lost the conversation; opening, creating or deleting a conversation also stops the running loop first, so late events cannot leak into the new list.
- Answer versus process - live prose stays inside the process panel until the model message completes; only a completed message without tool calls becomes the answer, which removes the flash-then-fold of the review block.
- Failure surface - a failed turn persists an ERROR content block instead of plain prose, keeps partial output as the completed body and renders the reason as normal text (16sp, body color, no Markdown).
- Verbatim provider errors - HttpModelClient reads the error stream and reports HTTP <code> followed by the response body; the failure formatter no longer rephrases it, so the actual 401/404/429/500 payload reaches the chat.
- Stream retry - a transient model failure retries up to three times with an 800 ms delay, the turn pipeline is told which attempt is running, and a retry clears the half-written draft instead of appending to it.
Process and status indicators
- Shared dot matrix - DotMatrix and DotMatrixSpinner in ui-kit replace every ProgressBar: the working row, the process panel and the tool cards now share one 3x3 walk and one 1.5 s cycle, and all of them honour the system animation scale.
- Process panel - opens itself while a turn streams and folds when it ends; a manual toggle is stored as an absolute choice, so a default that flips later never reverses it, and pending approvals count as active too.
- Tool card spacing - consecutive calls in a group and nested agent cards use a 2dp gap, so a run of calls reads as one list instead of separate cards.
Tools
- webfetch** - new built-in tool that fetches one page and returns readable text: HTTPS only plus HTTP for loopback/emulator hosts, 2 MB response cap, HTML reduced to text with scripts and styles stripped, 12k characters by default and 30k maximum; the tool list uses the new FETCH/GLOBE glyph.
- Lenient tool arguments - ToolJsonRepair repairs what models actually emit: fences, prose before the object, smart or single quotes, unquoted keys, comments, Python literals, raw newlines, trailing commas, truncation at the token limit, a double-encoded arguments string and a single-object array wrapper. Mutating tools still reject truncated payloads instead of writing half a file.
- Structured schemas - tool schemas and MCP input schemas are built through ToolSchemaBuilder/org.json; a source guard now rejects hand-written JSON object literals in main sources.
- Mode filtering - agent mode keeps every tool family except phone control, which stays exclusive to control mode.
Context
- Manual compaction - "Compact context" in the chat menu now performs a real compaction: it summarizes everything except the recent tail and reports done, insufficient, no model, busy or failed.
- Compaction marker - a successful compaction appends a compact row, rendered by the previously unused CompactBlockView.
- Prompt asset - the compaction instruction comes from the prompt catalog (CONTEXT_COMPACTION) instead of an English string compiled into the compactor.
Workspace and attachments
- Workspace provider - WorkspaceDocumentsProvider exposes files/workspace through SAF (.workspace.documents), and the workspace card gains "Share with other apps", handing the root to another app with read/write grants.
- CJK folder names - WorkspaceNames.folder only replaces characters that are illegal in a path segment, so Chinese, Japanese and Korean names stay readable instead of collapsing to -.
- Drawer refresh - the project header and the file tree reload when the workspace changes, and opening the drawer always rebinds them.
- Photo Picker - image and video attachments use the system Photo Picker on API 33+ with the SAF picker as fallback; attachment names prefer DISPLAY_NAME before the MIME suffix because Photo Picker URIs carry no extension.
SkillHub
- Both payload shapes - the store parses the flat list payload (description, downloads, ownerName, iconUrl, stars, verified, category, labels.requiresapikey) and the nested detail payload (stats, owner); sorting uses sortBy with order=desc.
- Real icons - SkillIconLoader downloads artwork off the UI thread, caches 24 bitmaps, downsamples to 96 px, validates the URL against an HTTPS allow-list with a 4 MB cap, and tags the view so a late bitmap cannot land on a rebound row.
- Legacy card - artwork, title with a verified tag, author, category tags, a two-line description, downloads/stars/version and a chevron.
Extensions and multi-select
- AI agent writer - "Let AI write" now works: a bottom sheet takes a natural-language request, generation runs on the IO scheduler through AgentDraftGenerator and the new AGENT_DRAFT prompt, unknown tool names are dropped against the catalog the page passes in, and incomplete drafts are rejected instead of filling the form with empty fields.
- Selection bar - SelectionBar replaces the inline bar with count, copy, share and close; copy and share build a plain-text transcript in timeline order, tapping a message toggles its selection, and the placeholder "select and export" row is gone from the more menu.
Interface polish
- Drawer tabs - tab glyphs grow from 16dp to 24dp with an 8dp gap, and the inline icon button no longer reserves a minimum size.
- Switches - Material switch tinting (white thumb on the accent track when on, gray on a light track when off), so an enabled switch no longer reads as disabled.
- Long-press bar - action buttons lose their 4dp right margin.
Engineering
- Schema builders - database statements are grouped into conversation, settings/model, extension and project builders instead of one long method.
- Composition root - AppGraph construction is decomposed into focused steps without introducing new dependency bags.
- Build - Gradle configuration cache is enabled.
Tests
- New SerialEventsTest, ChatStateTest, ToolJsonTest, WebFetchToolTest, AgentDraftGeneratorTest, SkillHubApiTest and WorkspaceNamesTest; extended TurnAssemblerTest, ContextCompactorTest, ToolModesTest, HttpModelClientProtocolTest, BuiltinToolsTest and SourceHygieneTest.
Release
- Version 2.0.1 (versionCode 47); the release workflow still builds and publishes both the slim and local variants.
中文
聊天流式与顺序
- 单队列事件 - 流式增量、工具结果与回合边界统一进入 SerialEvents,在主线程按提交顺序排空;seq 只在排空过程中分配,ChatState 保持稳定排序,完成<u>的消息不会再越过最后一段增量,正文也不会先闪进答案区再折叠。</u>
- 回合管线 - 流式草稿移入 ChatTurnPipeline,由它独占缓冲、助手消息与每一次 seq 推进,并丢弃已经失去当前对话的旧生成事件;打开、新建、删除对话前会先停止正在运行的循环,迟到的回调不会写进新会话。
- 答案与过程分离 - 流式正文只进入过程面板,只有已完成且没有工具调用的消息才成为正式答案,消除了审阅块闪现后再折叠的问题。
- 失败展示 - 失败回合改为持久化 ERROR 内容块,部分输出保留为完成正文,失败原因以普通文本渲染(16sp、正文色、不做 Markdown)。
- 原始错误透出 - HttpModelClient 读取错误流并输出 HTTP <code> 加响应体,格式化层不再改写,401/404/429/500 的原始内容直接进入聊天。
- 流式重试 - 可恢复的模型失败最多重试 3 次、间隔 800ms,回合管线会收到当前重试次数,重试前清空半截草稿而不是继续追加。
过程与状态指示
- 共享点阵 - ui-kit 的 DotMatrix / DotMatrixSpinner 取代全部 ProgressBar:工作状态行、过程面板与工具卡片共用同一套 3×3 走位和 1.5s 周期,并统一遵循系统动画缩放。
- 过程面板 - 流式期间自动展开、回合结束后折叠;手动开关保存为绝对状态,后续默认值翻转不会反转用
LineCode Pro v2.0.02026-10-29
LineCode Pro v2.0.0
版本信息
- 版本名称: v2.0.0
- 版本号: 46
v2.0.0
English
UI parity and final polish
- Drawers and composer - drawer, header, composer and overlays rebuilt against the C++/legacy design: 240-360dp drawer with tabs, per-extension file icons, three-pill composer, capability menu, fixed-height picker sheets and the attachment tree.
- Tool calls - an assistant turn folds into one "Processed" row (spinner on the left while running, duration when done); consecutive tool calls collapse into "Used N tools"; per-tool cards for read/list/search, write/edit diffs, shell, delete, todo, agent, pipeline and MCP input/output; new tool-call card preview page.
- Timeline and thinking - legacy ConversationTimeline folding restored (thinking shows with prose, intermediate thinking stays folded and is never replayed); the long-press action bar dismisses after every action; failures persist a localized error row, auto-expand and are written to the error log; error-log rows show date and reason and open the log file in another app.
- Workspace - the card page is restored; SSH projects show their user@host:port address; switching is blocked until a new conversation starts; fixed the reload crash; the workspace surface opens without a page-slide animation.
- Extensions - the Skills page only keeps the SkillHub store row; the store gains sort chips, account states and a feature center; MCP/Agent pages aligned with the legacy frames.
- Models - multimodal switches (reasoning / image input / video input) above the compaction model; reasoning is locked to off when unsupported; the composer "+" menu shows image/video rows based on the model's capabilities (video currently attaches as a file placeholder).
- Navigation and data - push slides right-to-left in 280 ms, back slides left-to-right in 220 ms; route-family dispatch removes missing-route crashes; schema v13 adds the model capability columns through an idempotent migration.
Release
- Version 2.0.0 (versionCode 46); the changelog is bilingual from this version on, and the release workflow builds and publishes both the slim and local variants.
中文
界面对齐与收尾修复
- 抽屉与输入器 - 按 C++/旧版重做抽屉、头部、输入器与浮层:240–360dp 抽屉、标签页、按扩展名着色的文件树、三胶囊输入器、能力菜单、固定高度选择面板与附件树。
- 工具调用 - 整轮回合折叠为一行「已处理」(运行中左侧转圈、完成后显示耗时);连续工具调用合并为「使用了 N 个工具」;读/列目录/搜索行、写入/编辑 diff、Shell、删除、TODO、Agent、流水线、MCP 输入输出卡片;新增工具调用卡片预览页。
- 时间线与思考 - 恢复旧版 ConversationTimeline 折叠规则(思考随正文显示,工具间的思考折叠且不回放);长按操作条执行后自动关闭;失败时持久化本地化错误行并自动展开,同时写入错误日志;错误日志显示日期与原因,点击在其它应用中打开。
- 工作区 - 恢复卡片页;SSH 项目显示 user@host:port 地址;已有对话时切换工作区会提示先新建对话;修复切换时的崩溃;工作区入口不再播放页面滑入动画。
- 扩展 - Skills 扩展页只保留 SkillHub 商店行;商店页增加排序筛选、账号状态与功能中心;MCP/Agent 页对齐旧版框架。
- 模型 - 专用压缩模型上方新增多模态开关(推理 / 图片输入 / 视频输入);不支持推理时锁定为 off;输入器「+」菜单按模型能力显示选择图片/选择视频(视频暂以文件占位形式附加)。
- 导航与数据 - 进入页面右→左 280ms、返回左→右 220ms;按路由家族分发消除未注册页面崩溃;数据库升级到 v13,新增模型能力列(幂等迁移)。
版本
- 版本号 2.0.0(versionCode 46);从该版本起更新日志为双语,Release 工作流同时构建并发布 slim 与本地版。
---
下载说明
- LineCode Pro 2.0.0-slim.APK - 默认精简版 Release APK
- LineCode Pro 2.0.0-slim.APK.idsig - APK 签名文件