FossilRepo

fossilrepo / docs / features.md
Source Blame History 205 lines
45192ef… ragelink 1 # Features
45192ef… ragelink 2
45192ef… ragelink 3 ## Code Browser
45192ef… ragelink 4 - Directory navigation with breadcrumbs and file size display
45192ef… ragelink 5 - Syntax-highlighted source view with line numbers and permalinks
45192ef… ragelink 6 - Copy-link popover on line number click
45192ef… ragelink 7 - Blame with age-based coloring (newest = red, oldest = gray)
45192ef… ragelink 8 - File history showing all checkins that touched a file
45192ef… ragelink 9 - Raw file download
45192ef… ragelink 10 - Rendered preview for Markdown, HTML, and other markup
45192ef… ragelink 11 - README auto-rendering at directory level
45192ef… ragelink 12
45192ef… ragelink 13 ## Timeline
45192ef… ragelink 14 - DAG graph with fork/merge connectors and color-coded branches (8-color palette)
45192ef… ragelink 15 - Merge commit diamonds, leaf indicators (open circles)
45192ef… ragelink 16 - Date headers grouping commits by day
45192ef… ragelink 17 - Keyboard navigation (j/k to move, Enter to open)
45192ef… ragelink 18 - HTMX infinite scroll for seamless loading
45192ef… ragelink 19 - Event type filtering (checkins, wiki, tickets)
45192ef… ragelink 20 - RSS feed
45192ef… ragelink 21
45192ef… ragelink 22 ## Diffs
45192ef… ragelink 23 - Unified and side-by-side view (toggle with localStorage preference)
45192ef… ragelink 24 - Syntax highlighting via highlight.js (auto-detected from file extension)
45192ef… ragelink 25 - Color-coded additions (green) and deletions (red)
45192ef… ragelink 26 - Line-level permalinks
45192ef… ragelink 27 - Compare any two checkins
45192ef… ragelink 28 - Fossil delta decoding for accurate diff computation
45192ef… ragelink 29
45192ef… ragelink 30 ## Tickets
45192ef… ragelink 31 - Full CRUD: create, edit, close/reopen, add comments
45192ef… ragelink 32 - Filter by status, type, priority, severity
45192ef… ragelink 33 - Pagination with configurable per-page (25/50/100)
45192ef… ragelink 34 - Live search via HTMX
45192ef… ragelink 35 - CSV export
45192ef… ragelink 36 - Custom field definitions (text, textarea, select, checkbox, date, URL)
45192ef… ragelink 37 - Custom SQL ticket reports with injection prevention
45192ef… ragelink 38 - Per-page count selector
45192ef… ragelink 39
45192ef… ragelink 40 ## Wiki
45192ef… ragelink 41 - Markdown + Fossil wiki markup + raw HTML rendering
45192ef… ragelink 42 - Pikchr diagram rendering (via fossil CLI)
45192ef… ragelink 43 - Create and edit pages
45192ef… ragelink 44 - Right-sidebar table of contents
45192ef… ragelink 45 - Internal link rewriting (Fossil URLs mapped to app URLs)
45192ef… ragelink 46 - Footnotes, tables, fenced code blocks
45192ef… ragelink 47
45192ef… ragelink 48 ## Forum
45192ef… ragelink 49 - Threaded discussions (Fossil-native + Django-backed posts)
45192ef… ragelink 50 - Create new threads with markdown body
45192ef… ragelink 51 - Post replies with threading
45192ef… ragelink 52 - Merged view showing both Fossil and Django posts
45192ef… ragelink 53
45192ef… ragelink 54 ## Releases
45192ef… ragelink 55 - Versioned releases with tag names and markdown changelogs
45192ef… ragelink 56 - Source code archives: tar.gz and zip (via fossil tarball/zip)
45192ef… ragelink 57 - File attachments with download counts
45192ef… ragelink 58 - Draft and prerelease support
45192ef… ragelink 59 - CRUD for authorized users
45192ef… ragelink 60
45192ef… ragelink 61 ## Technotes
45192ef… ragelink 62 - Create and edit developer journal entries
45192ef… ragelink 63 - Markdown body with preview
45192ef… ragelink 64 - Timestamped, shown in timeline
45192ef… ragelink 65
45192ef… ragelink 66 ## Unversioned Files
45192ef… ragelink 67 - Browse Fossil's unversioned content (equivalent to Git LFS)
45192ef… ragelink 68 - File list with size and date
45192ef… ragelink 69 - Download individual files
45192ef… ragelink 70 - Admin upload via fossil uv CLI
45192ef… ragelink 71
45192ef… ragelink 72 ## Branches, Tags, Technotes
45192ef… ragelink 73 - List all branches with open/closed status
45192ef… ragelink 74 - List all tags
45192ef… ragelink 75 - Searchable and paginated
45192ef… ragelink 76
45192ef… ragelink 77 ## Search
45192ef… ragelink 78 - Full-text search across checkins, tickets, and wiki pages
45192ef… ragelink 79 - Global search shortcut (/ key)
45192ef… ragelink 80 - Per-project scoped search
45192ef… ragelink 81
45192ef… ragelink 82 ## Sync
45192ef… ragelink 83 - Pull from upstream Fossil remotes
45192ef… ragelink 84 - Push to downstream Fossil remotes
45192ef… ragelink 85 - Bidirectional sync
45192ef… ragelink 86 - Git mirror to GitHub/GitLab via OAuth or SSH key auth
45192ef… ragelink 87 - Multiple mirrors per repo, each with own schedule and direction
45192ef… ragelink 88 - Configurable sync modes: on-change, scheduled (cron), both, disabled
45192ef… ragelink 89 - Clone/push/pull over HTTP (fossil http CGI proxy)
45192ef… ragelink 90 - Clone/push/pull over SSH (port 2222, forced command)
45192ef… ragelink 91
45192ef… ragelink 92 ## Webhooks
45192ef… ragelink 93 - Outbound HTTP webhooks on checkin, ticket, wiki, release events
45192ef… ragelink 94 - HMAC-SHA256 signed payloads
45192ef… ragelink 95 - Exponential backoff retry (3 attempts)
45192ef… ragelink 96 - Delivery log with response status and timing
45192ef… ragelink 97 - Per-project webhook configuration
45192ef… ragelink 98
45192ef… ragelink 99 ## CI Status Checks
45192ef… ragelink 100 - External API for CI systems to POST build status per checkin
45192ef… ragelink 101 - Bearer token authentication
45192ef… ragelink 102 - SVG badge endpoint for embedding in READMEs
45192ef… ragelink 103 - Status display on checkin detail page (green/red/yellow icons)
45192ef… ragelink 104
45192ef… ragelink 105 ## Releases
45192ef… ragelink 106 - Create/edit/delete versioned releases
45192ef… ragelink 107 - Link to Fossil checkin
45192ef… ragelink 108 - Markdown changelog body
45192ef… ragelink 109 - Source code download (tar.gz, zip)
45192ef… ragelink 110 - File attachments with download tracking
45192ef… ragelink 111 - Draft and prerelease flags
45192ef… ragelink 112
45192ef… ragelink 113 ## Organization Management
45192ef… ragelink 114 - Single-org model with settings, website, description
45192ef… ragelink 115 - Member management: create, edit, deactivate, change password
45192ef… ragelink 116 - Team management: create, assign members
45192ef… ragelink 117 - Project groups: organize related repos under a group header
45192ef… ragelink 118 - Project-level team roles: read, write, admin
45192ef… ragelink 119
45192ef… ragelink 120 ## Roles and Permissions
45192ef… ragelink 121 - Predefined roles: Admin, Manager, Developer, Viewer
45192ef… ragelink 122 - Custom role creation with permission picker (grouped by app)
45192ef… ragelink 123 - Role assignment on user create/edit
45192ef… ragelink 124 - Permissions synced to Django Groups automatically
45192ef… ragelink 125 - Two-layer model: org-level roles + project-level RBAC
45192ef… ragelink 126
45192ef… ragelink 127 ## User Profiles
45192ef… ragelink 128 - Personal profile page: name, email, @handle, bio, location, website
45192ef… ragelink 129 - SSH key management with encrypted storage
45192ef… ragelink 130 - Personal access tokens (frp_ prefix, hash-only storage)
45192ef… ragelink 131 - Notification preferences (immediate/daily/weekly/off + event toggles)
45192ef… ragelink 132 - Change password
45192ef… ragelink 133
45192ef… ragelink 134 ## Project Features
45192ef… ragelink 135 - Project starring with counts
45192ef… ragelink 136 - Explore/discover page for public projects (sort by stars/recent/name)
45192ef… ragelink 137 - Project groups for organizing related repos
45192ef… ragelink 138 - Public/internal/private visibility
45192ef… ragelink 139 - Anonymous access for public repos (all read views)
45192ef… ragelink 140
45192ef… ragelink 141 ## API Tokens and Deploy Keys
45192ef… ragelink 142 - Project-scoped API tokens with SHA-256 hashed storage
45192ef… ragelink 143 - Token shown once on creation, never stored in plaintext
45192ef… ragelink 144 - Configurable permissions and expiry
45192ef… ragelink 145 - Last-used tracking
45192ef… ragelink 146
45192ef… ragelink 147 ## Branch Protection
45192ef… ragelink 148 - Per-branch protection rules with glob pattern matching
45192ef… ragelink 149 - Restrict push to admins only
45192ef… ragelink 150 - Required CI status check contexts
45192ef… ragelink 151 - Enforced on HTTP sync, CLI push/sync, and SSH push
45192ef… ragelink 152
45192ef… ragelink 153 ## Artifact Shunning
45192ef… ragelink 154 - Admin UI for permanently removing artifacts
45192ef… ragelink 155 - Type-to-confirm safety (must enter first 8 chars of UUID)
45192ef… ragelink 156 - Calls fossil shun CLI
45192ef… ragelink 157 - Irreversible with clear warning
45192ef… ragelink 158
45192ef… ragelink 159 ## SQLite Explorer
45192ef… ragelink 160 - Visual schema map with category-colored table cards
45192ef… ragelink 161 - SVG relationship graph showing Fossil's internal table connections
45192ef… ragelink 162 - HTMX-powered table browser with column definitions and paginated data
45192ef… ragelink 163 - Custom SQL query runner (SELECT only, validated against injection)
45192ef… ragelink 164 - Admin-only access
45192ef… ragelink 165
45192ef… ragelink 166 ## Audit Log
45192ef… ragelink 167 - Unified view of all model changes via django-simple-history
45192ef… ragelink 168 - Filter by model type (Project, Organization, Team, Repository)
45192ef… ragelink 169 - Shows user, action (Created/Changed/Deleted), timestamp
45192ef… ragelink 170 - Superuser/org-admin access
45192ef… ragelink 171
45192ef… ragelink 172 ## Email Notifications
45192ef… ragelink 173 - HTML email templates (dark themed, inline CSS for email clients)
45192ef… ragelink 174 - Immediate delivery per event
45192ef… ragelink 175 - Daily/weekly digest mode
45192ef… ragelink 176 - Per-user event type toggles (checkins, tickets, wiki, releases, forum)
45192ef… ragelink 177 - Unsubscribe links
45192ef… ragelink 178
45192ef… ragelink 179 ## Agentic Development Platform
45192ef… ragelink 180 - MCP server with 17 tools for AI assistant integration
45192ef… ragelink 181 - JSON API: 10+ read endpoints with Bearer token auth
45192ef… ragelink 182 - Batch API: execute up to 25 API calls in one request
45192ef… ragelink 183 - Agent workspaces: isolated Fossil branches per agent
45192ef… ragelink 184 - Atomic ticket claiming for multi-agent coordination
45192ef… ragelink 185 - Server-Sent Events for real-time notifications
45192ef… ragelink 186 - Code review API: submit diffs, comment, approve, merge
45192ef… ragelink 187
45192ef… ragelink 188 ## UI/UX
45192ef… ragelink 189 - Dark/light theme with system preference detection
45192ef… ragelink 190 - Collapsible sidebar with project tree navigation
45192ef… ragelink 191 - Keyboard shortcuts (j/k, Enter, /, ?)
45192ef… ragelink 192 - Consistent pagination (25/50/100 per-page selector) across all lists
45192ef… ragelink 193 - HTMX live search with 300ms debounce
45192ef… ragelink 194 - Mobile responsive (slide-out drawer)
45192ef… ragelink 195 - Custom branded error pages (403, 404, 500)
45192ef… ragelink 196 - Public nav for anonymous users (logo, Explore, Sign in)
45192ef… ragelink 197
45192ef… ragelink 198 ## Infrastructure
45192ef… ragelink 199 - Omnibus Docker image (Fossil compiled from source)
45192ef… ragelink 200 - Multi-arch builds (amd64 + arm64)
45192ef… ragelink 201 - Caddy for SSL termination and subdomain routing
45192ef… ragelink 202 - Litestream for continuous SQLite-to-S3 replication
45192ef… ragelink 203 - Supply chain attestations (SLSA provenance + SBOM)
45192ef… ragelink 204 - Non-root container execution (gosu privilege dropping)
45192ef… ragelink 205 - Celery Beat for scheduled tasks

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button