Skip to content

fix(tasks): skip projects hosted on the other forge instead of failing them - #30151

Closed
yasu00000 wants to merge 1 commit into
stablyai:mainfrom
yasu00000:fix/tasks-exclude-non-matching-host-repos-15784
Closed

yasu00000 wants to merge 1 commit into
stablyai:mainfrom
yasu00000:fix/tasks-exclude-non-matching-host-repos-15784

Conversation

@yasu00000

@yasu00000 yasu00000 commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

ELI5

The Tasks page uses one project picker for GitHub, GitLab, Linear and Jira. If you pick both GitHub and GitLab projects, the GitHub tab used to try every GitLab project and list each one as "No GitHub source detected" with a Retry button that could never work, and the GitLab tab ran glab against GitHub projects. Now each tab quietly sets aside the projects that clearly live on the other service, shows them in one folded line, and never asks GitHub or GitLab about them.

What Changed

Before

  • GitHub tab with a mixed selection: one grey "No GitHub source detected for " row with Retry per GitLab project, on every load. Those projects also inflated the amber "N of M projects failed to load" banner.
  • GitLab tab: GitHub projects reached glab. On the MR view a local GitHub repo fell through to a cwd-inferred glab mr list, which fails with "None of the git remotes configured for this repository point to a known GitLab host" (the error in [Bug]: Shared project filter in Tasks generates errors #15784). GitLab Todos used whichever project was selected first, even a GitHub one.

After

  • Each repo-backed source narrows the shared selection before it queries anything. A project whose origin is known to be on the other forge is not queried, not counted as failed, and is listed in a single collapsed row — "Skipped — hosted on GitLab (N)" / "Skipped — hosted on GitHub (N)" — that expands to the project names. No Retry, since a retry cannot change the answer.
  • If every selected project is on the other forge, the empty state says so ("No GitHub projects selected — The selected projects are hosted on GitLab…").
  • The "N of M projects failed" denominator counts only the projects that source actually queried.
  • GitHub's New issue picker and GitLab Todos use only projects on their own forge.
  • Projects Orca cannot place (no stored remote yet, an unrecognized host, an unexpanded SSH alias, a remote that is not origin/upstream) keep today's resolve-and-Retry behaviour — nothing is hidden silently.

Mechanism

  • src/shared/task-source-repo-host-match.ts: a pure match | mismatch | unknown verdict per repo and source, built only from what Orca already stores — gitRemoteIdentity, plus GitHub fork metadata and the GitHub avatar, which are both read from origin. It reuses the existing parsers: getProjectProviderIdentity for GitHub hosts (github.com, ssh.github.com, GHES-named hosts) and the GitLab project-ref parser with glab's known hosts (port-aware) for GitLab.
  • mismatch needs the origin to be on the other forge. gitRemoteIdentity keeps only one remote and upstream outranks origin, while both resolvers also read origin; so a stored upstream can only prove a match, never a mismatch. Conflicting signals (for example, a stale GitHub avatar on a repo now on GitLab) resolve to "query it", never to "skip it".
  • Self-hosted GitLab is recognized through glab's known hosts, which only main knows (per execution context: native, WSL distro, SSH connection, remote server). New gl.knownHosts / gitlab.knownHosts returns the cached getGlabKnownHosts() for the repo's own context. On a remote server it is gated by a new gitlab.knownHosts.v1 capability; an older server is never asked and answers gitlab.com only, so its self-hosted repos stay unknown (today's behaviour).
  • Renderer: a new pipeline stage (useTaskPageSourceRepoScope, between the availability prelude and summary) derives githubTaskRepos / gitlabTaskRepos and their keys; the GitHub fetch, count, cache, pagination and reconciliation hooks and the GitLab loader read those instead of the shared selectedRepos. selectedRepos itself is untouched, so Linear and Jira are unaffected.
  • glab's hosts are fetched only for repos whose GitHub verdict depends on them — an origin on a host that is neither GitHub-named nor gitlab.com: a self-hosted GitLab, but also Bitbucket, Azure DevOps, or a GHES whose name does not say so — once per repo per session. While that answer is pending only that repo is held back: the rest of the GitHub list loads at once, and the pending repo keeps the skeleton up only while the list has no rows yet (instead of flashing an empty state). If the IPC/RPC call itself rejects, the repo is queried as today and asked about again on the next visit. A glab failure inside main (not installed, or the 10 s timeout) is not a rejected call: main answers gitlab.com only, so the repo stays unknown (queried as today) for the rest of the session.
  • The GitLab project-ref parser moves from src/main/gitlab to src/shared so the renderer can reuse it. The CLI already shipped out/shared/**, so its dedicated CLI main entry (out/main/gitlab/project-ref-parser.js) is removed from the build entries, asarUnpack and the CLI tsconfig.

Why

Linked Issue

Fixes #15784
Refs #16473 — skipped projects no longer count toward "N of M projects failed", and permanently non-GitHub projects no longer get a Retry. The separate case where a repo is counted as failed without any rendered row is not addressed here.
Refs #13817 — a project is excluded from the GitLab source once its stored origin is known to be on GitHub. A move to a host neither CLI knows (the 10.x.x.x case) still stays unknown, because "not a known GitLab host" is not proof the host is not GitLab (main may still discover it via glab auth status --hostname).

Related open PRs (all from outside contributors, none reviewed yet):

Visual Proof

Four projects selected together: github-cloud (github.com), gitlab-cloud (gitlab.com), gitlab-self-hosted (a self-hosted GitLab that glab is signed in to) and unknown-host (a host neither CLI knows).

GitHub tab — before: every project that is not on GitHub gets a "No GitHub source detected" row with a Retry that can never succeed.

01-github-light-before

GitHub tab — after: the two GitLab projects fold into one "Skipped — hosted on GitLab (2)" row; unknown-host keeps today's row, because Orca cannot tell where it lives.

02-github-light-after

GitHub tab — after, expanded:

03-github-light-after-expanded

GitLab tab — before: looks the same, but glab was run against the GitHub project (see the call log below).

06-gitlab-light-before

GitLab tab — after: the GitHub project is listed as skipped and never reaches glab.

07-gitlab-light-after
Dark mode

GitHub tab — before:

04-github-dark-before

GitHub tab — after:

05-github-dark-after

GitLab tab — before:

08-gitlab-dark-before

GitLab tab — after:

09-gitlab-dark-after

Captured from a background-launched e2e build (Playwright over CDP, isolated HOME; upstream/main for Before, this branch for After), cropped to the top of the window. gh/glab were stubbed so the capture is deterministic, and the stubs logged every call:

  • Before, the GitLab tab ran glab auth status --hostname github.com and a cwd-inferred glab mr list for the GitHub project. After, neither runs; the only glab mr list left belongs to the unknown-host project, which still takes today's path by design.
  • The GitLab tab looks the same before and after once any project returns MRs, because its error banner only appears when every project fails; the difference there is the skipped row and the calls above.

Testing

  • I manually tested these changes locally
  • Automated tests added/updated

Automated:

  • src/shared/task-source-repo-host-match.test.ts — github.com / ssh.github.com / gitlab.com / self-hosted GitLab via known hosts / ported hosts (only the known port matches) / unknown hosts / missing or unsettled identity / GHES by name and via avatar / upstream-only identities / fork metadata behind an upstream remote / conflicting stale metadata / unexpanded SSH aliases.
  • task-page-source-repo-scope.test.ts, use-task-page-source-repo-scope.test.tsx — skipped vs queried vs pending; glab is asked only about a self-hosted origin; a rejected lookup is queried and asked about again on the next visit; composed with the GitLab loader, glab never receives a GitHub-origin repo and the GitLab source never waits on glab hosts; twin rows of one project on a paired server that differ only by SSH target each ask their own glab.
  • use-task-page-source-summary.test.ts — availability notices and the banner count only the repos each source actually queries; gitlab.test.ts — the IPC known-hosts probe routes to a row that names its SSH host only as its execution host.
  • task-page-github-landing-refresh-run.test.ts (new) — gh receives only GitHub-source repos, so skipped repos can never count as failed; with every selected repo off GitHub, the previous rows are cleared without querying.
  • IPC, runtime RPC, runtime command and web-preload tests cover knownHosts routing (SSH connection, WSL distro, remote server) and the older-server fallback (asks status.get only, answers gitlab.com).
  • Empty-state copy tests for the all-skipped case.

Manual: ran the branch with pnpm dev against my own mix of GitHub and GitLab projects selected together; the errors from #15784 no longer appear on either tab.

Local checks (macOS, arm64, run on upstream/main 33e6785):

As a fork PR, CI waits for maintainer approval, so the checks above were run locally first.

Platforms: verified on macOS. Linux/Windows rely on the same renderer path and the existing per-context glab probe (WSL distro and SSH connection routing are covered by tests).

AI Disclosure

Implemented with Claude Code (Claude Opus 5.5), reviewed and directed by the author.

Review

AI coding agent review summary:

  • Cross-platform (macOS / Linux / Windows): no new process spawns or paths; glab runs through the existing getGlabKnownHosts probe, which already handles the WSL distro (allowDefaultWslFallback: false) and native contexts.
  • Local / remote server / SSH worktree: the known hosts come from the repo's own execution context — local IPC with the repo's connection id or WSL distro, or the owning remote server over runtime RPC. The new RPC method is capability-gated (gitlab.knownHosts.v1); older servers are never called and degrade to today's behaviour. No new fields in existing wire payloads. A project registered on several hosts (twin rows) is placed row by row: the known-hosts cache is keyed by host and connection, and the GitHub rows keep each twin's own host routing.
  • Agents and integrations: GitHub and GitLab Tasks change; Linear and Jira read the untouched selectedRepos and account-backed contexts. CLI behaviour is unchanged; it now imports the parser from out/shared.
  • Performance: the verdict is a string parse per selected repo, memoized per selection. glab's hosts are requested only for repos whose verdict depends on them, deduped in flight and cached per session; main caches them per context. Fewer gh/glab calls overall, since skipped repos are no longer resolved on every load. One new wait: a repo whose origin is neither GitHub-named nor gitlab.com is held back until glab's hosts arrive — from main's cache, or from one glab auth status per context (at most 10 s) — once per session. The other repos load meanwhile; when the held repo is placed, the list re-runs for the new set, with each repo's items served from the existing 60 s cache and in-flight dedupe, and the per-repo counts requested again, as on any selection change.
  • UI quality: uses the existing Collapsible + ghost Button (size="xs") with tokens only (text-muted-foreground, border-border/50); the design-system lint gate passes. Copy states only facts the code has ("hosted on GitLab", decided from the stored origin). Checked in light and dark.
  • Security: read-only; the new IPC handler goes through the existing assertRegisteredRepo guard (including the source-host check), and it returns only host names glab reports as signed in — never tokens.

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Notes

  • Provider-specific behaviour is confined to task-source-repo-host-match.ts (GitHub host rules via the existing projection helpers; GitLab via known hosts). Bitbucket/Azure/Gitea origins are unknown and keep today's behaviour (after the one-time wait for glab's hosts described under Performance).
  • Mobile: not changed. The mobile Tasks screen (mobile/src/tasks/) builds its own repo list and queries every selected hosted repo for both GitHub and GitLab, so it can still show the other forge's projects as failures. Its repo summaries do not carry gitRemoteIdentity, so applying the same verdict there needs a host-side change; left as a follow-up.
  • Follow-up (not in this PR): per-source project selection, so the GitLab and GitHub pickers stop sharing one list — see fix(tasks): keep the project selection per task source #15848 for an in-memory version.

Checklist

  • This PR is small and focused — one topic ([Bug]: Shared project filter in Tasks generates errors #15784). About half of the ~1,100 added lines is plumbing (GitLab parser moved to src/shared; knownHosts across IPC, runtime RPC, preload, web routes and a capability). Happy to split that plumbing into its own PR if it is easier to review.
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

Author

X: @yasu00000

🤖 Generated with Claude Code

@yasu00000
yasu00000 marked this pull request as ready for review October 18, 2026 02:40
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

We couldn't safely recover the incremental review. No full review was started, and the last reviewed checkpoint was preserved. Retry later, or explicitly request a full review by commenting @coderabbitai full review.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

  • Last reviewed commit: 826b8035cab26905ce73aaf9598d17a718fda7eb
  • Latest commit, not reviewed: c9eae38

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review.

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7251caef-cda1-4c40-92f7-78ea1e836a2c
📥 Commits

Reviewing files that changed from the base of the PR and between 8c4e9e3468b8553e8bf49a0cb4676aa3cfd93da5 and 826b8035cab26905ce73aaf9598d17a718fda7eb.

⛔ Files ignored due to path filters: 1
  • src/shared/rpc-contract/rpc-params-catalog.generated.ts is excluded by !**/*.generated.*
📒 Files selected for processing: 5
  • src/main/ipc/gitlab.test.ts
  • src/main/ipc/gitlab.ts
  • src/renderer/src/components/use-task-page-github-detail.ts
  • src/renderer/src/components/use-task-page-source-summary.test.ts
  • src/renderer/src/components/use-task-page-source-summary.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.

Walkthrough

The change adds GitLab known-host lookup through IPC and runtime RPC, then uses host matching to divide selected repositories into GitHub and GitLab task scopes. Task queries and related UI state use provider-specific scopes. The task page also displays notices for excluded repositories and provider-specific empty states. Tests and translations cover these changes. The GitLab project-reference parser imports move to shared code, and its main-process entry is removed from build and packaging configuration.

Priority: Normal

Merge Risk: Minimal · previous review 826b8

Mixed-forge selections show the appropriate GitHub empty state when no GitHub projects are available. No identified issue blocks merging after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 13.64% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 44 functions across 53 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: skipping projects hosted on the other forge instead of treating them as failures.
Description check Passed The description is complete and relevant. It covers the user-visible behavior, implementation, rationale, linked issue, visual proof, testing, limitations, compatibility considerations, AI disclosure,…
Linked Issues check Passed The PR satisfies the coding requirements for directly linked issue #15784. GitHub and GitLab derive provider-specific repository scopes before source queries. Known cross-forge repositories are exclud…
Out of Scope Changes check Passed The changes remain within #15784. Known-host IPC/RPC routing, capability handling, parser relocation, build-entry updates, renderer integration, localization, and tests support source-specific filteri…
Full details: Description check

Explanation

The description is complete and relevant. It covers the user-visible behavior, implementation, rationale, linked issue, visual proof, testing, limitations, compatibility considerations, AI disclosure, and checklist.

Full details: Linked Issues check

Explanation

The PR satisfies the coding requirements for directly linked issue #15784. GitHub and GitLab derive provider-specific repository scopes before source queries. Known cross-forge repositories are excluded from queries, failure counts, and Retry actions, and are shown in grouped skipped rows. GitHub issue creation and GitLab Todos use the scoped repositories. Unknown or conflicting host data keeps the existing resolve-and-Retry path. Tests cover matching, scoping, loading, counts, empty states, refresh behavior, routing, and older-server fallback. The issue's independent-selection proposal is not required because the PR documents a valid source-scoping solution.

Full details: Out of Scope Changes check

Explanation

The changes remain within #15784. Known-host IPC/RPC routing, capability handling, parser relocation, build-entry updates, renderer integration, localization, and tests support source-specific filtering across local, WSL, SSH, and remote contexts. Linear, Jira behavior, mobile Tasks, and persisted project selection remain unchanged. The excluded generated RPC catalog is intentionally outside review and does not establish an unrelated change.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@yasu00000
yasu00000 force-pushed the fix/tasks-exclude-non-matching-host-repos-15784 branch 3 times, most recently from fde6b7b to 8c4e9e3 Compare October 21, 2026 05:32

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (3)

🟡 Minor · Use the repository routing connection ID for the known-host probe. · gitlab.ts:39-42

src/main/ipc/gitlab.ts:39-42
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use the repository routing connection ID for the known-host probe.

The reachable desktop gitlab:knownHosts handler passes repoConnectionId(repo), which ignores an executionHostId routing target. For a self-hosted GitLab repository, the probe can use the wrong execution context and omit the host known in the actual context. Provider matching then keeps the repository in the GitHub query instead of skipping it, which causes a cross-forge lookup failure.

Suggested fix
 import type { GitLabRepoSelectorArgs } from './gitlab-repo-access'
+import { getRepoRoutingConnectionId } from '../../shared/execution-host'
 import {
   assertRegisteredRepo,
   hostedReviewOptionArgs,
   localGitOptionArgs,
   repoConnectionId
@@
-    return getGlabKnownHosts(repoConnectionId(repo), ...localGitOptionArgs(store, repo))
+    return getGlabKnownHosts(getRepoRoutingConnectionId(repo), ...localGitOptionArgs(store, repo))
🟡 Minor · Scope availability notices to each provider’s… · use-task-page-source-summary.ts:69-92

src/renderer/src/components/use-task-page-source-summary.ts:69-92
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Scope availability notices to each provider’s repositories.

After mixed GitHub/GitLab selections, these notices still derive contexts and counts from selectedRepos. getTaskPageRepoSourceContext creates a context for the requested provider even for an opposite-forge repository. Therefore, an unavailable GitLab host can affect the GitHub notice, and an unavailable GitHub host can affect the GitLab notice. The total count can also mark all actual GitHub sources as only partially unavailable, leaving the GitHub button enabled.

Use githubTaskRepos and gitlabTaskRepos for their respective notices.

Suggested fix
     selectedRepos,
     githubTaskRepos,
+    gitlabTaskRepos,
@@
-          sourceCount: selectedRepos.length,
+          sourceCount: githubTaskRepos.length,
           hostLabelById,
           hostAvailability: availabilityForContexts(
             'github',
-            selectedRepos
+            githubTaskRepos
               .map((repo) => getTaskPageRepoSourceContext(repo, 'github'))
               .filter((context): context is TaskSourceContext => context !== null)
@@
-          sourceCount: selectedRepos.length,
+          sourceCount: gitlabTaskRepos.length,
           hostLabelById,
           hostAvailability: availabilityForContexts(
             'gitlab',
-            selectedRepos
+            gitlabTaskRepos
               .map((repo) => getTaskPageRepoSourceContext(repo, 'gitlab'))
               .filter((context): context is TaskSourceContext => context !== null)
🟡 Minor · Scope the GitLab dialog fallback to GitLab repositories. · use-task-page-github-detail.ts:127-145

src/renderer/src/components/use-task-page-github-detail.ts:127-145
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Scope the GitLab dialog fallback to GitLab repositories.

When the stamped item has no matching selected row, primaryRepo can be a GitHub repository. The dialog then sends that repository path and execution host to the GitLab detail request. Use gitlabPrimaryRepo as the fallback.

Suggested fix
     selectedRepos,
+    gitlabPrimaryRepo,
     githubTaskRepos,
     primaryRepo,
@@
-      gitlabDialogItem ? (getWorkItemRepo(selectedRepos, gitlabDialogItem) ?? primaryRepo) : null,
-    [gitlabDialogItem, primaryRepo, selectedRepos]
+      gitlabDialogItem
+        ? (getWorkItemRepo(selectedRepos, gitlabDialogItem) ?? gitlabPrimaryRepo)
+        : null,
+    [gitlabDialogItem, gitlabPrimaryRepo, selectedRepos]

ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 14384d0d-043f-4568-8c30-ffefc49fe0f3
📥 Commits

Reviewing files that changed from the base of the PR and between fde6b7b1698fa23692ce5248a3daad0d7d930522 and 8c4e9e3468b8553e8bf49a0cb4676aa3cfd93da5.

⛔ Files ignored due to path filters: 1
  • src/shared/rpc-contract/rpc-params-catalog.generated.ts is excluded by !**/*.generated.*
📒 Files selected for processing: 2
  • src/main/runtime/runtime-gitlab-query-commands.ts
  • src/renderer/src/components/task-page/github/Filters.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

@yasu00000
yasu00000 force-pushed the fix/tasks-exclude-non-matching-host-repos-15784 branch from 8c4e9e3 to 826b803 Compare October 21, 2026 06:29
@yasu00000
yasu00000 force-pushed the fix/tasks-exclude-non-matching-host-repos-15784 branch 5 times, most recently from d31e35f to b82b08f Compare October 24, 2026 12:40
…g them

The Tasks page shares one project selection across GitHub, GitLab, Linear
and Jira. With a mixed selection the GitHub source tried to resolve every
GitLab project and listed each as "No GitHub source detected" with a Retry
that could never succeed, and the GitLab source ran a cwd-inferred
`glab mr list` against GitHub projects.

Each repo-backed source now narrows the selection before it queries
anything, using the remote identity Orca already stores. A repo whose
origin is known to be on the other forge is never queried, never counted
as failed, and is listed in one collapsed row without Retry. A self-hosted
GitLab origin is recognized through glab's known hosts, exposed as
gitlab.knownHosts and gated by a runtime capability for older servers.
Repos Orca cannot place keep the existing resolve-and-retry path.

The GitLab project-ref parser moves to src/shared so the renderer can
reuse it; the CLI now loads it from out/shared like other shared modules.

Fixes stablyai#15784
Refs stablyai#16473
Refs stablyai#13817

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@yasu00000
yasu00000 force-pushed the fix/tasks-exclude-non-matching-host-repos-15784 branch from b82b08f to c9eae38 Compare October 26, 2026 23:50
@yasu00000

Copy link
Copy Markdown
Contributor Author

Closing in favor of #34219, which landed the provider-boundary version of this fix (thanks again for the credit there).

Two pieces of this PR are not covered by #34219 and still show up in #15784: a user-visible "Skipped — hosted on GitHub/GitLab (n)" row instead of a silent empty result, and the same skip for repos on remote hosts (connectionId), which #34219 leaves on the old path. #34219's ineligible marker is the hook the row needs on the GitHub side. If maintainers would take either of those, I'll open a small follow-up on top of main rather than rebase this 63-file branch; happy to hear "not wanted" too, so I don't build it blind.

@yasu00000 yasu00000 closed this Oct 30, 2026
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.

[Bug]: Shared project filter in Tasks generates errors

1 participant