gitmyhub

squash

TypeScript ★ 0 updated 1mo ago

Turn a messy bug report or screen recording into a clean, reproducible ticket. Built with Next.js, Convex, and GPT-5.4 vision.

Turns a messy bug report or screen recording into a clean, structured ticket with reproduction steps, using AI text and vision analysis.

Next.jsReactConvexTypeScriptTailwind CSSsetup: moderatecomplexity 3/5

Squash turns a messy bug report into a clean, ready to file ticket. You can paste in a rambling Slack message, a support note, or a voice note transcript, or you can record your screen while reproducing the bug, and Squash returns a structured ticket with steps to reproduce, expected versus actual behavior, environment details, severity, and a note on what information is still missing before a developer could start fixing it.

The core problem it addresses is that writing accurate steps to reproduce a bug is tedious and often skipped, so reports bounce back and forth between people asking for more detail. Squash tries to do that conversion in one step, with no template required. For screen recordings specifically, it samples a handful of frames from the capture and uses a vision model to figure out what steps happened on screen, rather than requiring the person to type them out.

The whole pipeline runs inside Next.js and Convex without a separate media processing server. The browser captures the screen and grabs downscaled frames using a canvas, those frames upload to Convex file storage, and a Convex action calls the AI model to generate and stream the ticket fields onto the screen as they are written.

It is built with Next.js and React for the frontend, Convex for the database, file storage, and realtime updates, GPT-5.4 for both text structuring and vision based analysis of screen recordings, and Tailwind CSS for styling. Running it locally requires Node 18 or newer, a Convex account, and an OpenAI compatible API key, after which you install dependencies, start a Convex dev deployment, set your model credentials, and run the app. It can also open a prefilled GitHub issue with one click if you set a repo environment variable. The project is released under the MIT license.

Where it fits