+8
.claude/commands/fastcommit.md
+8
.claude/commands/fastcommit.md
···3+This task uses the same logic as the commit task (.claude/commands/commit.md) but automatically selects the first suggested commit message without asking for confirmation.8+All other behaviors remain the same as the commit task (format, package names, staged files only)
+4
-1
.gitignore
+4
-1
.gitignore
+1
-1
cmd/validate-lexicon/main.go
+1
-1
cmd/validate-lexicon/main.go
···func loadSchemasWithDebug(catalog *lexicon.BaseCatalog, schemaPath string, verbose bool) error {
-19
internal/atproto/lexicon/social/coves/post/microblog.json
-19
internal/atproto/lexicon/social/coves/post/microblog.json
···
+209
internal/atproto/lexicon/social/coves/richtext/README.md
+209
internal/atproto/lexicon/social/coves/richtext/README.md
···5+Rich text facets provide a way to annotate ranges of text with formatting, mentions, links, and other features in the Coves platform. This implementation follows the AT Protocol standards while extending them with additional formatting options.9+**IMPORTANT**: All byte indices in facets use UTF-8 byte positions, not character positions or UTF-16 code units.13+The AT Protocol uses UTF-8 byte counting to ensure consistent text indexing across all platforms and programming languages. This is crucial because:15+1. **Character counting varies** - What counts as one "character" differs between Unicode grapheme clusters, code points, and visual characters16+2. **UTF-16 inconsistencies** - JavaScript uses UTF-16 internally, but other languages don't
+36
-5
internal/atproto/lexicon/social/coves/richtext/facet.json
+36
-5
internal/atproto/lexicon/social/coves/richtext/facet.json
·········
+351
internal/atproto/lexicon/social/coves/richtext/facet_test.go
+351
internal/atproto/lexicon/social/coves/richtext/facet_test.go
···146+if i+len(tt.substring) <= len(tt.text) && tt.text[i:i+len(tt.substring)] == tt.substring {
+2
-4
tests/lexicon_validation_test.go
+2
-4
tests/lexicon_validation_test.go
······
validate-lexicon
validate-lexicon
This is a binary file and will not be displayed.