diff --git a/olddocs/COLLECTIONS.md b/olddocs/COLLECTIONS.md index 5ba9fc3..cb907cd 100644 --- a/olddocs/COLLECTIONS.md +++ b/olddocs/COLLECTIONS.md @@ -1,5 +1,14 @@ # CmdForge Collections +> **Document Status (January 2026)**: Collections are partially implemented: +> - ✅ API endpoints (`/api/v1/collections`, etc.) +> - ✅ Web UI pages (`/collections`, `/collections/:name`) +> - ✅ Database schema +> - ❌ CLI commands (`cmdforge collections list/install`) - Not implemented +> - ❌ Registry repo sync - Not implemented +> +> Collections can be browsed on the web and via API, but must be installed tool-by-tool via CLI. + Collections are curated groups of tools that can be installed together with a single command. ## Use Cases diff --git a/olddocs/DESIGN.md b/olddocs/DESIGN.md index 07257fe..d8926f4 100644 --- a/olddocs/DESIGN.md +++ b/olddocs/DESIGN.md @@ -2,6 +2,11 @@ > A lightweight personal tool builder for AI-powered CLI commands +> **Document Status (January 2026)**: This is the original design document. The core concepts +> (tool format, steps, variables, providers) remain accurate. The Terminal UI section describes +> the original urwid TUI which has been replaced by a PySide6 desktop GUI. For the latest +> documentation, see the project-docs system. + ## Overview CmdForge lets you create custom AI-powered terminal commands. You define a tool once (name, steps, provider), then use it like any Linux command. @@ -188,7 +193,11 @@ cmdforge check sum # Check dependencies for meta-tools cmdforge ui # Launch interactive UI ``` -## Terminal UI +## Terminal UI (Historical) + +> **Note**: The urwid TUI described below has been replaced by a modern PySide6 desktop GUI. +> The GUI provides the same functionality with a more polished interface. Run `cmdforge` to +> launch the GUI, or `cmdforge ui` for legacy TUI mode if available. A BIOS-style terminal UI using `urwid` with full mouse support. @@ -281,16 +290,27 @@ The current section's title is highlighted with brackets: `[ Tool Info ]` ### Directory Structure +> **Note**: The structure below is simplified. See `src/cmdforge/` for the full implementation. + ``` -cmdforge/ +src/cmdforge/ __init__.py - cli.py # Entry point, argument parsing - ui.py # UI dispatcher (chooses urwid/snack/dialog) - ui_urwid.py # Urwid-based BIOS-style UI - ui_snack.py # Snack/newt fallback UI + cli/ # CLI commands (list, create, edit, run, registry, etc.) + gui/ # PySide6 desktop GUI + main_window.py + pages/ # Tools, Registry, Providers, Profiles pages + dialogs/ # Step editors, Publish dialog, Connect dialog + web/ # Flask web application + app.py + routes.py + templates/ + registry/ # Registry API + app.py + db.py tool.py # Tool loading/saving/wrapper scripts runner.py # Execute tools providers.py # Provider abstraction + profiles.py # AI persona profiles ``` ### Provider System @@ -380,29 +400,34 @@ output: "{result}" ## What This Design Doesn't Include -Intentionally omitted (not needed for personal use): +Intentionally omitted for local tool execution (not needed for personal use): -- Trust tiers / security levels -- Cryptographic signing - Container isolation / sandboxing -- Certification testing -- Distribution packaging - PII redaction -- Audit logging - Provider capability negotiation **Why?** This is a personal tool builder. You write the tools, you run the tools, you accept the responsibility. Just like any bash script you write. +> **Note**: Some features were later added for the **registry** (community tool sharing): +> - Trust tiers → Publisher trust scores and badges +> - Security scanning → Scrutiny system with AI review +> - Audit logging → Admin audit trail for moderation actions +> - Distribution → Registry publishing with version management + ## Dependencies Required: - Python 3.10+ - PyYAML -- urwid (for TUI) +- PySide6 (for GUI) -Optional fallbacks: -- python3-newt/snack (simpler TUI) -- dialog/whiptail (basic TUI) +Optional (for web/registry): +- Flask +- SQLite with FTS5 + +Legacy TUI (no longer primary): +- urwid +- python3-newt/snack ## Example Workflow diff --git a/olddocs/META_TOOLS.md b/olddocs/META_TOOLS.md index 8766d29..7292a3c 100644 --- a/olddocs/META_TOOLS.md +++ b/olddocs/META_TOOLS.md @@ -1,5 +1,9 @@ # Meta-Tools: Tools That Call Other Tools +> **Document Status (January 2026)**: The `tool` step type is implemented and works as described. +> The CLI dependency commands (`cmdforge install --deps`, `cmdforge check`) are not yet implemented. +> Tools can still use `tool` steps, but dependency resolution is manual. + Meta-tools are CmdForge tools that can invoke other tools as steps in their workflow. This enables powerful composition and reuse of existing tools. ## Step Type: `tool` diff --git a/olddocs/PROJECT.md b/olddocs/PROJECT.md index 5407360..76190a2 100644 --- a/olddocs/PROJECT.md +++ b/olddocs/PROJECT.md @@ -1,5 +1,9 @@ # CmdForge Project Overview +> **Document Status (January 2026)**: This overview is mostly accurate but the source structure +> section is outdated. The TUI has been replaced by a PySide6 GUI. Database now has 25+ tables. +> For current architecture, see `src/cmdforge/` directly. + This document provides a comprehensive overview of the CmdForge project structure, components, and how everything fits together. ## What is CmdForge? @@ -32,52 +36,68 @@ See `docs/diagrams/` for visual representations: ``` src/cmdforge/ -├── cli.py # Entry point, subcommand routing +├── cli/ # CLI commands +│ ├── __init__.py # Entry point, subcommand routing +│ └── registry_commands.py # Registry CLI commands ├── tool.py # Tool dataclasses, YAML loading ├── runner.py # Step execution engine ├── providers.py # AI provider abstraction +├── profiles.py # AI persona profiles ├── config.py # Global configuration -├── manifest.py # Tool manifest handling +│ +├── gui/ # PySide6 Desktop GUI (primary UI) +│ ├── main_window.py # Main application window +│ ├── pages/ # Tools, Registry, Providers, Profiles pages +│ ├── dialogs/ # Step editors, Publish, Connect dialogs +│ └── workers/ # Background threads for API calls │ ├── registry/ # Registry API Server -│ ├── app.py # Flask API application -│ ├── db.py # Database operations, FTS5 search +│ ├── app.py # Flask API with 100+ endpoints +│ ├── db.py # Database operations, FTS5 search (25+ tables) │ ├── rate_limit.py # API rate limiting -│ ├── sync.py # Git sync for tool submissions -│ ├── categorize.py # Auto-categorization -│ └── similarity.py # Similar tool recommendations +│ ├── scrutiny.py # Automated code analysis +│ ├── similarity.py # Duplicate detection +│ └── sync.py # Git sync for tool submissions │ ├── web/ # Web UI Application -│ ├── app.py # Flask web app, Sentry integration +│ ├── app.py # Flask web app │ ├── routes.py # Page routes and handlers │ ├── auth.py # Password hashing, login/register │ ├── sessions.py # Session management -│ ├── docs_content.py # Documentation text content -│ ├── seo.py # Sitemap, robots.txt -│ ├── filters.py # Jinja template filters +│ ├── forum/ # Forum blueprint │ ├── templates/ # Jinja HTML templates -│ └── static/ # CSS, JS, images +│ └── static/ # CSS (Tailwind), JS, images │ -├── registry_client.py # CLI client for registry API -├── resolver.py # Dependency resolution -│ -├── ui.py # TUI dispatcher -├── ui_urwid.py # urwid TUI implementation -└── ui_snack.py # newt/snack TUI fallback +└── registry_client.py # CLI client for registry API ``` ## Database Schema -SQLite database at `data/cmdforge.db`: +SQLite database at `~/.cmdforge/registry.db` (or via `CMDFORGE_REGISTRY_DB` env var): | Table | Purpose | |-------|---------| -| `publishers` | User accounts (username, email, password_hash) | -| `tools` | Published tools (name, owner, description, config) | +| `publishers` | User accounts with roles, banning, verification | +| `tools` | Published tools with moderation status, fork tracking | | `api_tokens` | Authentication tokens for API access | -| `download_stats` | Tool download tracking | -| `pageviews` | Analytics for tool detail pages | +| `download_stats` | Tool download tracking by date | +| `reviews` | Tool reviews with 1-5 star ratings | +| `review_votes` | Helpful/unhelpful votes on reviews | +| `tool_issues` | Bug, security, compatibility issue reports | +| `collections` | Curated tool groups | +| `announcements` | Admin announcements | +| `featured_tools` | Featured tool placement | +| `featured_contributors` | Featured publisher placement | +| `reports` | Abuse reports for moderation | +| `audit_log` | Admin action audit trail | +| `pairing_requests` | App pairing flow | +| `web_sessions` | Session storage | +| `consents` | User consent for analytics/ads | +| `pageviews` | Analytics tracking | | `tools_fts` | Full-text search index (FTS5) | +| `tool_stats` | Cached tool statistics | +| `publisher_stats` | Cached publisher statistics | +| `registry_settings` | Runtime-configurable settings | ## API Endpoints diff --git a/olddocs/PROVIDERS.md b/olddocs/PROVIDERS.md index ecec89e..46cdc82 100644 --- a/olddocs/PROVIDERS.md +++ b/olddocs/PROVIDERS.md @@ -1,5 +1,8 @@ # Provider Setup Guide +> **Document Status (January 2026)**: This guide is current and accurate. Provider benchmarks +> may vary based on model updates. Use `cmdforge providers install` for the latest setup. + CmdForge works with any AI CLI tool that accepts input via stdin or arguments. This guide covers setup for the most popular providers. ## Provider Comparison diff --git a/olddocs/REGISTRY.md b/olddocs/REGISTRY.md index e3dc968..4db403f 100644 --- a/olddocs/REGISTRY.md +++ b/olddocs/REGISTRY.md @@ -1,5 +1,11 @@ # CmdForge Registry Design +> **Document Status (January 2026)**: This is the original design document used to build the registry. +> Phases 1-4 and 6-8 are complete. Phase 5 (Project Dependencies) is partially implemented. +> Many features beyond this spec have been added (reviews, issues, fork tracking, scrutiny, admin +> moderation). See the Implementation Phases section for current status. For the latest +> documentation, see the project-docs system. + ## Purpose Build a centralized registry for CmdForge to enable discovery, publishing, dependency management, and future curation at scale. @@ -1969,55 +1975,116 @@ def render_readme_safe(readme_raw: str) -> str: ## Implementation Phases -### Phase 1: Foundation -- Define `cmdforge.yaml` manifest format -- Implement tool resolution order (local → global → registry) -- Create CmdForge-Registry repo on Gitea (bootstrap) -- Add 3-5 example tools to seed the registry +> **Status as of January 2026**: Phases 1-4 and 6-8 are complete. Phase 5 is partially complete. -### Phase 2: Core Backend -- Set up Flask/FastAPI project structure -- Implement SQLite database schema -- Build core API endpoints (list, search, get, download) -- Implement webhook receiver for Gitea sync -- Set up HMAC verification +### Phase 1: Foundation ✅ Complete +- [x] Define `cmdforge.yaml` manifest format +- [x] Implement tool resolution order (local → global → registry) +- [x] Create CmdForge-Registry repo on Gitea (bootstrap) +- [x] Add 3-5 example tools to seed the registry (233+ Fabric patterns imported) -### Phase 3: CLI Commands -- `cmdforge registry search` -- `cmdforge registry install` -- `cmdforge registry info` -- `cmdforge registry browse` (TUI) -- Local index caching +### Phase 2: Core Backend ✅ Complete +- [x] Set up Flask/FastAPI project structure +- [x] Implement SQLite database schema (25+ tables including FTS5, reviews, issues, audit) +- [x] Build core API endpoints (list, search, get, download) +- [x] Implement webhook receiver for Gitea sync +- [x] Set up HMAC verification -### Phase 4: Publishing -- Publisher registration (web UI) -- Token management -- `cmdforge registry publish` command -- PR creation via Gitea API -- CI validation workflows +### Phase 3: CLI Commands ✅ Complete +- [x] `cmdforge registry search` (with faceted search, tags, categories, owner, date range) +- [x] `cmdforge registry install` +- [x] `cmdforge registry info` +- [x] `cmdforge registry browse` (opens PySide6 GUI) +- [x] Local index caching +- [x] `cmdforge registry tags` (list available tags) +- [x] `cmdforge registry uninstall` +- [x] `cmdforge registry my-tools` +- [x] `cmdforge registry status` +- [x] `cmdforge registry config` (admin settings) -### Phase 5: Project Dependencies -- `cmdforge install` (from manifest) -- `cmdforge add` command -- Runtime override application -- Dependency resolution +### Phase 4: Publishing ✅ Complete +- [x] Publisher registration (web UI) +- [x] Token management +- [x] `cmdforge registry publish` command (with dry-run, version bump, similarity warnings) +- [x] PR creation via Gitea API +- [x] CI validation workflows +- [x] App pairing/connection flow (polling-based, replaces manual token entry) +- [x] Connected apps management -### Phase 6: Smart Features -- SQLite FTS5 search index -- AI-powered auto-categorization -- Duplicate/similarity detection -- Security scanning +### Phase 5: Project Dependencies ⚠️ Partial +- [ ] `cmdforge install` (from manifest) - Not implemented +- [ ] `cmdforge add` command - Not implemented +- [ ] Runtime override application - Not implemented +- [ ] Dependency resolution - Not implemented +- [x] Individual tool install via `cmdforge registry install` -### Phase 7: Full Web UI -- Landing page -- Tool browsing/search pages -- Tool detail pages with README rendering -- Publisher dashboard -- Documentation/tutorials section +### Phase 6: Smart Features ✅ Complete +- [x] SQLite FTS5 search index (with prefix matching) +- [x] AI-powered auto-categorization +- [x] Duplicate/similarity detection +- [x] Security scanning (scrutiny system) +- [x] AI-powered secondary review (scrutiny-ai-review integration) +- [x] Auto-approve/review/reject decision logic +- [x] Confidence-based moderation -### Phase 8: Polish & Scale -- Rate limiting -- Abuse reporting -- Analytics integration -- Performance optimization -- Monitoring/alerting +### Phase 7: Full Web UI ✅ Complete +- [x] Landing page (with featured tools, tutorials, contributor spotlight) +- [x] Tool browsing/search pages (with faceted filters) +- [x] Tool detail pages with README rendering (plus reviews, issues, versions, forks) +- [x] Publisher dashboard (tools, tokens, settings) +- [x] Documentation/tutorials section +- [x] Admin dashboard (pending queue, publishers, reports, scrutiny, settings) +- [x] Forum (categories, topics, replies) +- [x] Collections pages +- [x] Publisher profiles with trust scores and badges + +### Phase 8: Polish & Scale ✅ Complete +- [x] Rate limiting +- [x] Abuse reporting +- [x] Analytics integration (pageviews, consent management) +- [x] Performance optimization +- [x] Monitoring/alerting (Sentry integration) +- [x] Audit logging +- [x] Role-based access control (user, moderator, admin) +- [x] Publisher banning/unbanning +- [x] Review voting and flagging +- [x] Issue tracking (bug, security, compatibility) + +## Features Implemented Beyond Original Design + +The following features were added during development but not in the original design: + +### Reviews & Ratings System +- 1-5 star ratings with text reviews +- Helpful/unhelpful voting on reviews +- Review flagging for moderation +- Rating aggregates and statistics +- Publisher reputation scores + +### Issue Tracking +- Bug, security, and compatibility issue types +- Severity levels (low, medium, high, critical) +- Issue status workflow (open, confirmed, fixed, wontfix, duplicate) +- Issue resolution with notes + +### Fork Tracking +- Track original tool when forking (`forked_from` field) +- Store `forked_version` for version tracking +- Display fork information in GUI and web + +### Scrutiny System (Automated Vetting) +- Automated security/compatibility analysis on publish +- AI-powered secondary review +- Confidence-based approval decisions +- Admin scrutiny dashboard with statistics + +### Trust & Badges +- Publisher trust scores +- Achievement badges +- Download milestones + +### PySide6 Desktop GUI +- Modern desktop GUI replacing urwid TUI +- Tool Builder with visual form editor +- AI-assisted code generation for code steps +- AI persona profiles system diff --git a/olddocs/WEB_UI.md b/olddocs/WEB_UI.md index 1879946..ed40caa 100644 --- a/olddocs/WEB_UI.md +++ b/olddocs/WEB_UI.md @@ -1,5 +1,10 @@ # CmdForge Web UI Design +> **Document Status (January 2026)**: This is the original design document used to build the web UI. +> The implementation is complete with additional features beyond this spec. See the Phase 7 +> Implementation Checklist below for current status. For the latest documentation, see the +> project-docs system. + ## Purpose Deliver a professional web front-end that explains CmdForge, helps users discover tools, and supports a collaborative ecosystem. The site should drive sustainable revenue without undermining trust or usability. @@ -1162,123 +1167,174 @@ Sitemap: https://cmdforge.dev/sitemap.xml ## Phase 7 Implementation Checklist -### 7.1 Foundation & Setup -- [ ] Set up Flask project structure with blueprints -- [ ] Configure Jinja2 templates with base layout -- [ ] Integrate Tailwind CSS (build pipeline) -- [ ] Set up static asset handling (CSS, JS, images) -- [ ] Configure development/production environments -- [ ] Set up database models for web-specific tables +> **Status as of January 2026**: Phase 7 is complete with most items implemented. See notes for partial items. -### 7.2 Core Templates & Components -- [ ] Create base template with header/footer -- [ ] Implement navigation component (desktop + mobile) -- [ ] Build reusable card components (tool, tutorial, contributor) -- [ ] Create form components (inputs, buttons, dropdowns) -- [ ] Implement callout/alert components -- [ ] Build code block component with copy functionality -- [ ] Create loading states (skeleton, spinner) -- [ ] Implement responsive grid system +### 7.1 Foundation & Setup ✅ Complete +- [x] Set up Flask project structure with blueprints +- [x] Configure Jinja2 templates with base layout +- [x] Integrate Tailwind CSS (build pipeline) +- [x] Set up static asset handling (CSS, JS, images) +- [x] Configure development/production environments +- [x] Set up database models for web-specific tables (25+ tables) -### 7.3 Landing Page -- [ ] Hero section with install snippet -- [ ] Three pillars section (Easy, Powerful, Community) -- [ ] Featured tools grid (API integration) -- [ ] Getting started tutorial cards -- [ ] Featured contributor spotlight -- [ ] Footer with links and optional ad zone +### 7.2 Core Templates & Components ✅ Complete +- [x] Create base template with header/footer +- [x] Implement navigation component (desktop + mobile) +- [x] Build reusable card components (tool, tutorial, contributor) +- [x] Create form components (inputs, buttons, dropdowns) +- [x] Implement callout/alert components +- [x] Build code block component with copy functionality +- [x] Create loading states (skeleton, spinner) +- [x] Implement responsive grid system -### 7.4 Registry Pages (Ad-Free) -- [ ] Tool browse page with search bar -- [ ] Category dropdown filter -- [ ] Sort options (popular, recent, name) -- [ ] Pagination component -- [ ] Tool card grid layout -- [ ] Tool detail page with README rendering -- [ ] Version selector in sidebar -- [ ] Install command with copy -- [ ] Report abuse button/modal -- [ ] Category pages +### 7.3 Landing Page ✅ Complete +- [x] Hero section with install snippet +- [x] Three pillars section (Easy, Powerful, Community) +- [x] Featured tools grid (API integration) +- [x] Getting started tutorial cards +- [x] Featured contributor spotlight +- [x] Footer with links and optional ad zone -### 7.5 Documentation & Tutorials -- [ ] Docs landing page with section links -- [ ] Tutorial listing page -- [ ] Content page template with TOC -- [ ] Scroll-spy for TOC highlighting -- [ ] Code syntax highlighting (Prism/Highlight.js) -- [ ] Video embed component (YouTube) -- [ ] Related articles section -- [ ] Sidebar ad placement (desktop only) +### 7.4 Registry Pages (Ad-Free) ✅ Complete +- [x] Tool browse page with search bar +- [x] Category dropdown filter +- [x] Sort options (popular, recent, name) +- [x] Pagination component +- [x] Tool card grid layout +- [x] Tool detail page with README rendering +- [x] Version selector in sidebar +- [x] Install command with copy +- [x] Report abuse button/modal +- [x] Category pages +- [x] **Added**: Reviews and ratings display +- [x] **Added**: Issue tracking display +- [x] **Added**: Fork information display +- [x] **Added**: Publisher profile pages with trust scores +- [x] **Added**: Collections pages -### 7.6 Authentication & Dashboard -- [ ] Registration page and flow -- [ ] Login page with error handling -- [ ] Password reset flow (if implementing) -- [ ] Session management (cookies, CSRF) -- [ ] Dashboard layout with sidebar -- [ ] My Tools tab with tool list -- [ ] API Tokens tab with create/revoke -- [ ] Settings tab with profile edit -- [ ] Logout functionality +### 7.5 Documentation & Tutorials ⚠️ Mostly Complete +- [x] Docs landing page with section links +- [x] Tutorial listing page +- [x] Content page template with TOC +- [ ] Scroll-spy for TOC highlighting (not implemented) +- [x] Code syntax highlighting (Prism/Highlight.js) +- [ ] Video embed component (YouTube) (not implemented) +- [ ] Related articles section (limited implementation) +- [x] Sidebar ad placement (desktop only) -### 7.7 Privacy & Consent -- [ ] Cookie consent banner -- [ ] Consent preferences modal -- [ ] Consent state storage -- [ ] Privacy policy page -- [ ] Terms of service page -- [ ] Honor consent in analytics/ad loading +### 7.6 Authentication & Dashboard ✅ Complete +- [x] Registration page and flow +- [x] Login page with error handling +- [ ] Password reset flow (placeholder only - not functional) +- [x] Session management (cookies, CSRF) +- [x] Dashboard layout with sidebar +- [x] My Tools tab with tool list (version consolidation, ratings, issues) +- [x] API Tokens tab with create/revoke (now "Connections" with app pairing) +- [x] Settings tab with profile edit +- [x] Logout functionality +- [x] **Added**: Admin dashboard (pending queue, publishers, reports, scrutiny, settings) +- [x] **Added**: Role-based access (user, moderator, admin) -### 7.8 Ads & Monetization -- [ ] AdSense integration (account setup) -- [ ] Ad container components -- [ ] Lazy loading for ad scripts -- [ ] Ad placement rules enforcement -- [ ] Sponsored content styling (if applicable) -- [ ] Donate page with donation options +### 7.7 Privacy & Consent ⚠️ Mostly Complete +- [x] Cookie consent banner (API exists) +- [x] Consent preferences modal (API exists) +- [x] Consent state storage +- [x] Privacy policy page +- [x] Terms of service page +- [x] Honor consent in analytics/ad loading -### 7.9 SEO & Performance -- [ ] Meta tags for all page types -- [ ] Open Graph tags -- [ ] Schema.org structured data -- [ ] Sitemap generation -- [ ] robots.txt configuration -- [ ] Canonical URL implementation -- [ ] Image optimization pipeline -- [ ] CSS/JS minification -- [ ] Critical CSS inlining -- [ ] Lazy loading for images +### 7.8 Ads & Monetization ⚠️ Partial +- [ ] AdSense integration (account setup) (placeholders only) +- [x] Ad container components +- [x] Lazy loading for ad scripts +- [x] Ad placement rules enforcement +- [ ] Sponsored content styling (if applicable) (not implemented) +- [x] Donate page with donation options -### 7.10 Testing & QA -- [ ] Responsive design testing (all breakpoints) -- [ ] Accessibility testing (WCAG 2.1 AA) -- [ ] Cross-browser testing (Chrome, Firefox, Safari, Edge) -- [ ] Performance testing (Lighthouse scores) -- [ ] Form validation testing -- [ ] Error state testing -- [ ] Mobile usability testing +### 7.9 SEO & Performance ✅ Mostly Complete +- [x] Meta tags for all page types +- [x] Open Graph tags +- [ ] Schema.org structured data (not verified) +- [x] Sitemap generation +- [x] robots.txt configuration +- [x] Canonical URL implementation (partial) +- [ ] Image optimization pipeline (not implemented) +- [x] CSS/JS minification (via Tailwind build) +- [ ] Critical CSS inlining (not implemented) +- [x] Lazy loading for images -### 7.11 Launch Preparation -- [ ] Content creation (initial docs, tutorials) -- [ ] Seed featured tools selection -- [ ] Initial contributor spotlight -- [ ] Analytics setup (privacy-respecting) -- [ ] Error monitoring (Sentry or similar) -- [ ] SSL certificate configuration -- [ ] CDN setup (optional) -- [ ] Backup and recovery procedures +### 7.10 Testing & QA ⚠️ Ongoing +- [x] Responsive design testing (all breakpoints) +- [ ] Accessibility testing (WCAG 2.1 AA) (not formally verified) +- [ ] Cross-browser testing (Chrome, Firefox, Safari, Edge) (not formally verified) +- [ ] Performance testing (Lighthouse scores) (not formally verified) +- [x] Form validation testing +- [x] Error state testing +- [x] Mobile usability testing + +### 7.11 Launch Preparation ✅ Complete +- [x] Content creation (initial docs, tutorials) +- [x] Seed featured tools selection (233+ Fabric patterns) +- [x] Initial contributor spotlight +- [x] Analytics setup (privacy-respecting) +- [x] Error monitoring (Sentry or similar) +- [x] SSL certificate configuration (via Cloudflare) +- [ ] CDN setup (optional) (not implemented) +- [x] Backup and recovery procedures + +## Features Implemented Beyond Original Checklist + +### Admin Moderation System +- Pending tools queue with approve/reject/request-changes workflow +- Publisher management (ban/unban, role changes) +- Report resolution workflow +- Audit logging for all admin actions +- Scrutiny dashboard with auto-vetting statistics +- Registry settings management + +### Forum/Community +- Categories (General, Tutorials, Showcase, Help) +- Topics within categories +- Replies with threading +- View counts +- Honeypot spam protection + +### Reviews & Ratings +- 5-star rating system +- Review text with title +- Helpful/unhelpful voting +- Review flagging +- Average rating aggregates + +### Issue Tracking +- Bug, security, compatibility issue types +- Severity levels +- Status workflow (open, confirmed, fixed, wontfix, duplicate) +- Resolution notes ## API Endpoints for Web UI -The web UI consumes these existing API endpoints: +> **Note**: This section lists the originally planned endpoints. The actual implementation includes +> 100+ endpoints. See `src/cmdforge/registry/app.py` for the complete API. + +The web UI consumes these API endpoints: **Public (read-only):** - `GET /api/v1/tools` - List tools with pagination/filters -- `GET /api/v1/tools/search?q=...` - Search tools +- `GET /api/v1/tools/search?q=...` - Search tools with facets - `GET /api/v1/tools/{owner}/{name}` - Tool details - `GET /api/v1/tools/{owner}/{name}/versions` - Version list +- `GET /api/v1/tools/{owner}/{name}/forks` - Fork list +- `GET /api/v1/tools/{owner}/{name}/reviews` - Review list +- `GET /api/v1/tools/{owner}/{name}/issues` - Issue list +- `GET /api/v1/tools/{owner}/{name}/rating` - Rating summary - `GET /api/v1/categories` - Category list +- `GET /api/v1/tags` - Tag list with counts +- `GET /api/v1/collections` - Collection list +- `GET /api/v1/collections/{name}` - Collection details - `GET /api/v1/stats/popular` - Popular tools +- `GET /api/v1/publishers/{slug}/stats` - Publisher stats +- `GET /api/v1/index.json` - Full index for offline use **Authenticated (dashboard):** - `POST /api/v1/login` - User login (returns session) @@ -1288,13 +1344,43 @@ The web UI consumes these existing API endpoints: - `POST /api/v1/tokens` - Create new token - `DELETE /api/v1/tokens/{id}` - Revoke token - `PUT /api/v1/me/settings` - Update profile +- `POST /api/v1/me/password` - Change password -**New endpoints for web UI:** +**App Pairing (replaces manual token entry):** +- `POST /api/v1/pairing/initiate` - Start pairing flow +- `GET /api/v1/pairing/check/{username}` - Check pairing status +- `GET /api/v1/connected-apps` - List connected apps +- `DELETE /api/v1/connected-apps/{app_id}` - Remove app + +**Reviews & Issues:** +- `POST /api/v1/tools/{owner}/{name}/reviews` - Submit review +- `PUT /api/v1/reviews/{id}` - Edit review +- `DELETE /api/v1/reviews/{id}` - Delete review +- `POST /api/v1/reviews/{id}/vote` - Vote on review +- `POST /api/v1/reviews/{id}/flag` - Flag review +- `POST /api/v1/tools/{owner}/{name}/issues` - Report issue +- `PUT /api/v1/issues/{id}` - Update issue +- `POST /api/v1/issues/{id}/resolve` - Resolve issue + +**Content & Featured:** - `GET /api/v1/featured/tools` - Curated featured tools - `GET /api/v1/featured/contributors` - Featured contributor - `GET /api/v1/content/announcements` - Site announcements - `POST /api/v1/reports` - Abuse report submission +**Admin Endpoints (moderator/admin role required):** +- `GET /api/v1/admin/tools/pending` - Pending moderation queue +- `POST /api/v1/admin/tools/{id}/approve` - Approve tool +- `POST /api/v1/admin/tools/{id}/reject` - Reject tool +- `POST /api/v1/admin/tools/{id}/request-changes` - Request changes +- `GET /api/v1/admin/publishers` - Publisher management +- `POST /api/v1/admin/publishers/{id}/ban` - Ban publisher +- `GET /api/v1/admin/reports` - Report queue +- `GET /api/v1/admin/scrutiny` - Scrutiny dashboard +- `GET /api/v1/admin/audit-log` - Audit log +- `GET /api/v1/admin/settings` - Registry settings +- `PUT /api/v1/admin/settings/{key}` - Update setting + ## Diagram References - Landing page mockup: `discussions/diagrams/cmdforge-registry_rob_6.svg`