Skip to content

Rename the command to tabular-memory and add first-run onboarding (v4.0.0) - #4

Merged
eddietejeda merged 3 commits into
masterfrom
tabular-memory-command-and-onboarding
Oct 19, 2026
Merged

eddietejeda merged 3 commits into
masterfrom
tabular-memory-command-and-onboarding

Conversation

@eddietejeda

Copy link
Copy Markdown
Contributor

Rename

The hd command is now tabular-memory everywhere, including the SQL tag on the plugin's own queries (tabular-memory:internal). Breaking, so the version goes to 4.0.0.

Onboarding

  • Setup check at session start: checks the hotdata CLI and login once per machine. Until both work, it tells the user the exact fix. Then it welcomes them once.
  • tabular-memory doctor: checks CLI, login, workspace and project database, and prints the fix for each failure.
  • tabular-memory demo: loads a public NYC taxi sample (48MB, 2.96M rows) by URL and suggests questions. demo --remove drops it.
  • Data-file hint: in a project with no database, the agent is told which data files are too big to read, with the load command for each.

Testing

  • 75 unit tests pass (11 new).
  • Live: doctor, the welcome, the file hint and demo against a real workspace. A ready session start takes 54ms.
  • End to end: a headless Claude session with only this plugin loaded. It saw the file hint, ran tabular-memory load then one query, and answered 405103, which matches DuckDB on the raw file.

….0.0

Rename: the `hd` command is now `tabular-memory` everywhere, including the
SQL tag on the plugin's own queries (tabular-memory:internal).

Onboarding:
- Session start checks the hotdata CLI and login once per machine and tells
  the user the exact fix until it passes; then it welcomes them once.
- `tabular-memory doctor` checks CLI, login, workspace and project database,
  and prints the fix for each failure.
- `tabular-memory demo` loads a public NYC taxi sample by URL and suggests
  questions; `demo --remove` drops it.
- A project with no database tells the agent which data files are too big to
  read, with the load command for each.
Comment thread scripts/setup.py Outdated
capture_output=True, text=True, timeout=timeout,
env=hotdata.credentials())
except (OSError, subprocess.SubprocessError) as error:
return False, str(error)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nit: Return a separate "could not check" result when auth status times out or fails to start, and word the message for that case. (not blocking)

problem() treats a 5-second timeout as "not logged in". On a slow network, a logged-in user sees "Type ! hotdata auth login". The hook also returns early on that message, so the session gets no orientation.

Comment thread scripts/setup.py Outdated
if not files:
return ""
lines = ["This project has data files too big to read into context, not yet in Hotdata:"]
lines += [f" tabular-memory load {p} # {s / (1024 * 1024):.0f}MB" for p, s in files]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nit: Quote the path with shlex.quote(str(p)). (not blocking)

unloaded_hint gives the agent a command to copy. For a file such as data/my trips.csv, the unquoted command passes two arguments, and tabular-memory load fails.

Comment thread bench/redundancy.py
# whatever follows it. SQL in these commands carries \"PULocationID\" inside the quotes.
DQ = r'"((?:[^"\\]|\\.)*)"'
QUERY = re.compile(r"(?:hotdata query|hd query)\s+" + DQ, re.S)
QUERY = re.compile(r"(?:hotdata query|tabular-memory query)\s+" + DQ, re.S)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nit: Match both names, for example (?:hotdata query|tabular-memory query|hd query), and do the same in BATCH and BATCH_HEREDOC. (not blocking)

The published bench figures come from transcripts that call hd. With only the new name, redundancy.py finds no queries in those transcripts, so the old figures cannot be reproduced.

claude[bot]
claude Bot previously approved these changes Oct 19, 2026
A timeout or error from `hotdata auth status` no longer tells the user to log
in or hides the project's orientation; the check is tried again next session.
@eddietejeda

Copy link
Copy Markdown
Contributor Author

Fixed: the failed login check (now reported as unknown, never blocks the session) and unquoted paths in suggested load commands. Not changed: matching hd in bench/redundancy.py and the old hd:internal tag. Removing every hd reference is deliberate, since there are no users or transcripts to keep working.

@eddietejeda
eddietejeda merged commit 4b9c29d into master Oct 19, 2026
1 check passed
@eddietejeda
eddietejeda deleted the tabular-memory-command-and-onboarding branch October 19, 2026 13:38
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