From e808a77e08da255d6069da0f843114e05ef7d03e Mon Sep 17 00:00:00 2001 From: Carson Date: Fri, 1 May 2026 11:15:50 -0500 Subject: [PATCH 1/6] release: shinylive v0.10.9 Bump shiny to 1.6.1 and htmltools to 0.6.1. Co-Authored-By: Claude Opus 4.6 --- package.json | 2 +- packages/py-htmltools | 2 +- packages/py-shiny | 2 +- shinylive_lock.json | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index fd923995..21e60f27 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "shinylive", - "version": "0.10.8", + "version": "0.10.9", "description": "Run Shiny applications with R or Python running in the browser.", "main": "index.js", "repository": { diff --git a/packages/py-htmltools b/packages/py-htmltools index e2df351e..0e6f479a 160000 --- a/packages/py-htmltools +++ b/packages/py-htmltools @@ -1 +1 @@ -Subproject commit e2df351e47aa68688599c2a9130ea80fbb646574 +Subproject commit 0e6f479a7ca3cdaf27be425e2fc29399cac682f5 diff --git a/packages/py-shiny b/packages/py-shiny index 75a39675..5a6f254c 160000 --- a/packages/py-shiny +++ b/packages/py-shiny @@ -1 +1 @@ -Subproject commit 75a396750c0fc583a48f1a95319fe4a500032390 +Subproject commit 5a6f254ca42c731bc306fae29d6c7dfc355a3271 diff --git a/shinylive_lock.json b/shinylive_lock.json index 52dcf7c3..5ae6ccc1 100644 --- a/shinylive_lock.json +++ b/shinylive_lock.json @@ -1,8 +1,8 @@ { "htmltools": { "name": "htmltools", - "version": "0.6.0", - "filename": "htmltools-0.6.0-py3-none-any.whl", + "version": "0.6.1", + "filename": "htmltools-0.6.1-py3-none-any.whl", "sha256": null, "url": null, "depends": [ @@ -15,8 +15,8 @@ }, "shiny": { "name": "shiny", - "version": "1.6.0", - "filename": "shiny-1.6.0-py3-none-any.whl", + "version": "1.6.1", + "filename": "shiny-1.6.1-py3-none-any.whl", "sha256": null, "url": null, "depends": [ From 6fea92518f1ebde33853676401099393bb4d16c6 Mon Sep 17 00:00:00 2001 From: Carson Date: Fri, 1 May 2026 11:38:20 -0500 Subject: [PATCH 2/6] fix: Update shinywidgets to 0.8.0 and fix Makefile version extraction shinywidgets switched to dynamic versioning (hatch-vcs), so the version is now in __version.py instead of __init__.py. Updated the Makefile to check __version.py first with a fallback to __init__.py. Co-Authored-By: Claude Opus 4.6 --- Makefile | 2 +- packages/py-shinywidgets | 2 +- shinylive_lock.json | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index a122b371..17c236e5 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ SHINYLIVE_DIR = ./_shinylive # dependencies being installed first. HTMLTOOLS_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-htmltools/htmltools/__init__.py | sed -E -e 's/^__version__ = "(.*)"/\1/') SHINY_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-shiny/shiny/_version.py | sed -E "s/.*['\"]([^'\"]+)['\"]/\1/") -SHINYWIDGETS_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-shinywidgets/shinywidgets/__init__.py | sed -E -e 's/^__version__ = "(.*)"/\1/') +SHINYWIDGETS_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-shinywidgets/shinywidgets/__version.py 2>/dev/null | sed -E "s/.*['\"]([^'\"]+)['\"]/\1/" || grep '^__version__ = ' $(PACKAGE_DIR)/py-shinywidgets/shinywidgets/__init__.py | sed -E -e 's/^__version__ = "(.*)"/\1/') FAICONS_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-faicons/faicons/__init__.py | sed -E -e 's/^__version__ = "(.*)"/\1/') HTMLTOOLS_WHEEL = htmltools-$(HTMLTOOLS_VERSION)-py3-none-any.whl diff --git a/packages/py-shinywidgets b/packages/py-shinywidgets index c46111f6..83932fb5 160000 --- a/packages/py-shinywidgets +++ b/packages/py-shinywidgets @@ -1 +1 @@ -Subproject commit c46111f610d4062fe0a564873fa9b122bfba89cd +Subproject commit 83932fb557f66f2d4a4c9734df0a6e61667776e6 diff --git a/shinylive_lock.json b/shinylive_lock.json index 5ae6ccc1..7c5f7971 100644 --- a/shinylive_lock.json +++ b/shinylive_lock.json @@ -40,16 +40,16 @@ }, "shinywidgets": { "name": "shinywidgets", - "version": "0.5.2", - "filename": "shinywidgets-0.5.2-py3-none-any.whl", + "version": "0.8.0", + "filename": "shinywidgets-0.8.0-py3-none-any.whl", "sha256": null, "url": null, "depends": [ + {"name": "anywidget", "specs": []}, {"name": "ipywidgets", "specs": [[">=", "7.6.5"]]}, - {"name": "jupyter_core", "specs": []}, - {"name": "shiny", "specs": [[">=", "0.6.1.9005"]]}, + {"name": "jupyter-core", "specs": []}, {"name": "python-dateutil", "specs": [[">=", "2.8.2"]]}, - {"name": "anywidget", "specs": []} + {"name": "shiny", "specs": [[">=", "0.6.1.9005"]]} ], "imports": [ "shinywidgets" From f2e9880a9b8db61f92f702f67ecf873cabd56314 Mon Sep 17 00:00:00 2001 From: Carson Date: Fri, 1 May 2026 13:48:46 -0500 Subject: [PATCH 3/6] fix: Build shinywidgets wheel with pip instead of uv The shinywidgets Makefile now requires uv, which isn't available in the shinylive CI environment. Use pip wheel --no-deps instead. Co-Authored-By: Claude Opus 4.6 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 17c236e5..9340744b 100644 --- a/Makefile +++ b/Makefile @@ -285,7 +285,7 @@ $(PACKAGE_DIR)/$(SHINY_WHEEL): $(PYBIN) $(PACKAGE_DIR)/py-shiny $(PACKAGE_DIR)/$(SHINYWIDGETS_WHEEL): $(PYBIN) $(PACKAGE_DIR)/py-shinywidgets # Remove any old copies of the package rm -f $(PACKAGE_DIR)/shinywidgets*.whl - . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-shinywidgets && make install && mv dist/*.whl ../ + . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-shinywidgets && pip wheel --no-deps -w dist . && mv dist/*.whl ../ $(PACKAGE_DIR)/$(FAICONS_WHEEL): $(PYBIN) $(PACKAGE_DIR)/py-faicons # Remove any old copies of the package From 5391b9b80da6106e3578f61db39fbbad0517d035 Mon Sep 17 00:00:00 2001 From: Carson Date: Fri, 1 May 2026 14:35:55 -0500 Subject: [PATCH 4/6] fix: Use pip wheel for all package builds instead of delegating to subpackage Makefiles Subpackage Makefiles may require tools (e.g. uv) not available in the shinylive CI environment. Using pip wheel --no-deps directly is simpler and consistent across all packages. Co-Authored-By: Claude Opus 4.6 --- Makefile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 9340744b..e8466761 100644 --- a/Makefile +++ b/Makefile @@ -274,23 +274,22 @@ package-faicons: $(PACKAGE_DIR)/$(FAICONS_WHEEL) $(PACKAGE_DIR)/$(HTMLTOOLS_WHEEL): $(PYBIN) $(PACKAGE_DIR)/py-htmltools # Remove any old copies of the package rm -f $(PACKAGE_DIR)/htmltools*.whl - $(PYBIN)/pip install -e $(PACKAGE_DIR)/py-htmltools[dev] - . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-htmltools && make install && mv dist/*.whl ../ + . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-htmltools && pip wheel --no-deps -w ../ . $(PACKAGE_DIR)/$(SHINY_WHEEL): $(PYBIN) $(PACKAGE_DIR)/py-shiny # Remove any old copies of the package rm -f $(PACKAGE_DIR)/shiny*.whl - . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-shiny && make install && mv dist/*.whl ../ + . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-shiny && pip wheel --no-deps -w ../ . $(PACKAGE_DIR)/$(SHINYWIDGETS_WHEEL): $(PYBIN) $(PACKAGE_DIR)/py-shinywidgets # Remove any old copies of the package rm -f $(PACKAGE_DIR)/shinywidgets*.whl - . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-shinywidgets && pip wheel --no-deps -w dist . && mv dist/*.whl ../ + . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-shinywidgets && pip wheel --no-deps -w ../ . $(PACKAGE_DIR)/$(FAICONS_WHEEL): $(PYBIN) $(PACKAGE_DIR)/py-faicons # Remove any old copies of the package rm -f $(PACKAGE_DIR)/faicons*.whl - . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-faicons && make install && mv dist/*.whl ../ + . $(PYBIN)/activate && cd $(PACKAGE_DIR)/py-faicons && pip wheel --no-deps -w ../ . $(PACKAGE_DIR)/$(LIBSASS_WHEEL): $(PYBIN) $(PACKAGE_DIR)/$(LIBSASS_WHEEL) rm -f $(PACKAGE_DIR)/libsass*.whl From b7262acfb2f66185a2eb13db04b6fc019661ee5d Mon Sep 17 00:00:00 2001 From: Carson Date: Fri, 1 May 2026 14:37:59 -0500 Subject: [PATCH 5/6] refactor: Unify version extraction for all subpackages Replace four different grep patterns with a single _get_version helper that checks __version.py, __init__.py, and _version.py. This handles packages using hatch-vcs (__version.py), setuptools (_version.py), or hardcoded versions (__init__.py) consistently. Co-Authored-By: Claude Opus 4.6 --- Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index e8466761..cd493f4d 100644 --- a/Makefile +++ b/Makefile @@ -27,14 +27,14 @@ DIST_DIR = ./dist SITE_DIR = ./site SHINYLIVE_DIR = ./_shinylive -# Read htmltools and shiny versions from the package code. It's done with grep -# because if we try to load the package and read shiny.__version__, it requires -# the packages to be loadable first, which isn't possible without their -# dependencies being installed first. -HTMLTOOLS_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-htmltools/htmltools/__init__.py | sed -E -e 's/^__version__ = "(.*)"/\1/') -SHINY_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-shiny/shiny/_version.py | sed -E "s/.*['\"]([^'\"]+)['\"]/\1/") -SHINYWIDGETS_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-shinywidgets/shinywidgets/__version.py 2>/dev/null | sed -E "s/.*['\"]([^'\"]+)['\"]/\1/" || grep '^__version__ = ' $(PACKAGE_DIR)/py-shinywidgets/shinywidgets/__init__.py | sed -E -e 's/^__version__ = "(.*)"/\1/') -FAICONS_VERSION = $(shell grep '^__version__ = ' $(PACKAGE_DIR)/py-faicons/faicons/__init__.py | sed -E -e 's/^__version__ = "(.*)"/\1/') +# Extract package versions by grepping source files. Each package may define +# __version__ in __init__.py, _version.py, or __version.py (hatch-vcs). +# We use a consistent helper that checks all three locations. +_get_version = $(shell grep '^__version__ = ' $(1)/__version.py $(1)/__init__.py $(1)/_version.py 2>/dev/null | head -1 | sed -E "s/.*['\"]([^'\"]+)['\"]/\1/") +HTMLTOOLS_VERSION = $(call _get_version,$(PACKAGE_DIR)/py-htmltools/htmltools) +SHINY_VERSION = $(call _get_version,$(PACKAGE_DIR)/py-shiny/shiny) +SHINYWIDGETS_VERSION = $(call _get_version,$(PACKAGE_DIR)/py-shinywidgets/shinywidgets) +FAICONS_VERSION = $(call _get_version,$(PACKAGE_DIR)/py-faicons/faicons) HTMLTOOLS_WHEEL = htmltools-$(HTMLTOOLS_VERSION)-py3-none-any.whl SHINY_WHEEL = shiny-$(SHINY_VERSION)-py3-none-any.whl From e59a9b1c15048774c51a74b1defdf68149ee4bd1 Mon Sep 17 00:00:00 2001 From: Carson Date: Fri, 1 May 2026 14:47:10 -0500 Subject: [PATCH 6/6] chore: Sync package-lock.json version to 0.10.9 Co-Authored-By: Claude Opus 4.6 --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index fdfd76a3..b5d7d541 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "shinylive", - "version": "0.10.7", + "version": "0.10.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "shinylive", - "version": "0.10.7", + "version": "0.10.9", "license": "MIT", "devDependencies": { "@codemirror/autocomplete": "^6.4.2",