v0.5.0

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.io can 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.

📦 v0.5.0 release ↗ 📋 Full changelog ↗ 💬 “Oh Sheet!” thread ↗ 💬 v0.5.6 plans thread ↗

From the discussion

The useful threads covered preserving the outline beneath richer views, using issue reports as the feedback loop, the patch series becoming more refined, and explaining how development could move this quickly.

Keep the data ordinary

Described using a spreadsheet plugin only for data entry, then exporting the result as Markdown and collapsing the richer UI. Their broader point was that note-taking can become overbuilt.

Me OP

Right, I agree. If it is cheap to add a certain embed I'm quite open to adding it, because it doesn't make life harder / more complicated for those not using it and might help those who do. But I agree overall.

Reports close the loop

Had been testing on Fedora, found several small bugs, and asked whether GitHub was the right place even though they had not filed issues before.

Me OP

That would be super helpful because Claude sees Github issues and can manage them so this makes life much easier for me. Sorry about the bugs. I'll be now focusing on bug fixes and performance work.

The parser mismatch that disappeared

Re-ran the divergence scan after upgrading and found none; pages that previously could not be reduced to an anonymized report now rendered correctly too.

Me OP

Good to hear :) I actually found out that when I swapped in the new parser, the “Help with Tine” panel did not get upgraded and was comparing against an older version of mldoc, while the new parser was built against the newer one, so these could've just been version-skew divergences. I'm glad this part is solved for you now :)

“Write up the process”

Argued that the development process deserved its own post and might be useful beyond note-taking communities. That request became the next blog entry.

The patch series felt more settled

Reported that v0.5.6 felt much more refined on both an Android phone and a Linux laptop, while noting that a few bugs still remained.

The two source posts are linked in full. Release prose above condenses them; comments by other people are summarized and linked, while Martin's replies are quoted verbatim.