Oh Sheet!
One outline, several wider ways to see it: grids, split panes, tables, kanban, and query-backed data views — followed by the decision to make plugins the next minor series.
Tine v0.5.0 came with a cluster of features that have something in common, but absolutely do not have to be used together. The common theme is breadth: most of the time a narrow page or journal column is exactly right; other times you need more context and want to use the whole screen.
That is why people love spreadsheets, split screens, kanban boards, and database-like tables. Tine gained all of them without replacing the outline underneath.
Grids that remain outlines
I love TreeSheets. Its select/edit navigation makes it intuitive to create cells between cells, and cells can contain subgrids recursively. Tine adopted the same basic idea. A grid can contain subgrids and zooming into a block is also zooming into that subgrid.
The compatibility promise remains: a Tine grid is still an ordinary outline. Open it in Logseq and the important text is still ordinary text.
A little tine.* metadata records the view. You can take an existing outline and choose to view it as a grid, then compute aggregates such as sum or average over columns.
Split panes you can navigate
The same select/edit model turned into a keyboard model for split panes. Escape leaves block editing; another Escape selects the pane. Arrow keys choose an edge. Enter opens another pane there, while typing invokes page search and opens the chosen page in the new pane. Each pane has its own tab bar.
Tables and kanban views use the same principle: a query can show tasks from across the graph as a property table or as a TODO/DOING/DONE board, and edits still change the underlying blocks.
The less visible changes
- lsdoc v2: the parser was rebuilt from scratch around mldoc compatibility instead of continuing to patch the old design. On my graph, mldoc took roughly 4.5 seconds and lsdoc v2 roughly 70 milliseconds.
- In-app Guide: the
?menu gained read-only guide pages that can be copied into a graph and explored. The same graph drives the website demo. - Draw.io editing:
/Draw.iocan create a diagram through a locally installed editor. - One-time app identifier migration: the internal identifier moved toward the domain-owned
page.tine.*namespace needed by distribution systems.
The v0.5.6 follow-up: why plugins
By v0.5.6, the immediate priority was bug fixing. I apologized for the roughness of the earlier patch releases and ran a focused debugging loop around both reported and newly discovered failures.
The more lasting decision was plugins. Feature requests kept producing the same tension: a suggestion could be useful without being something I was ready to commit to in Tine core. An experimental plugin system gives those requests somewhere real to live while its APIs mature from actual use.
The intended ecosystem is deliberately AI-positive. Rather than promise compatibility with Logseq or Obsidian plugins, Tine can provide a small API and strong instructions so an agent can inspect an existing plugin, port it, and submit it to the registry. In that sense, the AI becomes part of the compatibility layer.
The same post separated this from sync. Sync affects the graph's identity and storage model, so it is necessarily core work rather than an experimental plugin. That distinction — extension versus product invariant — became part of the way feature requests are triaged.
The Flathub submission had also been rejected under its generative-AI policy. Tine was instead available through Flatpark, while the F-Droid submission remained in review.