Scaffold the custom integration and its CI #1

Merged
rob merged 4 commits from feat/scaffold-integration into main 2026-09-05 20:11:10 +00:00
Owner

Closes Vikunja Home Assistant Integration #5.

HACS layout, a config flow over a named SocketCAN interface, and a pipeline. No
bus access and no entities yet — PLATFORMS is empty on purpose.

Two things worth a reviewer's attention:

  • hacs/action is not in CI. It validates a repository through the GitHub API,
    and this repository is on Forgejo, so it would be asking github.com about a
    repository that does not exist there. The layout checks that are ours to make
    are in tests/test_manifest.py instead. hassfest does run, as a container.
  • Home Assistant 2026.9 requires Python 3.14, which the runner image does not
    ship, so uv fetches a managed interpreter.
Closes Vikunja *Home Assistant Integration* #5. HACS layout, a config flow over a named SocketCAN interface, and a pipeline. No bus access and no entities yet — `PLATFORMS` is empty on purpose. Two things worth a reviewer's attention: - `hacs/action` is not in CI. It validates a repository through the GitHub API, and this repository is on Forgejo, so it would be asking github.com about a repository that does not exist there. The layout checks that are ours to make are in `tests/test_manifest.py` instead. `hassfest` does run, as a container. - Home Assistant 2026.9 requires Python 3.14, which the runner image does not ship, so uv fetches a managed interpreter.
Scaffold the custom integration and its CI
Some checks failed
Lint, type check and test / hassfest (pull_request) Failing after 13s
Lint, type check and test / quality (pull_request) Successful in 3m42s
437083beb5
Config flow over a named SocketCAN interface, no bus access and no entities
yet. CI runs ruff, mypy, pytest and hassfest; hacs/action is left out because
it validates through the GitHub API and this repository is on Forgejo.
Copy the integration into hassfest rather than bind-mounting it
All checks were successful
Lint, type check and test / hassfest (pull_request) Successful in 8s
Lint, type check and test / quality (pull_request) Successful in 34s
ddd328a492
The runner executes steps inside a container, so the host daemon mounted an
empty directory and hassfest validated nothing.
Indent Python with tabs, enforced by .editorconfig
All checks were successful
Lint, type check and test / hassfest (pull_request) Successful in 23s
Lint, type check and test / quality (pull_request) Successful in 41s
bfce757580
Matches the firmware repository. ruff format is switched to tabs and the three
lint rules that assume spaces are off; CLAUDE.md said the opposite and is
updated to match.
The whole point of using tabs is to not enforce and indent size; it should be up to the renderer
All checks were successful
Lint, type check and test / hassfest (pull_request) Successful in 8s
Lint, type check and test / quality (pull_request) Successful in 34s
85b46ec0cc
rob merged commit 8bd473ca1d into main 2026-09-05 20:11:10 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rob/CampervanHomeAssistant!1
No description provided.