All notable changes to this project will be documented in this file.
- Added readable
tagsmetadata tosearch,search-tag, andreadJSON responses from the shared bridge contract, and surfaced those tags in CLI--textoutput.
- Updated the command reference and README to describe readable
tagsonsearch/readas optional/best-effort, link to the bridge limitation note, and explain why the live integration suite no longer asserts tags there.
- Extended the
remnoteskill's failure-handling sequence so a missing browser tool now triggers OpenClaw-managed browser CLI recovery (status->stop->start->open https://www.remnote.com/) before the agent reports RemNote bridge work as unresolved. - Browser recovery failures now report gateway and plugin-disabled states more precisely, which makes RemNote bridge issues easier to diagnose from automation runs.
- Added the
read-tablecommand for reading Advanced Table data via the bridge, with--title/--rem-id, pagination, column filtering, and text output. - Added a
companion_infoWebSocket handshake so the bridge sidebar can identify a connected CLI instance and show its version.
- Changed
read-tableto require exactly one explicit identifier flag:--titleor--rem-id.
- Hardened
run-agent-integration-test.shto sourcenode-check.sh, build the CLI before daemon control commands, surface daemon-log context when startup fails, and stop the CLI daemon it started after runs.
- Updated
README.mdcommand summaries and examples to reflect hierarchical markdown and flashcard creation. - Linked CLI connection troubleshooting back to the bridge repo's connection lifecycle guide as the single source of truth.
- Added support for hierarchical markdown trees in
create(--content,--content-file),update(--append,--replace) andjournal(--content).- Flashcards can be created using RemNote markdown syntax (e.g.,
::,;;,>>) within thecontent. - Shell-safe signature in:
create [title] [options]. Content must be provided via--content/-cor--content-file.
- Flashcards can be created using RemNote markdown syntax (e.g.,
-
Updated mutating bridge actions (
create_note,update_note,append_journal) and CLI commands to return pluralremIdsandtitlesarrays for consistent multi-Rem support. -
Updated
remnote_create_noteinput schema:- Made
titleoptional - At least one of
titleorcontentmust be provided.
- Made
-
Refined tag application rules with hierarchical markdown: tags are only applied to the created root or top-level Rems, not to all nested descendants.
-
Improved CLI robustness by implementing "argument shifting" detection in
create,update, andjournalcommands. This prevents the shell from incorrectly swallowing global or local flags as option values when arguments (like empty strings) are missing. -
Aligned command docs and tests with the unified
create_notecontract and plural mutating-action responses. -
Renamed the local OpenClaw skill package directory to
skills/and updated live repository references, including the ClawHub upload script path. -
Extended
./code-quality.shto validate and package every committed skill underskills/using the localskill-creatortooling before running the Node test suite. -
Improved RemNote skill marketplace discoverability by expanding note/knowledge-base keywords in
skills/remnote/SKILL.mdand publishing it with the display nameRemNote Notes.
- Updated
README.mdand troubleshooting docs to reflect automatic bridge startup on plugin activation; the sidebar panel is now optional for status and manual reconnect. - Clarified that the bridge should reconnect in the background after late daemon startup, with manual
Reconnectremaining available as a faster fallback.
- Most of the cross-repo
create_note/ markdown-tree work in this release was implemented by @Twb06.
- Added file/stdin payload input for write commands to keep command invocations short and allowlist-friendly:
create --content-file <path|->update --append-file <path|->update --replace-file <path|->journal --content-file <path|->
- Added
journal --content <text>while keeping backward-compatible positionaljournal [content]. - Added a shared 100 KB content-size guard for file/stdin write payloads with clear read/size error messages.
- Added update replace semantics:
update --replace <text>update --replace-file <path|->
- Added CLI validation that rejects mixed append+replace content flags in one update call.
- Updated command docs and README examples to prefer file-based write payload flags.
- Updated OpenClaw
remnoteskill guidance to prefer file-based write payloads and mark inline/positional/stdin forms as discouraged defaults.
- Added OpenClaw skill docs under
openclaw-skill/:openclaw-skill/remnote/SKILL.mdwith read-first defaults, strictconfirm writegating for mutating commands, bridge/CLI0.xcompatibility checks, example trigger phrases for OpenClaw auto-activation, and blue🌀emoji.openclaw-skill/README.mdwith repository-facing overview of the skill package.
- Added
openclaw-skill/upload-to-clawhub.shto publish the localremnoteskill to ClawHub using the currentpackage.jsonversion, with preview-only default, preview auth precheck viaclawhub whoami, and explicit--publishopt-in for live publish.
- Expanded
docs/guides/command-reference.mdto fully document daemon subcommands, global flags, option defaults, option-interaction rules, exit codes, and representative usage patterns for automation consumers. - Rewrote
AGENTS.mdas a concise repo map and aligned it to the shared cross-repo section template, matching current daemon command/contract guidance and removing stale or contradictory instruction detail. readnow documents and passes through--include-content structured, aligning CLI read behavior/docs with structured hierarchy traversal use-cases.openclaw-skill/remnote-kb-navigation/SKILL.mdis now a user-agnostic template with explicit placeholder tokens and "stop if uncustomized" guardrails, plusopenclaw-skill/remnote-kb-navigation/CUSTOMIZATION.mdfor per-user setup.openclaw-skill/remnote/SKILL.mdnow clarifies thatremnote-kb-navigationshould be used only when available and customized for the current user.
- Added regression coverage ensuring
read --include-content structuredmaps toread_notepayloads without droppingincludeContent.
statusnow includescliVersionandversion_warning, using bridgehellohandshake tracking to surface bridge/CLI 0.x minor-version mismatches.- Added
search-tag <tag>, dispatchingsearch_by_tagwith the same content controls assearch(--include-content,--depth,--child-limit,--max-content-length). searchnow supports--include-content structured, exposing bridgecontentStructuredresults in JSON output.search --textandread --textnow show parent context when available.
- BREAKING:
--include-contentchanged from boolean flag to string mode (none,markdown,structured). - BREAKING: CLI no longer expects bridge
detailinsearch/readJSON responses; text output now usesheadline/title. - Default
readdepth increased to 5, and bothsearch/readnow support--child-limitand--max-content-length. read --textoutput was restructured to include headline/type/aliases/card-direction/content metadata.
statusnow reports compatibility warnings for legacy 0.5.x bridge plugins that do not sendhello, by falling back topluginVersionfromget_status.- Improved stability of search/read mode handling in test automation (mode-specific response-shape assertions).
- Added
docs/demo.mdwith a CLI demo walkthrough and an OpenClaw usage example covering daemon status checks and search workflow.
- Version advanced from
0.2.0to0.5.0to align with related project versioning in Automation Bridge and MCP Server, making bridge contract alignment more visible. - Increased default search limit from 10 to 50.
- Search text output now shows
remTypeas compact prefix ([doc],[concept],[desc], etc.) anddetailas truncated suffix when available. - Search results no longer include the
previewfield (removed upstream in the bridge plugin contract). - Updated npm development scripts so
npm run devruns the CLI once (no file watching), and addednpm run dev:watchfor explicit watch-mode development. - Updated documentation for the
dev/dev:watchsplit and added a bridge limitation note that full REM + children reads are not yet available.
- Daemon architecture: background process hosting WebSocket server (:3002) and HTTP control API (:3100).
- WebSocket server for RemNote Automation Bridge plugin connectivity (ported from remnote-mcp-server).
- Daemon lifecycle management:
daemon start,daemon stop,daemon statuscommands. - PID file tracking at
~/.remnote-cli/daemon.pidwith stale process detection. - Six bridge commands:
create,search,read,update,journal,status. - JSON output (default, for agentic consumers) and
--textflag for human-readable output. - Daemon client (fetch-based HTTP) for CLI-to-daemon communication.
- Pino-based structured logging with optional pino-pretty for TTY.
- Global CLI flags:
--json,--text,--control-port,--verbose,--version. - Exit codes: 0 (success), 1 (error), 2 (daemon not running), 3 (bridge not connected).
- Integration test suite with 6 workflows (daemon lifecycle, status, create/search, read/update, journal, errors).
- Integration test runner (
run-integration-test.sh) with interactive confirmation. - Unit tests for WebSocket server, control server, daemon client, PID utilities, formatter, CLI structure.
- Production dependencies:
ws,pino. - Dev dependencies:
@types/ws,pino-pretty. - Architecture documentation (
docs/architecture.md). - User guides: installation, daemon management, command reference, integration testing, development setup, troubleshooting.
- Updated README with architecture diagram, quick start, command reference, and troubleshooting.
- ExecPlan for daemon implementation (
.agents/execplans/cli-daemon-implementation.md).
- Rewrote
src/cli.tsfrom hello-world to full Commander.js program with subcommands and global options. - Updated
README.mdwith a dedicated Documentation section that links all guides underdocs/guides/. - Updated
AGENTS.mdto reflect current daemon-based architecture and implemented command/test scope. - Updated integration tests to require a pre-running daemon (no test-managed daemon start/stop lifecycle).
- Updated integration testing guide to document external daemon prerequisite and revised workflow order.
- Fixed CLI
statusbridge action name toget_statusfor compatibility with current RemNote Automation Bridge plugin. - Added unit coverage to prevent regressions in status action dispatch.
- Fixed CLI bridge action mappings for
create,read,update, andjournalto use bridge-compatible snake_case names. - Fixed
updatepayload mapping to sendappendContentfor--append. - Added unit coverage for command-to-bridge action and payload mapping.
- Updated
AGENTS.mdwith a no-AI-integration-test policy and prominent companion-project context paths. - Updated
AGENTS.mdcompanion-project references to sibling-relative$(pwd)/../...paths with short project-purpose notes. - Added terminology aliases in
AGENTS.mdto clarify project name equivalence (MCP server/bridge and companion naming). - Added status/license/CI/codecov badges at the top of
README.mdto align with companion repository conventions. - Updated README top description to use the current bridge name and link to
remnote-mcp-bridge.
- Initial bootstrap for
remnote-clinpm package. - TypeScript-based executable CLI with hello-world command output.
- Project tooling scripts:
node-check.sh,code-quality.sh,publish-to-npm.sh. - Initial repository metadata and packaging configuration for npm publication.
- Basic Vitest test suite (
test/setup.ts,test/unit/cli.test.ts) and coverage config. - GitHub Actions CI workflow to run code quality checks and tests on push/PR.
- Agent collaboration scaffolding copied from
remnote-mcp-server(.agents/*with empty.agents/execplans/).