Skip to content

feat: harden browser escalation and add OpenTUI operator console - #2

Draft
cmahmud wants to merge 30 commits into
mainfrom
v0.2
Draft

cmahmud wants to merge 30 commits into
mainfrom
v0.2

Conversation

@cmahmud

@cmahmud cmahmud commented Aug 24, 2026 •

Copy link
Copy Markdown
Owner

Summary

This draft starts SyndCrawler v0.2 with two production-driven improvements: browser-escalation hardening and a first-class interactive operator TUI.

Browser escalation

Live VPS testing found a false negative on https://quotes.toscrape.com/js/. The raw page contained enough navigation/footer text to avoid the original thin-shell threshold while its quote cards were synthesized by inline JavaScript.

The rendering assessment now keeps the conservative placeholder/app-root signals and additionally recognizes thin pages whose inline JavaScript generates substantial DOM content. Strong document.write / document.writeln usage counts as rendering evidence; innerHTML / insertAdjacentHTML require a non-trivial inline script to reduce false positives.

The live ARM64 VPS regression now reaches:

  • requires_browser: true
  • engine: browser
  • rendered: true
  • escalated_from: http

Ubuntu 24.04 on the current trusted VPS blocks Chromium's internal sandbox under the container/AppArmor setup. The deployment therefore uses the existing explicit compatibility setting SYNCRAWLER_BROWSER_CHROMIUM_SANDBOX=false. This is documented as a trusted self-hosted compatibility mode, not a hostile multi-tenant default.

OpenTUI operator console

Adds tui/, built with React + OpenTUI using patterns from cmahmud/opentui and cmahmud/create-tui, with responsive/motion guidance from cmahmud/syndrid-tui-studio.

Functional surface:

  • API / PostgreSQL / Redis health
  • durable recent-crawl dashboard
  • keyboard navigation and crawl inspection
  • result inspection with HTTP/browser engine visibility
  • create bounded crawls from a seed URL
  • optional explicit crawl ID and max-pages budget
  • pause / resume / cancel
  • automatic dashboard/detail refresh
  • responsive narrow-terminal layout
  • authenticated control-plane client with clear API errors
  • syndcrawler tui launcher for compiled installations
  • source and standalone-binary build helpers

The TUI talks only to the authenticated control-plane API; it does not require direct Redis/PostgreSQL or Docker-socket access.

Motion and accessibility

Motion was added only after the complete functional TUI checkpoint passed CI.

  • subtle active-crawl activity animation
  • fetch → parse → store flow rail
  • short startup title reveal
  • SYNCRAWLER_TUI_REDUCED_MOTION=true static fallback
  • TERM=dumb automatically uses reduced motion
  • no API, form, selection, or lifecycle behavior depends on animation state

Control-plane support

Adds authenticated GET /v1/crawls with bounded offset pagination, backed by PostgreSQL recent-manifest queries. This lets the TUI display durable crawl history instead of only session-local IDs.

Validation

Exact head 8d676fcf3f94d28133906be1331ae3fb5c602bde passed CI run #395 across all lanes:

  • Python 3.12
  • Python 3.13
  • Redis
  • PostgreSQL, including crawl-list pagination
  • server/control-plane API
  • Docker deployment build
  • browser runtime
  • TUI: pinned Bun 1.4.0, TypeScript typecheck, API/motion unit tests, standalone OpenTUI compile

OpenTUI publishes a native @opentui/core-linux-arm64 package; the next VPS deployment pass will validate the compiled TUI on the actual ARM64 host.

This PR remains draft while v0.2 live workload/benchmark validation continues.

cmahmud added 30 commits August 23, 2026 23:47
@cmahmud cmahmud changed the title feat: improve browser escalation signals feat: harden browser escalation and add OpenTUI operator console Aug 24, 2026
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