Repository navigation
Releases: GitRbit/rbit
Release list
rbit 0.1.2
Added
- Repository document tabs for README files, licenses, code of conduct, contributing
guidelines and security policies, with matching About sidebar links, a sticky tab
bar and a searchable heading outline. Document links resolve against the displayed
commit and preserve the selected document when reloading or using browser history. - Mermaid diagrams in Markdown and responsive images with safe relative
srcset
URLs. Diagrams render in isolated sandboxed frames with a readable source fallback. - Mirror creation progress with current fetch stages and automatic navigation to the
repository when the first fetch completes. - Immediate contribution calendar tooltips and selectable days with commit details.
Changed
- Make the DNA light and dark palettes the default rbit themes. The original palettes
remain available as rbit Classic, and existing saved preferences are preserved. - Make repository Code, Issues, Pull requests, Commits, Branches, Tags and Releases
navigation reuse bounded, short-lived preloaded responses. Keep the tab bar mounted
across navigation, preserving focus, horizontal position and open clone menus. - Preload repository documents and switch cached tabs immediately through a smaller
document-only response, preserving the tab header and browser navigation behavior. - Expand language file dialogs into a consistent split view with an indented file tree
and a content preview. Improve branch graph spacing, colors and labels on narrow screens.
Fixed
- Require accounts created by administrators with an initial password to change it
before accessing repositories or using authenticated services. - Align sticky repository and document headers to remove gaps, including at fractional
zoom levels and on mobile screens. - Update end-to-end coverage for mirror progress redirects and commit-pinned README links.
Upgrade notes
- Take a full backup before upgrading. Database migration 0040 adds the initial-password
requirement flag and runs automatically; database migrations only move forward.
rbit 0.1.1
Added
- Yearly contribution heatmaps on user and organization profiles and repository Commits
tabs, with daily counts, monthly activity, active days and longest streaks. Calendars
rearrange into quarters on small screens without horizontal scrolling. Counts respect
repository visibility and use default-branch commits by UTC author date. - White-label instance branding and administrator configuration forms, including
customizable names, logos and email presentation.
Fixed
- Resolve strict lint warnings across the workspace.
rbit 0.1.0
First release of rbit, a self-hosted Git platform distributed as one Rust binary.
Release notes are prepared here while the upstream repository remains private.
Highlights
- Git over HTTPS and SSH, repository browsing, syntax highlighting, blame, archives,
forks, Git LFS, and pull and push mirrors. - Organisations, teams, issues, pull requests, reviews, branch protection, commit status
checks, email notifications, a REST API and signed webhooks. - Passkeys and TOTP, scoped access tokens, password recovery, OpenID Connect and GitHub
sign-in, and imports from GitHub, GitHub Enterprise and Gitea/Forgejo. - SQLite and redb storage, health checks, metrics, backups, Docker and systemd support.
- A responsive web interface with built-in and tinted themes, bounded rendering caches,
bundled browser scripts, and initial styles authorized by exact Content Security Policy
hashes. Installation metadata and offline support load after the initial page. - MIT OR Apache-2.0 licensing, community contribution files, and release automation for
Linux, macOS and Windows archives, checksums and a multi-architecture container image.
Installation and compatibility
- The server requires the Git executable. Source builds require Rust 1.94 or newer and
Node.js 24 for frontend assets; production does not need Node.js or an external database. - The release workflow targets Linux x86_64 and aarch64 (glibc 2.35+), macOS Intel and
Apple silicon, and Windows x86_64. Linux is the supported server platform; Windows
also has automated development and integration coverage. - Before upgrading an existing development instance, take a full backup and read the
detailed upgrade notes below. Database migrations run automatically and only move
forward. Production setup is described in docs/deployment.md.
Known limitations
- Resolving review threads, changing a pull request's base branch, cross-repository
issue/pull-request dashboards, Markdown preview and account-rename redirects are
planned follow-up work, not features of 0.1.0. - rbit accepts status checks from external CI; it does not execute CI jobs or provide a
package registry. Git LFS over SSH authenticates transfers that then use HTTP.
The sections below record the features, fixes and upgrade details accumulated during
development of this first release.
Performance
- Page branches, tags, directories and language-file results at 100 entries, with
search and stable snapshot links. Load commit cells and branch-protection badges
only for the requested page; do not permanently cache incomplete commit cells. - Reuse directory-history results for 30 seconds with bounded storage and four
admitted workers, including cancelled requests. Share repeated requests, avoid
quadratic cache filtering, and reuse decoded parent trees during history walks. - Combine branch graph lane segments into one SVG path per row, avoid full branch
commit summaries, and cap visible branch labels while linking to the full list. - Share cached highlighted lines through file and blame rendering without copying their
strings. Coalesce simultaneous requests for the same highlighted file and admit at
most four CPU jobs, including work whose requesting page has been cancelled. - Hash borrowed HTML slices for ETags instead of allocating another page-sized buffer;
existing validators and conditional responses remain compatible. - Cancel obsolete preloads and queued work when navigating, changing state or scrolling
after a touch. Bound retained preload records, respect Save-Data for all speculation,
and consume preload bodies without retaining another complete HTML buffer. - Add paired HTTP measurements with executable hashes, raw samples and alternating run
order. Reject invalid scroll probes and keep debug and release measurements separate. - Load branch/tag picker options only when opened, with 50 results per page and
server-side search. Keep paged links and search available without JavaScript. - Index mounted diff files and sidebar links once, coalesce bulk toggle updates, and
skip diff scroll work on other pages. Refresh indexes and header observation across
htmx navigation and history restores. - Reuse bounded blame results and share concurrent calculations for the same file and
revision. Limit active blame calculations even after a request times out, and keep
authorization checks fresh. - Stop retaining tree changes at the diff file limit and skip display-string allocation
for hunks beyond the line budget, preserving rename detection and line statistics. - Batch pull-request reviewer permissions and notification recipients, inbox writes and
email deduplication claims. Keep permission, suspension and email preference checks
fresh, with bounded notification write transactions. - Scan expired sessions without holding the database writer, then remove them in small
batches that recheck expiry and preserve concurrently renewed sessions.
Security and reliability audit
- Make first-administrator registration, password reset consumption, two-factor state
changes, access-token limits and release-file limits atomic under concurrent requests. - Revoke sessions synchronously after credential changes; prevent session renewal from
restoring revoked sessions, reject stale password proofs, and complete credential
updates after request cancellation. - Recheck SSH keys and administrator status for every exec request, and enforce branch
protection across Windows ref-name case aliases. - Pin remote Git connections to validated DNS addresses, disable proxy overrides, and
validate numeric webhook hosts and IPv6 translation ranges consistently. - Restrict object-scoped Git LFS credentials to their object transfers, and report stored
object sizes accurately. Clean up cancelled uploads and finish file placement independently
of disconnected clients. - Keep private responses out of shared caches, make the offline page anonymous, limit
service-worker caching to versioned static assets, and prevent speculative thread loads
from marking notifications read. Reject unsafe redirect targets and invalid API dates. - Cancel abandoned Git subprocess streams, bound subprocess output and email work queues,
stream LFS pointer discovery, deduplicate object ids in linear time, and replace
exponential recursive.gitattributesmatching with iterative matching. - Update vulnerable sanitizer and frontend build dependencies and replace a yanked
cryptography dependency; run browser-script regressions in CI.
Milestone 3 — ready to open-source
rbit is licensed under MIT OR Apache-2.0 (development builds previously used
AGPL-3.0-or-later), with its upstream at github.com/GitRbit/rbit. Release packaging targets
Linux (x86_64, aarch64), macOS (Intel, Apple silicon) and Windows with SHA-256 sums, and a multi-architecture image at
ghcr.io/gitrbit/rbit. The milestone also brings commit statuses for external CI, more of the
REST API, email notifications, editing files in the browser, Git LFS and sign-in with
OpenID Connect providers and GitHub, importing repositories from GitHub and Gitea/Forgejo,
and push mirrors.
Upgrade notes
- Database migrations
0033_commit_statuses,0034_notification_email,0036_lfsand
0037_external_identitiesrun automatically at start-up (or withrbit migrate). Take a
backup first; migrations only move forward. They add tables (commit statuses and required
checks, notification email settings and the email outbox, theserver_secretskey store,
Git LFS objects, links and locks, linked sign-in identities) and one column,
branch_protections.require_status_checks(off), so existing data and protection rules
are unchanged.0035is unused on purpose. - Personal access tokens now start with
rbit_. Existingrit_…tokens keep working
unchanged, over Git and the API; nothing needs to be regenerated. Secret scanners and
scripts that recognise tokens by prefix should accept both. The token list shows hints
as…a1b2. - Email notifications are on by default. With a
[mail]transport configured, users
with a verified address start receiving email for threads they take part in
([notifications] default_email = "participating"). Setdefault_email = "off"to make
it opt-in, or[notifications] email = falseto send none. Unsubscribe links use
server.public_url. - Git LFS is on by default (
[lfs] enabled = falsekeeps the endpoints and
git-lfs-authenticateoff). Behind a reverse proxy, allow request bodies up to
[lfs] max_object_bytes(default 2 GiB) and turn off request buffering for
/*/info/lfs/objects/*(nginx:client_max_body_size,proxy_request_buffering off).
Web uploads ([editor] max_upload_bytes, 50 MiB per file) need the same allowance. - Backups use format 3.
rbit backupalso copies Git LFS objects intolfs/and the
manifest gainslfs_objectsandmissing_lfs_objects. When restoring, copylfs/along
withrbit.db,repositories/andattachments/(see
docs/deployment.md). Older backups restore as before. - New data directory
<data_dir>/lfs(Git LFS objects, back it up); LFS uploads in
progress live in<data_dir>/tmp/lfs, which is never backed up. - New configuration sections
[editor],[lfs],[notifications]and[auth]; every
key is optional and documented in deploy/rbit.example.toml.
External sign-in stays off until[[auth.providers]]are configured; providers are
validated at start-up and every problem is reported at once. Client secrets can also
come fromRBIT_AUTH__PROVIDERS__<N>__CLIENT_SECRET(<N>the position from 0, or the
provider's id in upper case with-as_). - Webhooks: the events
memberandstatusare new; existing hooks are not subscribed to
them until you tick them. - Database migrati...