Skip to content

Fix the Projects sidebar endpoint prefix and drop the duplicate Project-board entry - #1867

Merged
Birfy merged 3 commits into
mainfrom
fix/1854-projects-sidebar
Oct 30, 2026
Merged

Birfy merged 3 commits into
mainfrom
fix/1854-projects-sidebar

Conversation

@Birfy

@Birfy Birfy commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Written-by: Dev
Fixes #1854
Owner: Dev
Reviewer: Reviewer
Tip SHA: 98adb39
Base: 4197da3
Docs-not-needed: no — docs/subsystems/core-client.md is updated in this commit.

What changed

The Projects row in the left sidebar called the host through a flybot/-prefixed wrapper, and the core host dispatches neither flybot/projects nor flybot/project-role, so expanding the row always produced an empty list. core/src/client/projects-nav.js now sends the bare endpoint names the channel knows, and the row still opens #project=<id> and switches the role through project-role. core/src/client/kanban.js loses the second entry #1701 added to the Tasks dialog header, so a Project board is reached from the sidebar only.

Ran at this tip:

$ cd core && TZ=UTC node --import ./test/harness-resolve.mjs --test test/projects-nav.test.js test/project-board-entry.test.js test/project-board-panels.test.js test/workflows-page.test.js
$ node scripts/ds-bot-patches.mjs check
$ node core/scripts/build-client.mjs --check
$ node .github/scripts/check-mojibake.mjs --check

