Solenoid Properties

approvedunreviewed

by bubba8587

Adds advanced data table property types to your frontmatter with a popup editor.

★ 2 stars↓ 745 downloadsUpdated 13d agoMIT

Solenoid Properties

An Obsidian plugin that adds Solenoid's objects to the available property types, wraps them in clickable buttons, and adds Solenoid's pop-up editor for easy entry + management of tabular data inside your frontmatter.

A note's properties shown as Solenoid chips: lists, a table, a frame and a cube

The plugin also ships a theme to make your Obsidian vault look and feel like Solenoid, in any of Solenoid's palettes and with the accent you pick. Enable it in the plugin settings.

An Obsidian vault wearing the Solenoid look

Property types

TypeDescriptionChip
Numeric, String, Date, Complex and Boolean ListA 1-D row of data. Same format as Obsidian's mixed List, but restricted to one data type.[N× List]
Num, Str, Date, Cx Bool MatrixA 2-D data set. One data type.[R×C Table]
FrameAnalogous to pandas dataframe. A set of data columns, with headers. Each column can have one data type.[R×C Frame]
CubeLike the Frame, but can contain all other object types in its cells for nested data.[R×C×D Cube]

The pop-up editor open on a text list

Solenoid Property objects save as block-style YAML:

---
scores:
  - 92
  - 85
  - 77
grid:
  - - 1
    - 2
    - 3
  - - 4
    - 5
    - 6
orders:
  - item: Widget
    qty: 3
    due: 2026-10-01
  - item: Gasket
    qty: 12
    due: 2026-10-04
---

Solenoid importing the same note, each property on its own typed socket

Knap notes

Add knap: true to a note's properties and Reading view renders its body as a Knap template, filled from the note's own properties:

---
knap: true
qty: 3
orders:
  - item: Widget
    due: 2026-10-01
  - item: Gasket
    due: 2026-10-04
---
{{ qty }} of each, in {{ orders | length }} orders: {{ orders }}

{% for o in orders %}
- {{ o.item }}, due {{ o.due | date:"D MMM" }}
{% endfor %}

A bare {{ name }} on a List, Matrix, Frame or Cube property is that property's chip, and it opens the same editor as the properties panel. Any other use of the name reads the data. Live Preview renders it too, one tag or block at a time, and shows a piece's source when the cursor enters it. A tag with no matching property stays as typed, and a template error leaves the note as written, with the error at the top.

Disclosures

  • Clipboard: the pop-up editor's Copy, Copy as Markdown and copy-cell actions write to the system clipboard when you use them. The plugin never reads the clipboard.
  • No network access, no telemetry. The plugin's settings and a Frame's column types are kept in the plugin's own data.json.

Source

The source in src/ and obsidian-plugin/ is a snapshot exported from bubba8587/solenoid, where the plugin is developed, because the chips and editors are Solenoid's own components; source.json names the commit. npm ci && npm run build builds dist/ from it, and each release's files carry a GitHub build provenance attestation.

License

MIT. The bundle's third-party licenses (React, chrono-node, PapaParse, the Atkinson Hyperlegible fonts) are in THIRD-PARTY-LICENSES.txt.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.