Public Bug Tracker

Give players a read-only view of known bugs and their status at /tracker/your-project-slug. Players can browse, search, and upvote bugs without an account, which keeps your community informed and cuts down on duplicate reports.

⚠️

Bugs are public by default. Once the tracker or roadmap is enabled, every bug that isn’t marked private can appear on it — including reports filed automatically by the SDK, with their full descriptions. Mark sensitive bugs private from the bug detail view (or PATCH them with {"is_private": true}) before you turn the tracker on.

What players see

  • All non-private, non-deleted bugs, 25 per page, most-upvoted first
  • Each bug’s title, status, priority, category, upvotes and dates, and on its own page the description and your public comments (internal comments are never shown)
  • Status and category filters, and search if enabled

Configuration Options

  • Enabled — The tracker returns 404 until you enable it
  • Search — Allow players to search (allow_search)
  • Upvoting — Allow players to upvote (allow_upvotes)
  • Show categories / priority / status filter — show_categories, show_priority, show_status_filter
  • Page title and description, logo, accent color and custom CSS

Configure the tracker from the Public Bug Tracker card on the Public Roadmap page in the dashboard, or through the API below. Players cannot file new reports from the tracker — reports come from your game through the SDK.

API

HTTP
# Get / update tracker settings (session token)
GET /api/projects/:slug/tracker-settings
PUT /api/projects/:slug/tracker-settings

# Public bug list and detail (no auth)
GET /api/tracker/:slug?status=open&category=crash&q=inventory&page=1
GET /api/tracker/:slug/bugs/:number

# Upvote (no auth; optional {"player_id": "..."} body)
POST /api/tracker/:slug/bugs/:number/vote

Example body for PUT /api/projects/:slug/tracker-settings:

JSON
{
  "enabled": true,
  "page_title": "Known Issues",
  "allow_search": true,
  "allow_upvotes": true,
  "show_categories": true,
  "show_status_filter": true
}

Public Roadmap

Share what you’re working on at /roadmap/your-project-slug. The roadmap lists your non-private bugs grouped by status, so players can see what’s open, in progress and fixed, and upvote what matters to them.

Setup

  1. Open Public Roadmap in the dashboard sidebar and pick a project
  2. Turn the roadmap on
  3. Configure what it shows, then use Save & View to open the public page

Display Options

  • Layout — Board (columns per status) or List
  • Statuses shown — Any of open, in progress, resolved and closed (open and in progress if none are chosen)
  • Sort order — By priority (default), newest, or most upvoted
  • Upvotes — Show vote totals and let players vote
  • Bug counts, categories and priority — Show or hide each
  • Header alignment

Customization

  • Page title and description and logo
  • Accent color — Used for highlights and interactive elements
  • Custom CSS — Full CSS override for advanced styling
  • “Powered by Bugnet” footer — Can be hidden on paid plans; always shown on the free plan

API

HTTP
# Get / update roadmap settings (session token)
GET /api/projects/:slug/roadmap-settings
PUT /api/projects/:slug/roadmap-settings

# Public roadmap (no auth)
GET /api/roadmap/:slug

# Upvote (no auth; requires show_upvotes)
POST /api/roadmap/:slug/bugs/:number/vote

Example body for PUT /api/projects/:slug/roadmap-settings:

JSON
{
  "enabled": true,
  "layout_mode": "board",
  "sort_order": "upvotes",
  "accent_color": "#2E5BFF",
  "show_open": true,
  "show_in_progress": true,
  "show_resolved": true,
  "show_upvotes": true,
  "show_bug_count": true
}

Changelogs

Tell players what changed in each update. Changelog entries are published at /changelog/your-project-slug.

Creating Entries

  • Manual — Write an entry with a title, optional version, and a Markdown body (headings, lists, bold and code)
  • Auto-generate — Draft an entry listing the bugs resolved in the last N days (7 by default), then edit it before publishing

Each entry has a title, version, body, author, and a published date once it’s published.

Publishing

  • Entries are drafts until you publish them
  • Published entries appear on the public changelog, newest first (the 50 most recent)
  • Unpublishing an entry returns it to draft

API

HTTP
# Published entries (public, no auth)
GET /api/projects/:slug/changelog

# All entries including drafts (session token)
GET /api/projects/:slug/changelog/all

# Create, update, delete
POST   /api/projects/:slug/changelog
PATCH  /api/projects/:slug/changelog/:entryId
DELETE /api/projects/:slug/changelog/:entryId

# Draft an entry from recently resolved bugs
POST /api/projects/:slug/changelog/auto-generate
{"version": "1.2.0", "days_back": 14}

Example body for creating an entry (set publish to publish immediately; send {"publish": false} in a PATCH to unpublish):

JSON
{
  "title": "v1.2.0 - Bug Fixes",
  "version": "1.2.0",
  "body": "Fixed crash on level 5...",
  "publish": false
}

Branding Settings

Each project can store a brand profile — company name, logo, colors, support email, custom CSS and a “hide Bugnet badge” flag — — that the hosted tracker, roadmap and changelog pages all use. Edit it from the Brand Profile card on the Public Roadmap page in the dashboard, or through the API below. It is also served from a public endpoint, so you can theme pages you build yourself on top of the public API.

How the Hosted Pages Use It

  • Accent color and logo — used when the page’s own settings leave them at the default. A page’s own accent color or logo always wins, so you can set a brand once and still tweak one page.
  • Background and text colors — applied to the light theme. Pages keep their dark theme for players who choose it, so text stays readable.
  • Custom CSS — brand CSS is added first and a page’s own custom CSS after it, so page-level CSS overrides the brand.
  • Company name and support email — shown in the page footer, with the email as a mailto: link.
  • Bugnet badge — the “Powered by Bugnet” footer badge is hidden when hide_bugnet_badge is on.
ℹ️

The in-game widget is themed separately in the Widget Builder (see In-Game Widget).

Available Settings

  • Company name (company_name) and support email (support_email)
  • Logo URL (logo_url)
  • Accent, background and text colors (accent_color, background_color, text_color)
  • Custom CSS (custom_css)
  • Hide Bugnet badge (hide_bugnet_badge) — Studio plan and up. Turning it on from the free plan returns 403, and the public endpoint always reports false for free projects.

Colors must be 6-digit hex values such as #2E5BFF, the support email must be a valid address, and the logo URL must start with http:// or https://; anything else returns 400.

API

HTTP
# Get / update branding (session token)
GET /api/projects/:slug/branding
PUT /api/projects/:slug/branding

# Public branding (no auth)
GET /api/branding/:slug

Example body for PUT /api/projects/:slug/branding:

JSON
{
  "company_name": "Indie Studio",
  "accent_color": "#2E5BFF",
  "logo_url": "https://example.com/logo.png",
  "support_email": "support@example.com",
  "hide_bugnet_badge": true
}