Design for extending sg_scene_generate to support multiple scene kinds
(report_collection, monitoring) with manual type selection in Web UI,
relaxing the requirement for meta tags in third-party scene directories.
🤖 Generated with [Qoder][https://qoder.com]
Add parent sgClaw directory to config search candidates so Node.js
server automatically finds the correct config with DeepSeek API
endpoint instead of the test config in claw-new directory.
🤖 Generated with [Qoder][https://qoder.com]
- server.js: sanitize static file paths to prevent directory traversal
(GET /../../sgclaw_config.json would expose API key)
- config-loader.js: fix normalizeBaseUrl to strip /v1 before appending,
preventing double /v1 for non-standard base URLs
🤖 Generated with [Qoder][https://qoder.com]
Adds a web-based UI for generating scene skill packages:
- Node.js HTTP server (zero npm dependencies) on port 3210
- HTML page with glass-morphism UI, dual-panel layout, settings modal
- LLM-powered scene-id/scene-name auto-extraction from directory contents
- Real-time SSE progress streaming during skill generation
- Spawns sg_scene_generate CLI with configurable parameters
- Windows-compatible startup scripts (serve.sh + serve.cmd)
- Rust integration tests for server files and HTML structure
Architecture:
Browser (HTML/JS) → Node.js server → LLM API + cargo run → sg_scene_generate
Files:
frontend/scene-generator/{server.js,config-loader.js,llm-client.js,generator-runner.js,sg_scene_generator.html,serve.sh,serve.cmd}
tests/{scene_generator_server_test.rs,scene_generator_html_test.rs,scene_generator_llm_test.js}
docs/superpowers/{plans,specs}/2026-04-16-scene-skill-generator*
🤖 Generated with [Qoder][https://qoder.com]
Add self-contained HTML page for the Scene Skill Generator frontend:
- Dual-column glass-morphism layout matching service-console style
- Left sidebar: status card, sourceDir input with analyze button,
sceneId/sceneName inputs, settings button, generate button
- Right panel: streaming log display with SSE event rendering
- Settings modal: outputRoot, lessons, llmBaseUrl, llmModel fields
- JavaScript: connects to http://127.0.0.1:3210, implements analyze()
via fetch POST /analyze, generate() via fetch POST /generate with
SSE stream reading, settings modal open/close
- Rust test verifying HTML file exists and contains required elements
🤖 Generated with [Qoder][https://qoder.com]
Add config-loader.js module for loading sgclaw_config.json credentials
and resolving project root directory. Add initial Rust source-guard test
to verify server file paths exist.
🤖 Generated with [Qoder][https://qoder.com]
Align the service task flow callback-host regression with the hidden helper close/open bootstrap sequence uncovered during final request-url verification.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Use page context, deterministic plans, and direct-skill metadata as the service-owned bootstrap target precedence so callback-host startup no longer relies on line-loss text matching or the old request-url helper.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Auto-connect WebSocket on page load in service console
- Settings modal for editing sgclaw_config.json (API key, base URL, model, skills dir, etc.)
- UpdateConfig/ConfigUpdated protocol messages for remote config save
- save_to_path() for SgClawSettings serialization
- ConfigUpdated handler in sg_claw_client binary
- Protocol serialization tests for new message types
- HTML test assertions for auto-connect and settings UI
- Additional pending changes: deterministic submit, org units, lineloss xlsx export, browser script tool, and docs
🤖 Generated with [Qoder][https://qoder.com]
Sends sgHideBrowerserClosePage (best-effort) before sgHideBrowerserOpenPage
on the same bootstrap WebSocket connection. This prevents duplicate helper
pages across process restarts. Also enables hidden domain mode so the helper
page is not visible to users.
🤖 Generated with [Qoder][https://qoder.com]
The close_helper_page function opened a second browser WebSocket
connection during Drop and sent a close command directly via the WS
bypassing the HTTP polling system. This interfered with the browser's
normal state and caused the helper page to fail to open.
The cached_host lift (previous commit) already solves the duplicate
helper page issue within a single process lifetime. The Drop-based
close logic is deferred until a proper cleanup mechanism is designed.
🤖 Generated with [Qoder][https://qoder.com]
The `expected_domain` was removed from args for normalization but never
re-inserted, causing JS scripts to receive empty expected_domain and
report "missing_expected_domain" errors.
🤖 Generated with [Qoder][https://qoder.com]
Plan for modifying build_eval_js to support async scripts.
Two tasks: modify callback_backend.rs, add test case.
🤖 Generated with [Qoder][https://qoder.com]
Design for fixing Promise serialization issue in build_eval_js.
Async functions return Promise which gets JSON.stringify'd to "{}".
🤖 Generated with [Qoder][https://qoder.com]
Bring the main-branch lineloss default-period fix into feature/claw-ws while keeping the ws submit/backend path intact.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Default month/week deterministic lineloss requests to the source page's built-in time ranges while preserving explicit-period parsing and existing routing contracts.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep ws-backed submit flows routing Zhihu natural-language requests through orchestration before direct submit so sg_claw service console behavior stays consistent.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep Zhihu hotlist export requests on the orchestration path so natural-language submits without page context no longer fail in direct-submit routing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep the ws submit path while bringing over main's deterministic lineloss routing and the focused merge verification updates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add the tq lineloss design spec and implementation plan documents used for the deterministic submit work.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add the deterministic tq-lineloss routing and normalization flow so exact-suffix requests execute through the existing browser-script seam with canonical org and period arguments.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep browser-attached workflows on the configured direct-skill path and align the Zhihu export/browser regression contracts with the current ws merge state.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep the ws branch focused on websocket and Zhihu behavior by dropping staged scene-routing artifacts and restoring single-path skills dir semantics.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Capture the approved fault-details staged-skill design and implementation plan so the remaining work can be resumed from the documented contract.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Treat direct skill report-artifact payloads as task outcomes so partial and empty reports stay successful while blocked and error statuses fail explicitly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add fixed direct-submit skill loading from configured staged skills and validate directSubmitSkill early so malformed configs fail before routing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>