jogpad 0.14.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jogpad-0.14.1/.gitattributes +2 -0
- jogpad-0.14.1/.github/CODEOWNERS +1 -0
- jogpad-0.14.1/.github/ISSUE_TEMPLATE/bug_report.yml +41 -0
- jogpad-0.14.1/.github/ISSUE_TEMPLATE/config.yml +8 -0
- jogpad-0.14.1/.github/ISSUE_TEMPLATE/feature_request.yml +21 -0
- jogpad-0.14.1/.github/ISSUE_TEMPLATE/pad_report.yml +43 -0
- jogpad-0.14.1/.github/dependabot.yml +16 -0
- jogpad-0.14.1/.github/pull_request_template.md +11 -0
- jogpad-0.14.1/.github/workflows/ci.yml +74 -0
- jogpad-0.14.1/.github/workflows/codeql.yml +24 -0
- jogpad-0.14.1/.github/workflows/docs.yml +37 -0
- jogpad-0.14.1/.github/workflows/pr.yml +35 -0
- jogpad-0.14.1/.github/workflows/release.yml +44 -0
- jogpad-0.14.1/.gitignore +14 -0
- jogpad-0.14.1/.release-please-manifest.json +3 -0
- jogpad-0.14.1/AGENTS.md +43 -0
- jogpad-0.14.1/CHANGELOG.md +210 -0
- jogpad-0.14.1/CODE_OF_CONDUCT.md +11 -0
- jogpad-0.14.1/CONTRIBUTING.md +86 -0
- jogpad-0.14.1/LICENSE +21 -0
- jogpad-0.14.1/PKG-INFO +240 -0
- jogpad-0.14.1/README.md +207 -0
- jogpad-0.14.1/SECURITY.md +17 -0
- jogpad-0.14.1/docs/assets/demo.svg +199 -0
- jogpad-0.14.1/docs/assets/icon.svg +1 -0
- jogpad-0.14.1/docs/assets/logo-dark.svg +1 -0
- jogpad-0.14.1/docs/assets/logo.svg +1 -0
- jogpad-0.14.1/docs/assets/screenshots/check-direction.png +0 -0
- jogpad-0.14.1/docs/assets/screenshots/learn-key.png +0 -0
- jogpad-0.14.1/docs/assets/screenshots/mainsail-panel.png +0 -0
- jogpad-0.14.1/docs/assets/screenshots/web-page-dark.png +0 -0
- jogpad-0.14.1/docs/assets/screenshots/web-page-light.png +0 -0
- jogpad-0.14.1/docs/contributing.md +8 -0
- jogpad-0.14.1/docs/index.md +71 -0
- jogpad-0.14.1/docs/installation.md +83 -0
- jogpad-0.14.1/docs/reference/api.md +25 -0
- jogpad-0.14.1/docs/reference/cli.md +89 -0
- jogpad-0.14.1/docs/reference/config.md +69 -0
- jogpad-0.14.1/docs/safety.md +57 -0
- jogpad-0.14.1/docs/usage.md +328 -0
- jogpad-0.14.1/docs/use-cases.md +80 -0
- jogpad-0.14.1/pyproject.toml +94 -0
- jogpad-0.14.1/release-please-config.json +12 -0
- jogpad-0.14.1/scripts/check_docs_impact.py +47 -0
- jogpad-0.14.1/scripts/check_i18n.py +57 -0
- jogpad-0.14.1/scripts/gen_reference.py +117 -0
- jogpad-0.14.1/scripts/install.sh +145 -0
- jogpad-0.14.1/scripts/screenshots.py +143 -0
- jogpad-0.14.1/src/jogpad/__init__.py +8 -0
- jogpad-0.14.1/src/jogpad/__main__.py +5 -0
- jogpad-0.14.1/src/jogpad/api.py +426 -0
- jogpad-0.14.1/src/jogpad/ch57x.py +194 -0
- jogpad-0.14.1/src/jogpad/cli.py +226 -0
- jogpad-0.14.1/src/jogpad/config.py +267 -0
- jogpad-0.14.1/src/jogpad/config_store.py +73 -0
- jogpad-0.14.1/src/jogpad/core.py +397 -0
- jogpad-0.14.1/src/jogpad/events.py +45 -0
- jogpad-0.14.1/src/jogpad/i18n.py +38 -0
- jogpad-0.14.1/src/jogpad/keys.py +77 -0
- jogpad-0.14.1/src/jogpad/klipper/jogpad.cfg +17 -0
- jogpad-0.14.1/src/jogpad/klipper_setup.py +53 -0
- jogpad-0.14.1/src/jogpad/layouts/ch57x-9k3.json +20 -0
- jogpad-0.14.1/src/jogpad/layouts/numpad.json +24 -0
- jogpad-0.14.1/src/jogpad/layouts.py +103 -0
- jogpad-0.14.1/src/jogpad/linux_input.py +75 -0
- jogpad-0.14.1/src/jogpad/locales/de.json +114 -0
- jogpad-0.14.1/src/jogpad/locales/en.json +114 -0
- jogpad-0.14.1/src/jogpad/moonraker.py +172 -0
- jogpad-0.14.1/src/jogpad/service.py +130 -0
- jogpad-0.14.1/src/jogpad/web/app.js +672 -0
- jogpad-0.14.1/src/jogpad/web/favicon.svg +1 -0
- jogpad-0.14.1/src/jogpad/web/icons.svg +44 -0
- jogpad-0.14.1/src/jogpad/web/index.html +77 -0
- jogpad-0.14.1/src/jogpad/web/style.css +278 -0
- jogpad-0.14.1/src/jogpad/web/tokens.css +83 -0
- jogpad-0.14.1/tests/test_api.py +311 -0
- jogpad-0.14.1/tests/test_ch57x.py +170 -0
- jogpad-0.14.1/tests/test_cli.py +130 -0
- jogpad-0.14.1/tests/test_config.py +150 -0
- jogpad-0.14.1/tests/test_config_store.py +63 -0
- jogpad-0.14.1/tests/test_core.py +554 -0
- jogpad-0.14.1/tests/test_events.py +38 -0
- jogpad-0.14.1/tests/test_i18n.py +15 -0
- jogpad-0.14.1/tests/test_keys.py +37 -0
- jogpad-0.14.1/tests/test_klipper_setup.py +85 -0
- jogpad-0.14.1/tests/test_layouts.py +49 -0
- jogpad-0.14.1/tests/test_linux_input.py +45 -0
- jogpad-0.14.1/tests/test_moonraker.py +206 -0
- jogpad-0.14.1/tests/test_service.py +212 -0
- jogpad-0.14.1/zensical.toml +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @Aitch-ko
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Something does not work as documented.
|
|
3
|
+
labels: ["type: bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: what
|
|
7
|
+
attributes:
|
|
8
|
+
label: What happened
|
|
9
|
+
description: What did you do, what did you expect, what happened instead?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: input
|
|
13
|
+
id: version
|
|
14
|
+
attributes:
|
|
15
|
+
label: jogpad version
|
|
16
|
+
placeholder: "jogpad --version"
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: input
|
|
20
|
+
id: firmware
|
|
21
|
+
attributes:
|
|
22
|
+
label: Firmware and host
|
|
23
|
+
placeholder: "Klipper v0.13 on Raspberry Pi 4, Raspberry Pi OS 12"
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: input
|
|
27
|
+
id: pad
|
|
28
|
+
attributes:
|
|
29
|
+
label: Pad
|
|
30
|
+
placeholder: "CH57x 3x3 with 2 knobs, USB ID 1189:8890"
|
|
31
|
+
- type: textarea
|
|
32
|
+
id: config
|
|
33
|
+
attributes:
|
|
34
|
+
label: Configuration
|
|
35
|
+
description: Your jogpad.toml, without passwords or tokens.
|
|
36
|
+
render: toml
|
|
37
|
+
- type: textarea
|
|
38
|
+
id: log
|
|
39
|
+
attributes:
|
|
40
|
+
label: Log output
|
|
41
|
+
render: text
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Question or idea
|
|
4
|
+
url: https://github.com/Aitch-ko/jogpad/discussions
|
|
5
|
+
about: Ask in Discussions; issues are for bugs, features and pad reports.
|
|
6
|
+
- name: Security issue
|
|
7
|
+
url: https://github.com/Aitch-ko/jogpad/security/advisories/new
|
|
8
|
+
about: Report vulnerabilities privately.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Suggest something jogpad should do.
|
|
3
|
+
labels: ["type: feature"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: Problem
|
|
9
|
+
description: What are you trying to do, and what stops you today?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: proposal
|
|
14
|
+
attributes:
|
|
15
|
+
label: Proposal
|
|
16
|
+
description: How could jogpad solve it?
|
|
17
|
+
- type: input
|
|
18
|
+
id: firmware
|
|
19
|
+
attributes:
|
|
20
|
+
label: Firmware
|
|
21
|
+
placeholder: "Klipper, RepRapFirmware, FluidNC, ..."
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Pad report
|
|
2
|
+
description: Tell us whether a macro pad works with jogpad.
|
|
3
|
+
labels: ["pad report"]
|
|
4
|
+
body:
|
|
5
|
+
- type: input
|
|
6
|
+
id: model
|
|
7
|
+
attributes:
|
|
8
|
+
label: Pad
|
|
9
|
+
description: Name or listing, number of keys and knobs.
|
|
10
|
+
placeholder: "9 keys + 3 knobs, wired"
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: input
|
|
14
|
+
id: usb
|
|
15
|
+
attributes:
|
|
16
|
+
label: USB ID
|
|
17
|
+
description: From `lsusb` on Linux.
|
|
18
|
+
placeholder: "1189:8890"
|
|
19
|
+
validations:
|
|
20
|
+
required: true
|
|
21
|
+
- type: dropdown
|
|
22
|
+
id: works
|
|
23
|
+
attributes:
|
|
24
|
+
label: Does it work?
|
|
25
|
+
options:
|
|
26
|
+
- "Yes, fully"
|
|
27
|
+
- "Partly"
|
|
28
|
+
- "No"
|
|
29
|
+
validations:
|
|
30
|
+
required: true
|
|
31
|
+
- type: dropdown
|
|
32
|
+
id: detents
|
|
33
|
+
attributes:
|
|
34
|
+
label: Do the knobs have noticeable detents?
|
|
35
|
+
options:
|
|
36
|
+
- "Yes"
|
|
37
|
+
- "No"
|
|
38
|
+
- "No knobs"
|
|
39
|
+
- type: textarea
|
|
40
|
+
id: notes
|
|
41
|
+
attributes:
|
|
42
|
+
label: Notes
|
|
43
|
+
description: What works, what does not, how you programmed the pad.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: pip
|
|
4
|
+
directory: /
|
|
5
|
+
schedule:
|
|
6
|
+
interval: weekly
|
|
7
|
+
commit-message:
|
|
8
|
+
prefix: "chore(deps)"
|
|
9
|
+
labels: ["dependencies", "docs: not needed"]
|
|
10
|
+
- package-ecosystem: github-actions
|
|
11
|
+
directory: /
|
|
12
|
+
schedule:
|
|
13
|
+
interval: weekly
|
|
14
|
+
commit-message:
|
|
15
|
+
prefix: "ci"
|
|
16
|
+
labels: ["dependencies", "docs: not needed"]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
This description becomes the commit message on main (squash merge), so write
|
|
3
|
+
it like one: why the change is needed, plain text, "Closes #123" if it fixes
|
|
4
|
+
an issue.
|
|
5
|
+
|
|
6
|
+
CI checks the rest: Conventional Commit title, tests, reference pages,
|
|
7
|
+
translations, and docs (or the label "docs: not needed").
|
|
8
|
+
|
|
9
|
+
For changes to jogging, locks or STOP, say on which machine and pad you tried
|
|
10
|
+
it, or that you did not.
|
|
11
|
+
-->
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ci-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
lint:
|
|
17
|
+
name: Lint and types
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v7
|
|
21
|
+
- uses: actions/setup-python@v7
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
cache: pip
|
|
25
|
+
- run: pip install -e ".[dev]"
|
|
26
|
+
- run: ruff format --check .
|
|
27
|
+
- run: ruff check .
|
|
28
|
+
- run: mypy
|
|
29
|
+
- run: shellcheck scripts/*.sh
|
|
30
|
+
|
|
31
|
+
test:
|
|
32
|
+
name: Tests (${{ matrix.os }}, Python ${{ matrix.python }})
|
|
33
|
+
runs-on: ${{ matrix.os }}
|
|
34
|
+
strategy:
|
|
35
|
+
fail-fast: false
|
|
36
|
+
matrix:
|
|
37
|
+
os: [ubuntu-latest]
|
|
38
|
+
python: ["3.10", "3.11", "3.12", "3.13"]
|
|
39
|
+
include:
|
|
40
|
+
- os: windows-latest
|
|
41
|
+
python: "3.12"
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v7
|
|
44
|
+
- uses: actions/setup-python@v7
|
|
45
|
+
with:
|
|
46
|
+
python-version: ${{ matrix.python }}
|
|
47
|
+
cache: pip
|
|
48
|
+
- run: pip install -e ".[dev]"
|
|
49
|
+
- run: pytest
|
|
50
|
+
|
|
51
|
+
docs:
|
|
52
|
+
name: Docs and translations in sync
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/checkout@v7
|
|
56
|
+
- uses: actions/setup-python@v7
|
|
57
|
+
with:
|
|
58
|
+
# One fixed version: argparse formats --help differently between versions,
|
|
59
|
+
# and the CLI reference is generated from it.
|
|
60
|
+
python-version: "3.12"
|
|
61
|
+
cache: pip
|
|
62
|
+
- run: pip install -e ".[dev,docs]"
|
|
63
|
+
- name: Reference pages match the code
|
|
64
|
+
run: python scripts/gen_reference.py --check
|
|
65
|
+
- name: Messages exist in English and German
|
|
66
|
+
run: python scripts/check_i18n.py
|
|
67
|
+
- name: Documentation builds without warnings
|
|
68
|
+
run: zensical build --strict
|
|
69
|
+
# Otherwise a broken package would only show when a release publishes it.
|
|
70
|
+
- name: Package builds, and PyPI can show its description
|
|
71
|
+
run: |
|
|
72
|
+
pip install build twine "readme-renderer[md]"
|
|
73
|
+
python -m build
|
|
74
|
+
twine check --strict dist/*
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: CodeQL
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
schedule:
|
|
8
|
+
- cron: "17 4 * * 1"
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
security-events: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
analyze:
|
|
16
|
+
# Free for public repositories only.
|
|
17
|
+
if: ${{ !github.event.repository.private }}
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v7
|
|
21
|
+
- uses: github/codeql-action/init@v4
|
|
22
|
+
with:
|
|
23
|
+
languages: python
|
|
24
|
+
- uses: github/codeql-action/analyze@v4
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Docs site
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths: ["docs/**", "zensical.toml", ".github/workflows/docs.yml"]
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
pages: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: pages
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
deploy:
|
|
20
|
+
# GitHub Pages needs a public repository on the free plan.
|
|
21
|
+
if: ${{ !github.event.repository.private }}
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
environment:
|
|
24
|
+
name: github-pages
|
|
25
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v7
|
|
28
|
+
- uses: actions/setup-python@v7
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.12"
|
|
31
|
+
- run: pip install -e ".[docs]"
|
|
32
|
+
- run: zensical build --strict
|
|
33
|
+
- uses: actions/upload-pages-artifact@v5
|
|
34
|
+
with:
|
|
35
|
+
path: site
|
|
36
|
+
- id: deployment
|
|
37
|
+
uses: actions/deploy-pages@v5
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: Pull request
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [opened, edited, synchronize, reopened, labeled, unlabeled]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
pull-requests: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
title:
|
|
13
|
+
name: Title follows Conventional Commits
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: amannn/action-semantic-pull-request@v6
|
|
17
|
+
env:
|
|
18
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
19
|
+
|
|
20
|
+
docs-impact:
|
|
21
|
+
name: Code change has docs or label
|
|
22
|
+
# Release PRs only bump the version; their documentation is the changelog.
|
|
23
|
+
if: ${{ !startsWith(github.head_ref, 'release-please--') }}
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v7
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0
|
|
29
|
+
- uses: actions/setup-python@v7
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.12"
|
|
32
|
+
- name: Check
|
|
33
|
+
env:
|
|
34
|
+
NOT_NEEDED: "${{ contains(github.event.pull_request.labels.*.name, 'docs: not needed') && '--not-needed' || '' }}"
|
|
35
|
+
run: python scripts/check_docs_impact.py "origin/${{ github.base_ref }}" $NOT_NEEDED
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
pull-requests: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
release-please:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
outputs:
|
|
15
|
+
release_created: ${{ steps.release.outputs.release_created }}
|
|
16
|
+
tag_name: ${{ steps.release.outputs.tag_name }}
|
|
17
|
+
steps:
|
|
18
|
+
- id: release
|
|
19
|
+
uses: googleapis/release-please-action@v5
|
|
20
|
+
with:
|
|
21
|
+
config-file: release-please-config.json
|
|
22
|
+
manifest-file: .release-please-manifest.json
|
|
23
|
+
|
|
24
|
+
publish:
|
|
25
|
+
name: Publish to PyPI
|
|
26
|
+
needs: release-please
|
|
27
|
+
# Off until a trusted publisher is set up on PyPI and the repository
|
|
28
|
+
# variable PYPI_PUBLISH is set to "true".
|
|
29
|
+
if: needs.release-please.outputs.release_created == 'true' && vars.PYPI_PUBLISH == 'true'
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
environment: pypi
|
|
32
|
+
permissions:
|
|
33
|
+
id-token: write
|
|
34
|
+
contents: read
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v7
|
|
37
|
+
with:
|
|
38
|
+
ref: ${{ needs.release-please.outputs.tag_name }}
|
|
39
|
+
- uses: actions/setup-python@v7
|
|
40
|
+
with:
|
|
41
|
+
python-version: "3.12"
|
|
42
|
+
- run: pip install build
|
|
43
|
+
- run: python -m build
|
|
44
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
jogpad-0.14.1/.gitignore
ADDED
jogpad-0.14.1/AGENTS.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Notes for coding agents
|
|
2
|
+
|
|
3
|
+
Read [CONTRIBUTING.md](CONTRIBUTING.md) first; its rules apply to agents too.
|
|
4
|
+
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
| Path | What |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `src/jogpad/core.py` | key events to moves: steps, merging, locks, HOME, knob axis |
|
|
10
|
+
| `src/jogpad/moonraker.py`, `linux_input.py`, `service.py` | firmware, input devices, threads |
|
|
11
|
+
| `src/jogpad/ch57x.py` | programming CH57x macro pads through hidraw |
|
|
12
|
+
| `src/jogpad/config.py` | configuration schema (pydantic); source of `docs/reference/config.md` |
|
|
13
|
+
| `src/jogpad/cli.py` | command line; source of `docs/reference/cli.md` |
|
|
14
|
+
| `src/jogpad/api.py` | FastAPI app; source of `docs/reference/api.md` |
|
|
15
|
+
| `src/jogpad/i18n.py`, `src/jogpad/locales/` | message catalogs |
|
|
16
|
+
| `scripts/` | reference generator and the checks CI runs |
|
|
17
|
+
| `docs/` | Zensical documentation |
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pip install -e ".[dev,docs]"
|
|
23
|
+
ruff format . && ruff check . && mypy && pytest
|
|
24
|
+
python scripts/gen_reference.py # after changing config, CLI or API
|
|
25
|
+
python scripts/check_i18n.py
|
|
26
|
+
zensical build --strict
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Rules
|
|
30
|
+
|
|
31
|
+
- English only in the repository.
|
|
32
|
+
- After changing configuration, CLI or API, regenerate `docs/reference/` and
|
|
33
|
+
commit it. Never edit those pages by hand.
|
|
34
|
+
- New user-facing text: `t("literal.key")`, plus the key in `en.json` and
|
|
35
|
+
`de.json`.
|
|
36
|
+
- Changed behaviour needs a change in `docs/` or the label `docs: not needed`.
|
|
37
|
+
- New features and newly tested hardware also update the Status section of
|
|
38
|
+
`README.md`; CI cannot tell when it is out of date.
|
|
39
|
+
- Visible changes to the web page: run `python scripts/screenshots.py` and
|
|
40
|
+
commit the new images under `docs/assets/screenshots/`.
|
|
41
|
+
- The HTTP API and the agent interface never move a machine.
|
|
42
|
+
- No `Assisted-by` or `Co-Authored-By` trailers; the README says once that
|
|
43
|
+
jogpad is developed with Claude Code.
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.14.1](https://github.com/Aitch-ko/jogpad/compare/v0.14.0...v0.14.1) (2026-11-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Documentation
|
|
7
|
+
|
|
8
|
+
* the README links the documentation site ([#4](https://github.com/Aitch-ko/jogpad/issues/4)) ([a9d4598](https://github.com/Aitch-ko/jogpad/commit/a9d45981d55ee2d7beefa7a93c5646eb92abc4d0))
|
|
9
|
+
|
|
10
|
+
## [0.14.0](https://github.com/Aitch-ko/jogpad/compare/v0.13.0...v0.14.0) (2026-11-01)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* the footer is one quiet line with the version and short links ([8f9b448](https://github.com/Aitch-ko/jogpad/commit/8f9b448e09532e8755cacf23811ab4c564c8a751))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Documentation
|
|
19
|
+
|
|
20
|
+
* the README animation shows the macro pad as it is today ([8cf6714](https://github.com/Aitch-ko/jogpad/commit/8cf671417e04ce407de95d407dc371d170d57ead))
|
|
21
|
+
|
|
22
|
+
## [0.13.0](https://github.com/Aitch-ko/jogpad/compare/v0.12.0...v0.13.0) (2026-11-01)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* keys show arrows and signs in the colour of their axis ([d1c7b1c](https://github.com/Aitch-ko/jogpad/commit/d1c7b1cd1d74fe75917df2ea7146d1cb13f761ef))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* the HOME messages say that a second HOME starts homing ([8359057](https://github.com/Aitch-ko/jogpad/commit/8359057312fdf6c188d4987700589b6186c34840))
|
|
33
|
+
* the step size badge is only as tall as its text ([ea3b84b](https://github.com/Aitch-ko/jogpad/commit/ea3b84b2cc8793d229576af4ca425905b0217eae))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Documentation
|
|
37
|
+
|
|
38
|
+
* README and home page say which pad to take ([2be8915](https://github.com/Aitch-ko/jogpad/commit/2be891565d54374fe0fdb14c9c68ac984638b04a))
|
|
39
|
+
|
|
40
|
+
## [0.12.0](https://github.com/Aitch-ko/jogpad/compare/v0.11.0...v0.12.0) (2026-11-01)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Features
|
|
44
|
+
|
|
45
|
+
* a held axis key keeps moving until it is released ([064a569](https://github.com/Aitch-ko/jogpad/commit/064a569b0d5079871af24d16a1d1e9bbf7a546f5))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Performance Improvements
|
|
49
|
+
|
|
50
|
+
* a key press asks Klipper once for the switch and the locks ([cd4de94](https://github.com/Aitch-ko/jogpad/commit/cd4de94e9b8cdcda2e0cb6ecce0e2a3ab7a86e97))
|
|
51
|
+
|
|
52
|
+
## [0.11.0](https://github.com/Aitch-ko/jogpad/compare/v0.10.0...v0.11.0) (2026-10-31)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Features
|
|
56
|
+
|
|
57
|
+
* a CH57x pad lights up in the colour of the step size ([567a7a4](https://github.com/Aitch-ko/jogpad/commit/567a7a4e58701fcd1b246f1a8432ab0d06be13ad))
|
|
58
|
+
* an arrow over each knob shows the axis direction of each turn ([f390a91](https://github.com/Aitch-ko/jogpad/commit/f390a91b61aae68d1740872367dba83b953dc935))
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
### Bug Fixes
|
|
62
|
+
|
|
63
|
+
* a refused move no longer leaves the printer in relative mode ([b2bb864](https://github.com/Aitch-ko/jogpad/commit/b2bb8645ffc5c6cfd1346a3192cbbd7a666b0c2e))
|
|
64
|
+
|
|
65
|
+
## [0.10.0](https://github.com/Aitch-ko/jogpad/compare/v0.9.1...v0.10.0) (2026-10-31)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Features
|
|
69
|
+
|
|
70
|
+
* jogpad program-pad reads the bindings back and checks them ([78f7103](https://github.com/Aitch-ko/jogpad/commit/78f710386c0978c9b4ea17834e2751e0d4ad2010))
|
|
71
|
+
* the panel fits the pad, draws its outline and links to the full page ([ac7adb5](https://github.com/Aitch-ko/jogpad/commit/ac7adb526e049816839ba0cd4b4f8c6fe33d2d26))
|
|
72
|
+
|
|
73
|
+
## [0.9.1](https://github.com/Aitch-ko/jogpad/compare/v0.9.0...v0.9.1) (2026-10-31)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
### Bug Fixes
|
|
77
|
+
|
|
78
|
+
* the web page loads its new files after an update ([79bbfcc](https://github.com/Aitch-ko/jogpad/commit/79bbfccc925b74975e107766c690fcd2237f6814))
|
|
79
|
+
|
|
80
|
+
## [0.9.0](https://github.com/Aitch-ko/jogpad/compare/v0.8.0...v0.9.0) (2026-10-31)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### Features
|
|
84
|
+
|
|
85
|
+
* a programmed CH57x pad works without key setup, a knob per axis ([9d2fd5e](https://github.com/Aitch-ko/jogpad/commit/9d2fd5e4c0223bbdf72438098e635241f999464a))
|
|
86
|
+
* the web page has a light/dark switch ([9bf6cab](https://github.com/Aitch-ko/jogpad/commit/9bf6cab97554705cfd5cc582d1f41472fb55e513))
|
|
87
|
+
* the web page shows axes, STOP and the step size in colour ([8919ecc](https://github.com/Aitch-ko/jogpad/commit/8919ecc97f7197b5325c1963185599b3502cbdd7))
|
|
88
|
+
|
|
89
|
+
## [0.8.0](https://github.com/Aitch-ko/jogpad/compare/v0.7.1...v0.8.0) (2026-10-31)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
### Features
|
|
93
|
+
|
|
94
|
+
* jogpad program-pad writes the layout's key codes into a CH57x pad ([3053478](https://github.com/Aitch-ko/jogpad/commit/3053478eed2392d905a4b0414bd901981e8193d7))
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
### Bug Fixes
|
|
98
|
+
|
|
99
|
+
* the CH57x drawing shows the knobs where the real pad has them ([e11022f](https://github.com/Aitch-ko/jogpad/commit/e11022f85a4b1aff71b031534b1b5baa6f1efcf1))
|
|
100
|
+
|
|
101
|
+
## [0.7.1](https://github.com/Aitch-ko/jogpad/compare/v0.7.0...v0.7.1) (2026-10-25)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
### Bug Fixes
|
|
105
|
+
|
|
106
|
+
* a lock on an object the firmware does not know refuses moves ([6f9b6ed](https://github.com/Aitch-ko/jogpad/commit/6f9b6ede042d58c7adba62f694ada87cf5bb680a))
|
|
107
|
+
|
|
108
|
+
## [0.7.0](https://github.com/Aitch-ko/jogpad/compare/v0.6.1...v0.7.0) (2026-10-25)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
### Features
|
|
112
|
+
|
|
113
|
+
* installer builds jogpad's venv from JOGPAD_PYTHON, with a way out of Python 3.9 ([d6bdb26](https://github.com/Aitch-ko/jogpad/commit/d6bdb26b4c7ab821b17b1240657a584d2048b4fe))
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
### Documentation
|
|
117
|
+
|
|
118
|
+
* one note on Claude Code instead of a trailer in every commit ([692e411](https://github.com/Aitch-ko/jogpad/commit/692e411682e4f48eb4a2b7b930f85501b7a688c6))
|
|
119
|
+
|
|
120
|
+
## [0.6.1](https://github.com/Aitch-ko/jogpad/compare/v0.6.0...v0.6.1) (2026-10-25)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
### Documentation
|
|
124
|
+
|
|
125
|
+
* installer names the web page, installation guide says what to do there ([2fd495d](https://github.com/Aitch-ko/jogpad/commit/2fd495dd4ff48766487ddc8e42c05eb6e9c6d0f7))
|
|
126
|
+
|
|
127
|
+
## [0.6.0](https://github.com/Aitch-ko/jogpad/compare/v0.5.0...v0.6.0) (2026-10-25)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
### Features
|
|
131
|
+
|
|
132
|
+
* installer and jogpad setup-switch add the switch to Klipper and Moonraker ([b85a432](https://github.com/Aitch-ko/jogpad/commit/b85a4322810ce8e86dc67a1f0c8045bdb4b26fa6))
|
|
133
|
+
|
|
134
|
+
## [0.5.0](https://github.com/Aitch-ko/jogpad/compare/v0.4.0...v0.5.0) (2026-10-25)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
### Features
|
|
138
|
+
|
|
139
|
+
* setup section of the web page starts folded away ([b839d83](https://github.com/Aitch-ko/jogpad/commit/b839d837088d87c7e4a83b453cad0373d58735fd))
|
|
140
|
+
* show the pad as a camera panel in Mainsail and Fluidd ([6b20dd2](https://github.com/Aitch-ko/jogpad/commit/6b20dd2e0c2afcf0a27a61d380efe98b3e93677e))
|
|
141
|
+
* switch jogpad on and off from its page and camera panel ([0f40cf4](https://github.com/Aitch-ko/jogpad/commit/0f40cf4eda1ff12092a4cccf3df347320510c1a0))
|
|
142
|
+
* switch jogpad on and off in Mainsail and Fluidd ([7057318](https://github.com/Aitch-ko/jogpad/commit/70573185bd4ea97466fa08875f58119755b11296))
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
### Bug Fixes
|
|
146
|
+
|
|
147
|
+
* keep web page requests out of the journal ([e22e7c9](https://github.com/Aitch-ko/jogpad/commit/e22e7c936850ce3ba713919e3df5591974beedde))
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
### Documentation
|
|
151
|
+
|
|
152
|
+
* usage.md switch section, API reference, panel screenshot. ([0f40cf4](https://github.com/Aitch-ko/jogpad/commit/0f40cf4eda1ff12092a4cccf3df347320510c1a0))
|
|
153
|
+
|
|
154
|
+
## [0.4.0](https://github.com/Aitch-ko/jogpad/compare/v0.3.0...v0.4.0) (2026-10-25)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
### Features
|
|
158
|
+
|
|
159
|
+
* web page open in the network, changes only from computers Moonraker trusts ([d69ae16](https://github.com/Aitch-ko/jogpad/commit/d69ae16ff92ab32072668768959750ec68aa1eb3))
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
### Bug Fixes
|
|
163
|
+
|
|
164
|
+
* start message reaches the journal right away ([1ac5127](https://github.com/Aitch-ko/jogpad/commit/1ac512728f2ed8ae47d588399bca2418810adaac))
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
### Documentation
|
|
168
|
+
|
|
169
|
+
* getting started, documentation map and repository layout in the README ([4710be6](https://github.com/Aitch-ko/jogpad/commit/4710be6113e8882652210201efe92db11afff788))
|
|
170
|
+
|
|
171
|
+
## [0.3.0](https://github.com/Aitch-ko/jogpad/compare/v0.2.0...v0.3.0) (2026-10-24)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
### Features
|
|
175
|
+
|
|
176
|
+
* page header and footer, language menu, design tokens with checked contrast ([d408779](https://github.com/Aitch-ko/jogpad/commit/d408779c43915c18d9f331ecac4e7b64d5693b40))
|
|
177
|
+
* planned key codes for the CH57x macro pad layout ([faedcbb](https://github.com/Aitch-ko/jogpad/commit/faedcbb349bcb1fbba921b4eed6d0218e23cc9ca))
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
### Documentation
|
|
181
|
+
|
|
182
|
+
* an animation at the top of the README showing what jogpad does ([768a3d0](https://github.com/Aitch-ko/jogpad/commit/768a3d0b541539eafefe9a12be66d84921ca87f2))
|
|
183
|
+
* screenshots of the web page, made by a script ([dc5ea85](https://github.com/Aitch-ko/jogpad/commit/dc5ea8544494488100527222b763dee3302ef0d6))
|
|
184
|
+
|
|
185
|
+
## [0.2.0](https://github.com/Aitch-ko/jogpad/compare/v0.1.0...v0.2.0) (2026-10-24)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
### Features
|
|
189
|
+
|
|
190
|
+
* add an installer that sets jogpad up as a service ([a80d329](https://github.com/Aitch-ko/jogpad/commit/a80d329c40145cb919356990190591821fc494b8))
|
|
191
|
+
* announce moves and homing in the console ([234273c](https://github.com/Aitch-ko/jogpad/commit/234273c03951965147cc018d4d37d0d912e53078))
|
|
192
|
+
* learn keys and check axis directions on the web page ([fae055d](https://github.com/Aitch-ko/jogpad/commit/fae055d1a183f6e4c421f0195aeea0c52ef389a2))
|
|
193
|
+
* web page with the pad drawn and live key presses ([3929d21](https://github.com/Aitch-ko/jogpad/commit/3929d21268c543c7613ee54fc81111792f89c8e8))
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
### Bug Fixes
|
|
197
|
+
|
|
198
|
+
* show installer progress and ask for sudo up front ([758e622](https://github.com/Aitch-ko/jogpad/commit/758e622538b3a0588bced6588a0176b166e5d908))
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
### Documentation
|
|
202
|
+
|
|
203
|
+
* tell why jogpad exists, add a logo and use cases ([1573410](https://github.com/Aitch-ko/jogpad/commit/157341020fe5bd1c8a6a4eb33720d544f87a680f))
|
|
204
|
+
|
|
205
|
+
## 0.1.0 (2026-10-24)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
### Features
|
|
209
|
+
|
|
210
|
+
* jog Klipper from a keypad or macro pad ([5bf570b](https://github.com/Aitch-ko/jogpad/commit/5bf570bca55204b2e638f0a69d221967b6b1893e))
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
This project follows the
|
|
4
|
+
[Contributor Covenant, version 2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).
|
|
5
|
+
|
|
6
|
+
In short: be respectful, assume good intent, criticise ideas rather than
|
|
7
|
+
people, and help newcomers.
|
|
8
|
+
|
|
9
|
+
Report unacceptable behaviour privately to the maintainer,
|
|
10
|
+
[@Aitch-ko](https://github.com/Aitch-ko), through GitHub. Reports are handled
|
|
11
|
+
confidentially.
|