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
Josiah Clumont
217fe870ef
fix(git): use ListContext instead of List when fetching remote refs [C9S-263] ( #2939 )
2026-06-22 08:30:20 +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
andres-portainer
c821a1c59f
fix(git): avoid cloning to memory and bypassing symlinking restriction BE-13115 ( #2961 )
2026-06-18 16:21:09 -03:00
Dakota Walsh
f5d0b3d849
feat(kubernetes): Gateway api client included in kubeclient [C9S-244] ( #2884 )
2026-06-18 14:37:42 +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
Steven Kang
f87fec6d61
fix(omni): prevent partial cluster creation on Talos/Kubernetes mismatch [R8S-1058] ( #2849 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-12 11:50:16 +12:00
andres-portainer
0da42c01b6
feat(gitcredential): remove GitCredential BE-12919 ( #2838 )
2026-06-11 18:53:24 -03:00
Cara Ryan
f3f0ca8e21
fix(rbac): Filter get namespace by allowed namespace list [SEC-61] ( #2743 )
2026-06-11 15:51:32 +12:00
Xing
ac3416c5a2
feat(policies): define ObservabilityK8s policy type with deploy-and-connect and connect-only modes [C9S-121] ( #2706 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 15:09:33 +12: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
Ali
d7a1d34be7
feat(policies): docker cleanup policy [c9s-87] ( #2681 )
2026-06-10 16:17:23 +12:00
andres-portainer
154c19403a
fix(chisel): release a lock earlier to avoid a deadlock and clean stale tunnels immediately BE-13050 ( #2815 )
2026-06-09 10:41:05 -03:00
andres-portainer
1765e41fd4
feat(ssrf): implement an SSRF protection mechanism BE-13021 ( #2818 )
2026-06-09 00:41:42 -03:00
Oscar Zhou
5cdd0023d7
fix(registry): suppress ecr token pre-validation error with warning log [BE-13059] ( #2827 )
2026-06-09 10:58:50 +12: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
Ali
0143393a8c
chore(policies): use generic policy reconcile system so more than helm can be used [c9s-88] ( #2613 )
2026-06-05 07:47:25 +12: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
Oscar Zhou
a54fc041b0
fix(stacks): git polling failures caused by cancelled deployment context [BE-12980] ( #2751 )
2026-06-03 16:12:07 +12:00
Steven Kang
b233453cf7
feat(kubernetes): display cached images per node [R8S-898] ( #2068 )
2026-06-03 10:40:14 +12:00
andres-portainer
bc5136a197
fix(images): improve the image status indicator performance BE-13033 ( #2781 )
2026-06-02 19:25:51 -03:00
Xing
e08ee08fd8
fix(policies): implement Helm release conflict detection for chart-based policies [C9S-204] ( #2690 )
2026-06-03 10:22:03 +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
edb348c273
feat(useractivity): fix a goroutine leak BE-12969 ( #2767 )
2026-06-02 18:23:01 -03:00
andres-portainer
99547044bc
feat(boltdb): optimize encrypted connections BE-12995 ( #2769 )
2026-06-02 14:58:05 -03: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