
BlueSage QoL Tweaks Beta
On-Together QoL Early Access: Mod Menu, in-game Styler, auto-reconnect, chat readability/layout, pings, copy links, ID helpers, and more.BlueSage QoL Tweaks
Early Access QoL toolkit for On-Together: Virtual Co-Working.
Current package: v0.2.0 Early Access — reconnect recovery, independent Clone Shield, full-capacity Name Styler editing, and self-only movement tools. Community testing recorded repeated successful recoveries from genuine disconnects without reviving the earlier healthy-session cleanup loop; the focused reconnect checklist remains part of release verification.
This is for players and hosts who want friendly quality-of-life helpers in one mod. It is not the big-lobby mod. For rooms beyond the vanilla cap, the host still needs BlueSagePatched PlayerLimitLift.
Recommended community setup: start with BlueSage QoL as the single comfort/safety mod. Pair it with other BlueSage releases when needed—especially PlayerLimitLift for large hosts—and avoid stacking standalone mods that change the same game surface unless you deliberately disable the duplicate feature. This keeps troubleshooting understandable and reduces cross-mod surprises after On-Together updates.
Large-lobby hosts should use the matching BlueSage PlayerLimitLift 1.1.3 or newer. Its above-15 relay preserves the original remote sender metadata, so remote slash text remains ordinary remote chat and cannot be mistaken for a command typed locally by the host. QoL remains fully standalone for casual clients and vanilla-cap hosts.
Early Access note: this mod is still moving quickly while players test it, but it is meant to be friendly to normal players. If something feels noisy, open /qolmenu, turn off that one feature, and let Blue know what happened.
Jump To
Quick Start · 0.2.0 Highlights · What It Adds · QoL Menu · Feature Notes · Common Commands · Settings · Compatibility · Troubleshooting · Credits
Quick Start
Install it, launch the game, then try these:
- Press
Homeor type/qolmenuto open the friendly settings menu. - Press
Insertor type/styleuifor Name Styler, Status Styler, Spoons, themes, and copyable styled text. - Type
@namein chat to get mention suggestions, then pressTabor click a suggestion. - Use
/qol statusor the menu'sRun QoL Statusbutton to see what is enabled. Hosts can still use/hh runfor a quiet lobby-health check.
Those four actions cover the normal day-to-day workflow. Everything below is optional and can be learned as you need it.
Handy Defaults
- Buttons stay neutral until they represent a real state: coral marks the selected tab/action, sage means enabled/open, gray means off, and orange is reserved for genuinely experimental controls. Open Style Helper now matches the surrounding menu instead of competing with it.
- Two local lobby tips appear once each time you join. They cover
Home,Insert, slash-command typeahead, your actual saved Push to Talk / Voice Activation choice, the game's Pomodoro/focus ticket + XP reminder, and local audit/profile navigation. They never post to global chat. - Click a chat message to copy only the message text. Links are recolored;
Shift-click once to copy/warn, thenShift-click again to open. - BlueSage local command/system response rows are clickable through the same sanitized copy path; names and timestamps are not added to copied text.
- Click minimap dots to open ID cards when BlueSage can safely match the player.
- Hold
Shiftto run orCtrlto slow-walk with BetterMove. - Once you own a canteen item or chalk color, use it normally; Reusable Consumables keeps it from being spent. Turn the feature Off any time to restore normal item use.
- Use
/as nowif a long session feels heavy.
Why Use BlueSage QoL?
BlueSage QoL is the community's one-stop comfort and safety layer: readable chat, reliable style/status tools, reconnect recovery, large-lobby helpers, minimap and player-panel polish, avatar/chalkboard persistence, and cautious identity-clone evidence in one guided menu. Most useful features start on; personal or still-experimental features stay opt-in. Every major feature has its own toggle, plain-language tooltip, status output, and reset/undo path where state is editable.
The goal is a dependable pillar the community can learn once instead of assembling many overlapping patches: players choose exactly what stays on, while hosts can explicitly authorize trusted helpers for defensive actions without granting power through a copied name or public chat message.
For the most predictable setup, use BlueSage QoL on its own or pair it with the matching BlueSage PlayerLimitLift when the host needs rooms beyond the vanilla player cap. BlueSage includes compatibility stand-downs for several well-known standalone mods, but stacking two mods that both own reconnect, chat rendering, minimap coloring, avatar slots, chalkboard sync, or other shared game surfaces can still create unexpected behavior after game updates. Start with BlueSage's built-in version of an overlapping feature; add another mod only when you specifically need something BlueSage does not provide, then disable the duplicate toggle and check /qol status.
Hosts gain extra defensive tools without turning normal players into moderators. Clone Shield remains advisory, host/helper commands require explicit SteamID64 authorization, and only the active host performs native ban/unban actions. If a host does not run BlueSage QoL, the cautious public advisory and partial-ID evidence can still be shared through the game's normal moderation process.
Community links:
- Official On-Together Discord: https://discord.com/servers/on-together-1331560256886804580
- Blue's Discord Community: https://discord.gg/JujMEwtN3q
Support Blue's community modding work:
0.2.0 Early Access Highlights
- Style and status reliability: preserves the exact styled base name through
/status,/set-status,/brb,/afk,/back, Status Styler, Status Color, Spoons, and mood changes; Detect Current restores the live palette instead of Gradient 3 defaults. - Preview/apply parity: Status Styler preview, clipboard copy, and live Apply share the same saved bracket-aware suffix path, including custom
[]and{}status wrappers. - Mod Menu: press
Homeor type/qolmenufor toggles, safe Customize fields, quick actions, themes, local status checks, and a consistent resolution-safe layout. - In-game Styler: press
Insertor type/styleuito manage name colors, preserved rich-text tags, status tags, templates, custom Spoons/mood labels, Detect Current, copyable style text, and bounded undo/redo/reset. - Full Name Styler buffer: raw rich-text markup now uses the same configured
Name/ID limitas Apply, up to 4000 characters, so long nested styles keep their closing tags intact. - Self movement tools: the dedicated section under
Credits / Otherprovides Save Pos, Teleport Saved, default-off Noclip/Fly, and resettable speed/jump/gravity multipliers. Every action targets only your own character; fly always starts off./selfmoveprovides the same local controls for command users. - Trusted Host Rescue compatibility: QoL quietly accepts a rescue from the authenticated current host or an owner-scoped Helper, but only for one exact QoL player. The request travels through hidden lobby metadata, never public chat. Stale, ambiguous, or wrong-target requests fail closed.
- Nine avatar presets: the default-on
Avatar Presets 4-9bridge leaves existing/default vanilla slots1-3untouched and game-owned; added slots4-9are stored separately by BlueSage and apply through the normal game customization path. - Chalkboard persistence: a default-on local board library. Anyone can
/chalksave name; only the host can/chalkload nameinto the shared lobby through the native board sync path. BlueSage stands down automatically when Andrew's Chalky is installed. - Reusable consumables: default-on protection for owned canteen items and chalk. Using one no longer lowers its inventory count, while initial purchases, clothing, bait, rods, and bobbers keep the game's normal ticket/inventory behavior.
- Chat readability: local text outlines, outline intensity
25-100, normal/black outline colors, andBlackNamesOutlinefor true-black styled names/messages. - Chat layout controls:
/chatscalescales the whole chat UI,/chatfontenlarges text only,/chatheightadds vertical space, and/chatrows 25-250selects retained scrollback with a balanced150default. - Event-driven chat polish: styles newly appended rows instead of repeatedly walking and dirtying the whole chat tree; the backdrop follows the current scroll viewport without blocking native scrolling.
- Longer text defaults: chat, Name/ID fields, ID-card details, and room names default to
3000characters. - Comfort helpers: ping mentions, ticket ping sound, click-to-copy chat, safer chat links, minimap dot-to-ID, Clone Shield, BetterMove, asset sweep, host health, and reconnect guard. Player Render Saver remains experimental and default off.
- Helper / Safety workspace: the fifth menu tab appears only for the active QoL host and Helpers that host assigned by exact SteamID64. A listed Helper on an older/incompatible host sees a clear waiting state, while the roster, exact IDs, incidents, and actions stay locked until the host publishes the compatible
v3-memberdatacapability. It refreshes automatically; ordinary players keep the normal four tabs. - Resolvable Clone Shield incidents: open victim/suspect highlights can be reviewed, copied, resolved for compatible QoL peers, or dismissed locally. Resolutions travel through a hidden host-validated relay and do not add another public chat line.
- Friend-aware minimap: Steam friends are colored green locally using a bounded relationship cache; ID-card dot clicking remains independent. BlueSage stands down when Aquarium51's standalone MinimapFriends is installed.
- Reconnect trigger safety: ordinary/manual lobby joins are never treated as reconnect failures and can never start cleanup. Reconnect mutation begins only after the game's native
ConnectionLostcallback. A restored authoritative playable session is preserved even if Vivox is late. - Faster real recovery: after a genuine disconnect, BlueSage allows at most 10 seconds for native menu/Steam/PurrNet cleanup before starting the saved-lobby join. Vanilla's stale
IsConnectingflag is diagnostic only; BlueSage owns its actual join-in-flight state. - Community diagnostics: BlueDevDebug remains locked on for
0.2.0so player logs retain consistent troubleshooting breadcrumbs./bluedevdebug offexplains the release lock instead of pretending to disable it; credentials and authentication tokens are never intentionally logged. - Local incident evidence: each session starts a bounded local chat/notification JSONL transcript plus a running mirror of
BepInEx/LogOutput.log. Raw rich-text names/messages stay beside readable plain text. Exact roster SteamID64/persona enrichment is added only for the verified host or an assigned Helper; nothing is uploaded automatically and/auditlog offis the explicit opt-out.
What It Adds
Expanded Avatar Presets
- Open the game's normal Avatar customization screen and use the existing preset dropdown to access slots
1-9. - Slots
1-3retain the game's original behavior, existing saved designs, and default templates when unused. - Slots
4-9are additive QoL presets. Their names and complete appearance/outfit selections are saved separately incom.bluesage.ontogether.qol-avatar-styles.cfg. Avatar Presets 4-9is on by default. Turning it off saves the active QoL preset, restores vanilla selection/UI immediately, and retains slots 4-9 for later re-enabling.- Removing or disabling BlueSage returns the UI to vanilla slots
1-3; it does not delete or rewrite those native presets. - Choosing an added preset still uses On-Together's normal avatar application and replication path so other players do not need the mod to see the selected design.
Chat, Names, And Rooms
- Chat send cap is raised from vanilla
250to3000characters. - Name, ID-card, and room-name fields default to
3000characters. ID-card details include the bottom About Me/FavoriteQuote section. - Power users can raise those up to
4000in/qolmenu, but very long text can still wrap or look odd in some game UI.
Chat Readability And Layout
- Text outlines and shadows make local chat easier to read on bright or busy backgrounds.
- Outline intensity defaults to
75and can be tuned from25to100. - Whole chat UI scale defaults to vanilla
100, can be tuned from75to200, and scales the chat panel, input box, backdrop, text, and outlines together. - Chat font size defaults to vanilla
100, can be tuned from75to200, and enlarges local chat message text without scaling the whole chat shell. - Chat window height defaults to vanilla
100, can be tuned from100to200, and adds vertical room for chat without changing text size. - Global and Local retained chat default to
150rows and can be tuned from25to250with/chatrows, its aliases, or Customize. BlueSage never lowers a higher vanilla or other-mod result. - Native Global/Local tabs remain the game's own tabs for now; BlueSage improves retained rows, readability, font sizing, whole-panel scale, and vertical space around them.
- The Customize tab includes Reset Chat UI to Vanilla, and
/chatvanilladoes the same reset for whole chat UI scale, chat font size, and chat window height. - Normal outline color and black-text outline color can be customized separately.
Ping Mentions
-
Type
@partialnameto show a small suggestion popup. -
Pinged messages get a visible
[PING]marker. -
@lobbymass alerts are accepted only from the authoritative current lobby host or a helper the host delegated by Steam identity. Unauthorized@lobbytext remains ordinary chat with no mass sound/highlight. -
Sender authority comes from the current chat RPC's exact PurrNet player identity, then a unique live Steam/PurrNet/lobby row. A real host in row zero is valid; an unresolved or duplicated row never inherits host authority. Ordinary chat skips this fresh roster check entirely.
-
Hosts can use the Helper / Safety tab or
/helper add <current player name or Steam ID>,/helper remove <player>,/helper list, and/helper reset. The familiar/lobbyhelperand/modhelpernames remain aliases. Only stable Steam IDs are persisted; styled display names are never authorization data. -
Delegates are scoped to the Steam ID of the host who granted them, so authorization cannot carry into an unrelated host's lobby.
-
Sound is on by default and uses
ticketby default. Sound modes:click,change,error,task,ticket. -
Mention suggestions and highlights resolve the player's current display name, including status and Spoons tags, then highlight that full mention once so suffixes do not duplicate inside pinged messages.
Helpful commands:
/setpingcolor FF66CC/pingsound ticket/pingsound off
Style Helper
/styleui opens a friendly window for:
- name styling, status tags like
(Reading), and reusable name templates; - color buttons so players do not need to hunt hex codes;
Detect Current,Apply Name Styler,Copy Name Style Text, and local-onlyClear Draft;- templates that apply immediately when loaded, with Undo available if you picked the wrong slot;
Undoto back out of the last apply, clear, template save/load, or local style edit;- Spoons controls to save
0-5, show the compact[1/5sp]tag, hide it, or undo the last Spoons edit; /setmood energychanges the compact label,/setmood resetrestoressp, and/spoons resetrestores the shipped hidden[5/5sp]default;- Status Styler keeps live status changes separate from local draft clearing.
Clear Statusremoves the live status;Clear Draftonly clears the editor box. - themes that also apply to the QoL Menu and autocomplete popup.
It uses the game's normal player-data update path and stores BlueSage options in its own BepInEx configuration instead of directly editing game save files.
QoL Menu
Open it with Home, /qolmenu, or /qm.
On first open, the QoL Menu and Style Helper use a centered 1320 x 720 fit when available, or the safe screen bounds with a 10-pixel edge margin on smaller displays. This layout was tested at 1453×759 and 1080p, while smaller displays keep every row reachable through scrolling. Drag the bottom-right ↘ handle when you want different geometry; close/reopen preserves that intentional size and position while it remains on-screen, and clamps only after a resolution or display change would hide controls.
Tabs:
- Main: Purge Unused Assets, Run QoL Status, Style UI, and built-in how-to examples.
- Toggles: simple on/off controls for the major features.
- Customize: ping colors/sound, sweep interval, chat outline/scale/font/height, retained rows, outline colors, and text limits. Editable rows have Save and Undo. Use Style Helper for identity edits.
- Credits / Other: self-only movement tools, optional Host Health, experimental Player Render Saver tuning, themes with Cycle Theme plus Reset to BlueSage Harbor, credits, and the fake-danger
DO NOT PRESSoptional lobby joke that sends only once. Older unreliable joke behavior was retired in0.0.8. - Helper / Safety (host and assigned Helpers only): a paged verified player roster, exact SteamID/profile actions, open/closed Clone Shield incidents, and preview-first moderation controls. Helper-list management remains host-only.
The default BlueSage Harbor theme balances On-Together's warm cream/coral look with Midnight Dock's high-contrast header and footer. Existing saved theme choices remain yours, and the theme buttons apply to the QoL Menu, Style Helper, and command popups together. Harbor and Midnight Dock own the neutral, selected, enabled, Off, and experimental button states instead of borrowing uncertain game-skin colors; their fields, focus borders, popups, footers, and automatic light/dark swatch labels follow the same readability contract.
The remaining gag changes no avatar, profile, or gameplay values. It remembers locally that it was discovered; after one tiny lobby joke, later presses show only local messages. Players can screenshot/share finds in Blue's Discord for fun.
Feature Notes
Enhanced Player Panel
- Adds local
@andIDhelper buttons to player rows. - Buttons stay left of the native/Pomodoro/PomoSync action area so report, ignore, kick, and ban controls stay reachable.
- ID-card lookup handles larger lobbies better than the old vanilla 16-player assumptions.
- If another EnhancedPlayerPanel-style mod is already loaded, BlueSage skips safely.
- BlueSage refreshes its own recycled-row button listeners, keeps report/ban controls clickable, and avoids covering Pomodoro/PomoSync row space.
MiniMap ID Click
- MiniMap dot-to-ID help is on by default.
- Click a minimap player dot to open an ID card when the dot can be safely matched.
- Floating minimap name labels are removed. Community testing showed they could cause FPS/CPU lag in large lobbies.
- Toggle dot-to-ID clicks with
/minimaplabelsor/mml.
Click-To-Copy Chat
- Click a chat message to copy only the message text.
- It does not copy the sender name, timestamp, or styled status.
- Safe
http,https, andwww.links are shown in hyperlink color. - Hold
Shiftwhile clicking a link once to copy it and show a caution note.Shift-click the same link again within a few seconds to open it. - Plain click always stays copy-only so players can verify a link before opening it.
- Toggle with
/copychator/ccopy. - Toggle link-opening with
/chatlinksor/clinks. - If the old CopyChat mod is loaded, BlueSage backs off to avoid duplicate click handlers.
Chat Readability
- Adds local outline and shadow to chat text so messages stay readable on bright backgrounds.
- Toggle with
/chatreadabilityor/chatread. - Adjust outline strength with
/chatoutline 25-100or Customize -> Chat outline intensity. Default75keeps chat readable without jumping straight to the thickest outline;100is the crispest outline. - Scale the whole local chat UI with
/chatscale 75-200,/chatresize 1.25, or Customize -> Whole chat UI scale. This scales the vanilla chat surface, input, backdrop, text, and outlines together for accessibility on small displays. - Enlarge only chat message text with
/chatfont on/off/toggle,/chatfont 75-200,/chatfont reset, or Customize -> Chat font size. Use this when you want bigger letters without growing the panel/input/backdrop. - Expand the chat window vertically with
/chatheight on/off/toggle,/chatheight 100-200,/chatstretch 1.6, or Customize -> Chat window height. This adds taller visible chat space without scaling text. - Retained rows default/reset to
150, clamp to25-250, and are controlled by/chatrows,/chathistory,/chatr, or Customize. Higher values cost more UI memory/work in busy rooms; higher vanilla/other-mod limits remain untouched. - Native Global/Local tab buttons and the minimize arrow stay controlled by the game UI. BlueSage does not claim a replacement tab/button layer in this release.
- Use
/chatvanilla,/chatreset, or Customize -> Reset Chat UI to Vanilla if scaling, font size, or window height leaves chat in a weird place. It restores saved vanilla transforms and sets whole UI scale/font/window values back to100. - BlueSage nudges scaled chat panels back on-screen when possible. If your saved vanilla chat position still feels off after scaling, use the
:::drag handle on the chat box to realign it. - Tune outline colors with
/chatoutlinecolor #000000for the normal outline path and/blackoutlinecolor #C0C0C0for true-black chat/name rows. The same fields are in Customize as Normal outline color and Black text outline color. - Chat Readability uses the game's text material plus a soft local shadow/outline assist. BlueSage does not rewrite message text or change what other players see.
BlackNamesOutlineis on by default so true-black styled names/messages get the light black-text outline color instead of disappearing into black-on-black. Turn it off if you want every row to use the normal outline color.- This does not rewrite chat messages and does not change what other players see.
Clone Shield
- Clone Shield is an independent public advisory for confusing identity clones. The potential victim's own QoL client publishes the alert; the host does not need QoL or the same version.
- It watches for another player newly joining/changing to match the local QoL user's stable identity. Matches cover the complete avatar/outfit fingerprint or a name with the exact letters and rich-text formatting, including colors and format tags.
- The public message identifies the likely victim and likely copier with plain display names plus the final six Steam ID digits, then asks players to confirm the full IDs in the player list.
- Victim-side publication prevents every observer from repeating the warning. The first scan establishes a baseline, unchanged duplicates do not repeat, each victim/culprit/match pair has a five-minute cooldown, and changing both players simultaneously cannot reverse the attribution.
- It never auto-bans. Wording remains “potentially cloned” because matching network state cannot prove which mod or action caused it. A local incident ID is evidence for a host or explicitly assigned moderation helper to review; it is never authorization by itself.
- Toggle with
/cloneshield,/cloneguard, or the Toggles tab.
Helper / Safety, Steam IDs, And Helpers
Why this exists: styled names can be copied, but a current SteamID64 + live player row + PlayerID cannot be accepted by BlueSage unless those sources agree. Names and Clone Shield alerts help you find a case; they never choose a moderation target.
Fast safe workflow: open HOME -> Helper / Safety, read the active-roster status, select one row, open its Steam profile, then use Copy Identity Evidence if a report is needed. Preview and Confirm are always separate. Click an active player or native-ban row again—or use its explicit Clear Selection button—to disarm it. Paging, filtering, loss of access, and lobby changes also clear transient targets; BlueSage never silently moves or auto-selects a moderation target.
- The Helper / Safety tab is visible only to the active QoL host and exact-SteamID Helpers assigned by that host. A listed Helper gets a safe waiting explanation if the host has not published a fresh compatible v3 member-data capability; no protected data appears until authorization is fresh. The host republishes every five seconds and the menu rechecks automatically—Refresh Access Now is optional, not a hidden required step. Once ready, it pages verified active rows without filling vanilla chat and keeps an exact selected SteamID attached to Copy ID, Open Profile, and preview controls. Only the host sees Helper-list management.
/sidlistis a compact host/Helper fallback: it summarizes open Clone Shield evidence and points to Lobby Safety instead of dumping a long roster into chat.C001always resolves to the suspect; the victim Steam ID is protected from the quick-ban path. Ordinary players do not receive this command or its suggestions./sidincident(/cloneincident) gives the same incident lifecycle actions as the menu:<C001> resolve,<C001> dismiss,clear-player <verified query>,dismiss-all,clear-history, andclear-all. Dismiss/clear actions affect only this client's advisory view; they never ban, change Helpers, or publish lobby state. Open cases also archive after two consecutive aligned scans no longer find the matching name/avatar pair or either participant.- Hover the native green Steam/profile button for a row check.
LIVEmeans that row is a current Steam-lobby member; this does not mean the player has QoL installed. Authorized host/Helpers receive the expandedVERIFIEDSID/persona/row/PlayerID view.LIVE / STEAM CHECKmeans the native game row is still live while Steam lobby enumeration is revalidating; the profile remains available but moderation stays locked.LEFT / STALErequires no attached live native player, whileCHECKINGcovers duplicate or incomplete identity sources. Every non-verified state is non-actionable. - Player-list identity display is event-invalidated and shared for one second across tooltips, the Helper workspace, Clone Shield, and highlights. This prevents repeated Steam/PurrNet reconstruction during Unity redraws. Preview/confirm moderation does not trust that display cache: it performs a fresh exact quorum check at action time.
- For hosts and assigned Helpers,
/sidwho listremains a compact chat fallback and points to Lobby Safety for the active roster./sidwho <C001 | partial display name | regex | partial Steam persona | 4+ SteamID digits | _host | _self>returns every verified current match./sidwho copy <same query>copies the same local identity-evidence record as the menu: displayed name, raw TMP source, cached Steam persona, exact SteamID64, verified row, PlayerID, and current role. Lookup is read-only; helper assignment requires one unique result and names never become ban authority. /sidban C001is preview-only. Recheck the player list/profile, then use/sidban C001 confirmwithin 30 seconds. Full SteamID64 or a unique suffix of at least six digits also works.- The active Steam/PurrNet lobby host is the only machine that writes native ban data and sends the exact targeted game
BanRPC. A helper command is a request to that host, not a local ban. Lobby Safety provides separate exact-target Preview and Confirm buttons for live/incident bans and saved native-record unbans, matching the slash-command two-step flow. - Hosts explicitly manage one owner-scoped Helper list in Lobby Safety or with
/helper add/remove/list/reset. Helpers may use@lobbyand request host-validated moderation actions;/lobbyhelperand/modhelperremain compatibility aliases for the same list. - Compatible v3 Helper requests use non-chat Steam member data. The host binds the request to the exact current Steam member, rechecks its verified live row and Helper authority, rejects replay/expiry/ambiguity, and never trusts a styled name or public alert text. Legacy chat-shaped moderation packets are consumed and rejected without executing or reaching public chat.
/sidunbanand/unbansidreverse an exact native Steam ID ban after preview/confirm. Helpers must provide the full SteamID64; the host may use a unique suffix.- The host-only Native banned players section reads the game's paired saved nickname + SteamID64 records directly, pages long lists, copies the exact ID, and creates a separate preview-first unban. This preserves identity evidence even when the original player has already left or the live chat/console line was missed.
- The active verified roster is shown before incident cards. A visible status such as
57 active verified / 63 player-list rows; 6 left/stale rows excludedexplains crowded-lobby drift instead of blaming players or hiding it; QoL installation is never part of the check. Only the newest four incident cards expand at once, Clear This Player's Incident Flags Locally handles one selected row, and Dismiss All Open Locally clears Bloo-style advisory clutter without changing moderation. Closed history remains reviewable until explicitly cleared. - Resolve clears an open incident and its victim/suspect highlights for compatible QoL peers through hidden, host-validated lobby state; Dismiss Local clears only your own advisory state. Neither action bans anyone. Incident open/resolve/dismiss/stale transitions are written to the structured audit with exact pairs only for the verified host/Helper; ordinary-client logs retain partial-ID evidence.
- Community reports remain review evidence: 0.2.0 does not download, bundle, flag, or auto-enforce Andrew's/community
trolls.json. A global-match badge must not be claimed until Blue approves a separately reviewable feed/snapshot design. - If the host does not run compatible BlueSage QoL, the access-scoped Lobby Safety workspace, helper authorization, and SID enforcement stay unavailable. The cautious public Clone Shield advisory and partial-ID evidence can still be shared with the host, who can verify the native player list and Steam profiles before using the game's normal moderation controls.
Local Chat And BepInEx Audit
EnableLocalAuditExportsdefaults On and createsBepInEx/BlueSageAudit/session-*without changing the original BepInEx log. Snapshot Now and/auditlog snapshotatomically copy the true liveBepInEx/LogOutput.loginto a new timestampedsession-*/snapshots/snapshot-*/LogOutput.logfolder, keep the latest eight snapshots, and copy that exact folder path. Copy Audit Folder,/auditlog status, and/auditlog pathprovide the broader running-audit location./auditlog offstops new writes without deleting prior files.- Chat/notification JSONL stores timestamps, rendered raw TMP names/messages, and plain-text forms. These are the arguments that reached the rendered UI after earlier game/mod patches, not a pristine network payload. While this client is the verified host or an assigned Helper, the record may also include the exact current roster SteamID64 and cached Steam persona. Ordinary clients receive no extra SID enrichment from the structured transcript.
- BepInEx diagnostics record the candidate build identity, Lobby Safety access state, and count-only identity summary (
verified/native/steam/excluded/complete) without exposing protected IDs to ordinary clients. Handled slash-command names are recorded for troubleshooting but the complete argument string remains redacted. Styled names, private statuses, player queries, and exact moderation IDs are never copied from a typed command into that diagnostic line. - The BepInEx mirror is intentionally faithful: it contains whatever the game and every installed mod already writes to
LogOutput.log, which may itself include player identifiers. Review files before sharing them. - Chat parts rotate at 16 MiB with at most four retained parts; BepInEx mirrors rotate at 64 MiB with at most two retained parts. Part numbers increase and the oldest file is removed, so remaining files sort chronologically. Cleanup retains at most 12 session folders or 14 days. There is no automatic upload, remote feed, or bundled community banlist.
Player Render Saver
EXPERIMENTAL — default off. This feature is still being validated across different lobby sizes and avatar hierarchies.
/playersaver statusmust report actual suppressed renderers before treating it as an active optimization.
- Off by default and opt-in from the Toggles tab.
- Local-only optimization for very large lobbies: hides far/overflow remote player renderers on your PC only.
- Chat, player-list rows, IDs, reports, ignores, kicks, bans, and other players' views stay untouched.
- Defaults keep remote players within
45mvisible and also keep the closest32remote players visible. - Tune with Customize -> Render saver radius / max visible, or use
/playersaver radius 45,/playersaver max 32,/playersaver status, and/playersaver off. - Turning it off restores all hidden renderers without needing a game restart.
Chalkboard Persistence
-
On by default and no longer marked experimental. Turn it off from Toggles if you do not want local board saves.
-
If Andrew's Chalky is installed, BlueSage detects it and automatically stands down instead of competing for the same persistence surface.
-
Interact with a board, then use
/chalksave cozy-board; an optional zero-based board index may follow the name. -
The lobby host can use
/chalkload cozy-boardto restore and synchronize it. Clients cannot overwrite the shared board. -
/chalklistshows locally saved names. -
Names are restricted to safe letters, numbers, underscores, and hyphens. Saves use validated dimensions/color values, atomic replacement, and a backup of the prior version.
-
Shared restores have a cooldown to avoid repeated full-board network bursts. Normal drawing and the game's late-join board synchronization remain native.
BetterMove
- On by default.
- Hold
Shiftto run. - Hold
Ctrlto slow-walk. - Local-player only; it does not add custom network packets or require other players to install anything.
- Toggle with
/bettermoveor/bm.
Reusable Consumables
- On by default for canteen items and every chalk color.
- The first acquisition remains a normal game purchase. After an item is owned, using it does not lower its saved inventory count, so it does not need to be repeatedly repurchased.
- Clothing and all fishing inventory—bait, rods, and bobbers—remain entirely game-owned and unchanged.
- BlueSage does not patch ticket removal or shop purchase logic. Turning the feature Off restores the game's normal decrement on the very next use; no save migration or repair is needed.
- Toggle with
/unlimitedconsumables,/consumables, or/infiniteconsumables.
Reconnect Guard
- On for players by default.
- Starts only after the game's native disconnect callback, allows up to
10seconds for native cleanup to reach a clean lobby menu, then makes one saved-lobby join attempt. - Uses the game's canonical saved-lobby join flow rather than calling transport start directly.
- Allows up to
45seconds after that join for a stable, authoritative playable session to finish rebuilding. - Success requires authoritative Steam lobby membership, connected PurrNet transport, restored local-player/chat runtime, and matching Vivox lobby readiness when voice is enabled. Transport/UI without Steam membership is rejected as a ghost-member state.
- If the original lobby disappears because the same host rehosts, bounded discovery can follow exactly one compatible public/direct-join replacement owned by the captured host; ambiguous or unsafe matches are rejected before menu fallback.
- If AndrewLin Reconnect is loaded, BlueSage suppresses its competing transport-only retry while managed recovery is active.
- Hosts can turn it off with
/rg off.
Asset Sweep
Automatic Sweep uses a real-time Unity coroutine and temporarily keeps Unity background execution active while that loop is enabled, so the interval continues when On-Together is unfocused. The prior runtime setting is restored when automatic Sweep stops, and the Unity asset operation always runs on the main thread.
-
Runtime BlueSage menu/theme textures are protected from Unity's unused-asset unload. Manual and automatic sweeps must leave the QoL Menu, Style Helper, and command/mention popups visually unchanged without cycling themes.
-
Runs every
15minutes. Legacy default intervals of30or60migrate once to15. Other saved values remain yours. -
Helps long sessions reclaim unused Unity assets.
-
If AndrewLin Sweep is loaded, BlueSage auto sweep backs off automatically.
-
Interval safe range: 15-180 min.
-
Manual
/as nowstill respects safety guards.
Leave Notices And Focus Anywhere
- Leave notices are on by default.
- Focus Anywhere is on by default.
- Timestamps are on by default in 0.2.0 Early Access and can be turned off in
/qolmenu.
Common Commands
/qol statusor/bsqol status: show current BlueSage states.Home,/qolmenu, or/qm: open the QoL menu.Insert,/styleui, or/sui: open the Style Helper./styleor/sty: build styled text from chat commands./setname,/status,/clearstatus,/statuscolor: set your display name/status without editing save files directly./setname resetrestores your current Steam persona name and/statuscolor resetrestores#FFD45Dwithout discarding the other style/status pieces.- Style Helper preserves exact balanced rich-text markup in Custom Rich Text mode. BlueSage validates tag structure and preserves the raw draft; the game remains authoritative for whether uncommon TMP tags/values render. Detect Current separates the live styled base from BlueSage status/Spoons suffixes, and older suffix-contaminated or repairable saved styles migrate once with a local rollback copy instead of silently duplicating or clearing identity pieces.
/brbor/afk: quick status shortcuts./backrestores the status you had before BRB/AFK, or clears it if there was nothing to restore./spoons on/off/statusor/spoons 0-5: show, hide, or set the optional compact display-name tag, like[1/5sp]. Use/spoons offif your name feels too long./assetsweepor/as on/off/status/now: asset sweep controls./hosthealthor/hh on/off/status/run: host-health controls. Hosts can use/hh runfor a quiet lobby-health check./leavenoticesor/ln on/off/status: leave notice toggle./timestampsor/tt on/off/12/24/reset/status: chat and notice timestamps; 12-hour mode shows AM/PM and 24-hour mode does not./chatreadabilityor/chatread on/off/status: local chat text outline/shadow./chatoutlineor/outline 25-100/status: adjust local chat outline strength./chatscaleor/chatresize 75-200/reset/status: scale the local chat UI for readability./chatfontor/chatfontsize 75-200/reset/status: enlarge chat message text without scaling the whole chat UI. It also acceptson,off, andtoggle./chatheightor/chatstretch 100-200/reset/status: expand the chat window vertically without scaling text. It also acceptson,off, andtoggle./chatrows,/chathistory, or/chatr 25-250/reset/status: retained Global/Local scrollback; reset restores150./chatbackdropor/chatbg on/off/status: persistent local chat backdrop toggle./chatvanilla,/chatreset, or/chatdefault: restore whole chat UI scale, chat font size, and chat window height to vanilla100./chatoutlinecoloror/outlinecolor #000000/status: normal chat outline color./blackoutlinecoloror/blackoutline #C0C0C0/status: true-black chat/name outline color./bettermoveor/bm on/off/status: Shift run and Ctrl slow-walk./unlimitedconsumables,/consumables, or/infiniteconsumables on/off/status: keep owned canteen items and chalk reusable; fishing supplies and clothing remain vanilla./reconnectguardor/rg on/off/status: reconnect guard toggle./reconnectmessageor/rm on/off/status: reconnect success message toggle./focusanywhereor/fa on/off/status: focus-anywhere toggle./minimaplabelsor/mml on/off/status: minimap dot-to-ID-card helper. No floating labels./playersaver,/rendercull, or/playercull on/off/status: opt-in local remote-player render saver for large lobbies. Useradius 45,max 32, orresetto tune it.- Host/Helper
/sidlist: compact open-incident summary; use Lobby Safety for the full roster, exact IDs, and actions. - Host/Helper
/sidincident status,/sidincident C001 resolve|dismiss,/sidincident dismiss-all,/sidincident clear-history, or/sidincident clear-all: menu-parity incident lifecycle and local clutter cleanup;/cloneincidentis an alias. - Host/Helper
/sidwho listor/sidwho <player evidence>: compact/read-only verified identity fallback; the complete paged roster lives in Lobby Safety. - Host/Helper
/sidban C001 [confirm]: preview, then request a host-native ban of the incident suspect. /sidunban <SteamID64> [confirm]or/unbansid: preview, then request removal from the host's native ban list./helper add/remove/list/reset: host-only, owner-scoped Helper list for@lobbyand host-validated moderation;/lobbyhelperand/modhelperare aliases./copychator/ccopy on/off/status: click-to-copy chat messages./chatlinksor/clinks on/off/status: safe click-to-open chat links./auditlog status/on/off/path/snapshot: control or locate the bounded local chat and BepInEx evidence export. Existing files are not deleted when capture is turned off.
Using a toggle command without on or off flips the current setting. Timestamps apply to chat plus join/leave/system notices when enabled.
Settings
After launching once, settings live here:
BepInEx/config/com.bluesage.ontogether.qoltweaks.beta.cfg
Most players should use Home or /qolmenu instead of editing the file directly.
Useful defaults:
EnableAutoSweep:trueSweepIntervalMinutes:15. Legacy default intervals of30or60migrate once to15; other saved values remain yours.EnableHostHealthMonitor:trueEnableLeaveNotifications:trueEnableWelcomeMessage:trueEnableChatTimestamps:trueEnableNotificationTimestamps:trueUse24HourTime:false(12-hour AM/PM)EnableChatReadability:trueChatOutlineIntensity:75ChatUiScalePercent:100ChatFontSizePercent:100ChatWindowHeightPercent:100ChatHistoryRows:150ChatOutlineColor:000000BlackChatOutlineColor:C0C0C0BlackNamesOutline:trueEnableBetterMove:trueEnableUnlimitedConsumables:true(owned canteen items and chalk stay reusable; initial purchases, clothing, bait, rods, and bobbers stay vanilla)EnableReconnectGuard:trueEnableReconnectAnnouncement:trueEnableFocusAnywhere:trueEnableEnhancedPlayerPanel:trueEnableCloneShield:trueEnablePlayerRenderSaver:falsePlayerRenderSaverRadiusMeters:45PlayerRenderSaverMaxVisiblePlayers:32EnablePingMentions:trueEnablePingSound:truePingHighlightColor:9B59B6PingMentionColor:FFD700PingSoundMode:ticketEnableSpoons:false- On update to this release, only the old timestamp-less default-on Spoons state is reset to hidden once. A real saved Spoons opt-in is preserved. Use
/spoons on,/spoons 0-5, or Style Helper > Show Tag if you want the compact tag back. EnableStyleUi:trueEnableExtendedAvatarStyles:trueEnableChalkboardPersistence:true(only the host restores for the lobby; auto-stands-down with Chalky)EnableMiniMapPlayerLabels:true(legacy config name; now controls MiniMap ID Click only)EnableMiniMapFriendColors:true(cached Steam-friend dot coloring; backs off for MinimapFriends)EnableChatCopy:trueEnableChatUrlLinks:trueEnableHiddenDiagnostics:true(locked on for0.2.0; old false configs are normalized on)EnableLocalAuditExports:true(bounded local chat/notification JSONL plus running BepInEx log mirror; never uploaded automatically)UiThemePreset:BlueSage HarborMaxChatCharacters:3000MaxProfileCharacters:3000MaxSessionNameCharacters:3000
Old beta config files may still contain removed settings. BlueSage ignores old removed settings now. If something acts odd after updating, delete the config and launch once to regenerate it.
Compatibility
- BlueSage only checks mods BepInEx actually loaded.
- Disabled
.old,.bak,.disabled, or.dll.disabledfiles are ignored. - BlueSage does not delete, rename, edit, or disable another creator's mod files.
- If AndrewLin Sweep is loaded, BlueSage auto sweep backs off.
- If Simple_QOL or ChatTweaks-style mods are loaded, BlueSage avoids duplicate timestamp/leave-notice formatting.
- If AndrewLin Reconnect is loaded too, BlueSage marks its transport-only retry intentional/suppressed while BlueSage performs canonical lobby recovery.
- If AndrewLin Desync is loaded, it owns periodic lobby/persona repair; BlueSage pauses its automatic Host Health repairs and keeps manual Host Health read-only.
- Hush may share the game's native ban store, but its delegates/admins never become BlueSage Helpers. BlueSage keeps exact-ID preview/confirm and current-host authorization separate.
- Echo can intentionally copy names and outfits. Clone Shield therefore remains a cautious clue and never authorizes a ban without exact profile/roster verification.
- Fomo/Alpha may observe visible chat or supply command utilities without taking over BlueSage authorization. Authenticated Helper moderation/resolution uses non-chat Steam member data, so no
!bsmodor incident-control payload enters visible chat or Fomo sinks. If Chalky is loaded, BlueSage board persistence/sync stands down completely. - 0.2.0 does not download, bundle, or auto-enforce a community banlist. Community reports remain review evidence, and exact local host decisions stay preview-first and reversible.
- If BlueSage PlayerLimitLift is loaded, Host Health can include cap/default/chat-relay state.
If Something Feels Weird
- Run
/qol statusfirst. - Open
/qolmenuand turn off only the feature that feels weird. - Use
/chatvanillaor Customize -> Reset Chat UI to Vanilla if whole UI scale, message font size, or taller chat leaves the panel displaced. - Use
/spoons offif the optional Spoons tag makes names too long. - Spoons is opt-in by default and older enabled Spoons configs reset to hidden once on update; Save Spoons, Show Tag, or
/spoons onturns it back on. - Reopen the player list if buttons look stale after scrolling a huge lobby.
- Use
/mml offif minimap dot clicks feel weird on your setup. - Use
Detect Currentin/styleuito re-read your current in-game name/status before applying a new experiment. It prefers the live display name, preserves supported existing rich-text wrappers for editing, separates only recognized BlueSage status/Spoons suffixes like[Tired],[4/5sp], and(Homelab), and falls back to saved config only when live player data is unavailable.Clear Draftonly clears the editor box;/clearstatusremoves a live status. - For an incident report, run
/auditlog snapshot, then/auditlog path. Review the local folder before sharing; the BepInEx mirror may contain player identifiers written by the game or another installed mod.
Credits
Made by BlueSage for the On-Together community.
Community thanks: ●Marbles● for her $20 Ko-fi support on July 6, 2026 and her message, “Thank you for all of your constant hard work in creating mods for On Together and maintaining such a positive, safe, and supportive server for everyone.”; Nell for $20 Ko-fi support, trusted Helper work in Discord and the server, and “Share with Rowan!”; bloo_bamboo for brave large-lobby QA and logs; and Rowan—our partner in crime—for continued testing and experiments. ♥
Inspired by helpful community mods and projects including:
- AndrewLin Sweep
- AndrewLin Reconnect
- AndrewLin Hush
- AndrewLin Fomo
- AndrewLin Echo
- AndrewLin Alpha
- AndrewLin Chalky
- AndrewLin Desync
- Tiny_Plume Simple_QOL
- jaide EnhancedPlayerPanel
- jaide CopyChat
- jaide PingSystem
- WhozScott ServerFavorites and Heartbeat
- YenRex ShaderPlayground
- OnToWelcomeCommittee FocusAnywhere
- officerballs PlayerLimitLift and StatusManager
- On-Together Name Customiser
- OnTogetherModTemplate