Converted the dashboard HTTP request handler to an async function and replaced synchronous `fs.existsSync` and `fs.statSync` calls with non-blocking `fs.promises.stat`. This improves server responsiveness and concurrency by ensuring the event loop is not blocked during file system checks.
Also added robust error handling to the asynchronous handler to prevent unhandled promise rejections and ensure consistent 500 responses on internal errors.
Co-authored-by: PR0M3TH3AN <[email protected]>
Replaced empty catch blocks in `loadCanonicalRoster` and `parseLockEvent`
with `console.debug` statements that log the error message. This
improves observability of failures while maintaining the graceful
fallback behavior.
Co-authored-by: PR0M3TH3AN <[email protected]>
Explicitly bind the dashboard server to the local loopback interface
to prevent external access. This addresses a vulnerability where
the server was binding to all network interfaces by default.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Modified `src/lib.mjs` to execute `queryLocks` for all cadences in parallel.
- Added `scripts/perf-benchmark.mjs` for measuring CLI performance.
- Added `weekly-perf-report-2026-02-14.md` with baseline and verification data.
- Added `task-logs/weekly/2026-02-14T13-14-38Z__perf-deepdive-agent__completed.md`.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Extract parseTorchConfig for better isolation in tests.
- Add _resetTorchConfigCache for deterministic unit testing.
- Implement comprehensive tests in test/torch-config.test.mjs covering:
- Path resolution with env var support.
- Normalization of cadence and status.
- Roster parsing and filtering.
- Error handling for malformed config files.
- Caching behavior.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Adds a modal to `landing/index.html` warning users about the "freshly vibecoded" nature of the project.
- Intercepts the "Install via NPM" copy button to require acknowledgement before copying.
- Styles the modal with a danger theme consistent with the warning.
- Verified with Playwright.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Created src/constants.mjs
- Updated src/lib.mjs to use constants
- Added execution artifacts and completed log
Co-authored-by: PR0M3TH3AN <[email protected]>
Adds a stylized 'Install via NPM' code block with a copy button to the landing page, positioned between the hero and features sections.
- Updates landing/index.html with new HTML structure and CSS styles.
- Refactors copyToClipboard function to preserve button innerHTML (icon support).
Co-authored-by: PR0M3TH3AN <[email protected]>
The dashboard requires `assets/` (favicon.svg, logo.svg) to be present.
Previously, `package.json`'s `files` array excluded `assets/`, causing missing images in the installed package.
This commit adds `assets/` to the whitelist.
Tested by packing and installing in a clean environment.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Rename `src/nostr-lock.mjs` to `src/lib.mjs` and export core functions.
- Create `bin/torch-lock.mjs` as the CLI entry point.
- Implement `dashboard` command in `src/lib.mjs` to serve the dashboard using Node.js.
- Update `package.json` to configure `bin`, `main`, and `files` for NPM packaging.
- Create `torch-config.example.json` as a template for consumers.
- Update tests and README.md to reflect the new structure.
- Exclude task-specific artifacts (logs, context) from the package while retaining prompts and docs.
Co-authored-by: PR0M3TH3AN <[email protected]>
Implemented the missing scripts required by the audit-agent:
- `scripts/check-file-size.mjs`: Checks for files exceeding 300 lines.
- `scripts/check-innerhtml.mjs`: Checks for `innerHTML` usage.
- Added `npm run lint` script using ESLint with a basic configuration.
- Added `eslint` and related dependencies.
This unblocks the audit-agent daily schedule.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Created `assets/logo.svg` with a new gradient flame design.
- Created `assets/favicon.svg` based on the logo.
- Updated `build.mjs` to copy `assets/` to `dist/` and adjust paths in `landing/index.html`.
- Updated `landing/index.html` to use the new logo and favicon.
- Updated `dashboard/index.html` to include the new logo and favicon.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Attempted to run audit-agent.
- Failed because `scripts/check-file-size.mjs`, `scripts/check-innerhtml.mjs`, and `npm run lint` are missing.
- Created `artifacts/audit/2026-02-14/summary.md` documenting the failure.
- Created `task-logs/daily/2026-02-14T06-04-19Z__audit-agent__failed.md`.
- Added execution context in `src/context/`, `src/todo/`, `src/decisions/`, `src/test_logs/`.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Adds a "Completed only" option to the dashboard status filter.
- Updates filtering logic to distinguish between "Active" (running) and "Completed" (finished) tasks.
- Adds new utility classes `.bg-success/5` and `.border-success` to `styles.css`.
- Applies green tint and success border to completed task cards.
Co-authored-by: PR0M3TH3AN <[email protected]>