Skip to content

In-game commands get shorter names grouped by what they change: ds_hud_hide_scoreboard and so on (#555) - #719

Merged
ccoventry merged 9 commits into
devfrom
chore/ds-prefix-555
Oct 21, 2026
Merged

ccoventry merged 9 commits into
devfrom
chore/ds-prefix-555

Conversation

@ccoventry

@ccoventry ccoventry commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Release note: Changed: every in-game DoD Studio console command has a new, shorter name that says what part of the game it changes (for example dodstudio_hide_scoreboard is now ds_hud_hide_scoreboard); your Studio settings move over by themselves, and old names in your own configs are flagged.

All of #555 in one PR: the ds_ prefix and the area as the second word. Each name is now ds_ + area + action: ds_spec_ (watching another player), ds_hud_ (drawn on screen), ds_view_ (the recording player's own first-person view), ds_player_, ds_map_, ds_sound_, ds_demo_ (playback), ds_capture_ (capture batches), ds_ui_ (DoD Studio's window and the game's windows), ds_hd_, ds_debug_. The full signed-off table is on #555 (the 10-20 comment); docs/dodstudio_commands.md lists all 60 names on dev, old to new. Subcommands and options didn't change (ds_hud_deathmsg font ..., ds_capture_batch start|away|stop).

What changed

  • Hook DLL:
    • The prefix is one edit in goldsrc-hooks/src/names.rs; each module's console_name! suffix now carries its area.
    • Every literal name in tests, help and status text, the .res layouts (Settings check boxes, Playback, Review, Console, Studio, GameMenu.res) and Commands.txt.
    • Commands.txt is grouped by the new areas (adds VIEW, PLAYERS, MAP, SOUND and CAPTURE). console_commands_data.js was regenerated with console_names.py.
    • No name is the whole start of another; settings are still cvars with their old defaults.
  • One old to new table: goldsrc-hooks/src/old_names.rs. The hook reads it, native::patch::console_prefix compiles the same file in, and studio/src/console_renames.js is the frontend's copy. Tests check that the two copies agree, that every new name is one the hook registers, and that every name the hook registers is in the table.
  • Studio and native: every place that sends or checks a name: the builder constants, cfg_scan's tiers, the HD cvars and HD misses command, Review mode, Launch Preview, the steam-ID ds_hud_deathmsg block line, command_suggest.js.
  • Fixed on the way: the runtime batch's decal flush still sent dodstudio_clear_decals, and cfg_scan's refused list still had dev's dodstudio_batch / _schedule / _spray.
  • dodstudio_pov_live_bob is now ds_view_use_cl_bob (the user's final pick; Rename the in-game commands: area as the second word (spec_, hud_, world_...), and a shorter prefix #555's table says ds_view_bob). Its help (Commands.txt, the commands doc, pov_live_bob.rs) now says what 0 does: the bob the demo recorded, from the recording player's own settings. 1 uses your cl_bob / cl_bobcycle / cl_bobup. Behaviour didn't change, and the name is still in one constant (pov_live_bob::NAME).
  • Docs: docs/, the READMEs, CLAUDE.md's console-name rule (it now names the areas) and the 0.2.0 release notes.
  • Unchanged on purpose: file and folder names (dodstudio_hd, dodstudio_ui, dodstudio_helper.cfg, dodstudio_batch.txt, the DLL and log names), pipe names, the -dodstudio_start_behind launch flag, and the doc's own file name.
  • Removes five .log files an earlier commit here added by mistake.

Old names

  • No aliases: the old names stop working in the game.
  • Studio's settings.json: Initial Commands, Scheduled Commands and every command profile are rewritten on load, each old name straight to its new one. Projects hold no commands.
  • The in-game window's own settings.cfg: old lines are read as the new names, and the file is rewritten once. Layouts edited under the old DLL keep working.
  • The game's own .cfg files are never written. A warning section, "These DoD Studio commands have new names", lists any config line (binds and aliases too) or command-list entry that still uses an old name, next to its new one.
  • Type-ahead: typing dodstudio_hide_sc suggests ds_hud_hide_scoreboard.

Merge order

#714, #717, #758, #882, #885 and #707 add or use names. Each takes its new name from the #555 table when it next merges dev after this one.

Tests (local)

  • cargo test --workspace --locked: 1827 passed.
  • cargo test -p goldsrc-hooks --target i686-pc-windows-msvc --lib: 679 passed.
  • clippy 1.98.1 (workspace, and the i686 hook) and fmt are clean.
  • npm run test:unit: 589 passed.
  • Playwright: 299 passed.

To check in game (PRE and POST)

  1. The console and type-ahead list only the new ds_* names, and ds_debug_status works.
  2. A settings.cfg with dodstudio_ lines applies on launch and comes back with the new names (e.g. ds_spec_hide_bars, ds_ui_viewdemo_in_panel).
  3. A Studio batch still sets ds_capture_run_in_background, ds_spec_target and ds_spec_lock, and Flush Decals still clears decals at each seek (ds_map_clear_decals).
  4. Review mode (ds_demo_review), Launch Preview and the Highlights tab still work.
  5. HD: ds_hd_enabled, ds_hd_style, and the HD misses view after a fresh ds_debug_hd_misses.
  6. The DoD Studio window's Settings and Commands tabs show the new names.

Test DLL: local\test-555\.

Closes #555

🤖 Generated with Claude Code

Every cvar and command the hook registers now starts ds_; the rest of each
name is unchanged (dodstudio_hide_scoreboard is ds_hide_scoreboard). Only the
prefix: the area-as-second-word layout from #555 is not part of this.

No aliases: the old names stop working in the game. To soften that:
- Studio's settings.json moves Initial Commands, Scheduled Commands and every
  command profile to the new names on load (native::patch::console_prefix).
- The in-game window's own files (dodstudio_ui settings.cfg, edited layouts'
  buttons and check boxes) read the old prefix as the new one; settings.cfg is
  written back with the new names.
- The game's own .cfg files are never written: cfg_scan reports each line that
  still uses an old name, with its replacement, in the Commands tab warnings,
  and does the same for an old name typed into either command list.
- The Commands type-ahead turns a typed dodstudio_ into ds_.

Folder, file, pipe and log names that start dodstudio_ are unchanged.
docs/dodstudio_commands.md has the old -> new table for release notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ccoventry and others added 3 commits October 11, 2026 23:04
# Conflicts:
#	docs/dodstudio_commands.md
#	docs/goldsrc_dod_quirks.md
#	goldsrc-hooks/README.md
#	goldsrc-hooks/src/demo_seek.rs
#	goldsrc-hooks/src/lib.rs
#	goldsrc-hooks/ui/Commands.txt
#	studio/src/console_commands_data.js
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@ccoventry

Copy link
Copy Markdown
Owner Author

Updated from dev (merge dfef7a3 + rustfmt ec87dd2). Three names merged since this PR opened had shipped on dev with the old prefix, so they are renamed here the same way and added to the migration:

merged on dev now
dodstudio_batch (#702) ds_batch
dodstudio_debug_keep_detail_cache (#718) ds_debug_keep_detail_cache
dodstudio_show_demo_scope (#721) ds_show_demo_scope
  • console_prefix::RENAMED has 48 names (its comment says which three came after the freeze), so Studio's settings and the cfg warnings migrate them too; the doc's "Renamed from" table has 48 rows.
  • Renamed in every literal mention: batch.rs, demo_scope.rs, detail_cache.rs, hlae_window.rs, cfg_scan.rs's tiers, runtime_batch.rs, command_suggest.js, Commands.txt, dodstudio_commands.md, command_tiers.md, goldsrc_hud_elements.md, the hooks README and lib.rs; console_commands_data.js regenerated.
  • Kept on purpose, as before: the -dodstudio_start_behind launch-line flag (not a console name), the dodstudio-batch 1 / dodstudio-schedule 1 file headers, %APPDATA%\dod-studio\dodstudio_batch.txt, and every file, folder, pipe and log name.
  • Checks: cargo tests 1420, JS 373, clippy (host and i686) and rustfmt clean. Test DLL: local\test-719\.

If #722 merges before this, dodstudio_stay_behind_while_capturing needs the same treatment (one more RENAMED entry and the literal mentions).

dev added dodstudio_hide_headshot_red_screen, dodstudio_hide_screen_shake
(#606) and dodstudio_stay_behind_while_capturing (#434). They are renamed
like the rest and join console_prefix::RENAMED and the renamed-names table,
since they shipped with the old prefix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ccoventry

Copy link
Copy Markdown
Owner Author

Test pass 2026-10-13: merged dev in, taking dev's side of every conflict and renaming what dev brought in to ds_. dev's three new names (hide_headshot_red_screen, hide_screen_shake #606, stay_behind_while_capturing #434) shipped with the old prefix, so they joined console_prefix::RENAMED and the renamed-names table. .github/release_notes/0.2.0.md keeps the dodstudio_ names, because that's what 0.2.0 ships with. CI green; locally hooks i686 509, desktop-studio 117, npm unit 373, all clippy clean.
Still to rename when this lands last: names added by open PRs: dodstudio_pov_live_bob (#710); dodstudio_hide_center_text, dodstudio_hide_spectator_text, dodstudio_hud_map_hide_speaker (#714); dodstudio_hide_menus, dodstudio_hide_server_hud_text (#717); dodstudio_spray (#732, used by #740); dodstudio_debug_cloak_instead (#737); dodstudio_spec_deathcam (#749). Doc and help text that uses the old prefix: dodstudio_deathmsg font/scale (#731, #734), dodstudio_spray players (#740), plus whatever #752 and later add.
Live test still needed: PRE and POST (Brain account).

Conflicts resolved to dev's code; the rename of dev's new names follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The prefix-only names (ds_hide_scoreboard) never shipped; every
dodstudio_ name now maps straight to the signed-off table on #555:
ds_ + area (spec, hud, view, player, map, sound, demo, capture, ui,
hd, debug) + action.

- goldsrc-hooks/src/old_names.rs holds the one old -> new table; the
  hook reads it for its settings.cfg and layouts, native compiles it in
  for Studio's settings migration and the cfg_scan warning, and
  studio/src/console_renames.js is the frontend's copy (a test checks
  they agree, and that every new name is registered).
- Type-ahead lists the new names for an old name typed the old way.
- Commands.txt is grouped by the new areas (VIEW, PLAYERS, MAP, SOUND,
  CAPTURE added); console_commands_data.js regenerated.
- ds_view_bob's help says what 0 does: the recorder's own bob.
- runtime_batch's decal flush and cfg_scan's banned list used the old
  names; both fixed.
- The five .log files the earlier commit added are removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ccoventry ccoventry changed the title Shorten the in-game console prefix to ds_ (part of #555) In-game commands get shorter names grouped by what they change: ds_hud_hide_scoreboard and so on (#555) Oct 20, 2026
The user's final pick over ds_view_bob. Help: the view and gun bob by
your cl_bob, cl_bobcycle and cl_bobup; 0 is the bob the demo recorded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ccoventry

Copy link
Copy Markdown
Owner Author

In-game check, head 4aaed7f (dev merged in), DLL local\test-555\, Brain account, game_probe on POST and PRE with -addons: PASS.

The user started the check on POST: ds_debug_status worked with every line under the new names, HD was on, and the old names did nothing. The rest ran unattended:

Check POST PRE
cvarlist ds_ / cmdlist ds_ 41 cvars, 19 commands same
cvarlist dodstudio / cmdlist dodstudio 0 / 0 0 / 0
Console type-ahead for ds lists ds_debug_position, ds_spec_target, ds_player_spray, ds_capture_batch, … —
settings.cfg with old names rewritten to new names, applied rewritten (e.g. ds_hud_hide_scoreboard 1, ds_spec_lock 1), applied (ds_debug_status: ds_hud_hide_scoreboard = 1)
In-game window, Settings tab boxes reflect settings.cfg same
In-game window, Commands tab new names and areas (SPECTATING: ds_spec_match_pov, ds_spec_lock, …) same
ds_hud_deathmsg scale 2, ds_spec_target, ds_map_clear_decals, ds_debug_hd_misses, ds_hd_style, ds_hd_enabled, ds_capture_run_in_background, ds_demo_seek_by 5 all answer, no "Unknown command" same (PRE cleared 11 decals)

Studio side:

  • settings.json migrated on first start. Every old name in Initial / Scheduled Commands and the profiles now reads with its new name (dodstudio_clear_decals → ds_map_clear_decals, dodstudio_show_demo_scope → ds_hud_show_scope, …). The only dodstudio_ left are the DLL file name and a folder path.
  • A scan of native/, studio/, goldsrc-hooks/ and docs/ for the 60 old names finds none outside the migration code, the tests, the renamed table and file names.

Not run live: a Studio capture batch with Flush Decals, Review highlights and Launch Preview (steps 4 and 7). They write clips into the user's capture folders, so they wait for the user. The commands they send are covered by the unit tests and the scan above.

POST's settings.cfg still holds dodstudio_demo_list_hide_counts 1, a name from before #792 that never shipped. It's harmless (not in the table, so it stays as it is), and the user can delete the line.

Backups of everything the first start rewrites: local\test-555\backup\ (RESTORE.md).

🤖 Generated with Claude Code

@ccoventry

Copy link
Copy Markdown
Owner Author

Studio capture batch with the new names: PASS (user's run, POST, Seek Between Clips + Flush Decals on; 3 demos, 5 takes, 273 s). The hook log shows Studio sending every batch command under its new name: ds_capture_batch start, ds_map_clear_decals at each jump (removed 167, 25, 812, 5, 1108, 7, 227, 6 decals), ds_spec_target putting the HLTV camera on players 7 and 5 (one 'there is no player 7' right after a demo load, then on the player at the clip's jump, as before the rename). No 'Unknown command' and no old dodstudio_ console name in the game's console or the hook log during the batch.

@ccoventry
ccoventry merged commit 8c8e2cc into dev Oct 21, 2026
5 checks passed
@ccoventry
ccoventry deleted the chore/ds-prefix-555 branch October 21, 2026 05:10
ccoventry added a commit that referenced this pull request Oct 21, 2026
…_progress

Dev's #719 renamed every console name to ds_<area>_...; this PR's
show_load_progress becomes ds_demo_show_load_progress per the #555 table.
Commands.txt and dodstudio_commands.md take dev's side with the row
re-added under DEMO PLAYBACK; console_commands_data.js regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ccoventry added a commit that referenced this pull request Oct 21, 2026
Dev's #719 renamed every console name; the console lock's tests, docs
and comments now name ds_demo_seek_to, ds_spec_target, ds_demo_review
and the rest per the #555 table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ccoventry added a commit that referenced this pull request Oct 21, 2026
Brings in #719's ds_<area>_ rename. The settings this PR adds take
their names from the signed-off table on #555:

- hide_spectator_text -> ds_spec_hide_text
- hide_center_text -> ds_hud_hide_center_text
- hud_map_hide_speaker -> ds_hud_overview_hide_speaker

ds_hud_overview_team_marker gains 2 (no camera icon). None of these
names shipped, so old_names.rs gets no entries; console_prefix's test
lists them as names added since #555. Commands.txt, dodstudio_commands.md
and console_commands_data.js (regenerated) carry the new names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ccoventry added a commit that referenced this pull request Oct 21, 2026
After #719 the R&D cvar is ds_debug_restyled_health (the #555 table).
Commands.txt and dodstudio_commands.md take dev's side with the row
re-added; console_commands_data.js regenerated; the name is listed in
console_prefix's NEW_SINCE_555.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ccoventry added a commit that referenced this pull request Oct 21, 2026
After #719 the R&D cvar is ds_debug_log_gun_lowered (the #555 table).
lib.rs keeps dev's module list with gun_log in order; Commands.txt takes
dev's side with the entry re-added; docs/dodstudio_commands.md gets the
row it never had; console_commands_data.js regenerated; the name is
listed in console_prefix's NEW_SINCE_555.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ccoventry added a commit that referenced this pull request Oct 22, 2026
…use ds_capture_batch

hold_command sent the old dodstudio_batch name, which the hook no longer registers since #719, so hold and go did nothing; it now uses runtime_batch::BATCH_COMMAND (with a test). Commands.txt: dev's file with this branch's hold|go.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rename the in-game commands: area as the second word (spec_, hud_, world_...), and a shorter prefix

1 participant