diff --git a/.changeset/opt-drag-clone-array-items.md b/.changeset/opt-drag-clone-array-items.md
new file mode 100644
index 000000000..17597eac6
--- /dev/null
+++ b/.changeset/opt-drag-clone-array-items.md
@@ -0,0 +1,5 @@
+---
+"@blinkk/root-cms": patch
+---
+
+Add opt+drag to clone array items in the CMS doc editor.
diff --git a/docs/scripts/env-init.sh b/docs/scripts/env-init.sh
index c116b0d99..ca510385b 100755
--- a/docs/scripts/env-init.sh
+++ b/docs/scripts/env-init.sh
@@ -10,10 +10,19 @@ ENV_FILE="$DOCS_DIR/.env"
PROJECT="rootjs-dev"
SECRET_NAME="docs-env"
-if [[ -f "$ENV_FILE" ]]; then
+if [[ -s "$ENV_FILE" ]]; then
exit 0
fi
echo ".env file not found, downloading from Google Secrets Manager..."
-gcloud secrets versions access latest --secret="$SECRET_NAME" --project="$PROJECT" > "$ENV_FILE"
+ENV_CONTENT="$(gcloud secrets versions access latest --secret="$SECRET_NAME" --project="$PROJECT")" || {
+ echo "ERROR: Failed to download .env from Google Secrets Manager." >&2
+ echo "Ensure gcloud is installed, you are authenticated, and have access to project '$PROJECT'." >&2
+ exit 1
+}
+if [[ -z "$ENV_CONTENT" ]]; then
+ echo "ERROR: Secret '$SECRET_NAME' returned empty content." >&2
+ exit 1
+fi
+echo "$ENV_CONTENT" > "$ENV_FILE"
echo "Downloaded .env file."
diff --git a/packages/root-cms/signin/signin.tsx b/packages/root-cms/signin/signin.tsx
index f25c870dc..dc9d88f6e 100644
--- a/packages/root-cms/signin/signin.tsx
+++ b/packages/root-cms/signin/signin.tsx
@@ -153,9 +153,26 @@ function loginSuccessRedirect() {
window.location.replace(redirectUrl);
}
-const app = initializeApp(window.__ROOT_CTX.firebaseConfig);
-const auth = getAuth(app);
-window.firebase = {app, auth};
-const root = document.getElementById('root')!;
-root.innerHTML = '';
-render(