From 0186ac1945d2c3281e50f395773c0844a325f5df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sat, 15 Nov 2025 16:40:06 +0100 Subject: [PATCH 01/20] add laserweb dockerfile --- docker/laserweb4/Dockerfile | 16 ++++++++++++++++ docker/laserweb4/README.md | 6 ++++++ 2 files changed, 22 insertions(+) create mode 100644 docker/laserweb4/Dockerfile create mode 100644 docker/laserweb4/README.md diff --git a/docker/laserweb4/Dockerfile b/docker/laserweb4/Dockerfile new file mode 100644 index 0000000..492a702 --- /dev/null +++ b/docker/laserweb4/Dockerfile @@ -0,0 +1,16 @@ +FROM node:22-bookworm AS build + +RUN git clone https://github.com/ssendev/LaserWeb4 /opt/laserweb \ +&& cd /opt/laserweb \ +&& git checkout v4.1 \ +&& git submodule init \ +&& git submodule update + +WORKDIR /opt/laserweb +RUN npm ci --force +RUN npm run bundle-prod + +FROM nginx:alpine as frontend + +COPY --from=build /opt/laserweb/dist /usr/share/nginx/html +RUN chown -R nginx:nginx /usr/share/nginx/html \ No newline at end of file diff --git a/docker/laserweb4/README.md b/docker/laserweb4/README.md new file mode 100644 index 0000000..067e041 --- /dev/null +++ b/docker/laserweb4/README.md @@ -0,0 +1,6 @@ +This Image is built and used by [prind](.). + +# Laserweb4 packaged in Docker +Frontend only + +WIP \ No newline at end of file From 45f935a5a94975984b0b2d6f94cfa1950f80e43b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sat, 15 Nov 2025 16:48:03 +0100 Subject: [PATCH 02/20] add laserweb4 to workflows --- .github/workflows/image-build-and-publish-push.yaml | 2 ++ .github/workflows/image-build-and-publish-schedule.yaml | 1 + .github/workflows/image-build-review.yaml | 5 +++++ .github/workflows/image-docs-publish.yaml | 3 +++ 4 files changed, 11 insertions(+) diff --git a/.github/workflows/image-build-and-publish-push.yaml b/.github/workflows/image-build-and-publish-push.yaml index f6b4562..ff0e2c7 100644 --- a/.github/workflows/image-build-and-publish-push.yaml +++ b/.github/workflows/image-build-and-publish-push.yaml @@ -30,6 +30,8 @@ jobs: - docker/moonraker/** ustreamer: - docker/ustreamer/** + laserweb4: + - docker/laserweb4/** build: needs: changes if: ${{ needs.changes.outputs.apps != '' && toJson(fromJson(needs.changes.outputs.apps)) != '[]' }} diff --git a/.github/workflows/image-build-and-publish-schedule.yaml b/.github/workflows/image-build-and-publish-schedule.yaml index 9ce5831..3fa6b4a 100644 --- a/.github/workflows/image-build-and-publish-schedule.yaml +++ b/.github/workflows/image-build-and-publish-schedule.yaml @@ -12,6 +12,7 @@ jobs: - klipperscreen - moonraker - ustreamer + - laserweb4 runs-on: ubuntu-24.04 steps: - name: "[prind] checkout" diff --git a/.github/workflows/image-build-review.yaml b/.github/workflows/image-build-review.yaml index c891b8f..e9d2aea 100644 --- a/.github/workflows/image-build-review.yaml +++ b/.github/workflows/image-build-review.yaml @@ -42,6 +42,11 @@ jobs: - .github/workflows/image-build-review.yaml - scripts/build/** - docker/ustreamer/** + laserweb4: + - .github/actions/** + - .github/workflows/image-build-review.yaml + - scripts/build/** + - docker/laserweb4/** build: needs: changes if: ${{ needs.changes.outputs.apps != '' && toJson(fromJson(needs.changes.outputs.apps)) != '[]' }} diff --git a/.github/workflows/image-docs-publish.yaml b/.github/workflows/image-docs-publish.yaml index 9471c6d..c47ac99 100644 --- a/.github/workflows/image-docs-publish.yaml +++ b/.github/workflows/image-docs-publish.yaml @@ -35,6 +35,9 @@ jobs: ustreamer: - .github/workflows/image-docs-publish.yaml - docker/moonraker/README.md + laserweb4: + - .github/workflows/image-docs-publish.yaml + - docker/laserweb4/README.md dockerhub-description: needs: changes if: ${{ needs.changes.outputs.apps != '' && toJson(fromJson(needs.changes.outputs.apps)) != '[]' }} From 8f6d5ec53cb2d80a7dc5a2365e4ed3fe8f21c247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sat, 15 Nov 2025 16:50:46 +0100 Subject: [PATCH 03/20] compose: add laserweb4 service --- docker-compose.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index b844ef4..cee8d46 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -204,6 +204,23 @@ services: labels: org.prind.service: octoeverywhere + laserweb4: + image: mkuf/laserweb4:latest + build: + context: docker/laserweb4 + target: frontend + restart: unless-stopped + profiles: + - laserweb4 + labels: + org.prind.service: laserweb4 + traefik.enable: true + traefik.http.services.laserweb.loadbalancer.server.port: 80 + traefik.http.routers.laserweb.rule: PathPrefix(`/laserweb`) + traefik.http.routers.laserweb.entrypoints: web + traefik.http.routers.laserweb.middlewares: strip-laserweb@docker + traefik.http.middlewares.strip-laserweb.stripprefix.prefixes: /laserweb + ## Accompanying Services/Infra ## From 9420ed0e9d12bb8e9566db0e59033957e15a533e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sat, 15 Nov 2025 16:56:27 +0100 Subject: [PATCH 04/20] laserweb: build static files on the native platform to speed up build --- docker/laserweb4/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/laserweb4/Dockerfile b/docker/laserweb4/Dockerfile index 492a702..ce58d0d 100644 --- a/docker/laserweb4/Dockerfile +++ b/docker/laserweb4/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-bookworm AS build +FROM --platform=$BUILDPLATFORM node:22-bookworm AS build RUN git clone https://github.com/ssendev/LaserWeb4 /opt/laserweb \ && cd /opt/laserweb \ From 3c75048f7622de93980f6a314327edb45c1ac9a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Mon, 17 Nov 2025 21:18:36 +0100 Subject: [PATCH 05/20] laserweb: make dockerfile compatible to build script --- docker/laserweb4/Dockerfile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docker/laserweb4/Dockerfile b/docker/laserweb4/Dockerfile index ce58d0d..6051813 100644 --- a/docker/laserweb4/Dockerfile +++ b/docker/laserweb4/Dockerfile @@ -1,8 +1,12 @@ FROM --platform=$BUILDPLATFORM node:22-bookworm AS build -RUN git clone https://github.com/ssendev/LaserWeb4 /opt/laserweb \ -&& cd /opt/laserweb \ -&& git checkout v4.1 \ +ARG REPO=https://github.com/ssendev/LaserWeb4 +ARG VERSION=v4.1 + +WORKDIR /opt +RUN git clone ${REPO} laserweb \ +&& cd laserweb \ +&& git checkout ${VERSION} \ && git submodule init \ && git submodule update From 55af841d2cd4980af073d7f8072bce72e847d83b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Mon, 17 Nov 2025 21:23:27 +0100 Subject: [PATCH 06/20] use correct casing --- docker/laserweb4/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/laserweb4/Dockerfile b/docker/laserweb4/Dockerfile index 6051813..a8ac92d 100644 --- a/docker/laserweb4/Dockerfile +++ b/docker/laserweb4/Dockerfile @@ -14,7 +14,7 @@ WORKDIR /opt/laserweb RUN npm ci --force RUN npm run bundle-prod -FROM nginx:alpine as frontend +FROM nginx:alpine AS frontend COPY --from=build /opt/laserweb/dist /usr/share/nginx/html RUN chown -R nginx:nginx /usr/share/nginx/html \ No newline at end of file From c19390a0a0fdc08c2b662c5114f48d0be898f55d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Mon, 17 Nov 2025 21:26:07 +0100 Subject: [PATCH 07/20] trigger build --- docker/laserweb4/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/laserweb4/README.md b/docker/laserweb4/README.md index 067e041..c06ce10 100644 --- a/docker/laserweb4/README.md +++ b/docker/laserweb4/README.md @@ -3,4 +3,4 @@ This Image is built and used by [prind](.). # Laserweb4 packaged in Docker Frontend only -WIP \ No newline at end of file +WIP. \ No newline at end of file From 16eff0f2319e54e419af31e81f5a1c025649c3ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Tue, 18 Nov 2025 18:29:30 +0100 Subject: [PATCH 08/20] scripts: build: fall back to version from dockerfile if upstream has no tags --- scripts/build/build.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/scripts/build/build.py b/scripts/build/build.py index 2d036a3..09cac3d 100644 --- a/scripts/build/build.py +++ b/scripts/build/build.py @@ -57,7 +57,10 @@ context = "docker/" + args.app dockerfile = context + "/Dockerfile" build = { - "upstream": None, + "upstream": { + "url": None, + "ref": None + }, "targets": [], "versions": {}, "summary": { @@ -85,7 +88,12 @@ # upstream repository url repo = re.findall(r'ARG REPO.*', line) if repo: - build["upstream"] = repo[0].split('=')[1] + build["upstream"]["url"] = repo[0].split('=')[1] + + # upstream version + ref = re.findall(r'ARG VERSION.*', line) + if ref: + build["upstream"]["ref"] = ref[0].split('=')[1] # build targets target = re.findall(r'FROM .* AS .*', line) @@ -95,9 +103,9 @@ if args.upstream: logger.warning("Upstream Repo has been overwritten to: " + args.upstream ) - build["upstream"] = args.upstream + build["upstream"]["url"] = args.upstream else: - logger.info("Found upstream repository: " + build["upstream"]) + logger.info("Found upstream repository: " + build["upstream"]["url"]) if len(build["targets"]) < 1: logger.error("No targets found. Nothing to build") @@ -115,11 +123,15 @@ # extract info from upstream logger.info("Cloning Upstream repository") tmp = tempfile.TemporaryDirectory() - upstream_repo = git.Repo.clone_from(build["upstream"], tmp.name) + upstream_repo = git.Repo.clone_from(build["upstream"]["url"], tmp.name) logger.info("Generating Versions from Upstream repository") - ## latest - latest_version = upstream_repo.git.describe("--tags") + try: + ## latest + latest_version = upstream_repo.git.describe("--tags") + except: + ## if latest does not exist, use VERSION from dockerfile + latest_version = build["upstream"]["ref"] build["versions"][latest_version] = { "latest": True } ## tags @@ -171,7 +183,7 @@ docker.buildx.build( # Build specific context_path = context, - build_args = {"REPO": build["upstream"], "VERSION": version}, + build_args = {"REPO": build["upstream"]["url"], "VERSION": version}, platforms = args.platform, target = target, push = args.push, From fa5b085e8a537500d46e15ee7a964948148e20bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 17:58:41 +0100 Subject: [PATCH 09/20] add image readme --- docker/laserweb4/README.md | 49 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/docker/laserweb4/README.md b/docker/laserweb4/README.md index c06ce10..4664bff 100644 --- a/docker/laserweb4/README.md +++ b/docker/laserweb4/README.md @@ -1,6 +1,51 @@ This Image is built and used by [prind](.). # Laserweb4 packaged in Docker -Frontend only +## What is Laserweb? -WIP. \ No newline at end of file +> LaserWeb / CNCWeb is a full CAM & Machine Control Program for Laser/CNC/Plotter/Plasma applications. +_via https://laserweb.yurl.ch/_ + +This image contains the frontend from https://github.com/ssendev/LaserWeb4. +It still requires a compatible backend like [moonraker](https://github.com/Arksine/moonraker) or the [lw.comm-server](https://github.com/LaserWeb/lw.comm-server) if machine control is desired. + +## Usage +#### Run +```bash +docker run -p 80:80 mkuf/laserweb:latest +``` +#### Compose +```yaml +services: + laserweb: + image: mkuf/laserweb:latest + ports: + - "80:80" +``` +## Defaults +|Entity|Description| +|---|---| +|User| `nginx (101:101)` | +|Workdir|| +|Entrypoint|`/docker-entrypoint.sh`| +|Cmd|`nginx -g daemon off;`| + +## Ports +|Port|Description| +|---|---| +|`80/tcp`|Default HTTP Port| + +## Volumes +none + +## Tags +|Tag|Description|Static| +|---|---|---| +|`latest`|Refers to the most recent runtime Image.|May point to a new build within 24h, depending on code changes in the upstream repository.| +|``
eg: `v4.1-1-g3c7564d`|Refers to a specific git description in the upstream repository. |Yes| + +## Targets +|Target|Description|Pushed| +|---|---|---| +|`build`|Pull Upstream Codebase and build application|No| +|`run`|Default runtime Image based on `library/nginx`|Yes| \ No newline at end of file From 23fa0d8d1c1c991a3a08e902e61e79b326b44025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:00:16 +0100 Subject: [PATCH 10/20] reference dockerhub image --- docker-compose.yaml | 11 ++++------- docker/laserweb4/Dockerfile | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index cee8d46..46c67f7 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -204,16 +204,13 @@ services: labels: org.prind.service: octoeverywhere - laserweb4: - image: mkuf/laserweb4:latest - build: - context: docker/laserweb4 - target: frontend + laserweb: + image: mkuf/laserweb:latest restart: unless-stopped profiles: - - laserweb4 + - laserweb labels: - org.prind.service: laserweb4 + org.prind.service: laserweb traefik.enable: true traefik.http.services.laserweb.loadbalancer.server.port: 80 traefik.http.routers.laserweb.rule: PathPrefix(`/laserweb`) diff --git a/docker/laserweb4/Dockerfile b/docker/laserweb4/Dockerfile index a8ac92d..bf5a632 100644 --- a/docker/laserweb4/Dockerfile +++ b/docker/laserweb4/Dockerfile @@ -14,7 +14,7 @@ WORKDIR /opt/laserweb RUN npm ci --force RUN npm run bundle-prod -FROM nginx:alpine AS frontend +FROM nginx:alpine AS run COPY --from=build /opt/laserweb/dist /usr/share/nginx/html RUN chown -R nginx:nginx /usr/share/nginx/html \ No newline at end of file From 6bbc6e0c6d5469e6364572faefbd51f9359922cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:09:18 +0100 Subject: [PATCH 11/20] docs: add laserweb profile --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index ad768ea..fdd55b4 100644 --- a/README.md +++ b/README.md @@ -245,6 +245,17 @@ After the stack has started, get the logs of the octoeverywhere service to retri docker compose logs octoeverywhere ``` +#### laserweb + +[LaserWeb4](https://laserweb.yurl.ch/) can be enabled via the `laserweb` Profile. The image is based on [a fork](https://github.com/ssendev/LaserWeb4) which includes support for connecting to Moonraker. + +``` +docker compose --profile fluidd --profile laserweb up -d +``` + +After the stack has started, navigate to `http:///laserweb/`. +In the `Comms` tab, select `SERVER: Moonraker`, add your Printers IP Address as `SERVER IP` and click `Connect` + ## Updating Images are built daily and tagged with `latest` and the [git description](https://git-scm.com/docs/git-describe#_examples) of the remote repo. Example: From 4c482d7a3f39ec62f08e590a91d39a3b1804c0f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:13:06 +0100 Subject: [PATCH 12/20] docs: add laserweb to supported apps --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fdd55b4..8a6c970 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ With a single command, you can start up Klipper and its accompanying application ||[Spoolman](https://github.com/Donkie/Spoolman)|`upstream`|[Additional Profiles](#spoolman)| ||[µStreamer](https://github.com/pikvm/ustreamer)|prind @ [docker/ustreamer](docker/ustreamer)|[Add your Configuration](#add-your-configuration-to-docker-composeoverrideyaml)
[Multiple Webcams](https://github.com/mkuf/prind?tab=readme-ov-file#multiple-webcams)| ||[OctoEverywhere](https://octoeverywhere.com)|`upstream`|[Additional Profiles](#octoeverywhere)| +|:spider_web:|[LaserWeb4](https://laserweb.yurl.ch/)|prind @ [docker/laserweb](docker/laserweb)|[Additional Profiles](#laserweb)| From b71baec41e1496083a09b29ba66f9839039d9432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:16:20 +0100 Subject: [PATCH 13/20] rename to laserweb --- .github/workflows/image-build-and-publish-push.yaml | 6 ++++-- .github/workflows/image-build-and-publish-schedule.yaml | 2 +- .github/workflows/image-build-review.yaml | 4 ++-- .github/workflows/image-docs-publish.yaml | 4 ++-- docker/{laserweb4 => laserweb}/Dockerfile | 0 docker/{laserweb4 => laserweb}/README.md | 0 6 files changed, 9 insertions(+), 7 deletions(-) rename docker/{laserweb4 => laserweb}/Dockerfile (100%) rename docker/{laserweb4 => laserweb}/README.md (100%) diff --git a/.github/workflows/image-build-and-publish-push.yaml b/.github/workflows/image-build-and-publish-push.yaml index ff0e2c7..a100ced 100644 --- a/.github/workflows/image-build-and-publish-push.yaml +++ b/.github/workflows/image-build-and-publish-push.yaml @@ -30,8 +30,10 @@ jobs: - docker/moonraker/** ustreamer: - docker/ustreamer/** - laserweb4: - - docker/laserweb4/** + - scripts/build/** + laserweb: + - docker/laserweb/** + - scripts/build/** build: needs: changes if: ${{ needs.changes.outputs.apps != '' && toJson(fromJson(needs.changes.outputs.apps)) != '[]' }} diff --git a/.github/workflows/image-build-and-publish-schedule.yaml b/.github/workflows/image-build-and-publish-schedule.yaml index 3fa6b4a..f3a5fef 100644 --- a/.github/workflows/image-build-and-publish-schedule.yaml +++ b/.github/workflows/image-build-and-publish-schedule.yaml @@ -12,7 +12,7 @@ jobs: - klipperscreen - moonraker - ustreamer - - laserweb4 + - laserweb runs-on: ubuntu-24.04 steps: - name: "[prind] checkout" diff --git a/.github/workflows/image-build-review.yaml b/.github/workflows/image-build-review.yaml index e9d2aea..23f777d 100644 --- a/.github/workflows/image-build-review.yaml +++ b/.github/workflows/image-build-review.yaml @@ -42,11 +42,11 @@ jobs: - .github/workflows/image-build-review.yaml - scripts/build/** - docker/ustreamer/** - laserweb4: + laserweb: - .github/actions/** - .github/workflows/image-build-review.yaml - scripts/build/** - - docker/laserweb4/** + - docker/laserweb/** build: needs: changes if: ${{ needs.changes.outputs.apps != '' && toJson(fromJson(needs.changes.outputs.apps)) != '[]' }} diff --git a/.github/workflows/image-docs-publish.yaml b/.github/workflows/image-docs-publish.yaml index c47ac99..34c89bc 100644 --- a/.github/workflows/image-docs-publish.yaml +++ b/.github/workflows/image-docs-publish.yaml @@ -35,9 +35,9 @@ jobs: ustreamer: - .github/workflows/image-docs-publish.yaml - docker/moonraker/README.md - laserweb4: + laserweb: - .github/workflows/image-docs-publish.yaml - - docker/laserweb4/README.md + - docker/laserweb/README.md dockerhub-description: needs: changes if: ${{ needs.changes.outputs.apps != '' && toJson(fromJson(needs.changes.outputs.apps)) != '[]' }} diff --git a/docker/laserweb4/Dockerfile b/docker/laserweb/Dockerfile similarity index 100% rename from docker/laserweb4/Dockerfile rename to docker/laserweb/Dockerfile diff --git a/docker/laserweb4/README.md b/docker/laserweb/README.md similarity index 100% rename from docker/laserweb4/README.md rename to docker/laserweb/README.md From f1829dc1cb9133716adc19c197f551d09ea5118b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:17:57 +0100 Subject: [PATCH 14/20] change laserweb icon --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a6c970..b089e88 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ With a single command, you can start up Klipper and its accompanying application ||[Spoolman](https://github.com/Donkie/Spoolman)|`upstream`|[Additional Profiles](#spoolman)| ||[µStreamer](https://github.com/pikvm/ustreamer)|prind @ [docker/ustreamer](docker/ustreamer)|[Add your Configuration](#add-your-configuration-to-docker-composeoverrideyaml)
[Multiple Webcams](https://github.com/mkuf/prind?tab=readme-ov-file#multiple-webcams)| ||[OctoEverywhere](https://octoeverywhere.com)|`upstream`|[Additional Profiles](#octoeverywhere)| -|:spider_web:|[LaserWeb4](https://laserweb.yurl.ch/)|prind @ [docker/laserweb](docker/laserweb)|[Additional Profiles](#laserweb)| +||[LaserWeb4](https://laserweb.yurl.ch/)|prind @ [docker/laserweb](docker/laserweb)|[Additional Profiles](#laserweb)| From 473d458e5f5de56d426704a69e420477fe009d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:18:37 +0100 Subject: [PATCH 15/20] update lw readme --- docker/laserweb/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/laserweb/README.md b/docker/laserweb/README.md index 4664bff..953e06d 100644 --- a/docker/laserweb/README.md +++ b/docker/laserweb/README.md @@ -3,7 +3,7 @@ This Image is built and used by [prind](.). # Laserweb4 packaged in Docker ## What is Laserweb? -> LaserWeb / CNCWeb is a full CAM & Machine Control Program for Laser/CNC/Plotter/Plasma applications. +> LaserWeb / CNCWeb is a full CAM & Machine Control Program for Laser/CNC/Plotter/Plasma applications. _via https://laserweb.yurl.ch/_ This image contains the frontend from https://github.com/ssendev/LaserWeb4. From dcaba6d5cdccbb148284229cbfa1fd83812f0f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:18:57 +0100 Subject: [PATCH 16/20] update lw readme --- docker/laserweb/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/laserweb/README.md b/docker/laserweb/README.md index 953e06d..7a39075 100644 --- a/docker/laserweb/README.md +++ b/docker/laserweb/README.md @@ -4,6 +4,7 @@ This Image is built and used by [prind](.). ## What is Laserweb? > LaserWeb / CNCWeb is a full CAM & Machine Control Program for Laser/CNC/Plotter/Plasma applications. + _via https://laserweb.yurl.ch/_ This image contains the frontend from https://github.com/ssendev/LaserWeb4. From 290c76ac5a857c34860fe9a8e93220120609efd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20K=C3=BCffner?= Date: Sun, 23 Nov 2025 18:26:59 +0100 Subject: [PATCH 17/20] docs: add laserweb to next changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4436bff..dcc1f75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).