From 518b23e264a0eff6199050d50c5e149d3bd5197d Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Thu, 22 Jan 2026 22:26:07 +0100 Subject: [PATCH 1/8] Add vscode settings for lexicon intellisense --- .vscode/extensions.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..03eaab2 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["slicesnetwork.lexicon-intellisense"] +} From 6231d28f3165b7f878bd3b71b67ae9b59ff0f6cc Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Thu, 22 Jan 2026 22:27:05 +0100 Subject: [PATCH 2/8] Add descriptions and length validation to string values --- lexicons/com/germnetwork/declaration.json | 32 ++++++++++++++++------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/lexicons/com/germnetwork/declaration.json b/lexicons/com/germnetwork/declaration.json index 7013b5e..4ca225d 100644 --- a/lexicons/com/germnetwork/declaration.json +++ b/lexicons/com/germnetwork/declaration.json @@ -4,25 +4,35 @@ "defs": { "main": { "type": "record", - "description": "A delegate messaging id", + "description": "A declaration of a Germ Network account", "key": "literal:self", "record": { "type": "object", "required": ["version", "currentKey"], "properties": { "version": { - "type": "string" + "type": "string", + "description": "Semver version number, without pre-release or build information, for the format of opaque content", + "maxLength": 100, + "minLength": 5 }, "currentKey": { - "type": "bytes" + "type": "bytes", + "description": "Opaque value, an ed25519 public key prefixed with a byte enum" + }, + "messageMe": { + "type": "ref", + "ref": "#messageMe", + "description": "Controls who can message this account" }, - "messageMe": { "type": "ref", "ref": "#messageMe" }, "keyPackage": { - "type": "bytes" + "type": "bytes", + "description": "Opaque value, contains MLS KeyPackage(s), and other signature data, and is signed by the currentKey" }, "continuityProofs": { "type": "array", - "items": { "type": "bytes" } + "items": { "type": "bytes" }, + "description": "Array of opaque values to allow for key rolling" } } } @@ -33,13 +43,17 @@ "properties": { "messageMeUrl": { "type": "string", - "format": "uri" + "format": "uri", + "description": "A URL to present to an account that does not have its own com.germnetwork.declaration record, must have an empty fragment component, where the app should fill in the fragment component with the DIDs of the two accounts who wish to message each other" }, "showButtonTo": { "type": "string", - "knownValues": ["usersIFollow", "everyone"] + "maxLength": 100, + "minLength": 1, + "knownValues": ["usersIFollow", "everyone"], + "description": "The policy of who can message the account, this value is included in the keyPackage, but is duplicated here to allow applications to decide if they should show a 'Message on Germ' button to the viewer." } } } } -} \ No newline at end of file +} From 0346d9cadb332a3c89eeec08c29cb546b9ace890 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 23 Jan 2026 02:10:01 +0100 Subject: [PATCH 3/8] Update maxLength for version in lexicons/com/germnetwork/declaration.json --- lexicons/com/germnetwork/declaration.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lexicons/com/germnetwork/declaration.json b/lexicons/com/germnetwork/declaration.json index 4ca225d..6713cae 100644 --- a/lexicons/com/germnetwork/declaration.json +++ b/lexicons/com/germnetwork/declaration.json @@ -13,7 +13,7 @@ "version": { "type": "string", "description": "Semver version number, without pre-release or build information, for the format of opaque content", - "maxLength": 100, + "maxLength": 14, "minLength": 5 }, "currentKey": { From f3dec1b1d12a2c2e2c5521bd5207e9375b7289c5 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 23 Jan 2026 02:14:36 +0100 Subject: [PATCH 4/8] Improve length validation --- lexicons/com/germnetwork/declaration.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lexicons/com/germnetwork/declaration.json b/lexicons/com/germnetwork/declaration.json index 6713cae..fff06a5 100644 --- a/lexicons/com/germnetwork/declaration.json +++ b/lexicons/com/germnetwork/declaration.json @@ -13,8 +13,8 @@ "version": { "type": "string", "description": "Semver version number, without pre-release or build information, for the format of opaque content", - "maxLength": 14, - "minLength": 5 + "minLength": 5, + "maxLength": 14 }, "currentKey": { "type": "bytes", @@ -44,12 +44,14 @@ "messageMeUrl": { "type": "string", "format": "uri", + "minLength": 1, + "maxLength": 2047, "description": "A URL to present to an account that does not have its own com.germnetwork.declaration record, must have an empty fragment component, where the app should fill in the fragment component with the DIDs of the two accounts who wish to message each other" }, "showButtonTo": { "type": "string", - "maxLength": 100, "minLength": 1, + "maxLength": 100, "knownValues": ["usersIFollow", "everyone"], "description": "The policy of who can message the account, this value is included in the keyPackage, but is duplicated here to allow applications to decide if they should show a 'Message on Germ' button to the viewer." } From c3553916b2b4df8b18fe4fcc830f09065ed631d1 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 23 Jan 2026 03:42:27 +0100 Subject: [PATCH 5/8] Add maxGraphemes --- lexicons/com/germnetwork/declaration.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lexicons/com/germnetwork/declaration.json b/lexicons/com/germnetwork/declaration.json index fff06a5..093d09d 100644 --- a/lexicons/com/germnetwork/declaration.json +++ b/lexicons/com/germnetwork/declaration.json @@ -14,7 +14,8 @@ "type": "string", "description": "Semver version number, without pre-release or build information, for the format of opaque content", "minLength": 5, - "maxLength": 14 + "maxLength": 14, + "maxGraphemes": 14 }, "currentKey": { "type": "bytes", @@ -46,12 +47,14 @@ "format": "uri", "minLength": 1, "maxLength": 2047, + "maxGraphemes": 2047, "description": "A URL to present to an account that does not have its own com.germnetwork.declaration record, must have an empty fragment component, where the app should fill in the fragment component with the DIDs of the two accounts who wish to message each other" }, "showButtonTo": { "type": "string", "minLength": 1, "maxLength": 100, + "maxGraphemes": 100, "knownValues": ["usersIFollow", "everyone"], "description": "The policy of who can message the account, this value is included in the keyPackage, but is duplicated here to allow applications to decide if they should show a 'Message on Germ' button to the viewer." } From 242d259d1796afbb7cbafc65a78324bbf8b00109 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 23 Jan 2026 03:44:05 +0100 Subject: [PATCH 6/8] Add min/max length to continuityProofs --- lexicons/com/germnetwork/declaration.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lexicons/com/germnetwork/declaration.json b/lexicons/com/germnetwork/declaration.json index 093d09d..edb271f 100644 --- a/lexicons/com/germnetwork/declaration.json +++ b/lexicons/com/germnetwork/declaration.json @@ -33,6 +33,8 @@ "continuityProofs": { "type": "array", "items": { "type": "bytes" }, + "minLength": 0, + "maxLength": 1000000, "description": "Array of opaque values to allow for key rolling" } } From 156efec796bd729f6761bd41c192cb963e4a60ad Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 23 Jan 2026 19:34:08 +0100 Subject: [PATCH 7/8] Reduce maxLength on continuityProofs to 1000 --- lexicons/com/germnetwork/declaration.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lexicons/com/germnetwork/declaration.json b/lexicons/com/germnetwork/declaration.json index edb271f..30581ac 100644 --- a/lexicons/com/germnetwork/declaration.json +++ b/lexicons/com/germnetwork/declaration.json @@ -33,8 +33,7 @@ "continuityProofs": { "type": "array", "items": { "type": "bytes" }, - "minLength": 0, - "maxLength": 1000000, + "maxLength": 1000, "description": "Array of opaque values to allow for key rolling" } } From 6d607eafa03a18dbb0200ec000226af71a942a79 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 23 Jan 2026 19:35:21 +0100 Subject: [PATCH 8/8] Remove unnecessary maxGraphemes --- lexicons/com/germnetwork/declaration.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lexicons/com/germnetwork/declaration.json b/lexicons/com/germnetwork/declaration.json index 30581ac..18bd35a 100644 --- a/lexicons/com/germnetwork/declaration.json +++ b/lexicons/com/germnetwork/declaration.json @@ -14,8 +14,7 @@ "type": "string", "description": "Semver version number, without pre-release or build information, for the format of opaque content", "minLength": 5, - "maxLength": 14, - "maxGraphemes": 14 + "maxLength": 14 }, "currentKey": { "type": "bytes", @@ -48,14 +47,12 @@ "format": "uri", "minLength": 1, "maxLength": 2047, - "maxGraphemes": 2047, "description": "A URL to present to an account that does not have its own com.germnetwork.declaration record, must have an empty fragment component, where the app should fill in the fragment component with the DIDs of the two accounts who wish to message each other" }, "showButtonTo": { "type": "string", "minLength": 1, "maxLength": 100, - "maxGraphemes": 100, "knownValues": ["usersIFollow", "everyone"], "description": "The policy of who can message the account, this value is included in the keyPackage, but is duplicated here to allow applications to decide if they should show a 'Message on Germ' button to the viewer." }