Skip to content

feat(cli): deprecate cloud bisync and mirror sync; diagnostics env overrides - #1711

Merged
phernandez merged 6 commits into
mainfrom
fix/v024-cli-cleanup
Oct 10, 2026
Merged

phernandez merged 6 commits into
mainfrom
fix/v024-cli-cleanup

Conversation

@phernandez

@phernandez phernandez commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Closes #1596. Closes #1595. Closes #1593.

#1596: deprecate bm cloud sync / bisync / bisync-reset

  • Marked deprecated=True, so bm cloud --help shows (deprecated).
  • Every run prints: "bm cloud <cmd> is deprecated and will be removed in a future release. Use bm cloud pull --name <p> / bm cloud push --name <p> instead."
  • They still run on Personal workspaces. On Team workspaces they print that notice and exit 1 with a "deprecated and does not run on Team workspaces" message, replacing the old "only supported on Personal workspaces" error.
  • bm cloud check is labelled legacy, Personal-only. prune is unchanged and does not warn (pinned by a test).
  • bm project list: sync_supported is true for every workspace, because push/pull works on Team. Team projects with a local sync path no longer show as cloud-only. The JSON keys stay for scripts.
  • Next-step hints after bm project add --local-path and bm cloud sync-setup no longer suggest bisync.
  • Help examples use --workspace my-team instead of --workspace Personal.
  • docs/cloud-cli.md is rewritten around push/pull, and the mirror commands are condensed into one "Deprecated" section. It also corrects set-key/create-key to the real api-key save/api-key create.
  • AGENTS.md, bm.1, and the Hermes and OpenClaw docs are updated. OpenClaw listed bm project sync/bisync, which don't exist.

Decision: the mirror commands stay for now. They are deprecated and say so on every run and in --help; no removal release is set.

#1595: diagnostics shows env overrides

basic_memory_diagnostics adds an "Environment Overrides" section. BASIC_MEMORY_<FIELD> variables are normalized to field names (case-insensitive, as pydantic-settings matches them) and passed through the same redact_config as the file dump. Overridden secret fields show <redacted>. Other BASIC_MEMORY_* variables are listed by name only.

#1593: stale skip-init entries

The set moved to SKIP_INIT_COMMANDS (module-level frozenset) with sync and watch removed. A new test asserts it is a subset of the registered top-level commands.

Verification

  • just fast-check: clean, including ty.
  • just fast-test tests/cli tests/mcp/test_tool_basic_memory_diagnostics.py tests/test_remedy_emission_sites.py tests/test_config.py tests/test_rclone_commands.py: 1431 passed and 1 failed. The failure was the new skip-init test asserting click.Group when Typer vendors its own click; it now uses TyperGroup and passes, as does test_project_sync_command.py (61 passed).
  • bm cloud --help checked by hand.

🤖 Generated with Claude Code

https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea

…errides

- #1596: `bm cloud sync`, `bisync` and `bisync-reset` are deprecated. They are
  marked in --help, warn with the pull/push command on every run, still run on
  Personal workspaces, and refuse Team workspaces with that notice. `bm project
  list` treats every workspace as sync-supported, since push/pull works on Team.
  Help examples no longer pass `--workspace Personal`. docs/cloud-cli.md now
  presents push/pull as the standard workflow, with the mirror commands in one
  deprecated section; AGENTS.md, the man page and integration docs follow.
- #1595: basic_memory_diagnostics lists BASIC_MEMORY_* overrides of config
  fields, redacted like the file dump; other BASIC_MEMORY_* names only.
- #1593: drop the stale `sync`/`watch` entries from the skip-init set, now a
  module constant guarded by a test against the registered commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea
Signed-off-by: phernandez <paul@basicmachines.co>
@phernandez phernandez added this to the v0.24.0 milestone Oct 9, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T23:09:06.578915Z 4c3b8f3 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a1c72cbb75

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/basic_memory/mcp/tools/basic_memory_diagnostics.py Outdated
Comment thread src/basic_memory/cli/commands/cloud/project_sync.py
…before login check

- basic_memory_diagnostics now derives overrides from env_overridden_fields,
  the same rule ConfigManager uses. Lowercase env names that lose to a file
  value are listed by name only, and legacy BASIC_MEMORY_SYNC_* names are
  reported under their current field.
- bm cloud sync and bisync print the pull/push migration notice before the
  credential guard, so a logged-out run still shows the replacement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea
Signed-off-by: phernandez <paul@basicmachines.co>
@phernandez

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 59338005b2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/basic_memory/mcp/tools/basic_memory_diagnostics.py Outdated
Comment thread src/basic_memory/cli/commands/project.py
…ed in MCP listing

- env_override_sources maps each env-sourced field to the variable that sets
  it, matching names in any letter case as pydantic-settings does. load_config,
  config saves and basic_memory_diagnostics all use it, so a lowercase
  basic_memory_* name wins over the file, stays out of config.json, and is
  reported as an override.
- list_memory_projects reports sync_supported=true for every workspace and no
  longer labels Team projects "cloud-only (local sync unsupported)", matching
  bm project list --json (#1596).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea
Signed-off-by: phernandez <paul@basicmachines.co>
@phernandez

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fb4944d6db

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/basic_memory/config.py Outdated
Comment thread docs/cloud-cli.md Outdated
…e setup is Personal-only

- env_override_sources reports the last case-insensitive match in os.environ
  order, the spelling pydantic-settings applies, instead of preferring the
  exact upper-case name.
- docs/cloud-cli.md: `bm cloud setup` (rclone + storage credentials) is a
  Personal-workspace step; Team workspaces transfer over WebDAV and skip it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea
Signed-off-by: phernandez <paul@basicmachines.co>
@phernandez

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3be8d4bc50

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/basic_memory/cli/commands/cloud/project_sync.py Outdated
…urvive

The deprecation notice and the Team refusal format the project name into a
copyable pull/push command; Rich interpreted bracketed names as tags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea
Signed-off-by: phernandez <paul@basicmachines.co>
@phernandez

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: 4fda245d9a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

CI sets FORCE_COLOR, so Rich prefixes each help-table row with escape codes
and the deprecated-marker test found no row starting with the command name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea
Signed-off-by: phernandez <paul@basicmachines.co>
@phernandez
phernandez merged commit 88c5fb2 into main Oct 10, 2026
31 checks passed
@phernandez
phernandez deleted the fix/v024-cli-cleanup branch October 10, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant