diff --git a/lexicons/org/tangled/secret/addSecret.json b/lexicons/org/tangled/secret/addSecret.json
index 5f529427c..f135269ab 100644
--- a/lexicons/org/tangled/secret/addSecret.json
+++ b/lexicons/org/tangled/secret/addSecret.json
@@ -26,7 +26,7 @@
},
"value": {
"type": "string",
- "maxLength": 200,
+ "maxLength": 4096,
"minLength": 1
}
}
diff --git a/lexicons/repo/addSecret.json b/lexicons/repo/addSecret.json
index b41ab5397..5e3259b9f 100644
--- a/lexicons/repo/addSecret.json
+++ b/lexicons/repo/addSecret.json
@@ -26,7 +26,7 @@
},
"value": {
"type": "string",
- "maxLength": 200,
+ "maxLength": 4096,
"minLength": 1
}
}
diff --git a/spindle/xrpc/org_tangled_secret_add_secret.go b/spindle/xrpc/org_tangled_secret_add_secret.go
index 6a6b52260..fe854d0b2 100644
--- a/spindle/xrpc/org_tangled_secret_add_secret.go
+++ b/spindle/xrpc/org_tangled_secret_add_secret.go
@@ -22,8 +22,8 @@ func (x *Xrpc) handleOrgTangledSecretAddSecret(w http.ResponseWriter, r *http.Re
writeError(w, invalidRequest(err), http.StatusBadRequest)
return
}
- if len(input.Value) < 1 || len(input.Value) > 200 {
- writeError(w, invalidRequest(fmt.Errorf("secret value length must be between 1 and 200")), http.StatusBadRequest)
+ if len(input.Value) < 1 || len(input.Value) > maxSecretValueLen {
+ writeError(w, invalidRequest(fmt.Errorf("secret value length must be between 1 and %d", maxSecretValueLen)), http.StatusBadRequest)
return
}
actor, repo, ok := x.authorizeOrgSecretRepo(w, r, input.Repo)
diff --git a/spindle/xrpc/org_tangled_secret_common.go b/spindle/xrpc/org_tangled_secret_common.go
index da535f0b7..2c3874b60 100644
--- a/spindle/xrpc/org_tangled_secret_common.go
+++ b/spindle/xrpc/org_tangled_secret_common.go
@@ -9,9 +9,14 @@ import (
xrpcerr "tangled.org/core/xrpc/errors"
)
+const (
+ maxSecretKeyLen = 50
+ maxSecretValueLen = 4096
+)
+
func validateOrgSecretKey(key string) error {
- if len(key) < 1 || len(key) > 50 {
- return fmt.Errorf("secret key length must be between 1 and 50")
+ if len(key) < 1 || len(key) > maxSecretKeyLen {
+ return fmt.Errorf("secret key length must be between 1 and %d", maxSecretKeyLen)
}
return nil
}
diff --git a/spindle/xrpc/org_tangled_test.go b/spindle/xrpc/org_tangled_test.go
index c4927cc68..d7232bcca 100644
--- a/spindle/xrpc/org_tangled_test.go
+++ b/spindle/xrpc/org_tangled_test.go
@@ -106,7 +106,7 @@ func TestOrgSecretInputValidation(t *testing.T) {
"empty key": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Value: "value"}),
"long key": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: strings.Repeat("k", 51), Value: "value"}),
"empty value": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: valid.Key}),
- "long value": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: valid.Key, Value: strings.Repeat("v", 201)}),
+ "long value": mustJSON(t, org_tangled.SecretAddSecret_Input{Repo: repo.String(), Key: valid.Key, Value: strings.Repeat("v", 4097)}),
}
for name, body := range cases {
t.Run(name, func(t *testing.T) {
diff --git a/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte b/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte
index ae4b232cd..b9a54087c 100644
--- a/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte
+++ b/web/src/routes/[handle]/[repo]/settings/pipelines/secrets/new/+page.svelte
@@ -7,6 +7,7 @@
import Button from "$lib/components/ui/Button.svelte";
import ErrorAlert from "$lib/components/ui/Error.svelte";
import Input from "$lib/components/ui/Input.svelte";
+ import Textarea from "$lib/components/ui/Textarea.svelte";
import DrillDown from "$lib/components/settings/DrillDown.svelte";
import SettingsList from "$lib/components/settings/SettingsList.svelte";
import FormRow from "$lib/components/settings/FormRow.svelte";
@@ -46,7 +47,14 @@
-
+