-
Notifications
You must be signed in to change notification settings - Fork 19
Add community.lexicon.app lexicons #76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
pixeline
wants to merge
7
commits into
lexicon-community:main
Choose a base branch
from
pixeline:codex/add-community-app-lexicons
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 2 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
f62a506
fix(preference): define global scope properties
pixeline df4eb32
feat(app): add app directory lexicons
pixeline a507466
refactor(app): address lexicon review feedback
pixeline 6843a41
Merge branch 'lexicon-community:main' into codex/add-community-app-le…
pixeline 962b5ef
refactor(app): replace logo with images array
pixeline 5e662fe
refactor(app): tokenize image purpose, require non-empty links, tight…
pixeline 183c6bd
refactor(app): add discovery signals
pixeline File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| # community.lexicon.app | ||
|
|
||
| This set of Lexicon schemas describes apps built on or for the AT Protocol. | ||
|
|
||
| ## Records | ||
|
|
||
| * `entry`: A community-submitted app listing. Any account can publish an | ||
| entry for an app, including apps they do not own. | ||
|
|
||
| * `profile`: An official self-published app profile. This record should be | ||
| published by the app's official account at rkey `self`. | ||
|
|
||
| ## Official app profiles | ||
|
|
||
| Consumers may use `community.lexicon.app.entry` records for discovery, curation, | ||
| and third-party directories. When an official `community.lexicon.app.profile` | ||
| record exists, consumers should prefer that profile as the canonical app record. | ||
|
|
||
| An entry can point to an official profile with `officialProfileUri`, and can | ||
| name the app's official account with `officialAccountDid`. | ||
|
|
||
| ## Verification | ||
|
|
||
| Verification is intentionally out of scope for these records. Directories and | ||
| clients can verify ownership out of band using methods such as `rel=me`, | ||
| `.well-known` resources, or other trust policies. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,123 @@ | ||
| { | ||
| "lexicon": 1, | ||
| "id": "community.lexicon.app.entry", | ||
| "defs": { | ||
| "main": { | ||
| "type": "record", | ||
| "description": "An app entry describing an app built on or for the AT Protocol. This record may be published by third parties or by the app itself. When an official self-published app profile exists, consumers should prefer that profile as the canonical record.", | ||
| "key": "tid", | ||
| "record": { | ||
| "type": "object", | ||
| "required": ["name", "url", "recordCreatedAt"], | ||
| "properties": { | ||
| "name": { | ||
| "type": "string", | ||
| "maxLength": 200, | ||
| "maxGraphemes": 100, | ||
| "description": "The display name of the app." | ||
| }, | ||
| "url": { | ||
| "type": "string", | ||
| "format": "uri", | ||
| "description": "The primary URL for the app, such as its website, landing page, or install page." | ||
| }, | ||
| "description": { | ||
| "type": "string", | ||
| "maxLength": 1000, | ||
| "maxGraphemes": 300, | ||
| "description": "A short description of what the app does." | ||
| }, | ||
| "logo": { | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "type": "blob", | ||
| "accept": ["image/png", "image/jpeg", "image/webp", "image/svg+xml"], | ||
| "maxSize": 500000, | ||
| "description": "Primary logo for display. Should preferably be square." | ||
| }, | ||
| "tags": { | ||
| "type": "array", | ||
| "maxLength": 10, | ||
|
pixeline marked this conversation as resolved.
|
||
| "items": { | ||
| "type": "string", | ||
| "maxLength": 64, | ||
| "maxGraphemes": 32 | ||
| }, | ||
| "description": "Open discovery tags for filtering and search, preferably lowercase." | ||
| }, | ||
| "status": { | ||
| "type": "string", | ||
| "knownValues": [ | ||
| "unreleased", | ||
| "preview", | ||
| "released", | ||
| "unmaintained", | ||
| "discontinued" | ||
| ], | ||
| "description": "Current release or maintenance status of the app." | ||
| }, | ||
| "officialAccountDid": { | ||
| "type": "string", | ||
| "format": "did", | ||
| "description": "The DID of the app's official AT Protocol account, if known." | ||
| }, | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "officialProfileUri": { | ||
| "type": "string", | ||
| "format": "at-uri", | ||
| "description": "AT URI of the app's official self-published profile record, if it exists." | ||
| }, | ||
|
pixeline marked this conversation as resolved.
Outdated
pixeline marked this conversation as resolved.
Outdated
|
||
| "links": { | ||
| "type": "array", | ||
| "maxLength": 12, | ||
| "description": "Relevant links for the app, including trust/compliance, support, and project resources.", | ||
| "items": { | ||
| "type": "ref", | ||
| "ref": "#link" | ||
| } | ||
| }, | ||
| "recordCreatedAt": { | ||
| "type": "string", | ||
| "format": "datetime", | ||
| "description": "Timestamp when this entry record was created." | ||
| }, | ||
| "recordUpdatedAt": { | ||
| "type": "string", | ||
| "format": "datetime", | ||
| "description": "Timestamp when this entry record was last updated." | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "link": { | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "type": "object", | ||
| "required": ["type", "url"], | ||
| "properties": { | ||
| "type": { | ||
| "type": "string", | ||
| "knownValues": [ | ||
| "privacy", | ||
| "terms", | ||
| "support", | ||
| "contact", | ||
| "docs", | ||
| "blog", | ||
| "changelog", | ||
| "source", | ||
| "status", | ||
| "other" | ||
| ], | ||
| "description": "The kind of link." | ||
| }, | ||
| "url": { | ||
| "type": "string", | ||
| "format": "uri", | ||
| "description": "The destination URL." | ||
| }, | ||
| "label": { | ||
| "type": "string", | ||
| "maxLength": 100, | ||
| "maxGraphemes": 50, | ||
| "description": "Optional human-readable label, especially useful when type is 'other'." | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,113 @@ | ||
| { | ||
| "lexicon": 1, | ||
| "id": "community.lexicon.app.profile", | ||
| "defs": { | ||
| "main": { | ||
| "type": "record", | ||
| "description": "The official self-published profile for an app built on or for the AT Protocol. This record should be published by the app's official account and used by consumers as the canonical record for that app.", | ||
| "key": "literal:self", | ||
| "record": { | ||
| "type": "object", | ||
| "required": ["name", "url", "recordCreatedAt"], | ||
| "properties": { | ||
| "name": { | ||
| "type": "string", | ||
| "maxLength": 200, | ||
| "maxGraphemes": 100, | ||
| "description": "The display name of the app." | ||
| }, | ||
| "url": { | ||
| "type": "string", | ||
| "format": "uri", | ||
| "description": "The primary URL for the app, such as its website, landing page, or install page." | ||
| }, | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "description": { | ||
| "type": "string", | ||
| "maxLength": 1000, | ||
| "maxGraphemes": 300, | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "description": "A short description of what the app does." | ||
| }, | ||
| "logo": { | ||
| "type": "blob", | ||
| "accept": ["image/png", "image/jpeg", "image/webp", "image/svg+xml"], | ||
| "maxSize": 500000, | ||
| "description": "Primary logo for display. Should preferably be square." | ||
| }, | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "tags": { | ||
| "type": "array", | ||
| "maxLength": 10, | ||
| "items": { | ||
| "type": "string", | ||
| "maxLength": 64, | ||
| "maxGraphemes": 32 | ||
| }, | ||
| "description": "Open discovery tags for filtering and search, preferably lowercase." | ||
| }, | ||
| "status": { | ||
| "type": "string", | ||
| "knownValues": [ | ||
| "unreleased", | ||
| "preview", | ||
| "released", | ||
| "unmaintained", | ||
| "discontinued" | ||
| ], | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "description": "Current release or maintenance status of the app." | ||
| }, | ||
| "links": { | ||
| "type": "array", | ||
| "maxLength": 12, | ||
| "description": "Relevant links for the app, including trust/compliance, support, and project resources.", | ||
| "items": { | ||
| "type": "ref", | ||
| "ref": "#link" | ||
| } | ||
| }, | ||
|
pixeline marked this conversation as resolved.
|
||
| "recordCreatedAt": { | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "type": "string", | ||
| "format": "datetime", | ||
| "description": "Timestamp when this profile record was created." | ||
| }, | ||
| "recordUpdatedAt": { | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| "type": "string", | ||
| "format": "datetime", | ||
| "description": "Timestamp when this profile record was last updated." | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "link": { | ||
| "type": "object", | ||
| "required": ["type", "url"], | ||
| "properties": { | ||
| "type": { | ||
| "type": "string", | ||
| "knownValues": [ | ||
| "privacy", | ||
| "terms", | ||
| "support", | ||
| "contact", | ||
| "docs", | ||
| "blog", | ||
| "changelog", | ||
| "source", | ||
| "status", | ||
| "other" | ||
| ], | ||
| "description": "The kind of link." | ||
| }, | ||
| "url": { | ||
| "type": "string", | ||
| "format": "uri", | ||
| "description": "The destination URL." | ||
| }, | ||
| "label": { | ||
| "type": "string", | ||
| "maxLength": 100, | ||
| "maxGraphemes": 50, | ||
| "description": "Optional human-readable label, especially useful when type is 'other'." | ||
| } | ||
|
pixeline marked this conversation as resolved.
Outdated
|
||
| } | ||
| } | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.