A while back, @SnapSam kicked off a series of conversations about whether TiddlyWiki gives new users too much freedom — that the empty wiki, for all its potential, is a hard place to start. The follow-up threads (curated editions coordination, which editions to build first, a recipe edition specifically) sketched the shape of an answer: community-curated editions, each narrowly focused on a common use case, that work out of the box and let a user grow into TiddlyWiki rather than being dropped into the deep end of it.
I’ve been chewing on that for months. (Okay, years. Sue me!) Today I’m releasing a first concrete attempt:
Tidbits
A TiddlyWiki edition for storing, browsing, and cooking from your own recipes.
- Empty edition: https://crosseye.github.io/TW5-CommunityEditions/recipes/empty/
- Populated edition (32 recipes with photos): https://crosseye.github.io/TW5-CommunityEditions/recipes/full/
- Repo: https://github.com/CrossEye/TW5-CommunityEditions
A stake in the ground
Tidbits is meant as a stake in the ground, not a finished product. Along the way I tried to distill the threads above into a list of properties every community edition ought to have. That list lives in the repo as Philosophy/EditionCriteria.md, and I’d like for the conversation to be at least as much about those criteria as about Tidbits itself. Here is the short form, ordered roughly from most to least important — when principles conflict, the earlier one usually wins:
An edition:
- must serve a useful and relatively common purpose.
- should have a clear, narrow scope and resist feature creep.
- should work out of the box without configuration.
- should be self-documenting from within.
- should ship with illustrative sample content — ideally as a separate JSON bundle so the empty and populated artifacts are both first-class.
- should have a complexity ceiling — roughly 1,000 words of explanation should suffice to understand the whole thing.
- should make common customizations easy — palette-based theming, user-facing strings in well-named tiddlers, no hardcoded UI strings or colors.
- should showcase idiomatic TiddlyWiki — educational as well as functional.
- should be maintainable — prefer core TW and established community plugins over custom wikitext.
- should follow TW namespace conventions — keep implementation details someplace like
$:/community/recipes/....- should prefer modern TW techniques but not go out of its way to promote them.
- should be deployment-agnostic — single-file HTML, but nothing that breaks under Node or a server.
Plus a few accompanying decisions: documentation lives inside each artifact; every edition ships as an empty wiki plus one or more companion JSON content collections; full internationalization (right-to-left text, locale numbers, plural rules) is out of scope, although individual editions might tackle it; critical plugin dependencies are bundled, with a future “phone-home” check to surface compatibility-tested updates.
These are proposed guidelines. I think they’re roughly right, but Tidbits is the first edition that has actually been built against them, and I’m sure some won’t survive contact with a second or third edition. Push back.
What’s in Tidbits
Comprehensive but not exhaustive — the in-edition documentation fills in the rest, and stays inside the ~1,000-word ceiling (almost
).
Reading and cooking
The reading view is split into three parts: a primary single-column view, an ingredients/steps split, and a step-by-step view that emphasizes the current step. A separate cooking mode hides the chrome, boosts the font, sticks the step-nav to the bottom of the viewport, and on HTTPS or localhost will keep the screen awake on mobile. Designed to be readable at arm’s length while your hands are messy.
Recipe Box dashboard
The default landing view. A grid of cards: Favorites, Categories (an expandable TOC), Popular Ingredients, Tags. Cards are extensible — anything tagged $:/tags/community/recipes/recipe-box-card shows up. Standard list / list-before / list-after ordering.
Recipes, ingredients, photos
A recipe is a tiddler tagged Recipe. The body uses three sections: !! About for prose, !! Ingredients as a bulleted list (*), and !! Steps as a numbered list (#). Beyond that, recipes carry photos and any supplemental fields you care to add (prep-time, oven-temp, yield, …). The supplemental-field set is registry-driven and configurable from a Tidbits Control Panel tab — add a field, give it a caption and an optional placeholder, optionally a tiny wikitext template for how it should render, and it appears on the view template and in the field-add autocomplete in edit mode. Ingredient tiddlers carry photos, descriptions, and a backlinks list (“Used in”). Case and plural variants are handled by an aliases field rather than a free-for-all of stub tiddlers.
Palettes
Two custom palettes: Tidbits Dark (default) and Tidbits Light, both derived from Gruvbox with brand-orange accents. Every TW core palette is also still selectable. It looks fine in Vanilla, if a little bland.
Localization (First Pass)
Every UI string in the templates is externalized through something similar to TW’s <<lingo>> macro. English defaults ship under $:/community/recipes/language/. An example French language pack ships as a separate JSON drop-in:
https://crosseye.github.io/TW5-CommunityEditions/recipes/samples/fr-FR/lang.json
To try it: open the empty edition, drag the lang.json onto the wiki, save.
What’s covered: every in-template UI string, button label, empty-state hint, Control Panel caption. What stays English in this first pass: the load-bearing tag names (Recipe, Ingredient, Category, Favorite) and the recipe-body section headings (!! About, !! Ingredients, !! Steps). Parameterizing those is part of the post-1.0 roadmap, which for now remains mostly in my own head.
Plugins
Two bundled: Relink (so renaming a tag tiddler doesn’t silently break user content) and AutoComplete (so writing a recipe steers you toward existing ingredient tiddlers rather than creating case-variant duplicates). Pinned versions in the release artifact; future “phone-home” check is stubbed but not wired.
Sample-content reset
Every demo tiddler — every recipe, every ingredient, every photo — carries demo: yes. A checkbox UI lets you selectively prune them, by recipe, by ingredient (with a separate toggle for the ingredient’s photo if you want to keep it), or by category. The whole demo set can be removed in one click; you can also keep “the salt and pepper tiddlers, but not the rest.” I’m hoping that other editions can emulate this; I think it’s a very beginner-friendly affordance.
Compatibility
Verified against TiddlyWiki core 5.3.6 and current 5.4.0. min-tw-core floor is 5.3.6. I haven’t yet tested earlier versions, but it probably doesn’t matter as this is an edition, not a plugin. The TW version is built-in.
How it fits the criteria
There’s a verification table below. The short version: all twelve are met, with full i18n consciously deferred. The 1,000-word documentation ceiling is the one I sweated over most — and in fact, at the moment it’s slightly over. “I didn’t have time to make it shorter.” - Pascal
| # | Criterion | Status | Notes |
|---|---|---|---|
| 1 | Useful, common purpose | ✓ | Recipes — broadly recognisable. |
| 2 | Clear narrow scope | ✓ | Futures list parks unit conversion, parsing, meal planning. |
| 3 | Works out of the box | ✓ | Empty edition opens to Recipe Box + Tidbits docs; five Category-tagged tag tiddlers (Breakfast/Main/Salad/Side/Dessert) ship in the empty build. |
| 4 | Self-documenting | ✓ | Ten Tidbits: … sections under one parent tiddler, indexed by list field. |
| 5 | Sample content | ✓ | tidbits.html includes 32 recipes, 31 ingredients, 63 photo tiddlers, 1 system config. |
| 6 | Complexity ceiling (~1k words) | ✓ | 998 words across the Tidbits sections (trimmed from 1,026 during this verification). |
| 7 | Customizations easy / localization-friendly | ✓ | Palette colours throughout the stylesheet; user-facing strings in dedicated tiddlers; Control Panel tab. Template-internal English UI strings deepen this in the current version and tag-name / section-heading parameterization in the roadmap. |
| 8 | Showcase idiomatic TW | ✓ | <% if %>, <<list-links>>, ConfigPanel pattern, view-template cascades, palette colours, edit-template cascade. |
| 9 | Maintainable | ✓ | Three small custom JS modules (phone-home stub, wake-lock, action-attach-photo); rest is wikitext + pinned plugins. |
| 10 | Namespace conventions | ✓ | Edition tiddlers under $:/community/recipes/. |
| 11 | Modern TW techniques | ✓ | <% if %>, \procedure, \parameters, conditional shortcut. |
| 12 | Deployment-agnostic | ✓ | Single-file HTML build via --build empty; tiddlyweb/filesystem are dev-only via the build profile. Custom JS guarded for browser context. |
Feedback wanted
I emphatically do not want to be Tidbits’ sole contributor. I’m happy to keep gatekeeping the recipe edition — somebody has to, and the criteria above are easier to defend with one consistent hand on the tiller — but the project is meant to be a community project, not mine.
Three kinds of feedback I’d particularly like:
-
The criteria. Twelve is a lot. Are any of them wrong? Missing? In the wrong order? The “complexity ceiling” one in particular is a personal hobby horse and I’m not sure how portable it is to other domains.
-
Tidbits itself. Bugs, design choices that grate, things you’d cut, things you’d add. Especially from anyone who actually cooks from it for a couple of weeks — kitchen use is the real test.
-
What comes next. A bibliographic database edition, a note-taking edition, a TTRPG-tools edition all came up in the original threads. If anyone wants to take a swing at one — using Tidbits as scaffolding, or starting fresh and informing the criteria from a different angle — I’d love that. The repo is set up to host more than one edition; the second one will probably teach us most of what’s wrong with the first one’s structure.
If something in the empty edition makes you say “oh, I could see how that pattern would work for my domain,” that’s the signal I’m hoping for.
Source: https://github.com/CrossEye/TW5-CommunityEditions. Issues, PRs, or forum replies — all welcome.
Pinging those who participated in the earlier conversations: @SnapSam @TW_Tones @Springer @vilc @etardiff @jonnie45 @Justin_H @CodaCoder @Mark_S
(And this forum won’t let me ping everyone, so also:) #EricShulman #saqimtiaz #DaveGifford #Charlie_Veniot #markkerrigan #simon #clsturgeon #wikster #pmario #Ittayd #atronoush #linonetwo #oeyoews #chaosweaver #hoelzro #Scribs #Mario #Ste_W.
But I also want to hear from you — yes, you! This is meant for the entire community.
And @jeremyruston, any feedback would be most welcome.


