From 71881514c96ef84fc534cf984398cc0a2bb184b1 Mon Sep 17 00:00:00 2001 From: Spark Date: Sun, 11 Oct 2026 11:42:23 -0400 Subject: [PATCH] =?UTF-8?q?fix(board):=20les=20issues=20r=C3=A9elles=20Git?= =?UTF-8?q?ea=20n'=C3=A9taient=20pas=20des=20PR=20=E2=80=94=20boards=20vid?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gitea 1.27.3 renvoie "pull_request": null sur les issues ordinaires: _is_issue testait la présence de la clé et classait chaque vraie issue comme un pull request. Board, Focus et briefing affichaient zéro carte contre un vrai Gitea (le dashboard, basé sur les compteurs de dépôts, semblait normal, d'où le signalement « la nouvelle issue n'apparaît pas »). Le filtre teste maintenant la valeur. Vérifié en réel: board bruno/flowdeck 0 -> 6 cartes. --- app/gitea_client.py | 6 ++++-- app/main.py | 11 +++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/gitea_client.py b/app/gitea_client.py index 8909784..f1f81b0 100644 --- a/app/gitea_client.py +++ b/app/gitea_client.py @@ -172,8 +172,10 @@ class GiteaClient: ) -> list[dict]: """Get issues for a repo (paginated, cached). - Note: Gitea's issues endpoint also returns pull requests; each - PR carries a "pull_request" key and callers filter on it. + Note: Gitea's issues endpoint also returns pull requests; a + PR carries a non-null "pull_request" object, a plain issue + carries "pull_request": null — callers filter on truthiness + (see app.main._is_issue). """ key = f"issues:{owner}/{repo}:{state}" cached = self._cache_get(key) diff --git a/app/main.py b/app/main.py index 8fb8676..4c4bc1a 100644 --- a/app/main.py +++ b/app/main.py @@ -323,8 +323,15 @@ def classify_repos( def _is_issue(item: dict) -> bool: - """Gitea's issues endpoint also returns PRs; they carry this key.""" - return "pull_request" not in item + """True for issues, False for pull requests. + + Gitea's issues endpoint also returns PRs. A PR carries a + ``pull_request`` *object*; a plain issue carries the same key + with value ``null`` (verified against Gitea 1.27.3). Testing key + presence therefore classifies every real issue as a PR and + empties the board — test the value's truthiness instead. + """ + return not item.get("pull_request") def _merge_issues_with_board(