Show HN: Cheesy Mamas: Local only code editor with Git and Bash support
by LambriniWorks | 2025-06-30 03:53:28+00:00
Cheesy Mamas is a local first, multi tab code editor written in Python using PyQt6. It is designed for Linux systems and built around simplicity, transparency, and control. There is no telemetry, no sync, and no accounts. The editor runs entirely on your local machine using standard system tools and stays out of your way unless you ask for help.

The editor supports multiple files open at once, persistent tab state, live dirty tracking, and a dark UI. It includes syntax highlighting for Python, C, and LaTeX. A built in run button executes Python directly, compiles C with gcc, or runs pdflatex for LaTeX files. It also includes a Bash button to launch or edit a saved shell script. There is no plugin system and no background processes. All functionality is visible and inspectable in the interface.

The Git integration is the core design focus. Unlike most editors, which treat Git as a sidebar or rely on an external staging panel, Cheesy Mamas embeds Git version history directly beside each open file. When you open a file, the editor checks if it is part of a Git repository. If not, the first commit you make will automatically initialize a new Git repository in the current folder.

For each file, Cheesy Mamas retrieves its individual commit history using Git log limited to that path. This history appears in a vertical sidebar next to the editing pane. Selecting a commit loads that exact version of the file from Git and performs a diff against the current working version in memory. The editor highlights changed lines and overlays revert options directly into the document view.

When you click a past commit, the editor compares that version against your current working file. All changed lines are visually marked. You can click a "revert line" button next to any highlighted block to immediately undo that change using the older version. These changes are local until you save. This allows for a granular, low effort recovery flow without affecting unrelated files or requiring a full diff tool.

Right clicking a commit provides a context menu that lets you view the full unified diff, copy the full version of that commit to your clipboard, or revert the entire file to that point. These operations use standard Git plumbing internally and do not alter other files in the repository. Cheesy Mamas does not require you to commit or stage across all files. Each file's history and actions are isolated.

The editor is single instance by default. Opening a file from the file browser or terminal reuses the existing window and opens the file in a new tab. This is handled via a relay system that passes the file path to the existing running instance.

The UI is dark by default with soft gold highlights. There is no animation or decoration beyond what is needed for clarity. The editor warns on exit if any file is unsaved. Saving and Git commits are handled through dedicated buttons and keyboard shortcuts. The Bash button opens a terminal script from the config folder, or lets you write one if none exists.

Cheesy Mamas was built to solve a personal problem. Most editors assume the user is syncing code to a cloud service or using Git externally. They require plugins or navigation panels to access version history and rarely show diffs in context. Cheesy Mamas was designed to treat versioning as a natural part of editing, and to bring Git history as close to the cursor as possible without overwhelming the UI.

The project is fully offline, runs on Linux, and is installable via a simple shell script. It places the Python script and assets in `~/.local/share/CheesyMamas`, creates a `.desktop` entry, and integrates with your application menu. You can optionally set it as the default handler for `.py`, `.c`, `.tex`, and `.sh` files by editing the desktop file and uncommenting the `MimeType` field.

There is no account system and no sync. It’s a local program, designed to live where you live, and let you undo what needs undoing.