npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@timoconnellaus/ai-ui-annotate-vite

v0.0.1

Published

Vite plugin for AI UI Annotate - enables component annotation during development.

Readme

@timoconnellaus/ai-ui-annotate-vite

Vite plugin for AI UI Annotate - enables component annotation during development.

Installation

npm install @timoconnellaus/ai-ui-annotate-vite --save-dev
# or
bun add -d @timoconnellaus/ai-ui-annotate-vite
# or
pnpm add -D @timoconnellaus/ai-ui-annotate-vite

Usage

Add the plugin to your vite.config.ts:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { aiUiAnnotate } from '@timoconnellaus/ai-ui-annotate-vite'

export default defineConfig({
  plugins: [
    react(),
    aiUiAnnotate()
  ]
})

Configuration

All configuration options are optional with sensible defaults:

aiUiAnnotate({
  // The hotkey to hold for enabling annotation mode
  // Default: 'alt'
  hotkey: 'alt',

  // WebSocket server port for receiving annotations
  // Default: 8234
  port: 8234,

  // Output directory for storing annotations (future use)
  // Default: '.ai-ui-annotate'
  outputDir: '.ai-ui-annotate'
})

Configuration Options

| Option | Type | Default | Description | |--------|------|---------|-------------| | hotkey | string | 'alt' | Key to hold for annotation mode. Known values: 'alt', 'option', 'ctrl', 'meta' | | port | number | 8234 | WebSocket server port (must be 1024-65535) | | outputDir | string | '.ai-ui-annotate' | Directory for storing annotations |

How It Works

The plugin automatically:

  1. Transforms JSX/TSX files - Injects data-component and data-source attributes to track component locations
  2. Starts a WebSocket server - Receives annotation data from the browser runtime
  3. Injects the runtime script - Adds the annotation UI to your development build

The plugin only activates during vite dev - production builds are unaffected.

Example

// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { aiUiAnnotate } from '@timoconnellaus/ai-ui-annotate-vite'

export default defineConfig({
  plugins: [
    react(),
    aiUiAnnotate({
      hotkey: 'ctrl',
      port: 9000
    })
  ]
})

Then run your dev server:

vite dev

Hold the configured hotkey (default: Alt) and click on any component to add an annotation.

Troubleshooting

Port already in use

If you see an error about the port being in use:

[AI UI Annotate] WebSocket server failed to start: port 8234 is already in use

Either stop the other process using that port, or configure a different port:

aiUiAnnotate({ port: 9000 })

Transform not working

If components aren't being annotated:

  1. Ensure the file has a .jsx, .tsx, .js, or .ts extension
  2. Check that the file is not in node_modules
  3. Verify you're running vite dev, not vite build

Hotkey not responding

  • Try a different hotkey: 'ctrl', 'meta', or 'option'
  • Check for browser extensions that might intercept the key
  • On macOS, 'option' is equivalent to 'alt'

WebSocket connection issues

If annotations aren't being saved:

  1. Check the browser console for connection errors
  2. Verify the WebSocket server started (look for [AI UI Annotate] WebSocket server started)
  3. Ensure no firewall is blocking the configured port

TypeScript

The plugin exports TypeScript types:

import { aiUiAnnotate, type VitePluginConfig } from '@timoconnellaus/ai-ui-annotate-vite'

const config: VitePluginConfig = {
  hotkey: 'ctrl',
  port: 9000
}

export default defineConfig({
  plugins: [aiUiAnnotate(config)]
})

License

MIT