An improvement to 6fb992690d
By making sure that all the popup state tiddlers have the prefix
$:/state/popup/ we can be more selective and just exclude popup state
tiddlers when we save. The end result is that once again other kinds of
state are persisted as expected (eg tabs, and sidebar visibility).
This might be a controversial change as it also means that it is no
longer possible to include `$:/state/…` tiddlers in a wiki to set up
the initial configuration.
The new importvariables widget imports macro/variable definitions from
the specified tiddlers and makes them available to its children.
Allows us to split PageMacros up into separate tiddlers.
We still support loading macros from $:/core/ui/PageMacros to help
people upgrading.
Fixes#644 and #559
A bunch of little changes that together enable external image support.
Try:
```
tiddlywiki editions/tw5.com --verbose --build externalimages
```
Then open `externalimages.html`, look for the images in the more/types
tab of the sidebar, open them and verify that they are set with an
external SRC attribute, not a data URI.
We’re also reverting to the old custom dropdown. Using the select
widget didn’t work out because it couldn’t cleanly work with a text box
allowing custom types to be specified.
Apologies to the translators for the extra work. Each translated
tiddler type needs a new “group” field that contains a locale-specific
group name that in English are “Image”, “Developer” and “Text”.
In 5.0.12-beta, if you change the current language setting then the
current sidebar tab setting is lost. This was because the qualified
title generated for the tabs was incorporating the current language
title, by virtue of a trick used in the PageTemplate to set the
“languageTitle” variable to a field of the current language plugin.
This trick left the current tiddler set to the current language, and
this current tiddler was still in force for the transclusion of the
page template segments.
Now a link to a single tiddler like http://tiddlywiki.com/#HelloThere
will just open that single tiddler (the old behaviour was to also open
the default tiddlers)
In practice, if you look at TabsMacro you’ll see that the width of the
tab content is wrong, and will usually overflow the container. Next
step is to fix that by using flexbox…
Previously, widgets were reading variables from themselves or their
cascaded ancestors. That means that if a widget sets a variable and
then reads the same variable, it will get the same variable back. That
sounds reasonable, until you consider a widget that wants to modify a
variable - eg the tiddler macro. For example:
```
<$tiddler tiddler={{!!report}}>
<$transclude mode="block" />
</$tiddler>
```
Here we first evaluate the `{{!!report}}` reference, which involves
reading the currentTiddler variable, looking up the tiddler, and
retrieving it’s `report` field. The next the tiddler widget is
refreshed, it will use the newly set currentTiddler as the basis for
resolving the `{{!!reference}}` reference.
The fix is to get variables from ancestors, but continue to set them on
ourselves.
We were parsing the boot tiddlers, making them into a widget and then
refreshing the widget tree. The problem is that subsequent chances to
the boot tiddlers themselves wouldn’t be picked up as part of the
refresh.
Now we indirectly parse those UI boot tiddlers through a transclusion,
which does get refreshed in the desired way.
Now we respond dynamically to changes in the location hash in the URL
bar. It means that you can do links in HTML as `<a
href=“#HelloThere”>go</a>` and in Markdown as `[example
link](#HelloThere).`
We still need to make startup.js more modular
At this point we respect any permalink at startup, but we don’t yet
dynamically update the permalink, nor do we respond to ongoing
permalink changes.
The permalink separator being `%00` seems like it might be a bit
controversial. It buys us not having to wrap tiddler titles in double
square brackets if they contain spaces.
Another thing is that this scheme doesn’t support tiddler filters; the
plan is to support them like this:
http://tiddlywiki.com/#!Target%00%00[tag[task]sort[created]]
1. Moved some methods out of boot.js because they are not needed until
after bootup
2. Added alternate message for editing an overridden shadow tiddler
3. Minor style tweaks
Replace this with a $tw.wiki.isModifiedTiddler(title) as part of the
wiki object. This allows it to be used outside of the current Wiki which
can change.
Should only display the confirmation if the shadow tiddler has not been
overridden in the first place. It checks this by looking for the
existence of a modified field for which the default system based shadow
do not have until a user changes them.
This addresses the second line item on issue #570
We will need new translations for the added string
`ConfirmEditShadowTiddler`
When saving a tiddler we check to see if the tiddler has changed
(isModified) if it hasn't then bounce the event to tw-cancel-tiddler
instead.
Addresses first line item in issue #570
Fixes#580
Seems much better, especially since the chevron gives us two clear
visual states (left vs. right). The hamburger doesn’t really have a
commonly accepted way of indicating whether the menu is currently open
or not.
This change is likely to break most existing scripts that call
TiddlyWiki.
TL;DR - output paths are now relative to the editions/output folder,
rather than to the current folder
See [[Notes for upgrading to 5.0.11-beta]] for details.
By rearranging the `[all[]]` operator we are able to ensure that shadow
tiddlers get processed before ordinary tiddlers. This makes it easier
to create custom stylesheets that override the core.
Simple optimisation whereby we defer the main refresh cycle when only
draft tiddlers have been modified.
We defer for 400ms, and keep extending the delay at each fresh draft
modification. The effect is that if the user is using the preview then
they’ll need to pause typing for 400ms before the preview is updated.
Fixes#470, #454, and maybe #206.
Refactoring page rendering so that we can fix the performance issues
with editing drafts. The plan is to defer the refresh cycle if all the
changes are to draft tiddlers.
We need to do a bit more of this to get startup.js into better shape
(and more extensible).