Skip to content

feat: ada dashboard subcommand - #1

Open
mikkel wants to merge 1 commit into
mainfrom
ada-dashboard
Open

feat: ada dashboard subcommand#1
mikkel wants to merge 1 commit into
mainfrom
ada-dashboard

Conversation

@mikkel

@mikkel mikkel commented Feb 24, 2026

Copy link
Copy Markdown

Summary

  • Adds ada dashboard [-p PORT] subcommand that launches a lightweight Python HTTP server on 0.0.0.0:7070
  • Live web UI showing: ATS task list (polls every 5s), ada service status with uptime/PIDs, and log file tails from ~/.ada/logs/ and /tmp/*.log
  • Dark-themed responsive UI with task filtering by status, auto-scrolling log viewer, and health indicators

Test plan

  • Run ada dashboard and open http://localhost:7070 in browser
  • Verify services panel shows correct running/stopped states
  • Verify ATS tasks panel loads and filters work
  • Select a log file and verify tail content displays with auto-scroll
  • Test -p flag: ada dashboard -p 8080

🤖 Generated with Claude Code

Adds `ada dashboard [-p PORT]` that launches a Python HTTP server on
0.0.0.0:7070 showing live ATS task status, ada service health, and
log file tails with auto-refresh every 5 seconds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@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: d3ff63484f

ℹ️ 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 ada-dashboard.py
Comment on lines +463 to +464
allowed = any(real.startswith(os.path.realpath(d)) for d in LOG_DIRS)
if not allowed or not real.endswith(".log"):

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Enforce directory boundary when authorizing log paths

The /api/logs/tail authorization check uses real.startswith(os.path.realpath(d)), which accepts sibling paths like /tmpfoo/secret.log when /tmp is allowed. That means a caller can read .log files outside the intended ~/.ada/logs and /tmp directories by choosing a prefix-matching path, which is especially risky because the server listens on 0.0.0.0.

Useful? React with 👍 / 👎.

Comment thread ada
port=7070
while [[ $# -gt 0 ]]; do
case "$1" in
-p|--port) port="$2"; shift 2 ;;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Validate dashboard port flag before consuming argument

The dashboard option parser reads port="$2" unconditionally for -p/--port; running ada dashboard -p without a value triggers set -u's unbound-variable error instead of a controlled CLI error message. This creates a user-facing failure path for a common argument mistake and bypasses the script’s normal die-based usage handling.

Useful? React with 👍 / 👎.

@mikkel mikkel left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@/ml2/nanobot/.pr-review-state/review-body.tmp

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