Update olddocs to reflect current implementation state

- REGISTRY.md: Mark phases 1-4, 6-8 complete; phase 5 partial
- WEB_UI.md: Update Phase 7 checklist with completion status
- DESIGN.md: Note TUI replaced by PySide6 GUI, update structure
- PROJECT.md: Update source structure and database schema
- PROVIDERS.md, META_TOOLS.md, COLLECTIONS.md: Add status notes
- Add "Features Implemented Beyond Original Design" sections

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
rob 2026-01-17 03:35:42 -04:00
parent a46add05b7
commit 0d91eb7fa0
7 changed files with 396 additions and 182 deletions

View File

@ -1,5 +1,14 @@
# CmdForge Collections # 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. Collections are curated groups of tools that can be installed together with a single command.
## Use Cases ## Use Cases

View File

@ -2,6 +2,11 @@
> A lightweight personal tool builder for AI-powered CLI commands > 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 ## 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. 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 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. 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 ### Directory Structure
> **Note**: The structure below is simplified. See `src/cmdforge/` for the full implementation.
``` ```
cmdforge/ src/cmdforge/
__init__.py __init__.py
cli.py # Entry point, argument parsing cli/ # CLI commands (list, create, edit, run, registry, etc.)
ui.py # UI dispatcher (chooses urwid/snack/dialog) gui/ # PySide6 desktop GUI
ui_urwid.py # Urwid-based BIOS-style UI main_window.py
ui_snack.py # Snack/newt fallback UI 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 tool.py # Tool loading/saving/wrapper scripts
runner.py # Execute tools runner.py # Execute tools
providers.py # Provider abstraction providers.py # Provider abstraction
profiles.py # AI persona profiles
``` ```
### Provider System ### Provider System
@ -380,29 +400,34 @@ output: "{result}"
## What This Design Doesn't Include ## 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 - Container isolation / sandboxing
- Certification testing
- Distribution packaging
- PII redaction - PII redaction
- Audit logging
- Provider capability negotiation - 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. **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 ## Dependencies
Required: Required:
- Python 3.10+ - Python 3.10+
- PyYAML - PyYAML
- urwid (for TUI) - PySide6 (for GUI)
Optional fallbacks: Optional (for web/registry):
- python3-newt/snack (simpler TUI) - Flask
- dialog/whiptail (basic TUI) - SQLite with FTS5
Legacy TUI (no longer primary):
- urwid
- python3-newt/snack
## Example Workflow ## Example Workflow

View File

@ -1,5 +1,9 @@
# Meta-Tools: Tools That Call Other Tools # 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. 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` ## Step Type: `tool`

View File

@ -1,5 +1,9 @@
# CmdForge Project Overview # 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. This document provides a comprehensive overview of the CmdForge project structure, components, and how everything fits together.
## What is CmdForge? ## What is CmdForge?
@ -32,52 +36,68 @@ See `docs/diagrams/` for visual representations:
``` ```
src/cmdforge/ 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 ├── tool.py # Tool dataclasses, YAML loading
├── runner.py # Step execution engine ├── runner.py # Step execution engine
├── providers.py # AI provider abstraction ├── providers.py # AI provider abstraction
├── profiles.py # AI persona profiles
├── config.py # Global configuration ├── 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 ├── registry/ # Registry API Server
│ ├── app.py # Flask API application │ ├── app.py # Flask API with 100+ endpoints
│ ├── db.py # Database operations, FTS5 search │ ├── db.py # Database operations, FTS5 search (25+ tables)
│ ├── rate_limit.py # API rate limiting │ ├── rate_limit.py # API rate limiting
│ ├── sync.py # Git sync for tool submissions │ ├── scrutiny.py # Automated code analysis
│ ├── categorize.py # Auto-categorization │ ├── similarity.py # Duplicate detection
│ └── similarity.py # Similar tool recommendations │ └── sync.py # Git sync for tool submissions
├── web/ # Web UI Application ├── web/ # Web UI Application
│ ├── app.py # Flask web app, Sentry integration │ ├── app.py # Flask web app
│ ├── routes.py # Page routes and handlers │ ├── routes.py # Page routes and handlers
│ ├── auth.py # Password hashing, login/register │ ├── auth.py # Password hashing, login/register
│ ├── sessions.py # Session management │ ├── sessions.py # Session management
│ ├── docs_content.py # Documentation text content │ ├── forum/ # Forum blueprint
│ ├── seo.py # Sitemap, robots.txt
│ ├── filters.py # Jinja template filters
│ ├── templates/ # Jinja HTML templates │ ├── templates/ # Jinja HTML templates
│ └── static/ # CSS, JS, images │ └── static/ # CSS (Tailwind), JS, images
├── registry_client.py # CLI client for registry API └── 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
``` ```
## Database Schema ## Database Schema
SQLite database at `data/cmdforge.db`: SQLite database at `~/.cmdforge/registry.db` (or via `CMDFORGE_REGISTRY_DB` env var):
| Table | Purpose | | Table | Purpose |
|-------|---------| |-------|---------|
| `publishers` | User accounts (username, email, password_hash) | | `publishers` | User accounts with roles, banning, verification |
| `tools` | Published tools (name, owner, description, config) | | `tools` | Published tools with moderation status, fork tracking |
| `api_tokens` | Authentication tokens for API access | | `api_tokens` | Authentication tokens for API access |
| `download_stats` | Tool download tracking | | `download_stats` | Tool download tracking by date |
| `pageviews` | Analytics for tool detail pages | | `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) | | `tools_fts` | Full-text search index (FTS5) |
| `tool_stats` | Cached tool statistics |
| `publisher_stats` | Cached publisher statistics |
| `registry_settings` | Runtime-configurable settings |
## API Endpoints ## API Endpoints

View File

@ -1,5 +1,8 @@
# Provider Setup Guide # 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. 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 ## Provider Comparison

View File

@ -1,5 +1,11 @@
# CmdForge Registry Design # 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 ## Purpose
Build a centralized registry for CmdForge to enable discovery, publishing, dependency management, and future curation at scale. 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 ## Implementation Phases
### Phase 1: Foundation > **Status as of January 2026**: Phases 1-4 and 6-8 are complete. Phase 5 is partially complete.
- 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
### Phase 2: Core Backend ### Phase 1: Foundation ✅ Complete
- Set up Flask/FastAPI project structure - [x] Define `cmdforge.yaml` manifest format
- Implement SQLite database schema - [x] Implement tool resolution order (local → global → registry)
- Build core API endpoints (list, search, get, download) - [x] Create CmdForge-Registry repo on Gitea (bootstrap)
- Implement webhook receiver for Gitea sync - [x] Add 3-5 example tools to seed the registry (233+ Fabric patterns imported)
- Set up HMAC verification
### Phase 3: CLI Commands ### Phase 2: Core Backend ✅ Complete
- `cmdforge registry search` - [x] Set up Flask/FastAPI project structure
- `cmdforge registry install` - [x] Implement SQLite database schema (25+ tables including FTS5, reviews, issues, audit)
- `cmdforge registry info` - [x] Build core API endpoints (list, search, get, download)
- `cmdforge registry browse` (TUI) - [x] Implement webhook receiver for Gitea sync
- Local index caching - [x] Set up HMAC verification
### Phase 4: Publishing ### Phase 3: CLI Commands ✅ Complete
- Publisher registration (web UI) - [x] `cmdforge registry search` (with faceted search, tags, categories, owner, date range)
- Token management - [x] `cmdforge registry install`
- `cmdforge registry publish` command - [x] `cmdforge registry info`
- PR creation via Gitea API - [x] `cmdforge registry browse` (opens PySide6 GUI)
- CI validation workflows - [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 ### Phase 4: Publishing ✅ Complete
- `cmdforge install` (from manifest) - [x] Publisher registration (web UI)
- `cmdforge add` command - [x] Token management
- Runtime override application - [x] `cmdforge registry publish` command (with dry-run, version bump, similarity warnings)
- Dependency resolution - [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 ### Phase 5: Project Dependencies ⚠️ Partial
- SQLite FTS5 search index - [ ] `cmdforge install` (from manifest) - Not implemented
- AI-powered auto-categorization - [ ] `cmdforge add` command - Not implemented
- Duplicate/similarity detection - [ ] Runtime override application - Not implemented
- Security scanning - [ ] Dependency resolution - Not implemented
- [x] Individual tool install via `cmdforge registry install`
### Phase 7: Full Web UI ### Phase 6: Smart Features ✅ Complete
- Landing page - [x] SQLite FTS5 search index (with prefix matching)
- Tool browsing/search pages - [x] AI-powered auto-categorization
- Tool detail pages with README rendering - [x] Duplicate/similarity detection
- Publisher dashboard - [x] Security scanning (scrutiny system)
- Documentation/tutorials section - [x] AI-powered secondary review (scrutiny-ai-review integration)
- [x] Auto-approve/review/reject decision logic
- [x] Confidence-based moderation
### Phase 8: Polish & Scale ### Phase 7: Full Web UI ✅ Complete
- Rate limiting - [x] Landing page (with featured tools, tutorials, contributor spotlight)
- Abuse reporting - [x] Tool browsing/search pages (with faceted filters)
- Analytics integration - [x] Tool detail pages with README rendering (plus reviews, issues, versions, forks)
- Performance optimization - [x] Publisher dashboard (tools, tokens, settings)
- Monitoring/alerting - [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

View File

@ -1,5 +1,10 @@
# CmdForge Web UI Design # 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 ## 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. 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 ## Phase 7 Implementation Checklist
### 7.1 Foundation & Setup > **Status as of January 2026**: Phase 7 is complete with most items implemented. See notes for partial items.
- [ ] 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
### 7.2 Core Templates & Components ### 7.1 Foundation & Setup ✅ Complete
- [ ] Create base template with header/footer - [x] Set up Flask project structure with blueprints
- [ ] Implement navigation component (desktop + mobile) - [x] Configure Jinja2 templates with base layout
- [ ] Build reusable card components (tool, tutorial, contributor) - [x] Integrate Tailwind CSS (build pipeline)
- [ ] Create form components (inputs, buttons, dropdowns) - [x] Set up static asset handling (CSS, JS, images)
- [ ] Implement callout/alert components - [x] Configure development/production environments
- [ ] Build code block component with copy functionality - [x] Set up database models for web-specific tables (25+ tables)
- [ ] Create loading states (skeleton, spinner)
- [ ] Implement responsive grid system
### 7.3 Landing Page ### 7.2 Core Templates & Components ✅ Complete
- [ ] Hero section with install snippet - [x] Create base template with header/footer
- [ ] Three pillars section (Easy, Powerful, Community) - [x] Implement navigation component (desktop + mobile)
- [ ] Featured tools grid (API integration) - [x] Build reusable card components (tool, tutorial, contributor)
- [ ] Getting started tutorial cards - [x] Create form components (inputs, buttons, dropdowns)
- [ ] Featured contributor spotlight - [x] Implement callout/alert components
- [ ] Footer with links and optional ad zone - [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) ### 7.3 Landing Page ✅ Complete
- [ ] Tool browse page with search bar - [x] Hero section with install snippet
- [ ] Category dropdown filter - [x] Three pillars section (Easy, Powerful, Community)
- [ ] Sort options (popular, recent, name) - [x] Featured tools grid (API integration)
- [ ] Pagination component - [x] Getting started tutorial cards
- [ ] Tool card grid layout - [x] Featured contributor spotlight
- [ ] Tool detail page with README rendering - [x] Footer with links and optional ad zone
- [ ] Version selector in sidebar
- [ ] Install command with copy
- [ ] Report abuse button/modal
- [ ] Category pages
### 7.5 Documentation & Tutorials ### 7.4 Registry Pages (Ad-Free) ✅ Complete
- [ ] Docs landing page with section links - [x] Tool browse page with search bar
- [ ] Tutorial listing page - [x] Category dropdown filter
- [ ] Content page template with TOC - [x] Sort options (popular, recent, name)
- [ ] Scroll-spy for TOC highlighting - [x] Pagination component
- [ ] Code syntax highlighting (Prism/Highlight.js) - [x] Tool card grid layout
- [ ] Video embed component (YouTube) - [x] Tool detail page with README rendering
- [ ] Related articles section - [x] Version selector in sidebar
- [ ] Sidebar ad placement (desktop only) - [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 ### 7.5 Documentation & Tutorials ⚠️ Mostly Complete
- [ ] Registration page and flow - [x] Docs landing page with section links
- [ ] Login page with error handling - [x] Tutorial listing page
- [ ] Password reset flow (if implementing) - [x] Content page template with TOC
- [ ] Session management (cookies, CSRF) - [ ] Scroll-spy for TOC highlighting (not implemented)
- [ ] Dashboard layout with sidebar - [x] Code syntax highlighting (Prism/Highlight.js)
- [ ] My Tools tab with tool list - [ ] Video embed component (YouTube) (not implemented)
- [ ] API Tokens tab with create/revoke - [ ] Related articles section (limited implementation)
- [ ] Settings tab with profile edit - [x] Sidebar ad placement (desktop only)
- [ ] Logout functionality
### 7.7 Privacy & Consent ### 7.6 Authentication & Dashboard ✅ Complete
- [ ] Cookie consent banner - [x] Registration page and flow
- [ ] Consent preferences modal - [x] Login page with error handling
- [ ] Consent state storage - [ ] Password reset flow (placeholder only - not functional)
- [ ] Privacy policy page - [x] Session management (cookies, CSRF)
- [ ] Terms of service page - [x] Dashboard layout with sidebar
- [ ] Honor consent in analytics/ad loading - [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 ### 7.7 Privacy & Consent ⚠️ Mostly Complete
- [ ] AdSense integration (account setup) - [x] Cookie consent banner (API exists)
- [ ] Ad container components - [x] Consent preferences modal (API exists)
- [ ] Lazy loading for ad scripts - [x] Consent state storage
- [ ] Ad placement rules enforcement - [x] Privacy policy page
- [ ] Sponsored content styling (if applicable) - [x] Terms of service page
- [ ] Donate page with donation options - [x] Honor consent in analytics/ad loading
### 7.9 SEO & Performance ### 7.8 Ads & Monetization ⚠️ Partial
- [ ] Meta tags for all page types - [ ] AdSense integration (account setup) (placeholders only)
- [ ] Open Graph tags - [x] Ad container components
- [ ] Schema.org structured data - [x] Lazy loading for ad scripts
- [ ] Sitemap generation - [x] Ad placement rules enforcement
- [ ] robots.txt configuration - [ ] Sponsored content styling (if applicable) (not implemented)
- [ ] Canonical URL implementation - [x] Donate page with donation options
- [ ] Image optimization pipeline
- [ ] CSS/JS minification
- [ ] Critical CSS inlining
- [ ] Lazy loading for images
### 7.10 Testing & QA ### 7.9 SEO & Performance ✅ Mostly Complete
- [ ] Responsive design testing (all breakpoints) - [x] Meta tags for all page types
- [ ] Accessibility testing (WCAG 2.1 AA) - [x] Open Graph tags
- [ ] Cross-browser testing (Chrome, Firefox, Safari, Edge) - [ ] Schema.org structured data (not verified)
- [ ] Performance testing (Lighthouse scores) - [x] Sitemap generation
- [ ] Form validation testing - [x] robots.txt configuration
- [ ] Error state testing - [x] Canonical URL implementation (partial)
- [ ] Mobile usability testing - [ ] 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 ### 7.10 Testing & QA ⚠️ Ongoing
- [ ] Content creation (initial docs, tutorials) - [x] Responsive design testing (all breakpoints)
- [ ] Seed featured tools selection - [ ] Accessibility testing (WCAG 2.1 AA) (not formally verified)
- [ ] Initial contributor spotlight - [ ] Cross-browser testing (Chrome, Firefox, Safari, Edge) (not formally verified)
- [ ] Analytics setup (privacy-respecting) - [ ] Performance testing (Lighthouse scores) (not formally verified)
- [ ] Error monitoring (Sentry or similar) - [x] Form validation testing
- [ ] SSL certificate configuration - [x] Error state testing
- [ ] CDN setup (optional) - [x] Mobile usability testing
- [ ] Backup and recovery procedures
### 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 ## 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):** **Public (read-only):**
- `GET /api/v1/tools` - List tools with pagination/filters - `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}` - Tool details
- `GET /api/v1/tools/{owner}/{name}/versions` - Version list - `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/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/stats/popular` - Popular tools
- `GET /api/v1/publishers/{slug}/stats` - Publisher stats
- `GET /api/v1/index.json` - Full index for offline use
**Authenticated (dashboard):** **Authenticated (dashboard):**
- `POST /api/v1/login` - User login (returns session) - `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 - `POST /api/v1/tokens` - Create new token
- `DELETE /api/v1/tokens/{id}` - Revoke token - `DELETE /api/v1/tokens/{id}` - Revoke token
- `PUT /api/v1/me/settings` - Update profile - `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/tools` - Curated featured tools
- `GET /api/v1/featured/contributors` - Featured contributor - `GET /api/v1/featured/contributors` - Featured contributor
- `GET /api/v1/content/announcements` - Site announcements - `GET /api/v1/content/announcements` - Site announcements
- `POST /api/v1/reports` - Abuse report submission - `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 ## Diagram References
- Landing page mockup: `discussions/diagrams/cmdforge-registry_rob_6.svg` - Landing page mockup: `discussions/diagrams/cmdforge-registry_rob_6.svg`