Skip to content

Repository files navigation

VACNet Labeling Plus

Chrome Web Store Firefox Add-on CI license

A browser extension for Valve's CS2 VACNet clip labeling portal: the whole replay instead of a twelve second window, a player built for review, keyboard control, and a history of everything you have labeled.

Show screenshots

The wide layout: the replay on the left with the graded clip marked in red on the seek bar, the clip instructions and verdicts beside it.

Wide layout with the replay beside the clip instructions and verdict questions

Labeling history, behind the portal's own "Clips Labeled" counter.

Labeling history with session stats, filters and per clip verdicts

Labeling in fullscreen, without leaving the video.

Verdict panel over the video in fullscreen

Everything stays on your machine. No accounts, no analytics, no telemetry.

Features

The replay, not just the clip

  • Playback starts at the beginning of the replay, with the graded clip marked on the player's own seek bar and the flagged moment ticked.
  • Jump 10 or 30 seconds before the clip to watch the run-up, then jump back. You can check whether a suspect was already tracking someone through a wall before the moment you were shown.
  • Seek anywhere in the replay. The portal normally snaps you back into the clip a few times a second; that is switched off.
  • Loop the clip without the pause and stall the portal does between plays.

A player built for reviewing

  • Speeds up to 4x, and down to 0.1x, instead of the portal's 1x ceiling.
  • Frame stepping, tap to play or hold to speed up, and a slow motion replay of the flagged moment on one key.
  • Preview thumbnails when you scrub the seek bar.
  • Review controls sit in the control bar next to play and fullscreen, not bolted on underneath.
  • Theater mode, and a wide layout that puts the verdicts beside the video rather than under it.

Labeling

  • Verdict buttons work in fullscreen and theater, so you never have to drop out of the video to answer.
  • Submitting does not reload the page. The next clip is swapped in, so fullscreen and your playback position survive.
  • Set a default answer per question. Everything ships as Uncertain.
  • A watch coverage strip shows which parts of the clip you actually played, and warns you once if you answer confidently without having watched the flagged moment.
  • The clip details Valve renders but never shows you, Task ID, App and Match ID, are readable in the console.

Repeat clips

  • Clips are matched by replay and timestamp rather than task id, so a re-served clip is recognised even though its task id changed.
  • A notice above the player tells you when you last saw it and what you picked, and fills that verdict back in for you to confirm or change.
  • If the exact clip is new but you have judged another moment of the same replay, the most recent of those is offered instead, and the notice says so.
  • Click the notice for the full record: when, which task, what you answered, and how much of it you had watched.

History

  • Every clip you label is recorded behind the portal's own "Clips Labeled" counter, with session stats, filters and search.
  • Click any entry to open that raw replay at the graded window.
  • Export to JSON or CSV.
  • The toolbar popup shows the same history when the portal is not open.

Keyboard

  • The whole review runs from the keyboard: playback, seeking, frame stepping, volume, verdicts and submission.
  • Bindings resolve from the physical key, so they work on non-US layouts.
  • Rebindable in the settings panel, with a help overlay on Shift+/.

What it fixes

The portal works, but a few things in it are genuinely broken:

  • The clip details dialog can never open. The page builds a dialog bound to an element that is not on the page, so the code throws before it can show anything. That data is read and shown in the console instead.
  • Playback is capped at 1x. The player ships no rate above real time.
  • You cannot see what happened before the clip. A timer rewinds playback whenever it leaves the graded window and actively reverts backward seeks.
  • The clip restart stalls. At the end the page pauses, rewinds, waits half a second, then plays again.
  • The layout wastes a widescreen display. The video is pinned to a fixed height and the verdict panel to a fixed 500px, whatever your screen.
  • The fixed footer overlaps the page, and it holds the only Report Bad Clip control. That control moves into the console and the footer is hidden.
  • The "Submitting..." pill never clears unless the page reloads.

Install

Requirements: Firefox 128 or newer. The extension needs a content script running in the page's main world to switch off the playback clamp, and Firefox only gained that in 128. Chrome has no extra requirement.

Installing from a release zip instead

Grab the zip for your browser from the Releases page.

  • Chrome: open chrome://extensions, turn on Developer mode, and drag the chrome zip onto the page.
  • Firefox: open about:debugging#/runtime/this-firefox, choose Load Temporary Add-on, and select the firefox zip. Note that a temporary add-on is removed when Firefox restarts, which the store version is not.

Build from source

git clone https://github.com/luminary-cloud/vacnet-labeling-plus.git
cd vacnet-labeling-plus
npm install
npm run build
npm run build:firefox

Builds land in .output/chrome-mv3 and .output/firefox-mv3. npm run package typechecks and produces the store zips instead. See CONTRIBUTING.md for the project layout and conventions.

Shortcuts

Key Action Key Action
Space Tap to play or pause, hold for 2x Up Down Volume
K M Play or pause, mute Home End Clip start, clip end
Left Right Seek 5s - = or [ ] Playback rate
J L Seek 10s F T Fullscreen, theater
, . Frame step C V Clip start, flagged moment
Q Shift+Q 10s and 30s of run-up B Slow-motion replay
E Back to the clip G D Loop, open the raw replay
1 to 4 Toggle Not or Uncertain Shift+1 to Shift+4 Label as guilty
A S History, settings Shift+/ Keyboard help
Enter Proceed, then confirm Backspace Back to editing
Esc Close the open panel

Every binding except Space is rebindable. Space is fixed because it doubles as tap to play and hold to speed up.

Privacy

  • storage keeps your labeling history and settings in browser.storage.local.
  • https://www.counter-strike.net/* is the only host. The extension does not run anywhere else.

No analytics, no telemetry, and nothing is ever sent to the developer or to a third party. The one request the extension makes is posting your verdict to counter-strike.net when you confirm it, which is the submission the page would have made itself. Details in PRIVACY.md.

Contributing

Pull requests are welcome. See CONTRIBUTING.md.

Disclaimer

This extension is a quality of life layer over the labeling portal. It does not label clips for you, does not submit verdicts for you, and does not automate any part of the review.

Every answer is one you pick, and submitting is still two deliberate presses, Proceed then Confirm. A recalled verdict from a clip you have already seen is filled in for you to confirm or change, never sent on its own. There is no bulk labeling, no auto-advance, no scripted answering and there will not be one.

Reviewers are asked not to stream, record or share these clips, so there is no frame export, clip download or sharing feature either. The raw replay link opens a clip you were already assigned.

Counter-Strike, Counter-Strike 2 and VACNet are trademarks of Valve Corporation. This project is not affiliated with or endorsed by Valve.

License

MIT

About

Quality of life extension for Valve's CS2 VACNet clip labeling portal. Seek the whole replay instead of a twelve second window, a player built for review, full keyboard control, repeat clip recall and labeling history. Chrome and Firefox.

Topics

Resources

Contributing

Stars

5 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages