Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Papi-CaosNew to Visual Studio Code? Get it now.
Papi-Caos

Papi-Caos

nicosmartworking

|
1 install
| (0) | Free
Vuoi sapere quanto vale la tua auto?
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Papi-Virus

A reversible invasion of your local videos, each with a numbered companion audio track. Version 0.2.3 starts directly in your real editable code editor, without opening a tab. It displays animated PNG frames extracted from your videos; no demo cats or unrelated artwork are used.

Add videos and audio

Place your files here, then Stop and Start to rescan:

media/
  videos/
    video1.mp4
    video4.mp4
  sounds/
    audio1.mp3
    audio4.mp3

video1.mp4 plays with audio1.mp3; video4.mp4 plays with audio4.mp3 (or audio4.mp4). Audio companions can also live beside the video in media/videos. Files starting with audio are never spawned as visible videos.

The extension scans media/videos automatically on every manual Start. There is no manifest to maintain. Supported video containers: MP4 and WebM. Audio lookup checks media/sounds first, then media/videos, preferring MP3 over MP4, WAV, OGG, WebM and M4A. Names are matched without case sensitivity. For a video not named videoN, use its basename for the companion (for example holiday.mp4 with holiday.mp3 in sounds).

Only files inside those local folders are accepted. Missing audio leaves the video silent; an empty video folder reports an actionable message. Empty files, links escaping a media directory and files larger than 256 MiB are rejected. Discovery is bounded to 100 videos. The old memes.json and customAssets setting are no longer used. Legacy artwork stays in the development tree but is excluded from the new VSIX.

The current test files are media/videos/video4.mp4 and media/sounds/audio4.mp3. No real audio4.mp4 was present during development; numbered MP4 companion discovery is covered by a separate fixture test.

Play in the real editor

Run Papi-Virus: Start Meme Virus while a text file is open. It attaches animated frames from your videos directly to the real code editor, keeps the same editor focused, and never opens a Webview or another tab. A saved renderMode: fullChaos setting from 0.2.0 cannot redirect normal Start to a panel.

Official VS Code text decorations do not contain MP4 players or audio. Like the local cat-clapping extension, Papi-Virus now uses a separate native audio backend while the decorations reproduce the video visually as an 8 fps PNG sequence, with numbered companion audio played separately by the native system player, using supported image attachments. It is not an embedded MP4 player. Each video instance has an independent playback position and moves over visible lines; you can keep typing. Three prepared widths (120/200/280 px) allow size changes while preserving aspect ratio. Rotations remain a Webview-only feature. Margins balance image baselines so the text stays aligned; fonts, wrapping and zoom can affect approximate placement and hit areas.

The prepared frames for video4.mp4 are already included. To add/change videos in development, copy them into media/videos, then run:

npm run prepare:videos

Compilation, F5's pre-launch build and VSIX packaging also run that cached preparation step. ffmpeg and ffprobe are needed only to prepare new/changed files during development. Runtime never spawns either process, modifies video files or writes caches. Identical prepared media skip decoding; changed/unprepared files are excluded from native rendering until rebuilt. Short clips are recommended; preparation is bounded to the first 120 seconds at 8 fps. The package includes prepared frames and PCM audio, so users installing the VSIX need no ffmpeg.

The only animated caption is:

vuoi sapere quanto vale la tua auto ?

Five escalation phases and movement remain: 0-10 seconds (1 video), 10-25 (up to 5), 25-45 (up to 12), 45-70 (up to 20), then the configured maximum. Progress pauses when the window is unfocused or no text editor is active. Switching files clears old decorations and follows the new editor. No document contents are changed.

Use Papi-Virus: Stop Meme Virus, Emergency Stop, the status bar PAPI // STOP, or Ctrl+Alt+Shift+Escape (Cmd+Alt+Shift+Escape on macOS). Stop removes all attachments, captions and timers immediately. No automatic restart occurs.

Explicit optional Full Chaos

Papi-Virus: Start Full Chaos Mode is the only command that opens a separate video player. Use it explicitly if actual MP4/WebM playback with numbered companion audio is wanted. The code backdrop in that mode is a bounded local read-only snapshot; the normal Start command always stays in your real editor.

Companion audio

Companion audio is requested by default in both Editor Mode and explicit Full Chaos. Editor Mode uses the same backend as cat-clapping: Windows PowerShell started with windowsHide:true, -NoProfile and -NonInteractive, then System.Media.SoundPlayer playing prepared PCM WAV. No extra editor tab or player window opens. macOS uses afplay; Linux tries paplay and then aplay. The extension is marked as a UI extension so native audio runs on the local machine even with remote workspaces. Video's embedded audio is always muted, so it cannot mix with the numbered companion. Disable papiVirus.enableAudio to start silently, or mute from the panel.

In native Editor Mode there is no browser autoplay gate. Windows volume is applied to PCM samples in memory; the helper receives the WAV over stdin, so it writes no temporary audio files and never interpolates a media filename into a PowerShell command. Each visible video copy can now own a separate audio process, including repeated copies of the same numbered audio. Voices start on independent clocks, loop, and are terminated on pause, owner removal, Stop, settings changes and deactivation. Resume preserves each voice clock, while new starts are staggered. audio.maxSimultaneous bounds the total number of processes, including duplicates. SoundPlayer restart timing is approximate, rather than sample-accurate. On macOS/Linux the fallback players use system volume and restart from the beginning on resume.

