15 Commits

Author SHA1 Message Date
5897a90a99 Merge branch 'privatization-fixes'
Signed-off-by: Jacob Kiers <code@kiers.eu>
2022-03-16 00:06:21 +01:00
77e649f747 Add feature to also redact custom link text
It is possible that a private person is linked to in a tiddler with the
syntax `[[Jane|MsJaneDoe]]`.

Up to now, the text of the link was not redacted, which could lead to
unintentional privacy leaks.

Therefore, a new parameter `replace_text` is introduced for the
`replace_private_people` builder.

When that is set to True, then the link text is also replaced with the
initials.

Signed-off-by: Jacob Kiers <code@kiers.eu>
2022-03-15 23:59:28 +01:00
77886cb1c6 Merge branch 'allow-specifying-listening-host' 2022-03-12 02:32:57 +01:00
57394668be Merge branch 'privatization-fixes' 2022-03-12 02:32:46 +01:00
3b1f91bcb0 Allow setting the host parameter
In order to run in a Docker container, it is necessary to listen on all interfaces (`0.0.0.0`).
So make it possible to set the host.

Fixes #1

Signed-off-by: Jacob Kiers <code@kiers.eu>
2022-03-12 02:31:57 +01:00
4075c4fb18 Add feature to also redact custom link text
It is possible that a private person is linked to in a tiddler with the
syntax `[[Jane|MsJaneDoe]]`.

Up to now, the text of the link was not redacted, which could lead to
unintentional privacy leaks.

Therefore, a new parameter `replace_text` is introduced for the
`replace_private_people` builder.

When that is set to True, then the link text is also replaced with the
initials.

Signed-off-by: Jacob Kiers <code@kiers.eu>
2022-03-12 01:50:05 +01:00
Soren I. Bjornstad
35ca2b896e regular update 2022-01-03 15:31:14 -06:00
Soren I. Bjornstad
0705c55e77 fix only one PrivatePerson replacement working per line
Because the 'line' variable was already bound in the outer loop, changes
to the line in the inner loop were lost in subsequent inner-loop
iterations, if required. Change to always indexing the array (which is
defined outside the scope of the loops) directly on every reference.

(This is why it's usually best not to modify things while looping over
them. Maybe a refactor could be in order.)
2021-11-29 21:47:21 -06:00
Soren I. Bjornstad
f8edb70065 bump version 2021-09-22 11:34:02 -05:00
Soren I. Bjornstad
218705bdc9 add walkthrough video link 2021-09-22 11:33:19 -05:00
Soren I. Bjornstad
48a8789c4d activate venv before trying publish
Was planning to do this myself, but I forgot so many times I'm just
adding it...
2021-09-22 11:29:05 -05:00
Soren Bjornstad
48ab7f9514 add walkthrough video to README 2021-09-22 11:28:36 -05:00
Soren I. Bjornstad
f2d9a2abe6 bump version 2021-09-22 10:58:25 -05:00
Soren I. Bjornstad
cb55a967d0 remove build folder prior to building wheels
Otherwise files that have been removed will still show up in the wheel
-- but not in the source distribution -- which is super confusing and
wrong. No idea why Python doesn't check this itself.
2021-09-22 10:57:18 -05:00
Soren I. Bjornstad
52c0daedbb fix tray 2021-09-22 10:54:06 -05:00
53 changed files with 1088 additions and 19427 deletions

View File

@@ -19,7 +19,7 @@ Some basic knowledge of [TiddlyWiki](https://tiddlywiki.com)
Documentation / Installation Documentation / Installation
============================ ----------------------------
Find a live version of the edition on the web with further instructions Find a live version of the edition on the web with further instructions
at https://sobjornstad.github.io/tzk/. at https://sobjornstad.github.io/tzk/.
@@ -28,3 +28,14 @@ You can find the documentation for the CLI
versioning with Git, versioning with Git,
and creating public and other derivative versions of the wiki) and creating public and other derivative versions of the wiki)
at https://tzk.readthedocs.io/en/latest/. at https://tzk.readthedocs.io/en/latest/.
Video walkthrough
-----------------
Since tzk is still in an alpha state,
general instructions on how to use it are somewhat lacking at the moment.
To fill in the gap in the meantime,
I recorded an hour-long walkthrough showing how you might take notes using tzk;
you can select individual sections to watch if that's longer than you want.
[Watch the video on YouTube](https://www.youtube.com/watch?v=9X_T-DVie8o).

View File

@@ -18,9 +18,9 @@ copyright = '2021 Soren Bjornstad'
author = 'Soren Bjornstad' author = 'Soren Bjornstad'
# The short X.Y version # The short X.Y version
version = "0.1.2" version = "0.1.4"
# The full version, including alpha/beta/rc tags # The full version, including alpha/beta/rc tags
release = "0.1.2" release = "0.1.4"
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,8 @@
#!/bin/bash #!/bin/bash
set -e set -e
. venv/bin/activate
rm -rf build/
rm -f dist/* rm -f dist/*
mkdir -p dist mkdir -p dist
python setup.py sdist bdist_wheel python setup.py sdist bdist_wheel

View File

@@ -9,7 +9,7 @@ with open("README.md", "r") as fh:
setuptools.setup( setuptools.setup(
name="tzk", name="tzk",
version="0.1.2", version="0.1.4",
author="Soren I. Bjornstad", author="Soren I. Bjornstad",
author_email="zettelkasten@sorenbjornstad.com", author_email="zettelkasten@sorenbjornstad.com",
description="Build tool for TiddlyWiki Zettelkasten", description="Build tool for TiddlyWiki Zettelkasten",

View File

@@ -83,6 +83,12 @@ class ListenCommand(CliCommand):
@classmethod @classmethod
def setup_arguments(cls, parser: argparse.ArgumentParser) -> None: def setup_arguments(cls, parser: argparse.ArgumentParser) -> None:
parser.add_argument(
"--host",
metavar="HOST",
help="Host to listen on.",
default=str(cm().listen_host or "127.0.0.1"),
)
parser.add_argument( parser.add_argument(
"-p", "--port", "-p", "--port",
metavar="PORT", metavar="PORT",
@@ -109,6 +115,7 @@ class ListenCommand(CliCommand):
tw.exec( tw.exec(
[ [
("listen", ("listen",
f"host={args.host}",
f"port={args.port}", f"port={args.port}",
f"username={args.username}", f"username={args.username}",
f"password={args.password}") f"password={args.password}")

View File

@@ -360,7 +360,7 @@ def _private_people_replacement_table(
@tzk_builder @tzk_builder
def replace_private_people(initialer: Callable[[str], str] = None) -> None: def replace_private_people(initialer: Callable[[str], str] = None, replace_link_text = False) -> None:
""" """
Replace the names of people who are not marked Public with their initials. Replace the names of people who are not marked Public with their initials.
@@ -384,35 +384,60 @@ def replace_private_people(initialer: Callable[[str], str] = None) -> None:
that takes one string argument that takes one string argument
(a tiddler filename without the full path, e.g., ``MsJaneDoe.tid``) (a tiddler filename without the full path, e.g., ``MsJaneDoe.tid``)
and returns a string to be considered the "initials" of that person. and returns a string to be considered the "initials" of that person.
:param replace_link_text: If you have links in the form
``So then [[John said|MrJohnDoe]] something about this``,
then enabling this option ensures that the link is fully
replaced with
``So then [[J.D.|PrivatePerson]] something about this``.
This means that when using this feature, having the
link text also be meaningful after redaction is important.
.. warning ::
Using this link replacement feature does not redact everything, just the link
(and the link text with `replace_link_text` enabled). So *do not* rely on it
for redacting everything. Making a tiddler public still needs consideration and
tooling is there to help, not to replace your own judgment.
""" """
assert 'public_wiki_folder' in build_state assert 'public_wiki_folder' in build_state
replacement_table = _private_people_replacement_table(initialer) replacement_table = _private_people_replacement_table(initialer)
from pprint import pprint; pprint(replacement_table)
tid_files = (Path(build_state['public_wiki_folder']) / "tiddlers").glob("**/*.tid") tid_files = (Path(build_state['public_wiki_folder']) / "tiddlers").glob("**/*.tid")
for tiddler in tid_files: for tiddler in tid_files:
dirty = False dirty = False
with tiddler.open() as f: with tiddler.open() as f:
lines = f.readlines() lines = f.readlines()
for idx, line in enumerate(lines): for i in range(len(lines)):
for replace_person, replace_initials in replacement_table.items(): for replace_person, replace_initials in replacement_table.items():
if replace_person in line: if replace_person in lines[i]:
if '|' + replace_person + ']]' in line: if '|' + replace_person + ']]' in lines[i]:
# link with the person as the target only; # link with the person as the target only;
# beware that you might have put something private in the text # beware that you might have put something private in the text
lines[idx] = line.replace(replace_person, if replace_link_text:
'PrivatePerson') # with this option, the initials are also
elif '[[' + replace_person + ']]' in line: # put in the text, solving the warning before
end = lines[i].find('|' + replace_person + ']]')
start = lines[i].rfind('[[', 0, end) + 2
search = f"[[{lines[i][start:end]}|{replace_person}]]"
replace = f"[[{replace_initials}|PrivatePerson]]"
lines[i] = lines[i].replace(search, replace)
else:
lines[i] = lines[i].replace(replace_person, 'PrivatePerson')
elif '[[' + replace_person + ']]' in lines[i]:
# link with the person as the target and text # link with the person as the target and text
lines[idx] = line.replace(replace_person, lines[i] = lines[i].replace(
replace_initials + '|PrivatePerson') replace_person,
replace_initials + '|PrivatePerson')
else: else:
# camel-case link or unlinked reference in text; # camel-case link or unlinked reference in text;
# or spurious substring, so rule that out with the '\b' search # or spurious substring, so rule that out with the '\b' search
lines[idx] = re.sub( lines[i] = re.sub(
r"\b" + re.escape(replace_person) + r"\b", r"\b" + re.escape(replace_person) + r"\b",
f'<<privateperson "{replace_initials}">>', f'<<privateperson "{replace_initials}">>',
line lines[i]
) )
dirty = True dirty = True
if dirty: if dirty:

View File

@@ -0,0 +1,5 @@
created: 20210925145600000
modified: 20210925145600000
tags:
title: $:/config/TiddlyRemember/DefaultClasses
type: text/vnd.tiddlywiki

View File

@@ -0,0 +1,7 @@
created: 20210929144900000
modified: 20210929144900000
tags:
title: $:/config/TiddlyRemember/snippets/remembercz
<<remembercz "%NOTE_ID%"
"Cloze">>

View File

@@ -0,0 +1,8 @@
created: 20210929144900000
modified: 20210929144900000
tags:
title: $:/config/TiddlyRemember/snippets/rememberq
<<rememberq "%NOTE_ID%"
"Q"
"A">>

View File

@@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2020 Soren Bjornstad. Copyright (c) 2020-2021 Soren Bjornstad and the TiddlyRemember community.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -0,0 +1,20 @@
created: 20210929144300000
modified: 20210929144300000
tags: $:/tags/Macro
title: $:/plugins/sobjornstad/TiddlyRemember/macros/insert-snippet
type: text/vnd.tiddlywiki
\define tr-insert-note(snippet)
<$vars
thetime=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">>
theprefix={{$:/config/TiddlyRemember/IdPrefix}}>
<$vars
noteid={{{ [<theprefix>addsuffix<thetime>] }}}
editingtid={{{ [<storyTiddler>get[draft.of]] }}}>
<$action-sendmessage
$message="tm-edit-text-operation"
$param="replace-selection"
text={{{ [<__snippet__>search-replace[%NOTE_ID%],<noteid>search-replace[%EDITING_TIDDLER%],<editingtid>] }}}/>
</$vars>
</$vars>
\end

View File

@@ -1,10 +1,10 @@
created: 20200510004110231 created: 20200510004110231
modified: 20200730205800000 modified: 20200925141800000
tags: $:/tags/Macro tags: $:/tags/Macro
title: $:/plugins/sobjornstad/TiddlyRemember/macros/remember title: $:/plugins/sobjornstad/TiddlyRemember/macros/remember
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
\define remembertwo(id, reference) \define remembertwo(id, reference, sched)
<div class="tr-selfidentification"> <div class="tr-selfidentification">
<$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]"> <$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]">
<<selfid>> <<selfid>>
@@ -16,10 +16,13 @@ type: text/vnd.tiddlywiki
<div class="tr-reference"> <div class="tr-reference">
<$text text=<<__reference__>>/> <$text text=<<__reference__>>/>
</div> </div>
<div class="tr-sched">
<$text text=<<__sched__>>/>
</div>
\end \end
\define rememberq(id, question, answer, reference: "") \define rememberq(id, question, answer, reference: "", sched: "", class:"")
<div class="rememberq remembertwo"> <div class={{{ [[rememberq remembertwo ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
<div class="rquestion tr-ritem"> <div class="rquestion tr-ritem">
<div>Q:</div> <div>Q:</div>
<p>$question$</p> <p>$question$</p>
@@ -28,12 +31,12 @@ type: text/vnd.tiddlywiki
<div>A:</div> <div>A:</div>
<p>$answer$</p> <p>$answer$</p>
</div> </div>
<$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>>/> <$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
</div> </div>
\end \end
\define rememberp(id, first, second, reference: "") \define rememberp(id, first, second, reference: "", sched: "", class: "")
<div class="rememberp remembertwo"> <div class={{{ [[rememberp remembertwo ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
<div class="rfirst tr-ritem"> <div class="rfirst tr-ritem">
<div>1:</div> <div>1:</div>
<p>$first$</p> <p>$first$</p>
@@ -42,52 +45,51 @@ type: text/vnd.tiddlywiki
<div>2:</div> <div>2:</div>
<p>$second$</p> <p>$second$</p>
</div> </div>
<$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>>/> <$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
</div> </div>
\end \end
\define remembercz(id, text, mode: "block", reference: "") \define remembercz(id, text, mode: "block", reference: "", sched: "", class: "")
<$list filter="[[$mode$]match[inline]]"> <$list filter="[[$mode$]match[inline]]" variable=_>
<$macrocall $name=twRememberClozeInline id=<<__id__>> text=<<__text__>> reference=<<__reference__>>/> <$macrocall $name=twRememberClozeInline id=<<__id__>> text=<<__text__>> reference=<<__reference__>> sched=<<__sched__>> class=<<__class__>>/>
</$list> </$list>
<$list filter="[[$mode$]!match[inline]]"> <$list filter="[[$mode$]!match[inline]]" variable=_>
<$macrocall $name=twRememberClozeBlock id=<<__id__>> text=<<__text__>> reference=<<__reference__>>/> <$macrocall $name=twRememberClozeBlock id=<<__id__>> text=<<__text__>> reference=<<__reference__>> sched=<<__sched__>> class=<<__class__>>/>
</$list> </$list>
\end \end
\define twRememberClozeBlock(id, text, reference) \define twRememberMetadata(id, reference, sched)
<div class="remembercz"> <div class="tr-selfidentification">
<span class="cloze-identifier">cloze: </span> <$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]">
<span class="cloze-text">$text$</span> <<selfid>>
<div class="tr-selfidentification"> </$set>
<$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]"> </div>
<<selfid>> <div class="rid">
</$set> [$id$]
</div> </div>
<div class="rid"> <div class="tr-reference">
[$id$] <$text text=<<__reference__>>/>
</div> </div>
<div class="tr-reference"> <div class="tr-sched">
<$text text=<<__reference__>>/> <$text text=<<__sched__>>/>
</div>
</div> </div>
\end \end
\define twRememberClozeInline(id, text, reference) \define twRememberClozeBlock(id, text, reference, sched, class)
<span class="remembercz"> <div class={{{ [[remembercz ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
<span class="cloze-identifier">{cloze: </span> <span class="cloze-identifier"><span class="tr-name-cloze">cloze: </span></span>
<span class="cloze-display"><$set name="unescape" value={{{ [<__text__>search-replace:g[\{],[{]search-replace:g[\}],[}]] }}}><<unescape>></$set></span>
<span class="cloze-text">$text$</span> <span class="cloze-text">$text$</span>
<$macrocall $name="twRememberMetadata" id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
</div>
\end
\define twRememberClozeInline(id, text, reference, sched, class)
<span class={{{ [[remembercz ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
<span class="cloze-identifier">{<span class="tr-name-cloze">cloze: </span></span>
<span class="cloze-display"><$set name="unescape" value={{{ [<__text__>search-replace:g[\{],[{]search-replace:g[\}],[}]] }}}><<unescape>></$set></span>
<span class="cloze-identifier">}</span> <span class="cloze-identifier">}</span>
<div class="tr-selfidentification"> <span class="cloze-text">$text$</span>
<$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]"> <$macrocall $name="twRememberMetadata" id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
<<selfid>>
</$set>
</div>
<div class="rid">
[$id$]
</div>
<div class="tr-reference">
<$text text=<<__reference__>>/>
</div>
</span> </span>
\end \end

View File

@@ -43,7 +43,8 @@ div.remembercz {
color: <<colour muted-foreground>>; color: <<colour muted-foreground>>;
} }
/* the separate reference and ID fields are only for TR's benefit */
/* these separate fields are only read by the TR parser */
div.remembertwo div.tr-reference, .remembercz div.tr-reference { div.remembertwo div.tr-reference, .remembercz div.tr-reference {
display: none; display: none;
} }
@@ -51,3 +52,28 @@ div.remembertwo div.tr-reference, .remembercz div.tr-reference {
div.remembertwo div.rid, .remembercz div.rid { div.remembertwo div.rid, .remembercz div.rid {
display: none; display: none;
} }
div.remembertwo div.tr-sched, .remembercz div.tr-sched {
display: none;
}
.remembercz > span.cloze-text {
display: none;
}
/***** Built-in classes for common format customizations; apply to the class: parameter to macros *****/
/* Hide the ID field */
.tr-hide-id div.tr-selfidentification {
display: none;
}
/* Hide the ID only if it's an inline cloze */
span.remembercz.tr-hide-inline-cloze-id div.tr-selfidentification {
display: none;
}
/* Hide the word "cloze" on inline clozes */
span.remembercz.tr-hide-inline-cloze-name span.cloze-identifier span.tr-name-cloze {
display: none;
}

View File

@@ -6,9 +6,13 @@ type: text/vnd.tiddlywiki
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]] \import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
<span id="tr-version">1.2.2</span> <$set name="tr-rendering" value="yes">
<span id="tr-version">1.3.2</span>
{{||$:/plugins/sobjornstad/TiddlyRemember/templates/AnkiDecks}} {{||$:/plugins/sobjornstad/TiddlyRemember/templates/AnkiDecks}}
{{||$:/plugins/sobjornstad/TiddlyRemember/templates/AnkiTags}} {{||$:/plugins/sobjornstad/TiddlyRemember/templates/AnkiTags}}
<$transclude mode="block" /> <$transclude mode="block" />
</$set>

View File

@@ -10,21 +10,4 @@ tags: $:/tags/EditorToolbar
title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/remembercz title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/remembercz
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
\define getMacro() <$macrocall $name=tr-insert-note snippet={{$:/config/TiddlyRemember/snippets/remembercz}}>
<<remembercz "$(clozeid)$"
"Cloze">>
\end
\define prefixId() $(theprefix)$$(thetime)$
<$set name=thetime value=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">> >
<$set name=theprefix value={{$:/config/TiddlyRemember/IdPrefix}}>
<$set name=clozeid value=<<prefixId>> >
<$action-sendmessage
$message="tm-edit-text-operation"
$param="replace-selection"
text=<<getMacro>>
/>
</$set>
</$set>
</$set>

View File

@@ -9,22 +9,4 @@ tags: $:/tags/EditorToolbar
title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/rememberq title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/rememberq
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
\define getMacro() <$macrocall $name=tr-insert-note snippet={{$:/config/TiddlyRemember/snippets/rememberq}}>
<<rememberq "$(questionid)$"
"Q"
"A">>
\end
\define prefixId() $(theprefix)$$(thetime)$
<$set name=thetime value=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">> >
<$set name=theprefix value={{$:/config/TiddlyRemember/IdPrefix}}>
<$set name=questionid value=<<prefixId>> >
<$action-sendmessage
$message="tm-edit-text-operation"
$param="replace-selection"
text=<<getMacro>>
/>
</$set>
</$set>
</$set>

View File

@@ -2,7 +2,7 @@
"title": "$:/plugins/sobjornstad/TiddlyRemember", "title": "$:/plugins/sobjornstad/TiddlyRemember",
"description": "TiddlyRemember: Embed Anki notes in your TiddlyWiki", "description": "TiddlyRemember: Embed Anki notes in your TiddlyWiki",
"author": "Soren Bjornstad", "author": "Soren Bjornstad",
"version": "1.2.2", "version": "1.3.2",
"core-version": ">=5.1.21", "core-version": ">=5.1.21",
"source": "https://github.com/sobjornstad/TiddlyRemember", "source": "https://github.com/sobjornstad/TiddlyRemember",
"list": "readme license", "list": "readme license",

View File

@@ -0,0 +1,68 @@
caption: Shuffle Operator
title: $:/plugins/mklauber/shuffle/readme
|!purpose|Randomize the order of the input list|
|!input|a selection of titles|
|!parameter|a random string to be used to create consistent random ordering|
|!output|The input titles, rearranged in a random order|
This plugin implements a new filter operator called Shuffle. This operator takes the input list and randomizes the order of the list. If no parameter is provided, the list order is random every time.
!!!Example:
```
<$list filter="1 2 3 4 5 +[shuffle[]]">
</$list>
```
<$button popup="$:/state/shuffle/reveal1">Run Demo</$button>
<$reveal type="popup" state="$:/state/shuffle/reveal1">
<div class="tc-drop-down">
<$list filter="1 2 3 4 5 +[shuffle[]]">
</$list>
</div>
</$reveal>
Combining this operator with the first operator allows you to choose 1 or more titles randomly from a list.
!!!Example:
```
<$list filter="1 2 3 4 5 +[shuffle[]first[2]]">
</$list>
```
<$button popup="$:/state/shuffle/reveal2">Run Demo</$button>
<$reveal type="popup" state="$:/state/shuffle/reveal2">
<div class="tc-drop-down">
<$list filter="1 2 3 4 5 +[shuffle[]first[2]]">
</$list>
</div>
</$reveal>
If a parameter is provided the list will be ordered identically every time it is rendered. This can be useful in conjunction a button that updates a state tiddler. Set the parameter of this operator to reference that state tiddler, and create a button that updates that tiddler, and now the ordering of the random operators only changes when the button is pressed.
!!!Example:
```
<$button>
<$action-setfield $tiddler="$:/temp/shuffle/example" $field="state" $value=<<now "0hh:0mm:0ss">>/>
Change Order
</$button>
<$list filter="1 2 3 4 5 +[shuffle{$:/temp/shuffle/example!!state}]">
</$list>
```
<$button>
<$action-setfield $tiddler="$:/temp/shuffle/example" $field="state" $value=<<now "0hh:0mm:0ss">>/>
Update
</$button>
<$list filter="1 2 3 4 5 +[shuffle{$:/temp/shuffle/example!!state}]">
</$list>

View File

@@ -0,0 +1 @@
!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a<q;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e<l;)g[e]=e++;for(e=0;e<l;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)try{d.push(f(a[c],b-1))}catch(a){}return d.length?d:"string"==e?a:a+"\0"}function g(a,b){for(var c,d=a+"",e=0;e<d.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}function h(){try{var b;return j&&(b=j.randomBytes)?b=b(l):(b=new Uint8Array(l),(k.crypto||k.msCrypto).getRandomValues(b)),i(b)}catch(b){var c=k.navigator,d=c&&c.plugins;return[+new Date,k,d,k.screen,i(a)]}}function i(a){return String.fromCharCode.apply(0,a)}var j,k=this,l=256,m=6,n=52,o="random",p=b.pow(l,m),q=b.pow(2,n),r=2*q,s=l-1;if(b["seed"+o]=c,g(b.random(),a),"object"==typeof module&&module.exports){module.exports=c;try{j=require("crypto")}catch(a){}}else"function"==typeof define&&define.amd&&define(function(){return c})}([],Math);

View File

@@ -0,0 +1,6 @@
created: 20180220123939614
modified: 20180220125617309
module-type: library
tags:
title: $:/plugins/mklauber/shuffle/seedrandom.js
type: application/javascript

View File

@@ -0,0 +1,53 @@
(function(){
"use strict";
var hash = function(str) {
var hash = 0, i, chr, len;
if (str.length === 0) return hash;
for (i = 0, len = str.length; i < len; i++) {
chr = str.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
}
var shuffle = function(array, seed) {
var currentIndex = array.length, temporaryValue, randomIndex ;
Math.seedrandom(seed)
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
var prepare_results = function (source) {
var results = [];
source(function(tiddler,title) {
results.push(title);
});
return results;
};
exports.shuffle = function(source, operator, options) {
var results = prepare_results(source);
if (operator['operand'] == "") {
shuffle(results);
} else {
shuffle(results, hash(operator['operand']));
}
return results;
}
})();

View File

@@ -0,0 +1,6 @@
caption: A filter Operator to randomize the order of the list passed to it.
created: 20150811171933696
modified: 20180220125039203
module-type: filteroperator
title: $:/plugins/mklauber/shuffle/shuffle.js
type: application/javascript

View File

@@ -0,0 +1,5 @@
exports.name = "shuffle"
exports.before = ["render"]
exports.startup = function() {
$tw.modules.execute('$:/plugins/mklauber/shuffle/seedrandom.js');
}

View File

@@ -0,0 +1,6 @@
created: 20180220133753576
modified: 20180220133920300
module-type: startup
tags:
title: $:/plugins/mklauber/shuffle/startup.js
type: application/javascript

View File

@@ -0,0 +1,13 @@
{
"author": "Matthew Lauber",
"core-version": ">=5.0.0",
"created": "20210105134918257",
"dependents": "",
"description": "A Shuffle filter operator",
"list": "readme",
"modified": "20211107172616237",
"plugin-type": "plugin",
"source": "https://github.com/mklauber/tiddly-shuffle",
"title": "$:/plugins/mklauber/shuffle",
"version": "1.0.2"
}

View File

@@ -0,0 +1,8 @@
created: 20210928031215487
creator: soren
modified: 20210928031216652
modifier: soren
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/do-thing
type: text/vnd.tiddlywiki
show

View File

@@ -1,5 +1,5 @@
created: 20200516190911842 created: 20200516190911842
modified: 20210308030709436 modified: 20211113234932630
tags: tags:
title: $:/config/TiddlyRemember/TagMapping title: $:/config/TiddlyRemember/TagMapping
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@@ -2,9 +2,9 @@ caption: Sidebar info links
created: 20210623014408947 created: 20210623014408947
creator: soren creator: soren
description: Show navigation links to the most important parts of the wiki underneath the subtitle. description: Show navigation links to the most important parts of the wiki underneath the subtitle.
modified: 20210825145449987 modified: 20211107173557802
modifier: soren modifier: soren
private: no private: yes
public: no public: no
tags: tags:
title: $:/config/zettelkasten/FeatureFlags/SidebarInfoLinks title: $:/config/zettelkasten/FeatureFlags/SidebarInfoLinks

View File

@@ -2,7 +2,7 @@ caption: Spoiler banner
created: 20210622003118415 created: 20210622003118415
creator: soren creator: soren
description: Display a warning banner on fiction tiddlers (any tiddler with a non-empty `universe` field) noting that we don't try to hide spoilers. description: Display a warning banner on fiction tiddlers (any tiddler with a non-empty `universe` field) noting that we don't try to hide spoilers.
modified: 20210909130158483 modified: 20211107181812051
modifier: soren modifier: soren
private: no private: no
public: no public: no

View File

@@ -0,0 +1,19 @@
caption: {{$:/language/Buttons/Linkify/Caption}}
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]
created: 20210928031136147
creator: soren
description: {{$:/language/Buttons/Linkify/Hint}}
icon: $:/core/images/linkify
modified: 20210928031136215
modifier: soren
shortcuts: ((linkify))
tags: $:/tags/EditorToolbar
title: $:/core/ui/EditorToolbar/linkify
type: text/vnd.tiddlywiki
<$action-sendmessage
$message="tm-edit-text-operation"
$param="wrap-selection"
prefix="[["
suffix="]]"
/>

View File

@@ -0,0 +1,19 @@
caption: {{$:/language/Buttons/Transcludify/Caption}}
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]
created: 20210928031136147
creator: soren
description: {{$:/language/Buttons/Transcludify/Hint}}
icon: $:/core/images/transcludify
modified: 20210928031136239
modifier: soren
shortcuts: ((transcludify))
tags: $:/tags/EditorToolbar
title: $:/core/ui/EditorToolbar/transcludify
type: text/vnd.tiddlywiki
<$action-sendmessage
$message="tm-edit-text-operation"
$param="wrap-selection"
prefix="{{"
suffix="}}"
/>

View File

@@ -0,0 +1,52 @@
/*\
title: $:/inmysocks/macros/day-diff.js
type: application/javascript
module-type: macro
Takes two dates and returns their difference in days
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Information about this macro
*/
exports.name = "day-diff";
exports.params = [
{name: "year1"},
{name: "month1"},
{name: "day1"},
{name: "year2"},
{name: "month2"},
{name: "day2"}
];
/*
Run the macro
*/
exports.run = function(year1, month1, day1, year2, month2, day2) {
//Make each date object.
var date1 = new Date(year1, Number(month1)+Number(1), day1);
var date2 = new Date(year2, Number(month2)+Number(1), day2);
//Find difference in milliseconds.
var elapsed = date2.getTime()-date1.getTime();
//Number of milliseconds in a day.
var dayMS = 86400000;
//Convert milliseconds to year months and days
var days_diff = Math.floor(elapsed/dayMS);
var result = days_diff;
return result;
};
})();

View File

@@ -0,0 +1,6 @@
created: 20150225185218583
modified: 20211204021739668
module-type: macro
tags:
title: $:/inmysocks/macros/day-diff.js
type: application/javascript

View File

@@ -0,0 +1,31 @@
caption: RememberCz
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]
created: 20200517155905263
creator: soren
description: Remember Cloze Deletion
icon: $:/plugins/sobjornstad/TiddlyRemember/icons/lightbulb-black.svg
modified: 20211113234933532
modifier: soren
shortcuts: ((remembercz))
tags: $:/tags/EditorToolbar
title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/remembercz
type: text/vnd.tiddlywiki
\define getMacro()
<<remembercz "$(clozeid)$"
"Cloze">>
\end
\define prefixId() $(theprefix)$$(thetime)$
<$set name=thetime value=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">> >
<$set name=theprefix value={{$:/config/TiddlyRemember/IdPrefix}}>
<$set name=clozeid value=<<prefixId>> >
<$action-sendmessage
$message="tm-edit-text-operation"
$param="replace-selection"
text=<<getMacro>>
/>
</$set>
</$set>
</$set>

View File

@@ -1,10 +1,11 @@
caption: Excise private chunk caption: Excise private chunk
condition: [<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]] condition: [<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]
created: 20210522034413324 created: 20210522034413324
creator: soren
description: Create a new private chunk from the selection description: Create a new private chunk from the selection
icon: $:/core/images/locked-padlock icon: $:/core/images/locked-padlock
list-after: $:/core/ui/EditorToolbar/excise modified: 20210928031136154
modified: 20210522034828757 modifier: soren
shortcuts: ((excise-private-chunk)) shortcuts: ((excise-private-chunk))
tags: $:/tags/EditorToolbar tags: $:/tags/EditorToolbar
title: $:/sib/Buttons/excise-private-chunk title: $:/sib/Buttons/excise-private-chunk

View File

@@ -1,11 +1,13 @@
caption: possible caption: possible
color: lightblue color: lightblue
created: 20210508225155649 created: 20210508225155649
modified: 20210508230813020 creator: soren
modified: 20211229142954562
modifier: soren
section: main section: main
stackorder: 30 stackorder: 30
tags: tags:
title: $:/sib/EpistemicStatus/possible title: $:/sib/EpistemicStatus/possible
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
I [[withhold judgment|OpinionsRequireCounterarguments]] on the idea; I am merely reporting it. I [[withhold judgment|NoOpinion]] on the idea; I am merely reporting it.

View File

