diff --git a/forgejo-release.sh b/forgejo-release.sh
index cbe92f7..d22241d 100755
--- a/forgejo-release.sh
+++ b/forgejo-release.sh
@@ -43,7 +43,10 @@ ensure_tag() {
 }
 
 upload_release() {
-    local assets=$(ls $RELEASE_DIR/* | sed -e 's/^/-a "/' -e 's/$/" /')
+    local assets=()
+    for file in "$RELEASE_DIR"/*; do
+        assets=("${assets[@]}" -a "$file")
+    done
     if $PRERELEASE || echo "${TAG}" | grep -qi '\-rc' ; then
         releasetype="--prerelease"
         echo "Uploading as Pre-Release"
@@ -52,11 +55,11 @@ upload_release() {
     fi
     ensure_tag
     anchor=$(echo "$TAG" | sed -e 's/^v//' -e 's/[^a-zA-Z0-9]/-/g')
-    if ! "$BIN_DIR"/tea release create "$assets" --repo $REPO --note "$RELEASENOTES" --tag $TAG --title "$TITLE" --draft ${releasetype} >& "$TMP_DIR"/tea.log ; then
+    if ! "$BIN_DIR"/tea release create "${assets[@]}" --repo $REPO --note "$RELEASENOTES" --tag $TAG --title "$TITLE" --draft ${releasetype} >& "$TMP_DIR"/tea.log ; then
         if grep --quiet 'Unknown API Error: 500' "$TMP_DIR"/tea.log && grep --quiet services/release/release.go:194 "$TMP_DIR"/tea.log ; then
             echo "workaround v1.20 race condition https://codeberg.org/forgejo/forgejo/issues/1370"
             sleep 10
-            "$BIN_DIR"/tea release create "$assets" --repo $REPO --note "$RELEASENOTES" --tag "$TAG" --title "$TITLE" --draft ${releasetype}
+            "$BIN_DIR"/tea release create "${assets[@]}" --repo $REPO --note "$RELEASENOTES" --tag "$TAG" --title "$TITLE" --draft ${releasetype}
         else
             cat "$TMP_DIR"/tea.log
             return 1