From d344b6bcdbf788fb950099b16743721b428519cd Mon Sep 17 00:00:00 2001 From: Caitlin Lewis Date: Wed, 4 Mar 2026 14:09:42 -0500 Subject: [PATCH 1/2] Update GOVERNANCE.md --- GOVERNANCE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 9baaaa321..337d524c9 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -122,7 +122,7 @@ Governance decisions, meeting minutes, and voting outcomes are publicly document ## Changes to this governance document -**Effective until February 5, 2026** +**Effective until February 5, 2027** Moving forward, `fastplotlib` will maintain the governance model as outlined above. The core maintainers (Kushal Kolar & Caitlin Lewis) will revisit in one year to propose any necessary changes to the governance structure. From 118fc5c4b840e3d956df29cfaca15567c6122961 Mon Sep 17 00:00:00 2001 From: Caitlin Lewis Date: Wed, 4 Mar 2026 20:07:56 -0500 Subject: [PATCH 2/2] remove screenshot accidentally uploaded to repo (#1008) * remove file from repo * upload to lfs * update with new imgui release --- examples/guis/imgui_basic.py | 7 ++++--- .../image_volume/image_volume_render_modes.py | 4 +++- examples/screenshots/imgui_top.png | Bin 18432 -> 130 bytes 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/examples/guis/imgui_basic.py b/examples/guis/imgui_basic.py index 26b5603c0..74d3c3629 100644 --- a/examples/guis/imgui_basic.py +++ b/examples/guis/imgui_basic.py @@ -52,10 +52,10 @@ def update(self): # the UI will be used to modify the line self._line = figure[0, 0]["sine-wave"] - # get the current line RGB values - rgb_color = self._line.colors[:-1] + # get the current line RGBA values + rgba_color = self._line.colors # make color picker - changed_color, rgb = imgui.color_picker3("color", col=rgb_color) + changed_color, rgba = imgui.color_picker3("color", col=imgui.ImVec4(tuple(rgba_color))) # get current line color alpha value alpha = self._line.colors[-1] @@ -65,6 +65,7 @@ def update(self): # if RGB or alpha changed if changed_color | changed_alpha: # set new color along with alpha + rgb = (rgba[0], rgba[1], rgba[2]) self._line.colors = [*rgb, new_alpha] # example of a slider, you can also use input_float diff --git a/examples/image_volume/image_volume_render_modes.py b/examples/image_volume/image_volume_render_modes.py index d29e3b166..36705d17d 100644 --- a/examples/image_volume/image_volume_render_modes.py +++ b/examples/image_volume/image_volume_render_modes.py @@ -60,7 +60,9 @@ def update(self): _, self.graphic.substep_size = imgui.slider_float( "substep_size", v=self.graphic.substep_size, v_max=10.0, v_min=0.1, ) - _, self.graphic.emissive = imgui.color_picker3("emissive color", col=self.graphic.emissive.rgb) + + col = imgui.ImVec4((*self.graphic.emissive.rgb, 1)) + _, self.graphic.emissive = imgui.color_picker3("emissive color", col=col) if self.graphic.mode == "slice": imgui.text("Select plane defined by:\nax + by + cz + d = 0") diff --git a/examples/screenshots/imgui_top.png b/examples/screenshots/imgui_top.png index f83f2f49930a5a5fb9484be0dce735540527f55a..495446b34153fbd77cea34e1baaab0e6cbc1e1b9 100644 GIT binary patch literal 130 zcmWN@K@x)?3_#Jnr{Dq=0s_(7pd^Kvwm1#C=;_P+#rrpXrM8bMy`Qpa{jB}*Vws2K z+UKLawVZV58>UvXl9H?s8!{8wUf9TgI4gdfE literal 18432 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 E0|`;K3;+NC