Kokon
A free, local alternative to Nano Banana and Generative Fill. Brush an area, type the change, and your own GPU does the edit. One installer for Windows, Mac and Linux.
Sovereign Photoshop alternative. Single HTML, no server, not subscription-based. Open · crop · rotate · resize · filter · text · brush · layers · export. Plus Ω autopilot.
Translation pending
DesignHTMLGitHub @sjgant80-hubOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
◊ FallMage · sovereign Photoshop wedge · single HTML · open · crop · rotate · resize · filter · text · brush · layers · Ω autopilot · prime 433 · MIT
Translation pending
Loading the full README.
Read the full README ↗The Photoshop wedge. One HTML file. No server. not subscription-based. Open · crop · rotate · resize · filter · text · brush · layers · export.
v1 · prime 1423 · MIT
Live: sjgant80-hub.github.io/fallmage Source: github.com/sjgant80-hub/fallmage
First tool of the FallStudio plan — the sovereign creative suite that replaces Adobe Creative Cloud one HTML file at a time.
Real image editing in one tab. Drop a photo (or paste from clipboard, or start a blank canvas), edit it, export.
| Tool | What it does | |
|---|---|---|
| ⤓ | Move | drag the active layer · arrow nudges · num inputs in props panel |
| ⊞ | Crop | drag a rectangle · release to crop the whole document |
| T | Text | click canvas · type · choose font/size/colour/weight/align · per-layer editable |
| ⌇ | Brush | paint on a paint layer · adjustable size & colour |
| ✗ | Erase | erase on the active paint layer · adjustable size |
| ⊙ | Eyedrop | click anywhere to capture the colour into brush + fill |
| ▤ | Fill | flood-fill the active paint layer with the chosen colour |
Brightness · Contrast · Saturation · Hue rotate · Blur · Sepia · Grayscale · Invert. Applied as a CSS filter for live preview. Bake to pixels when you want it permanent on the active image layer.
Image layers (one per opened file), paint layers (one per brush stroke session), text layers (multiple). Show/hide, reorder, opacity, delete. Top of the list is the top of the stack.
PNG · JPG (quality 0.92) · WEBP. Composites all visible layers, bakes the adjust filter, downloads.
20-state undo/redo stack. Pushed on every meaningful edit (crop, paint stroke, layer add/remove, bake, rotate/flip).
Press Ctrl+K. Type plain English. Examples that just work:
T0 (built-in) covers all of the above offline. T3 (any LLM key in Settings → Anthropic / Gemini free / OpenAI / OpenRouter) lets Ω parse arbitrary intents and call any of the actions (newDoc, adjust, text, crop) with parameters it picks.
instagram square instagram portrait instagram story twitter post linkedin post youtube thumbnail a4 portrait a4 landscape facebook cover tiktok business card
vintage noir pop warm cool fade invert mono dream
index.html from file:// or visit the live URL| Layer | Status |
|---|---|
| UI | runs from file:// |
| Compute | T0 in-browser Canvas · T2 your local Ollama · T3 your direct API call (Ω only) |
| Storage | IndexedDB for settings · documents kept in memory · export downloads |
| Mesh | BroadcastChannel('fall-signal') · responds to ping · postMessage API |
If you need those, you need Photoshop. If you don't, you need this.
index.html one file · ~75KB · vanilla JS · no deps
README.md this
LICENSE MIT
.nojekyll Pages legacy deploy
state.doc = { w, h, bg, layers[], adjust }image (loaded file, immutable img), paint (offscreen canvas), text (font + content)#c, apply adjust as a CSS filter on the canvas element (non-destructive); a separate #sel canvas draws selection bounds / crop rectangles#sel pointer events; state.tool is the active modetoBlob() → download#toolList with data-tool="x" and data-hint="x · k"keydown handler's mapstate.tool === 'x' in onPointerDown / onPointerMove / onPointerUprenderProps()Add to the FILTERS object — the 8 adjust properties summing to a vibe. The palette automatically picks it up.
Add to the PRESETS object — {w, h}. Palette picks it up. Ω auto-routes on substring match.
⚒ Part of the fall* estate