Metadata-Version: 2.4
Name: chip-cnc
Version: 0.1.0
Summary: Type what you want carved. Chip designs it, checks it, and carves it on a FoxAlien XE-Ultra 8080 CNC — no CAM software, no G-code, no jargon.
Project-URL: Homepage, https://github.com/brettbergin/chip
Project-URL: Source, https://github.com/brettbergin/chip
Project-URL: Issues, https://github.com/brettbergin/chip/issues
Project-URL: Changelog, https://github.com/brettbergin/chip/blob/main/CHANGELOG.md
Project-URL: Releases, https://github.com/brettbergin/chip/releases
Author-email: Brett Bergin <brettberginbc@yahoo.com>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: ai,carving,cnc,foxalien,grbl,pydantic-ai,woodworking
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Win32 (MS Windows)
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Manufacturing
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
Requires-Python: >=3.12
Requires-Dist: fonttools>=4.50
Requires-Dist: keyring>=24.0
Requires-Dist: pillow>=10.0
Requires-Dist: platformdirs>=4.0
Requires-Dist: pydantic-ai>=2.0
Requires-Dist: pydantic-settings>=2.2
Requires-Dist: pydantic>=2.7
Requires-Dist: pyserial>=3.5
Requires-Dist: pyside6>=6.7
Requires-Dist: shapely>=2.0
Requires-Dist: sqlalchemy>=2.0
Requires-Dist: svgelements>=1.9
Requires-Dist: svgwrite>=1.4
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-qt>=4.4; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Requires-Dist: twine>=5.0; extra == 'dev'
Provides-Extra: trace
Requires-Dist: vtracer>=0.6; extra == 'trace'
Description-Content-Type: text/markdown

# Chip

**Type what you want carved. Chip does the rest.**

Chip is a desktop app that turns a plain-English sentence — *"I want a sign
that says The Hendersons with a pine tree on each side"* — into a carved piece
of wood on a [FoxAlien XE-Ultra 8080](https://www.foxalien.com/) CNC machine.

It is built for one very specific user: a retired carpenter in his 70s who
knows everything about wood and nothing about software. There are no file
formats, no coordinate systems, no G-code, and no settings panels in the main
flow. You describe the thing, look at a picture of it, tap the wood you
clamped down, follow a photo checklist, and press one big button.

> **Honesty section:** Chip is built for exactly one machine — the FoxAlien
> XE-Ultra 8080 (840 × 840 × 120 mm, GRBL/grblHAL over USB serial). Machine
> limits live in config so contributors can adapt it, but nothing else has
> been tested. If you have a different machine, expect to do some work.

## Install

**For the workshop PC (Windows):** download `ChipSetup-<version>.exe` from the
[latest release](https://github.com/brettbergin/chip/releases) and run it.
Windows SmartScreen will warn about an unknown publisher — click **More info →
Run anyway** (the exe is unsigned; this is expected).

**For technical users (any OS):**

```bash
pip install chip-cnc        # add 'chip-cnc[trace]' for picture tracing
chip                        # launches the app
chip --demo                 # full app with a simulated machine, no hardware needed
chip --self-check           # verifies the install, exits 0 when healthy
```

The PyPI package is `chip-cnc`; the import package is `chip`.

## What it does

- **Describe it:** type (or dictate with Win+H) what you want. An AI designer
  lays out text and art on your board. No API key or internet? Templates and
  manual editing still work; only the "ask for help designing" features gray out.
- **See it:** a true-to-size preview on a wood-textured board. Drag things
  around with big handles, or just type "make the name bigger".
- **Carve it:** the app walks through clamping, the right bit (with a photo),
  setting the start point, and probing — then streams the job with a giant
  STOP button on screen the whole time.

Everything technical — API keys, serial ports, feeds and speeds tables, logs,
firmware info — lives in a hidden Admin area for the person who set the app up.

## Safety disclaimer

CNC machines spin sharp tools with real force and can injure you and destroy
material. Chip adds software interlocks (homing/zeroing requirements, envelope
checks, probe confirmations, an always-visible stop), but **you** are
responsible for safe operation: eye protection, dust control, secure clamping,
and never leaving a running machine unattended. The software is provided
**as-is**, without warranty of any kind, per the [Apache-2.0 license](LICENSE).

## Development

```bash
git clone https://github.com/brettbergin/chip
cd chip
pip install hatch
hatch run test        # pytest (Qt runs offscreen)
hatch run lint        # ruff
hatch run typecheck   # mypy
hatch build           # sdist + wheel
```

See [CONTRIBUTING.md](CONTRIBUTING.md) for the ground rules and
[DECISIONS.md](DECISIONS.md) for the judgment-call log. The architecture in
one line: `pipeline/`, `models/`, `store/`, and the GRBL protocol code are
pure Python (no Qt) and headless-testable; `ui/` imports everything; nothing
imports `ui/`. A test enforces this.

## License

Apache-2.0 — see [LICENSE](LICENSE).
