Files
InstanceBrick--nightcap/docs/ROADMAP.md
T
vii fd364a7bf2 docs: wrap the changelog at 110 columns and drop the glyphs roadmap item
Add a pre-commit check for added changelog lines over 110 characters. Roblox has no Nintendo glyph set, so the roadmap item cannot be met.
2026-10-09 13:50:46 -05:00

3.2 KiB

Nightcap roadmap

What Nightcap is working toward, in priority order. Items move to Shipped when they land on main. Open an issue to propose a change to this list.

1. Settings UI

Nightcap is configured by editing ~/.config/mocktail/config.yaml. Most people never open it, so they never find the FPS unlock or the vsync switch.

Goal: a small GTK4 settings window, reachable from the app menu and from a --settings flag, that reads and writes the same config.yaml.

  • Graphics tab: backend, frame rate limit, vsync, small texture upscale.
  • Input tab: the input.raw_mouse toggle and controller options.
  • Advanced tab: FFlag overrides with a plain text editor for fflags.json.
  • Discord tab: every field in the discord_rpc block, so a friend can see what you are playing and you can switch it all off in one click.
  • Changes apply on next launch. A restart button restarts Nightcap.

Done when every option in config/mocktail.example.yaml that a player would touch can be set without a text editor.

Shipped

  • Lower input latency: frames are presented as soon as they are ready.
  • Controllers hot-plug without a restart, and a pad that is unplugged mid-game releases its held buttons and sticks instead of leaving them stuck.
  • Mouse look keeps responding after a long turn, instead of going dead until the pointer travels back from past the screen edge.
  • Optional raw mouse input: input.raw_mouse in config.yaml sends look deltas in host units, so fractional display scaling no longer changes first-person sensitivity.
  • Small textures upscaled 4x by default, with PNG overrides in ~/.config/mocktail/textures.
  • ETC2 textures decoded on desktop GPUs without stutter.
  • No more error 319 kicks after joining a server.
  • Roblox sees the real host RAM and screen size.
  • Desktop launcher that works on Wayland and finds the installed binary.
  • Discord Rich Presence on by default, with the experience name, creator, elapsed time, the experience icon with a Roblox badge, and a join button when the server is public. See the FAQ to switch it off.
  • Custom Discord presence: title, details, state, and large and small icons from config.yaml, with {place_name}, {place_icon}, and {creator_name} placeholders.
  • --profile writes a Chrome-format trace of the Vulkan adapter's work, including shader and pipeline creation, readable in ui.perfetto.dev. BENCHMARKING.md fixes the experiences to measure and scripts/summarize_profile_trace.py builds the before and after table.
  • Texture uploads no longer stall the frame they land on: ETC2 decode and resampling run on a persistent worker pool.
  • Less stutter while joining an experience and while textures load in. See the changelog for the numbers.
  • The host main thread rests between engine polls instead of spinning, and GameMode's core pinning is released, so Roblox's workers spread across every core. See PERFORMANCE.md.
  • Own app ID io.github.CoderDayton.nightcap, so Nightcap installs next to upstream.
  • AppImage and signed Flatpak releases on every v* tag, with the Flatpak repo on GitHub Pages.

Not planned

  • Replacing the mocktail binary and config names. Keeping them makes upstream merges clean.