All green: 43 tests pass, 0 fail in those four files (the two #1854 files plus the two main touched with the Workflows page); 10 patches apply cleanly and core/ equals ds-bot/ + patches; client.js matches src/client; no U+FFFD.

Not run: the smoke test (no core/index.js or core/src/host/ change), and npm run verify end to end — it stops at arch-docs, which cannot diff without git on this host; the rest was run separately, with the core suite at 2227 pass / 2 environmental fails (no git, no python3).

Replayed onto main 4197da32 by Rework at this tip (merge commit; main's Workflows page work — #1810/#1364 — and its regenerated bundle kept, docs/subsystems/core-client.md carries both sides). Conflicts were only in generated files and were resolved by source, never by hand: core/client.js rebuilt from src/client, patches/ds-bot/0008-client-bundle.patch regenerated against the pinned ds-bot/client.js. At this tip: build-client --check 0, ds-bot-patches check 10/10 (core/ equals ds-bot/ + patches), mojibake 0 U+FFFD, 43/43 tests pass, and 11/13 pass / 2 fail with the #1854 source change reverted.

Checkpoint

{
"pr": 1867,
"claim": "Dev",
"issue": 1854,
"summary": "The left sidebar's Projects list asked the host for flybot/projects, which the host never dispatches, so it was empty everywhere; it now sends the bare projects and project-role names, and each row shows the viewer's role. The duplicate Project-board button is gone from the Tasks dialog, so a Project opens from the sidebar only. Tests record the endpoints the nav hands callHost and assert the dialog has no second entry.",
"files": [
"core/src/client/projects-nav.js",
"core/src/client/kanban.js",
"core/client.js",
"core/test/projects-nav.test.js",
"core/test/project-board-entry.test.js",
"patches/ds-bot/0008-client-bundle.patch",
"patches/ds-bot/files/src/client/projects-nav.js",
"docs/subsystems/core-client.md",
"changelog.d/1854-projects-sidebar.fixed.md"
],
"checks": {
"ran": "cd core && TZ=UTC node --import ./test/harness-resolve.mjs --test test/projects-nav.test.js test/project-board-entry.test.js test/project-board-panels.test.js test/workflows-page.test.js; node scripts/ds-bot-patches.mjs check; node core/scripts/build-client.mjs --check; node .github/scripts/check-mojibake.mjs --check",
"result": "green",
"at": "98adb39c31999f58c58df0d118f3030e4d78b7bd"
},
"next": "none — ready for review"
}

…ct-board entry

The sidebar asked the host for `flybot/projects`, an endpoint the host never
dispatches, so the list came back empty everywhere; it now calls the bare core
names (`projects`, `project-role`). The Tasks dialog no longer opens a second
Project board, so the left sidebar is the only entry.

Refs #1854
@Birfy Birfy added the agent-pr Pull request opened by an agent label Oct 30, 2026
@Birfy Birfy self-assigned this Oct 30, 2026
@github-actions github-actions Bot added the risk:T1 Risk tier T1 (client, tests, generated files), set by the controller from the diff label Oct 30, 2026
@Birfy

Birfy commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator Author

Written-by: Rework

Replayed onto current main.

Next: a PASS at f3648fa60373e1c5b5959f82178cf4e8e8ebe9e7 (Reviewer), then enqueue-guard + merge queue.

@Birfy
Birfy added this pull request to the merge queue Oct 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 30, 2026
…undle

main brought the Workflows page (#1810, #1364 docs) and its own regenerated client bundle, which
collided with this branch only in generated files. Resolved by source: core/ and docs took both
sides (docs/subsystems/core-client.md keeps main's Workflows paragraph and #1854's sidebar text),
then core/client.js was rebuilt from src/client and patches/ds-bot/0008-client-bundle.patch was
regenerated against the pinned ds-bot/client.js, so nothing generated is hand-merged.

Checked at this tree: ds-bot-patches check 10/10 (core/ equals ds-bot/ + patches), build-client
--check clean, mojibake scan 0 U+FFFD, 43/43 tests in projects-nav, project-board-entry,
project-board-panels and workflows-page.

Docs-not-needed: no - docs/subsystems/core-client.md is updated in this commit.

Written-by: Rework
@Birfy

Birfy commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator Author

Written-by: Rework

Replayed fix/1854-projects-sidebar onto current main.

Ran at 98adb39c31999f58c58df0d118f3030e4d78b7bd:

$ node scripts/ds-bot-patches.mjs check          -> 10 patches apply, core/ equals ds-bot/ + patches (pin skipped: no git on this host)
$ node core/scripts/build-client.mjs --check     -> 0
$ node .github/scripts/check-mojibake.mjs --check -> 0 U+FFFD in 1327 text files
$ cd core && TZ=UTC node --import ./test/harness-resolve.mjs --test \
    test/projects-nav.test.js test/project-board-entry.test.js \
    test/project-board-panels.test.js test/workflows-page.test.js  -> 43 pass / 0 fail

Red-first at the same tree: with core/src/client/projects-nav.js and kanban.js set back to main's version, that pair of #1854 files is 11 pass / 2 fail, and the two failures are exactly the #1854 ones (#1854: the Tasks dialog has no second entry, the sidebar asks the host for \projects` and `project-role`, unprefixed`).

Not run: the smoke test (no core/index.js or core/src/host/ change) and npm run verify end to end — it stops at arch-docs, which needs git on this host.

Next: this tip needs its own PASS (the tip moved and files in the reviewed set changed: core/client.js, 0008-client-bundle.patch), then enqueue-guard + the merge queue. Rework did not enqueue.

@Birfy
Birfy added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit 09309f7 Oct 30, 2026
14 checks passed
@Birfy
Birfy deleted the fix/1854-projects-sidebar branch October 30, 2026 19:08
@github-actions github-actions Bot removed the agent-pr Pull request opened by an agent label Oct 30, 2026
Birfy added a commit that referenced this pull request Oct 30, 2026
Replayed onto 09309f7 (#1867) by Replay: this commit only moves the branch onto
the new main, with the same 18-file change set. core/client.js is rebuilt from core/
(npm run build) and patches/ds-bot/ regenerated from the merged core/ (generate, then
check: 10 patches, core/ equals ds-bot/ + patches); main's #1826 client bundle and #1867
Projects sidebar work are kept, and docs/subsystems/core-client.md keeps #1867's text with
the Members-panel Chief row added on top.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:T1 Risk tier T1 (client, tests, generated files), set by the controller from the diff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

client: the Projects sidebar sends flybot/projects, so the list is always empty and a role can never change

1 participant