Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Draft] Merge new tools (web simulator, tests, preview gifs) #187

Closed
wants to merge 113 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
bcb1d2e
chore: add .devcontainer.json
reemo3dp Feb 29, 2024
06376f1
chore(devcontainer): Install dependencies in devcontainer
reemo3dp Feb 29, 2024
c736349
Introduce package structure
reemo3dp Feb 29, 2024
e30d977
Add test workflow
reemo3dp Feb 29, 2024
3d750e3
Add klipper-tests
reemo3dp Feb 29, 2024
fdfe950
fix(klippermock): Remove unnecessary path manipulation
reemo3dp Feb 29, 2024
e847590
feature(web_simulator): Add proof of concept for a web simulator runn…
reemo3dp Feb 29, 2024
747dc04
chore(klipper_tests): Add moonraker for reading printer state
reemo3dp Mar 1, 2024
986a3fc
chore(web_simulator): Build whl's along with vite build
reemo3dp Mar 1, 2024
4745fb5
chore(devcontainer): Add node
reemo3dp Mar 1, 2024
f773740
feature(install): Use getopt with long opts and add option to skip se…
reemo3dp Mar 1, 2024
9084f95
chore(actions): Add build_pages
reemo3dp Mar 1, 2024
f192ebb
chore(web_simulator): Remove prebuild wheels
reemo3dp Mar 1, 2024
78bcca0
fix(web_simulator): Relative base
reemo3dp Mar 1, 2024
a9f5fe0
feature(web_simulator): Add properties, disable light theme
reemo3dp Mar 1, 2024
05c7eb0
chore(devcontainer): Add svelte extension
reemo3dp Mar 1, 2024
d16c9cf
Add back in layer parser
reemo3dp Mar 2, 2024
3067f5b
Still broken
reemo3dp Mar 2, 2024
44b03c3
fix: klipper install now works, but tests don't
reemo3dp Mar 2, 2024
3c7ef0e
chore: Merge main and develop
reemo3dp Mar 2, 2024
0823231
chore(actions): Add action to automatically update requirements.txt f…
reemo3dp Mar 2, 2024
947132e
chore: Test
reemo3dp Mar 2, 2024
6b3c986
chore(actions): Remove names
reemo3dp Mar 2, 2024
acf417e
chore(led_effect): Update requirements.txt from poetry.lock
Mar 2, 2024
a098845
chore(web_simulator): Show errors
reemo3dp Mar 2, 2024
a6262f6
chore(web_simulator): Print output
reemo3dp Mar 3, 2024
a29ce59
feature(web_simulator): Add temperatures and print simulation
reemo3dp Mar 3, 2024
3ddd7d6
feature(web_simulator): Add bootstrap
reemo3dp Mar 4, 2024
4b91df5
feature(web_simulator): Pretty bootstrap forms
reemo3dp Mar 4, 2024
50f9b70
chore(web_simulator): Better matchstick
reemo3dp Mar 6, 2024
1a758ea
feature(web_simulator): Add matchsticks
reemo3dp Mar 8, 2024
e8d6964
Add share button
reemo3dp Mar 8, 2024
b03e22d
feature(led_effect): Allow hex values
reemo3dp Mar 8, 2024
40f0210
fix(web_simulator): Fix form fields passing string to python expectin…
reemo3dp Mar 8, 2024
32ec313
Add renovate.json
renovate[bot] Mar 9, 2024
828a871
Update renovate.json
reemo3dp Mar 9, 2024
37f1519
Update renovate.json
reemo3dp Mar 9, 2024
0296b44
chore(deps): replace dependency npm-run-all with npm-run-all2 ^5.0.0
renovate[bot] Mar 9, 2024
dea803c
chore(deps): update dependency vite to v5.1.5
renovate[bot] Mar 9, 2024
45f465f
fix(deps): update dependency @sveltestrap/sveltestrap to v6.2.6
renovate[bot] Mar 9, 2024
51c8e28
chore(deps): update dependency typescript to v5.4.2
renovate[bot] Mar 9, 2024
0346a59
chore(deps): update actions/checkout action to v4
renovate[bot] Mar 9, 2024
f8b796b
chore(deps): update dependency pytest to v8.1.1
renovate[bot] Mar 9, 2024
427f25b
chore(deps): update actions/setup-python action to v5
renovate[bot] Mar 9, 2024
3a77833
chore(renovate): Disable python updates
reemo3dp Mar 9, 2024
a1f539c
chore(deps): update dependency black to v24
renovate[bot] Mar 9, 2024
6e15115
feature(web_simulator): Much better UI
reemo3dp Mar 9, 2024
64125c9
chore(deps): update dependency npm-run-all2 to v6
renovate[bot] Mar 10, 2024
6bf4b7a
fix(deps): update dependency pyinstaller to v6
renovate[bot] Mar 10, 2024
0478d64
chore(renovate): Enable dashboard issue
reemo3dp Mar 10, 2024
0c1c56a
chore(README): Clean up README
reemo3dp Mar 10, 2024
18fa133
chore(led_effect): Replace custom parsing with Tree Transformer
reemo3dp Mar 11, 2024
1fdde48
feature(preview_generator): Add preview generator for creating animat…
reemo3dp Mar 11, 2024
d3739b0
chore(deps): update dependency vite to v5.1.6
renovate[bot] Mar 11, 2024
24c65a3
feature(preview_generator): Process markdown files
reemo3dp Mar 11, 2024
40d1930
feature(preview_generator): Support subdirectories as output
reemo3dp Mar 11, 2024
7e8c372
chore(deps): update dependency svelte-check to v3.6.7
renovate[bot] Mar 12, 2024
3fd5bc4
feature(preview_generator): Write tests for markdown regex
reemo3dp Mar 13, 2024
71445ff
chore(led_effect): Allow '$' instead of '#' for hex values
reemo3dp Mar 13, 2024
0ebb4cc
chore(docs): Generate previews
reemo3dp Mar 13, 2024
3803a5c
chore(docs): Update previews
Mar 13, 2024
5fcca98
chore(docs): Render examples
reemo3dp Mar 14, 2024
82408db
chore(docs): Update previews
Mar 14, 2024
04e47ef
feature(led_effect): Support more color formats (rgb, rgbw)
reemo3dp Mar 14, 2024
06e8315
chore(docs): Add more examples
reemo3dp Mar 14, 2024
ca8b93c
chore(docs): Update previews
Mar 14, 2024
6093bb3
chore(docs): Explain colorspaces
reemo3dp Mar 14, 2024
7036994
chore(docs): Update previews
Mar 14, 2024
fd53a5c
chore(deps): update dependency black to v24.3.0
renovate[bot] Mar 15, 2024
4a9c774
fix(deps): update dependency @sveltestrap/sveltestrap to v6.2.7
renovate[bot] Mar 16, 2024
d6febea
feature(led_effect_plugin): remove colormath dependency and replace w…
reemo3dp Mar 17, 2024
0c3b337
chore(web_simulator): Remove dependency on colormath
reemo3dp Mar 18, 2024
2fef5a3
feature(led_effect): Support 0x notation for hex colors
reemo3dp Mar 18, 2024
38cc01e
feature(preview_generator): Generate smaller gifs if the loop length …
reemo3dp Mar 18, 2024
20662dc
chore(docs): Update previews
Mar 18, 2024
d616791
chore(docs): Move images to subdir
reemo3dp Mar 18, 2024
768a81c
chore(docs): Update previews
Mar 18, 2024
584a6e8
chore(led_effect): Proper name for hex_value
reemo3dp Mar 18, 2024
3ffdbf4
chore(deps): update dependency hypothesis to v6.99.8
renovate[bot] Mar 18, 2024
005dc01
chore(deps): update dependency hypothesis to v6.99.9
renovate[bot] Mar 19, 2024
b3ebb99
chore(deps): update dependency svelte-check to v3.6.8
renovate[bot] Mar 19, 2024
3085823
bug(led_effect): Fix grammar not allowing underscore in effect name o…
reemo3dp Mar 20, 2024
cdbeed7
chore(doc): Add blending examples
reemo3dp Mar 20, 2024
8fd1e72
chore(docs): don't create frames if all layers are static
reemo3dp Mar 20, 2024
ee8f627
chore(docs): Update previews
Mar 20, 2024
a47bd0a
chore(deps): update dependency vite to v5.2.2
renovate[bot] Mar 20, 2024
600abd5
chore(deps): update dependency typescript to v5.4.3
renovate[bot] Mar 20, 2024
adb14b6
chore(deps): update dependency hypothesis to v6.99.11
renovate[bot] Mar 21, 2024
f7244bd
chore(deps): update dependency vite to v5.2.3
renovate[bot] Mar 22, 2024
fb3210d
chore(deps): update dependency hypothesis to v6.99.12
renovate[bot] Mar 23, 2024
c4f815a
chore(deps): update dependency vite to v5.2.4
renovate[bot] Mar 23, 2024
08b807b
chore(deps): update dependency @tsconfig/svelte to v5.0.3
renovate[bot] Mar 24, 2024
c52d00c
chore(deps): update dependency vite to v5.2.5
renovate[bot] Mar 24, 2024
46c5f92
chore(deps): update dependency vite to v5.2.6
renovate[bot] Mar 24, 2024
6ee0045
chore(deps): update dependency hypothesis to v6.99.13
renovate[bot] Mar 24, 2024
65d10ff
chore(deps): update dependency @tsconfig/svelte to v5.0.4
renovate[bot] Mar 27, 2024
1d775c2
bug(led_effect): Add test verifying that leds are switched off if aut…
reemo3dp Mar 29, 2024
01fa65f
bug(led_effect): Fix bug by checking if this is the first time receiv…
reemo3dp Mar 29, 2024
b75e663
Revert "bug(led_effect): Fix bug by checking if this is the first tim…
reemo3dp Mar 29, 2024
0217d36
bug(led_effect): Change test so the previous fix doesn't work anymore
reemo3dp Mar 29, 2024
42e2e94
bug(led_effect): Use isDisabling to indicate whether any update shoul…
reemo3dp Mar 29, 2024
833cf57
chore(deps): update dependency vite to v5.2.7
renovate[bot] Mar 29, 2024
1dcda7a
chore(deps): update dependency hypothesis to v6.100.0
renovate[bot] Mar 31, 2024
8027ffc
fix(deps): update dependency pillow to v10.3.0
renovate[bot] Apr 1, 2024
9670076
chore(deps): update dependency svelte-check to v3.6.9
renovate[bot] Apr 1, 2024
2f14164
chore(deps): update dependency vite to v5.2.8
renovate[bot] Apr 3, 2024
ec37f09
Update LED_Effect.md
reemo3dp Apr 3, 2024
c0e62ee
chore(docs): Update previews
Apr 3, 2024
0f24314
chore(deps): update dependency typescript to v5.4.4
renovate[bot] Apr 4, 2024
3390413
chore(all): Remove all new features
reemo3dp Apr 7, 2024
5960be2
chore(led_effect): Add compat to older versions using symlink in src/
reemo3dp Apr 7, 2024
d8d6124
chore(README): Restore original Readme
reemo3dp Apr 7, 2024
412a5de
chore(web_simulator): Remove scaffolded README
reemo3dp Apr 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
chore: Merge main and develop
  • Loading branch information
