Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
[1.1.8] - 2026-07-05¶
Fixed
- Fenced code blocks that immediately follow a list, blockquote, or table now render correctly in place; previously the preceding structure overlapped and displaced the code block.
- Table rows containing an odd number of backticks (or other unmatched paired delimiters like
'/"/(/[/{) no longer break table detection; the table used to be split at that row.
[1.1.7] - 2026-07-04¶
Fixed
- Indented fenced code blocks (1-3 leading spaces before the
```fence, common in AI-generated markdown) are now detected and rendered as code blocks instead of plain text. - Tab characters in normal paragraphs and blockquotes are now expanded to align to the tab stop. Previously each tab rendered as a single column, so tab-indented Markdown text lost its alignment in the rendered view.
- Tab indentation inside blockquotes now aligns to the same absolute column as in edit mode, keeping the rendered and raw views consistent.
[1.1.6] - 2026-07-03¶
这次写Claude的通信机制,是我开发microNeo以来最难受的一次 - Claude不是开源软件,好多api没有对外 - Claude对于使用第三方LLM的用户,额外的封锁了很多TUI的接口 - Claude像个贼一样的给中国区的用户埋设木马
这些种种都让我处在捏着鼻子写代码的状态中。我估计这是我最后一次为Claude写扩展程序了
Added
- Claude Code joins AIBP as the third AI agent receiver: microNeo can now deliver selections / cursor context to Claude Code, alongside the existing pi and opencode receivers. Install via the
microNeo-pluginsmarketplace (claude plugin install aibp-claude@microNeo-plugins), orclaude --plugin-dir <path>for dev iteration. (aibp-claude 1.0.1) :check-agent/microneo --check-agentnow covers Claude Code too (in addition to pi / opencode): detects the plugin, prompts to add the marketplace + install if missing, validates protocol compatibility otherwise.
Fixed
- aibp-claude install flow for third-party LLM relay users (ccmm / other
ANTHROPIC_BASE_URLproxies): marketplace install now works regardless ofANTHROPIC_BASE_URL, so relay users only need the env vars — no--plugin-dirflag required.
aibp-claude 1.0.1 also drops the always-on /tmp/aibp-claude.log diagnostic log that v1.0.0 carried over from the dev cycle.
[1.1.5] - 2026-06-30¶
Changed
- AIBP selection context sent to AI agents now uses paired XML tags (e.g.
<selection ...> ... </selection>) instead of single-sided markers. Removes ambiguity when selected text contains<...>strings (common in Markdown / HTML / config files), and shrinks each message by a few lines. (aibp-pi / aibp-opencode 1.0.4)
Docs
- README hero refreshed with an AI Partner intro and demo.
- Website gained a Changelog page and a custom 404 page.
- Repo root slimmed from 23 to 17 entries (moved
install.shtotools/, relocatedaibp-agents/underinternal/aibp/, etc.); no functional impact.
[1.1.4] - 2026-06-28¶
Added
:themecommand: VS Code-style colorscheme selector popup. Replaces the legacyset colorscheme <name>flow —↑/↓browse,Enterpicks,Esccancels. The old command still works.- New
default16-color ANSI colorscheme.
Changed
- Bundled colorschemes slimmed from 27 to 9 (kept the most representative; 18 redundant ones removed).
- SelectPane supports list scrolling (with
▲▼overflow indicators) and caller-configured viewport height / wrap behavior. - FloatFrame supports bottom-anchored popups via negative
anchor.Y, so popups can snap to just above the status line. - NotePane left edge now aligns with the main editor text area.
Docs
- Website: added Theme and Syntax Highlighting sections, full EN translation, restyled header.
- Language switcher replaced with a one-click
中文/Englishchip. - README: replaced screenshot with a live demo video, added Chinese-docs badge.
[1.1.3] - 2026-06-26¶
Changed
:check-agentTUI command migrated tomicroneo --check-agentCLI flag: agent extension self-heal (check / install / update) is now a shell command that prints progress to stdout and exits, rather than a TUI command blocking the editor loop. Runmicroneo --check-agentto verify and self-heal aibp-pi / aibp-opencode extensions for all installed AI agents. The flag works before config/screen init, so it can diagnose even when the config directory is corrupted.
Fixed
- npm-installed aibp-pi was misidentified as a source install:
piNpmAIBPVersiontransparently forwardedaibp.ParseProtocol's three return values, so theok(parse success) flag was silently repurposed asisSource. Any npm install with a parseable protocol gotisSource=true, short-circuiting all version checks (no update / upgrade prompts ever fired for aibp-pi). Now explicitly dropsokand forcesisSource=false, matching the already-correctopencodeNpmAIBPVersion.
[1.1.2] - 2026-06-26¶
Second minor version after dev2: opencode joins AIBP as the second AI agent receiver available to microNeo; :check-agent now covers both pi and opencode; AIBP protocol number upgraded to aibp-2.0 alongside the registry directory rename (major bump — see compatibility note in Changed).
Added
- opencode receiver (
aibp-opencodenpm package): microNeo can now deliver code selections / cursor context to opencode's current conversation, matching aibp-pi behavior. After the plugin loads, the AIBP-allocated name (e.g.● Bravo) is shown persistently at the bottom of opencode's TUI, making it easy to identify the current owner in multi-receiver setups. - opencode auto-create-session delivery: when opencode has no active session, sending automatically creates a new session and writes the message into the prompt — no need to manually open a conversation first.
:check-agentnow covers opencode: in addition to pi, the command now checks opencode too. If not installed, it prompts to install opencode + the aibp-opencode extension; if installed, it validates protocol version compatibility.
Changed
- AIBP protocol number
aibp-1→aibp-2.0: the registry directory was renamed frommicroneo-agent-bridge-<UID>toaibp-<UID>. This is an implementation-coupling change (both ends must upgrade in lockstep to keep talking), treated as a major bump by semver convention. aibp-pi / aibp-opencode 1.0.1+ requires microNeo 1.1.2+; an old microNeo paired with a new agent = silently dropped messages. :check-agentInstall / Update flow split: pinned versions and source-tree installations are now handled correctly.- Registry json gains an
agentfield: records which agent owns a name (pi/opencode), making it easy to tell ownership at a glance during troubleshooting. GC behavior is unchanged.
Fixed
aibp-opencodeself-install / upgrade on the opencode side no longer silently fails in pinned-version, pinned-cache, ortui.jsonmishandle scenarios.- After the protocol number upgrade, the envelope V field was not refreshed in sync, causing messages to be silently dropped by the receiver.
[1.1.1] - 2026-06-24¶
Added
InfoBarNow(msg)helper: synchronous InfoBar refresh during blocking commands.Ensurenow reports progress viaReportercallback — agent init showsaibp-pi downloading...../installed/readyin real time instead of a frozen screen.
Changed
Ensuresignature takes aReporterparameter.CheckAibpCmdsimplified to one line:_ = Ensure(PiEnsurer{}, InfoBarNow).
[1.1.0] - 2026-06-23¶
dev2 分支合并到 master。这是 microNeo 第一个 minor 版本,引入 microNeo ↔ ai agent 通信的完整闭环:notePane 浮窗 + AIBP 协议 + pi 接收端(aibp-agents/pi npm 包)。从此 microNeo 不只是 Markdown 编辑器,而是 ai agent 的"前端外设"。
Added
- AIBP 协议层(
internal/aibp/):microNeo ↔ ai agent 通信的 LSP 式协议。注册表 =$XDG_RUNTIME_DIR/microneo-agent-bridge-$UID/ai-*.json;传输 = Unix socket + 逐行 JSON;line/col 1-based 对齐 LLM 工具链。协议版本号单一事实来源(aibp.Protocol)。 - notePane 浮窗(
internal/action/notepane.go):嵌入式*BufPane+ 白名单 bindings(约 80 个安全 action,从根上隔离Quit/Shell/OpenFile等危险 action)+ 独立 binding 树 +BTScratch无文件 buffer(关闭即清空)。光标下方定位,主编辑器冻结。 :check-agent命令(internal/action/command_neo.go):用户主动运行,检查本机是否装了 pi,没装就提示先装;装了但没 aibp-pi 就自动pi install npm:aibp-pi;装了则校验协议版本兼容性(扩展过旧只提示不自动升,microNeo 过旧提示升级)。逻辑通过AgentEnsurer接口编排,未来接 opencode/claude 只新增ensure_<agent>.go即可。Alt-Enter打开 notePane(主编辑器):默认绑定,在主编辑器里按下时打开 notePane;在 notePane 内按下时则发送当前草稿 + 主编辑器上下文给当前 receiver 后关闭。Esc永远只关闭不发送(TUI 约定)。Alt-i在 notePane 内切换 receiver(NotePaneSwitchReceiver):notePane 已开态下按下,调aibp.Discover()找当前可用 receiver,0 个 → InfoBar 报错,1 个 → 静默切到唯一那个,≥2 个 → 弹 SelectPane 列表让用户挑。只更新selectedReceiver字段不重建 buffer,草稿不丢。notePane 未开时alt-i静默 no-op。- SelectPane 通用浮窗(D13):notePane 内部切换 receiver 时弹出的列表选择浮窗。基于新
FloatFrame框架,支持锚点自适应定位(靠近 notePane 上边框且自动展开方向)。上边框嵌入当前名字(┌─name───┐)。 - pi 接收端(
aibp-agents/pi/index.ts,独立 npm 包aibp-pi):pi 启动时注册到 AIBP 注册表并监听 Unix socket;收到 microNeo 的报文后解析,把 selection/message/file cursor 转给 pi 的 LLM 工具链。 - FloatFrame 浮窗框架(
internal/action/floatframe.go):事件路由与 Display 顺序的集中管理,SelectPane等浮窗通过它统一盖在 notePane 之上,确保鼠标/键盘事件被浮窗优先截获、绘制层叠正确。
Changed
- 主编辑器默认绑定
Alt-Enter从原 micro 默认(InsertNewline)改为NotePaneOpen。internal/action/defaults_{darwin,other}.go各加一行。 - 协议名从早期
EABP重命名为AIBP(Agent-IDE Bridge Protocol),代码与文档全量同步;接收端目录从aibp-receivers/重命名为aibp-agents/;注册表文件前缀从receiver-改为ai-。 notePane.open()改造成 D16 参数化版本:open(receiver)接收显式 receiver 入参,主编辑器打开前先aibp.Discover(),≥2 个 receiver 时通过 SelectPane 让用户选。
Fixed
- notePane 关闭后
BufPane.HandleEvent内访问 nil buffer 的 panic(D7 v2 修复):v1 实现依赖close()时销毁 buffer,但open()重建 buffer 与 close 时序存在窗口期,会触发 nil 访问。v2 改成open()总是Close旧 buffer +NewBufferFromString新 buffer,buffer 生命周期与 isOpen 状态机解耦。 - FloatFrame 关闭后终端光标残留在前序 pane 上:浮窗关闭前显式调用
screen.ShowCursor(hideX, hideY)把光标藏到屏外,避免与主编辑器光标位置错位。 - 主编辑器选区在 notePane 发送后不清空,导致下一次发送时 selection 内容与已发送的不一致:发送成功后自动调
Deselect清空主编辑器选区。
Docs
docs/agent-comm/整目录从 dev2 迁入,含 8 份"说明-*"当前态文档(架构设计 / AIBP / 发送端 / 接收端 / notepane)+ 8 份"Dx"决策文档(D11 名字分配、D12 多 receiver、D13 SelectPane、D14-D16 notePane 演化、D17:check-agent)。README.md 提供"何时读哪份"导航矩阵。
[1.0.12] - 2026-06-23¶
Added
- New
--reset-settingsCLI flag: copies the embeddedruntime/settings.json(all 82 fields including MD extensions) to the user's config directory (~/.config/microNeo/settings.json), backing up any existing file tosettings.json.backupfirst. Independent from--clean, which only does diff-only writes viaWriteSettings. - New docs site at https://sollawen.github.io/microNeo/ powered by mkdocs-material, bilingual EN/ZH, deployed via GitHub Actions. Includes
.github/workflows/deploy-docs.yml,mkdocs.yml, anddocs/website/{en,zh}/index.md.
Changed
runtime/settings.jsonis now a complete reference file (JSON5) with inline comments for all 82 fields. Field values sourced frominternal/config/settings.go+internal/config/settings_md.go; comments for the 74 native fields sourced from micro'sruntime/help/options.md, plus hand-written descriptions for the 7 MD extension fields andstatus-separator(Powerline arrow U+E0B0). 11 fields are marked[microNeo]for git-overlay overrides. Layout reorganized into themed groups (theme / UI / Edit / Search / Brace / Files / Clipboard / Terminal / Plugin / Markdown) with English comments.--optionsflag removed; its listing role is subsumed by--reset-settingsplus the newly-commentedruntime/settings.jsonsource.
Fixed
- Docs site no longer 404s at the root URL —
mkdocs-static-i18nplugin now builds English content at/and Chinese at/zh/, with the 🌐 language switcher auto-generated in the header.
Docs
- New
docs/MKT/mkdocs-website-plan.mdcapturing the mkdocs-material setup decisions (moved from dev2 working notes), including a new section 11 "Decision change history" covering the i18n plugin switch.
[1.0.11] - 2026-06-22¶
Fixed
- Pasting a large block of text into an empty Markdown file no longer shows only the last
scrollmargin + 1rows of the buffer. The cursor's vertical relocation in MD files was missing theend-pinbranch (micro native Relocate branch 4): when the cursor lands nearbEnd(short buffer / paste / goto-end), the view start was over-pushed toward the end andcoversExtent's buffer-end exception then locked the wrong state in place.relocateVerticalMDcase C now branches on cursor position relative tobEnd— middle region keeps the old estimate, end region pinsbEndto the viewport bottom — restoring one-to-one alignment with micro's native 4-branch Relocate.
[1.0.10] - 2026-06-19¶
Fixed
- Multi-cursor display regression in Markdown files: pressing
Shift-Alt-Up/Downnow shows all cursors again, instead of only the last one. Input/delete already worked correctly — only the on-screen rendering of secondary cursors was lost. Introduced in v1.0.6 (screenBuffer refactor).
[1.0.9] - 2026-06-19¶
Fixed
- Typing at end of last line that triggers a softwrap no longer yanks the cursor to the top of the viewport.
[1.0.8] - 2026-06-17¶
Fixed
- Pressing ESC in a Markdown file no longer collapses the whole screen back to raw markdown formatting.
[1.0.7] - 2026-06-17¶
Changed
- MD diagnostic log now follows micro's debug switch, off by default in release builds.
Fixed
- Pressing Enter at the end of a buffer no longer causes incorrect screen scrolling.
[1.0.6] - 2026-06-17¶
Added
- Export screen↔buffer coordinate conversion functions.
Changed
- Rewrite MD rendering pipeline to eliminate cursor drift when navigating across table and code-block segments.
- Improve table rendering and add display-package unit tests.
Fixed
- Cursor no longer drifts or disappears when navigating across table/code-block segments.
- Scrolling up no longer hides the cursor or leaves blank regions.
- Mouse scroll no longer gets stuck or falls back to raw formatting mid-scroll.
- Continuous ↓ across a table no longer makes the viewport jump.
- Clicking a table or code-block decoration row no longer jumps the cursor unexpectedly.
Removed
MDRenderandMDRenderIdleconfig options (rendering is now unconditional when MD is enabled).
[1.0.5] - 2026-06-15¶
Changed
- Cursor vertical scrolling now works correctly in MD files, including across table and code-block segments.
- Tweak s-dark colorscheme status line colors.
Fixed
- End-of-file panic when softwrapping at the last line.
Removed
- Debug log from
initMDConfig.
[1.0.4] - 2026-06-11¶
Added
- Add screen offset reverse lookup function.
Changed
- Screen row → buffer line lookup now uses O(1) flat array.
Fixed
- Code-block borders now map to real buffer lines.
[1.0.3] - 2026-06-09¶
Changed
- Tweak s-light colors.
Fixed
- Inline-code background color now renders correctly in all renderers.