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