reemo3dp committed Mar 2, 2024
commit 3c7ef0edf7b163528607ef4b608714b88274a0ab
2 changes: 2 additions & 0 deletions .github/workflows/build_pages.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: pages
on:
push:
branches:
- main

env:
PYTHON_VERSION: 3.x
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ jobs:
- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install dependencies
working-directory: ./packages/led_effect_tests
working-directory: ./packages/led_effect
run: poetry install
- name: Run tests
working-directory: ./packages/led_effect_tests
working-directory: ./packages/led_effect
run: poetry run pytest -s -v

klipper-test:
Expand Down
2 changes: 1 addition & 1 deletion install-led_effect.sh
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ check_folders()
link_extension()
{
echo -n "Linking extension to Klipper... "
ln -sf "${SRCDIR}/packages/led_effect/src/" "${KLIPPER_PATH}/klippy/extras/led_effect"
ln -sf "${SRCDIR}/packages/led_effect/led_effect/" "${KLIPPER_PATH}/klippy/extras/led_effect"
echo "[OK]"
}

Expand Down
12 changes: 7 additions & 5 deletions packages/klippermock/src/klippermock.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from led_effect import ledEffect, ledFrameHandler
from led_effect.led_effect_plugin import ledEffect, ledFrameHandler

class mockPrinter:
NOW = 0
Expand Down Expand Up @@ -57,17 +57,19 @@ def register_adc(self, name, mcu):
pass
def lookup_heater(self, name):
return self
def set_heater(self, min, max, temp):
self.led_effect.handler.heaterLast["bed"] = self.led_effect.handler.heaterCurrent["bed"]
self.led_effect.handler.heaterCurrent["bed"] = temp
self.led_effect.handler.heaterTarget["bed"] = max
def set_heater(self, min, max, temp, heater = "bed"):
self.led_effect.handler.heaterLast[heater] = self.led_effect.handler.heaterCurrent[heater]
self.led_effect.handler.heaterCurrent[heater] = temp
self.led_effect.handler.heaterTarget[heater] = max
def set_progress (self, progress):
self.led_effect.handler.printProgress=progress
def set_analog(self, value):
self.led_effect.analogValue=value
def load_template(self, config, name):
self.template = config.get(name)
return self
def config_error(self, msg):
raise Exception(msg)
def render(self, context=None):
return self.template
def create_template_context(self):
Expand Down
2 changes: 1 addition & 1 deletion packages/led_effect/Makefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
src/layer_parser_lark.py: src/layer_parser.lark
led_effect/layer_parser_lark.py: led_effect/layer_parser.lark
poetry run python -m lark.tools.standalone -s line -o $@ $<
7 changes: 7 additions & 0 deletions packages/led_effect/led_effect/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from . import led_effect_plugin

