Skip to content

feat(workflow): Added notify-plugin-authors for issues - #145

Merged
ItsLemmy merged 8 commits into
noctalia-dev:mainfrom
spiros132:main
Jul 29, 2026
Merged

feat(workflow): Added notify-plugin-authors for issues#145
ItsLemmy merged 8 commits into
noctalia-dev:mainfrom
spiros132:main

Conversation

@spiros132

Copy link
Copy Markdown
Contributor

Workflow

Added a workflow so that all issues that have to do with plugins will be CC with the appropriate author.

This should make it less manual for the maintainers so that they don't have to check each issue manually, and also so that each author gets notified when an issue is opened about their plugin.

fix(workflow): Should be run correctly now

fix(workflow): Added reopened

fix(workflow): Removed cache

fix(workflow): Added a lot, hope this works

fix(workflow): Increment the i

fix(workflow): Maybe?

debug

print cwd

fix: Maybe now works?

fix: maybe

fix: For sure now

fix: Some last fixes before it's done

fix: Now the workflow adds a comment

fix: Format

A lot of commits in this one squashed together
…can be custom written and be another persons name
@ItsLemmy

Copy link
Copy Markdown
Contributor
  1. non-blocking - .github/workflows/issues-notify-plugin-authors.py:33
    Expected user input errors exit non-zero, so the workflow run goes red instead of
    quietly no-opping. Replaying the parser over all 21 existing repository issues,
    4 would exit 1: [BUG] <Audio Switcher> Mute/Unmute button remain unchange when press to switch #117 ("Audio Switcher"), [BUG] Keymap plugin incompatiable #113
    ("https://noctalia.dev/plugins/community/keymap"), [BUG] keybind-cheatsheet Parse Error at line 15 #111 ("keybind-cheatsheet"),
    Game Launcher does not detect Steam games on NixOS #73 ("game-launcher"). The Plugin field is free text, so roughly one in five
    real issues produces a failed Actions run and a maintainer notification with no
    comment posted. Same applies to .github/workflows/issues-notify-plugin-authors.py:46.
    Exiting 0 on unparseable input keeps the notifier best effort. Two of those four
    cases ([BUG] keybind-cheatsheet Parse Error at line 15 #111, Game Launcher does not detect Steam games on NixOS #73) are already valid directory names, so falling back to treating a
    single-segment value as the directory would also recover them.

  2. non-blocking - .github/workflows/issues-notify-plugin-authors.py:43
    author = repo.get_commits(path=...).reversed[0].author.login dereferences a field
    the GitHub API sets to null when the commit email is not linked to an account.
    PyGithub returns None there rather than an empty object (github/Commit.py author
    property plus _makeClassAttribute null branch), so .login raises AttributeError and
    the run fails before reaching the guard at
    .github/workflows/issues-notify-plugin-authors.py:50, which is therefore unreachable.
    Checking every current plugin, all 51 first-manifest commits resolve to a real login,
    so this is latent rather than observed.

  3. non-blocking - .github/workflows/issues-notify-plugin-authors.py:43
    Author resolution uses the first commit that touched

    /plugin.toml. This is the
    right call over the id author segment, which is frequently not a GitHub login
    (tadomika_ari vs Tadomika-Ari, lux vs luxqw, kenn vs cheerfulScumbag, neuro vs
    13ghosts, alexander vs Ahmed5Emad), and history currently contains no plugin
    directory renames. Two consequences worth knowing: get_commits(path=) does not
    follow renames, and the original submitter is CC'd even if a plugin later changes
    hands.

  4. non-blocking - .github/workflows/issues-notify-plugin-authors.yml:11
    No repository guard, unlike .github/workflows/update-catalog.yml:20
    (if: github.repository == 'noctalia-dev/community-plugins'). Any fork with issues
    enabled will run this and comment on its own issues. Also
    .github/workflows/issues-notify-plugin-authors.yml:18 passes python-version: 3.14
    unquoted, which YAML parses as a float; it happens to stringify correctly here, but
    quoting it avoids the 3.10 to 3.1 class of breakage on future bumps.

  5. non-blocking - .github/workflows/issues-notify-plugin-authors.yml:21
    pip install PyGithub adds the repository's only third-party CI dependency, unpinned,
    into a job holding an issues: write token. The script uses three API calls
    (get issue, list commits for a path, create comment), all reachable with stdlib
    urllib or actions/github-script, so the dependency is avoidable. If it stays, pin the
    version.

  6. non-blocking - .github/workflows/issues-notify-plugin-authors.py:22
    issue.body is used without a None check and lines.index("### Plugin") raises
    ValueError when the heading is absent. Blank issues are disabled
    (.github/ISSUE_TEMPLATE/config.yml:1) and both forms make Plugin required, so this
    only bites on API-created, imported, or transferred issues, where it surfaces as a
    raw traceback. The scan loop at
    .github/workflows/issues-notify-plugin-authors.py:26 also leaves i unbound if the
    heading is the final line.

@ItsLemmy
ItsLemmy marked this pull request as draft July 29, 2026 13:25
@spiros132
spiros132 marked this pull request as ready for review July 29, 2026 14:26
@ItsLemmy
ItsLemmy merged commit dbd5567 into noctalia-dev:main Jul 29, 2026
1 check passed
@ItsLemmy

Copy link
Copy Markdown
Contributor

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants