diff --git a/index.html b/index.html
index d7efb16..28a16d1 100644
--- a/index.html
+++ b/index.html
@@ -898,8 +898,8 @@ Error message and password prompt
{"created":"20240131104509452","text":"Create an empty mesh object (in Blender it's called an 'Empty') and add an [[src]] custom property with an OGG/MP3/WAV URL. For example:\n\u003Cbr>\u003Cbr>\n`src` : `https://foo.com/podcast.mp3`\n\u003Cbr>\u003Cbr>\n1. ''IF'' the empty is positioned at 0,0,0 the audio is nonpositional (like music e.g.)\u003Cbr>\u003Cbr>\n2. ''IF'' the empty is ''not'' positioned at 0,0,0, then it'll be positional audio\u003Cbr>\u003Cbr>\n3. the ''scale'' of the audio object will determine the amplitude/reach of the positional audio.\u003Cbr>\u003Cbr>\n\u003Cbr>\n\n> NOTE: audio does not play unless [[#t|`#t=1`]] triggers it. For auto-play try adding `#t=1` to the default fragment `#` on the scene ([[see this video|https://coderofsalvation.github.io/xrfragment.media/gettingstarted2024.mp4#t=358]])","tags":"[[π‘ by feature (heuristics)]]","title":"(non)positional audio","modified":"20240206123715235"},
{"created":"20240208125917539","text":"`#` indicates a default fragment to execute during scene-load.\n\n| fragment | type | example value | info |\n|`#`| string (& separated) | `#-cube&t=0` | hide object with name `cube` and start 3D animations (implies `xrf://-cube&t=0`)|\n\n> NOTE: this only gets publish to the [[hashbus]] and does not update the top-Level URL\n\n[[» discussion|https://github.com/coderofsalvation/xrfragment/issues/12]]\u003Cbr>\n","tags":"[[𧩠Object metadata]]","title":"#","modified":"20240228122206317","type":"text/vnd.tiddlywiki"},
{"created":"20240207131001873","text":"!! Specify playback loopmode\n\nThe missing element from Media Fragments.\n\n| fragment | type | functionality |\n| \u003Cb>#loop\u003C/b> | string | enables animation/video/audio loop |\n| \u003Cb>#-loop\u003C/b> | string | disables animation/video/audio loop |\n\n> `#loop` is fully functional, but not part of the official W3C Media Fragments (yet?)\n\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/media_uv_template_fragments.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#list-of-uri-fragments\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n\u003Cbr>\u003CBr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/14]]\u003Cbr>\n","tags":"[[π Media Fragments]]","title":"#loop π±","modified":"20240228121548299","type":"text/vnd.tiddlywiki"},
-{"created":"20230815155307052","text":"\n\nset the position of the camera (''level2'': or queried object(s)).\n\n| fragment | type | functionality |\n| \u003Cb>#pos\u003C/b>=0,0,0 | [[vector3|vector]] |position camera |\n\n[[Β» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]]\u003Cbr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/5]]\u003Cbr>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#navigating-3d\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n","tags":"[[π URL]]","title":"#pos","modified":"20240626095956470","type":"text/vnd.tiddlywiki"},
-{"created":"20230815160020110","text":"\n\nset the rotation of the camera (''level2'': or queried object(s)).\n\n| fragment | type | access | functionality |\n| \u003Cb>#rot\u003C/b>=0,90,0 | [[vector3|vector]] |π π² π₯ π| rotate camera (level2: or [[queried|#queries]] object(s)) |\n\n[[Β» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/rot.js]]\u003Cbr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/7]]\u003Cbr>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#navigating-3d\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n","tags":"[[π URL]]","title":"#rot","modified":"20240626095956471","type":"text/vnd.tiddlywiki"},
+{"created":"20230815155307052","text":"\n\nset the position of the camera (''level2'': or queried object(s)).\n\n| fragment | type | functionality |\n| \u003Cb>#pos\u003C/b>=0,0,0 | [[vector3|vector]] |position camera |\n\n\u003Cbr>\nIt can be specified in the top URLbar, or for [[href]] values like in this video which edits a 3D model in Blender3D:\n\u003Cbr>\n\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/gettingstarted2024.mp4#t=295\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#navigating-3d\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n[[Β» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]]\u003Cbr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/5]]\u003Cbr>\n","tags":"[[π URL]]","title":"#pos","modified":"20240626103512586","type":"text/vnd.tiddlywiki"},
+{"created":"20230815160020110","text":"\n\nset the rotation of the camera (''level2'': or queried object(s)).\n\n| fragment | type | access | functionality |\n| \u003Cb>#rot\u003C/b>=0,90,0 | [[vector3|vector]] |π π² π₯ π| rotate camera (level2: or [[queried|#queries]] object(s)) |\n\n\u003Cbr>\nIt can be specified in the top URLbar, or inside [[href]] values like in this video which edits a 3D model in Blender3D:\n\u003Cbr>\n\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/gettingstarted2024.mp4#t=295\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n[[Β» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/rot.js]]\u003Cbr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/7]]\u003Cbr>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#navigating-3d\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n","tags":"[[π URL]]","title":"#rot","modified":"20240626103606072","type":"text/vnd.tiddlywiki"},
{"created":"20240207130807055","text":"!! Play back speed\n\ncontrols the animation(s) of the scene (or `src` resource which contains a timeline)\n\n| fragment | type | functionality |\n| \u003Cb>#s\u003C/b>=1 | `[-]float` | set playback speed |\n\n> π± = fully functional, but not part of the official W3C Media Fragments (yet?)\n\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/media_uv_template_fragments.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#media-fragments-and-datatypes\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n\u003Cbr>\u003CBr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/13]]\u003Cbr>\n","tags":"[[π Media Fragments]]","title":"#s π±","modified":"20240228121853616","type":"text/vnd.tiddlywiki"},
{"created":"20231012145307424","text":"!!Animation(s) timeline\n\ncontrols the animation(s) of the scene (or `src` resource which contains a timeline)\n\n| fragment | type | functionality |\n| \u003Cb>#t\u003C/b>=start,stop | [[vector2]] (default:`#t=0,0`) | start,stop (in seconds |\n\n\n| Example Value | Explanation |\n| `#t=1` | play (3D) animations from 1 seconds till end (and stop) |\n| `#t=1,100` | play (3D) animations from 1 till 100 seconds (and stop) |\n| `#t=0,0` | stop (3D) animations at frame 0 |\n| `src`:`https://f.io/cat.mp4#t=0` | play video starting from `0` seconds till end (and stop) |\n| `src`:`https://f.io/cat.mp3#t=0` | play audio starting from `0` seconds till end (and stop) |\n| `src`:`https://f.io/cat.usdz3#t=2,3` | play 3D anim starting between `2` seconds and `3` (and loop) |\n\n> Use [[#s π±]] to control playback speed\n\n[[Β» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]]\u003Cbr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/10]]\u003Cbr>\n\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/media_uv_template_fragments.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/animation.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#list-of-uri-fragments\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n!! Controlling embedded content\n\nuse [[URI Templates]] to control embedded media, for example a simple video-player:\n\n```\n\n foo.usdz \n β \n β \n βββ β» stopbutton \n β β #: #-stopbutton\n β β href: #player=stop&-stopbutton (stop and hide stop-button)\n β \n βββ β» plane \n β play: #t=0,10\n β stop: #t=0,0\n β href: #player=play&stopbutton (play and show stop-button)\n β src: cat.mp4#{player}\n\n\n```\n\n\u003Cbr>\u003CBr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/10]]\u003Cbr>\n\n","tags":"[[π Media Fragments]]","title":"#t","modified":"20240228121642698","type":"text/vnd.tiddlywiki"},
{"created":"20240207130824258","text":"!! UV offset\n\nsets the uv-coordinates of polygons/texture\n\n| fragment | type | functionality |\n| \u003Cb>#uv\u003C/b>=u,v,uspeed,vspeed | [[vector2]] | set/scroll to uv coordinate |\n\n> π± means that this is an optional element of the XR Fragments spec (you can position the default uv-coordinates in your 3D editor)\n\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/media_uv_template_fragments.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#media-fragments-and-datatypes\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n\u003Cbr>\u003CBr>\n[[Β» discussion|https://github.com/coderofsalvation/xrfragment/issues/15]]\u003Cbr>\n","tags":"[[π Media Fragments]]","title":"#uv π±","modified":"20240228121656916","type":"text/vnd.tiddlywiki"},
@@ -979,15 +979,15 @@ Error message and password prompt
{"created":"20230425164931250","title":"$:/state/folded/AFRAME template","text":"show","modified":"20230425164935940"},
{"created":"20230425164931250","title":"$:/state/folded/GLSL shader template","text":"show","modified":"20230425164939576"},
{"created":"20230424142403302","text":"checked","title":"$:/state/import/select-all","modified":"20230424142404392"},
-{"created":"20230423163640468","title":"$:/state/notebook-sidebar","text":"no","modified":"20240626100640774"},
-{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"Reference","modified":"20240626095820345"},
+{"created":"20230423163640468","title":"$:/state/notebook-sidebar","text":"no","modified":"20240626103650098"},
+{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"Reference","modified":"20240626102637262"},
{"created":"20230427102758222","title":"$:/state/plugin-info--1887569658-$:/plugins/ihm/tidgraph--50210113","text":"documentation","modified":"20230427102759911"},
{"created":"20230427092525294","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage","text":"yes","modified":"20230427092525375"},
{"created":"20230427093219686","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage--605768392","text":"settings","modified":"20230427094141558"},
{"created":"20230424092949812","title":"$:/state/plugin-info-1024395336-$:/plugins/tiddlywiki/codemirror--1574138004","text":"contents","modified":"20230425143706081"},
{"created":"20230424093627704","title":"$:/state/plugin-info-833095967-Draft of '$:/core'---1604322978","text":"readme","modified":"20230424093629208"},
{"created":"20230423163649566","title":"$:/state/showeditpreview","text":"no","modified":"20240517185422529"},
-{"created":"20230504174435745","title":"$:/state/sidebar","text":"no","modified":"20240625154000219"},
+{"created":"20230504174435745","title":"$:/state/sidebar","text":"no","modified":"20240626102622437"},
{"created":"20230423163453188","title":"$:/state/tab--1963855381","text":"$:/themes/nico/notebook/themetweaks","modified":"20230523124919651"},
{"created":"20230427092954391","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Basics","modified":"20230523124903522"},
{"created":"20230424093058379","title":"$:/state/tab--697582678","text":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20230427093030201"},
@@ -1013,14 +1013,14 @@ Error message and password prompt
{"created":"20240207122831738","title":"$:/state/toc/Reference/π XR Fragments-π W3C media fragments--403145756","text":"close","modified":"20240207122851711"},
{"created":"20240207131218249","title":"$:/state/toc/Reference/π XR Fragments-π W3C Media Fragments--403145756","text":"close","modified":"20240209162544478"},
{"created":"20240130111742002","title":"$:/state/toc/Reference/π XR Fragments-π‘ feature heuristics--403145756","text":"open","modified":"20240130112521075"},
-{"created":"20240626095959899","title":"$:/state/toc/Reference/π XR Fragments-π URL--403145756","text":"close","modified":"20240626100620019"},
+{"created":"20240626095959899","title":"$:/state/toc/Reference/π XR Fragments-π URL--403145756","text":"close","modified":"20240626103646910"},
{"created":"20240206123632130","title":"$:/state/toc/Reference/π XR Fragments-𧩠object metadata--403145756","text":"close","modified":"20240207122940234"},
{"created":"20240207130143587","title":"$:/state/toc/Reference/π XR Fragments-𧩠Object metadata--403145756","text":"close","modified":"20240626100622411"},
{"created":"20240105120105242","title":"$:/state/toc/Reference/π§° libraries-XR Fragment parser--403145756","text":"open","modified":"20240105120105242"},
{"created":"20230622104329622","title":"$:/state/toc/Reference/js/AFRAME-THREE.js--403145756","text":"open","modified":"20230622104329622"},
{"created":"20230622111759784","title":"$:/state/toc/Reference/The parser-THREE.js--403145756","text":"open","modified":"20230622111759784"},
{"title":"$:/status/RequireReloadDueToPluginChange","text":"no"},
-{"title":"$:/StoryList","created":"20240626095618857","text":"","list":"[[XR Fragments]]","modified":"20240626100046595"},
+{"title":"$:/StoryList","created":"20240626103514311","text":"","list":"[[XR Fragments]]","modified":"20240626103514311"},
{"created":"20230423163445948","title":"$:/theme","text":"$:/themes/nico/notebook","modified":"20230423163445948"},
{"text":"{\n \"tiddlers\": {\n \"$:/themes/nico/notebook/LICENSE\": {\n \"title\": \"$:/themes/nico/notebook/LICENSE\",\n \"created\": \"20200419141443144\",\n \"modified\": \"20210118213330307\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\nMIT License Copyright (c) 2020 [[Nicolas Petton|https://nicolas.petton.fr]] nicolas@petton.fr\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is furnished\\nto do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice (including the next\\nparagraph) shall be included in all copies or substantial portions of the\\nSoftware.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\\nOR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF\\nOR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\"\n },\n \"$:/themes/nico/notebook/themetweaks\": {\n \"title\": \"$:/themes/nico/notebook/themetweaks\",\n \"created\": \"20201217172915960\",\n \"modified\": \"20210123211851680\",\n \"tags\": \"$:/tags/ControlPanel/Appearance\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"text\": \"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\nYou can tweak certain aspects of the ''Notebook'' theme.\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=\\\"pre\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"pre-wrap\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">Reveal tiddler controls on mouseover\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/fontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\">\u003C\u003Clingo Settings/CodeFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n\\n! \u003C\u003Clingo Metrics>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\">\u003C\u003Clingo Metrics/FontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\">\u003C\u003Clingo Metrics/LineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\">\u003C\u003Clingo Metrics/BodyFontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/bodyfontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\">\u003C\u003Clingo Metrics/BodyLineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/bodylineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\">\u003C\u003Clingo Metrics/SidebarBreakpoint>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarBreakpoint/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/metrics/sidebar-width\\\">\u003C\u003Clingo Metrics/SidebarWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/sidebar-width\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/metrics/story-width\\\">\u003C\u003Clingo Metrics/StoryWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/story-width\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n\\n\"\n },\n \"$:/themes/nico/notebook/base\": {\n \"title\": \"$:/themes/nico/notebook/base\",\n \"created\": \"20200419141443144\",\n \"modified\": \"20210120224227503\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n\\n\\\\define if-sidebar(text)\\n \u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n $text$\\n \u003C/$reveal>\\n\\\\end\\n\\n\\\\define if-reveal-tiddler-controls-on-hover(text)\\n \u003C$reveal state=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n $text$\\n \u003C/$reveal>\\n\\\\end\\n \\n/* Top and bottom bars */\\n\\n/* Hide the top-right bar */\\n.tc-topbar.tc-topbar-right {\\n display: none;\\n}\\n\\ndiv.tc-sidebar-header {\\n padding: 0;\\n min-height: 0;\\n}\\n\\n.tc-story-river {\\n padding: 6px 0 !important;\\n width: 100% !important;\\n max-width: {{$:/themes/nico/notebook/metrics/story-width}} !important;\\n margin: 0 auto !important;\\n margin-top: 34px !important;\\n}\\n\\ndiv.tc-tiddler-frame {\\n width: 100%;\\n margin: 20px 0;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n box-shadow: 0 5px 20px rgba(0,0,0, 0.12);\\n border-radius: 6px;\\n padding: 42px 60px 60px 60px;\\n}\\n\\nh1.tc-site-title {\\n margin-top: 14px;\\n font-size: 1.5em !important;\\n}\\n\\n.nc-bar {\\n padding: 10px;\\n height: {{$:/themes/nico/notebook/metrics/topbar-height}};\\n background: \u003C\u003Ccolour page-background>>;\\n display: flex;\\n justify-content: space-between;\\n}\\n\\n.nc-topbar-wrapper {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\\n z-index: 501;\\n}\\n\\n.nc-bar.nc-topbar {\\n top: 0;\\n background: \u003C\u003Ccolour page-background>>ee;\\n max-width: calc({{$:/themes/nico/notebook/metrics/story-width}} + 40px);\\n padding: 10px 20px;\\n margin: 0 auto;\\n}\\n\\n.nc-bar.nc-bottombar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\\n z-index: 501;\\n}\\n\\n.nc-bar .left svg {\\n fill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.nc-bar input[type=\\\"search\\\"] {\\n width: 200px;\\n padding: .6em 1em;\\n margin-top: -.2em;\\n background: \u003C\u003Ccolour sidebar-button-foreground>>44;\\n color: \u003C\u003Ccolour foreground>>cc;\\n transition: all ease-in .2s;\\n border: 1px solid transparent;\\n outline: 0;\\n}\\n\\n.nc-bar input[type=\\\"search\\\"]:focus {\\n width: 300px;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n border: 1px solid \u003C\u003Ccolour primary>>;\\n box-shadow: 0 0 .2rem 0 \u003C\u003Ccolour primary>>;\\n}\\n\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button {\\n -webkit-appearance: auto;\\n}\\n\\n.nc-bar .tc-block-dropdown.tc-search-drop-down {\\n margin-left: 0;\\n width: 400px;\\n border: 0;\\n box-shadow: 0 0 6px 0 rgba(0,0,0,.2);\\n border-radius: 6px;\\n padding: 20px 0;\\n}\\n\\n.nc-bar p {\\n margin: 0;\\n}\\n\\n.nc-bar .tc-page-controls {\\n margin-top: 0;\\n}\\n\\n.nc-bar .tc-page-controls button {\\n margin-right: .8em;\\n}\\n\\n.nc-bar .tc-page-controls button .tc-btn-text {\\n font-size: 14px;\\n}\\n\\n.nc-bar .tc-block-dropdown {\\n max-height: 70vh;\\n overflow: auto;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-topbar {\\n display: none;\\n }\\n\\n .tc-story-river {\\n padding: 0 !important;\\n margin-top: 0 !important;\\n margin-bottom: 60px !important;\\n }\\n\\n div.tc-tiddler-frame {\\n margin: 0;\\n box-shadow: none;\\n border-radius: 0;\\n border-top: 0;\\n }\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-bottombar {\\n display: none;\\n }\\n}\\n\\n@media(max-width: 1100px) {\\n .nc-bar input[type=\\\"search\\\"] {\\n width: 200px;\\n }\\n}\\n\\n/* Sidebar */\\n\\n@keyframes sidebar-appear {\\n 0% {\\n left: -{{$:/themes/nico/notebook/metrics/sidebar-width}};\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n\u003C\u003Cif-sidebar \\\"\\\"\\\"\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-sidebar {\\n animation: sidebar-appear .14s;\\n padding-top: 10px;\\n }\\n}\\n\\\"\\\"\\\">>\\n\\n.nc-sidebar {\\n background: \u003C\u003Ccolour tiddler-background>>;\\n border-right: 1px solid \u003C\u003Ccolour tiddler-border>>;\\n width: {{$:/themes/nico/notebook/metrics/sidebar-width}};\\n overflow-y: auto;\\n overflow-x: hidden;\\n z-index: 500;\\n}\\n\\n.nc-sidebar .segment {\\n border-bottom: 1px solid rgba(0,0,0,.1);\\n}\\n\\n.nc-sidebar ol {\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n line-height: 1.8em;\\n}\\n\\n.nc-sidebar ol ol {\\n padding-left: 18px;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .mobile-only {\\n display: none;\\n }\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .desktop-only {\\n display: none;\\n }\\n}\\n\\n.nc-sidebar h1.tc-site-title {\\n margin: 0;\\n}\\n\\n.nc-sidebar p {\\n margin: 6px 0;\\n}\\n\\n.nc-sidebar .tc-site-subtitle {\\n color: \u003C\u003Ccolour site-title-foreground>>;\\n}\\n\\n.nc-sidebar .section .label {\\n padding: 2px 0;\\n color: \u003C\u003Ccolour site-title-foreground>>;\\n fill: \u003C\u003Ccolour site-title-foreground>>;\\n font-weight: bold;\\n line-height: 1.6em;\\n display: block;\\n width: 100%;\\n text-align: left;\\n padding: 8px 15px;\\n border-radius: 0;\\n}\\n\\n.nc-sidebar .section:not(.open) .label:hover {\\n background: rgba(0,0,0,.06);\\n}\\n\\n.nc-sidebar .section.open .label {\\n color: \u003C\u003Ccolour tiddler-background>>;\\n fill: \u003C\u003Ccolour tiddler-background>>;\\n background: \u003C\u003Ccolour primary>>;\\n border-bottom: 1px solid rgba(0,0,0,.1);\\n}\\n\\n.nc-sidebar .section .label .caret {\\n display: inline-block;\\n width: 15px;\\n float: right;\\n}\\n\\n.nc-sidebar .content {\\n padding: 6px 15px;\\n font-size: 1em;\\n}\\n\\n.nc-sidebar .tc-tiddlylink {\\n color: \u003C\u003Ccolour primary>>;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-sidebar {\\n position: fixed;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n }\\n}\\n\\n\u003C\u003Cif-sidebar \\\"\\\"\\\"\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n @keyframes sidebar-slide {\\n 0% {\\n left: -100vw;\\n }\\n 100% {\\n left: 0;\\n }\\n }\\n .nc-sidebar {\\n overflow: auto;\\n position: fixed;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 48px;\\n z-index: 3000;\\n animation: sidebar-slide ease-in .2s;\\n animation-fill-mode: forwards;\\n }\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-page-container {\\n margin-left: {{$:/themes/nico/notebook/metrics/sidebar-width}} !important;\\n }\\n\\n .nc-topbar-wrapper {\\n left: {{$:/themes/nico/notebook/metrics/sidebar-width}};\\n }\\n}\\n\\\"\\\"\\\">>\\n\\n/* Animate the hamburger button */\\n\\n@keyframes menu-bars-1 {\\n 0% {}\\n 100% {\\n transform: rotate(-45deg) translateY(-10px) translateX(-6px);\\n fill: \u003C\u003Ccolour foreground>>;\\n }\\n}\\n\\n@keyframes menu-bars-2 {\\n 0% {}\\n 100% { opacity: 0; }\\n}\\n\\n@keyframes menu-bars-3 {\\n 0% {}\\n 100% {\\n transform: rotate(45deg) translateY(6px) translateX(2px);\\n fill: \u003C\u003Ccolour foreground>>;\\n }\\n}\\n\\n.sidebar-toggle {\\n /* position: fixed; */\\n /* top: 6px; */\\n /* left: 6px; */\\n /* z-index: 600; */\\n /* padding: 4px; */\\n /* border-radius: 8px; */\\n margin-right: 10px;\\n transition: all ease-in-out .2s;\\n fill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.sidebar-toggle:hover,\\n.sidebar-toggle.open {\\n fill: \u003C\u003Ccolour sidebar-controls-foreground-hover>>;\\n}\\n\\n/* @media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { */\\n/* .sidebar-toggle { */\\n/* top: auto; */\\n/* bottom: 10px; */\\n/* left: 10px; */\\n/* } */\\n/* } */\\n\\n.sidebar-toggle .bars .bar {\\n transform: rotate(0) translateY(0) translateX(0);\\n opacity: 1;\\n transform-origin: 20px 10px;\\n transition: transform 0.4s ease-in-out, opacity 0.2s ease-in-out, fill .4s ease-in-out;\\n}\\n\\n.sidebar-toggle .bars .bar:nth-of-type(3) {\\n transform-origin: 20px 20px;\\n}\\n\\n.sidebar-toggle.open .bars .bar:nth-of-type(1) {\\n animation: menu-bars-1 .6s;\\n animation-fill-mode: forwards;\\n}\\n.sidebar-toggle.open .bars .bar:nth-of-type(2) {\\n animation: menu-bars-2 .6s;\\n animation-fill-mode: forwards;\\n}\\n.sidebar-toggle.open .bars .bar:nth-of-type(3) {\\n animation: menu-bars-3 .6s;\\n animation-fill-mode: forwards;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n div.tc-tiddler-frame {\\n padding: 14px;\\n }\\n}\\n\\n/* Inputs */\\n\\ninput, textarea {\\n transition: border .14s ease-in-out;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n padding: .5em;\\n border-radius: 4px;\\n}\\n\\ninput:focus, textarea:focus {\\n box-shadow: 0 0 0.2rem 0 \u003C\u003Ccolour primary>>;\\n outline: 0;\\n border-color: \u003C\u003Ccolour primary>>;\\n}\\n\\nbutton {\\n border-radius: 1.5em;\\n border: 1px solid #ccc;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n padding: .3em 1em;\\n cursor: pointer;\\n transition: box-shadow ease-in .1s;\\n color: \u003C\u003Ccolor foreground>>;\\n}\\n\\nbutton:focus, button:active {\\n outline: 0 none;\\n}\\n\\nbutton.tc-btn-invisible {\\n border-radius: 0;\\n}\\n\\n.tc-editor-toolbar button,\\n.tc-editor-toolbar button.tc-btn-invisible {\\n border-radius: 3px;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n fill: \u003C\u003Ccolour foreground>>;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n}\\n\\n.tc-editor-toolbar button:hover,\\n.tc-editor-toolbar button:active {\\n border-color: \u003C\u003Ccolour primary>>;\\n background: \u003C\u003Ccolour primary>>;\\n color: \u003C\u003Ccolour background>>;\\n fill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n transition: border .14s ease-in-out;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n padding: 4px;\\n border-radius: 4px;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor:focus,\\n.tc-tiddler-frame textarea.tc-edit-texteditor:focus,\\n.tc-tiddler-frame iframe.tc-edit-texteditor:focus {\\n box-shadow: 0 0 0.2rem 0 \u003C\u003Ccolour primary>>;\\n outline: 0;\\n border-color: \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-tiddler-controls .tc-btn-text {\\n font-size: 16px;\\n}\\n\\n\u003C\u003Cif-reveal-tiddler-controls-on-hover \\\"\\\"\\\"\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-tiddler-frame .tc-tiddler-controls svg {\\n opacity: 0;\\n transition: all .2s ease-in;\\n }\\n\\n .tc-tiddler-controls svg.tc-image-close-button,\\n .tc-tiddler-controls .py-toggle-todo-button svg,\\n .tc-tiddler-controls svg.tc-image-done-button,\\n .tc-tiddler-frame .tc-tiddler-controls:hover svg {\\n opacity: 1;\\n }\\n\\n .tc-tiddler-controls .py-toggle-todo-button .done svg {\\n fill: #2da562;\\n }\\n}\\n\\\"\\\"\\\">>\\n\\nbutton.tc-tag-label, span.tc-tag-label {\\n padding: 0.3em 1em !important;\\n}\\n\\n/* Fonts */\\n\\nhtml, body {\\n font-family: {{$:/themes/nico/notebook/settings/fontfamily}};\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n font-family: {{$:/themes/nico/notebook/settings/editorfontfamily}};\\n}\\n\\npre, code {\\n font-family: {{$:/themes/nico/notebook/settings/codefontfamily}};\\n}\\n\\n.tc-titlebar, .tc-site-title {\\n font-size: 28px !important;\\n line-height: 34px !important;\\n font-weight: 600 !important;\\n letter-spacing: -0.5px !important;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n font-weight: 600;\\n}\\n\\n.tc-tiddler-body h1,\\n.tc-tiddler-body h2,\\n.tc-tiddler-preview-preview h1,\\n.tc-tiddler-preview-preview h2 {\\n font-weight: bold;\\n}\\n\\ndiv.tc-tiddler-frame .tc-tiddler-body {\\n font-size: {{$:/themes/nico/notebook/metrics/bodyfontsize}};\\n line-height: {{$:/themes/nico/notebook/metrics/bodylineheight}};\\n}\\n\\n/* Tabs */\\n\\ndiv.tc-tab-buttons {\\n margin-bottom: -4px;\\n}\\n\\ndiv.tc-tab-buttons button {\\n font-weight: bold;\\n font-size: 1.2em;\\n line-height: 1em;\\n padding: .6em .8em .4em .8em;\\n border: 0;\\n border-radius: 0;\\n background: transparent;\\n cursor: pointer;\\n transition: background ease-in .2s;\\n}\\n\\ndiv.tc-tab-buttons button:hover {\\n background: rgba(0,0,0,.03);\\n}\\n\\ndiv.tc-tab-buttons button.tc-tab-selected {\\n border: 0;\\n background: transparent;\\n border-bottom: 4px solid \u003C\u003Ccolour primary>>;\\n}\\n\\n/* Dropdowns */\\n\\n@keyframes pop {\\n 0% {\\n transform: scale(0.8);\\n opacity: 0;\\n }\\n\\n 80% {\\n transform: scale(1.03);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n\\n.tc-drop-down {\\n box-shadow: 0 0 10px rgba(0,0,0,.2);\\n border-radius: 6px;\\n padding: 10px 0 !important;\\n animation: pop .15s ease-in forwards;\\n}\\n\\n.tc-drop-down a, .tc-drop-down button {\\n padding: 3px 15px !important;\\n}\\n\\n.tc-search-results {\\n line-height: 2em;\\n}\\n\\n.tc-search-results em {\\n font-weight: bold;\\n font-style: normal;\\n}\\n\\n/* Draft list */\\n\\n.tc-drafts-list {\\n font-size: .9em;\\n left: auto;\\n right: 0;\\n}\\n\\n.tc-drafts-list a {\\n padding: 6px 12px;\\n font-weight: bold;\\n border-top-left-radius: 6px;\\n border-top-right-radius: 6px;\\n display: inline-block;\\n}\\n\\n.nc-refs {\\n color: #888;\\n font-size: .9em;\\n}\\n\\n.nc-refs h4 {\\n margin-bottom: 4px;\\n}\\n\\n.nc-post-created {\\n color: #acacac;\\n font-size: .8em;\\n}\\n\"\n },\n \"$:/themes/nico/notebook/changelog\": {\n \"title\": \"$:/themes/nico/notebook/changelog\",\n \"caption\": \"ChangeLog\",\n \"created\": \"20201217180707912\",\n \"modified\": \"20210202214001915\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"! 1.4.1\\n\\n!! Fixes\\n\\n* Fix the transclusion mode of sidebar sections\\n* Fix section title rendering for tiddlers without a caption field\\n* Fix the colour of links in the sidebar when using Notebook palettes with Vanilla\\n\\n! 1.4.0\\n\\n!! Features\\n\\n* New redesigned topbar layout\\n* Add a configuration setting for the story width\\n* Add support for keyboard navigation in the search dropdown\\n\\n! 1.3.6\\n\\n!! Improvements\\n\\n* Improve the style of tabs\\n* New animation for drop-downs\\n* Use a lighter page background colour in the beige palette\\n\\n!! Fixes\\n\\n* Fix the default ctrl+shift+F shortcut for focusing the search input\\n\\n! 1.3.5\\n\\n!! Features\\n\\n* Add an option to reveal tiddler controls on mouseover\\n\\n! 1.3.4\\n\\n!! Improvements\\n\\n* Add a keyboard shortcut (alt+shift+s) to toggle Notebook sidebar\\n* Add missing colours to tiddler editor fields in the dark palette\\n\\n!! Fixes\\n\\n* Fix the size of toolbar button labels when the $:/config/Toolbar/Text is set to yes\\n\\n! 1.3.3\\n\\n!! Improvements\\n\\n* Make the sidebar more generic by using the default sidebar sections\\n\\n! 1.3.2\\n\\n!! Improvements\\n\\n* Add colours for messages in the dark palette\\n* Add colours for notification in the dark palette\\n* Set colours for messages in the beige palette\\n\\n! 1.3.1\\n\\n!! Features\\n\\n* New font family settings distinct from the Vanilla theme\\n\\n!! Improvements\\n\\n* Use a slightly lighter colour as the search input background\\n* Improve contrast of sidebar buttons in the dark palette\\n\\n!! Fixes\\n\\n* Fix tiddler control button colours in all three palettes\\n* Fix tab colours in palette-dark\\n\\n! 1.3.0\\n\\n!! Improvements\\n\\n* New dark colour palette\\n* Use a darker color for tiddler subtitles\\n* Add back the WebKit search cancel button in search inputs\\n\\n!! Fixes\\n\\n* Fix the z-index of the topbar for the zoomin story view\\n* Fix the font weight of tiddler titles in edit mode\\n\\n! 1.2.0\\n\\n!! Improvements\\n\\n* Better support for dark colour palettes\\n\\n!! Fixes\\n\\n* Fix rendering of overflowing/wrapping text in the sidebar\\n\\n! 1.1.0\\n\\n!! Features\\n\\n* New theme tweaks tab dedicated to Notebook in the control panel\\n* Inputs in the edit template are now styled consistently with other inputs\\n\\n!! Fixes\\n\\n* Fixes the position of sticky tiddler titles when the option is turned on\\n\"\n },\n \"$:/config/ShortcutInfo/notebook-focus-search\": {\n \"title\": \"$:/config/ShortcutInfo/notebook-focus-search\",\n \"text\": \"Focus on the topbar search field\"\n },\n \"$:/config/shortcuts/notebook-focus-search\": {\n \"title\": \"$:/config/shortcuts/notebook-focus-search\",\n \"text\": \"ctrl+shift+F\"\n },\n \"$:/config/Search/AutoFocus\": {\n \"title\": \"$:/config/Search/AutoFocus\",\n \"text\": \"false\"\n },\n \"$:/config/shortcuts/sidebar-search\": {\n \"title\": \"$:/config/shortcuts/sidebar-search\",\n \"text\": \"\"\n },\n \"$:/themes/nico/notebook/images/bars\": {\n \"title\": \"$:/themes/nico/notebook/images/bars\",\n \"created\": \"20200428212322206\",\n \"modified\": \"20201210210231235\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg class=\\\"bars\\\" height=\\\"21pt\\\" viewBox=\\\"0 0 42 42\\\" enable-background=\\\"new 0 0 32 22.5\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n \u003Cg class=\\\"svg-menu-toggle\\\" sketch:type=\\\"MSLayerGroup\\\">\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"28\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"19\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"10\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003C/g>\\n\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/caret-down\": {\n \"title\": \"$:/themes/nico/notebook/images/caret-down\",\n \"created\": \"20200429194348688\",\n \"modified\": \"20201210210230919\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"6pt\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\">\u003Cpath d=\\\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\\\"/>\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/caret-right\": {\n \"title\": \"$:/themes/nico/notebook/images/caret-right\",\n \"created\": \"20200429194305719\",\n \"modified\": \"20201210210230909\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"4pt\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 192 512\\\">\u003Cpath d=\\\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\\\"/>\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/color-switch\": {\n \"title\": \"$:/themes/nico/notebook/images/color-switch\",\n \"created\": \"20201210170859810\",\n \"creator\": \"nico\",\n \"modified\": \"20201210205606403\",\n \"modifier\": \"nico\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"20px\\\" height=\\\"20px\\\" viewBox=\\\"0 0 16 16\\\" class=\\\"bi bi-circle-half\\\" fill=\\\"currentColor\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n \u003Cpath fill-rule=\\\"evenodd\\\" d=\\\"M8 15V1a7 7 0 1 1 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\\\"/>\\n\u003C/svg\\n\"\n },\n \"$:/themes/nico/notebook/metrics/bodyfontsize\": {\n \"title\": \"$:/themes/nico/notebook/metrics/bodyfontsize\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"15px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/bodylineheight\": {\n \"title\": \"$:/themes/nico/notebook/metrics/bodylineheight\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"22px\"\n },\n \"$:/themes/nico/notebook/metrics/sidebar-width\": {\n \"title\": \"$:/themes/nico/notebook/metrics/sidebar-width\",\n \"created\": \"20200429144554294\",\n \"modified\": \"20201210210231246\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"350px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/story-width\": {\n \"title\": \"$:/themes/nico/notebook/metrics/story-width\",\n \"created\": \"20210123210054185\",\n \"modified\": \"20210123211911688\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"800px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/topbar-height\": {\n \"title\": \"$:/themes/nico/notebook/metrics/topbar-height\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"52px\\n\"\n },\n \"$:/themes/nico/notebook/options/stickytitles\": {\n \"title\": \"$:/themes/nico/notebook/options/stickytitles\",\n \"text\": \"no\"\n },\n \"$:/themes/nico/notebook/options/codewrapping\": {\n \"title\": \"$:/themes/nico/notebook/options/codewrapping\",\n \"text\": \"pre-wrap\"\n },\n \"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\": {\n \"title\": \"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\",\n \"text\": \"no\"\n },\n \"$:/core/ui/PageTemplate/sidebar\": {\n \"title\": \"$:/core/ui/PageTemplate/sidebar\",\n \"created\": \"20200430072116835\",\n \"modified\": \"20201217174129501\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\nOverwritten by $:/themes/nico/notebook so that the default sidebar does not get rendered.\\n\"\n },\n \"$:/themes/tiddlywiki/vanilla/themetweaks\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/themetweaks\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"created\": \"20201217163834291\",\n \"modified\": \"20201217163914434\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Overwritten by $:/themes/nico/notebook so that the Vanilla theme tweaks do not appear in the control panel. \"\n },\n \"$:/themes/nico/notebook/palettes/palette-beige\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-beige\",\n \"text\": \"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #66cccc\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #ddd\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #3F3B3B\\nmessage-background: #e6f5e8\\nmessage-border: #2b5532\\nmessage-foreground: #2b5532\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #f5f5ee\\npre-background: #f6f6f6\\npre-border: #cccccc\\nprimary: #7f4bca\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #a6a69c\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #ffffff\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: #353748\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #eeeeee\\ntab-border-selected: #cccccc\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: #888888\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffeedd\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #dbdbc7;\\ntiddler-controls-foreground-hover: #888888;\\ntiddler-controls-foreground-selected: #888888;\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(0,0,0,.2)\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: #333\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A beige colour palette for Notebook\",\n \"name\": \"Notebook Beige\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/palettes/palette-dark\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-dark\",\n \"text\": \"alert-background: #643b43\\nalert-border: #3f181f\\nalert-highlight: #881122\\nalert-muted-foreground: #bc8b94\\nbackground: #383e49\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-border:\\nbutton-foreground:\\ncode-background: #2c323b\\ncode-border: #111\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #98be65\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #111\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #61afef\\nexternal-link-foreground: #c678dd\\nforeground: #c8ced8\\nmessage-background: #2c323e\\nmessage-border: #111\\nmessage-foreground: #d5e2f1\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #3a5e39\\nnotification-border: #192c19\\npage-background: #262b33\\npre-background: \u003C\u003Ccolour page-background>>\\npre-border: \u003C\u003Ccolour tiddler-border>>\\nprimary: #bf93ff\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #5e646f\\nsidebar-controls-foreground-hover: #cad2e5\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #cad2e5\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: \u003C\u003Ccolour tab-background-selected>>\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: \u003C\u003Ccolour foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: \u003C\u003Ccolour page-background>>\\ntab-border-selected: \u003C\u003Ccolour foreground>>\\ntab-border: #cad2e5\\ntab-divider: #cad2e5\\ntab-foreground-selected: #ecf2ff\\ntab-foreground: #cad2e5\\ntable-border: #aaaaaa\\ntable-footer-background: #a8a8a8\\ntable-header-background: #262b33\\ntag-background: #fcb671\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #111\\ntiddler-controls-foreground-hover: #cad2e5\\ntiddler-controls-foreground-selected: #cad2e5\\ntiddler-controls-foreground: #5e646f\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(255, 255, 255, 0.3)\\ntiddler-editor-fields-even: \u003C\u003Ccolour background>>\\ntiddler-editor-fields-odd: #2c323b\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: \u003C\u003Ccolour foreground>>\\ntoolbar-cancel-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-done-button:\\ntoolbar-edit-button:\\ntoolbar-info-button:\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A dark colour palette for Notebook\",\n \"name\": \"Notebook Dark\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/palettes/palette-grey\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-grey\",\n \"text\": \"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #66cccc\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #ddd\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #283c46\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #f4f4f4\\npre-background: #f6f6f6\\npre-border: #cccccc\\nprimary: #127edd\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #a6a69c\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #ffffff\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: #353748\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #eeeeee\\ntab-border-selected: #cccccc\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: #888888\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffeedd\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #ddd\\ntiddler-controls-foreground-hover: #888888;\\ntiddler-controls-foreground-selected: #888888;\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(0,0,0,.2)\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: #333\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A grey color palette for Notebook\",\n \"name\": \"Notebook Grey\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/settings/codefontfamily\": {\n \"title\": \"$:/themes/nico/notebook/settings/codefontfamily\",\n \"created\": \"20210101213404232\",\n \"modified\": \"20210101214210227\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\"Fira Mono\\\",\\\"Liberation Mono\\\",Menlo,Courier,monospace\\n\"\n },\n \"$:/themes/nico/notebook/settings/fontfamily\": {\n \"title\": \"$:/themes/nico/notebook/settings/fontfamily\",\n \"created\": \"20210101213404232\",\n \"modified\": \"20210101213411800\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\"Segoe UI\\\",Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\"\\n\"\n },\n \"$:/themes/nico/notebook/shortcuts/notebook-focus-search\": {\n \"title\": \"$:/themes/nico/notebook/shortcuts/notebook-focus-search\",\n \"created\": \"20201210122048919\",\n \"key\": \"((notebook-focus-search))\",\n \"modified\": \"20210115130024907\",\n \"tags\": \"$:/tags/KeyboardShortcut\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".nc-topbar input\\\"/>\\n\"\n },\n \"$:/themes/nico/notebook/shortcuts/toggle-sidebar\": {\n \"title\": \"$:/themes/nico/notebook/shortcuts/toggle-sidebar\",\n \"created\": \"20210115130000707\",\n \"key\": \"((toggle-sidebar))\",\n \"modified\": \"20210115130021883\",\n \"tags\": \"$:/tags/KeyboardShortcut\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$list\\n filter=\\\"[[$:/state/notebook-sidebar]is[missing]] [{$:/state/notebook-sidebar}removeprefix[yes]]\\\"\\n emptyMessage=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/notebook-sidebar\\\" text=\\\"yes\\\"/>\\\"\\\"\\\"\\n>\\n \u003C$action-setfield $tiddler=\\\"$:/state/notebook-sidebar\\\" text=\\\"no\\\"/>\\n\u003C/$list>\\n\"\n },\n \"$:/themes/nico/notebook/stickytitles\": {\n \"title\": \"$:/themes/nico/notebook/stickytitles\",\n \"created\": \"20201217172915960\",\n \"modified\": \"20201217180034682\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"text\": \"\u003C$reveal state=\\\"$:/themes/nico/notebook/options/stickytitles\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n\\n.tc-tiddler-title {\\n position: -webkit-sticky;\\n position: -moz-sticky;\\n position: -o-sticky;\\n position: -ms-sticky;\\n position: sticky;\\n top: {{$:/themes/nico/notebook/metrics/topbar-height}};\\n background: \u003C\u003Ccolour tiddler-background>>;\\n z-index: 500;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-tiddler-title {\\n top: 0;\\n }\\n}\\n\\n\u003C$list filter=\\\"[range[100]]\\\">\\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) {\\nz-index: `\u003C$text text={{{ [[200]subtract\u003CcurrentTiddler>] }}}/>`;\\n}\\n`\\n\u003C/$list>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/tags/Sidebar\": {\n \"title\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"created\": \"20200429164516951\",\n \"list\": \"$:/themes/nico/notebook/ui/Buttons/menu $:/themes/nico/notebook/ui/Sidebar/Headings $:/themes/nico/notebook/ui/Sidebar/Search $:/themes/nico/notebook/Sidebar/Sections\",\n \"modified\": \"20201210205606504\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/themes/nico/notebook/tags/SidebarSection\": {\n \"title\": \"$:/themes/nico/notebook/tags/SidebarSection\",\n \"created\": \"20200429201017275\",\n \"list\": \"$:/themes/nico/notebook/ui/Sidebar/Open $:/themes/nico/notebook/ui/Sidebar/Recent $:/themes/nico/notebook/ui/Sidebar/Tools $:/themes/nico/notebook/ui/Sidebar/More\",\n \"modified\": \"20201210215658901\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/themes/nico/notebook/ui/Bottombar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Bottombar\",\n \"created\": \"20200429113453340\",\n \"modified\": \"20201210210230886\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-bottombar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" retain=\\\"yes\\\" animate=\\\"yes\\\">\\n \u003Cdiv class=\\\"nc-bar nc-bottombar\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003Cdiv class=\\\"left\\\">\\n {{$:/themes/nico/notebook/ui/Buttons/menu}}\\n \u003C/div>\\n \u003Cdiv class=\\\"right\\\">\\n {{$:/core/ui/SideBarSegments/page-controls}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\\n\"\n },\n \"$:/themes/nico/notebook/ui/Buttons/SwitchPalette\": {\n \"title\": \"$:/themes/nico/notebook/ui/Buttons/SwitchPalette\",\n \"created\": \"20201210171047824\",\n \"description\": \"Toggle between grey/beige colour palette\",\n \"modified\": \"20210118213335643\",\n \"tags\": \"$:/tags/PageControls\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cspan class=\\\"desktop-only\\\">\\n \u003C$vars\\n palettes=\\\"[all[tiddlers+shadows]tag[$:/tags/notebook/Palette]]\\\"\\n popupTiddler=\u003C\u003Cqualify \\\"$:/state/notebook/palette-dropdown\\\">>\\n >\\n \u003C$button\\n popup=\u003C\u003CpopupTiddler>>\\n tooltip=\\\"Switch colours\\\"\\n aria-label=\\\"Switch colours\\\"\\n class=\u003C\u003Ctv-config-toolbar-class>>\\n >\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n\\t{{$:/themes/nico/notebook/images/color-switch}}\\n \u003C/$list>\\n\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\\t\u003Cspan class=\\\"tc-btn-text\\\">Switch colours\u003C/span>\\n \u003C/$list>\\n\\n \u003C$reveal state=\u003C\u003CpopupTiddler>> type=\\\"popup\\\" position=\\\"belowleft\\\" class=\\\"tc-drop-down\\\">\\n\\t\u003C$list filter=\u003C\u003Cpalettes>>>\\n\\t \u003C$button class=\\\"tc-btn-invisible\\\">\\n\\t {{!!name}}\\n\\t \u003C$action-setfield $tiddler=\\\"$:/palette\\\" text={{!!title}}/>\\n\\t \u003C/$button>\\n\\t\u003C/$list>\\n \u003C/$reveal>\\n\\n \u003C/$button>\\n \u003C/$vars>\\n\u003C/span>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Buttons/menu\": {\n \"title\": \"$:/themes/nico/notebook/ui/Buttons/menu\",\n \"created\": \"20200429115248943\",\n \"modified\": \"20210124211756417\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"no\\\" retain=\\\"yes\\\" animate=\\\"no\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar\\\" setTo=\\\"no\\\" tooltip=\\\"Toggle menu\\\" class=\\\"tc-btn-invisible sidebar-toggle open\\\">\\n {{$:/themes/nico/notebook/images/bars}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"nomatch\\\" state=\\\"$:/state/notebook-sidebar\\\" text=\\\"yes\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar\\\" setTo=\\\"yes\\\" tooltip=\\\"Toggle menu\\\" class=\\\"tc-btn-invisible sidebar-toggle\\\">\\n {{$:/themes/nico/notebook/images/bars}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Search\": {\n \"title\": \"$:/themes/nico/notebook/ui/Search\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210126170723413\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define advanced-search-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/input\\\" text={{$:/temp/notebook-search}}/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/refresh\\\" text=\\\"yes\\\"/>\\n\u003C$action-navigate $to=\\\"$:/AdvancedSearch\\\"/>\\n\\\\end\\n\\n\\\\define input-accept-actions()\\n\u003C$list filter=\\\"[\u003C__tiddler__>get[text]!is[missing]] ~[\u003C__tiddler__>get[text]is[shadow]]\\\">\\n \u003C$action-navigate $to={{{ [\u003C__tiddler__>get[text]] }}}/>\\n \u003C$action-deletetiddler $filter=\\\"[[$:/temp/search]] [\u003CsearchTiddler>] [\u003CsearchListState>]\\\"/>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define cancel-search-actions()\\n\u003C$list filter=\\\"[\u003CsearchTiddler>get[text]!match{$:/temp/search}]\\\" emptyMessage=\\\"\\\"\\\"\u003C$action-deletetiddler $filter=\\\"[[$:/temp/search]] [\u003CsearchTiddler>] [\u003CsearchListState>]\\\"/>\\\"\\\"\\\">\\n \u003C$action-setfield $tiddler=\\\"$:/temp/search\\\" text={{{ [\u003CsearchTiddler>get[text]] }}}/>\\n \u003C$action-setfield $tiddler=\\\"$:/temp/search/refresh\\\" text=\\\"yes\\\"/>\u003C/$list>\\n\\\\end\\n\\n\u003C$vars editTiddler=\\\"$:/temp/search\\\"\\n searchTiddler=\\\"$:/temp/search/input\\\"\\n searchListState=\u003C\u003Cqualify \\\"$:/state/search-list/selected-item\\\">>>\\n \u003C$macrocall $name=\\\"keyboard-driven-input\\\"\\n\\t tiddler=\u003C\u003CeditTiddler>>\\n\\t storeTitle=\u003C\u003CsearchTiddler>>\\n\\t selectionStateTitle=\u003C\u003CsearchListState>>\\n\\t refreshTitle=\\\"$:/temp/search/refresh\\\"\\n\\t type=\\\"search\\\"\\n\\t tag=\\\"input\\\"\\n\\t focus={{$:/config/Search/AutoFocus}}\\n\\t focusPopup=\\\"$:/state/popup/notebook-search\\\"\\n\\t class=\\\"tc-popup-handle\\\"\\n\\t filterMinLength={{$:/config/Search/MinLength}}\\n\\t placeholder=\\\"Search...\\\"\\n\\t inputAcceptActions=\u003C\u003Cinput-accept-actions>>\\n\\t inputCancelActions=\u003C\u003Ccancel-search-actions>>\\n\\t cancelPopups=\\\"yes\\\"\\n\\t configTiddlerFilter=\\\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\\\"\\n\\t />\\n \u003C$button\\n tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}\\n aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}\\n class=\\\"tc-btn-invisible tc-page-controls\\\"\\n >\\n {{$:/core/images/advanced-search-button}}\\n \u003C\u003Cadvanced-search-actions>>\\n \u003C/$button>\\n \u003C$reveal tag=\\\"div\\\" class=\\\"tc-block-dropdown-wrapper\\\" state=\\\"$:/state/popup/notebook-search\\\" type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\">\\n \u003C$list filter=\\\"[\u003CsearchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]\\\" emptyMessage=\\\"\\\" variable=\\\"listItem\\\">\\n \u003Cdiv class=\\\"tc-block-dropdown tc-search-drop-down\\\">\\n \u003C$tiddler tiddler=\u003C\u003CconfigTiddler>>>\\n {{$:/themes/nico/notebook/ui/Sidebar/SearchResults}}\\n \u003C/$tiddler>\\n \u003C/div>\\n \u003C/$list>\\n \u003C/$reveal>\\n\u003C/$vars>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Headings\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Headings\",\n \"created\": \"20200429160014174\",\n \"modified\": \"20201210210231267\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cdiv class=\\\"segment\\\">\\n \u003Cdiv class=\\\"content\\\">\\n \u003Ch1 class=\\\"tc-site-title\\\">\\n {{$:/SiteTitle}}\\n \u003C/h1>\\n \u003Cdiv class=\\\"tc-site-subtitle\\\">\\n {{$:/SiteSubtitle}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Search\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Search\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210124220152702\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cdiv class=\\\"mobile-only\\\">\\n \u003Cdiv class=\\\"segment\\\">\\n \u003Cdiv class=\\\"content search\\\">\\n {{$:/themes/nico/notebook/ui/Search}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/SearchResults\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/SearchResults\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210126164631418\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define searchResultList()\\n \u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>\\n\\n \u003C$list filter=\\\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\\\">\\n \u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-primaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n \u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n \u003C/span>\\n \u003C/$list>\\n\\n \u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>\\n\\n \u003C$list filter=\\\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\\\">\\n \u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-secondaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n \u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n \u003C/span>\\n \u003C/$list>\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-search-results\\\">\\n \u003C\u003CsearchResultList>>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate\",\n \"created\": \"20200429161226897\",\n \"modified\": \"20210202213859460\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define sidebarHeading()\\n\u003C$vars tv-wikilinks=\\\"no\\\">\\n \u003C$transclude field=\\\"caption\\\">\\n \u003C$view field=\\\"title\\\"/>\\n \u003C/$transclude>\\n\u003C/$vars>\\n\\\\end\\n\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar-section\\\" type=\\\"match\\\" text=\u003C\u003CcurrentTiddler>> default=\\\"no\\\" animate=\\\"no\\\">\\n \u003Cdiv class=\\\"segment section open\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar-section\\\" setTo=\\\"\\\" class=\\\"tc-btn-invisible label\\\">\\n \u003C\u003CsidebarHeading>>\\n \u003Cspan class=\\\"caret\\\">{{$:/themes/nico/notebook/images/caret-down}}\u003C/span>\\n \u003C/$button>\\n \u003Cdiv class=\\\"content\\\">\\n \u003C$transclude $tiddler=\u003C\u003CcurrentTiddler>> mode=\\\"block\\\"/>\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar-section\\\" type=\\\"nomatch\\\" text=\u003C\u003CcurrentTiddler>> default=\\\"yes\\\" animate=\\\"no\\\">\\n \u003Cdiv class=\\\"segment section\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar-section\\\" setTo=\u003C\u003CcurrentTiddler>> class=\\\"tc-btn-invisible label\\\">\\n \u003C\u003CsidebarHeading>>\\n \u003Cspan class=\\\"caret\\\">{{$:/themes/nico/notebook/images/caret-right}}\u003C/span>\\n \u003C/$button>\\n \u003C/div>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Sections\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Sections\",\n \"created\": \"20200429163239707\",\n \"modified\": \"20210112213620486\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$list filter=\\\"[all[shadows+tiddlers]!has[draft.of]tag[$:/tags/SideBar]]\\\">\\n {{||$:/themes/nico/notebook/ui/Sidebar/SectionTemplate}}\\n\u003C/$list>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar\",\n \"created\": \"20200428201218885\",\n \"modified\": \"20210112213605486\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"no\\\" retain=\\\"yes\\\" animate=\\\"no\\\">\\n \u003C$scrollable fallthrough=\\\"no\\\">\\n \u003Cdiv class=\\\"nc-sidebar\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/themes/nico/notebook/tags/Sidebar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"inline\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003C/div>\\n \u003C/$scrollable>\\n\u003C/$reveal>\\n\\n\"\n },\n \"$:/themes/nico/notebook/ui/Topbar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Topbar\",\n \"created\": \"20200428203101797\",\n \"modified\": \"20210124213834458\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-topbar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" retain=\\\"yes\\\" animate=\\\"yes\\\">\\n \u003Cdiv class=\\\"nc-topbar-wrapper\\\">\\n \u003Cdiv class=\\\"nc-bar nc-topbar tc-adjust-top-of-scroll\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003Cdiv class=\\\"left\\\">\\n\\t{{$:/themes/nico/notebook/ui/Buttons/menu}}\\n {{$:/themes/nico/notebook/ui/Search}}\\n \u003C/div>\\n \u003Cdiv class=\\\"right\\\">\\n {{$:/core/ui/SideBarSegments/page-controls}}\\n \u003C/div>\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\\n\"\n }\n }\n}","bag":"default","revision":"0","version":"1.4.1","type":"application/json","title":"$:/themes/nico/notebook","source":"https://github.com/NicolasPetton/Notebook","plugin-type":"theme","name":"Notebook theme","list":"LICENSE changelog","description":"A clean, uncluttered TiddlyWiki theme","dependents":"$:/themes/tiddlywiki/vanilla $:/plugins/nico/notebook-mobile","core-version":">=5.1.22","author":"NicolasPetton"},
{"created":"20200429144554294","title":"$:/themes/nico/notebook/metrics/sidebar-width","modified":"20230423163514560","tags":"","type":"text/vnd.tiddlywiki","text":"300px"},
@@ -1059,7 +1059,7 @@ Error message and password prompt
{"created":"20240624125444313","text":"\u003Cstyle type=\"text/css\">\n .examples img{\n\t border: 1px solid #CCC;\n\t\tborder-radius:6px;\n\t\tmargin: 20px 20px 20px 0px;\n\t\tdisplay:block;\n\t\twidth:100%;\n\t}\n\u003C/style>\n\u003Cdiv class=\"examples\">\n \u003Cdiv>\n \u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">\n\t \u003Cimg src=\"https://coderofsalvation.github.io/xrfragment.media/images/index.glb.jpg\"/>\n\t \u003C/a>\n\t\t\u003Cb>index.glb\u003C/b> kitchensink \n\t\u003C/div>\n\t\u003Cdiv>\n \u003Ca href=\"example/aframe/sandbox?https://xrfragment.org/example.glb\" target=\"_blank\">\n\t \u003Cimg src=\"https://coderofsalvation.github.io/xrfragment.media/images/example.glb.jpg\"/>\n\t \u003C/a>\n\t\t\u003Cb>example.glb\u003C/b> simple startingpoint \n\t\u003C/div>\n\t\u003Cdiv>\n \u003Ca href=\"https://coderofsalvation.codeberg.page/xrfragment-elearning-templates/?https://coderofsalvation.codeberg.page/xrfragment-elearning-templates/index.glb\" target=\"_blank\">\n\t \u003Cimg src=\"https://coderofsalvation.github.io/xrfragment.media/images/elearning.glb.jpg\"/>\n\t \u003C/a>\n\t\t\u003Cb>elearning.glb\u003C/b> quiz startingpoint \n\t\u003C/div>\n\u003C/div>","tags":"$:/tags/SideBar","title":"Examples","modified":"20240624132337421","list-before":"$:/core/ui/SideBar/Open"},
{"title":"feedback.png","text":"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","type":"image/png"},
{"created":"20240619105321821","text":"3D Objects inside a 3D model can be referenced/shown/hidden via URI filters:\n\u003Cbr>\n\n\u003Cimg src=\"https://coderofsalvation.github.io/xrfragment.media/images/filters.gif\" style=\"width:100%\"/>\n\nThis allows high re-usability of 3D modes for remote-, local- and recursive (embedded `src`) usecases:\n\u003Cbr>\u003Cbr>\n\n\u003Cpre>\n\u003Ccode>\n my.io/scene.usdz Embeddable as:\n +βββββββββββββββββββββββββββββ+\n β sky β src: http://my.io/scene.udsz#sky (includes building,mainobject,floor)\n β +βββββββββββββββββββββββββ+ β \n β β building β β src: http://my.io/scene.udsz#building (includes mainobject,floor)\n β β +βββββββββββββββββββββ+ β β\n β β β mainobject β β β src: http://my.io/scene.udsz#mainobject (includes floor)\n β β β +βββββββββββββββββ+ β β β\n β β β β floor β β β β src: http://my.io/scene.udsz#floor (just floor object)\n β β β β β β β β\n β β β +βββββββββββββββββ+ β β β href: http://my.io/scene.udsz#-mainobject (hides mainobject when clicked)\n β β +βββββββββββββββββββββ+ β β\n β +βββββββββββββββββββββββββ+ β\n +βββββββββββββββββββββββββββββ+\n\u003C/code>\n\u003C/pre>\n\nThe [[href]] and [[src]] documentation show various examples, but the full syntax is explained in the spec below.\u003Cbr>\nOn top of that, [[tagged objects]] allow using `tag` metadata to group objects to trigger grouped features\n\n\u003Cbr>\u003Cbr>\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#xr-fragment-filters\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\nFragment identifiers are derived from \u003Cb>metadata\u003C/b> inside the loaded 3D Model.\u003Cbr>More specific: \u003Cb>object-\u003C/b>, \u003Cb>material-\u003C/b>, and \u003Cb>camera-\u003C/b>names via a strategy called 'Fragment-to-metadata mapping':\n\n\u003Cbr>\u003Cbr>\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#fragment-to-metadata-mapping\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n","tags":"[[π‘ by feature (heuristics)]]","title":"filters","modified":"20240619120922479"},
-{"created":"20230808113746326","text":"Just get your hands on a 3D editor and follow the steps in the video:\n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/gettingstarted2024.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\nHere are various ways to create/test 3D files with XR Fragments:\n\n| | ''scenario'' | ''how'' | ''notes'' |\n| 1 | easiest | the xrfragment.org \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">Sandbox\u003C/a> | export 3D file (.glb) in \u003Ca href=\"https://blender.org\" target=\"_blank\">Blender\u003C/a>, after adding [[href]], [[src]] and [[tag]] \u003Cb>metadata\u003C/b> as \u003Ca href=\"https://docs.blender.org/manual/en/2.79/data_system/custom_properties.html\" target=\"_blank\">custom properties\u003C/a>, and load exported files into \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">the sandbox\u003C/a> (see video above)|\n\n\u003Ch2>Developers\u003C/h2>\n\nIn case you want to build your own 3D hypermedia browser:\n\n| | ''scenario'' | ''how'' | ''notes'' |\n| 3 | easy #aframe #codepen| \u003Ca href=\"https://codepen.io/coderofsalvation/pen/yLwedvX\" target=\"_blank\">codepen\u003C/a> | press the 'fork'-button to clone the example |\n| 4 | dev #godot | load the \u003Ca href=\"#%F0%9F%A7%B0%20GODOT\">example project\u003C/a> | |\n| 4 | dev #aframe #github | hosted sandbox by \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-helloworld\" target=\"_blank\">forking xrfragment-helloworld\u003C/a> | Basically #1 but it will be hosted for free at your own github URL |\n| 5 | dev #aframe #github #modular | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-aframe-helloworld\">xfragment-aframe-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://aframe.io\" target=\"_blank\">aframe.io\u003C/a> developer-knowledge |\n| 6 | dev #threejs #github #modular | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-three-helloworld\">xfragment-three-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://threejs.org\" target=\"_blank\">threejs\u003C/a> developer-knowledge |\n| 7 | dev #polyglot | use the [[XR Fragment parser|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] | lowlevel approach, more suitable for other scenarios |\n| 8 | dev #spec #browser | implement [[the spec|π XR fragments]] yourself | the spec is simple: parse URL and iterate over a scene |\n\nNext to that, familiarize yourself with XR Fragments by checking these videos: \n\n1. \u003Ca href=\"https://github.com/coderofsalvation/xrfragment.media\" target=\"_blank\">All videos on github\u003C/a> (tip: star the repo)\u003Cbr>\n2. \u003Ca href=\"https://www.youtube.com/playlist?list=PLctjJGlTmeE64XPSQER2BSbjmqVGaWM4J\" target=\"_blank\">All videos on Youtube\u003C/a> (tip: subscribe or add to 'Watch-later' list)","tags":"","title":"Getting started","modified":"20240626094828305","type":"text/vnd.tiddlywiki"},
+{"created":"20230808113746326","text":"Just get your hands on a 3D editor and follow the steps in the video:\n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/gettingstarted2024.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\nHere are various ways to create/test 3D files with XR Fragments:\n\n| | ''scenario'' | ''how'' | ''notes'' |\n| 1 | easiest | the xrfragment.org \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">Sandbox\u003C/a> | export 3D file (.glb) in \u003Ca href=\"https://blender.org\" target=\"_blank\">Blender\u003C/a>, after adding [[href]], [[src]] and [[tag]] \u003Cb>metadata\u003C/b> as \u003Ca href=\"https://docs.blender.org/manual/en/2.79/data_system/custom_properties.html\" target=\"_blank\">custom properties\u003C/a>, and load exported files into \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">the sandbox\u003C/a> (see video above)|\n\n\u003Ch2>Developers\u003C/h2>\n\nIn case you want to build your own 3D hypermedia browser:\n\n| | ''scenario'' | ''how'' | ''notes'' |\n| 3 | easy #aframe #codepen| \u003Ca href=\"https://codepen.io/coderofsalvation/pen/yLwedvX\" target=\"_blank\">codepen\u003C/a> | press the 'fork'-button to clone the example |\n| 4 | dev #godot | load the \u003Ca href=\"#%F0%9F%A7%B0%20GODOT\">example project\u003C/a> | |\n| 4 | dev #aframe #github | hosted sandbox by \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-helloworld\" target=\"_blank\">forking xrfragment-helloworld\u003C/a> | Basically #1 but it will be hosted for free at your own github URL |\n| 5 | dev #aframe #github #modular | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-aframe-helloworld\">xfragment-aframe-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://aframe.io\" target=\"_blank\">aframe.io\u003C/a> developer-knowledge |\n| 6 | dev #threejs #github #modular | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-three-helloworld\">xfragment-three-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://threejs.org\" target=\"_blank\">threejs\u003C/a> developer-knowledge |\n| 7 | dev #polyglot | use the [[XR Fragment parser|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] | lowlevel approach, more suitable for other scenarios |\n| 8 | dev #spec #browser | implement [[the spec|π XR fragments]] yourself | the spec is simple: parse URL and iterate over a scene |\n\nNext to that, familiarize yourself with XR Fragments by checking these videos: \n\n1. \u003Ca href=\"https://github.com/coderofsalvation/xrfragment.media\" target=\"_blank\">All videos on github\u003C/a> (tip: star the repo)\u003Cbr>\n2. \u003Ca href=\"https://www.youtube.com/playlist?list=PLctjJGlTmeE64XPSQER2BSbjmqVGaWM4J\" target=\"_blank\">All videos on Youtube\u003C/a> (tip: subscribe or add to 'Watch-later' list)","tags":"","title":"Getting started","modified":"20240626103222610","type":"text/vnd.tiddlywiki"},
{"created":"20230425160210102","text":"\u003Cshader-doodle>\n \u003Csd-node name=\"motionblur\" prevbuffer>\n \u003Csd-node name=\"rotate\">\n \u003Csd-node name=\"basic_gl\">\n \u003Cscript type=\"x-shader/x-fragment\">\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n vec3 color = vec3(st.x, st.y, abs(sin(u_time)));\n\n gl_FragColor = vec4(color, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D basic_gl;\n\n const float PI = 3.1415926;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n\n float angle = 2. * PI * (.5 + .5 * cos(u_time));\n float scale = .7 + .4 * cos(u_time);\n\n mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n vec2 p = (st - vec2(.5)) * rotation / scale + vec2(.5);\n\n gl_FragColor = p.x \u003C 0. || p.x > 1. || p.y \u003C 0. || p.y > 1.\n ? vec4(0., 0., 0., 1.)\n : texture2D(basic_gl, p);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D rotate, u_prevbuffer;\n\n void main () {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = vec4(mix(\n texture2D(rotate, st),\n texture2D(u_prevbuffer, st),\n .8\n ).rgb, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D motionblur;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = texture2D(motionblur, st);\n }\n \u003C/script>\n\u003C/shader-doodle>","tags":"GLSL","title":"GLSL template","modified":"20230425170513931","type":"text/vnd.tiddlywiki"},
{"created":"20240226111559175","text":"The hashbus sits inbetween HTML's traditional `href` and the toplevel URL.\u003Cbr>\nSay what?\u003Cbr>\n\u003Cbr>\n> Because of historical reasons the `href` bundles interaction (a click) and navigation (replacing the viewport with another resource).\n\nXR Fragments also allows separating these historicially merged actions, by introducing a hashbus:\n\n| href value | updates top-level URL |\n|-|-|\n| `#foo` | yes |\n|`xrf://#foo` | no |\n\nThis allows much more document interactions, with the following benefits:\n\n* interactions don't clutter URLs for back/forward button navigation\n* many usecases don't require a scripting language anymore (hiding/scrolling via [#uv](#uv) e.g.)\n* use same URI Fragment DSL for navigation and interactions\n* re-use URI Templates across 3D nodes\n* allow 3D nodes publish updates to other 3D nodes (via hashbus)\n\nIn short, a complete **hypermediatic feedback loop** (HFL).\n\n\u003Cbr>\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#hypermediatic-feedbackloop-for-xr-browsers\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n","tags":"","title":"hashbus","modified":"20240228122229072","type":"text/markdown"},
{"created":"20230428150217784","text":"\u003Cdiv class=\"border\" style=\"padding:15px\">\n \u003Cb>NOTE:\u003C/b> This is a \u003Cb>technical\u003C/b> page about \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">the spec\u003C/a>\u003Cbr>Probably you want to check out \u003Ca href=\"#Getting%20started\">Getting Started\u003C/a> instead.\n\u003C/div>\n\n\u003Cb>Short explanation\u003C/b>: XR Fragments empowers designers to ship interactive 3D files without programming, simply by adding metadata according to \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">the spec\u003C/a>.\u003Cbr>\nThis promotes ''Open Spatial Internet Features'' across ''existing'' authoring/viewing-software.\u003Cbr>\u003Cbr>\n\n[img[xrfragment.jpg]]\n\n\u003Cbr>\n\u003Cb>ChatGPT summary\u003C/b>: XR Fragments is a \u003Cb>Meta scene format\u003C/b> which leverages heuristic rules derived from any 3D scene or well-established 3D file formats, to extract meaningful features from scene hierarchies.\u003Cbr>\nThese heuristics, enable features that are both meaningful and consistent across different scene representations, allowing \u003Cb>higher interop\u003C/b> between fileformats, 3D editors, viewers and game-engines.\u003Cbr>\n\u003Cbr>\n\n!! How can XR Browsers surf these worlds?\n\nUsing an \u003Cb>URL-bar\u003C/b> in your browser, app or OS.\u003Cbr>\nWhich points to an 3D scene or file ([[glTF|https://en.wikipedia.org/wiki/GlTF]], [[USDZ|https://en.wikipedia.org/wiki/Universal_Scene_Description]], [[OBJ|https://en.wikipedia.org/wiki/Wavefront_.obj_file]], [[COLLADA|https://en.wikipedia.org/wiki/COLLADA]], [[FBX|https://en.wikipedia.org/wiki/FBX]] e.g.):\n\u003Cbr>\u003Cbr>\u003Cbr>\n\u003Cdiv class=\"border padding\">\n\t\u003Cspan class=\"big\">://\u003C/span>\n\t\u003Cspan class=\"big hi2\">foo/world.gltf\u003C/span>\n\t\u003Cspan class=\"big hi1\">#cube\u003C/span>\n\t\u003Cspan class=\"big hi3\">&\u003C/span>\n\t\u003Cspan class=\"big hi1\">pos\u003C/span>\n\t\u003Cspan class=\"big hi3\">=\u003C/span>\n\t\u003Cspan class=\"big hi1\">0,0,0\u003C/span>\n\u003C/div>\n\u003Cbr>\n\n!! OK..so extra metadata is needed first?\n\nNO, manually entered metadata is optional, as [[#pos]] [[#rot]] [[π Media Fragments]] and [[π auto-generated fragments]] work regardless of it.\n\u003Cbr>\u003Cb>URL addressibility\u003C/b> for objects inside your 3D file is generated ''automatically'' for you (this is very important to understand).\u003Cbr>\n\n!! How can I add more features to existing 3D assets/scenes?\n\nBy manually adding \u003Cb>metadata\u003C/b> inside 3D objects/asset/scene, which give scenes HTML-like powers:\n\n* [[href]] links to other assets/scenes + interactions (via \u003Ca href=\"#hashbus\">hashbus links\u003C/a>)\n* [[src]] the 3D version of the \u003Ca target=\"_blank\" href=\"https://www.w3.org/html/wiki/Elements/iframe\">iframe\u003C/a>\n* [[tag]] objects (to later toggle on/off, [[filters]] etc using [[href]]-values or [[predefined_view]]s)\n\n> There's two ways to add this metadata:\n\n* 3D editors: [[Blender|https://blender.org]], [[3DS Max|https://en.wikipedia.org/wiki/Autodesk_3ds_Max]], Maya etc (see \u003Ca target=\"_blank\" href=\"https://docs.blender.org/manual/en/2.79/data_system/custom_properties.html\">custom properties\u003C/a>). \n* Programmatically: frameworks like \u003Ca href=\"https://threejs.org\" target=\"_blank\">THREE.js\u003C/a> (`obj.userData`), \u003Ca href=\"https://godotengine.org\" target=\"_blank\">Godot\u003C/a>, Unity, Unreal etc.\n\n> \u003Cb>NOTE\u003C/b>: the [[AFRAME/THREE libraries|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] automatically recognize and apply this metadata for you.\n\n!! Features\n\nHow do 3D viewers extract interactions from 3D models & scenes?\u003Cbr>\nBy extracting metadata from them, and controlling them using URLs:\n\n| ''feature'' | ''feature detection'' | ''URL-controllable'' |\n| [[buttons|create a button]] | any objects with [[href]] custom property | β
|\n| [[embed / instance local object|src]] | any objects with [[src]] custom property | β
|\n| [[embed / instance remote file (hypermedia: audio/video/image e.g.)|src]] | any objects with [[src]] custom property | β
|\n| [[navigation/teleporting|href]] | any objects with [[href]] custom property | β
|\n| [[referencing/selecting an object|π auto-generated fragments]] | any objectname (`#myobject` e.g.) | β
|\n| [[referencing of objectgroups|tag]] | any object with [[tag]] custom property (`#myobjects` e.g.) | β
|\n| [[referencing children of object(groups)|π auto-generated fragments]] | use `*` wildcards to select the children of objectname/tags | β
|\n| [[toggle/filter object(groups) [+children]|π auto-generated fragments]] | any object with [[href]] containing [[filters]]s | β
|\n| [[selecting active camera|π auto-generated fragments]] | any object with [[href]] containing `#name_of_yourcamera` | β
|\n| [[assign different texture to object|src]] | any object with texture and [[src]] custom property | |\n| [[assign different material to object|π auto-generated fragments]] | use `objectname_or_tag*=materialname` to assign a different material (`*` includes childen) | β
|\n| control animations of 3D scene (or embedded media) | [[π W3C Media Fragments]] can be used (in conjunction with [[URI Templates|Reactivity / URI Templating]]) | β
|\n| pointing at object(group) | any object with [[href]] custom property containing objectname or tag (`#cube` or `#cubes` e.g.) | β
|\n| [[positioning the user/camera]] | any object with [[href]] custom property containing [[#pos]] and [[rot]]] | β
|\n| [[floor/walking|collidable / walkable objects]] | any objects without material & custom properties | |\n| [[AR/XR lens|non-euclidian portals & lenses]] | any flat objects without material but with [[src]] property | β
|\n| background/fog color | color-value of (a) light-node in the root of the scene |\n| [[spatial audio|src]] | any object with [[src]] custom property with audiofile (.ogg, .mp3, .wav e.g.) | β
|\n| [[nonspatial audio|src]] | any object with [[src]] custom property with audiofile (.ogg, .mp3, .wav e.g.) and position `0,0,0` | β
|\n| fog distance | activated when camera Z scale-value (>1.0) | |\n| [[presets|π auto-generated fragments]] | any custom property (`#mypreset`:`#pos=0,1,2`) which is used in a [[href]] (`#href`:`#mypreset`)|\n| [[default preset|#]] | any scene/object containing an `#` custom property (`#`:`pos=0,1,2`) | β
|\n\nNOTE: [[href]] and [[src]] values ''are statically defined inside'' the 3D file/scene, which prevents endusers from tampering with the scene.\n\n> Realize the universality, interoperability & future prospects of 3D scenes which offer this degree of URL control- and reference-ability out of the box β€\n\nGame/World-developers: In digital realms where XR Fragments reside, XR's essence shall forever abide.\n(Transcending the boundaries of old game-engine tech)\n\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.github.io/xrfragment.media/sharing.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n\u003Cbr>\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#spatial-referencing-3d\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n\n\n> the above paradigm allows spatial ''teleportation'', but also ''sourceportation'' (teleporting to the (author) world of which an embedded `src` object belongs). \u003Cbr>\u003Cb>NOTE\u003C/b>: the [[AFRAME/THREE libraries|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] do this for you out of the box.\n\n\n!!!! HTML agnostic hypermedia navigation\n\nHere's an ascii representation of a 3D scene-graph which contains 3D objects `β»` and their metadata:\n\n```\n\n\n +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ+ \n β β\n β index.gltf β\n β β β\n β βββ β» buttonA β\n β β β href: #pos=1,0,1&t=100,200 β\n β β β\n β βββ β» buttonB β\n β β href: other.fbx β \u003Cββ fileβagnostic (can be .gltf .obj etc)\n β β\n +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ+\n\n\n```\n\nAn XR Fragment-compatible browser viewing this scene, allows the end-user to interact with the `buttonA` and `buttonB`.\u003Cbr>\nIn case of `buttonA` the end-user will be teleported to another location and time in the **current loaded scene**, but `buttonB` will **replace the current scene** with a new one, like `other.fbx`, and assume `pos=0,0,0`.\n\n!!!! Embedding 3D content \n\nHere's an ascii representation of a 3D scene-graph with 3D objects `β»` which embeds remote & local 3D objects `β»` with/out using queries:\n\n```\n\n\n +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ+ +βββββββββββββββββββββββββ+ \n β β β β\n β index.gltf β β ocean.com/aquarium.fbx β\n β β β β β β\n β βββ β» canvas β β βββ β» fishbowl β\n β β β src: painting.png β β ββ β» bass β\n β β β β ββ β» tuna β\n β βββ β» aquariumcube β β β \n β β β src: ://rescue.com/fish.gltf#bass%20tuna β +βββββββββββββββββββββββββ+\n β β β \n β βββ β» bedroom β \n β β β src: #canvas β\n β β β \n β βββ β» livingroom β \n β β src: #canvas β\n β β\n +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ+\n\t\n\t\n```\n\nAn XR Fragment-compatible browser viewing this scene, lazy-loads and projects `painting.png` onto the (plane) object called `canvas` (which is copy-instanced in the bed and livingroom).\u003Cbr>\nAlso, after lazy-loading `ocean.com/aquarium.gltf`, only the queried objects `bass` and `tuna` will be instanced inside `aquariumcube`.\u003Cbr>\nResizing will be happen accordingly to its placeholder object `aquariumcube`, see chapter Scaling.\u003Cbr>\n\n> Instead of cherrypicking objects with `#bass&tuna` thru `src`, queries can be used to import the whole scene (and filter out certain objects). See next chapter below.\n\nsee [[Getting started]] to get going!","title":"How it works","modified":"20240626094145421","type":"text/vnd.tiddlywiki"},