def load_config(config):
return led_effect_plugin.load_config(config)

def load_config_prefix(config):
return led_effect_plugin.load_config_prefix(config)
7 changes: 0 additions & 7 deletions packages/led_effect/src/__init__.py

This file was deleted.

2 changes: 1 addition & 1 deletion packages/led_effect/tests/layer_parser_test.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import pytest
import layer_parser
from led_effect import layer_parser

legacy_format_data = [
("breathing .5 0 screen (0,.1,1), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing",
Expand Down
139 changes: 139 additions & 0 deletions packages/led_effect/tests/led_effect_plugin_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
import pytest
from klippermock import *


def test_legacy_works():
config = mockConfig()
config.setint("ledcount", 10)
config.set(
"layers", "gradient 2 3 top (1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0.0,1.0) ")
printer = mockPrinter(config)
printer._handle_ready()
layer = printer.led_effect.handler.effects[0].layers[0]

assert layer.speed == 2
assert layer.count == 3
assert layer.blendingMode == "top"
assert layer.paletteColors == [1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]


def test_new_params_work():
config = mockConfig()
config.setint("ledcount", 10)
config.set(
"layers", "gradient(speed=2, count=3) top (1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0,1.0) ")
printer = mockPrinter(config)
printer._handle_ready()
layer = printer.led_effect.handler.effects[0].layers[0]

assert layer.speed == 2
assert layer.count == 3
assert layer.blendingMode == "top"
assert layer.paletteColors == [1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]


def test_missing_param_throws():
config = mockConfig()
config.setint("ledcount", 10)
config.set(
"layers", "gradient(count=3) top (1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0,1.0) ")
with pytest.raises(Exception):
printer = mockPrinter(config)
printer._handle_ready()


def test_allow_layer_specific_heater():
config = mockConfig()
config.setint("ledcount", 1)
config.set(
"layers", """
heater(minTemp=10,disableOnceReached=0,heater=heater_bed) add (1.0,0.0,0.0)
heater(minTemp=10,disableOnceReached=0,heater=hotend) add (0,0.0,1.0)
""")
printer = mockPrinter(config)
printer._handle_ready()
printer.set_heater(None, 200, 100, "heater_bed")
assert printer.led_effect.getFrame(0) == ([1.0, 0.0, 0.0, 0.0], True)
printer.set_heater(None, 200, 100, "hotend")
assert printer.led_effect.getFrame(1) == ([1.0, 0.0, 1.0, 0.0], True)


def test_color_blending_colorspace_rgb_default():
config = mockConfig()
config.setint("ledcount", 3)
config.set(
"layers", """
static() top (1, 0, 0), (0, 0, 1)
""")
printer = mockPrinter(config)
printer._handle_ready()
assert printer.led_effect.getFrame(0) == ([
1.0, 0.0, 0.0, 0.0,
0.5, 0.0, 0.5, 0.0,
0.0, 0.0, 1.0, 0.0
], True)


def test_color_blending_colorspace_lab():
config = mockConfig()
config.setint("ledcount", 3)
config.set(
"layers", """
static(colorSpace=lab) top (1, 0, 0), (0, 0, 1)
""")
printer = mockPrinter(config)
printer._handle_ready()
assert printer.led_effect.getFrame(0) == ([
1.0, 0.0, 0.0, 0.0,
0.7923588275927302, 0.0, 0.5387489625917922, 0.0,
0.0, 0.0, 1.0, 0.0
], True)


def test_color_blending_colorspace_none():
config = mockConfig()
config.setint("ledcount", 4)
config.set(
"layers", """
static(colorSpace=none) top (1, 0, 0), (0, 0, 1)
""")
printer = mockPrinter(config)
printer._handle_ready()
assert printer.led_effect.getFrame(0) == ([
1.0, 0.0, 0.0, 0.0,
1.0, 0.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 1.0, 0.0
], True)


def test_default_heater_gradient_length():
config = mockConfig()
config.setint("ledcount", 1)
config.set(
"layers", """
heater(heater=heater_bed,minTemp=0,disableOnceReached=0) top (1, 0, 0), (0, 0, 1), (0, 0, 1)
""")
printer = mockPrinter(config)
printer._handle_ready()
printer.set_heater(None, 100, 50, "heater_bed")
assert printer.led_effect.getFrame(0) == ([
0.4974874371859297, 0.0, 0.5025125628140703, 0.0
], True)


def test_changing_heater_gradient_length():
config = mockConfig()
config.setint("ledcount", 1)
config.set(
"layers", """
heater(heater=heater_bed,minTemp=0,disableOnceReached=0,gradientSteps=3) top (1, 0, 0), (0, 0, 1), (0, 0, 1)
""")
printer = mockPrinter(config)
printer._handle_ready()
printer.set_heater(None, 100, 50, "heater_bed")
assert printer.led_effect.getFrame(0) == ([
0.5, 0.0, 0.5, 0.0
], True)
6 changes: 3 additions & 3 deletions packages/web_simulator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
"build:vite": "vite build",
"preview": "vite preview",
"check": "svelte-check --tsconfig ./tsconfig.json",
"build:whl": "rm src/*.whl || true; run-p build:whl:*",
"build:whl:klippermock": "cd ../klippermock; poetry build -f wheel -o ../web_simulator/src",
"build:whl:led_effect": "cd ../led_effect; poetry build -f wheel -o ../web_simulator/src"
"build:whl": "run-p build:whl:*",
"build:whl:klippermock": "rm src/klippermock*.whl || true; cd ../klippermock; poetry build -f wheel -o ../web_simulator/src",
"build:whl:led_effect": "rm src/led_effect*.whl || true; cd ../led_effect; poetry build -f wheel -o ../web_simulator/src"
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^3.0.2",
Expand Down
3 changes: 2 additions & 1 deletion packages/web_simulator/src/App.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<script lang="ts">
import { onMount } from "svelte";
import colormath from "./colormath-3.0.0-py3-none-any.whl?url";
import led_effect from "./led_effect-0.1.0-py3-none-any.whl?url";
import klippermock from "./klippermock-0.1.0-py3-none-any.whl?url";

Expand All @@ -9,7 +10,7 @@
const pyodide = await (window as any).loadPyodide();
await pyodide.loadPackage("micropip");
const micropip = pyodide.pyimport("micropip");
await micropip.install([led_effect, klippermock]);
await micropip.install([colormath, led_effect, klippermock]);

kmock = pyodide.pyimport("klippermock");
};
Expand Down
Binary file not shown.