docs: add Gitea workflows, issue/PR templates, README and licence notice
ci.yml calls `scripts/ci.sh` rather than restating the checks: a workflow that reimplements them becomes a second definition of "done", and the two drift. Android runs as a separate job. It fails when the SDK is absent while ci.sh skips it — a developer should not be blocked by a missing toolchain, but a silently skipped Android build in CI means regressions ship unnoticed. Every action is pinned to an exact version. LICENSE.md records that no licence is chosen yet, and why it is not a formality: the choice is upstream of the UI toolkit decision, since Slint is GPL-3.0. Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
name: Bug report
|
||||
description: Something behaves differently from how CLAUDE.md section 1 describes it
|
||||
title: ""
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Two failure modes matter most here, and they need different fixes.
|
||||
|
||||
- **A block that should have fired but did not.**
|
||||
- **A block that fired but should not have.**
|
||||
|
||||
Please pick which one you are reporting in the first question.
|
||||
|
||||
- type: dropdown
|
||||
id: mode
|
||||
attributes:
|
||||
label: Which kind of failure is this?
|
||||
description: The two modes below need completely different investigations.
|
||||
options:
|
||||
- A blocked app was not blocked
|
||||
- A block fired when it should not have
|
||||
- Enforcement stopped working entirely
|
||||
- The app crashed or would not start
|
||||
- Something else
|
||||
|
||||
- type: dropdown
|
||||
id: platform
|
||||
attributes:
|
||||
label: Platform
|
||||
options:
|
||||
- Linux (KDE Plasma / Wayland)
|
||||
- Linux (KDE Plasma / X11)
|
||||
- Linux (other compositor)
|
||||
- Windows
|
||||
- Android
|
||||
- More than one
|
||||
- Not yet implemented on any
|
||||
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version or commit
|
||||
description: Output of `blocker-daemon --version`, or the commit SHA for a build from source.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: repro
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: |
|
||||
Concrete steps, starting from a known state. "Open Discord during Focus" is
|
||||
reproducible; "it blocks sometimes" is not.
|
||||
placeholder: |
|
||||
1. Start a schedule named "Focus", 09:00-17:00, targeting Discord
|
||||
2. Focus Discord
|
||||
3. Nothing happens
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected behaviour
|
||||
description: What does CLAUDE.md section 1 say should happen? Quote the requirement if you can.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: actual
|
||||
attributes:
|
||||
label: Actual behaviour
|
||||
description: What happened instead, including any error output.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: backend
|
||||
attributes:
|
||||
label: Which enforcement backend is active?
|
||||
description: |
|
||||
The troubleshooting screen shows this. If you cannot find it, say so — that is
|
||||
itself useful information, because it suggests the daemon started with no
|
||||
backend and cannot block anything.
|
||||
placeholder: "kwin: KWin script loaded successfully"
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Daemon log output
|
||||
description: |
|
||||
From `journalctl --user -u blocker -n 100`.
|
||||
|
||||
Redact anything private. Do not paste API tokens, keys, or credentials.
|
||||
render: shell
|
||||
|
||||
- type: checkboxes
|
||||
id: checks
|
||||
attributes:
|
||||
label: Before submitting
|
||||
options:
|
||||
- label: I searched existing issues for this.
|
||||
- label: I removed secrets and personal paths from anything I pasted above.
|
||||
- label: I am not asking to block ADB, safe mode, factory reset, or OS recovery.
|
||||
description: |
|
||||
Those are never blocked, by design (CLAUDE.md section 6.7 and ADR-11). Such a
|
||||
request will be closed with a link to the ADR rather than implemented.
|
||||
@@ -0,0 +1,102 @@
|
||||
name: Platform limitation
|
||||
description: A case where the OS will not permit what CLAUDE.md asks for
|
||||
title: ""
|
||||
labels: ["limitation"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
CLAUDE.md section 6 lists the hard limits this project is known to have. This
|
||||
template exists so a newly discovered one is recorded rather than quietly worked
|
||||
around.
|
||||
|
||||
Section 0 rule 2: never fake a feature. If something cannot be enforced on a
|
||||
platform, we implement the closest honest approximation and document the gap.
|
||||
This form is how that documentation starts.
|
||||
|
||||
- type: dropdown
|
||||
id: existing
|
||||
attributes:
|
||||
label: Is this already documented?
|
||||
description: |
|
||||
If it matches a numbered limitation in CLAUDE.md section 6, please comment on
|
||||
that discussion instead of opening a new issue.
|
||||
options:
|
||||
- "No, this is new"
|
||||
- "Yes, but our handling of it is wrong or incomplete"
|
||||
- "Not sure"
|
||||
|
||||
- type: input
|
||||
id: section
|
||||
attributes:
|
||||
label: Which section 6 limitation does this relate to?
|
||||
description: "A number 1-8, or 'new'."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: platform
|
||||
attributes:
|
||||
label: Platform
|
||||
options:
|
||||
- Linux (KDE Plasma / Wayland)
|
||||
- Linux (KDE Plasma / X11)
|
||||
- Linux (wlroots compositor)
|
||||
- Linux (GNOME)
|
||||
- Windows
|
||||
- Android
|
||||
- More than one
|
||||
|
||||
- type: textarea
|
||||
id: reality
|
||||
attributes:
|
||||
label: What does the OS refuse to do?
|
||||
description: |
|
||||
The OS-level fact. Not "we could not figure it out" — what the platform makes
|
||||
impossible or requires privileges we do not have.
|
||||
placeholder: |
|
||||
Wayland has no portable API for the focused window. Each compositor exposes its
|
||||
own, and none is standard.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: workaround
|
||||
attributes:
|
||||
label: What do we do instead?
|
||||
description: |
|
||||
The closest honest approximation. If the answer is "nothing", say that. An
|
||||
unimplemented limitation is a valid and common answer.
|
||||
placeholder: "Process-based detection, which cannot show a block screen."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: privileges
|
||||
attributes:
|
||||
label: What privileges would a real fix need?
|
||||
description: |
|
||||
Root, CAP_SYS_ADMIN, an accessibility service, a browser extension, a Windows
|
||||
service install? This determines whether the limitation is permanent or a
|
||||
matter of permission design.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
id: docs
|
||||
attributes:
|
||||
label: Documentation
|
||||
options:
|
||||
- label: This gap is documented in docs/LIMITATIONS.md
|
||||
description: |
|
||||
Required. An undocumented limitation is worse than an unimplemented one,
|
||||
because the docs will imply a capability that does not exist.
|
||||
|
||||
- type: checkboxes
|
||||
id: notblocked
|
||||
attributes:
|
||||
label: Confirm
|
||||
options:
|
||||
- label: |
|
||||
This is not a request to block ADB, root access, safe mode, factory reset, or
|
||||
OS recovery. Those are never blocked, by design (section 6.7, ADR-11).
|
||||
@@ -0,0 +1,69 @@
|
||||
name: Question
|
||||
description: An open decision for the project owner, or something blocking work
|
||||
title: ""
|
||||
labels: ["question"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
CLAUDE.md section 10.3: any open question becomes an issue labelled
|
||||
"question" instead of being buried in a chat thread where it gets lost.
|
||||
|
||||
Most questions here are ones the agent cannot answer alone — section 0 rule 3
|
||||
requires stopping to ask before adding an unlisted dependency, changing the
|
||||
architecture, or choosing between two non-obvious OS mechanisms.
|
||||
|
||||
- type: textarea
|
||||
id: question
|
||||
attributes:
|
||||
label: The question
|
||||
description: One question. If there are several, they need separate issues.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: kind
|
||||
attributes:
|
||||
label: What kind of decision is this?
|
||||
options:
|
||||
- Dependency to add (section 0 rule 3)
|
||||
- Architecture change (section 0 rule 3)
|
||||
- Choice between OS mechanisms (section 0 rule 3)
|
||||
- Licensing
|
||||
- Scope or priority
|
||||
- Something else
|
||||
|
||||
- type: input
|
||||
id: blocks
|
||||
attributes:
|
||||
label: What does this block?
|
||||
description: Which milestone, and what specifically cannot proceed.
|
||||
placeholder: "M2-Linux: the KWin backend cannot be written until the block-window approach is chosen."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: options
|
||||
attributes:
|
||||
label: Options and trade-offs
|
||||
description: |
|
||||
What are the realistic choices, and what does each cost? Include binary size,
|
||||
licence, and maintenance burden where they apply.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: recommendation
|
||||
attributes:
|
||||
label: Recommendation, if you have one
|
||||
description: |
|
||||
Optional. A default the agent has been proceeding with, so it can keep working
|
||||
while you decide. Say here if you would rather it stop and wait.
|
||||
|
||||
- type: textarea
|
||||
id: research
|
||||
attributes:
|
||||
label: Supporting research
|
||||
description: |
|
||||
Measurements, documentation links, or a comparison. Links are more useful than
|
||||
conclusions.
|
||||
Reference in New Issue
Block a user