From f58237ccabdee7f5e394350d92f4a6ea1f40460b Mon Sep 17 00:00:00 2001 From: Ignacio Rivero Date: Mon, 22 Jun 2026 15:48:05 -0300 Subject: [PATCH] Made OCI compliant; monochrome icon added --- Containerfile | 29 +++++++++++++++++++++++++++++ app.py | 6 +++++- compose.yaml | 10 ++++++++++ static/icon512_monochrome.png | Bin 0 -> 11578 bytes static/manifest.json | 19 ++++++++++++++++++- 5 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 Containerfile create mode 100644 compose.yaml create mode 100644 static/icon512_monochrome.png diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..90ab869 --- /dev/null +++ b/Containerfile @@ -0,0 +1,29 @@ +FROM python:3.14-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PIP_NO_CACHE_DIR=1 + +WORKDIR /app + +# Optional but useful for Pillow runtime compatibility in slim images +RUN apt-get update && apt-get install -y --no-install-recommends \ + libjpeg62-turbo \ + zlib1g \ +&& rm -rf /var/lib/apt/lists/* + +COPY requirements.txt ./ +RUN pip install -r requirements.txt + +COPY . . + +# Non-root runtime user +RUN useradd -m -u 10001 catnote && chown -R catnote:catnote /app +USER catnote + +EXPOSE 5000 + +# BLEHD_SOCKET can be overridden at runtime +ENV BLEHD_SOCKET=/run/bleh/blehd.sock + +CMD ["python", "app.py", "--port", "5000"] diff --git a/app.py b/app.py index 171331f..780b91f 100644 --- a/app.py +++ b/app.py @@ -649,8 +649,12 @@ def icon_maskable(): def icon_rounded(): return send_from_directory('static', 'icon512_rounded.png') +@app.route('/icon512_monochrome.png') +def icon_monochrome(): + return send_from_directory('static', 'icon512_monochrome.png') + if __name__ == "__main__": parser = argparse.ArgumentParser(description='CatNote: Server for Markdown to MXW01 Cat Printer') parser.add_argument('-p', '--port', type=int, default=5000, help='Port to run the server on (default: 5000)') args = parser.parse_args() - app.run(host='0.0.0.0', port=args.port) \ No newline at end of file + app.run(host='0.0.0.0', port=args.port) diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..89997d0 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,10 @@ +services: + server: + build: . + ports: + - "8000:5000" + restart: unless-stopped + volumes: + - /run/bleh/blehd.sock:/run/bleh/blehd.sock:rw + group_add: + - "1001" diff --git a/static/icon512_monochrome.png b/static/icon512_monochrome.png new file mode 100644 index 0000000000000000000000000000000000000000..6b80b1a019ebffb075d8c0b6faafcd48e91ef96b GIT binary patch literal 11578 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�*ikvlD0_{a+@}6N&GEi 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 literal 0 HcmV?d00001 diff --git a/static/manifest.json b/static/manifest.json index 93c50c0..ffa9abe 100644 --- a/static/manifest.json +++ b/static/manifest.json @@ -1 +1,18 @@ -{"theme_color":"#22282c","background_color":"#22282c","icons":[{"purpose":"maskable","sizes":"512x512","src":"icon512_maskable.png","type":"image/png"},{"purpose":"any","sizes":"512x512","src":"icon512_rounded.png","type":"image/png"}],"orientation":"any","display":"standalone","dir":"auto","lang":"es-UY","start_url":"https://catnote.netpaws.cc","scope":"https://catnote.netpaws.cc","name":"CatNote","short_name":"CatNote","id":"cc.netpaws.catnote"} \ No newline at end of file +{ + "theme_color": "#22282c", + "background_color": "#22282c", + "icons": [ + { "purpose": "maskable", "sizes": "512x512", "src": "icon512_maskable.png", "type": "image/png" }, + { "purpose": "any", "sizes": "512x512", "src": "icon512_rounded.png", "type": "image/png" }, + { "purpose": "monochrome", "sizes": "512x512", "src": "icon512_monochrome.png", "type": "image/png" } + ], + "orientation": "any", + "display": "standalone", + "dir": "auto", + "lang": "es-UY", + "start_url": "https://catnote.netpaws.cc/", + "scope": "https://catnote.netpaws.cc/", + "name": "CatNote", + "short_name": "CatNote", + "id": "/" +}