Skip to content

Add project column picker to issue and pull request sidebar#37037

Merged
bircni merged 27 commits into
go-gitea:mainfrom
myers:feat/issue-column-picker
Apr 19, 2026
Merged

Add project column picker to issue and pull request sidebar#37037
bircni merged 27 commits into
go-gitea:mainfrom
myers:feat/issue-column-picker

Conversation

@myers
Copy link
Copy Markdown
Contributor

@myers myers commented Mar 29, 2026

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:

image

Open:
image

@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Mar 29, 2026
Copy link
Copy Markdown
Member

@bircni bircni left a comment

Choose a reason for hiding this comment

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

Doesn't feel consistent and good

Comment thread routers/web/repo/projects.go Outdated
Comment thread routers/web/repo/projects.go Outdated
Comment thread web_src/js/features/repo-issue-sidebar-project.ts Outdated
@wxiaoguang
Copy link
Copy Markdown
Contributor

wxiaoguang commented Mar 29, 2026

  1. I don't see why you need to re-invent the wheel. The existing combo list just works well, you can see there are other "pickers" like "milestone"
    • To "re-render", it should use a framework-level support (refactor the framework to support re-rendering the selector in place for all pickers), but not write a renderColumnPicker-like function for every picker.
  2. It comes to the same situation like Add project column choice option on issue sidebar #30617 (comment)

@wxiaoguang wxiaoguang marked this pull request as draft March 29, 2026 22:59
@myers
Copy link
Copy Markdown
Contributor Author

myers commented Mar 29, 2026

  1. I don't see why you need to re-invent the wheel. The existing combo list just works well, you can see there are other "pickers" like "milestone"

Got it, will extend the combo box even if this makes the impact radius bigger.

   * To "re-render", it should use a framework-level support (refactor the framework to support re-rendering the selector in place for all pickers), but not write a `renderColumnPicker`-like function for every picker.

Same.

