···2//
3// For a full list of overridable settings, and general information on folder-specific settings,
4// see the documentation: https://zed.dev/docs/configuring-zed#settings-files
5-{}
00000000000
···2//
3// For a full list of overridable settings, and general information on folder-specific settings,
4// see the documentation: https://zed.dev/docs/configuring-zed#settings-files
5+{
6+ "lsp": {
7+ "nil": {
8+ // or "nixd":
9+ "initialization_options": {
10+ "formatting": {
11+ "command": ["alejandra", "--quiet", "--"] // or ["nixfmt"]
12+ }
13+ }
14+ }
15+ }
16+}
···2resolver = "2"
3# Note that we define member crates with a wildcard here and NOT with explicit
4# paths because the flake.nix is written in a way such that top-level members
5-# (`my-cli` and `my-server`) are built as different derivations which avoid being
6# rebuilt if the other package's sources change.
7members = ["crates/*"]
89[workspace.package]
10version = "0.1.0"
11-edition = "2021"
12license = "MPL-2.0"
01314[workspace.metadata.crane]
15name = "atpblog-workspace"
00000000000000000
···2resolver = "2"
3# Note that we define member crates with a wildcard here and NOT with explicit
4# paths because the flake.nix is written in a way such that top-level members
5+# (`atpblog-cli` and `atpblog-server`) are built as different derivations which avoid being
6# rebuilt if the other package's sources change.
7members = ["crates/*"]
89[workspace.package]
10version = "0.1.0"
11+edition = "2024"
12license = "MPL-2.0"
13+authors = ["orual"]
1415[workspace.metadata.crane]
16name = "atpblog-workspace"
17+18+19+[workspace.dependencies]
20+21+serde = { version = "1.0", features = ["derive"] }
22+merde = { version = "10.0.6", features = ["full"] }
23+facet = { version = "0.9.6", features = ["camino"] }
24+25+minijinja = { version = "2.9.0", default-features = false }
26+minijinja-contrib = { version = "2.9.0", default-features = false }
27+miette = { version = "7.5.0" }
28+owo-colors = { version = "4.2.0" }
29+thiserror = "2.0"
30+syntect = "5.2.0"
31+jane-eyre = "0.6.12"
32+n0-future = "=0.1.2"
33+tracing = { version = "0.1.41", default-features = false, features = ["std"] }
···1+{
2+ "lexicon": 1,
3+ "id": "sh.weaver.blog.post",
4+ "defs": {
5+ "main": {
6+ "type": "record",
7+ "description": "A blog entry",
8+ "key": "tid",
9+ "record": {
10+ "type": "object",
11+ "required": [
12+ "content", "title", "createdAt"
13+ ],
14+ "properties": {
15+ "title": { "type": "ref", "ref": "#title" },
16+ "tags": { "type": "ref", "ref": "#tags" },
17+18+ "content": {
19+ "type": "string",
20+ "maxLength": 200000,
21+ "description": "The content of the blog post. This should be some flavor of Markdown."
22+ },
23+24+ "createdAt": {
25+ "type": "ref",
26+ "ref": "#createdAt"
27+ },
28+ "images": {
29+ "type": "ref",
30+ "ref": "sh.weaver.blog.embed.images",
31+ "description": "The set of images, if any, embedded in the blog post."
32+ },
33+ }
34+ }
35+ },
36+37+ "createdAt": {
38+ "type": "string",
39+ "format": "datetime",
40+ "description": "The date and time when the blog post was created. This is used for sorting and displaying the post's creation date."
41+ },
42+ "title": {
43+ "type": "string",
44+ "maxLength": 420,
45+ "description": "The title of the blog post."
46+ },
47+ "tags": {
48+ "type": "array",
49+ "items": {
50+ "type": "string",
51+ "maxLength": 64
52+ },
53+ "maxLength": 10,
54+ "description": "An array of tags associated with the blog post. Tags can help categorize and organize posts."
55+ }
56+ }
57+}
+30
lexicons/sh.weaver.embed.defs.json
···000000000000000000000000000000
···1+{
2+ "lexicon": 1,
3+ "id": "sh.weaver.embed.defs",
4+ "defs": {
5+ "percentSize": {
6+ "type": "object",
7+ "required": ["width", "height"],
8+ "properties": {
9+ "width": { "type": "integer" },
10+ "height": { "type": "integer" },
11+ },
12+ "description": "Proportional size of the embed relative to the viewport in larger windows. The dimensions are percentage out of 100. Could we use more granularity? Maybe, but come on."
13+ },
14+ "pixelSize": {
15+ "type": "object",
16+ "required": ["width", "height"],
17+ "properties": {
18+ "width": { "type": "integer" },
19+ "height": { "type": "integer" },
20+ },
21+ "description": "Pixel-exact embed size. The dimensions are logical pixels, subject to scaling, so 200px at X2 scale is 400px."
22+ },
23+ "record": {
24+25+ },
26+ "externa": {
27+28+ }
29+ }
30+ }
+19
lexicons/sh.weaver.embed.external.json
···0000000000000000000
···1+{
2+ "lexicon": 1,
3+ "id": "sh.weaver.embed.records",
4+ "description": "A set of records embedded in a blog post.",
5+ "defs": {
6+ "main": {
7+ "type": "object",
8+ "required": ["records"],
9+ "properties": {
10+ "images": {
11+ "type": "array",
12+ "items": { "type": "ref", "ref": "#sh.weaver.embed.defs#external" },
13+ "maxLength": 48
14+ }
15+ }
16+ },
17+18+ }
19+ }
+46
lexicons/sh.weaver.embed.images.json
···0000000000000000000000000000000000000000000000
···1+{
2+ "lexicon": 1,
3+ "id": "sh.weaver.embed.images",
4+ "description": "A set of images embedded in a blog post.",
5+ "defs": {
6+ "main": {
7+ "type": "object",
8+ "required": ["images"],
9+ "properties": {
10+ "images": {
11+ "type": "array",
12+ "items": { "type": "ref", "ref": "#image" },
13+ "maxLength": 48
14+ }
15+ }
16+ },
17+ "image": {
18+ "type": "object",
19+ "required": ["image"],
20+ "properties": {
21+ "image": {
22+ "type": "blob",
23+ "accept": ["image/*"],
24+ "maxSize": 3000000
25+ },
26+ "alt": {
27+ "type": "string",
28+ "description": "alt text description of the image"
29+ },
30+ "blurhash": {
31+ "type": "string",
32+ "maxLength": 32,
33+ "description": "Blurhash string for the image, used for low-resolution placeholders. This must be a valid Blurhash string."
34+ },
35+ "dimensions": {
36+ "type": "union",
37+ "refs": [
38+ "app.bsky.embed.defs#aspectRatio",
39+ "sh.weaver.embed.defs#percentSize",
40+ "sh.weaver.embed.defs#pixelSize"
41+ ]
42+ }
43+ }
44+ },
45+ }
46+ }
+19
lexicons/sh.weaver.embed.record.json
···0000000000000000000
···1+{
2+ "lexicon": 1,
3+ "id": "computer.nonbinary.embed.records",
4+ "description": "A set of records embedded in a blog post.",
5+ "defs": {
6+ "main": {
7+ "type": "object",
8+ "required": ["records"],
9+ "properties": {
10+ "images": {
11+ "type": "array",
12+ "items": { "type": "ref", "ref": "#computer.nonbinary.embed.defs#record" },
13+ "maxLength": 48
14+ }
15+ }
16+ },
17+18+ }
19+ }