Skip to content

ChunkyFluid/PayCode

Repository files navigation

AdSpinner for Antigravity

A Kickbacks.ai-style sponsored status line for Google Antigravity IDE. While the agent is working, the dead "Thinking..." time in your peripheral vision becomes a rotating, clickable sponsored line in the status bar — with local impression and click tracking.

Install in Antigravity

Antigravity is a VS Code fork, so it accepts standard .vsix packages:

  1. Open Antigravity IDE.
  2. Open the Extensions panel (Ctrl+Shift+X).
  3. Click the ... menu (top right of the panel) → Install from VSIX...
  4. Select antigravity-adspinner-0.1.0.vsix.
  5. Reload when prompted.

Or from the command palette: Extensions: Install from VSIX...

How it behaves

  • Idle: nothing shown (configurable).
  • Agent working: the extension detects bursts of file edits/creates/renames that aren't coming from your keyboard, lights up a spinner + sponsored line in the status bar, and rotates creatives every 5 seconds (one Kickbacks-style impression window each).
  • Click the line to open the sponsor link (click logged).
  • Hover for live impression/click totals.

Commands (Ctrl+Shift+P)

Command What it does
AdSpinner: Toggle Sponsored Line Master on/off
AdSpinner: Show Impression / Click Stats Totals + per-ad breakdown
AdSpinner: Reset Stats Zero the counters
AdSpinner: Refresh Ad Feed Re-pull the remote feed
AdSpinner: Open Current Sponsor Link Same as clicking the line

Settings

Setting Default Notes
adspinner.enabled true Master switch
adspinner.feedUrl "" HTTPS URL returning [{"id","text","url"}]. Blank = bundled ads.json
adspinner.rotationSeconds 5 Impression window length
adspinner.onlyWhileAgentActive true false = always-on line
adspinner.activityWindowSeconds 12 How long the line lingers after the last detected agent activity
adspinner.spinnerPrefix true Animated braille spinner glyph

Serving your own ads

Point adspinner.feedUrl at any HTTPS endpoint returning:

[
  { "id": "linear-1", "text": "Linear — issue tracking that's actually fast", "url": "https://linear.app" }
]

Text is truncated to 64 chars (status bar real estate — fits the row or it isn't served). Impression/click counts live in extension globalState; wire recordImpression/recordClick in extension.js to a backend POST if you build a revenue pipeline.

Honest limitations

  • This is not inside the agent panel. Kickbacks works on Claude Code because Claude Code deliberately exposes spinnerVerbs in ~/.claude/settings.json. Antigravity's Gemini agent panel has no equivalent public hook, so no extension can rewrite its literal "Thinking..." text. The status bar is the closest sanctioned surface — and it's the same surface Kickbacks' own IDE extension uses.
  • Activity detection is heuristic. Non-keyboard document changes, file creates/deletes/renames, and terminal state changes count as "agent working." Big git operations or external file syncs can trigger it too. Tune activityWindowSeconds to taste.
  • No marketplace/revenue backend included. This is the client. The auction engine, advertiser portal, and payouts are the hard 90% — Kickbacks keeps theirs in a private repo for a reason. Note their code is proprietary source-available, so build your own backend rather than reusing theirs.

Packaging from source

npm install -g @vscode/vsce
vsce package --allow-missing-repository

About

PayCode - VS Code ad spinner extension and server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors