Skip to content

fix(cli): rerender splash banner + README npx caveat#411

Merged
rohitg00 merged 3 commits into
mainfrom
fix/splash-ascii-and-readme-npx
May 15, 2026
Merged

fix(cli): rerender splash banner + README npx caveat#411
rohitg00 merged 3 commits into
mainfrom
fix/splash-ascii-and-readme-npx

Conversation

@rohitg00
Copy link
Copy Markdown
Owner

@rohitg00 rohitg00 commented May 15, 2026

Summary

  • Splash banner ASCII for agentmemory was rendering with broken middle glyphs (_ _ instead of _ __ around the 'n', merged 'tm/me' segments). Replaced with verified figlet agentmemory standard-font output. 70 cols, 6 rows, regenerable.
  • Added README Quick Start section explaining the npx per-version cache gotcha and three workarounds. Notes that v0.9.16 ships an interactive global-install prompt inline.

Before / After (full banner, ≥120 cols)

Before:

                       _                                                  
  __ _  __ _  ___ _ _ | |_ _ __  ___ _ __ ___   ___  _ __ _   _          
 / _` |/ _` |/ _ \ '_\| __| '  \/ -_) '  \ _ \ / _ \| '__| | | |         
| (_| | (_| |  __/ | || |_| | | \___| | | | | | (_) | |  | |_| |         
 \__,_|\__, |\___|_|  \__|_| |_|    |_| |_| |_|\___/|_|   \__, |         
       |___/                                              |___/

After:

                        _                                             
  __ _  __ _  ___ _ __ | |_ _ __ ___   ___ _ __ ___   ___  _ __ _   _ 
 / _` |/ _` |/ _ \ '_ \| __| '_ ` _ \ / _ \ '_ ` _ \ / _ \| '__| | | |
| (_| | (_| |  __/ | | | |_| | | | | |  __/ | | | | | (_) | |  | |_| |
 \__,_|\__, |\___|_| |_|\__|_| |_| |_|\___|_| |_| |_|\___/|_|   \__, |
       |___/                                                    |___/ 

Test plan

  • npm run build clean (44.46 kB cli.mjs)
  • npm test — 954/954 passing
  • Verified live render at COLUMNS=140 npx tsx -e "...renderSplash('0.9.16')"
  • Compact + minimal banners unchanged
  • No new deps (figlet is only used at dev time to regenerate)

Summary by CodeRabbit

  • Documentation

    • Updated installation docs with a recommended global-install path, simplified quick start ("ONE INSTALL. ANY AGENT"), and added an NPX fallback option.
    • Added notes on npx per-version caching, first-run prompt behavior, and fallback commands to force latest or clear cache.
  • Style

    • Refreshed CLI splash banner artwork with an updated wordmark/logo.
  • Other

    • Site build metadata bumped to v0.9.15.

Review Change Stack

…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.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 15, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agentmemory Ready Ready Preview, Comment May 15, 2026 4:48pm

Request Review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 15, 2026

📝 Walkthrough

Walkthrough

This PR recommends a global install for @agentmemory/agentmemory (with npx fallback and caching notes), updates the website Install component and README copy, refreshes the CLI splash ASCII art for wide terminals, and bumps generated site metadata.

Changes

Setup and Getting Started

Layer / File(s) Summary
Website Install component
website/components/Install.tsx
Replaces the SIMPLE command list and hero copy to recommend npm install -g @agentmemory/agentmemory``, adds an npx fallback `CopyBox`, and updates step labels and hint text.
Global install documentation
README.md
Adds an Install nav item and ## Install section with global-install instructions plus an npx-only alternative, explains npx per-version caching and the v0.9.16+ first-run prompt, and adds a Quick Start “Recommended: install globally” subsection with commands and fallback cache/fetch notes.
CLI splash banner update
src/cli/splash.ts
Replaces the fullBanner() ASCII art for wide terminals (width >= 120) with new figlet/box-drawing lettering while preserving banner assembly and alignment behavior.
Generated metadata bump
website/lib/generated-meta.json
Bumps version to 0.9.15 and updates testsPassing and generatedAt timestamp in generated site metadata.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • rohitg00/agentmemory#198: Changes website/components/Install.tsx messaging and installation/demo command instructions, related to the website install copy edits here.
  • rohitg00/agentmemory#114: Updates README/installation UX and quick-start command prompts similar to these documentation changes.

Poem

🐰 A tiny hop, a clearer start,
One install to warm the heart,
Banners new and docs made bright,
Agents ready, day or night,
Hop on—run the world with bite!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main changes: fixing the splash banner ASCII art and documenting the npx caching caveat in the README.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/splash-ascii-and-readme-npx

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between c3a613a and e3f0276.

📒 Files selected for processing (2)
  • README.md
  • src/cli/splash.ts

Comment thread src/cli/splash.ts
Comment on lines +45 to +56
// "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 = [
" _ ",
" __ _ __ _ ___ _ _ | |_ _ __ ___ _ __ ___ ___ _ __ _ _ ",
" / _` |/ _` |/ _ \\ '_\\| __| ' \\/ -_) ' \\ _ \\ / _ \\| '__| | | | ",
"| (_| | (_| | __/ | || |_| | | \\___| | | | | | (_) | | | |_| | ",
" \\__,_|\\__, |\\___|_| \\__|_| |_| |_| |_| |_|\\___/|_| \\__, | ",
" |___/ |___/ ",
" _ ",
" __ _ __ _ ___ _ __ | |_ _ __ ___ ___ _ __ ___ ___ _ __ _ _ ",
" / _` |/ _` |/ _ \\ '_ \\| __| '_ ` _ \\ / _ \\ '_ ` _ \\ / _ \\| '__| | | |",
"| (_| | (_| | __/ | | | |_| | | | | | __/ | | | | | (_) | | | |_| |",
" \\__,_|\\__, |\\___|_| |_|\\__|_| |_| |_|\\___|_| |_| |_|\\___/|_| \\__, |",
" |___/ |___/ ",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

🧩 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
done

Repository: 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 15

Repository: 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")
EOF

Repository: 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).
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between e3f0276 and 9fa4a7e.

📒 Files selected for processing (3)
  • README.md
  • website/components/Install.tsx
  • website/lib/generated-meta.json
✅ Files skipped from review due to trivial changes (1)
  • website/lib/generated-meta.json

Comment thread README.md Outdated
Comment thread website/components/Install.tsx Outdated
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.
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
README.md (1)

87-87: ⚠️ Potential issue | 🟡 Minor | 💤 Low value

Minor: 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

📥 Commits

Reviewing files that changed from the base of the PR and between 9fa4a7e and f39dff6.

📒 Files selected for processing (3)
  • README.md
  • website/components/Install.tsx
  • website/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

@rohitg00 rohitg00 merged commit 9344cfd into main May 15, 2026
5 checks passed
@rohitg00 rohitg00 deleted the fix/splash-ascii-and-readme-npx branch May 15, 2026 17:03
rohitg00 added a commit that referenced this pull request May 15, 2026
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant