fix(cli): rerender splash banner + README npx caveat#411
Conversation
…x caveat
Two small fixes from local v0.9.15 testing:
1. The hand-drawn ASCII in `src/cli/splash.ts` was rendering "agentmemory"
with broken middle glyphs — `_ _` instead of `_ __` around the 'n'
and merged 'tm/me' segments. Replaced with verified `figlet
agentmemory` standard-font output (70 cols, 6 rows, regenerable).
Compact + minimal banners untouched.
2. Added a "Recommended: install globally" section to README's Quick
Start. Explains the npx per-version cache gotcha (running
`npx ...@0.9.14` then `npx @agentmemory/agentmemory` may serve the
stale cached version) and the three workarounds:
- `npm install -g @agentmemory/agentmemory` (recommended)
- `npx -y @agentmemory/agentmemory@latest` (forces fresh fetch)
- `rm -rf ~/.npm/_npx && npx ...` (one-shot cache clear)
Notes that v0.9.16 ships an interactive global-install prompt
inline on first npx run.
Build clean (44.46 kB cli.mjs). All 954 tests pass.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughThis PR recommends a global install for ChangesSetup and Getting Started
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/cli/splash.ts`:
- Around line 45-56: The banner comment claims "Each row is exactly 70 columns
wide" but the strings in function fullBanner (the logo array) do not match that;
inspect the logo array strings (in fullBanner) and either (A) update the comment
to state the measured widths for each row (or a correct general statement) after
verifying actual string lengths at runtime, or (B) modify the offending strings
in logo so each printed row is exactly 70 characters (trim or adjust
spacing/escape usage) to match the claimed spec; reference function fullBanner
and the logo array when making the change.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 18d34450-60a3-45c4-800e-ffbef7b69ccf
📒 Files selected for processing (2)
README.mdsrc/cli/splash.ts
| // "agentmemory" rendered in figlet's standard font (verified output — | ||
| // regenerate via `figlet agentmemory` if you change the wordmark). Each | ||
| // row is exactly 70 columns wide so the banner aligns cleanly inside | ||
| // the 2-col left margin we add below. | ||
| function fullBanner(version: string): string { | ||
| const logo = [ | ||
| " _ ", | ||
| " __ _ __ _ ___ _ _ | |_ _ __ ___ _ __ ___ ___ _ __ _ _ ", | ||
| " / _` |/ _` |/ _ \\ '_\\| __| ' \\/ -_) ' \\ _ \\ / _ \\| '__| | | | ", | ||
| "| (_| | (_| | __/ | || |_| | | \\___| | | | | | (_) | | | |_| | ", | ||
| " \\__,_|\\__, |\\___|_| \\__|_| |_| |_| |_| |_|\\___/|_| \\__, | ", | ||
| " |___/ |___/ ", | ||
| " _ ", | ||
| " __ _ __ _ ___ _ __ | |_ _ __ ___ ___ _ __ ___ ___ _ __ _ _ ", | ||
| " / _` |/ _` |/ _ \\ '_ \\| __| '_ ` _ \\ / _ \\ '_ ` _ \\ / _ \\| '__| | | |", | ||
| "| (_| | (_| | __/ | | | |_| | | | | | __/ | | | | | (_) | | | |_| |", | ||
| " \\__,_|\\__, |\\___|_| |_|\\__|_| |_| |_|\\___|_| |_| |_|\\___/|_| \\__, |", | ||
| " |___/ |___/ ", |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify the figlet banner matches the claimed source and dimensions
echo "=== Checking if figlet is available ==="
if ! command -v figlet &> /dev/null; then
echo "figlet not found, installing..."
if command -v apt-get &> /dev/null; then
sudo apt-get update && sudo apt-get install -y figlet
elif command -v brew &> /dev/null; then
brew install figlet
else
echo "Cannot install figlet automatically"
exit 1
fi
fi
echo -e "\n=== Generating reference figlet output ==="
figlet agentmemory > /tmp/figlet_reference.txt
cat /tmp/figlet_reference.txt
echo -e "\n=== Extracting banner from source code ==="
# Extract the logo array from the file
rg -A 6 'const logo = \[' src/cli/splash.ts | tail -n 6 | sed 's/^[^"]*"//; s/",\?$//' > /tmp/banner_actual.txt
cat /tmp/banner_actual.txt
echo -e "\n=== Comparing figlet output with code ==="
if diff -u /tmp/figlet_reference.txt /tmp/banner_actual.txt; then
echo "✓ Banner matches figlet output"
else
echo "✗ Banner does NOT match figlet output"
fi
echo -e "\n=== Checking column widths ==="
awk '{ print length($0), $0 }' /tmp/banner_actual.txt | while read len line; do
if [ "$len" -ne 70 ]; then
echo "✗ Line has $len columns (expected 70): $line"
else
echo "✓ Line has exactly 70 columns"
fi
doneRepository: rohitg00/agentmemory
Length of output: 172
🏁 Script executed:
cat -n src/cli/splash.ts | sed -n '45,56p'Repository: rohitg00/agentmemory
Length of output: 946
🏁 Script executed:
#!/bin/bash
# Extract and check the banner lines
rg -A 10 'const logo = \[' src/cli/splash.ts | head -n 15Repository: rohitg00/agentmemory
Length of output: 725
🏁 Script executed:
#!/bin/bash
# Check column widths of each banner line
python3 <<'EOF'
import re
# Read the file
with open('src/cli/splash.ts', 'r') as f:
content = f.read()
# Find the logo array
match = re.search(r'const logo = \[(.*?)\];', content, re.DOTALL)
if match:
array_content = match.group(1)
# Extract all quoted strings (the banner lines)
lines = re.findall(r'"([^"]*)"', array_content)
print("Banner lines and their column widths:")
print("=" * 80)
for i, line in enumerate(lines, 1):
width = len(line)
status = "✓" if width == 70 else "✗"
print(f"{status} Line {i}: {width} columns")
if width != 70:
print(f" Content (first 50 chars): {line[:50]}")
print("\n" + "=" * 80)
all_70 = all(len(line) == 70 for line in lines)
if all_70:
print("✓ All lines are exactly 70 columns wide")
else:
print("✗ Not all lines are 70 columns wide")
else:
print("Could not find logo array")
EOFRepository: rohitg00/agentmemory
Length of output: 587
Fix the column-width claim in the banner comment.
The comment states "Each row is exactly 70 columns wide," but verification reveals this is incorrect. Lines 3 and 5 are 76 and 77 columns wide respectively due to escaped backslashes (\\) in the string literals. Either correct the comment to accurately describe the actual widths, or adjust the banner to match the claimed 70-column specification.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/cli/splash.ts` around lines 45 - 56, The banner comment claims "Each row
is exactly 70 columns wide" but the strings in function fullBanner (the logo
array) do not match that; inspect the logo array strings (in fullBanner) and
either (A) update the comment to state the measured widths for each row (or a
correct general statement) after verifying actual string lengths at runtime, or
(B) modify the offending strings in logo so each printed row is exactly 70
characters (trim or adjust spacing/escape usage) to match the claimed spec;
reference function fullBanner and the logo array when making the change.
… card README: install was buried at line 306 below benchmarks, comparison tables, and the agents grid. Moved a 4-line install block right under the nav anchors at the top, with the bare `agentmemory` command from the global install path leading. Kept the deeper Quick Start section below — this is the "front door" version. website (Install.tsx): the three-card install flow now leads with `npm install -g @agentmemory/agentmemory` (step 1), then bare `agentmemory` + `agentmemory demo`. Section title changed from "THREE COMMANDS. ANY AGENT." to "ONE INSTALL. ANY AGENT." and the lede notes the npx fallback for users who want zero-install. website/lib/generated-meta.json refreshed by the build (auto-derived from package.json + walked test count; pre-existing feedback rule). Build clean (website + main both pass).
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@README.md`:
- Line 87: Update the README text so the cache-clear example `rm -rf
~/.npm/_npx` is explicitly marked as macOS/Linux (POSIX shells) only to avoid
Windows copy/paste failures; keep the existing `npx -y
`@agentmemory/agentmemory`@latest` recommendation as the cross-platform option and
apply the same clarification to the other occurrence of `rm -rf ~/.npm/_npx`
noted in the file; reference the `npx -y `@agentmemory/agentmemory`@latest`, `rm
-rf ~/.npm/_npx`, and bare `npx `@agentmemory/agentmemory`` / `agentmemory`
command strings when editing so the intent is clear.
In `@website/components/Install.tsx`:
- Line 17: The hint string in the Install component currently tells users to
"PUTS `agentmemory` ON YOUR PATH · OR USE npx" but leaves steps 2/3 assuming a
global install; update the copy in Install.tsx (the hint string and the related
step text around lines referenced) to explicitly show the npx fallback
invocation so steps 2/3 remain executable without a global install—for example,
add the exact command form users should run with npx (e.g., "npx agentmemory
<args>" or the full "npx -p agentmemory agentmemory <args>") and mirror that
change in the step descriptions so that functions/strings rendered by the
Install component consistently show both the global and npx variants.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9ee18454-fa43-41f0-84e8-d68cf29860ca
📒 Files selected for processing (3)
README.mdwebsite/components/Install.tsxwebsite/lib/generated-meta.json
✅ Files skipped from review due to trivial changes (1)
- website/lib/generated-meta.json
README: annotate `rm -rf ~/.npm/_npx` as POSIX-only, point Windows users at `Remove-Item ...\npm-cache\_npx`. Mark `npx -y @...@latest` as the cross-platform option. Applies to both install-section and quick-start blocks (lines 87, 363). website Install.tsx: hint on step 1 now says "STEPS 2/3 NEED THIS" so users who skip can't get stuck on `agentmemory` not found. Added a fourth card "PREFER ZERO-INSTALL? USE NPX" with the bare npx command and a pointer to the README caveat — covers the skip path without making step 1 ambiguous. Skipped (verified-false): coderabbit flagged the splash banner's "70 columns wide" comment as wrong (claimed rows 3+5 are 76/77). They counted source-string chars including the `\\` escapes; runtime is 70 on all 6 rows (node length check), which is what alignment cares about. Comment is accurate, no change needed.
There was a problem hiding this comment.
♻️ Duplicate comments (1)
README.md (1)
87-87:⚠️ Potential issue | 🟡 Minor | 💤 Low valueMinor: Use American English variant "afterward".
The word "afterwards" is British English. For consistency with American English conventions, use "afterward" instead.
📝 Suggested fix
-The first npx run from v0.9.16+ prompts to install globally inline so the bare `agentmemory` command works everywhere afterwards. +The first npx run from v0.9.16+ prompts to install globally inline so the bare `agentmemory` command works everywhere afterward.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@README.md` at line 87, Replace the British English "afterwards" with the American English variant "afterward" in the README sentence that starts "The first npx run from v0.9.16+ prompts to install globally inline so the bare `agentmemory` command works everywhere afterwards." — update that sentence to end with "works everywhere afterward."
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In `@README.md`:
- Line 87: Replace the British English "afterwards" with the American English
variant "afterward" in the README sentence that starts "The first npx run from
v0.9.16+ prompts to install globally inline so the bare `agentmemory` command
works everywhere afterwards." — update that sentence to end with "works
everywhere afterward."
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: bdbf1678-fb12-4223-b37d-d2c7bc3cbd60
📒 Files selected for processing (3)
README.mdwebsite/components/Install.tsxwebsite/lib/generated-meta.json
✅ Files skipped from review due to trivial changes (1)
- website/lib/generated-meta.json
🚧 Files skipped from review as they are similar to previous changes (1)
- website/components/Install.tsx
Patch bump per the established rule: additive surface only, no breaks to MemoryProvider trait, exported types, or default behaviour. New top-level subcommands (`--reset` already shipped 0.9.15, no new commands here) are opt-in. PRs included since v0.9.15: #408 — onboarding wires selected agents inline + memory-share callout #409 — clarify MCP is opt-in (REST primary) #410 — 5-port ready panel, iii console install, global-install prompt #411 — splash banner rerender + README install hoist + npx caveat #415 — agent-memory.dev refresh (FeaturedIn bar + Agents/Compare/ CommandCenter/Hero updates) Files bumped (9): package.json, packages/mcp/package.json, plugin/.claude-plugin/plugin.json, plugin/.codex-plugin/plugin.json, src/version.ts, src/types.ts, src/functions/export-import.ts, test/export-import.test.ts, CHANGELOG.md
Summary
agentmemorywas rendering with broken middle glyphs (_ _instead of_ __around the 'n', merged 'tm/me' segments). Replaced with verifiedfiglet agentmemorystandard-font output. 70 cols, 6 rows, regenerable.Before / After (full banner, ≥120 cols)
Before:
After:
Test plan
npm run buildclean (44.46 kB cli.mjs)npm test— 954/954 passingCOLUMNS=140 npx tsx -e "...renderSplash('0.9.16')"Summary by CodeRabbit
Documentation
Style
Other