Add project column picker to issue and pull request sidebar#37037
Add project column picker to issue and pull request sidebar#37037myers wants to merge 21 commits intogo-gitea:mainfrom
Conversation
When an issue or pull request belongs to a project board, a dropdown appears in the sidebar to move it between columns without opening the board view. Read-only users see the current column name instead. The dropdown uses Fomantic UI and updates the column via an AJAX POST, re-rendering the selector in place on success.
bircni
left a comment
There was a problem hiding this comment.
Doesn't feel consistent and good
|
Address review feedback from bircni and wxiaoguang: - Add rerender(items, selectedValue) method to IssueSidebarComboList so any picker can dynamically rebuild its menu. This replaces the one-off renderColumnPicker function with a framework-level capability. - Convert the column picker template to use the standard issue-sidebar-combo structure, so it is initialized by the existing queryElems loop alongside milestone/label/assignee pickers. - Move projectColumnInfo struct to package level (bircni) - Handle ProjectColumnID and MustDefaultColumn errors (bircni) - Remove custom Fomantic dropdown setup and DOM manipulation The rerender method is designed to support future multi-project use: each project's column picker can independently rerender when its parent project selection changes.
All sidebar pickers (labels, milestone, project, column) previously discarded backend errors silently. Now shows a toast notification on HTTP errors or network failures.
Got it, will extend the combo box even if this makes the impact radius bigger.
Same.
The other PR is closed and tangled up in multiple projects per issue. I just want to do a single Kanban project for my repos and be able to move the column it is on from the issue page. Will you accept this PR if it only addresses single project needs? |
Tests the full workflow: create project with Basic Kanban template, assign issue to project, verify column picker appears, select a different column, reload and verify it persisted.
The gear-icon header pattern (fixed-text muted) is designed for top-level sidebar sections like Labels/Milestone/Assignees. The column picker is a secondary control under the project selection, so it should look like a form select — bordered box showing the current value with a dropdown arrow. Restores the ui dropdown selection fluid style from the original implementation while keeping the issue-sidebar-combo wrapper for the rerender capability.
Integration tests for UpdateIssueProjectColumn endpoint: - MoveToColumn: verify column change persists - InvalidColumn: reject column from wrong project (404) - NonexistentColumn: reject missing column (404) - IssueFromOtherRepo: reject cross-repo issue (404) E2E test improvements: - Assert dropdown closes after selection - Assert sidebar shows new column name - Assert timeline event appears for column move - Use specific selector for reload verification
|
@wxiaoguang I think this is worth another look. |
|
I think this would close #13520 |
|
I have some ideas to simplify the code, will take a try later. |
routers/web/repo/issue_page_meta.go
Outdated
| data.retrieveProjectColumnsData(ctx) | ||
| if ctx.Written() { | ||
| return data | ||
| } |
There was a problem hiding this comment.
The comment and code was added to wrong place.
| {{end}} | ||
| {{end}} | ||
| {{end}} | ||
| {{end}} |
|
Not sure I like this full-size dropdown UI, it looks strange. Maybe change it to a simple SVG icon besides the project, with dropdown menu attached. Does GitHub offer similar functionality? Also this will almost certainly conflict with #36784. |
Already considered about that, prepared for it: |
|
how is the UI now? Still a fat |
|
(Just writing the comment) My concerns were all addressed. Especially that we have a clear partial-reloading approach. It should bring better user experiences. And it won't really block "Multiple projects" feature. The remaining TODOs:
|
|
those 2 rows still refer to the same project, right? Can we just make a small "cog" or similar item that opens a menu (probably with tippy)? I would prefer 1 project per row. |
First is project, second is column. No idea what you ask for. |
|
I'm wondering how it would look with multiple projects:
That would be a confusing display. Better would be:
|
|
IDK about this feature. It's a confusing display for what I think is a rather pointless feature and increase of visual complexity. GitHub does not support this afaik and I think they may have good reason to not bloat the UI with this column display. A issue is part of a project, that's enough info that I need, if I need more, I go to the project. |
|
Maybe future multi-project could display But I'm still not quite sold on this display. The header says "Projects" and list tow rows which instinctively makes me think its two projects while it is 1. I think column needs more visual distinction, like lighter and/or smaller text. |
|
I extracted my code to Refactor issue sidebar #37045, it doesn't display the "project column" on sidebar |
Signed-off-by: wxiaoguang <wxiaoguang@gmail.com>
|
A per-project box like GitHub has would be ideal. It provides the needed visual grouping. Shouldn't be too hard to implement. At minimum I'd like a border around each project. |










Why? You are working on a ticket, it's ready to be moved to the QA column in your project. Currently you have to go to the project, find the issue card, then move it. With this change you can move the issue's column on the issue page.
When an issue or pull request belongs to a project board, a dropdown appears in the sidebar to move it between columns without opening the board view. Read-only users see the current column name instead.
This was written using Claude Code and Opus.
Closed:
Open:
