claude code agent
7257ae52d8
test(logs): cover the docker proxy stream/flush loop (F1)
...
Extract the manual stream-and-flush loop from dockerLocalProxy.ServeHTTP
into a behaviour-preserving package-private streamResponse(w, body) helper,
and add docker_test.go regression tests for the riskiest path (it runs on
every Docker API response):
- DeliversFullBodyAndFlushesPerChunk: a >32KB body delivered as several
chunks (boundaries not aligned to the 32KB buffer), with the final Read
returning (n>0, io.EOF) simultaneously, asserts the streamed body equals
the input exactly (no loss/duplication) and that Flush ran more than once
(the per-chunk flush is the whole point of the change).
- StopsOnWriteErrorWithoutPanic: a writer that errors on first Write (and
does not implement http.Flusher, exercising the nil-flusher fallback)
breaks the loop after one write without panicking.
No production behaviour change — the loop body is identical, only moved.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 02:58:48 +03:00
claude code agent
637e96f236
fix(logs): flush docker proxy stream per chunk; trim log-viewer settings UI
...
Backend (the "logs arrive every ~5s / pipe clogged" bug):
- dockerLocalProxy.ServeHTTP streamed the docker socket response via
io.Copy, which buffers ~2KB into the ResponseWriter and only flushes
when full or on handler return. Low-throughput streaming endpoints
(container logs follow=1, events, stats, attach) therefore arrived in
multi-second batches. Stream manually and Flush() after each chunk so
they are delivered live. Behaviour is otherwise identical to io.Copy
(full-write contract, EOF handling, Debug error logging); hijacked
attach/exec go through a separate websocket handler, unaffected.
- NewSingleHostReverseProxyWithHostHeader: set FlushInterval = -1 so the
remote-endpoint path streams live too.
Frontend (maintainer UI asks):
- Remove the line-selection mechanic entirely (Copy-selected-lines and
Unselect buttons, selectLine/copySelection/clearSelection, selectedLines
state, line_selected highlight): selecting/copying is mouse-native. Copy
(all visible) and Download stay.
- Rename the unclear "Fetch" since-selector label to "Since".
- Move the settings controls into the widget header (rd-widget-header
default transclude slot) so they share one row with the "Log viewer
settings" title, reclaiming vertical space for the log pane.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 02:05:02 +03:00
andres-portainer
e664bf0e19
fix(helm): add missing SSRF protections BE-13136 ( #3001 )
2026-06-22 20:25:10 -03:00
andres-portainer
a6370808ae
fix(ssrf): disable HTTP/2 for some specific cases BE-13121 ( #2996 )
2026-06-22 16:13:43 -03:00
Phil Calder
f596c862b3
fix(websocket): enforce environment authorization on kubernetes-shell [BE-13027] ( #2774 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Co-authored-by: oscarzhou <oscar.zhou@portainer.io >
2026-06-22 15:09:41 +12:00
bernard-portainer
5395dee4c6
feat(gpu-stats): add gpu stats to environments [C9S-200] ( #2735 )
2026-06-22 09:21:43 +12:00
andres-portainer
26334e9088
feat(ssrf): add missing transport wrappings and more checks BE-13021 ( #2968 )
2026-06-19 20:26:03 -03:00
RHCowan
37bd8c06b5
fix(security): gate docker dashboard and edge async command routes [R8S-1057] ( #2953 )
2026-06-19 11:08:01 +12:00
Chaim Lev-Ari
4d539a691d
feat(custom-templates): reuse existing git sources in create/update [BE-13053] ( #2925 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 21:45:35 +03:00
Chaim Lev-Ari
ee8e73d7f9
feat(edge/stacks): use source ID for edge stack git creation [BE-13044] ( #2926 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-16 17:33:19 +03:00
Chaim Lev-Ari
d9673e33ec
feat(helm): reuse existing git sources in Kubernetes Helm-from-git install [BE-13046] ( #2900 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2026-06-15 22:01:31 +03:00
andres-portainer
16b5554f66
fix(customtemplates): add resource controls BE-13019 ( #2897 )
2026-06-15 14:59:07 -03:00
Chaim Lev-Ari
fcdd6b4510
feat(stacks): use source id to create git stacks [BE-13043] ( #2870 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 18:49:26 +03:00
Devon Steenberg
8b21dfc318
feat(ssrf): add ssrf allow list to settings [BE-13021] ( #2858 )
2026-06-12 15:16:06 +12:00
andres-portainer
0da42c01b6
feat(gitcredential): remove GitCredential BE-12919 ( #2838 )
2026-06-11 18:53:24 -03:00
Steven Kang
1cd6017df6
fix(api): add endpoint authorization check to /api/kubernetes/{id}/* route - develop [R8S-1056] ( #2829 )
2026-06-11 09:49:50 +12:00
andres-portainer
babb4ffb37
fix(nolint): remove unnecessary nolint directives BE-13074 ( #2852 )
2026-06-10 15:35:08 -03:00
LP B
0c2f07988a
feat(app/sources): source create view ( #2680 )
...
Co-authored-by: Chaim Lev-Ari <chaim.lev-ari@portainer.io >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-10 21:34:46 +03:00
andres-portainer
1765e41fd4
feat(ssrf): implement an SSRF protection mechanism BE-13021 ( #2818 )
2026-06-09 00:41:42 -03:00
andres-portainer
df7a4b5d6f
feat(gitops): improve the data model BE-12919 ( #2819 )
2026-06-08 15:01:55 -03:00
Josiah Clumont
e3e2a3b782
fix(environments): Environment Groups detail view environment breakdown regression [BE-13051] ( #2828 )
2026-06-08 16:03:32 +12:00
andres-portainer
8daf0bb2a9
feat(customtemplates): use Sources for CustomTemplates BE-12919 ( #2759 )
2026-06-05 01:51:18 -03:00
Chaim Lev-Ari
d2b56efcb4
feat(security): require setup token for admin init and restore [BE-13029] ( #2770 )
2026-06-04 09:15:23 +03:00
Hannah Cooper
916367dccb
fix(api-docs): time.Duration bounds fix + linting fixes [C9S-223] ( #2762 )
2026-06-04 15:14:07 +12:00
Chaim Lev-Ari
2ba8b582e2
feat(api): use generated api client [BE-12901] ( #2727 )
2026-06-03 14:37:39 +03:00
Chaim Lev-Ari
bc81eb7a22
feat(sources): allow user to edit source [BE-12956] ( #2748 )
2026-06-03 12:52:41 +03:00
Steven Kang
b233453cf7
feat(kubernetes): display cached images per node [R8S-898] ( #2068 )
2026-06-03 10:40:14 +12:00
Steven Kang
eb5ee3bfdb
fix(kubernetes): improve PVC deletion UX based on workload usage [R8S-1046] ( #2766 )
2026-06-03 09:43:07 +12:00
Steven Kang
86a84c3c6a
fix(kubernetes): updated wrong tooltip for container restart feature-gate [R8S-1037] ( #2721 )
2026-06-03 09:26:04 +12:00
andres-portainer
1fa756372e
feat(gitops): general improvements BE-12919 ( #2780 )
2026-06-02 09:44:57 -03:00
Josiah Clumont
484af3c2c8
feat(environment group) detail view update v1 [c9s-206] ( #2722 )
...
Last system-test failure is also on dev
2026-06-02 16:59:18 +12:00
Devon Steenberg
742551e592
fix(registries): make gitlab proxy endpoint admin only [BE-13018] ( #2764 )
2026-06-02 15:45:57 +12:00
Chaim Lev-Ari
67590aa27d
feat(api): auto generate typescript definition from api docs [BE-9222] ( #2468 )
2026-05-31 14:51:52 +03:00
Ali
6c059c41f9
chore: bump version to 2.43.0 ( #2760 )
2026-05-30 16:56:17 +12:00
andres-portainer
f1db82934d
fix(security): fix a short-circuit condition that can lead to improper access control BE-13020 ( #2756 )
2026-05-29 20:47:59 -03:00
Hannah Cooper
28dd6b767f
fix(api-docs): API docs fixes / improvements [C9S-208] ( #2717 )
2026-05-29 11:33:06 +12:00
Josiah Clumont
98b1d7f585
feat(environment-groups): replace Datatable with SortableList and update list UI [R8S-827] ( #2661 )
2026-05-29 10:08:35 +12:00
bernard-portainer
4b4fa39670
fix(endpoint-summary): fix incorrect counts in CE [C9S-190] ( #2744 )
2026-05-28 10:38:06 +12:00
andres-portainer
ab4626e7de
feat(workflows): introduce Artifacts BE-12919 ( #2740 )
2026-05-26 16:17:32 -03:00
andres-portainer
3d09c70e13
feat(sources): add sources and workflows to the backend BE-12919 ( #2666 )
2026-05-20 20:42:10 -03:00
Nick Wilkinson
064a4304cc
chore: bump version to 2.42.0 ( #2654 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-19 13:34:13 +12:00
Steven Kang
5b9976433f
feat(k8s): Refactor Volumes page ( #2510 )
...
Co-authored-by: Nicholas Loomans <nicholas.loomans@portainer.io >
Co-authored-by: Robbie Cowan <robert.cowan@portainer.io >
Co-authored-by: RHCowan <50324595+RHCowan@users.noreply.github.com >
2026-05-19 10:39:24 +12:00
Chaim Lev-Ari
ca5f695459
feat(gitops): introduce sources details view [BE-12911] ( #2627 )
...
Co-authored-by: andres-portainer <91705312+andres-portainer@users.noreply.github.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-18 18:01:36 -03:00
Steven Kang
8cdc2f49d8
feat(kube): backend handlers for pod delete, pod restart, and capabil… ( #2491 )
...
Co-authored-by: Nicholas Loomans <nicholas.loomans@portainer.io >
2026-05-18 19:59:01 +12:00
Oscar Zhou
6163008108
fix(auth): set Secure attribute on auth cookies based on HTTPS detection [BE-12938] ( #2621 )
2026-05-16 11:09:03 +12:00
Hannah Cooper
a81b66c6b0
feat(api-docs): Introduce API docs groupings [C9S-96] ( #2656 )
2026-05-14 15:09:22 +12:00
Oscar Zhou
7f3389d6f4
chore(version): bump develop version to 2.41.1 ( #2646 )
...
Co-authored-by: Nicholas Loomans <nicholas.loomans@portainer.io >
2026-05-13 16:23:35 +12:00
Chaim Lev-Ari
d9a415f011
feat(gitops): introduce sources list view [BE-12902] ( #2550 )
2026-05-12 15:32:46 +03:00
bernard-portainer
b3a9386607
fix(edgeEnv) edge envs that haven't checked in can't be outdated [C9S-168] ( #2608 )
2026-05-12 15:14:58 +12:00
andres-portainer
2bb2b78e82
chore(csrf): remove gorilla/csrf BE-12948 ( #2618 )
2026-05-11 19:41:26 -03:00