Skip to content

fix(web): add explicit ARIA role='region' to ActivityPane section (#3672)#3713

Open
djm204 wants to merge 5 commits into
mainfrom
fix/issue-3672-activity-pane-aria-role
Open

fix(web): add explicit ARIA role='region' to ActivityPane section (#3672)#3713
djm204 wants to merge 5 commits into
mainfrom
fix/issue-3672-activity-pane-aria-role

Conversation

@djm204

@djm204 djm204 commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Fixes #3672.

Description

The ActivityPane component rendered its activity stream in a <section> with aria-label="Activity" but lacked an explicit ARIA landmark role="region", hindering keyboard and assistive technology navigation.

Changes

  • Added role="region" attribute to <section> in packages/franken-web/src/components/activity-pane.tsx.
  • Created unit tests in packages/franken-web/tests/components/activity-pane.test.tsx verifying landmark accessibility attributes and rendering.

dmendez204 and others added 5 commits July 4, 2026 10:08
Records the verified current state (ContainerBeastExecutor already
implemented per ADR-036) and the final 7-issue backlog, plus a lesson
on verifying "doesn't exist" claims via direct file reads before
filing issues.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@djm204

djm204 commented Jul 24, 2026

Copy link
Copy Markdown
Owner 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: 11d8e9892e

ℹ️ 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 on lines +18 to +20
const content = input.content.length > MAX_INPUT_BYTES
? input.content.slice(0, MAX_INPUT_BYTES)
: input.content;

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 Apply the size cap before scanning content

For oversized inputs with all whitespace or a very long whitespace prefix/suffix, the evaluator still calls input.content.trim() before this cap is applied, so it can scan (and potentially allocate from) the entire unbounded string before slicing to 500 KB. That defeats the new large-input CPU/memory guard in exactly the cases it is meant to protect; cap first or use a bounded emptiness check before any full-content scan.

Useful? React with 👍 / 👎.

);
}

if (config.costBudgetUsd !== undefined && (typeof config.costBudgetUsd !== 'number' || Number.isNaN(config.costBudgetUsd) || config.costBudgetUsd < 0)) {

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 Reject infinite cost budgets

When costBudgetUsd is Infinity (for example from a parsed CLI value or a programmatic config), this validation lets it through because Number.isNaN(Infinity) is false and it is not negative. The later check spend.estimatedCostUsd > config.costBudgetUsd can then never trip, so an invalid dollar budget silently disables the cost breaker despite the error message promising a finite value.

Useful? React with 👍 / 👎.

- **Dashboard** (`packages/franken-web`): a real React/Vite/Zustand SPA — chat, beast dispatch, network config, and analytics pages — talking to the `frankenbeast chat-server` (Hono HTTP + WS, ADR-016) over HTTP/WebSocket. Not a stub.
- **CLI beast management** (`packages/franken-orchestrator/src/cli/beast-cli.ts`): `beasts catalog/create/spawn/list/status/logs/stop/kill/restart/resume/delete` all work today for **local process** runs.
- **Container execution already exists**: `ContainerBeastExecutor` (`packages/franken-orchestrator/src/beasts/execution/container-beast-executor.ts`) wraps `ProcessBeastExecutor` with a Docker-transforming supervisor — `docker run --rm --network none`, explicit workspace mount, env allowlist. This was implemented under **ADR-036** (`docs/adr/036-sandboxed-beast-execution.md`, Accepted 2026-05-23) as part of a security-hardening chunk. `BeastDispatchService` already resolves `executionMode` per-request and picks the right executor (`beast-dispatch-service.ts:66,202-204`).
- **What ADR-036 does not cover, confirmed missing**: no Dockerfile for the `fbeast/sandbox:latest` image the policy references (container mode cannot actually run without one), no CPU/memory/pids resource limits, no non-root enforcement, no CLI flag to request container mode, no dashboard UI to select it, and the chat/WS dispatch path never forwards `executionMode` (only the REST route does).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3 Badge Refresh the deploy-beasts gap list

In this commit tree, several gaps listed here as “confirmed missing” are already implemented: the root Dockerfile builds fbeast/sandbox, DEFAULT_SANDBOX_POLICY includes non-root user and resource limits, the CLI parses --mode, the dashboard renders execution-mode controls, and chat routes accept executionMode. Leaving this as current verified state will steer readers toward already-completed P0/P2 work instead of the remaining gaps; update the plan to match the tree or mark it explicitly as historical.

Useful? React with 👍 / 👎.

@@ -0,0 +1,20 @@
# Issue #3672: ActivityPane ARIA Region Role - Progress Checklist

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 Remove the one-shot progress document

For this ARIA role change, this new progress document is tracking a small one-shot component/test edit, which the repo instructions explicitly say not to create progress docs for; keeping it adds task-log noise and makes the persistent task state less trustworthy. Remove this progress document unless the work is a larger multi-step effort.

AGENTS.md reference: AGENTS.md:L5-L6

Useful? React with 👍 / 👎.

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.

Add missing ARIA role to ActivityPane section for screen‑reader navigation

2 participants