Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions contracts/obsidian.base/1.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
kind: mdbase.contract
contract_type: record
id: obsidian.base
version: 1.0.0
name: Obsidian Base
description: An Obsidian Bases saved-view source stored as a YAML document record.
record_schema:
dialect: json-schema-2020-12
value:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
required: [views]
properties:
filters: {}
formulas: { type: object }
properties: { type: object }
views:
type: array
minItems: 1
items: { type: object, required: [type], properties: { type: { type: string }, name: { type: string } } }
---

# Obsidian Base

A record exposed through `obsidian.base` is an Obsidian Bases source: global
filters, formulas, property metadata, and one or more views. The schema is
deliberately permissive. Obsidian owns the format and adds keys over time;
unknown keys are preserved and ignored.

Tools that advertise `obsidian_bases_views` discover and execute these records
through this contract and evaluate them with the Obsidian Bases expression
dialect described in the [Obsidian Bases adapter](https://mdbase.dev/spec/adapters/obsidian-bases).

This artifact is passive. Implementing it grants no authority to read, execute,
or modify any record.
36 changes: 36 additions & 0 deletions dist/artifacts/contracts/obsidian.base/1.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
kind: mdbase.contract
contract_type: record
id: obsidian.base
version: 1.0.0
name: Obsidian Base
description: An Obsidian Bases saved-view source stored as a YAML document record.
record_schema:
dialect: json-schema-2020-12
value:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
required: [views]
properties:
filters: {}
formulas: { type: object }
properties: { type: object }
views:
type: array
minItems: 1
items: { type: object, required: [type], properties: { type: { type: string }, name: { type: string } } }
---

# Obsidian Base

A record exposed through `obsidian.base` is an Obsidian Bases source: global
filters, formulas, property metadata, and one or more views. The schema is
deliberately permissive. Obsidian owns the format and adds keys over time;
unknown keys are preserved and ignored.

Tools that advertise `obsidian_bases_views` discover and execute these records
through this contract and evaluate them with the Obsidian Bases expression
dialect described in the [Obsidian Bases adapter](https://mdbase.dev/spec/adapters/obsidian-bases).

This artifact is passive. Implementing it grants no authority to read, execute,
or modify any record.
51 changes: 51 additions & 0 deletions dist/artifacts/types/obsidian-base/1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
kind: mdbase.type
name: obsidian_base
version: 1
description: Obsidian Bases saved views stored as records
match:
path_glob: '**/*.base'
schema:
dialect: json-schema-2020-12
value:
$schema: https://json-schema.org/draft/2020-12/schema
title: Obsidian Base
description: An Obsidian Bases file. Obsidian owns the format; unknown keys are kept.
type: object
required:
- views
properties:
filters: {}
formulas:
type: object
properties:
type: object
views:
type: array
minItems: 1
items:
type: object
required:
- type
properties:
type:
type: string
name:
type: string
implements:
- contract: obsidian.base
version: 1.0.0
fields:
filters: filters
formulas: formulas
properties: properties
views: views
---

# Obsidian Base

Makes `.base` files discoverable as saved views through the `obsidian.base`
contract. It takes effect when the collection lists `base` in
`settings.record_extensions`; narrow the `path_glob` to the folders that hold
your Bases. Edit Bases with whole-document replacement so Obsidian's comments
and layout survive.
47 changes: 47 additions & 0 deletions dist/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,16 @@
"artifact": "./artifacts/contracts/mdbase.view/1.0.0.md",
"standards": []
},
{
"id": "obsidian.base",
"version": "1.0.0",
"name": "Obsidian Base",
"description": "An Obsidian Bases saved-view source stored as a YAML document record.",
"contract_type": "record",
"digest": "sha256:fca77a9c845223784d4af7f5e13e2f149295621ad1b794ea9bb4d99f604467e8",
"artifact": "./artifacts/contracts/obsidian.base/1.0.0.md",
"standards": []
},
{
"id": "tasknotes.task",
"version": "0.3.0-rc.3",
Expand Down Expand Up @@ -512,6 +522,43 @@
]
}
},
{
"id": "obsidian.base",
"version": "1.0.0",
"name": "Obsidian Bases",
"description": "The obsidian.base contract and an editable type that stores Obsidian Bases as records.",
"digest": "sha256:8251b351a4b00c4ea3f4d49988ae45ab52ceaf2420f57ce8105ca4cfe5eafd50",
"provision": "./packs/obsidian.base/1.0.0.json",
"provides": [
{
"id": "obsidian.base",
"version": "1.0.0",
"digest": "sha256:37e8a0bfb32bb4795c1b3c5dec613c32429aaa765dc33e4adc0c627a48f5c1ff"
}
],
"resource_count": 2,
"display": {
"name": "Obsidian Bases",
"summary": "Use Obsidian Bases files as saved views that any view-aware app can list and run.",
"category": "work",
"audience": "general",
"icon": "table",
"badges": [
"Obsidian compatible"
]
},
"installation": {
"visibility": "default",
"recommendation": "optional",
"primary_type": "obsidian_base",
"types": [
{
"name": "obsidian_base",
"label": "Obsidian base"
}
]
}
},
{
"id": "tasknotes.task",
"version": "0.3.0-rc.12",
Expand Down
42 changes: 42 additions & 0 deletions dist/packs/obsidian.base/1.0.0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"manifest": {
"kind": "mdbase.type-pack",
"id": "obsidian.base",
"version": "1.0.0",
"name": "Obsidian Bases",
"description": "The obsidian.base contract and an editable type that stores Obsidian Bases as records.",
"resources": [
{
"kind": "contract",
"mode": "managed",
"source": "contracts/obsidian.base/1.0.0.md",
"target": "_contracts/obsidian.base/1.0.0.md",
"digest": "sha256:fca77a9c845223784d4af7f5e13e2f149295621ad1b794ea9bb4d99f604467e8"
},
{
"kind": "type",
"mode": "seed",
"source": "types/obsidian-base/1.md",
"target": "_types/obsidian_base.md",
"digest": "sha256:bfeb3880200bc1bef7fd50b777d3f927ce931d08b4fb3c30d4cddb55feaf3f92"
}
]
},
"resources": [
{
"source": "contracts/obsidian.base/1.0.0.md",
"document": "---\nkind: mdbase.contract\ncontract_type: record\nid: obsidian.base\nversion: 1.0.0\nname: Obsidian Base\ndescription: An Obsidian Bases saved-view source stored as a YAML document record.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n required: [views]\n properties:\n filters: {}\n formulas: { type: object }\n properties: { type: object }\n views:\n type: array\n minItems: 1\n items: { type: object, required: [type], properties: { type: { type: string }, name: { type: string } } }\n---\n\n# Obsidian Base\n\nA record exposed through `obsidian.base` is an Obsidian Bases source: global\nfilters, formulas, property metadata, and one or more views. The schema is\ndeliberately permissive. Obsidian owns the format and adds keys over time;\nunknown keys are preserved and ignored.\n\nTools that advertise `obsidian_bases_views` discover and execute these records\nthrough this contract and evaluate them with the Obsidian Bases expression\ndialect described in the [Obsidian Bases adapter](https://mdbase.dev/spec/adapters/obsidian-bases).\n\nThis artifact is passive. Implementing it grants no authority to read, execute,\nor modify any record.\n"
},
{
"source": "types/obsidian-base/1.md",
"document": "---\nkind: mdbase.type\nname: obsidian_base\nversion: 1\ndescription: Obsidian Bases saved views stored as records\nmatch:\n path_glob: '**/*.base'\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Obsidian Base\n description: An Obsidian Bases file. Obsidian owns the format; unknown keys are kept.\n type: object\n required:\n - views\n properties:\n filters: {}\n formulas:\n type: object\n properties:\n type: object\n views:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - type\n properties:\n type:\n type: string\n name:\n type: string\nimplements:\n - contract: obsidian.base\n version: 1.0.0\n fields:\n filters: filters\n formulas: formulas\n properties: properties\n views: views\n---\n\n# Obsidian Base\n\nMakes `.base` files discoverable as saved views through the `obsidian.base`\ncontract. It takes effect when the collection lists `base` in\n`settings.record_extensions`; narrow the `path_glob` to the folders that hold\nyour Bases. Edit Bases with whole-document replacement so Obsidian's comments\nand layout survive.\n"
}
],
"provides": [
{
"id": "obsidian.base",
"version": "1.0.0",
"digest": "sha256:37e8a0bfb32bb4795c1b3c5dec613c32429aaa765dc33e4adc0c627a48f5c1ff"
}
]
}
29 changes: 29 additions & 0 deletions packs/obsidian.base/1.0.0.pack.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
kind: mdbase.catalog-pack
id: obsidian.base
version: 1.0.0
name: Obsidian Bases
description: The obsidian.base contract and an editable type that stores Obsidian Bases as records.
display:
name: Obsidian Bases
summary: Use Obsidian Bases files as saved views that any view-aware app can list and run.
category: work
audience: general
icon: table
badges:
- Obsidian compatible
installation:
visibility: default
recommendation: optional
primary_type: obsidian_base
provides:
- id: obsidian.base
version: 1.0.0
resources:
- kind: contract
mode: managed
source: contracts/obsidian.base/1.0.0.md
target: _contracts/obsidian.base/1.0.0.md
- kind: type
mode: seed
source: types/obsidian-base/1.md
target: _types/obsidian_base.md
51 changes: 51 additions & 0 deletions types/obsidian-base/1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
kind: mdbase.type
name: obsidian_base
version: 1
description: Obsidian Bases saved views stored as records
match:
path_glob: '**/*.base'
schema:
dialect: json-schema-2020-12
value:
$schema: https://json-schema.org/draft/2020-12/schema
title: Obsidian Base
description: An Obsidian Bases file. Obsidian owns the format; unknown keys are kept.
type: object
required:
- views
properties:
filters: {}
formulas:
type: object
properties:
type: object
views:
type: array
minItems: 1
items:
type: object
required:
- type
properties:
type:
type: string
name:
type: string
implements:
- contract: obsidian.base
version: 1.0.0
fields:
filters: filters
formulas: formulas
properties: properties
views: views
---

# Obsidian Base

Makes `.base` files discoverable as saved views through the `obsidian.base`
contract. It takes effect when the collection lists `base` in
`settings.record_extensions`; narrow the `path_glob` to the folders that hold
your Bases. Edit Bases with whole-document replacement so Obsidian's comments
and layout survive.
Loading