\r\n \u003Clink rel=\"alternate icon\" type=\"image/png\" href=\"/favicons/favicon-light-default.png\" id=\"favicon-png\" />\r\n \u003Clink rel=\"icon\" type=\"image/svg+xml\" href=\"/favicons/favicon-light-default.svg\" id=\"favicon-svg\" />\r\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n \u003Cmeta name=\"theme-color\" content=\"#65a30d\" />\r\n \u003Ctitle>Woodpecker\u003C/title>\r\n \u003Cscript type=\"\" src=\"/web-config.js\">\u003C/script>\r\n \u003Cscript type=\"module\" crossorigin src=\"/assets/index-4b7b57db.js\">\u003C/script>\r\n \u003Clink rel=\"stylesheet\" href=\"/assets/index-f123c06a.css\">\r\n \u003C/head>\r\n \u003Cbody>\r\n \u003Cdiv id=\"app\">\u003C/div>\r\n\r\n \u003C/body>\r\n\u003C/html>\r\n```\r\n\r\nThat is basically an \"empty\" page. Let's look at the response code:\r\n```\r\n$ curl -I http://localhost:8000/foo\r\nHTTP/1.1 200 OK\r\nX-Woodpecker-Version: next-45319b24\r\n# ...etc.\r\n```\r\n\r\nThat should have returned 404.\r\n\r\nNow let's request a non-existent API endpoint:\r\n```\r\n$ curl -I http://localhost:8000/api/bar\r\nHTTP/1.1 200 OK\r\nX-Woodpecker-Version: next-45319b24\r\n# ...etc.\r\n```\r\n\r\nSame thing.\r\n\r\nNow let's request a real API endpoint, for healthchecks:\r\n```\r\n$ curl http://localhost:8000/api/healthz\r\n\u003C!DOCTYPE html>\r\n\u003Chtml lang=\"en\">\r\n # ...\r\n\u003C/html>\r\n\r\n$ curl -I http://localhost:8000/api/healthz\r\nHTTP/1.1 200 OK\r\nX-Woodpecker-Version: next-45319b24\r\n# ...etc.\r\n```\r\n\r\nSame thing. Also, it should not return a page, only a REST response.\r\n\r\nClean up:\r\n```\r\n$ apk delete curl\r\n$ exit\r\n```\r\n\r\nSummary:\r\n- both existent and non-existent endpoints and pages respond with 200\r\n- that means the `/api/healthz` endpoint is not working: it's a \"proof of life\" rather than \"proof of health\"\r\n- and the health endpoint should only return a json REST response, not a page\r\n\r\n### System Info\r\n\r\n```shell\r\nversion next-45319b24-alpine\r\ndockerised\r\n```\r\n\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] Checked that the bug isn't fixed in the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\r\n- [X] Check that this is a concrete bug. For Q&A join our [Discord Chat Server](https://discord.gg/fcMQqSMXJy) or the [Matrix room](https://matrix.to/#/#woodpecker:matrix.org).",[2009,2010],{"name":1999,"color":2000},{"name":2011,"color":2012},"server","5D7A92",1947,"All pages and API endpoints (including non-existent ones) return 200","2025-03-16T13:50:31Z","https://github.com/woodpecker-ci/woodpecker/issues/1947",0.7735725,{"description":2019,"labels":2020,"number":2024,"owner":1988,"repository":1989,"state":1990,"title":2025,"updated_at":2026,"url":2027,"score":2028},"### Clear and concise description of the problem\r\n\r\nCurrently, tracking usage pattern is hard for admins as there is no easy way to get queue statistics over time. The API endpoint `queue/info` provides some basic stats but one would need to query it every few seconds/minute and then post-process the data manually into a dashboard.\r\n\r\nYes, there is a prometheus endpoint at `/metrics` and some user-provided dasbhoard (e.g. https://github.com/Janik-Haag/woodpecker-grafana-dashboard) but having a built-in view would be really great.\r\n\r\n### Suggested solution\r\n\r\nAdd a simple dashboard to `admin#queue` which shows queue utilization over time. \r\n\r\nBonus: group the stats by agent (e.g. to infer how many builds for a given architecture were requested)\r\n\r\nhttps://github.com/arl/statsviz might be a library for this.\r\n\r\n### Alternative\r\n\r\n_No response_\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Checked that the feature isn't part of the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't already an [issue](https://github.com/woodpecker-ci/woodpecker/issues) that request the same feature to avoid creating a duplicate.",[2021],{"name":2022,"color":2023},"enhancement","7E1FE4",3105,"Queue/Metrics utilization dashboard for usage overview","2024-01-02T17:04:24Z","https://github.com/woodpecker-ci/woodpecker/issues/3105",0.7774493,{"description":2030,"labels":2031,"number":2039,"owner":1988,"repository":1989,"state":1990,"title":2040,"updated_at":2041,"url":2042,"score":2043},"### Clear and concise description of the problem\r\n\r\nIt is not possible to see list of older pipelines for a repo\r\n\r\n### Suggested solution\r\n\r\nAdd pagination on https://ci.woodpecker-ci.org/repos/3780\r\n\r\n### Alternative\r\n\r\nAdd a load more button.\r\nAlthough, I prefer pagination, because then you can share a link to the page and you will see the same view.\r\n\r\n### Additional context\r\n\r\n#### Relevant code\r\nBackend does have support for pagination\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/6432109daf7e7a466c25dcc1a4f540b3dd766d94/server/api/pipeline.go#L104\r\nThe frontend store needs to support it\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/6432109daf7e7a466c25dcc1a4f540b3dd766d94/web/src/store/pipelines.ts#L50\r\nThe frontend component needs to have a button, etc.\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/6432109daf7e7a466c25dcc1a4f540b3dd766d94/web/src/components/repo/pipeline/PipelineList.vue\r\n\r\n### Validations\r\n\r\n- [X] Checked that the feature isn't part of the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't already an [issue](https://github.com/woodpecker-ci/woodpecker/issues) that request the same feature to avoid creating a duplicate.",[2032,2035,2036],{"name":2033,"color":2034},"ui","46DEA2",{"name":1985,"color":1986},{"name":2037,"color":2038},"good first issue","76ea72",2976,"Add pagination on repo pipelines view","2024-11-27T15:02:03Z","https://github.com/woodpecker-ci/woodpecker/issues/2976",0.7785944,{"description":2045,"labels":2046,"number":2051,"owner":1988,"repository":1989,"state":1990,"title":2052,"updated_at":2053,"url":2054,"score":2055},"### Clear and concise description of the problem\n\nWhenever a new secret variables is introduced into the project either the existing admin needs to add it as a secret to woodpecker or someone needs to add the developer as an admin to the WOODPECKER_ADMIN environment variable and restart the woodpecker instance.\n\n### Suggested solution\n\nWe could provide authenticated users, which have write permissions to the repository, with an ability to add, remove and edit secrets\n\n### Alternative\n\nAs an alternative we could provide admins with aт interface on web-ui to set other users as an admin. This web-ui also could be useful in case, when registrations are closed (WOODPECKER_OPEN=false), but you want to give someone access to the woodpecker (as far as I know right now it's only possible to do that using cli tool)\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\n- [X] Check that there isn't already an [issue](https://github.com/woodpecker-ci/woodpecker/issues) that request the same feature to avoid creating a duplicate.",[2047,2048],{"name":2022,"color":2023},{"name":2049,"color":2050},"ux","fef2c0",951,"Allow users with write access to repo to edit secrets","2022-06-02T21:08:44Z","https://github.com/woodpecker-ci/woodpecker/issues/951",0.7841022,{"description":2057,"labels":2058,"number":2059,"owner":1988,"repository":1989,"state":2060,"title":2061,"updated_at":2062,"url":2063,"score":2064},"### Component\r\n\r\nserver, cli, web-ui\r\n\r\n### Describe the bug\r\n\r\nThere is a breaking change in #1331 (deletion of line 88 in `server/router/api.go`)\r\n\r\n\r\n\r\nThis endpoint is used by both the clients (web and cli), so they are breaking now.\r\n\r\n### System Info\r\n\r\n```shell\r\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"dev\"}\r\n```\r\n\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] Check that this is a concrete bug. For Q&A join our [Discord Chat Server](https://discord.gg/fcMQqSMXJy) or the [Matrix room](https://matrix.to/#/#woodpecker:matrix.org).",[],1369,"closed","Broken Cancel Pipeline in Web UI and CLI","2022-10-30T13:39:03Z","https://github.com/woodpecker-ci/woodpecker/issues/1369",0.74355185,{"description":2066,"labels":2067,"number":2069,"owner":1988,"repository":1989,"state":2060,"title":2070,"updated_at":2071,"url":2072,"score":2073},"### Component\n\nserver\n\n### Describe the bug\n\nGot this error :\n\n```\nwoodpecker-server | {\"level\":\"info\",\"time\":\"2025-02-13T09:36:51Z\",\"message\":\"log level: info\"}\nwoodpecker-server | {\"level\":\"error\",\"error\":\"can't setup store: could not migrate datastore: migration cron-without-sec failed: attempt to write a readonly database\",\"time\":\"2025-02-13T09:36:51Z\",\"message\":\"error running server\"}\n```\n\n### Steps to reproduce\n\nHave a 2.8.3 with docker compose up\nEdit docker compose to 3.0.0\nUp docker compose\nGot this error\n\n### Expected behavior\n\n_No response_\n\n### System Info\n\n```shell\nClient: Docker Engine - Community\n Version: 27.3.1\n\nDocker Compose version v2.32.4\n```\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] Read the [docs](https://woodpecker-ci.org/docs/intro).\n- [x] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\n- [x] Checked that the bug isn't fixed in the `next` version already [https://woodpecker-ci.org/versions]",[2068],{"name":1999,"color":2000},4836,"Migration 2.8.3 to 3.0.0 failed - migration cron-without-sec failed","2025-02-13T14:04:04Z","https://github.com/woodpecker-ci/woodpecker/issues/4836",0.76080257,{"description":2075,"labels":2076,"number":2078,"owner":1988,"repository":1989,"state":2060,"title":2079,"updated_at":2080,"url":2081,"score":2082},"### Clear and concise description of the problem\r\n\r\nCurrently only one is supported because we didn't how goph handles this, but I opened https://github.com/melbahja/goph/issues/36 and now they responded: https://github.com/melbahja/goph/issues/36#issuecomment-1227478797. Also see https://github.com/woodpecker-ci/woodpecker/pull/861#discussion_r841204609 for the original discussion.\r\n\r\n### Suggested solution\r\n\r\nIf both WOODPECKER_BACKEND_SSH_PASSWORD and WOODPECKER_BACKEND_SSH_KEY are set, use the method that was suggested in the issue above.\r\n\r\n### Alternative\r\n\r\n_No response_\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't already an [issue](https://github.com/woodpecker-ci/woodpecker/issues) that request the same feature to avoid creating a duplicate.",[2077],{"name":2022,"color":2023},1131,"Support SSH auth with key and password","2023-03-19T19:24:45Z","https://github.com/woodpecker-ci/woodpecker/issues/1131",0.7660373,{"description":2084,"labels":2085,"number":2092,"owner":1988,"repository":1989,"state":2060,"title":2093,"updated_at":2094,"url":2095,"score":2096},"i suggest using 630c383181b10c4ec375e500c812c4b76b3c52b8 as time point",[2086,2089],{"name":2087,"color":2088},"documentation","7D625D",{"name":2090,"color":2091},"governance","A46EFE",3006,"document birth of woodpecker","2024-06-03T07:12:43Z","https://github.com/woodpecker-ci/woodpecker/issues/3006",0.76804644,["Reactive",2098],{},["Set"],["ShallowReactive",2101],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"qig3rzycQOsTP7r_UMoFKXWIrxsROoNFSkCSivbn_fM":-1},"/woodpecker-ci/woodpecker/479"]