This change updates the `torch init` command to:
1. Prompt the user for a Nostr hashtag (defaulting to `${namespace}-agent-lock`).
2. Explicitly save the `hashtag` to `torch-config.json` under `dashboard.hashtag` for easier editing.
3. Generate a `TORCH_DASHBOARD.md` file in the installation directory containing a link to the TORCH dashboard with the correct `hashtag`, `namespace`, and `relays` pre-filled.
This improves the onboarding experience by making it easier to find and monitor the agent locks immediately after initialization.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Update `src/utils.mjs` to detect `gemini` and `antigravity` platforms via environment variables.
- Update `dashboard/styles.css` with new color utilities for purple and pink themes.
- Update `dashboard/app.js` to map Goose, Gemini, and Antigravity platforms to distinct badge colors.
- Update `test/utils.test.mjs` to include unit tests for the new platform detection logic.
This ensures all active agent platforms are correctly identified and labeled in the TORCH dashboard.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Added missing copy of `src/constants.mjs` to test fixture in `test/scheduler-preflight-lock.e2e.test.mjs`
- Verified fix with `npm run test:integration:e2e`
Co-authored-by: PR0M3TH3AN <[email protected]>
- Add Gemini CLI card to landing/index.html
- Update selectAgent function to support Gemini
- Verified visually via Playwright script
Co-authored-by: PR0M3TH3AN <[email protected]>
- Add --test-timeout=30000 to prevent test suite hanging
- Skip build_verification.test.mjs when dist/ is absent
- Replace setTimeout with mocked Date.now in memory-cache expiry test
- Replace wait(30) with setImmediate flush in scheduler smoke test
- Remove unused @playwright/test devDependency
https://claude.ai/code/session_01GfwUNbgeMgXreFDbsNQMsS
- Fix timingSafeCompare to pad buffers to equal length before comparing,
closing the content timing side-channel on length mismatch
- Replace innerHTML with textContent for error messages to prevent XSS
- Extract inline script from dashboard/index.html into dashboard/app.js
- Remove 'unsafe-inline' from script-src CSP directive
- Update security test to match new CSP policy
https://claude.ai/code/session_01GfwUNbgeMgXreFDbsNQMsS
- Moved the "Scheduler Meta Prompts" section to be above the "Functional Agents" section in `landing/index.html`.
- Added "Antigravity IDE" as a new option in the "Choose Your Agent" section with a corresponding install prompt.
- Verified changes with Playwright script and manual inspection of the HTML structure.
- Tests passed.
Co-authored-by: PR0M3TH3AN <[email protected]>
Adds a detailed architectural opinion/RFC in `docs/TORCH_EVOLUTION_CONCEPT.md` outlining the transition from a linear scheduler to a node-based workflow orchestrator. This document includes recommendations for UI (React Flow), integrations (OpenClaw, ClaudeCode CLI), and a phased roadmap.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Updates `test/run-scheduler-cycle-memory-policy.test.mjs` to copy `src/utils.mjs`, `src/torch-config.mjs`, `src/constants.mjs`, `src/relay-health.mjs`, and `src/lock-ops.mjs` to the temporary test environment.
- Symlinks `node_modules` into the test environment to resolve external dependencies (e.g., `nostr-tools`).
- Resolves `ERR_MODULE_NOT_FOUND` errors during CI.
- Includes Protocol Research Agent daily run artifacts (Protocol Inventory update and Report).
Co-authored-by: PR0M3TH3AN <[email protected]>
Executed style-agent for daily cadence.
Ran npm run lint (and --fix), npm run build, and npm test.
Verified no style issues were auto-fixable.
Created completion log.
Co-authored-by: PR0M3TH3AN <[email protected]>
Explicitly defaults `AGENT_PLATFORM` to `'codex'` in the test environment for `run-scheduler-cycle-memory-policy.test.mjs`. This resolves assertion failures where tests expected platform metadata (e.g., `platform: 'codex'`) but received `'unknown'` in CI environments where the variable is unset.
Co-authored-by: PR0M3TH3AN <[email protected]>
The Claude Code remote sandbox strips `Upgrade: websocket` at the proxy
L7 layer, making all outbound WebSocket connections (including Nostr
relays used by torch-lock) unreachable. A local relay workaround was
investigated but rejected because it breaks cross-agent lock visibility
with Jules, which uses the public relay set.
Workaround: run all scheduler/lock operations exclusively from Jules
or any environment with unrestricted outbound WebSocket access.
Refs: anthropics/claude-code #490, #2059, #17333https://claude.ai/code/session_019g8yqKQMiq9u41n3GxUpFH