diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef48651e..9cc7cc55 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,6 +36,7 @@ If we later introduce **dual-licensing** options (e.g., commercial licenses for Automated agents contributing to this repository should follow these rules: - **Atomic Commits**: Keep changes small and self-contained. - **Descriptive Titles**: Use clear, semantic titles (e.g., `fix(ui): resolve upload modal overflow`). +- **Commit Messages**: Use the convention `type(scope): description (agent)` (e.g., `fix(ai): formatting (agent)` or `docs(ai): update quickstart (agent)`). - **Reference Issues**: Link to relevant issues in the PR description. - **Review AGENTS.md**: Always consult `AGENTS.md` for specific architectural guidelines and constraints before starting work. @@ -74,6 +75,15 @@ To set up the project locally: For a full guide, see the [Local Setup section in README.md](./README.md#local-setup). +## Dev Container + +This project includes a `.devcontainer` configuration for VS Code. It provides a pre-configured environment with Node.js 22 and necessary extensions. + +To use it: +1. Open the project in VS Code. +2. When prompted, re-open in Container (or use the command palette: "Dev Containers: Reopen in Container"). +3. The container will automatically install dependencies and run the build. + ## Security If you find a vulnerability, please email **[security@bitvid.network](mailto:security@bitvid.network)**. We’ll coordinate a responsible disclosure window before public release. diff --git a/LINT_ISSUES.md b/LINT_ISSUES.md new file mode 100644 index 00000000..68701f53 --- /dev/null +++ b/LINT_ISSUES.md @@ -0,0 +1,20 @@ +# Lint Issues Report + +## Summary +Automated linting and formatting checks were run. No auto-fixable formatting issues were found. However, one linting error persists which requires manual intervention. + +## Issues + +### css/tailwind.source.css + +The `npm run lint:tokens` check failed with the following error: + +``` +css/tailwind.source.css:5757 → 767.98px + @media (max-width: 767.98px) { +``` + +**Recommendation:** +This raw measurement (`767.98px`) should be moved into `css/tokens.css` as a design token, or the linter configuration (`scripts/check-design-tokens.mjs`) should be updated to whitelist this specific value if it represents a standard responsive breakpoint for mobile layout fixes. + +Note: This error currently prevents `npm run lint` from completing successfully, meaning subsequent checks (`lint:tailwind-brackets`, `lint:tailwind-colors`) are skipped in the standard run script. These subsequent checks were run manually and passed. diff --git a/README.md b/README.md index 7d4d8846..9ca262ff 100644 --- a/README.md +++ b/README.md @@ -129,14 +129,14 @@ To run **bitvid** locally: http://localhost:8000 ``` -### Common Commands +### Quickstart Commands - **Run unit tests**: `npm run test:unit` +- **Format code**: `npm run format` +- **Lint code**: `npm run lint` - **Run DM unit tests**: `npm run test:dm:unit` - **Run DM integration tests**: `npm run test:dm:integration` - **Run headless E2E tests**: `npm run test:e2e` -- **Format code**: `npm run format` -- **Lint code**: `npm run lint` ### Send your first video post @@ -149,11 +149,11 @@ const event = buildVideoPostEvent({ // Provide your hex pubkey (not npub) pubkey: "your_pubkey_hex", created_at: Math.floor(Date.now() / 1000), - dTagValue: "my-first-video", + dTagValue: "my-first-video", // The stable identifier (d-tag) for this video content: { version: 3, title: "My First Video", - videoRootId: "my-first-video", // Logical ID, often matches d-tag + videoRootId: "my-first-video", // Logical ID, typically matches the d-tag url: "https://example.com/video.mp4", description: "This is a test video post sent via the SDK." // magnet: "magnet:?xt=urn:btih:..." // Optional fallback diff --git a/artifacts/npm-audit.json b/artifacts/npm-audit.json new file mode 100644 index 00000000..223b4829 --- /dev/null +++ b/artifacts/npm-audit.json @@ -0,0 +1,22 @@ +{ + "auditReportVersion": 2, + "vulnerabilities": {}, + "metadata": { + "vulnerabilities": { + "info": 0, + "low": 0, + "moderate": 0, + "high": 0, + "critical": 0, + "total": 0 + }, + "dependencies": { + "prod": 5, + "dev": 316, + "optional": 29, + "peer": 8, + "peerOptional": 0, + "total": 320 + } + } +} diff --git a/artifacts/npm-outdated.json b/artifacts/npm-outdated.json new file mode 100644 index 00000000..9c6c6246 --- /dev/null +++ b/artifacts/npm-outdated.json @@ -0,0 +1,58 @@ +{ + "cross-env": { + "current": "7.0.3", + "wanted": "7.0.3", + "latest": "10.1.0", + "dependent": "app", + "location": "/app/node_modules/cross-env" + }, + "esbuild": { + "current": "0.25.12", + "wanted": "0.25.12", + "latest": "0.27.2", + "dependent": "app", + "location": "/app/node_modules/esbuild" + }, + "jsdom": { + "current": "24.1.3", + "wanted": "24.1.3", + "latest": "27.4.0", + "dependent": "app", + "location": "/app/node_modules/jsdom" + }, + "pixelmatch": { + "current": "5.3.0", + "wanted": "5.3.0", + "latest": "7.1.0", + "dependent": "app", + "location": "/app/node_modules/pixelmatch" + }, + "prettier-plugin-tailwindcss": { + "current": "0.6.14", + "wanted": "0.6.14", + "latest": "0.7.2", + "dependent": "app", + "location": "/app/node_modules/prettier-plugin-tailwindcss" + }, + "stylelint": { + "current": "16.26.1", + "wanted": "16.26.1", + "latest": "17.0.0", + "dependent": "app", + "location": "/app/node_modules/stylelint" + }, + "stylelint-config-standard": { + "current": "36.0.1", + "wanted": "36.0.1", + "latest": "40.0.0", + "dependent": "app", + "location": "/app/node_modules/stylelint-config-standard" + }, + "tailwindcss": { + "current": "3.4.19", + "wanted": "3.4.19", + "latest": "4.1.18", + "dependent": "app", + "location": "/app/node_modules/tailwindcss" + } +} diff --git a/components/disclaimer.html b/components/disclaimer.html index 9e952106..80910136 100644 --- a/components/disclaimer.html +++ b/components/disclaimer.html @@ -1,7 +1,7 @@
No matching channels found.
Coming Soon...
Review the videos you recently played, grouped by day.