2. It comes to the same situation like  [Add project column choice option on issue sidebar #30617 (comment)](https://github.com/go-gitea/gitea/pull/30617#issuecomment-2816668521)

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?

@myers
Copy link
Copy Markdown
Contributor Author

myers commented Mar 30, 2026

@wxiaoguang I think this is worth another look.

@myers myers marked this pull request as ready for review March 30, 2026 03:39
@myers
Copy link
Copy Markdown
Contributor Author

myers commented Mar 30, 2026

I think this would close #13520

@wxiaoguang
Copy link
Copy Markdown
Contributor

I have some ideas to simplify the code, will take a try later.

@wxiaoguang wxiaoguang self-assigned this Mar 30, 2026
Comment thread routers/web/repo/issue_page_meta.go Outdated
Comment thread templates/repo/issue/sidebar/project_column.tmpl Outdated
@silverwind
Copy link
Copy Markdown
Member

silverwind commented Mar 30, 2026

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.

@wxiaoguang
Copy link
Copy Markdown
Contributor

wxiaoguang commented Mar 30, 2026

Also this will almost certainly conflict with #36784.

Already considered about that, prepared for it:

Details image

@wxiaoguang wxiaoguang marked this pull request as draft March 30, 2026 12:19
@wxiaoguang wxiaoguang removed their assignment Mar 30, 2026
@wxiaoguang wxiaoguang marked this pull request as ready for review March 30, 2026 14:41
@silverwind
Copy link
Copy Markdown
Member

how is the UI now? Still a fat <input>-style dropdown or something better?

@wxiaoguang
Copy link
Copy Markdown
Contributor

wxiaoguang commented Mar 30, 2026

(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:

  1. The dropdown UI fine tuning (it doesn't bother me, good-looking or not, there are always chances to improve)
  2. Tests: need to rewrite, the code has changed a lot.

@wxiaoguang
Copy link
Copy Markdown
Contributor

how is the UI now? Still a fat <input>-style dropdown or something better?

Removed the "fat" style

image

@silverwind
Copy link
Copy Markdown
Member

silverwind commented Mar 30, 2026

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.

@wxiaoguang
Copy link
Copy Markdown
Contributor

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.

@silverwind
Copy link
Copy Markdown
Member

I'm wondering how it would look with multiple projects:

  • Proj1
  • Col1
  • Proj2
  • Col1

That would be a confusing display. Better would be:

  • Proj1 / Col1
  • Proj2 / Col2

@wxiaoguang
Copy link
Copy Markdown
Contributor

wxiaoguang commented Mar 30, 2026

I'm wondering how it would look with multiple projects:

It doesn't support. Leave the problem to the future.

image

@silverwind
Copy link
Copy Markdown
Member

silverwind commented Mar 30, 2026

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.

@silverwind
Copy link
Copy Markdown
Member

silverwind commented Mar 30, 2026

Maybe future multi-project could display

Proj1
Col1
---
Proj2
Col1

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.

@wxiaoguang
Copy link
Copy Markdown
Contributor

I extracted my code to Refactor issue sidebar #37045, it doesn't display the "project column" on sidebar

Copy link
Copy Markdown
Contributor

@wxiaoguang wxiaoguang left a comment

Choose a reason for hiding this comment

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

Thank you very much for the updates.

Just a question: why the test is "slow" ..... it only updates some database values, no idea why it needs more than 5 seconds (up to 15 seconds)

@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/blocked A maintainer has reservations with the PR and thus it cannot be merged labels Apr 19, 2026
@silverwind
Copy link
Copy Markdown
Member

silverwind commented Apr 19, 2026

We should aim for fast e2e tests, like sub-5 seconds on a fast machine like a recent MacBook Pro. 15s is definitely too slow. Edit: I think @wxiaoguang may not be talking about the e2e test.

@bircni
Copy link
Copy Markdown
Member

bircni commented Apr 19, 2026

Thank you very much for the updates.

Just a question: why the test is "slow" ..... it only updates some database values, no idea why it needs more than 5 seconds (up to 15 seconds)

also not 100% sure but it failed in ci and locally when not on Mac it also failed idk why

@bircni bircni enabled auto-merge (squash) April 19, 2026 12:25
@bircni bircni merged commit 2f5b5a9 into go-gitea:main Apr 19, 2026
25 of 26 checks passed
@silverwind
Copy link
Copy Markdown
Member

silverwind commented Apr 19, 2026

This seems to have merged with the e2e test failing: https://github.com/go-gitea/gitea/actions/runs/24629021246/job/72013019250. I thought our CI does not allow merge with failing tests.

@silverwind
Copy link
Copy Markdown
Member

I strongly recommend to run any e2e test change at least 20 times locally before committing. These are exceptionally prone to be flaky, care must be taken.

@wxiaoguang
Copy link
Copy Markdown
Contributor

wxiaoguang commented Apr 19, 2026

Yes, and it seems that my question is still there. #37037 (review)

It shouldn't be that slow, 15s or 30s won't make the test succeed. Need a complete fix for the root cause

@bircni
Copy link
Copy Markdown
Member

bircni commented Apr 19, 2026

Ran it 20x locally Never failed

@silverwind
Copy link
Copy Markdown
Member

@bircni can you follow up with a pr that fixes the flake and makes it fast?

@silverwind
Copy link
Copy Markdown
Member

silverwind commented Apr 19, 2026

const slowTimeout = 15_000 * timeoutFactor;

We have a global 30s timeout on tests, so your 45s test will always fail on CI and always pass locally (asssuming local runs 3x as fast). That test needs to be much faster. It was like 2-3s before your change.

@silverwind
Copy link
Copy Markdown
Member

The fact that this had passed locally but fails on CI means

GITEA_TEST_E2E_TIMEOUT_FACTOR=3
is not enough, I suggest increasing it to 4.

@silverwind
Copy link
Copy Markdown
Member

I'll follow up on this, it also needs a tweak to that 30s timeout.

@bircni
Copy link
Copy Markdown
Member

bircni commented Apr 19, 2026

I'll follow up on this, it also needs a tweak to that 30s timeout.

I ran it many times now, always fails if it fails on firefox but it fails now idk how and why as before it did not
also had a timeout in tests/e2e/file-view-render.test.ts:5:1 › 3d model file

On a MacBook Pro M4 Pro so power should be enough

@silverwind
Copy link
Copy Markdown
Member

@bircni btw what model are you using? I recommend only using Opus 4.6+ or GPT 5.4, both set to a minimum of high effort. Based on the quality of some of your PRs I have a strong suspicion that you are not using a capable-enough model.

@silverwind
Copy link
Copy Markdown
Member

#37297 will fix it.

@myers
Copy link
Copy Markdown
Contributor Author

myers commented Apr 19, 2026

Thank you all for the work you added to this to get my PR into shape. I'm taking notes to apply to my future work. I'm excited to have landed a contribution!

@myers myers deleted the feat/issue-column-picker branch April 19, 2026 16:07
@silverwind
Copy link
Copy Markdown
Member

silverwind commented Apr 19, 2026

@myers thanks, I think you should use a better model and/or set more effort. I spotted multiple problematic patterns in this PR that arise from low-effort models, mistakes which my Opus 4.7 on xhigh+ would not make.

@myers
Copy link
Copy Markdown
Contributor Author

myers commented Apr 19, 2026

@myers thanks, I think you should use a better model and/or more effort. I spotted multiple problematic patterns in this PR that arise from low-effort models, mistakes which my Opus 4.7 on xhigh+ would not make.

Looking back part of what needed work in this PR was a side effect of adapting work that was targeted for Forgejo that I felt good about, before I became aware of their no AI policy. I rushed too much focusing on getting something that worked on gitea vs getting something that was good code AND worked on gitea. Also the switch up from issue has a project to issues have more than one project cause some rework.

While not having time travel I was unable to use Opus 4.7, this PR, among the others, was always using the best Claude model that was available.

Do let me know if you have either time travel or a spare mythos invite ;)

@silverwind
Copy link
Copy Markdown
Member

silverwind commented Apr 19, 2026

4.6 is likely fine too, it's the effort level that matters, high/xhigh/max is recommended. It saves a lot of time in the end because the code it yields is so much cleaner. Also it might be mine does not make such errors because I have a very strict personal CLAUDE.md.

silverwind added a commit to silverwind/gitea that referenced this pull request Apr 19, 2026
* 'cast' of github.com:silverwind/gitea:
  Fix Mermaid diagrams failing when node labels contain line breaks (go-gitea#37296)
  Add project column picker to issue and pull request sidebar (go-gitea#37037)
  Fix container auth for public instance (go-gitea#37290)
  Refactor frontend `tw-justify-between` layouts to `flex-left-right` (go-gitea#37291)
  Update Nix flake (go-gitea#37284)
  Workflow Artifact Info Hover (go-gitea#37100)
@bircni
Copy link
Copy Markdown
Member

bircni commented Apr 19, 2026

4.6 is likely fine too, it's the effort level that matters, high/xhigh/max is recommended. It saves a lot of time in the end because the code it yields is so much cleaner. Also it might be mine does not make such errors because I have a very strict personal CLAUDE.md.

would really like to see your claude.md and learn from it

@silverwind
Copy link
Copy Markdown
Member

Can't share it as it contains a number of private parts, maybe I'll split it later and publicize the public parts. As a starter, use the essence of these instructions, it's what I used when creating mine:

https://github.com/drona23/claude-token-efficient/blob/main/CLAUDE.md
https://github.com/zakirullin/cognitive-load/blob/main/README.prompt.md

zjjhot added a commit to zjjhot/gitea that referenced this pull request Apr 20, 2026
* main: (25 commits)
  Add WebKit to e2e test matrix (go-gitea#37298)
  Don't add useless labels which will bother changelog generation (go-gitea#37267)
  Fix Repository transferring page (go-gitea#37277)
  Stabilize issue-project e2e test, increase timeout factor (go-gitea#37297)
  Fix Mermaid diagrams failing when node labels contain line breaks (go-gitea#37296)
  Add project column picker to issue and pull request sidebar (go-gitea#37037)
  Fix container auth for public instance (go-gitea#37290)
  Refactor frontend `tw-justify-between` layouts to `flex-left-right` (go-gitea#37291)
  Update Nix flake (go-gitea#37284)
  Workflow Artifact Info Hover (go-gitea#37100)
  [skip ci] Updated translations via Crowdin
  release notes for 1.26.0 (go-gitea#37282)
  Enhance GetActionWorkflow to support fallback references (go-gitea#37189)
  Refactor LDAP tests (go-gitea#37274)
  Remove `SubmitEvent` polyfill (go-gitea#37276)
  Upgrade go-git to v5.18.0 (go-gitea#37268)
  Avoid top-level await (go-gitea#37272)
  Frontend iframe renderer framework: 3D models, OpenAPI (go-gitea#37233)
  pull: Fix CODEOWNERS absolute path matching. (go-gitea#37244)
  Swift registry metadata: preserve more JSON fields and accept empty metadata (go-gitea#37254)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. type/feature Completely new functionality. Can only be merged if feature freeze is not active.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Show project's board in issue view

7 participants