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
> **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

View File

@ -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

View File

@ -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`

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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`