Releases: DooDesch-Mods/ScheduleOne-Snitch
Release list
v1.6.2
Changes in 1.6.2
Fixed
- A mod's debug build no longer hunts for Snitch on every API call when Snitch is absent. It searched
five folders per call, hundreds of times during one world load. - Log lines no longer repeat the mod's own name. MelonLoader already puts it in front of every line.
What's Changed
- ci: let GitHub generate the release notes under ours by @DooDesch in #1
- ci: post a real embed to the Discord feed on release by @DooDesch in #2
- ci: link Nexus in the Discord release embed by @DooDesch in #3
- build: take the deploy target from Deploy.props by @DooDesch in #4
- ci: take the release version from the tag, not from the csproj by @DooDesch in #5
- fix(log): stop repeating the mod's own name in every message by @DooDesch in #7
- fix(shim): stop asking the runtime to load an absent Snitch assembly by @DooDesch in #6
New Contributors
Full Changelog: v1.6.1...v1.6.2
v1.6.1
Changes in 1.6.1
Changed
snitchshows up in the game's command list, so a console autocomplete or a terminal can offer it and
complete it. It was answered by a patch and registered nowhere, which made it invisible to every tool that
lists commands. Nothing about running it changes.
v1.6.0
Changes in 1.6.0
Added
snitch openandsnitch closeshow and hide the profiler panel without touching the
keyboard.snitch open allandsnitch close alldo the same for the whole overlay.
Needs Hotline 1.3.0 or newer.
v1.5.1
Changes in 1.5.1
Changed
- Runs on Schedule I 0.4.6f11.
- Needs S1API 3.1.1, up from 3.0.5. Update it along with the mod.
v1.5.0
Changes in 1.5.0
Tune a mod's values by dragging them, and open the dashboard without leaving the game.
Added
- Sliders in mod panels. A mod can expose a value as a slider (
Profiler.RegisterSlider,
Panel.Slider) instead of a number you type into the console. Snitch clamps it to the declared range and
snaps it to the step before the mod's setter runs, so every write path - dragging in game, the web
dashboard, the phone remote,snitch slider- is bounded identically. - Sliders render everywhere panels already do: the in-game overlay, the web dashboard and the phone remote.
snitch slider <sliderId> [value]reads or writes one from the console. Omit the value to read it back.
A slider is a mouse control and cannot be driven by a test harness; this is the scriptable equivalent.- Open dashboard button in the Snitch panel, and
snitch dashboard. It serves the bundled copy from
Mods/Snitch/wwwrootwhen one is present, otherwise the hosted build, which connects back to the same
loopback socket. With the data server off it says so rather than opening a page that cannot connect.
Fixed
snitch hudandsnitch panel <id>were still documented after 1.3.0 moved the overlay to Hotline, so
following the docs printed "unknown". The wiki now matches the commands that exist.
Requirements
- In-game sliders need Hotline 1.2.0 or newer, which
draws them. Without Hotline, Snitch still runs and the sliders remain usable from the console and the
dashboard.
Notes
- Control ids are slugified from the label and punctuation is dropped, so two labels differing only in
punctuation collide and the second replaces the first. Give each control distinct words.
v1.4.0
Changes in 1.4.0
Use your phone as a remote for the profiler - scan a QR and start/stop sampling or trigger any mod's actions
without switching back to the browser window.
Added
- Phone remote. A "Connect a phone" QR - both in the web dashboard and in the in-game Snitch panel. Scan it
and you get a compact remote: the live FPS, Start/Stop/Reset, and every mod's panel actions and toggles. - Works on the same Wi-Fi (the phone connects directly to the game) and across networks (the game
relays through a small pairing service, so it works even over mobile data). On the same network the phone
switches to the direct local connection on its own. - End-to-end encrypted with a one-time key carried in the QR, so the relay only ever forwards ciphertext -
your telemetry stays private even over the internet. - Turn it on from the Snitch panel toggle or with
snitch lan on(off by default). - The dashboard now reads a capability list from the connected instance, so it only offers features the running
build actually supports.
Requirements
- The in-game QR uses Hotline 1.1.0 or newer (its panel
image support). Everything else works without it.
v1.3.0
Changes in 1.3.0
The in-game overlay moves to the new Hotline framework, so every mod shares one overlay and one hotkey. The
web dashboard and the profiling itself are unchanged.
Changed
- The in-game overlay is now provided by Hotline (a dependency). Snitch contributes its profiler panel (frame
stats, sections, states, Start/Stop/Reset) to the unified Hotline overlay, opened with Hotline's master key
(default F6).
Removed
- Snitch's own in-game windowing and its overlay settings (
ShowHud,HudFontSize,HudX,HudY,
WindowLayouts) and thesnitch hud/snitch panel <id>console verbs - the overlay lives in Hotline now.
Note
- Without Hotline, Snitch still profiles and serves the web dashboard, but has no in-game overlay. Hotline is
pulled in automatically as a dependency.
v1.2.0
Changes in 1.2.0
The on-screen overlay becomes a small windowing layer, every mod gets its own panel, and there is a combined
log timeline. The modder bridge ABI is unchanged (additive), so existing integrations keep working.
Added
- Multi-window overlay: the profiler HUD is now an "Overview" window alongside per-mod panels and a log
"Timeline". Each window is independently shown/hidden, dragged (title bar) and resized (bottom-right grip),
with a scrollable body and a layout that persists across restarts. - Per-mod panels: any mod that reports data gets its own toggleable panel of counters, state distributions,
free text, action buttons, toggles and a log channel - in the overlay and the web dashboard. New modder API:
theProfiler.RegisterPanel(...)fluent builder (Counter/State/Text/Action/Toggle/Log) and
Profiler.Log(...). - Log timeline: a combined, chronological view of all channels (each mod plus Snitch and the console), with
per-mod filtering, both in-game and on the dashboard. - Arm sampling from the overlay: Start / Stop / Reset buttons in the Overview (no console needed).
F6toggles
the overlay and always summons the Overview, so it can't get stuck closed. - New console commands:
snitch panels,snitch panel <id> [on|off|move|size|reset],snitch act <id>,
snitch toggle <id>,snitch log [<channel>|all].
Changed
- The on-screen "resize" is now a real window resize (width/height with scrolling); font size is a separate
setting. Button labels no longer clip descenders.
v1.1.0
Changes in 1.1.0
The on-screen HUD is now movable and resizable, and remembers where you put it.
Added
- HUD position and font size are adjustable and persist across restarts:
snitch hud move <x> <y>,
snitch hud font <n>, andsnitch hud reset(back to defaults), plus matchingHudX,HudY, and
HudFontSizesettings (sliders in the Mod Manager UI). The overlay auto-fits, so a bigger font makes a
bigger window. - Drag the HUD with the mouse: grab the body to move it, or its bottom-right corner to change the font size
(works while the cursor is free, e.g. with the phone or pause menu open).
Fixed
- The
F6hotkey now actually toggles the HUD (it was documented but never wired up).
v1.0.2
Changes in 1.0.2
Less code in mods, more profiling for free. No change to the host data/wire protocol or the bridge ABI, so
existing integrations keep working.
Added
- Auto-instrumentation: while sampling, every other loaded mod's per-frame methods (
OnUpdate,OnFixedUpdate,
OnLateUpdate,OnGUI) are timed automatically and shown as<Mod>.OnUpdate- per-mod frame cost with zero
code on the mod's side. Toggle with theAutoInstrumentpreference. - Zero-wiring registration: a mod's
SnitchProbe.Register()is now discovered and called by the host
automatically when sampling starts, so a mod no longer wires a registration call into itsOnInitializeMelon.
Changed
- Modder API shim class renamed
Snitch.Api.Snitch->Snitch.Api.Profiler(drops theusing Prof = ...
alias; justusing Snitch.Api;thenProfiler.Sample(...)). The bridge contract is unchanged, so previously
shipped shims still bind and report. - Cheaper no-op path: the shim's pre-bind host lookup no longer scans every loaded assembly each call.