MP3/MP4 companions are decoded to 16-bit PCM WAV during npm run prepare:videos (also called by compile, F5 and packaging), using ffmpeg only at build time. The source media stay unchanged. The supplied audio4.mp3 has its WAV already bundled; no runtime ffmpeg or installation is needed. If prepared audio is absent/stale or the native audio device/player fails, visuals continue and errors go to Output > Papi-Virus.

In explicit Full Chaos, browsers may reject sound until an actual user gesture. If needed, click Abilita audio inside the panel. Riproduci video appears if video playback itself requires a gesture. No browser playback restrictions are bypassed.

Audio escalation

The audio grows with the same five visual phases. Copies of the same audio are intentionally allowed to overlap, with separate playback clocks. A delayed voice starts its own audio rather than seeking into synchronization with an existing copy. This also applies in the optional Webview.

Active session time Phase Maximum voices (default settings) Minimum gap between queued starts
0-10 s Patient Zero 1 1200 ms
10-25 s Infection 2 900 ms
25-45 s Outbreak 4 550 ms
45-70 s Meme Apocalypse 6 300 ms
70 s onward PAPI OVERLOAD 8 180 ms

These are upper bounds: voices need visible video instances and paired audio. Normal video spawn times already differ; simultaneous event spawns additionally queue their voices so a chorus does not begin in unison. A stalled host starts at most one queued voice per update rather than replaying a burst of missed starts. The default ceiling is 8; papiVirus.audio.maxSimultaneous can lower it or raise the overload limit up to 12. A lower saved user value is honored. Volume stays at the configured per-voice level; escalation increases overlapping voices, not the volume setting.

Stop/Emergency Stop closes all overlapping players immediately. Blur and absence of an active editor pause native playback. No per-voice timers or delayed callbacks can start another player after Stop.

Codec support depends on the installed VS Code build. H.264 MP4 / VP8 WebM and MP3 companions are recommended. An MP4 audio container with AAC may not decode in VS Code; use MP3 if an audio error appears. Unsupported video is hidden with an error message, never replaced by a demo image. The supplied AV1 video4 and MP3 companion were also exercised in a real VS Code 1.95.3 Webview.

Settings

All keys are prefixed with papiVirus.. Settings changes stop the current session; Start again to apply them.

Setting Default Meaning
enabled true Permit manual Start; never auto-start
intensity normal chill / normal / chaotic
maxMemes 20 Maximum visible videos, 1-60
spawnInterval 0 Phase defaults; otherwise milliseconds
animationSpeed 1 Motion multiplier, 0.25-3
enableAudio true Request numbered companion audio
audioVolume 0.25 Companion volume, 0-1
audio.enabled false Legacy enable alias; either enable flag allows sound
audio.volume 0.25 Overrides audioVolume if explicitly set
audio.maxSimultaneous 8 Total overlapping voices including duplicates, 1-12
enableHalloweenEvents true Rare rearrangements of your own videos
renderMode editor Normal Start stays native; Full Chaos requires its explicit command

Develop and package

Requires Node.js 22+ and VS Code 1.95+.

npm ci
npm run compile
npm test
npm run test:integration
npm run test:audio   # real Windows SoundPlayer smoke test; briefly overlaps two copies of audio4
npm run package

Open the folder in VS Code and press F5 using the included launch configuration. Run Start in the Extension Development Host. npm run package creates papi-virus-0.2.3.vsix using @vscode/vsce. Install it with Extensions > ... > Install from VSIX. Add your files to this project's media folders before packaging to include them; changing the development folder does not change a previously installed VSIX. For Marketplace publication, set your own publisher ID and repository URL.

For a local isolated integration run in PowerShell:

$env:VSCODE_EXECUTABLE_PATH = "$env:LOCALAPPDATA/Programs/Microsoft VS Code/Code.exe"
npm run test:integration

Optional visual/browser review: set PAPI_VISUAL_REVIEW=1 and PAPI_CDP_PORT=9222 in that environment before launching the integration tests. During the timed session, node test/capture.cjs video-review captures rendering/media diagnostics; node test/video-browser.cjs exercises the real audio button and checks video4/audio4 playback. These are development-only tools, excluded from the VSIX. The audio browser test applies only during the explicitly opened Full Chaos session.

Tests cover video discovery, numbered MP3/MP4 matching, missing audio, rescanning, caption replacement, independent overlapping voice clocks, staggered starts, autoplay rejection, pause/disposal, five audio and visual phases, population limits, Start idempotency, panel close and unchanged documents. See test/MANUAL.md for additional checks.

Privacy and licensing

Runtime code never edits or saves documents, installs software, sends network requests, or records analytics. Native audio explicitly launches a session-owned system player (PowerShell SoundPlayer on Windows); Stop terminates it. It does not run user-provided shell commands, change execution policy or install players. Only explicitly starting the stage reads a bounded local snapshot of the active code document for the backdrop. Media resources use VS Code's local Webview resource service; no external media URL is fetched. Stop and deactivation dispose all timers, decorations and media. Frame preparation is a development/build operation, never runtime behavior.

Extension source is MIT licensed. User-supplied videos and audio retain their own licensing; they are not re-licensed by the extension's source license.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft