TiddlyWiki 2.10.0 and other updates

128 views
Skip to first unread message

Yakov

unread,
Dec 28, 2023, 8:32:51 AM12/28/23
to TiddlyWikiClassic
Hello everyone,

I'm glad to announce the new release of TiddlyWiki, 2.10.0.

As you can note, this is the first time I'm updating the "minor" part of the version (9 → 10), and although there's not much instant impact for end users, this is in fact an important milestone. The reason is the implementation of fully async saving while keeping backward compatibility. I'll explain why it's a big deal below, but for now let's jump to the updates:
  • Behavior improvements:
    • Upgrading wizard is now more instructive and prevents losing content (which happened earlier in some cases). The trick is, after saving a backup it now tries to verify that it's indeed saved and can be loaded. If it fails, it explains what to do instead (see the screenshot among UI changes). Note that this will help with updating from 2.10.0; to update to 2.10.0, I still recommend to create a backup and then use either SimplifiedUpgradingPlugin or import.
    • <<version>> now also shows the number of a "nightly" build.
  • UI updates (see visual summary below the changelog):
    • Tabs now use common background (instead of gray), don't "sink" into the content and are not broken into 2 lines;
    • Remove an excessive link in GettingStarted;
    • Search button now looks the same as other buttons in the sidebar;
    • Nice toggle backstage button's padding;
    • Wizard status now supports html (links) and looks nicely when multiline;
    • Added bottom padding to tiddlers.
  • Fixes:
    • Make Array.prototype.find fall back to the native implementation if a predicate is provided;
    • Story.prototype.setTiddlerField failed for tags (affected IntelliTaggerPlugin);
    • Checkboxes in the Disabled column of <<plugins>> should show correct state;
    • Don't overwrite Array.prototype.indexOf if it's defined.
  • Hackability:
    • Introduces fully async saving (disabled by default: unset chkPreventAsyncSaving to enable):
      • new general method tw.io.saveFile (use it over the global saveFile), similar to tw.io.loadFile;
      • saveMain now supports callback (tries async saving if it is passed and chkPreventAsyncSaving is unset);
      • new method tw.io.saveMainAndReport separates the whole "load original, update, and save" thing, so may be a better target of decorating/overriding than saveChanges in some plugins/savers.
    • Icons (the close icon) are now stored in tw.assets.icons and are reusable.
  • Deprecated: Array's .setItem, Java IO (only javaSaveFile and javaLoadFile are left, returning null).
  • Infrastructure:
    • updates of some autotests, removed legacy reporter;
    • fix: freeze TW5 version used for building (versions 5.2.2 and above break things) in package.json.
  • Lingo updates (for translations)
  • Various docs and dev docs updates, including several new articles about using git and GitHub and contributing (for more details, see the release)
See the full changelog in the Release PR.

I'd like to thank Okido and Mark for contributions to this release and all others who helped on this road.

MainTiddlyServer 1.7.4 is also out there supporting TW 2.10.0. It also supports .htm and .hta files treating them the same as .html.

While working on this release, I've also updated TiddlersBarPlugin, which now is simpler to install (changing PageTemplate is not necessary, although doesn't hurt either). While current (core) tabs UI is still not final, there are some visual improvements.

What's not updated yet: see the Release PR (things like default version on Tiddlyhost, etc).

Why async saving is a big deal?

Well, the lack of async saving support was one of the major obstacles for TWC ecosystem. For instance, Timimi tries to save things and optimistically reports they are saved, which may result in data loss during upgrading or just not knowing that things went wrong.

Likewise, it prevented introducing better ways to save things. For instance, I've found a nice native way to save in most desktop browsers (much more convenient than download saving), but it requires async saving (stay tuned!).

Also, it's probably feasible now to implement conflict detection properly, but that's a whole different story, I'll let you know when I get SavedNotHerePlugin working.

Releasing infrastructure is getting better. This time, it took 9 days from the start of the PR to this announcement (which included implementing the upgrading safeguard and more), in contrast to more than 2 weeks for 2.9.4. After this release, I'll improve this further by fixing the continuous delivery script, explaining things in the Releasing and updating the site section, which in turn will help to add more automation (and, theoretically, help others to prepare a release, if somebody wants to). The simpler this gets, the easier it will be for me to release more frequently. Compare also:
2.9.1 – 05.2018
2.9.2 – 02.2019
2.9.3 – 07.2022 (ok, there were personal issues, and then war and immigration)
2.9.4 – 05.2023
2.10.0 – 12.2023

As always, any feedback is welcome.

Best regards,
Yakov.

Okido

unread,
Jan 1, 2024, 7:44:36 AMJan 1
to TiddlyWikiClassic
Hello Yakov,

Thanks for this major update, I can confirm that it builds OK and I will use TWC 2.10.0 from now on.
I included jQuery 3.7.1, no problems noted.

Happy New Year, Okido

Op donderdag 28 december 2023 om 14:32:51 UTC+1 schreef Yakov:

rced...@gmail.com

unread,
Jan 1, 2024, 9:12:12 AMJan 1
to TiddlyWikiClassic

Thanks, Yakov! I really appreciate your contributions in keeping TWc alive & well!

Yakov

unread,
Jan 3, 2024, 7:54:06 AMJan 3
to TiddlyWikiClassic
Hello everyone and Happy New Year,

I have to note that there is in fact a case where 2.10.0 fails, namely saving backups via TW's core method: https://github.com/TiddlyWiki/TiddlyWikiClassic/issues/295 (saving doesn't fails in this case, though).

I'm designing a consistent fix for this and some adjacent aspects, presumably I'll provide a plugin that fixes 2.10.0 and add the fix to 2.10.1.

Best regards,
Yakov.

понедельник, 1 января 2024 г. в 17:12:12 UTC+3, rced...@gmail.com:

Okido

unread,
Jan 3, 2024, 2:35:08 PMJan 3
to TiddlyWikiClassic
Hello Yakov,

I had some CCS glitches in my modified stylesheets.
The backstageButton forms a blackline on mouse hover, solved by defining pointer-events to none.
The SideBarTabs scrolled partly in front and behind the buttons, should always scroll behind, solved by adding z-index of 99 to sidebarOptions.

Have a nice day, Okido

Op woensdag 3 januari 2024 om 13:54:06 UTC+1 schreef Yakov:

Reto

unread,
Jan 4, 2024, 9:05:47 AMJan 4
to TiddlyWikiClassic
Great news, Yakov, thank you!

The upgrade using SimplifiedUpgradingPlugin worked like a charm.

Cheers,
Reto

Yakov

unread,
Jan 11, 2024, 5:40:25 AMJan 11
to TiddlyWikiClassic
Hello everyone,

here's the fix for those who miss the backup functionality in 2.10.0 (in a form of a plugin). The fix of the core for 2.10.1 is also ready, if you're willing to test it, check 2.10.0 nightly 1 attached.

Okido, could you specify your setup and issues you've mentioned a bit?

> The backstageButton forms a blackline on mouse hover, solved by defining pointer-events to none.

Are you talking about the black line on the image below? It was there in previous versions, too; yes, it should be fixed in the future, although there's a tricky bit because of the "▾" character in there, so needs a little investigation. (a naive fix would be to set display: inline-block; for #backstageArea a and remove vertical padding from #backstageArea; hovever, it only removes this line from the dropdown buttons, but not from the save button)

backstage_button_hover.png

> The SideBarTabs scrolled partly in front and behind the buttons, should always scroll behind, solved by adding z-index of 99 to sidebarOptions.

Sounds like some customization, not sure if there's something on the core side that should be improved. Perhaps if you share a link to a TW with this problem, I can take a closer look. And again, is this something that was changed due to update to 2.10.0 or it was there before?

Best regards,
Yakov.

четверг, 4 января 2024 г. в 17:05:47 UTC+3, Reto:
empty-TiddlyWiki-2.10.0 - nightly 1.html

Okido

unread,
Jan 11, 2024, 2:17:39 PMJan 11
to TiddlyWikiClassic
Hello Yakov,

Both items appeared after updating to 2.10.0.

Are you talking about the black line on the image below? Yes, I think so, it is only a problem in my customized templates.
I completely hide the backstage because I do not use it by setting the height to 0. on mouse over the button expands and just shows.
No update to the core required for me.
backstage_button_hover.png

The SideBarTabs scroll partly in front and behind the buttons, should always scroll behind, solved by adding z-index of 99 to sidebarOptions.
This is indeed a customization issue, no core change required for me.
I will put an example on GitHub later.

Have a nice day, Okido

Op donderdag 11 januari 2024 om 11:40:25 UTC+1 schreef Yakov:
Reply all
Reply to author
Forward
0 new messages