FossilRepo

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

Keyboard Shortcuts

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