@@ -1,7 +1,7 @@
caption: Next steps caption: Next steps
created: 20210828133924602 created: 20210828133924602
creator: soren creator: soren
modified: 20210828134435065 modified: 20210922163144199
modifier: soren modifier: soren
tags: tags:
title: $:/sib/GettingStarted/NextSteps title: $:/sib/GettingStarted/NextSteps
@@ -13,6 +13,8 @@ I recommend starting by ''adding some notes''! Add a couple of tiddlers for the
Once you've gotten a few notes into the system, you will be in a good place to ''decide what elements of this edition you like and what things you'll want to change''. If you want to get into customizing the wiki and you don't have much experience with TiddlyWiki, check out [[Grok TiddlyWiki|https://groktiddlywiki.com/read]], a complete textbook and reference designed for learning how this stuff works from the ground up. Once you've gotten a few notes into the system, you will be in a good place to ''decide what elements of this edition you like and what things you'll want to change''. If you want to get into customizing the wiki and you don't have much experience with TiddlyWiki, check out [[Grok TiddlyWiki|https://groktiddlywiki.com/read]], a complete textbook and reference designed for learning how this stuff works from the ground up.
At any time, you can watch [[an hour-long walkthrough video|https://www.youtube.com/watch?v=9X_T-DVie8o]] showing the most important features of tzk.
At any time, you can click the ''tools button {{$:/core/images/theme-button}}'' on the page toolbar (upper-right corner of the wiki, right under the title) to access a wide variety of tools, settings, and documentation related to the Zettelkasten edition. At any time, you can click the ''tools button {{$:/core/images/theme-button}}'' on the page toolbar (upper-right corner of the wiki, right under the title) to access a wide variety of tools, settings, and documentation related to the Zettelkasten edition.
If you have questions, comments, or suggestions, please feel free to get in touch at `zettelkasten@sorenbjornstad.com`. If you have questions, comments, or suggestions, please feel free to get in touch at `zettelkasten@sorenbjornstad.com`.

View File

@@ -1,14 +1,19 @@
created: 20210623014041787 created: 20210623014041787
creator: soren
list-after: $:/core/ui/SideBarSegments/site-subtitle list-after: $:/core/ui/SideBarSegments/site-subtitle
modified: 20210623014719347 modified: 20211107173606954
modifier: soren
tags: $:/tags/SideBarSegment tags: $:/tags/SideBarSegment
title: $:/sib/SideBar/InfoLinks title: $:/sib/SideBar/InfoLinks
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
\define go-random-action() <$action-navigate $to={{{[tag[Idea]!tag[PrivateChunk]!regexp[/]!tag[Stub]shuffle[]first[]]}}}/>
<$list filter=<<ff SidebarInfoLinks>> variable=_> <$list filter=<<ff SidebarInfoLinks>> variable=_>
[[about|PublicHomepage]]&nbsp;· [[about|PublicHomepage]]&nbsp;·
[[reading|RecentlyRead]]&nbsp;· [[reading|RecentlyRead]]&nbsp;·
[[favorites|Favorites]] [[favorites|Favorites]]&nbsp;·
<$button class="tc-tiddlylink tc-btn-invisible" actions=<<go-random-action>>>random idea</$button>
<style> <style>
.gtw-sidebar-links a, .gtw-sidebar-links button { .gtw-sidebar-links a, .gtw-sidebar-links button {

View File

@@ -1,10 +1,12 @@
caption: Stubs caption: Stubs
created: 20200516155336361 created: 20200516155336361
creator: soren
list-after: $:/core/ui/MoreSideBar/Missing list-after: $:/core/ui/MoreSideBar/Missing
modified: 20210522014721028 modified: 20211204001205484
modifier: soren
title: $:/sib/SideBar/Write/Stub title: $:/sib/SideBar/Write/Stub
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<$list filter="[tag[Stub]sort[]]" emptyMessage="No stubs right now! You're awesome!"> <$list filter="[tag[Stub]sort[]] -[[$:/TagSaver]]" emptyMessage="No stubs right now! You're awesome!">
<$link to=<<currentTiddler>>><<currentTiddler>></$link><br/> <$link to=<<currentTiddler>>><<currentTiddler>></$link><br/>
</$list> </$list>

View File

@@ -1,10 +1,12 @@
created: 20201204132021892 created: 20201204132021892
modified: 20210522014049552 creator: soren
modified: 20211027125509141
modifier: soren
tags: $:/tags/EditTemplate tags: $:/tags/EditTemplate
title: $:/sib/Templates/Automatic/MissingTiddlerCreationNotification title: $:/sib/Templates/Automatic/MissingTiddlerCreationNotification
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<$list filter="[all[current]get[draft.of]prefix[New Tiddler]]" variable="draftof"> <$list filter="[all[current]get[draft.of]prefix[New ]]" variable="draftof">
<$list filter="[all[current]get[draft.title]backlinks[]first[]]" variable=_> <$list filter="[all[current]get[draft.title]backlinks[]first[]]" variable=_>
Creating missing tiddler <$link to={{!!draft.title}}/>. The following tiddlers will link here when you save: Creating missing tiddler <$link to={{!!draft.title}}/>. The following tiddlers will link here when you save:
<<list-links "[all[current]get[draft.title]backlinks[]]">> <<list-links "[all[current]get[draft.title]backlinks[]]">>

View File

@@ -0,0 +1,33 @@
created: 20211120164840100
creator: soren
description: Navigate to the parent or a sibling of the current subtiddler. Subtiddler names are separated from that of their supertiddlers by a / (and are not system tiddlers).
modified: 20211120170254112
modifier: soren
tags: $:/tags/ViewTemplate
title: $:/sib/Templates/Automatic/Subtiddler
transcludedin: All tiddlers whose titles contain a slash and are not system tiddlers.
type: text/vnd.tiddlywiki
\define expand-siblings() <$action-setfield $tiddler="$:/temp/ShowSiblings" $index=<<currentTiddler>> $value="yes" />
\define contract-siblings() <$action-setfield $tiddler="$:/temp/ShowSiblings" $index=<<currentTiddler>> $value="no" />
<$list filter="[all[current]!is[system]regexp:title[/]]" variable=_>
<$set name="parentTiddler" value={{{ [all[current]split[/]butlast[]join[/]] }}}>
<$set name="parentTiddlerPlusSlash" value={{{ [<parentTiddler>addsuffix[/]] }}}>
<div style="text-align: center;">
This is a subtiddler of <$link to=<<parentTiddler>>/>.<br>
<$reveal stateTitle="$:/temp/ShowSiblings" stateIndex=<<currentTiddler>> type="nomatch" text="yes">
<$button class="tc-btn-invisible tc-tiddlylink" actions=<<expand-siblings>>>{{$:/core/images/right-arrow}} Siblings of this subtiddler</$button>
</$reveal>
<$reveal stateTitle="$:/temp/ShowSiblings" stateIndex=<<currentTiddler>> type="match" text="yes">
<$button class="tc-btn-invisible tc-tiddlylink" actions=<<contract-siblings>>>{{$:/core/images/down-arrow}} Siblings of this subtiddler:</$button><br>
<$list filter="[prefix<parentTiddlerPlusSlash>]">
<$link to=<<currentTiddler>>><$text text={{{ [<currentTiddler>removeprefix<parentTiddlerPlusSlash>] }}}/></$link><br>
</$list>
</$reveal>
</div>
</$set>
</$set>
</$list>

View File

@@ -0,0 +1,22 @@
created: 20211120170347843
creator: soren
description: Show a warning on tiddlers that don't have a type selected.
modified: 20211221014011578
modifier: soren
tags: $:/tags/ViewTemplate
title: $:/sib/Templates/Automatic/TypeTagChecker
transcludedin: All tiddlers that exist, aren't system tiddlers or subtiddlers, and don't have at least one tag of the color #ff0000.
type: text/vnd.tiddlywiki
<!-- System tiddlers, missing tiddlers, and subtiddlers are exempt from the warning. -->
<$list filter="[all[current]!is[system]!is[missing]!regexp[/]]">
<$list filter="[all[current]tags[]color[#ff0000]] ~[[Oops]] +[match[Oops]]" variable=_>
<div style="display: inline-block; vertical-align: center; margin-top: 6px; margin-left: 1em; fill: yellow;">
<span style="height: 44px">{{$:/core/images/warning}}</span>
</div>
<div style="display: inline-block; margin-left: 1em; color: yellow; font-weight: bold;">
This tiddler does not have a type tag (type tags appear in red). You should probably attach one.<br>
See [[ZettelkastenCardType]] for details on the available options.
</div>
</$list>
</$list>

View File

@@ -0,0 +1,15 @@
caption: Tray
created: 20210701023215046
creator: soren
description: Items we're currently working on but don't need to leave open. Drag and drop a link to a tiddler to add it.
list:
modified: 20211026030511257
modifier: soren
tags: Meta Tool
title: $:/sib/Tools/Tray
tooltype: aggregator
type: text/vnd.tiddlywiki
Stuff I'm working on but don't need to keep open:
<<list-links-draggable "$:/sib/Tools/Tray" itemTemplate:"$:/sib/Tools/Tray/Template">>

View File

@@ -1,6 +1,6 @@
created: 20210410004529968 created: 20210410004529968
creator: soren creator: soren
modified: 20210825162735756 modified: 20210924153927403
modifier: soren modifier: soren
tags: tags:
title: $:/sib/indite/InditeChildren title: $:/sib/indite/InditeChildren
@@ -50,11 +50,14 @@ copy <<copy-me>> · <<copy-rendered>>
$viewBlock$ $viewBlock$
</div> </div>
</$list> </$list>
<$list filter="[<tr-rendering>!match[yes]]" variable=_>
<$list filter="[all[current]editmode[edit]] [all[current]editmode[both]]"> <$list filter="[all[current]editmode[edit]] [all[current]editmode[both]]">
<div class={{{ [[indite-sbs-editor]addsuffix[ ]addsuffix<thewidth>] }}}> <div class={{{ [[indite-sbs-editor]addsuffix[ ]addsuffix<thewidth>] }}}>
<$transclude tiddler="$:/core/ui/EditTemplate/body/editor"/> <$transclude tiddler="$:/core/ui/EditTemplate/body/editor"/>
</div> </div>
</$list> </$list>
</$list>
</$set> </$set>
\end \end

View File

@@ -1,7 +1,9 @@
caption: Indite view template caption: Indite view template
created: 20210410004824597 created: 20210410004824597
creator: soren
description: Tiddlers that are part of the Indite writing system (under development) hide the normal view template via CSS and use this one instead. description: Tiddlers that are part of the Indite writing system (under development) hide the normal view template via CSS and use this one instead.
modified: 20210523143848140 modified: 20210924153731019
modifier: soren
tags: $:/tags/ViewTemplate tags: $:/tags/ViewTemplate
title: $:/sib/indite/ViewTemplate title: $:/sib/indite/ViewTemplate
transcludedin: All tiddlers tagged <<tag Indite>>. transcludedin: All tiddlers tagged <<tag Indite>>.

View File

@@ -2,7 +2,7 @@ caption: Subtiddlers
condition: [all[tiddlers]prefix<storyTiddler>!field:title<storyTiddler>sort[]] condition: [all[tiddlers]prefix<storyTiddler>!field:title<storyTiddler>sort[]]
created: 20201206210345097 created: 20201206210345097
creator: soren creator: soren
modified: 20210920161045390 modified: 20211227155615108
modifier: soren modifier: soren
tags: $:/tags/ReferenceExplorerTab tags: $:/tags/ReferenceExplorerTab
title: $:/sib/refexplorer/Subtiddlers title: $:/sib/refexplorer/Subtiddlers

View File

@@ -1,5 +1,7 @@
created: 20210719234124096 created: 20210719234124096
modified: 20210719235343017 creator: soren
modified: 20211025140658570
modifier: soren
tags: $:/tags/Stylesheet tags: $:/tags/Stylesheet
title: $:/sib/styles/footnote title: $:/sib/styles/footnote
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -26,8 +28,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
.refnotes-footnote:after { .refnotes-footnote:after {
content: counter(fnote-count); content: counter(fnote-count);
font-size:small; font-size:small;
vertical-align: super; vertical-align: top;
line-height: 1.5; font-size: 0.8em;
/*vertical-align: super;
line-height: 1.5;*/
margin-left: 0em; margin-left: 0em;
color: yellow; color: yellow;
} }

View File

@@ -1,5 +1,7 @@
created: 20210624125244567 created: 20210624125244567
modified: 20210629025407566 creator: soren
modified: 20211025010048942
modifier: soren
tags: $:/tags/Stylesheet tags: $:/tags/Stylesheet
title: $:/sib/styles/hr title: $:/sib/styles/hr
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -7,7 +9,7 @@ type: text/vnd.tiddlywiki
/* Based on: Flaired edges, by Tomas Theunissen /* Based on: Flaired edges, by Tomas Theunissen
https://css-tricks.com/examples/hrs/ */ https://css-tricks.com/examples/hrs/ */
.tc-tiddler-body hr, .tc-tiddler-preview-preview hr { .tc-tiddler-body > hr, .tc-tiddler-preview-preview > hr {
overflow: visible; /* For IE */ overflow: visible; /* For IE */
height: 30px; height: 30px;
border-style: solid; border-style: solid;

View File

@@ -0,0 +1,7 @@
created: 20210928031136148
creator: soren
list: $:/core/ui/EditorToolbar/do-thing $:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/linkify $:/core/ui/EditorToolbar/transcludify $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/sib/Buttons/excise-private-chunk $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type $:/plugins/sobjornstad/TiddlyRemember/toolbar/rememberq $:/plugins/sobjornstad/TiddlyRemember/toolbar/remembercz $:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex
modified: 20210928031142401
modifier: soren
title: $:/tags/EditorToolbar
type: text/vnd.tiddlywiki

View File

@@ -1,5 +1,7 @@
created: 20201129183705439 created: 20201129183705439
list: $:/core/ui/ViewTemplate/title $:/core/ui/ViewTemplate/unfold $:/core/ui/ViewTemplate/subtitle $:/sib/EpistemicStatus/Display $:/sib/MediaRating/Display $:/core/ui/ViewTemplate/tags $:/core/ui/ViewTemplate/classic $:/sib/Templates/Automatic/SpoilerBanner $:/sib/Templates/Automatic/Untitled $:/sib/Templates/Automatic/PrivateChunkParentNotice $:/sib/Templates/Automatic/Source $:/sib/Templates/Topical/MinnesotaStateParkInfo $:/sib/Templates/Automatic/MacroDescription $:/core/ui/ViewTemplate/body $:/sib/indite/ViewTemplate $:/sib/Reviewer/SchedulableTemplate $:/sib/gis/MappingTools $:/sib/Templates/Topical/SabbaticalUpdates/DateNavigation $:/sib/Templates/Automatic/Publicity/ViewerPublicLine $:/core/ui/ViewTemplate/import $:/core/ui/ViewTemplate/plugin $:/plugins/danielo515/2click2edit/ui/ViewTemplate $:/sib/refexplorer/ReferenceExplorer $:/sib/Templates/Automatic/ViewTemplateDescription $:/sib/Templates/Automatic/ReaderActions $:/plugins/kookma/refnotes/viewtemplates/main creator: soren
modified: 20210807194815491 list: $:/core/ui/ViewTemplate/title $:/core/ui/ViewTemplate/unfold $:/core/ui/ViewTemplate/subtitle $:/sib/EpistemicStatus/Display $:/sib/MediaRating/Display $:/core/ui/ViewTemplate/tags $:/core/ui/ViewTemplate/classic $:/sib/Templates/Automatic/Subtiddler $:/sib/Templates/Automatic/TypeTagChecker $:/sib/Templates/Automatic/SpoilerBanner $:/sib/Templates/Automatic/Untitled $:/sib/Templates/Automatic/PrivateChunkParentNotice $:/sib/Templates/Automatic/Source $:/sib/Templates/Topical/MinnesotaStateParkInfo $:/sib/Templates/Automatic/MacroDescription $:/core/ui/ViewTemplate/body $:/sib/indite/ViewTemplate $:/sib/Reviewer/SchedulableTemplate $:/sib/gis/MappingTools $:/sib/Templates/Topical/SabbaticalUpdates/DateNavigation $:/sib/Templates/Automatic/Publicity/ViewerPublicLine $:/core/ui/ViewTemplate/import $:/core/ui/ViewTemplate/plugin $:/plugins/danielo515/2click2edit/ui/ViewTemplate $:/sib/refexplorer/ReferenceExplorer $:/sib/Templates/Automatic/ViewTemplateDescription $:/sib/Templates/Automatic/ReaderActions
modified: 20211120171147065
modifier: soren
title: $:/tags/ViewTemplate title: $:/tags/ViewTemplate
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@@ -1,6 +1,8 @@
created: 20200507143136944 created: 20200507143136944
creator: soren
list: PublicHomepage/Navigating PublicHomepage/Organization [[PublicHomepage/Points of Interest]] [[PublicHomepage/No Warranty]] PublicHomepage/Copyright PublicHomepage/Contact [[PublicHomepage/Video Tour]] list: PublicHomepage/Navigating PublicHomepage/Organization [[PublicHomepage/Points of Interest]] [[PublicHomepage/No Warranty]] PublicHomepage/Copyright PublicHomepage/Contact [[PublicHomepage/Video Tour]]
modified: 20210720015457472 modified: 20211007181213586
modifier: soren
tags: Public Meta tags: Public Meta
title: PublicHomepage title: PublicHomepage
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@@ -10,7 +10,7 @@ import sys
from typing import Any, Callable, Dict, NoReturn from typing import Any, Callable, Dict, NoReturn
TZK_VERSION = "0.1.2" TZK_VERSION = "0.1.4"
class BuildError(Exception): class BuildError(Exception):