Automated and manual HTTP traffic coloring with batch context-menu actions and a settings UI.
- Rule-Based Coloring: Implements automated coloring rules based on response metadata (status, content-type).
- Batch Processing: Allows colorizing multiple selected requests simultaneously via context menus.
- Auto-Coloring: Background poller identifies and colors new history items based on response metadata.
- Backend (QuickJS): Handles the auto-coloring poller, GraphQL mutations, and RPC for settings.
- Frontend: Provides the settings UI and registers command/menu items.
- API: Communicates via Caido's plugin RPC system for settings and selection processing.
- Manual: User selects rows -> Frontend calls
applyCrayonColorsRPC -> Backend fetches response details -> Backend executes GraphQLupdateRequestMetadata. - Auto: Backend poller query
sdk.requests-> Checks Content-Type/Status -> Executes GraphQLupdateRequestMetadata.
Crayon/
├── src/
│ ├── backend/
│ │ └── src/index.ts # Poller logic, GraphQL mutations, RPC handlers
│ └── frontend/
│ ├── index.ts # Settings slot registration, command/menu setup
│ └── src/
│ └── components/
│ └── Configuration.vue # Vue settings UI + preview
├── dist/ # Compiled JavaScript (QuickJS compatible)
├── scripts/
│ └── package.mjs # Plugin packaging script
├── manifest.json # Plugin definition and permissions
└── package.json # Build scripts and dependencies
| Package | Purpose |
|---|---|
src/backend/ |
core logic, poller, graphql integration |
src/frontend/ |
settings dashboard, live preview, commands |
@caido/sdk-backend |
Caido backend plugin types |
@caido/sdk-frontend |
Caido frontend plugin types |
- No
console.info: Usesdk.console.logorwarn/error(QuickJS backend limitation). - GraphQL Error Surfacing: Always check for
errorsarray in GraphQL responses to avoid silent failures. - Responsive UI: Settings UI must be full-width and centered with a live preview panel.
- Persistence: fallback to in-memory persistence when durable storage is unavailable.
TypeScript | Vue 3 | Bun | Caido SDK 0.55+
# Install dependencies
bun install
# Build TypeScript to JS
bun run build
# Package for Caido (.zip)
bun run packageThe resulting dist/plugin_package.zip can be installed directly into Caido.
To publish a new version of the plugin, follow these steps:
- Bump Version: Update the version in
package.jsonandmanifest.json."version": "1.0.x"
- Commit and Push:
git add package.json manifest.json git commit -m "chore: bump version to 1.0.x" git push origin main - Create Tag: Push a tag matching
v*to trigger the release workflow.git tag v1.0.x git push origin v1.0.x
- Automated Release: GitHub Actions will automatically:
- Build the plugin.
- Sign the package using the
PRIVATE_KEYsecret. - Create a new GitHub release with the signed
plugin_package.zip.