Skip to content

Releases: GitRbit/rbit

rbit 0.1.2

Choose a tag to compare

@github-actions github-actions released this 19 Oct 07:33

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

Choose a tag to compare

@github-actions github-actions released this 18 Oct 23:38

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

Choose a tag to compare

@github-actions github-actions released this 18 Oct 21:27

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 .gitattributes matching 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_lfs and
    0037_external_identities run automatically at start-up (or with rbit migrate). Take a
    backup first; migrations only move forward. They add tables (commit statuses and required
    checks, notification email settings and the email outbox, the server_secrets key 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. 0035 is unused on purpose.
  • Personal access tokens now start with rbit_. Existing rit_… 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"). Set default_email = "off" to make
    it opt-in, or [notifications] email = false to send none. Unsubscribe links use
    server.public_url.
  • Git LFS is on by default ([lfs] enabled = false keeps the endpoints and
    git-lfs-authenticate off). 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 backup also copies Git LFS objects into lfs/ and the
    manifest gains lfs_objects and missing_lfs_objects. When restoring, copy lfs/ along
    with rbit.db, repositories/ and attachments/ (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 from RBIT_AUTH__PROVIDERS__<N>__CLIENT_SECRET (<N> the position from 0, or the
    provider's id in upper case with - as _).
  • Webhooks: the events member and status are new; existing hooks are not subscribed to
    them until you tick them.
  • Database migrati...
Read more