1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-01-28 13:51:25 +00:00

Compare commits

...

48 Commits

Author SHA1 Message Date
Jeremy Ruston
165538180e Version number update for 5.1.21 2019-09-10 16:32:45 +01:00
Jeremy Ruston
42060acb43 Preparing for release of v5.1.21 2019-09-10 16:32:30 +01:00
Jeremy Ruston
978d52f3e8 Merge branch 'tiddlywiki-com' 2019-09-10 16:21:55 +01:00
Jeremy Ruston
b8129b6e36 Update release note 2019-09-10 16:21:37 +01:00
Jeremy Ruston
b5e4cc0cc8 Docs: Clarify reveal widget animation requirements 2019-09-10 16:07:36 +01:00
Bimba Laszlo
3732c83ad4 Fix GitLab saver Base64 encoding (#4255) 2019-09-10 14:16:06 +01:00
Jeremy Ruston
ff6070f033 Update release note 2019-09-09 16:48:12 +01:00
Cameron Fischer
fb12807a33 Reverting changes to stringifyList (#4249)
I (Flibbles) changed it so that lists generated by stringifyList
would always be compatible with a filter parser, but since lists
are not, and never will be, a subset of filters, there isn't a
point.

More importantly, wrapping negative numbers like "-7" in brackets
would mess up some math stuff.
2019-09-09 14:56:40 +01:00
Jeremy Ruston
953038f0b2 Don't use field indexer when looking for blank/missing fields
Fixes #4247
2019-09-09 14:47:27 +01:00
Jeremy Ruston
f74e4c520d Add docs for tm-rename-tiddler
Fixes #4246
2019-09-09 14:38:29 +01:00
Xavier Cazin
85da202cca fr-FR: small fix in tiddler date format (#4250) 2019-09-09 14:28:56 +01:00
Simon Huber
00fb4190f2 Fix whitespace around fields inputs (II) (#4240) 2019-09-09 14:17:32 +01:00
Simon Huber
19d2aab6b9 Remove text-shadow for tags in sidebar (#4245)
For consistency with tags in the main story river
2019-09-07 09:27:00 +01:00
Jan-Oliver Kaiser
fff97e7326 Signing the CLA (#4244) 2019-09-07 09:06:19 +01:00
Jeremy Ruston
996ee52cf9 External-attachments plugin: Fix bug on Windows
Fixes #4237
2019-09-06 17:40:03 +01:00
Jeremy Ruston
bb036ced93 Translators plugin: Minor layout fixes 2019-09-06 15:40:36 +01:00
Jeremy Ruston
ef5c53bf9a Release note updates 2019-09-04 16:04:33 +01:00
Jeremy Ruston
6899be59e2 Fix date and time for for "Hidden Setting: Sync Polling Interval" 2019-09-03 19:26:23 +01:00
Jeremy Ruston
9e67be5b6c Fix date for "Hidden Setting: Sync Polling Interval" 2019-09-03 19:25:00 +01:00
Jeremy Ruston
7f5a5dbe09 Merge branch 'tiddlywiki-com' 2019-09-03 10:12:01 +01:00
Simon Huber
6fb2a33847 Add missing foreground color to tc-btn-invisible (#4203) 2019-09-03 09:50:24 +01:00
Bimba Laszlo
9305881efb Syncadapter uses different conditions for loading and saving (#4211)
The description was ambiguous.
2019-09-03 09:49:17 +01:00
Jeremy Ruston
6496107a32 Docs: Clarify that webserver API get all tiddlers only returns non-system tiddlers
Fixes #4212
2019-09-03 09:47:55 +01:00
Jeremy Ruston
0610a7b1eb Hidden setting: Sync Polling Interval 2019-09-03 09:42:16 +01:00
Jeremy Ruston
16652f926f Fix inverted default HTML-class for items in toc and toc-expandable 2019-09-03 09:41:34 +01:00
Mark Stegeman
dd09266b46 Fix inverted default HTML-class for items in toc and toc-expandable
5d36b484c6 swapped the "emptyValue" and "value" that determine the
HTML-class for toc items, but did not change the default values for
"itemClassFilter" in "toc" and "toc-expandable" to reflect this.
2019-09-02 19:31:13 +02:00
Jeremy Ruston
27858625df Merge pull request #4232 from markstegeman/patch-1
Signing the CLA
2019-09-02 18:28:03 +01:00
markstegeman
ab24d58b11 Signing the CLA 2019-09-02 19:27:06 +02:00
Jeremy Ruston
ba7e7fd649 fix "Open" SideBar tab (#4228) 2019-09-02 18:08:09 +01:00
Simon Huber
1873785ef6 Fix whitespace around field inputs (#4227) 2019-09-02 18:07:45 +01:00
Nils-Hero Lindemann
2008a617b5 Signing the CLA (#4204) 2019-09-02 15:55:24 +01:00
markkerrigan
8053cf1806 Signing the CLA (#4197) 2019-09-02 15:50:39 +01:00
Simon Huber
c81bf49704 fix "Open" SideBar tab 2019-09-01 11:00:09 +02:00
Nils-Hero Lindemann
1c5b3e3d8d Remove duplicate code from transcludeblock parser (#4221) 2019-08-30 17:20:16 +01:00
Jeremy Ruston
82d18ad1fa Update release note for v5.1.21 2019-08-30 15:34:26 +01:00
Simon Huber
4ef9ccbab9 Fix bug with wikitext in fieldnames #4218 2019-08-30 10:44:23 +01:00
Jeremy Ruston
83386f34b5 Restore performance instrumentation to be disabled by default
Fixes #4201
2019-08-30 10:42:01 +01:00
bimlas
b88812233c Hidden setting: Sync Polling Interval 2019-08-29 08:58:17 +02:00
Jeremy Ruston
471b73158a Fix overeager alerts from core module overwrite upgrade warning
This fixes a bug in #3634, and refines the logic so that the warning is only given if the incoming tiddler exists as a shadow tiddler. (In my case I have several draft core modules inactive in my notes wiki and they were erroneously suppressed from the upgrade).
2019-08-28 14:44:46 +01:00
StefanSTFG
990619b634 Fixed 3 typos in the example in line 88 (#4207)
1.     Removed closing square bracket after <currentTiddler>
2.    Changed capital 'P' in addprefix
3.    Added missing slash at the end
2019-08-27 17:10:00 +01:00
StefanSTFG
8d3dfdebe3 Signing the CLA (#4206) 2019-08-27 17:09:23 +01:00
Jeremy Ruston
654eda02c6 Remove reference to stacked story view from prerelease introduction
It's confusing
2019-08-24 12:17:17 +01:00
Jeremy Ruston
a170210069 Fix crash with action-deletefield and missing tiddler attribute
Fixes #4188
2019-08-24 11:39:00 +01:00
Cameron Fischer
67066fe86e Improve handling for titles starting with +-~= (#4084) (#4087)
* $tw.utils.stringifyList will wrap tiddlers starting with `+-~=` in brackets.
2019-08-24 12:35:03 +02:00
Simon Huber
fada96651e Update "Open" tab to use tv-config-story-list (#4189) 2019-08-24 11:27:20 +02:00
Rob Hoelz
0402dbd48d Pass pathFilters as an array (#4174)
* Pass pathFilters as an array

Otherwise, when we try to iterate over pathFilters in the filesystem
utils module, we end up iterating over each character in the filter
string, which ends up generating 'Filter error_ Missing [ in filter
expression.tid' as the tiddler's filename

Fixes GH #4173

* Allow for multiple path filters to be specified

...via $:/config/FileSystemPaths, split by newlines
2019-08-22 10:24:40 +02:00
Jeremy Ruston
bab1bca485 Coding style tweaks 2019-08-14 23:00:01 +01:00
Jeremy Ruston
a986e4f7d6 Prepare for v5.1.21-prerelease 2019-08-09 15:38:36 +01:00
36 changed files with 227 additions and 105 deletions

View File

@@ -5,7 +5,7 @@
# Default to the current version number for building the plugin library
if [ -z "$TW5_BUILD_VERSION" ]; then
TW5_BUILD_VERSION=v5.1.19
TW5_BUILD_VERSION=v5.1.20
fi
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"

View File

@@ -314,13 +314,13 @@ $tw.utils.parseDate = function(value) {
// Stringify an array of tiddler titles into a list string
$tw.utils.stringifyList = function(value) {
if($tw.utils.isArray(value)) {
var result = [];
for(var t=0; t<value.length; t++) {
var result = new Array(value.length);
for(var t=0, l=value.length; t<l; t++) {
var entry = value[t] || "";
if(entry.indexOf(" ") !== -1) {
result.push("[[" + entry + "]]");
result[t] = "[[" + entry + "]]";
} else {
result.push(entry);
result[t] = entry;
}
}
return result.join(" ");

View File

@@ -53,7 +53,7 @@ exports.field = function(source,operator,options) {
}
});
} else {
if(source.byField) {
if(source.byField && operator.operand) {
indexedResults = source.byField(fieldname,operator.operand);
if(indexedResults) {
return indexedResults

View File

@@ -27,8 +27,6 @@ exports.init = function(parser) {
};
exports.parse = function() {
// Move past the match
this.parser.pos = this.matchRegExp.lastIndex;
// Move past the match
this.parser.pos = this.matchRegExp.lastIndex;
// Get the match details

View File

@@ -71,7 +71,7 @@ GitLabSaver.prototype.save = function(text,method,callback) {
}
var data = {
commit_message: $tw.language.getRawString("ControlPanel/Saving/GitService/CommitMessage"),
content: $tw.utils.base64Encode(text),
content: text,
branch: branch,
sha: sha
};

View File

@@ -12,22 +12,21 @@ GET /
/*global $tw: false */
"use strict";
var zlib = require('zlib');
var zlib = require("zlib");
exports.method = "GET";
exports.path = /^\/$/;
exports.handler = function(request,response,state) {
var acceptEncoding = request.headers['accept-encoding'];
if (!acceptEncoding) { acceptEncoding = ''; }
var text = state.wiki.renderTiddler(state.server.get("root-render-type"),state.server.get("root-tiddler"));
var responseHeaders = {
var acceptEncoding = request.headers["accept-encoding"];
if(!acceptEncoding) {
acceptEncoding = "";
}
var text = state.wiki.renderTiddler(state.server.get("root-render-type"),state.server.get("root-tiddler")),
responseHeaders = {
"Content-Type": state.server.get("root-serve-type")
};
/*
If the gzip=yes flag for `listen` is set, check if the user agent permits
compression. If so, compress our response. Note that we use the synchronous
@@ -36,15 +35,14 @@ exports.handler = function(request,response,state) {
*/
if(state.server.enableGzip) {
if (/\bdeflate\b/.test(acceptEncoding)) {
responseHeaders['Content-Encoding'] = 'deflate';
responseHeaders["Content-Encoding"] = "deflate";
text = zlib.deflateSync(text);
} else if (/\bgzip\b/.test(acceptEncoding)) {
responseHeaders['Content-Encoding'] = 'gzip';
responseHeaders["Content-Encoding"] = "gzip";
text = zlib.gzipSync(text);
}
}
response.writeHead(200, responseHeaders);
response.writeHead(200,responseHeaders);
response.end(text);
};

View File

@@ -35,17 +35,17 @@ exports.upgrade = function(wiki,titles,tiddlers) {
}
for(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {
var prefix = WARN_IMPORT_PREFIX_LIST[t];
if(title.substr(0,prefix.length) === prefix) {
if(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {
showAlert = true;
messages[title] = $tw.language.getString("Import/Upgrader/System/Warning");
}
}
}
if(showAlert) {
var logger = new $tw.utils.Logger("import");
logger.alert($tw.language.getString("Import/Upgrader/System/Alert"));
}
});
if(showAlert) {
var logger = new $tw.utils.Logger("import");
logger.alert($tw.language.getString("Import/Upgrader/System/Alert"));
}
return messages;
};

View File

@@ -59,7 +59,7 @@ DeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {
tiddler = this.wiki.getTiddler(self.actionTiddler),
removeFields = {},
hasChanged = false;
if(this.actionField) {
if(this.actionField && tiddler) {
removeFields[this.actionField] = undefined;
if(this.actionField in tiddler.fields) {
hasChanged = true;

View File

@@ -58,12 +58,12 @@ $value={{$:/temp/newfieldvalue}}/>
<$fieldmangler>
<div class="tc-edit-field-add">
<em class="tc-edit">
<<lingo Fields/Add/Prompt>>
<<lingo Fields/Add/Prompt>>&nbsp;
</em>
<span class="tc-edit-field-add-name">
<$edit-text tiddler="$:/temp/newfieldname" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}/>
</span>
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
</span>&nbsp;
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<$set name="tv-show-missing-links" value="yes">
@@ -73,7 +73,7 @@ $value={{$:/temp/newfieldvalue}}/>
</div>
<$list filter="[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField">
<$link to=<<currentField>>>
<<currentField>>
<$text text=<<currentField>>/>
</$link>
</$list>
<div class="tc-dropdown-item">
@@ -81,7 +81,7 @@ $value={{$:/temp/newfieldvalue}}/>
</div>
<$list filter="[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
<$link to=<<currentField>>>
<<currentField>>
<$text text=<<currentField>>/>
</$link>
</$list>
</$linkcatcher>
@@ -90,7 +90,7 @@ $value={{$:/temp/newfieldvalue}}/>
</$reveal>
<span class="tc-edit-field-add-value">
<$edit-text tiddler="$:/temp/newfieldvalue" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}}/>
</span>
</span>&nbsp;
<span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/>
</span>

View File

@@ -6,7 +6,7 @@ caption: {{$:/language/SideBar/Open/Caption}}
\define lingo-base() $:/language/CloseAll/
\define drop-actions()
<$action-listops $tiddler="$:/StoryList" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
<$action-listops $tiddler=<<tv-story-list>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
\end
\define placeholder()

View File

@@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/library/v5.1.20/index.html
url: https://tiddlywiki.com/library/v5.1.21/index.html
caption: {{$:/language/OfficialPluginLibrary}}
{{$:/language/OfficialPluginLibrary/Hint}}

View File

@@ -1,2 +1,2 @@
title: $:/config/Performance/Instrumentation
text: yes
text: no

View File

@@ -28,7 +28,7 @@ tags: $:/tags/Macro
</ol>
\end
\define toc(tag,sort:"",itemClassFilter:" ")
\define toc(tag,sort:"",itemClassFilter:"")
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />
\end
@@ -87,7 +87,7 @@ tags: $:/tags/Macro
<$macrocall $name="toc-linked-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>
\end
\define toc-expandable(tag,sort:"",itemClassFilter:" ",exclude,path)
\define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path)
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
<$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
<ol class="tc-toc toc-expandable">

View File

@@ -5,6 +5,7 @@ type: text/vnd.tiddlywiki
!! Preparation on master
# Ensure the new release banner image is up to date
# Update ''master'' with changes from ''tiddlywiki-com''
# Verify the version numbers in [[$:/config/OfficialPluginLibrary]] in `editions/tw5.com`
# Move the latest release note from the prerelease edition into the tw5.com edition
@@ -39,6 +40,7 @@ type: text/vnd.tiddlywiki
# Adjust version number in `package.json`
# Adjust version number in `bin/build-site.sh`
# Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]]
# Adjust new release banner
# Create the release note for the new release
# Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh`
# Commit changes to ''master'' and push to ~GitHub

View File

@@ -7,4 +7,4 @@ title: Syncadaptor
A module with ``module-type: syncadaptor`` provides functionality to get a list of tiddlers (this list is provided as ~SkinnyTiddlers, which are normal tiddlers without the text field) and to load, save and delete single tiddlers. A syncadaptor can also provide functions to login and logout so that syncadaptor modules can be used to synchronize tiddlers with a remote server.
The syncer module only uses one syncadaptor and honours a special [[system tiddler|System Tiddlers]] [[$:/config/SyncFilter]] containing a [[filter string|Tags and Filter Mechanism]]. Tiddlers matching this filter string are not synced with a syncadapter.
The syncer module only uses one syncadaptor and honours a special [[system tiddler|System Tiddlers]] [[$:/config/SyncFilter]] containing a [[filter string|Tags and Filter Mechanism]]. Tiddlers matching this filter string are not saved to the server with a syncadapter. It uses the [[WebServer API|https://tiddlywiki.com/#WebServer%20API%3A%20Get%20All%20Tiddlers]] to load modified tiddlers from the server, which returns only non-system tiddlers.

View File

@@ -0,0 +1,14 @@
caption: 5.1.22
created: 20190910152413608
modified: 20190910152413608
tags: ReleaseNotes
title: Release 5.1.22
type: text/vnd.tiddlywiki
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.21...v5.1.22]]//
! Contributors
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
*

View File

@@ -1,6 +1,6 @@
title: $:/config/LocalPluginLibrary
tags: $:/tags/PluginLibrary
url: http://127.0.0.1:8080/prerelease/library/v5.1.20/index.html
url: http://127.0.0.1:8080/prerelease/library/v5.1.21/index.html
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local)
A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library//

View File

@@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/prerelease/library/v5.1.20/index.html
url: https://tiddlywiki.com/prerelease/library/v5.1.21/index.html
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.

View File

@@ -7,15 +7,3 @@ This is a pre-release build of TiddlyWiki, [[also available in empty form|https:
<h1><$text text=<<currentTiddler>>/></h1>
<$transclude mode="block"/>
</$list>
! Features held back for later release
These unfinished features are included in this prerelease build, but are not planned for inclusion in the next release.
* <$button>
<$action-setfield $tiddler="$:/view" text="stacked"/>
Set "Stacked" story view
</$button> <$button>
<$action-setfield $tiddler="$:/view" text="classic"/>
Revert
</$button>

View File

@@ -25,6 +25,26 @@ describe("Utility tests", function() {
expect(psa(" [[Tidd\u00a0ler8]] two ")).toEqual(["Tidd\u00a0ler8","two"]);
});
it("should handle stringifying a string array", function() {
var str = $tw.utils.stringifyList;
expect(str([])).toEqual("");
expect(str(["Tiddler8"])).toEqual("Tiddler8");
expect(str(["Tiddler8 "])).toEqual("[[Tiddler8 ]]");
expect(str(["A+B", "A-B", "A=B"])).toEqual("A+B A-B A=B");
expect(str(["A B"])).toEqual("[[A B]]");
// Starting special characters aren't treated specially,
// even though this makes a list incompatible with a filter parser.
expect(str(["+T", "-T", "~T", "=T", "$T"])).toEqual("+T -T ~T =T $T");
expect(str(["A", "", "B"])).toEqual("A B");
});
it("stringifyList shouldn't interfere with setting variables to negative numbers", function() {
var wiki = new $tw.Wiki();
wiki.addTiddler({title: "test", text: "<$set name=X filter='\"-7\"'>{{{ [<X>add[2]] }}}</$set>"});
// X shouldn't be wrapped in brackets. If it is, math filters will treat it as zero.
expect(wiki.renderTiddler("text/plain","test")).toBe("-5");
});
it("should handle formatting a date string", function() {
var fds = $tw.utils.formatDateString,
// nov is month: 10!

View File

@@ -1,6 +1,6 @@
created: 20130822170200000
list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]]
modified: 20190809141328809
modified: 20190910152313608
tags: TableOfContents
title: HelloThere
type: text/vnd.tiddlywiki

View File

@@ -0,0 +1,13 @@
created: 20190903192324700
modified: 20190903192324700
tags: [[Hidden Settings]]
title: Hidden Setting: Sync Polling Interval
type: text/vnd.tiddlywiki
Specifies the interval at which [[Syncadaptor|https://tiddlywiki.com/dev/#Syncadaptor]] synchronizes tiddlers between the server and the browser.
Defaults to "60000" (60 * 1000 ms = 1 min).
Changing needs restart to take effect.
$:/config/SyncPollingInterval

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -0,0 +1,14 @@
caption: tm-rename-tiddler
created: 20190909133618113
modified: 20190909133618113
tags: Messages navigator-message
title: WidgetMessage: tm-rename-tiddler
type: text/vnd.tiddlywiki
The `tm-rename-tiddler` message renames a tiddler by deleting it and recreating it with a new title. The rename tiddler message requires the following properties on the `event` object:
|!Name |!Description |
|from |Current title of tiddler |
|to |New title of tiddler |
The rename tiddler message is usually generated with the ButtonWidget and is handled by the NavigatorWidget.

View File

@@ -0,0 +1,46 @@
caption: 5.1.21
created: 20190910152313608
modified: 20190910152313608
released: 20190910152313608
tags: ReleaseNotes
title: Release 5.1.21
type: text/vnd.tiddlywiki
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.20...v5.1.21]]//
This is a bug fix release that resolves issues introduced in the recent [[Release 5.1.20]].
!! Bug Fixes
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/a170210069bbec265992b365a61e0722b480ab1d]] crash with ActionDeleteFieldWidget and a missing ''tiddler'' attribute
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4087]] edge cases where some tiddler lists were not valid when interpreted as a filter
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/471b73158a887d2f060194741739c1da8b5d44d8]] problem with too many alerts when upgrading a wiki containing an overwritten core module
* [[Reverted|https://github.com/Jermolene/TiddlyWiki5/commit/83386f34b50a9d93171df133957d489b5de629ef]] inadvertently switching on performance instrumentation
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4218]] bug with WikiText within field names
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/dd09266b467173e45d75c172b2e82fd542f682fe]] problem with classes in the [[Table-of-Contents Macros]]
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4203]] missing foreground colour for buttons with class `tc-btn-invisible`
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4227]] whitespace around field editor inputs
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/bb036ced933ecb36f5d93693fb4f6e7aa2748df7]] layout problems with the [[translators edition|Translate TiddlyWiki into your language]]
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/996ee52cf9f5e15d95deaf0acf4206959d34432a]] crash with the [[External Attachments Plugin]] on Windows
* [[Removed|https://github.com/Jermolene/TiddlyWiki5/pull/4245]] inconsistent shadow for tag pills in the sidebar
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4247]] regression with the [[field Operator]] and blank operands
* [[Reverted|https://github.com/Jermolene/TiddlyWiki5/pull/4249]] erroneous change in v5.1.20 in the way that lists are stringified
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-story-list` variable
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4255]] problem [[saving to GitLab|Saving to a Git service]]
!! Node.js Bug Fixes
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4174]] bug with [[customised tiddler file naming|Customising Tiddler File Naming]]
! Contributors
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
* [[@bimlas|https://github.com/bimlas]]
* [[@BurningTreeC|https://github.com/BurningTreeC]]
* [[@flibbles|https://github.com/flibbles]]
* [[@heronils|https://github.com/heronils]]
* [[@hoelzro|https://github.com/hoelzro]]
* [[@markstegeman|https://github.com/markstegeman]]
* [[@StefanSTFG|https://github.com/StefanSTFG]]
* [[@xcazin|https://github.com/xcazin]]

View File

@@ -1,10 +1,10 @@
created: 20181002131215403
modified: 20181003174025431
modified: 20190903094711346
tags: [[WebServer API]]
title: WebServer API: Get All Tiddlers
type: text/vnd.tiddlywiki
Gets an array of all raw tiddlers, excluding the ''text'' field.
Gets an array of all raw non-system tiddlers, excluding the ''text'' field.
```
GET /recipes/default/tiddlers.json
@@ -19,4 +19,4 @@ Response:
* 200 OK
*> `Content-Type: application/json`
*> Body: array of tiddlers in [[TiddlyWeb JSON tiddler format]]
*> Body: array of all non-system tiddlers in [[TiddlyWeb JSON tiddler format]]

View File

@@ -1,7 +1,7 @@
caption: reveal
created: 20131024141900000
jeremy: tiddlywiki
modified: 20190704145627537
modified: 20190910150520583
tags: Widgets
title: RevealWidget
type: text/vnd.tiddlywiki
@@ -36,13 +36,13 @@ The content of the `<$reveal>` widget is displayed according to the rules given
|position |The position used for the popup when the type is ''popup''. Can be ''left'', ''above'', ''aboveright'', ''right'', ''belowleft'' or ''below'' |
|positionAllowNegative |Set to "yes" to prevent computed popup positions from being clamped to be above zero |
|default |Default value to use when the state tiddler is missing |
|animate |Set to "yes" to animate opening and closure (defaults to "no") |
|animate |Set to "yes" to animate opening and closure (defaults to "no"; requires "retain" to be set to "yes") |
|retain |Set to "yes" to force the content to be retained even when hidden (defaults to "no") |
<<.tip """<$macrocall $name=".from-version" version="5.1.18"/> <$macrocall $name=".attr" _="stateTitle"/>, <$macrocall $name=".attr" _="stateField"/> and <$macrocall $name=".attr" _="stateIndex"/> attributes allow specifying Tiddler states ''directly'', without interpreting them as [[TextReferences|TextReference]].
This is useful for edge-cases where titles may contain characters that are used to denote Tiddler fields or indices (`!!`, `##`)""">>
<<.tip """Retaining the content when hidden can give poor performance since the hidden content requires refresh processing even though it is not displayed. On the other hand, the content can be revealed much more quickly. Note that setting ''animate="yes"'' will also force ''retain="yes"''""">>
<<.tip """Retaining the content when hidden can give poor performance since the hidden content requires refresh processing even though it is not displayed. On the other hand, the content can be revealed much more quickly. Note that setting ''animate="yes"'' will also require ''retain="yes"''""">>
! Examples

View File

@@ -85,6 +85,6 @@ Filtered attribute values are indicated with triple curly braces around a [[Filt
This example shows how to add a prefix to a value:
```
<$text text={{{ [<currentTiddler>]addPrefix[$:/myprefix/]] }}}>
<$text text={{{ [<currentTiddler>addprefix[$:/myprefix/]] }}} />
```

View File

@@ -68,6 +68,6 @@ TagManager/Count/Heading: Total
TagManager/Icon/Heading: Icône
TagManager/Info/Heading: Info
TagManager/Tag/Heading: Tag
Tiddler/DateFormat: DD MMM YYYY à 0hhhmm
Tiddler/DateFormat: DD MMM YYYY à hhh0mm
UnsavedChangesWarning: Vos dernières modifications n'ont pas été sauvegardées dans votre TiddlyWiki
Yes: Oui

View File

@@ -363,3 +363,13 @@ Dong Zhihong, @donmor, 2019/05/29
Joshua Stubbs, @LordRatte, 2019/05/31
Robin Munn, @rmunn, 2019/06/16
Mark Kerrigan, @markkerrigan, 2019/08/24
Stefan Schuster-Teupke, @StefanSTFG, 2019/08/26
Nils-Hero Lindemann, @heronils, 2019/08/26
Mark Stegeman, @markstegeman, 2019/08/31
Jan-Oliver Kaiser, @janno, 2019/09/06

View File

@@ -1,7 +1,7 @@
{
"name": "tiddlywiki",
"preferGlobal": "true",
"version": "5.1.20",
"version": "5.1.21",
"author": "Jeremy Ruston <jeremy@jermolene.com>",
"description": "a non-linear personal web notebook",
"contributors": [

View File

@@ -26,15 +26,15 @@ exports.startup = function() {
test_makePathRelative();
$tw.hooks.addHook("th-importing-file",function(info) {
if(document.location.protocol === "file:" && info.isBinary && info.file.path && $tw.wiki.getTiddlerText(ENABLE_EXTERNAL_ATTACHMENTS_TITLE,"") === "yes") {
var locationPathParts = document.location.pathname.split("/").slice(0,-1),
filePathParts = info.file.path.split(/[\\\/]/mg).map(encodeURIComponent);
console.log("Wiki location",document.location.pathname)
console.log("File location",info.file.path)
info.callback([
{
title: info.file.name,
type: info.type,
"_canonical_uri": makePathRelative(
filePathParts.join("/"),
locationPathParts.join("/"),
info.file.path,
document.location.pathname,
{
useAbsoluteForNonDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_NON_DESCENDENTS_TITLE,"") === "yes",
useAbsoluteForDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_DESCENDENTS_TITLE,"") === "yes"
@@ -50,29 +50,47 @@ exports.startup = function() {
};
/*
Given a source absolute path and a root absolute path, returns the source path expressed as a relative path from the root path.
Given a source absolute filepath and a root absolute path, returns the source filepath expressed as a relative filepath from the root path.
sourcepath comes from the "path" property of the file object, with the following patterns:
/path/to/file.png for Unix systems
C:\path\to\file.png for local files on Windows
\\sharename\path\to\file.png for network shares on Windows
rootpath comes from document.location.pathname with urlencode applied with the following patterns:
/path/to/file.html for Unix systems
/C:/path/to/file.html for local files on Windows
/sharename/path/to/file.html for network shares on Windows
*/
function makePathRelative(sourcepath,rootpath,options) {
options = options || {};
// First we convert the source path from OS-dependent format to generic file:// format
if(options.isWindows || $tw.platform.isWindows) {
sourcepath = sourcepath.replace(/\\/g,"/");
// If it's a local file like C:/path/to/file.ext then add a leading slash
if(sourcepath.charAt(0) !== "/") {
sourcepath = "/" + sourcepath;
}
// If it's a network share then remove one of the leading slashes
if(sourcepath.substring(0,2) === "//") {
sourcepath = sourcepath.substring(1);
}
}
// Split the path into parts
var sourceParts = sourcepath.split("/"),
rootParts = rootpath.split("/"),
outputParts = [];
// Check that each path started with a slash
if(sourceParts[0] || rootParts[0]) {
throw "makePathRelative: both paths must be absolute";
}
// urlencode the parts of the sourcepath
$tw.utils.each(sourceParts,function(part,index) {
sourceParts[index] = encodeURI(part);
});
// Identify any common portion from the start
var c = 1,
var c = 0,
p;
while(c < sourceParts.length && c < rootParts.length && sourceParts[c] === rootParts[c]) {
c += 1;
}
// Return "." if there's nothing left
if(c === sourceParts.length && c === rootParts.length ) {
return "."
}
// Use an absolute path if required
if((options.useAbsoluteForNonDescendents && c < rootParts.length) || (options.useAbsoluteForDescendents && c === rootParts.length)) {
// Use an absolute path if there's no common portion, or if specifically requested
if(c === 1 || (options.useAbsoluteForNonDescendents && c < rootParts.length) || (options.useAbsoluteForDescendents && c === rootParts.length)) {
return sourcepath;
}
// Move up a directory for each directory left in the root
@@ -87,25 +105,21 @@ function makePathRelative(sourcepath,rootpath,options) {
}
function test_makePathRelative() {
var msg = "makePathRelative test failed";
if(makePathRelative("/Users/me/something","/Users/you/something") !== "../../me/something") {
throw msg;
}
if(makePathRelative("/Users/me/something","/Users/you/something",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") {
throw msg;
}
if(makePathRelative("/Users/me/something/else","/Users/me/something") !== "else") {
throw msg;
}
if(makePathRelative("/Users/me/something","/Users/me/something/new") !== "..") {
throw msg;
}
if(makePathRelative("/Users/me/something","/Users/me/something/new",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") {
throw msg;
}
if(makePathRelative("/Users/me/something","/Users/me/something") !== ".") {
throw msg;
}
var test = function(sourcepath,rootpath,result,options) {
if(makePathRelative(sourcepath,rootpath,options) !== result) {
throw "makePathRelative test failed: makePathRelative(" + sourcepath + "," + rootpath + "," + JSON.stringify(options) + ") is not equal to " + result;
}
};
test("/Users/me/something/file.png","/Users/you/something","../../me/something/file.png");
test("/Users/me/something/file.png","/Users/you/something","/Users/me/something/file.png",{useAbsoluteForNonDescendents: true});
test("/Users/me/something/else/file.png","/Users/me/something","else/file.png");
test("/Users/me/something/file.png","/Users/me/something/new","../file.png");
test("/Users/me/something/file.png","/Users/me/something/new","/Users/me/something/file.png",{useAbsoluteForNonDescendents: true});
test("/Users/me/something/file.png","/Users/me/something","file.png");
test("C:\\Users\\me\\something\\file.png","/C:/Users/me/something","file.png",{isWindows: true});
test("\\\\SHARE\\Users\\me\\something\\file.png","/SHARE/Users/me/somethingelse","../something/file.png",{isWindows: true});
test("\\\\SHARE\\Users\\me\\something\\file.png","/C:/Users/me/something","/SHARE/Users/me/something/file.png",{isWindows: true});
}
})();

View File

@@ -53,7 +53,7 @@ FileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) {
// Otherwise, we'll need to generate it
fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{
directory: $tw.boot.wikiTiddlersPath,
pathFilters: this.wiki.getTiddlerText("$:/config/FileSystemPaths"),
pathFilters: this.wiki.getTiddlerText("$:/config/FileSystemPaths","").split("\n"),
wiki: this.wiki
});
$tw.boot.files[title] = fileInfo;

View File

@@ -3,20 +3,20 @@ tags: $:/tags/Macro
\define translatableStringEditorInner(tiddlerTitle)
<tr>
<td width="1px">
<td width="250px">
<$link><$list filter=<<shortenTitle>>><$text text=<<currentTiddler>>/></$list></$link>
</td>
<td width="100%">
<td>
<$list filter="""$(editFieldsFilter)$""" variable="editorField">
<$edit-text tag="$(editorTagName)$" field=<<editorField>> type="text" class="tc-edit-texteditor" minHeight="10px"/>
</$list>
</td>
<td width="1px">
<td width="20px">
<div class="tc-drop-down-wrapper">
<$button class="tc-btn-invisible" popup=<<qualify "$:/state/popup/translationInfo/$tiddlerTitle$">>>
{{$:/core/images/down-arrow}}
</$button>
<$reveal state=<<qualify "$:/state/popup/translationInfo/$tiddlerTitle$">> type="popup" position="belowleft" text="" default="">
<$reveal state=<<qualify "$:/state/popup/translationInfo/$tiddlerTitle$">> type="popup" position="belowleft" positionAllowNegative="yes" text="" default="">
<div class="tc-drop-down">
<p>
Original en-GB text:

View File

@@ -1,7 +1,7 @@
<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Join the Community</h1><p>
<h2 class="">Users</h2><p>The TiddlyWiki discussion groups are mailing lists for talking about TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.</p><ul><li>The main TiddlyWiki group: <a class="tc-tiddlylink-external" href="http://groups.google.com/group/TiddlyWiki" rel="noopener noreferrer" target="_blank">http://groups.google.com/group/TiddlyWiki</a><blockquote><p>Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to <a class="tc-tiddlylink-external" href="mailto:tiddlywiki+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywiki+subscribe@googlegroups.com</a> or <a class="tc-tiddlylink-external" href="mailto:tiddlywikidev+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywikidev+subscribe@googlegroups.com</a>.</p></blockquote><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywiki@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li><li>Watch recordings of our regular <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki%2520Hangouts.html">TiddlyWiki Hangouts</a></li><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li><li><strong>New: Join us on our live chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> !</strong></li></ul><h2 class="">Developers</h2><ul><li>The <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/TiddlyWikiDev.html">TiddlyWikiDev</a> group for developers: <a class="tc-tiddlylink-external" href="http://groups.google.com/group/TiddlyWikiDev" rel="noopener noreferrer" target="_blank">http://groups.google.com/group/TiddlyWikiDev</a><blockquote><p>Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to <a class="tc-tiddlylink-external" href="mailto:tiddlywiki+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywiki+subscribe@googlegroups.com</a> or <a class="tc-tiddlylink-external" href="mailto:tiddlywikidev+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywikidev+subscribe@googlegroups.com</a>.</p></blockquote><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywikidev@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/#!/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li><li>Get involved in the <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">development on GitHub</a></li><li>Chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> (development room coming soon)</li></ul><p>New releases of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyDesktop.html">TiddlyDesktop</a> and <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyFox.html">TiddlyFox</a> are announced via the discussion groups and <a class="tc-tiddlylink-external" href="https://twitter.com/TiddlyWiki" rel="noopener noreferrer" target="_blank">Twitter</a> (you can also subscribe to an Atom/RSS feed of <a class="tc-tiddlylink-external" href="https://github.com/jermolene/tiddlywiki5/releases.atom" rel="noopener noreferrer" target="_blank">TiddlyWiki releases from GitHub</a>)</p><h2 class="">Documentation</h2><p>There is also a discussion group specifically for discussing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> documentation improvement initiatives: <a class="tc-tiddlylink-external" href="http://groups.google.com/group/tiddlywikidocs" rel="noopener noreferrer" target="_blank">http://groups.google.com/group/tiddlywikidocs</a>
</p>
</p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a>, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg &quot;5.1.20&quot;; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt">
</p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a>, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg &quot;5.1.21&quot;; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt">
<g fill-rule="evenodd">
<path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path>
</g>

View File

@@ -431,7 +431,8 @@ button svg, button img, label svg, label img {
margin: 0;
background: none;
border: none;
cursor: pointer;
cursor: pointer;
color: <<colour foreground>>;
}
.tc-btn-boxed {
@@ -648,6 +649,10 @@ button.tc-tag-label, span.tc-tag-label {
border-radius: 1em;
}
.tc-sidebar-scrollable .tc-tag-label {
text-shadow: none;
}
.tc-untagged-separator {
width: 10em;
left: 0;