diff --git a/surfsense_backend/app/license/release.py b/surfsense_backend/app/license/release.py index 5e8812c5f7..5dd51a966c 100644 --- a/surfsense_backend/app/license/release.py +++ b/surfsense_backend/app/license/release.py @@ -19,7 +19,7 @@ logger = logging.getLogger(__name__) # Written by bump-version.sh. Do not edit by hand. -APP_RELEASE_VERSION = "2.0.0" +APP_RELEASE_VERSION = "2.0.1" APP_RELEASE_TAG = f"v{APP_RELEASE_VERSION}" _REPO = "MODSetter/SurfSense" diff --git a/surfsense_local/VERSION b/surfsense_local/VERSION index 227cea2156..38f77a65b3 100644 --- a/surfsense_local/VERSION +++ b/surfsense_local/VERSION @@ -1 +1 @@ -2.0.0 +2.0.1 diff --git a/surfsense_local/backend/pyproject.toml b/surfsense_local/backend/pyproject.toml index e49c683661..4e3b95da39 100644 --- a/surfsense_local/backend/pyproject.toml +++ b/surfsense_local/backend/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "surfsense-local-backend" -version = "2.0.0" +version = "2.0.1" description = "SurfSense Community Local backend" requires-python = ">=3.12" dependencies = [ diff --git a/surfsense_local/backend/uv.lock b/surfsense_local/backend/uv.lock index 0f0aacc7e2..24fb301f2c 100644 --- a/surfsense_local/backend/uv.lock +++ b/surfsense_local/backend/uv.lock @@ -1144,7 +1144,7 @@ name = "macholib" version = "1.16.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "altgraph", marker = "sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32'" }, + { name = "altgraph" }, ] sdist = { url = "https://files.pythonhosted.org/packages/10/2f/97589876ea967487978071c9042518d28b958d87b17dceb7cdc1d881f963/macholib-1.16.4.tar.gz", hash = "sha256:f408c93ab2e995cd2c46e34fe328b130404be143469e41bc366c807448979362", size = 59427, upload-time = "2025-11-22T08:28:38.373Z" } wheels = [ @@ -2678,7 +2678,7 @@ wheels = [ [[package]] name = "surfsense-local-backend" -version = "2.0.0" +version = "2.0.1" source = { editable = "." } dependencies = [ { name = "alembic" }, @@ -2844,13 +2844,13 @@ resolution-markers = [ "python_full_version < '3.13' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32'", ] dependencies = [ - { name = "filelock", marker = "sys_platform != 'linux'" }, - { name = "fsspec", marker = "sys_platform != 'linux'" }, - { name = "jinja2", marker = "sys_platform != 'linux'" }, - { name = "networkx", marker = "sys_platform != 'linux'" }, - { name = "setuptools", marker = "sys_platform != 'linux'" }, - { name = "sympy", marker = "sys_platform != 'linux'" }, - { name = "typing-extensions", marker = "sys_platform != 'linux'" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "typing-extensions" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/17/76/bb4770f56cf6d8971671dbcbb7493e5a6a15ad2825f4e359b02c27c38297/torch-2.14.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:c1f844f1c750e87df4b68bc3afbc0e2b0c7ef19d7b8f666e48bdcf6a0c4f0056", size = 127303200, upload-time = "2026-09-02T13:43:20.311Z" }, @@ -2873,13 +2873,13 @@ resolution-markers = [ "python_full_version < '3.13' and sys_platform == 'linux'", ] dependencies = [ - { name = "filelock", marker = "sys_platform == 'linux'" }, - { name = "fsspec", marker = "sys_platform == 'linux'" }, - { name = "jinja2", marker = "sys_platform == 'linux'" }, - { name = "networkx", marker = "sys_platform == 'linux'" }, - { name = "setuptools", marker = "sys_platform == 'linux'" }, - { name = "sympy", marker = "sys_platform == 'linux'" }, - { name = "typing-extensions", marker = "sys_platform == 'linux'" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "typing-extensions" }, ] wheels = [ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.0%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:07aefe1a437b6f1b41b0cba15e16583e2f43549ec9d062fcea8e7981a78e014a", upload-time = "2026-09-02T18:31:32Z" }, @@ -2916,9 +2916,9 @@ resolution-markers = [ "python_full_version < '3.13' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32'", ] dependencies = [ - { name = "numpy", marker = "sys_platform != 'linux'" }, - { name = "pillow", marker = "sys_platform != 'linux'" }, - { name = "torch", version = "2.14.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux'" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "torch", version = "2.14.0", source = { registry = "https://pypi.org/simple" } }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/a7/d2/9daad500db2ab880eca0f0a569afd73e1afdd49f22c94560c85546dd87c2/torchvision-0.29.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:994687b818cac0e6d34cb407a41458e2c3262cb7db927465841c9522ba7ebb92", size = 1813740, upload-time = "2026-09-02T13:47:03.933Z" }, @@ -2941,9 +2941,9 @@ resolution-markers = [ "python_full_version < '3.13' and sys_platform == 'linux'", ] dependencies = [ - { name = "numpy", marker = "sys_platform == 'linux'" }, - { name = "pillow", marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.14.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'linux'" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "torch", version = "2.14.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" } }, ] wheels = [ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.29.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8ac096fe796dfacbd174be86f7ab3595a39eabc341d2ee2e48557032ec1d57c4", upload-time = "2026-09-02T00:27:43Z" }, diff --git a/surfsense_local/electron/package.json b/surfsense_local/electron/package.json index 9275b38778..9b6c56bfc1 100644 --- a/surfsense_local/electron/package.json +++ b/surfsense_local/electron/package.json @@ -1,7 +1,7 @@ { "name": "surfsense-local-electron", "private": true, - "version": "2.0.0", + "version": "2.0.1", "description": "Electron shell: spawns the API + worker sidecars, loads the Vite SPA", "author": { "name": "SurfSense", diff --git a/surfsense_local/frontend/package.json b/surfsense_local/frontend/package.json index 1e5353fcbd..941df989ef 100644 --- a/surfsense_local/frontend/package.json +++ b/surfsense_local/frontend/package.json @@ -1,7 +1,7 @@ { "name": "surfsense-local-frontend", "private": true, - "version": "2.0.0", + "version": "2.0.1", "type": "module", "scripts": { "dev": "vite", diff --git a/surfsense_local/scripts/bump-version.sh b/surfsense_local/scripts/bump-version.sh index 32361b6261..df027bc1e0 100755 --- a/surfsense_local/scripts/bump-version.sh +++ b/surfsense_local/scripts/bump-version.sh @@ -21,9 +21,36 @@ TOML_FIELD='^version[[:space:]]*=[[:space:]]*"[^"]*"' TS_FIELD='^export const APP_RELEASE_VERSION = "[^"]*"' PY_FIELD='^APP_RELEASE_VERSION = "[^"]*"' +if command -v python3 >/dev/null 2>&1; then + PYTHON=python3 +elif command -v python >/dev/null 2>&1; then + PYTHON=python +else + echo "ERROR: python3 is required to rewrite version fields" >&2 + exit 1 +fi + echo "Bumping surfsense_local to $VERSION" echo "---------------------------------" +# ponytail: GNU `sed -i` is not BSD or Windows; CPython is already on the +# Mac/Linux/Windows machines that cut this release. Ceiling: POSIX `[[:space:]]` +# in the grep patterns is mapped to `\s` here — upgrade if a field needs a +# real character class. +rewrite_first() { + "$PYTHON" - "$1" "$2" "$3" <<'PY' +import pathlib, re, sys + +path, field, replacement = pathlib.Path(sys.argv[1]), sys.argv[2], sys.argv[3] +pattern = field.replace("[[:space:]]", r"\s") +text = path.read_text(encoding="utf-8") +new, n = re.subn(pattern, replacement, text, count=1, flags=re.MULTILINE) +if n != 1: + raise SystemExit(f"no version field match in {path}") +path.write_text(new, encoding="utf-8") +PY +} + bump() { local file="$1" field="$2" replacement="$3" if [ ! -f "$file" ]; then @@ -42,7 +69,7 @@ bump() { return fi - sed -i "0,/$field/s//$replacement/" "$file" + rewrite_first "$file" "$field" "$replacement" if ! grep -qF "$replacement" "$file"; then echo "ERROR: failed to rewrite version in $file" >&2 diff --git a/surfsense_web/lib/app-release.ts b/surfsense_web/lib/app-release.ts index fc9bf276e4..b396212fe0 100644 --- a/surfsense_web/lib/app-release.ts +++ b/surfsense_web/lib/app-release.ts @@ -8,7 +8,7 @@ * No React and no directives, so server and client code can both import it. */ -export const APP_RELEASE_VERSION = "2.0.0"; +export const APP_RELEASE_VERSION = "2.0.1"; export const APP_RELEASE_TAG = `v${APP_RELEASE_VERSION}`;