paintplus: vendor the app source and rename from EditmaskwithAI

Bring the full EditmaskwithAI application into the repo under paintplus/
(429 files) so the service is self-contained — the installer copies the
vendored source to ~/docker/paintplus/src instead of cloning at runtime.

Rename to PaintPlus (service + branding; app logic untouched):
- services/editmaskwithai.sh -> services/paintplus.sh (register_service
  paintplus, install_paintplus, ~/docker/paintplus, Caddy paintplus:8000,
  Authelia option preserved)
- container names -> paintplus across docker-compose*.yml; dev network
  -> paintplus-network
- browser <title> -> "PaintPlus - AI Image Editor"; README heading ->
  PaintPlus with upstream provenance note
- README utilities table: editmaskwithai -> paintplus

Backend/frontend code (help strings referencing the old container name,
the ai_photo_edit.db filename) is intentionally left as-is to avoid
touching application logic.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nb2vJ8W7bHKx1JXVvpCraH
This commit is contained in:
Claude
2026-06-26 05:48:43 +00:00
parent b4e8ba2a79
commit 084922afaa
431 changed files with 87396 additions and 77 deletions
@@ -0,0 +1,36 @@
import config from './../../config.js';
import Dialog_class from './../../libs/popup.js';
class Help_about_class {
constructor() {
this.POP = new Dialog_class();
}
//about
about() {
var email = 'www.viliusl@gmail.com';
var settings = {
title: 'About',
params: [
{title: "", html: '<img style="width:64px;" class="about-logo" alt="" src="images/logo-colors.png" />'},
{title: "Name:", html: '<span class="about-name">PaintPlus</span>'},
{title: "Version:", value: VERSION},
{title: "Description:", value: "Layer-based image editor with AI tools."},
{title: "", html: '<hr style="margin:8px 0;border-color:#444;">'},
{title: "Base:", html: '<a href="https://github.com/viliusle/miniPaint" target="_blank">miniPaint</a> by ViliusL'},
{title: "AI Erase:", html: 'LaMa (Samsung Research) via <a href="https://github.com/enesmsahin/simple-lama-inpainting" target="_blank">simple-lama-inpainting</a>'},
{title: "Bg Removal:", html: '<a href="https://github.com/danielgatis/rembg" target="_blank">rembg</a> / U2Net / OpenCV'},
{title: "Smart Select:", html: '<a href="https://github.com/facebookresearch/segment-anything" target="_blank">SAM</a> (Meta AI)'},
{title: "Remote AI:", html: 'InvokeAI · ComfyUI · OpenAI (user-configured)'},
{title: "", html: '<hr style="margin:8px 0;border-color:#444;">'},
{title: "GitHub:", html: '<a href="https://github.com/outis1one/EditmaskwithAI" target="_blank">outis1one/EditmaskwithAI</a>'},
],
};
this.POP.show(settings);
}
}
export default Help_about_class;
@@ -0,0 +1,44 @@
import Dialog_class from './../../libs/popup.js';
class Help_shortcuts_class {
constructor() {
this.POP = new Dialog_class();
}
//shortcuts
shortcuts() {
var settings = {
title: 'Keyboard Shortcuts',
className: 'shortcuts',
params: [
{title: "F", value: 'Auto Adjust Colors'},
{title: "F3 / &#8984; + F", value: 'Search'},
{title: "Ctrl + C", value: 'Copy to Clipboard'},
{title: "D", value: 'Duplicate'},
{title: "S", value: 'Export'},
{title: "G", value: 'Grid on/off'},
{title: "I", value: 'Information'},
{title: "N", value: 'New layer'},
{title: "O", value: 'Open'},
{title: "CTRL + V", value: 'Paste'},
{title: "F10", value: 'Quick Load'},
{title: "F9", value: 'Quick Save'},
{title: "R", value: 'Resize'},
{title: "L", value: 'Rotate left'},
{title: "U", value: 'Ruler'},
{title: "Shift + S", value: 'Save As'},
{title: "CTRL + A", value: 'Select All'},
{title: "H", value: 'Shapes'},
{title: "T", value: 'Trim'},
{title: "CTRL + Z", value: 'Undo'},
{title: "Scroll up", value: 'Zoom in'},
{title: "Scroll down", value: 'Zoom out'},
],
};
this.POP.show(settings);
}
}
export default Help_shortcuts_class;