Webhooks
diff --git a/sdks/flutter/dart/CHANGELOG.md b/sdks/flutter/dart/CHANGELOG.md
index bf2e136..52bfd92 100644
--- a/sdks/flutter/dart/CHANGELOG.md
+++ b/sdks/flutter/dart/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.19 (2026-07-04)
+
+- Release 0.1.19.
+
## 0.1.18 (2026-07-04)
- Release 0.1.18.
diff --git a/sdks/flutter/dart/pubspec.yaml b/sdks/flutter/dart/pubspec.yaml
index 89f4baf..a029ef2 100644
--- a/sdks/flutter/dart/pubspec.yaml
+++ b/sdks/flutter/dart/pubspec.yaml
@@ -1,6 +1,6 @@
name: checkgate_flutter
description: Checkgate feature-flag SDK for Flutter — local evaluation via Rust FFI.
-version: 0.1.18
+version: 0.1.19
homepage: https://github.com/thinkgrid-labs/checkgate
environment:
diff --git a/sdks/nodejs/package.json b/sdks/nodejs/package.json
index ced89e6..4d0ec9b 100644
--- a/sdks/nodejs/package.json
+++ b/sdks/nodejs/package.json
@@ -1,6 +1,6 @@
{
"name": "@checkgate/node",
- "version": "0.1.18",
+ "version": "0.1.19",
"description": "Checkgate feature-flag SDK for Node.js — local evaluation via Rust NAPI.",
"main": "index.js",
"types": "index.d.ts",
diff --git a/sdks/react-native/.gitignore b/sdks/react-native/.gitignore
index 5c0ba5b..1acdbac 100644
--- a/sdks/react-native/.gitignore
+++ b/sdks/react-native/.gitignore
@@ -3,3 +3,9 @@
# fresh by CI before every release — committing it risks it silently drifting
# out of sync with core/ between releases (as it had, prior to this).
/rust-core
+
+# Local Gradle build cache — machine-specific, never meant to be committed.
+# Got swept into git at some point and, because package.json's `files` field
+# includes the whole `android/` directory, shipped inside the published npm
+# tarball too (harmless but junk — see v0.1.18 postmortem).
+android/.gradle
diff --git a/sdks/react-native/android/.gradle/8.9/checksums/checksums.lock b/sdks/react-native/android/.gradle/8.9/checksums/checksums.lock
deleted file mode 100644
index d406f5e..0000000
Binary files a/sdks/react-native/android/.gradle/8.9/checksums/checksums.lock and /dev/null differ
diff --git a/sdks/react-native/android/.gradle/8.9/checksums/sha1-checksums.bin b/sdks/react-native/android/.gradle/8.9/checksums/sha1-checksums.bin
deleted file mode 100644
index ec537e9..0000000
Binary files a/sdks/react-native/android/.gradle/8.9/checksums/sha1-checksums.bin and /dev/null differ
diff --git a/sdks/react-native/android/.gradle/8.9/dependencies-accessors/gc.properties b/sdks/react-native/android/.gradle/8.9/dependencies-accessors/gc.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/sdks/react-native/android/.gradle/8.9/executionHistory/executionHistory.lock b/sdks/react-native/android/.gradle/8.9/executionHistory/executionHistory.lock
deleted file mode 100644
index 2b271d5..0000000
Binary files a/sdks/react-native/android/.gradle/8.9/executionHistory/executionHistory.lock and /dev/null differ
diff --git a/sdks/react-native/android/.gradle/8.9/fileChanges/last-build.bin b/sdks/react-native/android/.gradle/8.9/fileChanges/last-build.bin
deleted file mode 100644
index f76dd23..0000000
Binary files a/sdks/react-native/android/.gradle/8.9/fileChanges/last-build.bin and /dev/null differ
diff --git a/sdks/react-native/android/.gradle/8.9/fileHashes/fileHashes.lock b/sdks/react-native/android/.gradle/8.9/fileHashes/fileHashes.lock
deleted file mode 100644
index c890a53..0000000
Binary files a/sdks/react-native/android/.gradle/8.9/fileHashes/fileHashes.lock and /dev/null differ
diff --git a/sdks/react-native/android/.gradle/8.9/gc.properties b/sdks/react-native/android/.gradle/8.9/gc.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/sdks/react-native/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/sdks/react-native/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock
deleted file mode 100644
index fdc2cba..0000000
Binary files a/sdks/react-native/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ
diff --git a/sdks/react-native/android/.gradle/buildOutputCleanup/cache.properties b/sdks/react-native/android/.gradle/buildOutputCleanup/cache.properties
deleted file mode 100644
index 31ef225..0000000
--- a/sdks/react-native/android/.gradle/buildOutputCleanup/cache.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-#Fri Apr 10 23:03:17 PST 2026
-gradle.version=8.9
diff --git a/sdks/react-native/android/.gradle/vcs-1/gc.properties b/sdks/react-native/android/.gradle/vcs-1/gc.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/sdks/react-native/package.json b/sdks/react-native/package.json
index a2463c1..30b0063 100644
--- a/sdks/react-native/package.json
+++ b/sdks/react-native/package.json
@@ -1,6 +1,6 @@
{
"name": "@checkgate/react-native",
- "version": "0.1.18",
+ "version": "0.1.19",
"description": "Checkgate feature-flag SDK for React Native — local evaluation via Rust JSI.",
"main": "index.js",
"license": "MIT",
diff --git a/sdks/web/package.json b/sdks/web/package.json
index c62f80b..2203f02 100644
--- a/sdks/web/package.json
+++ b/sdks/web/package.json
@@ -1,6 +1,6 @@
{
"name": "@checkgate/web",
- "version": "0.1.18",
+ "version": "0.1.19",
"description": "Checkgate feature-flag SDK for the web — local evaluation via WebAssembly.",
"main": "index.js",
"module": "index.js",
diff --git a/server/src/api/session.rs b/server/src/api/session.rs
index df4e2df..7f7ce0a 100644
--- a/server/src/api/session.rs
+++ b/server/src/api/session.rs
@@ -527,10 +527,17 @@ pub async fn setup_complete(
))
}
-/// Returns workspace name — used by the login page to personalise the UI.
+/// Returns workspace name and setup status — public (no session required),
+/// so the frontend can tell "setup already done, go to /login" apart from
+/// "setup not done yet" *before* the user has any session cookie. `/api/auth/me`
+/// can't be used for this on its own: it 401s for anyone without a valid
+/// session, which is exactly the case of someone who needs to log in.
pub async fn workspace_info(State(state): State
) -> Json {
let workspace_name = get_workspace_name(&state).await;
- Json(serde_json::json!({ "workspace_name": workspace_name }))
+ let is_setup_complete = get_is_setup_complete(&state).await;
+ Json(
+ serde_json::json!({ "workspace_name": workspace_name, "is_setup_complete": is_setup_complete }),
+ )
}
// ---------------------------------------------------------------------------