From 5ed4b21b8208644a3264a3cf404f34d1e4c7b181 Mon Sep 17 00:00:00 2001 From: OcttKB-TiddlyWiki-Sync <project39559103_bot@noreply.gitlab.com> Date: Sat, 25 Feb 2023 15:15:55 +0000 Subject: [PATCH] Saved by TiddlyWiki --- public/index.html | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/public/index.html b/public/index.html index 9ed9e04..072a506 100644 --- a/public/index.html +++ b/public/index.html @@ -153,7 +153,7 @@ Error message and password prompt <script class="tiddlywiki-tiddler-store" type="application/json">[ {"created":"20230109221113895","creator":"Octt","text":"\u003C\u003C{ OcttKB>>","tags":"Meta $:/i18n:en","title":"~Welcome~","modified":"20230218232731582","modifier":"Octt","icon":"๐","page-cover":"https://source.unsplash.com/random?welcome"}, {"created":"20230216210519344","creator":"Octt","text":"\\whitespace trim\n\u003Cdiv class=\"tc-advanced-search\">\n\u003C$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"\u003C$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=\u003C\u003CcurrentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n\u003C/div>\n","title":"$:/AdvancedSearch","icon":"$:/core/images/advanced-search-button","color":"#bbb","modified":"20230216210530034","modifier":"Octt","tags":"$:/Tools"}, -{"created":"20230221195029004","creator":"Octt","text":"","title":"$:/Apps","modified":"20230221195029681","modifier":"Octt","tags":"$:/ToC"}, +{"created":"20230221195029004","creator":"Octt","text":"","title":"$:/Apps","modified":"20230225144031829","modifier":"Octt","tags":"$:/ToC"}, {"created":"20221108215403917","text":"\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n\u003Cstyle>\n:Root {\n\t--BodyMargin: 8px;\n}\n\nBody {\n\tText-Align: Center;\n\tUser-Select: None;\n\tFont-Family: Sans-Serif;\n\tMargin: Var(--BodyMargin);\n}\n\nA {\n\tColor: #000000;\n\tText-Decoration: None;\n}\nUl {\n\tText-Align: Left;\n\tList-Style: None;\n\tColumn-Count: 1;\n\tMargin-Top: 8px;\n\tMargin-Bottom: 8px;\n\tPadding-Left: 0px;\n\tPadding-Right: 0px;\n}\nLi {\n\tLine-Height: 1.75em;\n\tFont-Size: Larger;\n\tPadding-Left: 8px;\n\tPadding-Right: 8px;\n}\nLi:Hover {\n\tBackground: LightGray;\n}\n\n.SimpleList Li {\n\tWidth: Fit-Content;\n\tWhite-Space: NoWrap;\n}\n\n.TextLineImg {\n\tWidth: 1em;\n\tHeight: 1em;\n\tVertical-Align: Text-Top;\n\tPadding-Right: 8px;\n}\n.Margin4 {\n\tMargin: 4px;\n}\n\n.Dropdown {\n\t/*Position: Relative;*/\n\t/*Display: Inline-Block;*/\n}\n.DropdownBtn {\n\tCursor: Pointer;\n\tBackground: LightGray;\n\tColor: Black;\n}\n.DropdownBody {\n\tDisplay: None;\n\tPosition: Absolute;\n\tWidth: Max-Content;\n\tBackground: White;\n\tBox-Shadow: 0px 8px 8px 0px RGBA(0,0,0,0.2);\n\tZ-Index: 1;\n}\n.DropdownBtn:Hover ~ .DropdownBody,\n.DropdownBody:Hover {\n\tDisplay: Block;\n\t/*Position: Absolute;*/\n}\n.Dropdown Li {\n\tCursor: Pointer;\n\tText-Align: Center;\n}\n.SearchDiv {\n\tWidth: Max-Content;\n}\n.DropdownBtn, Input[Type=\"Text\"] {\n\tFont-Size: Larger;\n}\n\u003C/style>\n\u003C/head>\n\u003Cbody>\n\u003Cdiv id=\"ClockDiv\" style=\"/*Margin: Calc(Var(--BodyMargin) * -1); Background:Black; Color: White;*/\">\n\t\u003Ch2 id=\"ClockTime\" class=\"Margin4\">\u003C/h2>\n\t\u003Cp id=\"ClockDate\" class=\"Margin4\">\u003C/p>\n\u003C/div>\n\u003Chr>\n\u003Ctable id=\"SearchDiv\">\u003Ctr>\n\u003Ctd>\n\t\u003Cdiv class=\"Dropdown\">\n\t\t\u003Cbutton class=\"DropdownBtn\" id=\"EnginesBtn\" style=\"Width:Max-Content;\">\u003Cimg id=\"EnginesCurrentIcon\" class=\"TextLineImg\" style=\"Vertical-Align:Sub;\">\u003Cspan id=\"EnginesCurrent\">\u003C/span>\u003C/button>\n\t\t\u003Cdiv class=\"DropdownBody\" id=\"EnginesDropdown\">\n\t\t\t\u003Cul id=\"EnginesList\">\u003C/ul>\n\t\t\u003C/div>\n\t\u003C/div>\n\u003C/td>\u003Ctd style=\"Width:100%;\">\n\t\u003Cinput type=\"text\" id=\"SearchInput\" onfocus=\"this.select();\" style=\"Width:Calc(100% - Var(--BodyMargin));\">\n\u003C/td>\n\u003C/tr>\u003C/table>\n\u003Cul id=\"BookmarksList\" class=\"SimpleList\">\u003C/ul>\n\n\u003Cscript>\nconst SearchEngines = {\n\t\"Whoogle\": \"https://www.whoogle.click/search?q=\",\n\t\"Wikipedia [\u003Ctt>EN\u003C/tt>]\": \"https://en.wikipedia.org/w/index.php?search=\",\n\t\"Wikipedia [\u003Ctt>IT\u003C/tt>]\": \"https://it.wikipedia.org/w/index.php?search=\",\n\t\"Invidious\": \"https://invidious.baczek.me/search?q=\",\n\t\"WordReference [\u003Ctt>EN->IT\u003C/tt>]\": \"https://www.wordreference.com/enit/\",\n\t\"WordReference [\u003Ctt>IT->EN\u003C/tt>]\": \"https://www.wordreference.com/iten/\"\n};\n\nconst Bookmarks = `\nhttp://octt.ddns.net:8017 FreshRSS;\nhttp://octt.ddns.net:8036 Wallabag;\nhttps://cryptpad.devol.it/drive CryptPad;\nhttps://www.deepl.com/translator DeepL;\nhttps://gitea.it Gitea;\nhttps://github.com GitHub;\nhttps://gitlab.com GitLab;\nhttps://librespeed.org LibreSpeed;\nhttps://odysee.com Odysee;\nhttps://www.openstreetmap.org OpenStreetMap;\nhttps://app.standardnotes.com Standard Notes;\nhttps://temp-mail.org/en Temp Mail;\nhttps://voidlinux.org/packages Void Linux/Packages;\nhttps://www.wikipedia.org Wikipedia;\nhttps://mail.yahoo.com Yahoo Mail;\n`;\n\nfunction GetImgAverageColor(Img) {\n\tconst colorThief = new ColorThief();\n\tif (Img.complete) {\n\t\treturn colorThief.getColor(Img);\n\t} else {\n\t\timage.addEventListener(\"load\", function() {\n\t\t\treturn colorThief.getColor(Img);\n\t\t});\n\t};\n};\n\n/* https://stackoverflow.com/a/2998874 */\nfunction ZeroPad(Num, Pad) {\n\tvar Zero = Pad - Num.toString().length + 1;\n\treturn Array(+(Zero > 0 && Zero)).join(\"0\") + Num;\n};\nfunction TimePad(Num) {\n\treturn ZeroPad(Num, 2);\n};\n\nfunction SetTime() {\n\tlet Time = new Date();\n\tlet Y = Time.getFullYear();\n\tlet M = TimePad(Time.getMonth() + 1);\n\tlet D = TimePad(Time.getDate()); /* Month day */\n\tlet N = Time.getDay(); /* Week day */\n\tlet h = TimePad(Time.getHours());\n\tlet m = TimePad(Time.getMinutes());\n\tlet s = TimePad(Time.getSeconds());\n\tClockTime.textContent = h + \":\" + m + \":\" + s;\n\tClockDate.textContent = Y + \"-\" + M + \"-\" + D;\n};\n\nfunction GetFavicon(URL) {\n\treturn \"https://icons.duckduckgo.com/ip3/\" + URL.replace(/^https?:\\/\\//, \"\").split(\"/\")[0] + \".ico\";\n};\nfunction GetLineFavicon(URL) {\n\treturn '\u003Cimg class=\"TextLineImg\" src=\"' + GetFavicon(URL) + '\">'\n};\n\nfunction LoadBookmarks() {\n\tlet UlURLs = \"\";\n\tlet List = Bookmarks.trim().split(\";\");\n\tfor (let i=0; i\u003CList.length; i++) {\n\t\tlet Item = List[i].trim();\n\t\tif (Item) {\n\t\t\tlet Split = Item.indexOf(\" \");\n\t\t\tlet Href = Item.substring(0, Split);\n\t\t\tlet Name = Item.substring(Split+1);\n\t\t\tUlURLs += '\u003Cli>\u003Ca href=\"' + Href + '\" target=\"_blank\" rel=\"noopener\">' + GetLineFavicon(Href) + Name + '\u003C/a>\u003C/li>';\n\t\t};\n\t};\n\tBookmarksList.innerHTML += UlURLs;\n};\n\nfunction LoadSearchEngines() {\n\tEnginesCurrent.innerHTML = Object.keys(SearchEngines)[0];\n\tEnginesCurrentIcon.src = GetFavicon(SearchEngines[EnginesCurrent.innerHTML]);\n\tObject.keys(SearchEngines).forEach(function(Key) {\n\t\tEnginesList.innerHTML += \"\u003Cli onclick=\\\"EnginesCurrent.innerHTML=`\" + Key + \"`; EnginesCurrentIcon.src=`\" + GetFavicon(SearchEngines[Key]) + \"`;\\\">\" + GetLineFavicon(SearchEngines[Key]) + Key + \"\u003C/li>\";\n\t});\n};\n\nfunction ClockDateToggle() {\n\tClockDate.hidden = !ClockDate.hidden;\n};\nClockDiv.onclick = ClockDateToggle;\n\nSearchInput.onkeydown = function(e) {\n\tif (e.keyCode == 13) {\n\t\t// Only open search URL if textbox contains text, else open parent path (often site root)\n\t\twindow.open(SearchInput.value ? SearchEngines[EnginesCurrent.innerHTML] + SearchInput.value : SearchEngines[EnginesCurrent.innerHTML].split(\"/\").slice(0,-1).join(\"/\"));\n\t};\n};\n\nEnginesBtn.onclick = function() {\n\t\n};\nEnginesBtn.onmouseenter = function() {\n\t\n};\nEnginesBtn.onmouseleave = function() {\n\t\n};\n\nsetInterval(() => {\n\tSetTime();\n}, 150);\n\nLoadBookmarks();\nLoadSearchEngines();\n\u003C/script>\n\u003C/body>\n\u003C/html>","tags":"","title":"$:/Apps/Dashboard/index.html","modified":"20230108130553489","type":"text/html"}, {"created":"20221108222403364","text":":Root {\n\t--BodyMargin: 8px;\n}\n\nBody {\n\tText-Align: Center;\n\tUser-Select: None;\n\tFont-Family: Sans-Serif;\n\tMargin: Var(--BodyMargin);\n}\n\nA {\n\tColor: Black;\n\tText-Decoration: None;\n}\nUl {\n\tText-Align: Left;\n\tList-Style: None;\n\tColumn-Count: 1;\n\tMargin-Top: 8px;\n\tMargin-Bottom: 8px;\n\tPadding-Left: 0px;\n\tPadding-Right: 0px;\n}\nLi {\n\tLine-Height: 1.75em;\n\tFont-Size: Larger;\n\tPadding-Left: 8px;\n\tPadding-Right: 8px;\n}\nLi:Hover {\n\tBackground: LightGray;\n}\n\n.SimpleList Li {\n\tWidth: Fit-Content;\n}\n\n.TextLineImg {\n\tWidth: 1em;\n\tHeight: 1em;\n\tVertical-Align: Text-Top;\n\tPadding-Right: 8px;\n}\n.Margin4 {\n\tMargin: 4px;\n}\n\n.Dropdown {\n\tPosition: Relative;\n\tDisplay: Inline-Block;\n}\n.DropdownBtn {\n\tCursor: Pointer;\n\tBackground: LightGray;\n\tColor: Black;\n}\n.DropdownBody {\n\tDisplay: None;\n\tPosition: Absolute;\n\tWidth: Max-Content;\n\tBackground: White;\n\tBox-Shadow: 0px 8px 8px 0px RGBA(0,0,0,0.2);\n\tZ-Index: 1;\n}\n.DropdownBtn:Hover ~ .DropdownBody,\n.DropdownBody:Hover {\n\tDisplay: Block;\n\tPosition: Absolute;\n}\n.Dropdown Li {\n\tCursor: Pointer;\n\tText-Align: Center;\n}\n.SearchDiv {\n\tWidth: Max-Content;\n}\n.DropdownBtn, Input[Type=\"Text\"] {\n\tFont-Size: Larger;\n}","tags":"","title":"$:/Apps/Dashboard/Style.css","modified":"20221108222437545","type":"text/css"}, {"created":"20230206111434304","creator":"Octt","text":"\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\n{{$:/plugins/kookma/commander/search/ui}}\n\u003C!-- Create the search filter based on searchbox and selective operation (if active) -->\n\u003C$vars searchTerms={{{ [\u003CsearchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\"^\\[\">\u003C!-- this part checks the combo search and selective ops-->\n\u003C$set name=\"filtertext\" filter=\"[\u003CsearchTerms>regexp\u003Cpattern>]\" value=\"[subfilter\u003CsearchTerms>]\" emptyValue=\"[!is[system]search\u003CsearchTerms>]\">\n\u003C$set name=\"searchfilter\" filter=\"[\u003CselectiveOpsTid>get[text]match[yes]]\" \n\tvalue=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]+[tag\u003CworkingTag>]\" emptyValue=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]\" >\n\u003Csmall style=\"margin-left:17ch;\">\u003Ci>\u003C$count filter=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\" /> matches \u003C/i>\u003C/small>\n\n\u003C!-- Display search results and let selective operation -->\n\u003C\u003Ccommander-slider title:\"$:/plugins/kookma/commander/search/selection\" default:\"open\">>\n\n\u003C!-- Display operation UIs-->\n\u003C\u003Ctabs \"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tiddler/ui\">>\n\n\u003C/$set>\n\u003C/$set>\n\u003C$vars>\n\n---\n\n\u003C\u003Ccommander-slider title:\"$:/plugins/kookma/commander/log/ui\">>\n","title":"$:/Commander","icon":"$:/plugins/kookma/commander/images/commander.svg","type":"text/vnd.tiddlywiki","modified":"20230206111436542","modifier":"Octt","tags":"$:/Tools"}, @@ -224,7 +224,7 @@ Error message and password prompt {"created":"20230111212908327","creator":"Octt","text":"\\whitespace trim\n\n\\define iFrame100Style()\nMargin: 0px;\nPadding: 0px;\nWidth: 100vw;\nHeight: 100vh;\n\\end\n\n\\define EmbedFromLine(Link)\n\u003Cp class=\"Embed-From EmbedFrom\">Embed of [[$Link$]]\u003C/p>\n\\end\n\n\\define iFrame(Src, Class:\"iFrameNormal\", Attrs)\n\u003C\u003CEmbedFromLine \"$Src$\">>\n\u003Cinput class=\"NoSelect Checkbox-Btn Embed-Fullscreen-Btn\" type=\"checkbox\" label=\"Fullscreen\"/>\n\u003Clabel class=\"NoSelect Checkbox-Btn Embed-Fullscreen-Btn\">Fullscreen\u003C/label>\n\u003Ciframe class=\"$Class$\" frameborder=\"0\" $Attrs$ src=\"$Src$\">\u003C/iframe>\n\\end\n\n\\define iframe(src, class, attrs) \u003C\u003CiFrame \"$src$\" \"$class$\" \"$attrs$\">>\n\n\\define ^iFrame(Src, FrameClass, Attrs, Title, Heading, DetailsClass) \u003C$macrocall $name=\"Details\" Content=\u003C\u003CiFrame \"$Src$\" \"$FrameClass$\" \"$Attrs$\">> Summary=\"$Title$\" Heading=\"$Heading$\" Class=\"$DetailsClass$\"/>\n\n\\define ^iframe(src, frameclass, attrs, title, heading, detailsClass) \u003C$macrocall $name=\"details\" content=\u003C\u003Ciframe \"$src$\" \"$frameclass$\" \"$attrs$\">> summary=\"$title$\" heading=\"$heading$\" class=\"$detailsclass$\"/>\n\n\\define iFrameFixed(Src, Class:\"iFrameNormal\", Attrs) \u003C\u003CiFrame \"$Src$\" \"$Class$\" 'scrolling=\"no\" $Attrs$'>>\n\n\\define iFrameBypassFixed(Src, Class:\"iFrameNormal\", Attrs) \u003C\u003CiFrameBypass \"$Src$\" \"$Class$\" 'scrolling=\"no\" $Attrs$'>>\n\\define iFrameFixedBypass(Src, Class:\"iFrameNormal\", Attrs) \u003C\u003CiFrameBypass \"$Src$\" \"$Class$\" 'scrolling=\"no\" $Attrs$'>>\n\n\\define iFrameBypass(Src, Class:\"iFrameNormal\", Attrs)\n\u003C\u003CEmbedFromLine \"$Src$\">>\n\u003Ciframe class=\"$Class$\" frameborder=\"0\" $Attrs$ src='\ndata:text/html;utf8,\n\u003C!DOCTYPE html>\n\u003C!-- Code from X-Frame-Bypass: \u003Chttps://github.com/niutech/x-frame-bypass> --->\n\u003Chtml>\n\u003Chead>\n \u003Cstyle>\n html, body { overflow: hidden; }\n html, body, iframe { margin: 0px; padding: 0px; width: 100%; height: 100%; border: none; }\n \u003C/style>\n \u003Cscript src=\"https://octospacc.gitlab.io/pastebin/custom-elements-builtin.0.6.5.min.js\">\u003C/script>\n \u003Cscript src=\"https://octospacc.gitlab.io/pastebin/x-frame-bypass.js\" type=\"module\">\u003C/script>\n\u003C/head>\n\u003Cbody>\u003Ciframe frameborder=\"0\" is=\"x-frame-bypass\" src=\"$Src$\">\u003C/iframe>\u003C/body>\n\u003C/html>\n'>\u003C/iframe>\n\\end\n\n\\define iFrame100(Src)\n\u003C\u003CEmbedFromLine \"$Src$\">>\n\u003Ciframe style=\u003C\u003CiFrame100Style>> frameborder=\"0\" src=\"$Src$\">\u003C/iframe>\n\\end\n\n\\define iFrame100NoScroll(Src)\n\u003C\u003CEmbedFromLine \"$Src$\">>\n\u003Ciframe style=\u003C\u003CiFrame100Style>> frameborder=\"0\" src=\"$Src$\" scrolling=\"no\">\u003C/iframe>\n\\end\n\n\\define iFrame100UriDirect(Src)\n\u003Ciframe style=\u003C\u003CiFrame100Style>> frameborder=\"0\" src=$Src$>\u003C/iframe>\n\\end\n\n\\define iFrame100Tid(Tid)\n\u003C\u003CEmbedFromLine \"$Tid$\">>\n\u003C\u003CiFrame100UriDirect \"\"\"\u003C\u003Cb64TidUriEnc \"$Tid$\">>\"\"\">>\n\\end\n","tags":"$:/tags/Macro","title":"$:/Macros/Frames","modified":"20230221203911149","modifier":"Octt"}, {"created":"20220926113710012","text":"\\define i18n-target()\n\u003C$list filter=\"[[$(currentTiddler)$]tags[]prefix[i18n:]split[:]last[]]\">\n\t\u003Cspan style=\"Padding:8px;\">\n\t\t\u003C\u003CcurrentTiddler>>\n\t\u003C/span>\n\u003C/$list>\n\\end\n\n\\define i18n()\n\u003Cstyle>\n\t/* Rainbow gradient from https://stackoverflow.com/a/63302468 */\n\t.LanguageBox {\n\t\tBorder: Solid Black 1px;\n\t\tPadding: 4px;\n\t\tBackground: Linear-Gradient(\n\t\t\t90deg,\n\t\t\tRGBA(255, 0, 0, 1) 0%,\n\t\t\tRGBA(255, 154, 0, 1) 10%,\n\t\t\tRGBA(208, 222, 33, 1) 20%,\n\t\t\tRGBA(79, 220, 74, 1) 30%,\n\t\t\tRGBA(63, 218, 216, 1) 40%,\n\t\t\tRGBA(47, 201, 226, 1) 50%,\n\t\t\tRGBA(28, 127, 238, 1) 60%,\n\t\t\tRGBA(95, 21, 242, 1) 70%,\n\t\t\tRGBA(186, 12, 248, 1) 80%,\n\t\t\tRGBA(251, 7, 217, 1) 90%,\n\t\t\tRGBA(255, 0, 0, 1) 100%\n\t\t);\n\t}\n\t.LanguageBox > Div {\n\t\tBorder: Solid Black 1px;\n\t\tPadding: 4px;\n\t\tFont-Size: Larger;\n\t\tText-Align: Center;\n\t\tBackground: White;\n\t}\n\u003C/style>\n\u003Cdiv class=\"LanguageBox\">\u003Cdiv>\n\t\u003C$vars id={{!!i18n}}>\n\t\t\u003C$list filter=\"[!is[system]contains:i18n\u003Cid>]\">\n\t\t\t\u003C$link>\n\t\t\t\t\u003C$macrocall $name=\"i18n-target\"/>\n\t\t\t\u003C/$link>\n\t\t\u003C/$list>\n\t\u003C/$vars>\n\u003C/div>\u003C/div>\n\\end","tags":"$:/tags/Macro","title":"$:/Macros/i18n","modified":"20230108195259126"}, {"created":"20220922135257709","text":"\u003C!-- The following code is almost totally derived from [[$:/core/macros/tabs]] --->\n\n\\define ltabs-button()\n\\whitespace trim\n\u003C$button set=\u003C\u003CltabsState>> setTo=\u003C\u003CcurrentTab>> default=\u003C\u003C__default__>> selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}} role=\"switch\">\n\t\u003Cspan> [[#|$(currentTab)$]] \u003C/span>\n\t\u003C$tiddler tiddler=\u003C\u003Csave-currentTiddler>>>\n\t\t\u003C$set name=\"tv-wikilinks\" value=\"no\">\n\t\t\t\u003C$transclude tiddler=\u003C\u003C__buttonTemplate__>> mode=\"inline\">\n\t\t\t\t\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\"caption\">\n\t\t\t\t\t\u003C$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n\t\t\t\t\u003C/$transclude>\n\t\t\t\u003C/$transclude>\n\t\t\u003C/$set>\n\t\u003C/$tiddler>\n\t\u003C\u003C__actions__>>\n\u003C/$button>\n\\end\n\n\\define ltabs-tab()\n\\whitespace trim\n\u003C$set name=\"save-currentTiddler\" value=\u003C\u003CcurrentTiddler>>>\n\t\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\n\t\t\u003C\u003Cltabs-button>>\n\t\u003C/$tiddler>\n\u003C/$set>\n\\end\n\n\\define ltabs-tab-list()\n\\whitespace trim\n\u003C$list filter=\u003C\u003C__ltabsList__>> variable=\"currentTab\" storyview=\"pop\">\n\t\u003C\u003Cltabs-tab>>\n\u003C/$list>\n\\end\n\n\\define ltabs-tab-body()\n\\whitespace trim\n\u003C$list filter=\u003C\u003C__ltabsList__>> variable=\"currentTab\">\n\t\u003C$reveal type=\"match\" state=\u003C\u003CltabsState>> text=\u003C\u003CcurrentTab>> default=\u003C\u003C__default__>> retain=\u003C\u003C__retain__>> tag=\"div\">\n\t\t\u003C$transclude tiddler=\u003C\u003C__template__>> mode=\"block\">\n\t\t\t\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\n\t\t\t\t\u003C$transclude mode=\"block\" />\n\t\t\t\u003C/$tiddler>\n\t\t\u003C/$transclude>\n\t\u003C/$reveal>\n\u003C/$list>\n\\end\n\n\\define ltabs(ltabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n\\whitespace trim\n\u003C$qualify title=\u003C\u003C__state__>> name=\"qualifiedState\">\n\t\u003C$let ltabsState={{{ [\u003C__explicitState__>minlength[1]] ~[\u003CqualifiedState>] }}}>\n\t\t\u003Cdiv class={{{ [[tc-tab-set]addsuffix[ ]addsuffix\u003C__class__>] }}}>\n\t\t\t\u003Cdiv class={{{ [[tc-tab-buttons]addsuffix[ ]addsuffix\u003C__class__>] }}}>\n\t\t\t\t\u003C\u003Cltabs-tab-list>>\n\t\t\t\u003C/div>\n\t\t\t\u003Cdiv class={{{ [[tc-tab-divider]addsuffix[ ]addsuffix\u003C__class__>] }}}/>\n\t\t\t\u003Cdiv class={{{ [[tc-tab-content]addsuffix[ ]addsuffix\u003C__class__>] }}}>\n\t\t\t\t\u003C\u003Cltabs-tab-body>>\n\t\t\t\u003C/div>\n\t\t\u003C/div>\n\t\u003C/$let>\n\u003C/$qualify>\n\\end\n","tags":"$:/tags/Macro","title":"$:/Macros/ltabs","modified":"20220925154754580"}, -{"created":"20220920092322164","creator":"Octt","text":"\\whitespace trim\n\n\u003C!-- Wrap any text in potentially markuppable characters, sanifying markup first -->\n\\define [(Text, L:\"[\", R:\"]\") \u003Cspan>\u003Cspan>$L$\u003C/span>\u003Cspan>$Text$\u003C/span>\u003Cspan>$R$\u003C/span>\u003C/span>\n\n\n\u003C!-- My macro to provide HTML \u003Cdetails> -->\n\n\\define Details(Content, Summary:\"Details\", Heading:\"0\", Class:\"tw-details\")\n\u003Cdetails class=\"$Class$\">\n\u003Csummary>\u003Ch$Heading$>\u003Cstrong>$Summary$\u003C/strong>\u003C/h$Heading$>\u003C/summary>\n$Content$\n\u003C/details>\n\\end\n\n\\define details(content, summary:\"Details\", heading:\"0\", class:\"tw-details\") \u003C\u003CDetails \"$content$\" \"$summary$\" \"$heading$\" \"$class$\">>\n\n\u003C!-- -- -- -->\n\n\n\u003C!-- Transclude with clickable link --->\n\\define #:(Name)\n\u003Cstyle>\n.Transcluding > h1,\n.Transcluding > h2,\n.Transcluding > h3,\n.Transcluding > h4,\n.Transcluding > h5,\n.Transcluding > h6 {\nDisplay: Inline;\n}\n\u003C/style>\n\u003Cdiv class=\"Transcluding\">\n[[#|$Name$]]\n{{$Name$}}\n\u003C/div>\n\\end\n\n\u003C!-- Transclude with tobibeer/inc macro inside an HTML \u003Cdetails> element -->\n\\define {\u003C(Tiddler, Heading:\"0\")\n\u003Cdetails class=\"tw-details\">\n \u003Csummary>\n \u003Ch$Heading$ style=\"display: inline;\">\n ''$Tiddler$''\n \u003C/h$Heading$>\n \u003C/summary>\n \u003C\u003C{ \"$Tiddler$\">>\n\u003C/details>\n\\end\n\\define {^(Tiddler, Heading) \u003C\u003C{\u003C \"$Tiddler$\" \"$Heading$\">>\n\n\u003C!-- Link to currentTiddler --->\n\\define lself() [[$(currentTiddler)$]]\n\\define #lself() [[#|$(currentTiddler)$]]\n\n\u003C!-- Field Checkbox --->\n\\define x#(Field Text)\n\u003C$checkbox field=\"$Field$\" checked=\"true\" unchecked=\"false\" default=\"false\"> $Text$\u003C/$checkbox>\n\\end\n\n\\define Table(Rows) \u003Ctable class=\"Octt-Table\" style=\"Width:100%;\">\u003Cstyle>.Octt-Table tr:nth-child(odd){background-color:#EEEEEE;}\u003C/style>$Rows$\u003C/table>\n\n\\define ColorText(Text Foreground)\n\u003Cspan style=\"Color:$Foreground$;\">$Text$\u003C/span>\n\\end\n\n\\define ColorSpan(Text Background)\n\u003Cspan style=\"Color:#FFFFFF; Background-Color:$Background$;\">$Text$\u003C/span>\n\\end\n\n\\define LImg(Src Href Alt)\n\u003Ca rel=\"noopener noreferrer\" target=\"_blank\" href=\"$Href$\">\u003Cimg src=\"$Src$\" alt=\"$Alt$\">\u003C/a>\n\\end\n\n\\define StrAppend(Str Suffix Prefix) $Prefix$$Str$$Suffix$\n\n\\define iboxL(img, caption) \u003C\u003Cibox \"$img$\" \"$caption$ \u003Cspan>[\u003C/span>$img$\u003Cspan>]\u003C/span>\">>\n","tags":"$:/tags/Macro","title":"$:/Macros/Main","modified":"20230225104620413","modifier":"Octt"}, +{"created":"20220920092322164","creator":"Octt","text":"\\whitespace trim\n\n\u003C!-- Wrap any text in potentially markuppable characters, sanifying markup first -->\n\\define [(Text, L:\"[\", R:\"]\") \u003Cspan>\u003Cspan>$L$\u003C/span>\u003Cspan>$Text$\u003C/span>\u003Cspan>$R$\u003C/span>\u003C/span>\n\n\n\u003C!-- My macro to provide HTML \u003Cdetails> -->\n\n\\define Details(Content, Summary:\"Details\", Heading:\"0\", Class:\"tw-details\")\n\u003Cdetails class=\"$Class$\">\n\u003Csummary>\u003Ch$Heading$>\u003Cstrong>$Summary$\u003C/strong>\u003C/h$Heading$>\u003C/summary>\n$Content$\n\u003C/details>\n\\end\n\n\\define details(content, summary:\"Details\", heading:\"0\", class:\"tw-details\") \u003C\u003CDetails \"$content$\" \"$summary$\" \"$heading$\" \"$class$\">>\n\n\u003C!-- -- -- -->\n\n\n\u003C!-- Transclude with clickable link --->\n\\define #:(Name)\n\u003Cstyle>\n.Transcluding > h1,\n.Transcluding > h2,\n.Transcluding > h3,\n.Transcluding > h4,\n.Transcluding > h5,\n.Transcluding > h6 {\nDisplay: Inline;\n}\n\u003C/style>\n\u003Cdiv class=\"Transcluding\">\n[[#|$Name$]]\n{{$Name$}}\n\u003C/div>\n\\end\n\n\u003C!-- Transclude with tobibeer/inc macro inside an HTML \u003Cdetails> element -->\n\\define {\u003C(Tiddler, Heading:\"0\")\n\u003Cdetails class=\"tw-details\">\n \u003Csummary>\n \u003Ch$Heading$ style=\"display: inline;\">\n ''$Tiddler$''\n \u003C/h$Heading$>\n \u003C/summary>\n \u003C\u003C{ \"$Tiddler$\">>\n\u003C/details>\n\\end\n\\define {^(Tiddler, Heading) \u003C\u003C{\u003C \"$Tiddler$\" \"$Heading$\">>\n\n\u003C!-- Link to currentTiddler --->\n\\define lself() [[$(currentTiddler)$]]\n\\define #lself() [[#|$(currentTiddler)$]]\n\n\u003C!-- Field Checkbox --->\n\\define x#(Field Text)\n\u003C$checkbox field=\"$Field$\" checked=\"true\" unchecked=\"false\" default=\"false\"> $Text$\u003C/$checkbox>\n\\end\n\n\\define Table(Rows) \u003Ctable class=\"Octt-Table\" style=\"Width:100%;\">\u003Cstyle>.Octt-Table tr:nth-child(odd){background-color:#EEEEEE;}\u003C/style>$Rows$\u003C/table>\n\n\\define ColorText(Text Foreground)\n\u003Cspan style=\"Color:$Foreground$;\">$Text$\u003C/span>\n\\end\n\n\\define ColorSpan(Text Background)\n\u003Cspan style=\"Color:#FFFFFF; Background-Color:$Background$;\">$Text$\u003C/span>\n\\end\n\n\\define LImg(Src Href Alt)\n\u003Ca rel=\"noopener noreferrer\" target=\"_blank\" href=\"$Href$\">\u003Cimg src=\"$Src$\" alt=\"$Alt$\">\u003C/a>\n\\end\n\n\\define StrAppend(Str Suffix Prefix) $Prefix$$Str$$Suffix$\n\n\\define iboxL(img, caption) \u003C\u003Cibox \"$img$\" \"$caption$ \u003Cspan>[\u003C/span>[[Source|$img$]]\u003Cspan>]\u003C/span>\">>\n","tags":"$:/tags/Macro","title":"$:/Macros/Main","modified":"20230225143600076","modifier":"Octt"}, {"created":"20230108190340455","creator":"Octt","text":"/*\\\nSee [[$:/Macros/MediaWiki]] for usage of this macro.\nNote: source must always be credited, and thus it's not ideal to use this macro directly. Please use the \u003C\u003CMediaWiki>> wrapper macro instead, as it provides a link to the source automatically. (This feature is implemented in its own non-JS macro to make at least the URL show on static wiki exports.)\n\\*/\n\n(function(){\n\"use strict\";\nexports.name = \"MediaWikiEmbedInternal\";\nexports.params = [\n {name: \"Article\"},\n {name: \"Domain\"},\n {name: \"Sections\"},\n];\n\nexports.run = function(Article, Domain, Sections) {\ntry {\n let Text;\n Sections = parseInt(Sections) || 0;\n Domain = $OcttKB.MediaWiki.MkDomain(Domain);\n const Req = new XMLHttpRequest();\n Req.open('GET', Domain + '/w/api.php?action=query&formatversion=2&prop=extracts&format=json&origin=*&titles=' + Article, false);\n Req.send();\n Text = JSON.parse(Req.responseText).query.pages[0].extract;\n if (!Text) {\n Text = '\u003Cp>An error occurred while trying to extract the content. Close and reopen this \u003Ci>tiddler\u003C/i> to retry, or click the link to open the source in a new tab.\u003C/p>'\n };\n Text = Text.replaceAllTxt('\\n', '').replaceAllTxt('\u003Cp class=\"mw-empty-elt\">\u003C/p>', '');\n if (Sections != 0) {\n for (let i=1; i\u003C=6; i++) {\n Text = Text.replaceAllTxt(`\u003C/p>\u003Ch${i}>`, `\u003C/p>\u003C!--:PARAGRAPH:--->\\n\u003Ch${i}>`);\n };\n Text = Text.replaceAllTxt(`\u003C/p>\u003Cp>`, `\u003C/p>\u003C!--:PARAGRAPH:--->\u003Cp>`);\n //Text = Text.split('\u003C!--:PARAGRAPH:--->').slice(0, Max+1).join('');\n //Text = Text.split('\u003Cp>').slice(0, Max+1).join('\u003Cp>');\n if (Sections \u003C 0) {\n Sections = 0;\n };\n Text = Text.split('\u003C!--:PARAGRAPH:--->').slice(0, Sections).join('');\n //Text += '\u003Cp>[...]\u003C/p>'\n };\n/*\n Sections = Sections.split(' ');\n for (let i=0; i\u003CSections.length; i++) {\n const Sec = Sections[i];\n if (Sec) {\n const Ind = Sec.toLowerCase()[0];\n const Val = Sec.substring(1);\n if (Ind == 'p' || Ind == 's') {\n if (Ind == 'p') {\n const Sep = '\u003C!--:PARAGRAPH:--->';\n } else \n if (Ind == 's') {\n const Sep = '\u003C!--:SECTION:--->';\n };\n Text = Text.split(Sep).slice(0, Val).join('');\n } else\n if (Ind == '#') {\n \n };\n };\n };\n*/\n return Text;\n} catch(e) {\n return $OcttKB.ErrAtLine(e);\n};\n}})();","tags":"","title":"$:/Macros/MediaWiki/EmbedInternal.js","modified":"20230124213837502","type":"application/javascript","module-type":"macro","modifier":"Octt"}, {"created":"20230112154435120","creator":"Octt","text":"/*\\\nGet the cover image from a MediaWiki article.\n[\u003C\u003C]MediaWikiGetCover \"Article\" \"Full Domain OR Wikipedia Subdomain\" \"Manual URL OR NULL\"[>>]\n\\*/\n\n(function(){\n\"use strict\";\nexports.name = \"MediaWikiGetCover\";\nexports.params = [\n {name: \"Article\"},\n {name: \"Domain\"},\n {name: \"URL\"},\n];\n\nexports.run = function(Article, Domain, URL) {\ntry {\n if (!URL || URL && !$OcttKB.Options.Nulls.includes(URL.toLowerCase())) {\n let File;\n Domain = $OcttKB.MediaWiki.MkDomain(Domain);\n const Req = new XMLHttpRequest();\n Req.open('GET', Domain + '/w/api.php?action=query&prop=pageimages&format=json&piprop=original&origin=*&titles=' + Article, false);\n Req.send();\n File = Object.values(JSON.parse(Req.responseText).query.pages)[0];\n if (File && File.original && File.original.source) {\n return `\u003Cimg src=\"${File.original.source}\">`;\n };\n };\n return '';\n} catch(e) {\n return $OcttKB.ErrAtLine(e);\n};\n}})();","tags":"","title":"$:/Macros/MediaWiki/GetCover.js","modified":"20230124213845342","type":"application/javascript","module-type":"macro","modifier":"Octt"}, {"created":"20230110102736164","creator":"Octt","text":"\u003C!--\n[\u003C\u003C]MediaWiki[>>]\n| Embed sections of an article from a MediaWiki server.\n| [\u003C\u003C]MediaWiki \"Article\" \"Full Domain OR Wikipedia Subdomain\" \"Section Filtering\" \"Cover Media\"[>>]\n--->\n\n\\define MediaWiki(Article Domain Sections Cover)\n\u003Cdiv class=\"MediaWikiEmbed MediaWikiEmbedBlock\">\n\u003Cdiv class=\"EmbedFrom MediaWikiEmbedFrom\">\n From \u003C$set name=\"FullDomain\" filter=\"[[$Domain$]regexp[\\.]then[$Domain$]else[$Domain$.Wikipedia.org]]\">\n \u003C$macrocall $name=\"ExtMediaWikiAnchor\" Article=\"$Article$\" Domain=\u003C\u003CFullDomain>>/>\n \u003C/$set>\n\u003C/div>\n\u003Cdiv class=\"MediaWikiEmbedCover\">\n \u003C\u003CMediaWikiGetCover \"$Article$\" \"$Domain$\" \"$Cover$\">>\n\u003C/div>\n\u003Cdiv class=\"MediaWikiEmbedContent\">\n \u003C\u003CMediaWikiEmbedInternal \"$Article$\" \"$Domain$\" \"$Sections$\">>\n\u003C/div>\n\u003C/div>\n\\end\n\n\\define ExtMediaWikiAnchor(Article, Domain) [[$Domain$/$Article$|https://$Domain$/wiki/$Article$]]\n\n\\define WikipediaLink(Article, Subdomain) [[$Article$|https://$Subdomain$.wikipedia.org/wiki/$Article$]]\n\\define WikipediaLink-(Article, Subdomain) [[$Article$ - Wikipedia|https://$Subdomain$.wikipedia.org/wiki/$Article$]]\n\n\u003C!--\n\u003Ca href={{{[[$Article$]search-replace:g[ ],[_]prepend[https://$Subdomain$.wikipedia.org/]]}}}>$Article$\u003C/a>\n-->\n\n\\define WikipediaFrame(Article, Subdomain:\"en\")\n\u003C\u003CiFrame \"https://$Subdomain$.m.wikipedia.org/wiki/$Article$\">>\n\\end\n\\define wikipediaframe(Article, Subdomain) \u003C\u003CWikipediaFrame \"$Article$\" \"$Subdomain$\">>\n\n\\define ^WikipediaFrame(Article, Subdomain, Title:\"Wikipedia\")\n\u003Cdetails class=\"tw-details\">\n \u003Csummary>\u003Cstrong>$Title$\u003C/strong>\u003C/summary>\n \u003C\u003CWikipediaFrame \"$Article$\" \"$Subdomain$\">>\n\u003C/details>\n\\end\n\\define ^wikipediaframe(Article, Subdomain, Title) \u003C\u003C^WikipediaFrame \"$Article$\" \"$Subdomain$\" \"$Title$\">>\n","tags":"$:/tags/Macro","title":"$:/Macros/MediaWiki/Main","modified":"20230218213028496","modifier":"Octt"}, @@ -345,7 +345,7 @@ Error message and password prompt {"created":"20221109144756834","title":"$:/state/add-plugin-info/$:/temp/ServerConnection/https://tobibeer.github.io/tw5-plugins/library/index.html/$:/temp/RemoteAssetInfo/https://tobibeer.github.io/tw5-plugins/library/index.html/$:/plugins/tobibeer/split","text":"yes","modified":"20230116211830913"}, {"created":"20221109162512951","title":"$:/state/add-plugin-info/$:/temp/ServerConnection/https://tobibeer.github.io/tw5-plugins/library/index.html/$:/temp/RemoteAssetInfo/https://tobibeer.github.io/tw5-plugins/library/index.html/$:/plugins/tobibeer/value","text":"no","modified":"20230108200106539"}, {"created":"20221109142817793","creator":"Octt","title":"$:/state/addplugins/tab-1342078386","text":"$:/config/OfficialPluginLibrary","modified":"20230219212336934","modifier":"Octt"}, -{"created":"20230109143853256","creator":"Octt","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Shadows","modified":"20230219113027541","modifier":"Octt"}, +{"created":"20230109143853256","creator":"Octt","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/System","modified":"20230225142154702","modifier":"Octt"}, {"created":"20230203222356189","creator":"Octt","title":"$:/state/commander/log-tiddler","text":"$:/temp/commander/logs/tid-1","modified":"20230207221707250","modifier":"Octt"}, {"created":"20230117113820190","creator":"Octt","title":"$:/state/commander/reveal/$:/plugins/kookma/commander/search/selection-668442618","text":"open","modified":"20230206203755250","modifier":"Octt"}, {"created":"20230203222519483","creator":"Octt","title":"$:/state/commander/snr/select-tiddler","text":"","modified":"20230209170836660","modifier":"Octt"}, @@ -453,15 +453,15 @@ Error message and password prompt {"created":"20230218113830823","creator":"Octt","title":"$:/state/plugin-info-496662381-$:/languages/it-IT","text":"no","modified":"20230218114059177","modifier":"Octt"}, {"created":"20220920140732083","creator":"Octt","title":"$:/state/showeditpreview","text":"no","modified":"20230225112533416","modifier":"Octt"}, {"created":"20220920114858684","title":"$:/state/ShowPaletteEditor","text":"yes","modified":"20220920114858684"}, -{"created":"20220920174307633","creator":"Octt","title":"$:/state/sidebar","text":"yes","modified":"20230219193454387","modifier":"Octt"}, +{"created":"20220920174307633","creator":"Octt","title":"$:/state/sidebar","text":"yes","modified":"20230225143501442","modifier":"Octt"}, {"created":"20220922115715109","creator":"Octt","title":"$:/state/tab--1091387428","text":"$:/Octt/Music Archiving Status/Android52","modified":"20230225114340686","modifier":"Octt"}, {"created":"20230209145707201","creator":"Octt","title":"$:/state/tab--1421386850","text":"$:/core/ui/TiddlerInfo/Tools","modified":"20230209145717889","modifier":"Octt"}, {"created":"20230217120532762","creator":"Octt","title":"$:/state/tab--1440231522","text":"$:/plugins/tiddlywiki/text-slicer/docs/usage","modified":"20230217120533957","modifier":"Octt"}, -{"created":"20230109143853256","creator":"Octt","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Shadows","modified":"20230219113027544","modifier":"Octt"}, +{"created":"20230109143853256","creator":"Octt","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/System","modified":"20230225142154703","modifier":"Octt"}, {"created":"20230117125310625","creator":"Octt","title":"$:/state/tab--1581376822","text":"$:/plugins/flibbles/relink/ui/TiddlerInfo/References","modified":"20230117125313877","modifier":"Octt"}, {"created":"20230110152826768","title":"$:/state/tab--1588928600","text":"$:/core/ui/TiddlerInfo/Fields","modified":"20230110152833719"}, {"created":"20220920191426046","title":"$:/state/tab--1885964178","text":"$:/core/ui/TiddlerInfo/Tools","modified":"20220920191431231"}, -{"created":"20220920090533937","creator":"Octt","title":"$:/state/tab--1963855381","text":"$:/themes/tiddlywiki/vanilla/themetweaks","modified":"20230208220041794","modifier":"Octt"}, +{"created":"20220920090533937","creator":"Octt","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/StoryView","modified":"20230225151254003","modifier":"Octt"}, {"created":"20220920090438306","creator":"Octt","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Advanced","modified":"20230218224757071","modifier":"Octt"}, {"created":"20230110215945671","title":"$:/state/tab--257319936","text":"$:/core/ui/TiddlerInfo/References","modified":"20230110215951590"}, {"created":"20230124112758912","creator":"Octt","title":"$:/state/tab--639260661","text":"$:/core/ui/ControlPanel/Plugins/Add/Plugins","modified":"20230215182507150","modifier":"Octt"}, @@ -471,7 +471,7 @@ Error message and password prompt {"created":"20220920090443750","title":"$:/state/tab--959111941","text":"$:/core/ui/ControlPanel/Cascades","modified":"20220921221337899"}, {"created":"20220922140851532","title":"$:/state/tab-1087611455","text":"Music Archiving Status/marsy","modified":"20220922212223216"}, {"created":"20230203222331010","creator":"Octt","title":"$:/state/tab-1410043539","text":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags","modified":"20230207221424319","modifier":"Octt"}, -{"created":"20220920090405977","creator":"Octt","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Plugins","modified":"20230218232113616","modifier":"Octt"}, +{"created":"20220920090405977","creator":"Octt","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Appearance","modified":"20230225151250314","modifier":"Octt"}, {"created":"20230110215926447","title":"$:/state/tab-1754034960","text":"$:/core/ui/TiddlerInfo/References","modified":"20230110215935623"}, {"created":"20220922151106305","title":"$:/state/tab-2025781229","text":"Music Archiving Status/Android52","modified":"20220922151357705"}, {"created":"20220920091923734","creator":"Octt","title":"$:/state/tab-2065006209","text":"$:/core/ui/ControlPanel/Saving/General","modified":"20230216120731811","modifier":"Octt"}, @@ -484,11 +484,11 @@ Error message and password prompt {"created":"20230110152841020","title":"$:/state/tab-914888664","text":"$:/core/ui/TiddlerInfo/References","modified":"20230110152841020"}, {"created":"20220921221238452","creator":"Octt","title":"$:/state/tab-99014043","text":"$:/core/ui/ControlPanel/TiddlerIcon","modified":"20230218224826352","modifier":"Octt"}, {"created":"20220920114911876","creator":"Octt","title":"$:/state/tab/moresidebar-1850697562","text":"$:/core/ui/MoreSideBar/Explorer","modified":"20230219110733044","modifier":"Octt"}, -{"created":"20220920092307479","creator":"Octt","title":"$:/state/tab/sidebar--595412856","text":"OcttKB/Index","modified":"20230225114347729","modifier":"Octt"}, +{"created":"20220920092307479","creator":"Octt","title":"$:/state/tab/sidebar--595412856","text":"$:/core/ui/SideBar/Recent","modified":"20230225151313132","modifier":"Octt"}, {"created":"20220920114638764","creator":"Octt","title":"$:/state/tabs/controlpanel/toolbars-1345989671","text":"$:/core/ui/ControlPanel/Toolbars/PageControls","modified":"20230128224606306","modifier":"Octt"}, {"created":"20230109231545587","text":"inline","title":"$:/state/tag-cloud-count","modified":"20230109231831243"}, -{"created":"20230221195052164","creator":"Octt","title":"$:/state/toc/$:/ToC-$:/Apps-747701490","text":"close","modified":"20230225113535748","modifier":"Octt"}, -{"created":"20230225112101049","creator":"Octt","title":"$:/state/toc/$:/ToC-$:/Games-747701490","text":"open","modified":"20230225114604935","modifier":"Octt"}, +{"created":"20230221195052164","creator":"Octt","title":"$:/state/toc/$:/ToC-$:/Apps-747701490","text":"close","modified":"20230225151202843","modifier":"Octt"}, +{"created":"20230225112101049","creator":"Octt","title":"$:/state/toc/$:/ToC-$:/Games-747701490","text":"open","modified":"20230225151203292","modifier":"Octt"}, {"created":"20230217211142634","creator":"Octt","title":"$:/state/toc/$:/ToC-$:/Tools--685112640","text":"close","modified":"20230217211145890","modifier":"Octt"}, {"created":"20230209170208575","creator":"Octt","title":"$:/state/toc/$:/ToC-$:/Tools-747701490","text":"close","modified":"20230225114604226","modifier":"Octt"}, {"created":"20230217211203481","creator":"Octt","title":"$:/state/toc/$:/ToC-Octt--685112640","text":"close","modified":"20230217211209586","modifier":"Octt"}, @@ -496,6 +496,7 @@ Error message and password prompt {"created":"20230209095802817","creator":"Octt","title":"$:/state/toc/$:/ToC-OcttKB-550494662","text":"close","modified":"20230219155017222","modifier":"Octt"}, {"created":"20230209164056660","creator":"Octt","title":"$:/state/toc/$:/ToC-OcttKB-747701490","text":"close","modified":"20230223220712389","modifier":"Octt"}, {"created":"20230209095658308","creator":"Octt","title":"$:/state/toc/$:/ToC-Spacc-747701490","text":"close","modified":"20230225113549861","modifier":"Octt"}, +{"created":"20230225144236373","creator":"Octt","title":"$:/state/toc/$:/ToC/$:/Games-Tetris-747701490","text":"close","modified":"20230225144244955","modifier":"Octt"}, {"created":"20230217211205809","creator":"Octt","title":"$:/state/toc/$:/ToC/Octt-OcttKB--685112640","text":"close","modified":"20230217211208921","modifier":"Octt"}, {"created":"20230219155752804","creator":"Octt","title":"$:/state/toc/$:/ToC/Octt-OcttKB-747701490","text":"close","modified":"20230219155753687","modifier":"Octt"}, {"created":"20230209095610578","creator":"Octt","title":"$:/state/toc/$:/ToC/Octt-Spacc-747701490","text":"close","modified":"20230209095612109","modifier":"Octt"}, @@ -513,7 +514,7 @@ Error message and password prompt {"created":"20230110224516936","title":"$:/state/tree/$:/.tb/","text":"show","modified":"20230110224516936"}, {"created":"20230110224517512","title":"$:/state/tree/$:/.tb/macros/","text":"show","modified":"20230110224517512"}, {"created":"20221109225835632","title":"$:/state/tree/$:/Apps/","text":"hide","modified":"20230110163406585"}, -{"created":"20221109225836608","title":"$:/state/tree/$:/Apps/Dashboard/","text":"hide","modified":"20230110163405409"}, +{"created":"20221109225836608","creator":"Octt","title":"$:/state/tree/$:/Apps/Dashboard/","text":"hide","modified":"20230225144041923","modifier":"Octt"}, {"created":"20221107223501670","creator":"Octt","title":"$:/state/tree/$:/boot/","text":"hide","modified":"20230225111138843","modifier":"Octt"}, {"created":"20221107223451478","creator":"Octt","title":"$:/state/tree/$:/config/","text":"hide","modified":"20230219111430412","modifier":"Octt"}, {"created":"20230110224406161","creator":"Octt","title":"$:/state/tree/$:/Config/","text":"hide","modified":"20230124111914349","modifier":"Octt"}, @@ -627,17 +628,18 @@ Error message and password prompt {"created":"20220920211944968","text":"{{$:/OcttKB/StaticBanner}}","tags":"","title":"$:/StaticBanner","modified":"20230112221911675"}, {"title":"$:/status/RequireReloadDueToPluginChange","text":"no"}, {"created":"20230117123049592","creator":"O","title":"$:/status/UserName","text":"Octt","modified":"20230117123050206","modifier":"Oct"}, -{"title":"$:/StoryList","created":"20230225103455996","creator":"Octt","text":"","list":"","modified":"20230225114355085","modifier":"Octt"}, +{"title":"$:/StoryList","created":"20230225140144043","creator":"Octt","text":"","list":"","modified":"20230225151324876","modifier":"Octt"}, {"created":"20230114161404958","text":"/*\\\nCredits: 1337box by Leah Rowe, Creative Commons Zero 1.0\nInfo: \u003Chttps://vimuser.org/1337box.html>\n\\*/\n.f, .f * {\n position: fixed;\n max-width: 100%;\n max-height: 100%;\n top: 50%;\n left: 50%\n}\n.f * { transform: translate(-50%,-50%) }\n.f {\n display: none;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 999;\n background:rgba(0,0,0,0.8);\n}\n*:focus + .f { display:block; }\nimg { cursor:pointer; }\n","title":"$:/Styles/1337box/shadow.css","modified":"20230114163044372","type":"text/css","tags":""}, {"created":"20230124224040783","creator":"Octt","text":"\u003C!-- Original image is by \u003Chttps://bilibili.com> -->\n\u003C!-- \u003Cdiv -->\n\u003Ca\nclass=\"bilibili-back-to-top\"\ntitle=\"Cute little lolis from bilibili to help you reach the top of the page...\"\nstyle=\"\n\ndisplay: block; \nposition: fixed;\n/*\nbottom: 100px;\nright: 20px;\n*/\nz-index: 9999;\nbottom: 2px;\nleft: 2px;\ntransform: translateY(0px);\nwidth: 62px;\nheight: 85px;\n/*\nmargin-left: 602px;\n*/\ntransform: scale(0.5);\ncursor: pointer;\nbackground-image: url(https://s1.hdslb.com/bfs/static/jinkela/space/assets/space-to-top.png);\nbackground-position: -40px -44px;\n\n\" href=\"javascript:(function(){\n\nvar Select = [\n '.tc-story-river > .story-backdrop',\n '.tc-sidebar-scrollable .tc-sidebar-header .tc-site-title',\n];\nfor (var i=0; i \u003C Select.length; i++) {\n var Elem = document.querySelectorAll(Select[i])[0];\n Elem.scrollIntoView({behavior: 'smooth'});\n};\n/*alert('TODO animation');*/\n\n})();\">\u003C/a>\n\u003C!--\n\" onclick=\"\n\">\u003C/div>\n-->","tags":"$:/tags/AboveStory","title":"$:/Styles/bilibili-back-to-top.html","modified":"20230218174510343","modifier":"Octt"}, -{"created":"20230126091040410","creator":"Octt","text":".tc-story-river > .tc-tiddler-frame .tc-tiddler-title .tc-title { display: none; }\n\n.tc-story-river > .tc-tiddler-frame > .View-Breadcrumbs {\n opacity: 0.80;\n/*\n font-size: xx-large;\n margin-top: 0px;\n margin-bottom: -1.5em;\n position: sticky;\n z-index: 512;\n*/\n}\n.tc-story-river > .tc-tiddler-frame:not(.tc-tiddler-missing) > .View-Breadcrumbs > * {\n /*font-style: normal !important;*/\n opacity: 0.40;\n}\n.tc-story-river > .tc-tiddler-frame:not(.tc-tiddler-missing) > .View-Breadcrumbs:hover > * { opacity: 0.80; }\n.tc-story-river > .tc-tiddler-frame .View-Breadcrumbs > .Inline-Icon > * {\n width: 1em;\n height: 1em;\n vertical-align: top;\n}\n\n/*.View-Breadcrumbs { display: inline-flex; }*/\n\n/*.View-Breadcrumbs > .Inline-Sep:not(.View-Breadcrumbs > .Inline-Sep:last-of-type):before*/\n.View-Breadcrumbs > .Inline-Sep { padding-left: 0.3em; padding-right: 0.3em; }\n.View-Breadcrumbs > .Inline-Sep:after { content: '>'; font-size: smaller; }\n.View-Breadcrumbs > .Inline-Sep > span { font-size: 0px; }\n\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] > a,\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] + .Inline-Sep\n{ color: gray; padding-left: 0em; }\n\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] + .Inline-Sep:after { content: ''; }\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] + .Inline-Sep > span { font-size: revert; font-size: smaller; }\n\n.View-Breadcrumbs > .Path-Elem:last-of-type { cursor: pointer; }\n.View-Breadcrumbs details { display: inline; vertical-align: top; }\n.View-Breadcrumbs details > summary { list-style: none; }\n.View-Breadcrumbs details > .tc-tree { font-size: initial; line-height: 1rem; }\n.View-Breadcrumbs details > .tc-tree > span { display: none; }\n","title":"$:/Styles/Breadcrumbs.css","modified":"20230218112250212","modifier":"Octt","type":"text/css","tags":"$:/tags/Stylesheet"}, +{"created":"20230126091040410","creator":"Octt","text":".tc-story-river > .tc-tiddler-frame .tc-tiddler-title .tc-title { display: none; }\n\n.tc-story-river > .tc-tiddler-frame > .View-Breadcrumbs {\n opacity: 0.80;\n/*\n font-size: xx-large;\n margin-top: 0px;\n margin-bottom: -1.5em;\n position: sticky;\n z-index: 512;\n*/\n}\n.tc-story-river > .tc-tiddler-frame:not(.tc-tiddler-missing) > .View-Breadcrumbs > * {\n /*font-style: normal !important;*/\n opacity: 0.40;\n}\n.tc-story-river > .tc-tiddler-frame:not(.tc-tiddler-missing) > .View-Breadcrumbs:hover > * { opacity: 0.80; }\n.tc-story-river > .tc-tiddler-frame .View-Breadcrumbs > .Inline-Icon > * {\n width: 1em;\n height: 1em;\n vertical-align: top;\n}\n\n/*.View-Breadcrumbs { display: inline-flex; }*/\n\n/*.View-Breadcrumbs > .Inline-Sep:not(.View-Breadcrumbs > .Inline-Sep:last-of-type):before*/\n.View-Breadcrumbs > .Inline-Sep { padding-left: 0.3em; padding-right: 0.3em; }\n.View-Breadcrumbs > .Inline-Sep:after { content: '>'; font-size: smaller; }\n.View-Breadcrumbs > .Inline-Sep > span { font-size: 0px; }\n\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] > a,\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] + .Inline-Sep\n{ color: gray; padding-left: 0em; }\n\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] + .Inline-Sep:after { content: ''; }\n.View-Breadcrumbs > .Path-Elem[data-path-elem=\"$:\"] + .Inline-Sep > span { font-size: revert; font-size: smaller; }\n\n.View-Breadcrumbs > .Path-Elem:last-of-type { cursor: pointer; }\n.View-Breadcrumbs details { display: inline; vertical-align: top; }\n\n.tc-static-story-river > .tc-tiddler-frame > .tc-tiddler-title details > summary,\n.View-Breadcrumbs details > summary {\n list-style: none;\n}\n\n.tc-static-story-river > .tc-tiddler-frame > .tc-tiddler-title details > .tc-tree,\n.View-Breadcrumbs details > .tc-tree {\n font-size: initial; line-height: 1rem;\n}\n\n.tc-static-story-river > .tc-tiddler-frame > .tc-tiddler-title details > .tc-tree > span,\n.View-Breadcrumbs details > .tc-tree > span {\n display: none;\n}\n","title":"$:/Styles/Breadcrumbs.css","modified":"20230225145707760","modifier":"Octt","type":"text/css","tags":"$:/tags/Stylesheet"}, {"created":"20230112154615238","creator":"Octt","text":"\\define --HeadingColor0() #c061cb;\n\n.iFrameNormal, .iFrame100 {\n Margin: 0px;\n Padding: 0px;\n Background: #eeeeff/*#ddddff*/;\n Width: 100vw;\n}\n.iFrameNormal { Height: 90vh; }\n.iFrame100 { Height: 100vh; }\n\n.MediaWikiEmbed, .MediaWikiEmbedBlock {\n Border-Left: 4px Solid \u003C\u003C--HeadingColor0>>;\n Padding-Left: 1em /*8px*/;\n}\n\n.MediaWikiEmbedCover { float: right; }\n.MediaWikiEmbedCover > * { max-height: 35vh /*50vh*/; }\n\n.EmbedFrom, .Embed-From,\n.MediaWikiEmbed-From, .MediaWikiEmbedFrom {\n Font-Size: Smaller;\n Font-Style: Italic;\n /* Don't make the link go over the \"fullscreen\" checkbox+label */\n max-width: calc(100% - 9em);\n}\n\n/* input.Checkbox-Btn:after { content: attr(label); } */\n\n.Embed-Fullscreen-Btn { float: right; font-style: revert; margin-top: -2em; }\nlabel.Embed-Fullscreen-Btn { margin-right: 2.5em; }\ninput.Embed-Fullscreen-Btn { width: 2em; height: 2em; }\n\n/* TODO: Different top: positioning based on if mobile or desktop view is active, and if sidebar is open or closed (2em for mobile and sidebar closed, ~0.64em for the rest) */\ninput.Embed-Fullscreen-Btn:checked,\ninput.Embed-Fullscreen-Btn:checked ~ label,\ninput.Embed-Fullscreen-Btn:checked ~ iframe\n{ position: absolute; z-index: 99999; top: 2em/*0.64em*/; right: 0px; }\n\ninput.Embed-Fullscreen-Btn:checked ~ iframe {\n height: calc(100vh - 2em);\n left: 0px;\n right: unset;\n min-width: calc(100vw - 40px);\n}\n","tags":"$:/tags/Stylesheet","title":"$:/Styles/Embed","modified":"20230225112834333","modifier":"Octt"}, {"created":"20230130151417995","creator":"Octt","text":".NoDisplay { display: none; }\n\n.NoSelect {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tUser-Select: none;\n}\n","title":"$:/Styles/Global.css","modified":"20230130151526950","modifier":"Octt","tags":"$:/tags/Stylesheet","type":"text/css"}, {"created":"20230219153505142","creator":"Octt","text":"\u003C!-- Code originally from \u003Chttps://linkstyle.tiddlyspot.com/>, adapted by me to work just with icons -->\n\n\u003C!-- Notes: \n - Anchor classes are selected via strict HTML attributes to avoid things like custom buttons from being stylized where they shouldn't; we will then need another rule to look for an explicit class to stylize other elements\n - Currently this assumes that the icon field of a tiddler can only have an emoji, never an image URL\n-->\n\n\\define linkstyle()\n\u003C$set name=\"uri\" value=\u003C\u003Cmakedatauri \"\"\"$(tid)$\"\"\" \"text/plain\">> >\n\u003C$list variable=\"urititle\" filter=\"\"\"[\u003Curi>removeprefix[data:text/plain,]]\"\"\">\n\u003Cstyle>\na[href=\"#\u003C\u003Curititle>>\"][class='tc-tiddlylink tc-tiddlylink-resolves']:after { content: ' \u003C\u003Cicon>>'; }\n\u003C/style>\n\u003C/$list>\n\u003C/$set>\n\\end\n\n\u003C$list filter=\"\"\"[has[linkstyle]] [has[linkstyle-before]] [has[linkstyle-after]] [has[icon]]\"\"\">\n\u003C$vars tid={{!!title}} icon={{!!icon}}>\n\u003C\u003Clinkstyle>>\n\u003C/$vars>\n\u003C/$list>","tags":"$:/tags/Stylesheet","title":"$:/Styles/LinkIcon","modified":"20230219191248808","modifier":"Octt"}, -{"created":"20230108190740128","creator":"Octt","text":"\\define --HeadingColor0() #c061cb;\n\n\\define sidebarbreakpoint()\n\u003C$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n\u003C$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n\u003C$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n\u003C/$reveal>\n\u003C/$reveal>\n\\end\n\n/* Override the font used for icon display by the the \u003C$:/plugins/Gk0Wk/notionpage-covericon> plugin, and then also apply it to the :after of .tc-tiddlylink anchors, for consistency.\nWe override adding a \"sans-serif\" to the start due to a spacing bug (?) */\n.gk0wk-notionpagebg-icon1,\n.gk0wk-notionpagebg-icon2,\na[class='tc-tiddlylink tc-tiddlylink-resolves']:after {\n font-family: sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", NotoColorEmoji, \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", EmojiSymbols;\n}\n\n/* Definition lists */\ndd:before { content: 'ยป'; margin-right: 8px; vertical-align: top; }\ndl { margin-left: 8px; }\ndl > dd { margin-left: 24px; }\ndl > dd > div {\n display: inline-block;\n max-width: calc(100% - 1.5em);\n}\ndl > dd > div > ul, dl > dd > div > ol {\n padding-left: 1.5em/*1em*/;\n}\ndiv:not(.tc-tiddler-body) > dl > dt { margin-top: unset; }\n\n/* Mobile */\n@media (max-width: \u003C\u003Csidebarbreakpoint>>) {\n .tc-sidebar-scrollable .tc-sidebar-header { padding-top: 0px; }\n}\n\n/* Desktop */\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\n .tc-sidebar-scrollable {\n padding-left: 0px;\n padding-right: 0px;\n }\n .tc-story-river {\n padding: {{$:/Config/OcttKB/Tweaks/Starlight/.tc-story-river Padding}};\n }\n .tc-tiddler-frame {\n padding: 20px /*24px 32px 24px 32px*/;\n margin-bottom: 20px;\n }\n\n\u003C\u003Cif-fluid-fixed text:\"\"\"\n .tc-story-river {\n margin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n }\n\"\"\" hiddenSidebarText:\"\"\"\n .tc-story-river {\n margin-right: 0px;\n padding-right: 24px;\n }\n\"\"\">>\n}\n\nDiv.View-Breadcrumbs\n{ margin: 4px; padding: 4px; }\n\n/* Inserting HTML content with tag $:/tags/AboveStory causes excess padding on top of the story river; Setting display none breaks that HTML, so we just tweak position */ \n.tc-page-container .tc-story-river > .story-backdrop { position: absolute; }\n\n\n/* Reduce top padding of sidebar */\n.tc-sidebar-scrollable { padding-top: 12px; }\n.tc-sidebar-scrollable .tc-sidebar-header .tc-reveal .tc-site-subtitle { padding-right: 4em; }\n\n.tc-story-river { padding-bottom: 0px; }\n.tc-story-river ~ p { display: none; }\n\n.tc-tiddler-frame,\n.tc-tiddler-body p iframe {\n Box-Shadow: 2px 2px 12px RGBA(128, 128, 128, 0.5);\n}\n\n.tc-tiddler-body p iframe { Border: None; }\n.tc-tiddler-frame { border-radius: 4px; }\n.tc-modal-body { max-height: 75vh /*60vh*/; }\n\n.tc-sidebar-scrollable .tc-sidebar-tabs-main .tc-more-sidebar .tc-tab-content { overflow: visible; }\n\n/* Large tag selection menu, optimized for desktop + nicer tag button */\n.tc-edit-tags .tc-edit-add-tag .tc-block-tags-dropdown {\n position: revert;\n white-space: revert;\n}\n.tc-edit-tags .tc-edit-add-tag .tc-block-tags-dropdown a {\n display: inline-block;\n border-radius: 1em;\n}\n\n.DirList-Title, .DirList-Title * { Font-Style: Normal !Important; }\n.Separator-Right:last-of-type { Display: None; }\n\n.StartHere-Button {\n font-size: x-large /*smaller*/;\n text-decoration: none !important;\n user-select: none;\n}\n.StartHere-Button > img {\n width: 122px;\n image-rendering: pixelated;\n}\n.StartHere-Button > span {\n position: relative;\n top: -20px /*-10px*/;\n}\n\nImg.Img90, .Img90 Img {\n Max-Width: 90%;\n Max-Height: 90vh;\n}\n\n.tc-sidebar-scrollable .tc-sidebar-header .tc-page-controls .tc-popup .tc-drop-down { min-width: auto; }\n\n.tc-story-river > .tc-tiddler-frame .tc-subtitle { margin: 4px; padding: 4px; }\n\n/* Customized sidebar button */\n.tc-topbar.tc-topbar-right {\n bottom: 10px;\n right: 10px;\n top: unset;\n}\n.tc-topbar.tc-topbar-right > button {\n background: RGBA(0,0,0,0.64);\n border-radius: 4px;\n}\n.tc-topbar.tc-topbar-right > button > svg > g { fill: white; }\n\ndetails.tw-details > summary > * { display: inline; }\n\ninput[type=\"range\"] { min-width: 8em; }\n\ninput.Edit-Text-Full { width: 100% !important; }\n\n.tc-tiddler-body details:hover {\n Box-Shadow: 2px 2px 12px RGBA(128, 128, 128, 0.5);\n}\n.tc-tiddler-body details:hover > iframe {\n Box-Shadow: none;\n}\n\n.tc-tiddler-body ul:hover,\n.tc-tiddler-body ol:hover,\n.tc-tiddler-body dd:hover {\n Box-Shadow: 2px 2px 12px RGBA(128, 128, 128, 0.5);\n padding-top: 4px;\n padding-bottom: 4px;\n padding-right: 4px;\n}\nul, ol, dd { transition: 0.3s; }\n","tags":"$:/tags/Stylesheet","title":"$:/Styles/Main","modified":"20230219193451533","modifier":"Octt"}, +{"created":"20230108190740128","creator":"Octt","text":"\\define --HeadingColor0() #c061cb;\n\n\\define sidebarbreakpoint()\n\u003C$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n\u003C$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n\u003C$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n\u003C/$reveal>\n\u003C/$reveal>\n\\end\n\n/* Override the font used for icon display by the the \u003C$:/plugins/Gk0Wk/notionpage-covericon> plugin, and then also apply it to the :after of .tc-tiddlylink anchors, for consistency.\nWe override adding a \"sans-serif\" to the start due to a spacing bug (?) */\n.gk0wk-notionpagebg-icon1,\n.gk0wk-notionpagebg-icon2,\na[class='tc-tiddlylink tc-tiddlylink-resolves']:after {\n font-family: sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", NotoColorEmoji, \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", EmojiSymbols;\n}\n\n/* Definition lists */\ndd:before { content: 'ยป'; margin-right: 8px; vertical-align: top; }\ndl { margin-left: 8px; }\ndl > dd { margin-left: 24px; }\ndl > dd > div {\n display: inline-block;\n max-width: calc(100% - 1.5em);\n}\ndl > dd > div > ul, dl > dd > div > ol {\n padding-left: 1.5em/*1em*/;\n}\ndiv:not(.tc-tiddler-body) > dl > dt { margin-top: unset; }\n\n/* Mobile */\n@media (max-width: \u003C\u003Csidebarbreakpoint>>) {\n .tc-sidebar-scrollable .tc-sidebar-header { padding-top: 0px; }\n}\n\n/* Desktop */\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\n .tc-sidebar-scrollable {\n padding-left: 0px;\n padding-right: 0px;\n }\n .tc-story-river {\n padding: {{$:/Config/OcttKB/Tweaks/Starlight/.tc-story-river Padding}};\n }\n .tc-tiddler-frame {\n padding: 20px /*24px 32px 24px 32px*/;\n margin-bottom: 20px;\n }\n\n\u003C\u003Cif-fluid-fixed text:\"\"\"\n .tc-story-river {\n margin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n }\n\"\"\" hiddenSidebarText:\"\"\"\n .tc-story-river {\n margin-right: 0px;\n padding-right: 24px;\n }\n\"\"\">>\n}\n\nDiv.View-Breadcrumbs\n{ margin: 4px; padding: 4px; }\n\n/* Inserting HTML content with tag $:/tags/AboveStory causes excess padding on top of the story river; Setting display none breaks that HTML, so we just tweak position */ \n.tc-page-container .tc-story-river > .story-backdrop { position: absolute; }\n\n\n/* Reduce top padding of sidebar */\n.tc-sidebar-scrollable { padding-top: 12px; }\n.tc-sidebar-scrollable .tc-sidebar-header .tc-reveal .tc-site-subtitle { padding-right: 4em; }\n\n.tc-story-river { padding-bottom: 0px; }\n.tc-story-river ~ p { display: none; }\n\n.tc-tiddler-frame,\n.tc-tiddler-body p iframe {\n Box-Shadow: 2px 2px 12px RGBA(128, 128, 128, 0.5);\n}\n\n.tc-tiddler-body p iframe { Border: None; }\n.tc-tiddler-frame { border-radius: 4px; }\n.tc-modal-body { max-height: 75vh /*60vh*/; }\n\n.tc-sidebar-scrollable .tc-sidebar-tabs-main .tc-more-sidebar .tc-tab-content { overflow: visible; }\n\n/* Large tag selection menu, optimized for desktop + nicer tag button */\n.tc-edit-tags .tc-edit-add-tag .tc-block-tags-dropdown {\n position: revert;\n white-space: revert;\n}\n.tc-edit-tags .tc-edit-add-tag .tc-block-tags-dropdown a {\n display: inline-block;\n border-radius: 1em;\n}\n\n.DirList-Title, .DirList-Title * { Font-Style: Normal !Important; }\n.Separator-Right:last-of-type { Display: None; }\n\n.StartHere-Button {\n font-size: x-large /*smaller*/;\n text-decoration: none !important;\n user-select: none;\n}\n.StartHere-Button > img {\n width: 122px;\n image-rendering: pixelated;\n}\n.StartHere-Button > span {\n position: relative;\n top: -20px /*-10px*/;\n}\n\nImg.Img90, .Img90 Img {\n Max-Width: 90%;\n Max-Height: 90vh;\n}\n\n.tc-sidebar-scrollable .tc-sidebar-header .tc-page-controls .tc-popup .tc-drop-down { min-width: auto; }\n\n.tc-story-river > .tc-tiddler-frame .tc-subtitle { margin: 4px; padding: 4px; }\n\n/* Customized sidebar button */\n.tc-topbar.tc-topbar-right {\n bottom: 10px;\n right: 10px;\n top: unset;\n}\n.tc-topbar.tc-topbar-right > button {\n background: RGBA(0,0,0,0.64);\n border-radius: 4px;\n}\n.tc-topbar.tc-topbar-right > button > svg > g { fill: white; }\n\ndetails.tw-details > summary > * { display: inline; }\n\ninput[type=\"range\"] { min-width: 8em; }\n\ninput.Edit-Text-Full { width: 100% !important; }\n\n.tc-tiddler-body details:hover {\n Box-Shadow: 2px 2px 12px RGBA(128, 128, 128, 0.5);\n}\n.tc-tiddler-body details:hover > iframe {\n Box-Shadow: none;\n}\n\n.tc-tiddler-body ul:hover,\n.tc-tiddler-body ol:hover,\n.tc-tiddler-body dd:hover {\n Box-Shadow: 2px 2px 12px RGBA(128, 128, 128, 0.5);\n padding-top: 4px;\n padding-bottom: 4px;\n padding-right: 4px;\n}\nul, ol, dd { transition: 0.3s; }\n\n.ibox-btn {\n max-width: 35%;\n max-height: 50vh;\n}\n.ibox-btn img {\n width: 100% !important;\n}\n\n.tc-modal {\n width: 80%;\n left: calc((100% - 80%) / 2);\n}\n","tags":"$:/tags/Stylesheet","title":"$:/Styles/Main","modified":"20230225143705028","modifier":"Octt"}, {"created":"20150924065447163","text":".tc-tiddler-frame .tc-titlebar button {\nopacity: 0;\ntransition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\nzoom: 1;\nfilter: alpha(opacity=100);\nopacity: 1;\n}","bag":"default","revision":"0","type":"text/css","title":"$:/Styles/onhover-toolbar-styles.css","tags":"","modifier":"Tobias Beer","modified":"20230110175248723","creator":"Tobias Beer"}, {"created":"20230202093634199","creator":"Octt","text":"/* This has to be redone basically from scratch because there are issues with position:fixed without editing the tiddler frame z-index, which can't be done via CSS only (no parent selector) */\n\ninput.PIP-Select, input.PIP-Select+label, div.PIP-Select > input, div.PIP-Select > label, div.PIP-Select > span { width: 1.25em; height: 1.25em; font-size: 1.50em; vertical-align: middle; }\n\n/*\ninput[type=\"radio\"].PIP-Select[value=\"โ๏ธ\"]:checked ~ div { border: 3px solid red; }\ninput[type=\"radio\"].PIP-Select[value=\"โ๏ธ\"]:checked ~ div { border: 3px solid blue; }\n*/\n\n/* Set PIP properties common to all position */\n/*\ninput[type=\"radio\"].PIP-Select[value]:not(input[type=\"radio\"].PIP-Select[value=\"โ\"]):checked,\ninput[type=\"radio\"].PIP-Select[value]:not(input[type=\"radio\"].PIP-Select[value=\"โ\"]):checked ~ input,\ninput[type=\"radio\"].PIP-Select[value]:not(input[type=\"radio\"].PIP-Select[value=\"โ\"]):checked ~ label,\n*/\ninput[type=\"radio\"].PIP-Select[value]:not(input[type=\"radio\"].PIP-Select[value=\"โ\"]):checked ~ input[type=\"radio\"].PIP-Select[value=\"โ\"],\ninput[type=\"radio\"].PIP-Select[value]:not(input[type=\"radio\"].PIP-Select[value=\"โ\"]):checked ~ div {\n position: fixed;\n z-index: 99999;\n top: 0px;\n right: 0px;\n}\n\ninput[type=\"radio\"].PIP-Select[value]:not(input[type=\"radio\"].PIP-Select[value=\"โ\"]):checked ~ input[type=\"radio\"].PIP-Select[value=\"โ\"] { z-index: 100001; }\n\ninput[type=\"radio\"].PIP-Select[value]:not(input[type=\"radio\"].PIP-Select[value=\"โ\"]):checked ~ div {\n /*height: 100vh;*/\n width: 50vw;\n background: white;\n}\n","tags":"$:/tags/Stylesheet","title":"$:/Styles/PIP.css","modified":"20230202194628022","modifier":"Octt","type":"text/css"}, {"created":"20230108212828635","creator":"Octt","text":"\u003C!-- TOP RIGHT RIBBON --->\n\u003Cdiv class=\"github-fork-ribbon-wrapper right\">\u003Cdiv class=\"github-fork-ribbon\">\u003Ca rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://hub.octt.eu.org\">Visit the Octt Hub ๐\u003C/a>\u003C/div>\u003C/div>","tags":"$:/tags/PageControls","title":"$:/Styles/Ribbon.html","modified":"20230218112003133","type":"","modifier":"Octt"}, +{"created":"20230225150051400","creator":"Octt","text":".tc-static-story-river .gk0wk-notionbg-addbuttons { display: none; }\n","tags":"$:/tags/Stylesheet","title":"$:/Styles/Static/Main.css","modified":"20230225150238786","modifier":"Octt"}, {"created":"20230218174142523","creator":"Octt","text":"\u003C!-- GoatCounter statistics - Doesn't require a GDPR notice, see \u003Chttps://goatcounter.com/help/gdpr> -->\n\u003C\u003Cscript>>\n\u003Cscript data-goatcounter=\"https://private-analytics-not-for-public-use.octt.eu.org/octtkb/count\" async src=\"https://octospacc.gitlab.io/pastebin/GoatCounterCount.js\">\u003C/script>\n\u003C\u003Cscript off>>\n","title":"$:/Styles/Statistics.html","modified":"20230218174227834","modifier":"Octt","tags":"$:/tags/AboveStory"}, {"created":"20230124190137826","creator":"Octt","text":"\\whitespace trim\n\u003C!-- \u003C\u003C%ViewBreadcrumbs>> -->\n\u003C\u003Ci18nBreadcrumbsNamespaceLabelStrip>>","tags":"$:/tags/ViewTemplate","title":"$:/Styles/View/2-10-Breadcrumbs.xml","modified":"20230129122904644","modifier":"Octt","list-after":"$:/core/ui/ViewTemplate/title"}, {"created":"20230111090705398","creator":"Octt","text":"\\whitespace trim\n\n\u003C$list filter=\"[all[current]!is[system]is[missing]]\" variable=~>\n\u003C!-- \u003C$list filter=\"[all[current]is[missing]]\" variable=~> -->\n \u003C!--\u003C$button>\n Great features todo!-->\n\u003C!--\n \u003C$action-setfield object-type=\"todo\"/>\n Make Todo\n--->\n \u003C!--\u003C/$button>-->\n\n \u003C$macrocall $name=\"^WikipediaFrame\" Article=\u003C\u003CcurrentTiddler>>/>\n\n \u003C!--\u003Cbr>\u003Cbr>-->\n\n \u003Cdetails class=\"tw-details\">\n \u003Csummary>\n Directory Listing\n \u003C/summary>\n \u003C!-- \u003C$macrocall $name=\"tree_\" prefix=\u003C\u003C__currentTiddler__>>/> -->\n \u003C!-- \u003C$macrocall $name=\"tree_\" prefix={{{[\u003CcurrentTiddler>append[/]]}}}/> -->\n \u003C!-- \u003C\u003CDirTreeList>> -->\n \u003C/details>\n\n\u003C/$list>","tags":"$:/tags/ViewTemplate","title":"$:/Styles/View/5-10-Missing.xml","modified":"20230218175557484","modifier":"Octt"}, @@ -674,14 +676,14 @@ Error message and password prompt {"created":"20191126184117322","text":"\\define config() $:/config/TiddlyTools/FindTitles\n\n\u003Cstyle>\n.tt-findTitles input[type=text] { min-width:30vw; }\n.tt-findTitles input[type=checkbox] { width:auto !important; }\n.tt-findTitles .columns3 { display:block; column-count:3; column-gap:1em; }\n.tt-findTitles .small { font-size:80%; line-height:1.3em; }\n.tt-findTitles .nowrap { white-space:nowrap; }\n\u003C/style>\n\n\u003Cspan class=\"tt-findTitles\">\nfind titles containing:\n\u003C$edit-text tiddler=\u003C\u003Cconfig>> index=\"text\" tag=\"input\" focus=\"yes\"/>\u003Cbr>\nin\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"tiddler\" checked=\"is[tiddler]\" unchecked=\"\"> tiddlers \u003C/$checkbox>\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"shadow\" checked=\"is[shadow]\" unchecked=\"\"> shadows \u003C/$checkbox>\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"system\" checked=\"is[system]\" unchecked=\"\"> system \u003C/$checkbox>\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"tag\" checked=\"is[tag]\" unchecked=\"\"> tags \u003C/$checkbox>\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"missing\" checked=\"is[missing]\" unchecked=\"\"> missing \u003C/$checkbox>\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"orphan\" checked=\"is[orphan]\" unchecked=\"\"> orphans \u003C/$checkbox>\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"image\" checked=\"is[image]\" unchecked=\"\"> images \u003C/$checkbox>\n\u003C$checkbox tiddler=\u003C\u003Cconfig>> index=\"binary\" checked=\"is[binary]\" unchecked=\"\"> binaries \u003C/$checkbox>\n\n\u003C$tiddler tiddler=\u003C\u003Cconfig>>>\n\u003C$wikify name=\"is\" text=\"{{##tiddler}}{{##shadow}}{{##system}}{{##tag}}{{##missing}}{{##orphan}}{{##image}}{{##binary}}\">\n\u003C$wikify name=\"filter\" text=\"[\u003C\u003Cis>>search:title[{{##text}}]sort[]]\">\n\u003C$reveal default=\u003C\u003Cis>> type=\"nomatch\" text=\"\">\n \u003Cp/>\n __There are \u003C$count filter=\u003C\u003Cfilter>>/> tiddlers matching ''\u003C$text text=\u003C\u003Cfilter>>/>''__\n \u003Cblockquote class=\"columns3 small nowrap\">\n \u003C$list filter=\u003C\u003Cfilter>>>\u003C$link/>\u003Cbr>\u003C/$list>\n \u003C/blockquote>\n\u003C/$reveal>","title":"$:/ThirdParty/TiddlyTools/FilterGenerators/Titles","caption":"Titles","modified":"20230109220606965","tags":"TiddlyTools $:/tags/AdvancedSearch"}, {"created":"20191214071309583","text":"\\define edit-list(\n id:\"\", tiddler:\"\", field:\"text\", index:\"\", timestamp:\"yes\",\n default:\"\", placeholder:\"\", tooltip:\"\", type:\"\", width:\"15em\",\n filter:\"\", find:\"\", goto:\"no\", confirm:\"no\", focus:\"no\",\n focusPopup:\"\", cancelPopups:\"no\", listwidth:\"100%\", listheight:\"10\", stretch:\"no\",\n show:\"no\", fontsize:\"100%\", colors:\"no\", multiple:\"no\", view:\"\u003C\u003Citem>>\", mobile:\"auto\"\n)\n\\whitespace trim\n\\define filter() $filter$\n\u003C!----------------->\n\u003C!-- ENVIRONMENT -->\n\u003C!----------------->\n\u003C$vars tid={{{ [[$tiddler$]!match[]else\u003CcurrentTiddler>] }}} re=\"[^a-zA-Z0-9\\-\\_]\">\n\u003C$vars id={{{ [[$index$]!match[]else[$field$]] +[addprefix[/]addprefix\u003Ctid>addsuffix[_$id$]] }}}>\n\u003C$vars id={{{ [\u003Cid>search-replace[$:/],[]search-replace:g:regexp\u003Cre>,[_]addsuffix\u003Cqualify>search-replace:g:[--],[-]search-replace:g:[__],[_]] }}}>\n\u003C$vars modal={{{ [[$:/state/modal/edit-list/]addsuffix\u003Cid>] }}}>\n\u003C$vars popup={{{ [[$:/state/popup/edit-list/]addsuffix\u003Cid>] }}}>\n\u003C$vars popup={{{ [\u003Cfilter>!match[]] [[$type$]match[calendar]] +[limit[1]then[$show$]match[no]then\u003Cpopup>] }}}>\n\u003C$vars minmax={{{ [[$:/state/popup/edit-list/minmax/]addsuffix\u003Cid>] }}}>\n\u003C!--------------->\n\u003C!-- VARIABLES -->\n\u003C!--------------->\n\u003C$vars\n field={{{ [[$index$]match[]then[$field$]else[]] }}} index=\"\"\"$index$\"\"\" timestamp=\"\"\"$timestamp$\"\"\" goto_button={{{ [[$goto$]match[yes]] }}}\n default=\"\"\"$default$\"\"\" placeholder=\"\"\"$placeholder$\"\"\" tooltip=\"\"\"$tooltip$\"\"\" width={{{ [[$width$]match[auto]then[15em]else[$width$]] }}}\n filter=\u003C\u003Cfilter>> find=\"\"\"$find$\"\"\" confirm=\"\"\"$confirm$\"\"\" listwidth={{{ [[$listwidth$]match[fit]then[auto]else[$listwidth$]] }}}\n listheight=\"\"\"$listheight$\"\"\" show=\"\"\"$show$\"\"\" fontsize=\"\"\"$fontsize$\"\"\" stretch={{{ [[$stretch$]match[yes]then[auto]else[$stretch$]] }}}\n focus=\"\"\"$focus$\"\"\" focusPopup={{{ [[$focusPopup$]!match[]then\u003Cpopup>else[$focusPopup$]] }}} multiple={{{ [[$multiple$]match[yes]] }}}\n calendar={{{ [[$type$]match[calendar]then[TiddlyTools/Time/Calendar]is[tiddler]then[yes]] }}}\n type={{{ [[$type$]match[calendar]then[TiddlyTools/Time/Calendar]is[missing]then[date]else[$type$]] }}}\n show={{{ [[$type$]match[calendar]then[TiddlyTools/Time/Calendar]is[missing]then[no]else[$show$]] }}}\n>\n\u003C!------------------->\n\u003C!-- ABBREVIATIONS -->\n\u003C!------------------->\n\u003C$vars\n openpopup=\"\"\"\n \u003C$action-deletetiddler $filter=\"[prefix[$:/state/popup/edit-list/]] -[prefix[$:/state/popup/edit-list/currentitem/]] -[\u003Cminmax>]\"/>\n \u003C$action-setfield $tiddler=\u003C\u003Cpopup>> text=\"show\"/>\"\"\"\n closepopup=\"\"\"\n \u003C$action-deletetiddler $filter=\"[\u003Cpopup>]\"/>\"\"\"\n gotoinput=\"\"\"\n \u003C$action-sendmessage $message=\"tm-focus-selector\" $param={{{ [[.editlist_input_]addsuffix\u003Cid>] }}}/>\"\"\"\n gotoselect=\"\"\"\n \u003C$action-sendmessage $message=\"tm-focus-selector\" $param={{{ [[.editlist_popup_select_]addsuffix\u003Cid>] }}}/>\"\"\"\n startmodal=\"\"\"\n \u003C$list filter=\"[\u003Cconfirm>match[yes]then\u003Cmodal>!is[tiddler]]\">\u003C$action-setfield $tiddler=\u003C\u003Ctid>> title=\u003C\u003Cmodal>>/>\"\"\"\n maximize=\"\"\"\n \u003C$action-setfield $tiddler=\u003C\u003Cminmax>> hmax=\"yes\" vmax=\"yes\"/>\"\"\"\n minimize=\"\"\"\n \u003C$action-deletetiddler $filter=\"[\u003Cminmax>]\"/>\"\"\"\n input=\"\"\"\n \u003C$eventcatcher $focusin=\"\u003C$list filter='[\u003CfocusPopup>!match[]]'>\u003C\u003Copenpopup>>\u003C/$list>\u003C\u003Cstartmodal>>\">\n \u003C$eventcatcher $focusout=\"\u003C$list filter='[\u003Cmodal>!is[tiddler]]'>\u003C\u003Cclosepopup>>\u003C/$list>\">\n \u003C$edit-text tiddler={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}} class={{{ [[tc-popup-handle editlist_input editlist_input_]addsuffix\u003Cid>] }}}\n tag=\"input\" type=\u003C\u003Ctype>> field=\u003C\u003Cfield>> index=\u003C\u003Cindex>> default=\u003C\u003Cdefault>> placeholder=\u003C\u003Cplaceholder>> cancelPopups=\"$cancelPopups$\"\n focus={{{ [\u003Cmodal>is[tiddler]then[yes]else\u003Cfocus>] }}} focusPopup={{{ [[$focusPopup$]!match[yes]then[$focusPopup$]] }}}/>\"\"\"\n select=\"\"\"\n \u003C$eventcatcher $focusin=\"\u003C\u003Copenpopup>>\u003C\u003Cstartmodal>>\">\n \u003C$eventcatcher $focusout=\"\u003C$list filter='[\u003Cmodal>!is[tiddler]]'>\u003C\u003Cclosepopup>>\u003C/$list>\">\n \u003C$eventcatcher $click=\"\u003C$list filter='[\u003Cmodal>!is[tiddler]then\u003Cmultiple>!match[yes]]'>\u003C\u003Cclosepopup>>\u003C\u003Cgoto>>\u003C/$list>\">\n \u003C\u003Ceditlist_select_showheading>>\n \u003C$select tiddler={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}} field=\u003C\u003Cfield>> index=\u003C\u003Cindex>> multiple=\u003C\u003Cmultiple>>\n class={{{ [[editlist_select editlist_popup_select_]addsuffix\u003Cid>] }}} size={{{ [\u003Cminmax>get[vmax]match[yes]then[2]] ~[\u003Clistheight>regexp[^\\d+$]!match[1]else[2]] }}}>\n \u003C\u003Ceditlist_select_showlist>>\"\"\"\n option=\"\"\"\n \u003C$vars fg={{{ [enlist\u003Cdark>match\u003Citem>then[white;]else[black;]] }}}>\n \u003C$vars colors={{{ [[$colors$]match[yes]then[background-color:]addsuffix\u003Citem>addsuffix[;color:]addsuffix\u003Cfg>] }}}>\n \u003Coption style=\u003C\u003Ccolors>> value=\u003C\u003Citem>> title=\u003C\u003Citem>>> $view$ \u003C/option>\"\"\"\n dark=\"\"\"\n Black Blue DarkBlue DarkGreen DarkOliveGreen DarkSlateBlue DarkSlateGrey DimGrey ForestGreen Grey Indigo Maroon MediumBlue MidnightBlue Navy Purple\"\"\"\n save=\"\"\"\n \u003C$list filter=\"[\u003Cmodal>is[tiddler]]\">\n \u003C$vars newval={{{ [\u003Cmodal>getindex\u003Cindex>] ~[\u003Cmodal>get\u003Cfield>] }}}>\n \u003C$action-setfield $timestamp=\u003C\u003Ctimestamp>> $tiddler=\u003C\u003Ctid>> $field=\u003C\u003Cfield>> $index=\u003C\u003Cindex>> $value=\u003C\u003Cnewval>>/>\n \u003C$list filter=\"[\u003Cnewval>match[]]\">\u003C\u003Cclear>>\u003C/$list>\"\"\"\n clear=\"\"\"\n \u003C$action-setfield $timestamp=\u003C\u003Ctimestamp>> $tiddler=\u003C\u003Ctid>> $field=\u003C\u003Cfield>> $index=\u003C\u003Cindex>> $value=\"\"/>\u003C!-- WFFL -->\n \u003C$action-deletetiddler $tiddler=\u003C\u003Ccurrentitem>>/>\n \u003C\u003Cclosepopup>>\u003C\u003Cgotoinput>>\"\"\"\n done=\"\"\"\n \u003C$action-deletetiddler $filter=\"[\u003Cmodal>] [\u003Cpopup>]\"/>\"\"\"\n goto=\"\"\"\n \u003C$list filter=\"[[$goto$]match[yes]]\">\n \u003C$vars tid={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}}>\n \u003C$list filter=\"[\u003Cmultiple>!match[yes]]\">\u003C$action-navigate $to={{{ [\u003Ctid>getindex\u003Cindex>] ~[\u003Ctid>get\u003Cfield>] }}}/>\u003C/$list>\n \u003C$list filter=\"[\u003Cmultiple>match[yes]]\" >\u003C$list filter=\"[\u003Ctid>getindex\u003Cindex>] ~[\u003Ctid>get\u003Cfield>] +[enlist-input[]]\">\u003C$action-navigate/>\u003C/$list>\u003C/$list>\"\"\"\n reset=\"\"\"\n \u003C$list filter=\"[\u003Cmodifier>match[shift]]\">\u003C$action-setfield $timestamp=\u003C\u003Ctimestamp>> $tiddler=\u003C\u003Ctid>> $field=\u003C\u003Cfield>> $index=\u003C\u003Cindex>>/>\u003C/$list>\n \u003C$list filter=\"[\u003Cindex>!match[]then\u003Ctid>get[text]match[{}]]\">\n \u003C$action-setfield $timestamp=\u003C\u003Ctimestamp>> $tiddler=\u003C\u003Ctid>> $field=\"text\"/>\n \u003C$action-setfield $timestamp=\u003C\u003Ctimestamp>> $tiddler=\u003C\u003Ctid>> $field=\"type\"/>\"\"\"\n>\n\u003C!-------------------->\n\u003C!-- MOBILE LISTBOX -->\n\u003C!-------------------->\n\u003C$vars\n currentitem=\n {{{ [[$:/state/popup/edit-list/currentitem/]addsuffix\u003Cid>] }}}\n showitem=\"\"\"\n \u003C$list filter='[\u003Csel>!match[]]' emptyMessage=\"\u003Cinput type=checkbox tabindex=-1/>\">\u003Cinput type=checkbox checked=yes tabindex=-1/>\u003C/$list>\n \u003C$text text=$view$/>\"\"\"\n toggleitem=\"\"\"\n \u003C$list filter='[\u003Cmultiple>!match[yes]]'>\u003C$action-setfield $tiddler=\u003C\u003Ccurr>> $field=\u003C\u003Cfield>> $index=\u003C\u003Cindex>> $value={{{ [\u003Csel>match[]then\u003Citem>] }}}/>\u003C/$list>\n \u003C$list filter='[\u003Cmultiple>match[yes]]' >\u003C$action-listops $tiddler=\u003C\u003Ccurr>> $field=\u003C\u003Cfield>> $index=\u003C\u003Cindex>> $subfilter='+[toggle\u003Citem>]' />\u003C/$list>\"\"\"\n trackitem=\"\"\"\n \u003C$action-setfield $tiddler=\u003C\u003Ccurrentitem>> offset=\u003C\u003Ci>> item=\u003C\u003Citem>>/>\"\"\"\n gotoitem=\"\"\"\n \u003C$vars i={{{ [\u003Ccurrentitem>get[offset]else\u003Ci>] }}}>\n \u003C$vars i={{{ [\u003Ccount>!match[]then\u003Ci>min\u003Ccount>max[1]else\u003Ci>] }}}>\n \u003C$action-sendmessage $message=\"tm-focus-selector\" $param={{{ [[.editlist_popup_select_]addsuffix\u003Cid>addsuffix[_]addsuffix\u003Ci>] }}}/>\n \u003C$action-deletetiddler $tiddler=\u003C\u003Ccurrentitem>>/>\"\"\"\n select_mobile=\"\"\"\n \u003C$eventcatcher $focusin=\"\u003C\u003Copenpopup>>\u003C\u003Cstartmodal>>\">\n \u003C$eventcatcher $focusout=\"\u003C$list filter='[\u003Cmodal>!is[tiddler]]'>\u003C\u003Cclosepopup>>\u003C/$list>\">\n \u003C$eventcatcher $click=\"\u003C$list filter='[\u003Cmodal>!is[tiddler]then\u003Cmultiple>!match[yes]]'>\u003C\u003Cclosepopup>>\u003C\u003Cgoto>>\u003C/$list>\">\n \u003C\u003Ceditlist_select_showheading>>\n \u003C$vars listwidth={{{ [\u003Clistwidth>match[100%]then\u003Cwidth>else\u003Clistwidth>] }}}>\n \u003C$wikify name=\"fg\" text=\u003C\u003Ccolour select-tag-foreground>>>\u003C$vars fg={{{ [\u003Cfg>!match[]then\u003Cfg>else[black;]] }}}>\n \u003C$wikify name=\"bg\" text=\u003C\u003Ccolour select-tag-background>>>\u003C$vars bg={{{ [\u003Cbg>!match[]then\u003Cbg>else[white;]] }}}>\n \u003C$keyboard key=\"down\" actions=\"\u003C$vars i=1>\u003C\u003Cgotoitem>>\">\n \u003Cbutton class={{{ [[editlist_select editlist_popup_select_]addsuffix\u003Cid>] }}}\n style={{{ [[border:1px solid gray;padding:0;white-space:nowrap;vertical-align:bottom;color:]addsuffix\u003Cfg>addsuffix[;background-color:]addsuffix\u003Cbg>] }}}>\n \u003C$vars curr={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}}>\u003C$vars val={{{ [\u003Ccurr>getindex\u003Cindex>] ~[\u003Ccurr>get\u003Cfield>] }}}>\n \u003C\u003Ceditlist_select_showlist>>\"\"\"\n option_mobile=\"\"\"\n \u003C$keyboard key=\"home\" actions=\"\u003C$vars i=1 >\u003C\u003Cgotoitem>>\">\n \u003C$keyboard key=\"up\" actions=\"\u003C$vars i={{{ [\u003Ci>subtract[1]] }}}>\u003C\u003Cgotoitem>>\">\n \u003C$keyboard key=\"page_up\" actions=\"\u003C$vars i={{{ [\u003Ci>subtract\u003Clistheight>] }}}>\u003C\u003Cgotoitem>>\">\n \u003C$keyboard key=\"page_down\" actions=\"\u003C$vars i={{{ [\u003Ci>add\u003Clistheight>] }}}>\u003C\u003Cgotoitem>>\">\n \u003C$keyboard key=\"down\" actions=\"\u003C$vars i={{{ [\u003Ci>add[1]] }}}>\u003C\u003Cgotoitem>>\">\n \u003C$keyboard key=\"end\" actions=\"\u003C$vars i=\u003C\u003Ccount>> >\u003C\u003Cgotoitem>>\">\n \u003C$vars fg={{{ [enlist\u003Cdark>match\u003Citem>then[white;]else[black;]] }}}>\n \u003C$vars colors={{{ [[$colors$]match[yes]then[background-color:]addsuffix\u003Citem>addsuffix[;color:]addsuffix\u003Cfg>] }}}>\n \u003C$vars sel={{{ [\u003Cmultiple>!match[yes]then\u003Cval>match\u003Citem>] [\u003Cmultiple>match[yes]then\u003Cval>enlist-input[]match\u003Citem>] }}}>\n \u003C$button class={{{ [[editlist_select editlist_popup_select_]addsuffix\u003Cid>addsuffix[_]addsuffix\u003Ci>] }}}\n style=\u003C\u003Ccolors>> tooltip=\u003C\u003Citem>> actions=\"\u003C\u003Ctoggleitem>>\u003C\u003Ctrackitem>>\u003C\u003Cgotoselect>>\"> \u003C\u003Cshowitem>>\n \u003C/$button>\u003Cbr>\"\"\"\n>\n\u003C!-- IF MOBILE, USE ALTERNATIVE select() AND option() -->\n\u003C$vars mobile_browsers=\"android ios windowsphone\">\n\u003C$vars mobile={{{ [[$mobile$]regexp[yes|no]] ~[enlist\u003Cmobile_browsers>addprefix[$:/info/browser/is/]get[text]match[yes]] ~[[no]] }}}>\n\u003C$vars select={{{ [\u003Cmobile>!match[yes]then\u003Cselect>else\u003Cselect_mobile>] }}}>\n\u003C$vars option={{{ [\u003Cmobile>!match[yes]then\u003Coption>else\u003Coption_mobile>] }}}>\n\u003C!------------------------->\n\u003C!-- STYLES AND CONTROLS -->\n\u003C!------------------------->\n\u003C\u003Ceditlist_styles>>\n\u003Cdiv class={{{ [[editlist_wrapper editlist_wrapper_]addsuffix\u003Cid>] }}}\n style={{{ [\u003Cshow>match[no]then[margin-bottom:1em;]] [\u003Cfilter>match[]then\u003Ccalendar>!match[yes]then[margin-bottom:1em;]] }}}\n title=\u003C\u003Ctooltip>>>\n \u003C\u003Ceditlist_input>>\n \u003C$list filter=\"[\u003Ccalendar>match[]] \"> \u003C\u003Ceditlist_select>> \u003C/$list>\n \u003C$list filter=\"[\u003Ccalendar>!match[]]\"> \u003C\u003Ceditlist_calendar>> \u003C/$list>\n\u003C/div>\n\\end\n\n\\define editlist_styles()\n\u003Cstyle>\n .editlist_wrapper_$(id)$ { position:relative; display:inline-block; width:$(width)$; margin:0; }\n .editlist_input_$(id)$ { position:absolute; width:100% !important; height:1.5em; }\n .editlist_input_buttons_$(id)$ { position:absolute; width:max-content; right:0; }\n .editlist_modal_buttons_$(id)$ { position:absolute; width:max-content; left:$(width)$; }\n .editlist_clear { height:1.5em; width:1.5em; padding:0 0.25em 0 0.25em; vertical-align:text-bottom; }\n .editlist_popup { height:1.5em; width:1.5em; padding:0 0.25em 0 0.25em; vertical-align:text-bottom; }\n .editlist_save { height:1.5em; width:1.5em; padding:0 0.25em 0 0.25em; vertical-align:text-bottom; }\n .editlist_cancel { height:1.5em; width:1.5em; padding:0 0.25em 0 0.30em; vertical-align:text-bottom; }\n .editlist_popup_wrapper_$(id)$ { position:absolute; width:fit-content; min-width:$(listwidth)$; z-index:1; top:1.6em; }\n .editlist_popup_heading_$(id)$ { position:relative; font-size:80%; line-height:1.2em; text-align:center; background:#eee; border:1px solid gray; border-bottom:0; }\n .editlist_popup_minmax_$(id)$ { position:absolute; top:-1px; right:calc(-1.5em - 3px); padding-left:3px; transition:2s; }\n .editlist_popup_minmax_$(id)$ button { display:block; font-size:100%; line-height:1em; padding:0 0.125em; margin-bottom:1px; }\n .editlist_popup_select_$(id)$ { overflow-y:auto; font-size:$(fontsize)$; line-height:1em; }\n .editlist_popup_select_$(id)$ option { overflow:hidden;text-overflow:ellipsis; } \n .editlist_popup_select_$(id)$ button { width:100%; text-align:left; line-height:1.4em; padding:0 2px; border:0; background:none; overflow:hidden; text-overflow:ellipsis; }\n .editlist_popup_select_$(id)$ input { width:auto; }\n .editlist_calendar_wrapper { position:absolute; z-index:1; top:1.6em; }\n .editlist_calendar { width:18.75em; padding:0.5em; }\n .editlist_calendar_format { width:17.5em; }\n .editlist_calendar.tc-block-dropdown a { padding-top:0; padding-bottom:0; }\n .editlist_wrapper_$(id)$ .fadeIn { opacity:0; }\n .editlist_wrapper_$(id)$:hover .fadeIn { opacity:1; }\n .editlist_wrapper_$(id)$:focus-within .fadeIn { opacity:1; }\n /* FALLBACK IF \"FOCUS-WITHIN\" NOT AVAILABLE... see https://www.caniuse.com/css-focus-within */\n .editlist_input_$(id)$:focus + .editlist_input_buttons_$(id)$ .fadeIn { opacity:1; }\n .editlist_clear:focus { opacity:1; }\n .editlist_popup:focus { opacity:1; }\n .editlist_clear:focus + editlist_popup { opacity:1; }\n\u003C/style>\n\u003C$list filter=\"[\u003Cmodal>is[tiddler]] [\u003Cpopup>is[tiddler]] +[limit[1]]\">\n \u003Cstyle> .editlist_wrapper_$(id)$ .fadeIn { opacity:1; } \u003C/style>\n\u003C/$list>\n\u003C$list filter=\"[\u003Cshow>!match[no]]\">\n \u003Cstyle> .editlist_popup_wrapper_$(id)$ { position:static; margin-top:1.6em; } \u003C/style>\n\u003C/$list>\n\u003C$list filter=\"[\u003Cstretch>!match[no]]\">\n \u003Cstyle> .editlist_wrapper_$(id)$:hover, .editlist_wrapper_$(id)$:focus-within { min-width:$(width)$; width:$(stretch)$ !important; } \u003C/style>\n \u003Cstyle> .editlist_popup_select_$(id)$:hover, .editlist_popup_select_$(id)$:focus { min-width:$(width)$; width:$(stretch)$ !important; } \u003C/style>\n\u003C/$list>\n\u003C$vars curr={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}}>\n\u003C$vars val={{{ [\u003Ccurr>getindex\u003Cindex>] ~[\u003Ccurr>get\u003Cfield>] }}}>\n\u003C$vars bwidth={{{ [\u003Cval>!match[]then[1.5]] [\u003Cpopup>!match[]then[1.50]] +[sum[]] }}}>\n\u003C$list filter=\"[\u003Cwidth>!match[100%]]\">\u003C\u003Ceditlist_styles_setinputsize>>\u003C/$list>\n\\end\n\n\\define editlist_styles_setinputsize()\n\u003C!-- MAKE ROOM FOR CLEAR AND/OR POPUP BUTTONS -->\n\u003Cstyle>\n.editlist_wrapper_$(id)$:hover .editlist_input_$(id)$ { width:calc(100% - $(bwidth)$em) !important; }\n.editlist_wrapper_$(id)$:focus-within .editlist_input_$(id)$ { width:calc(100% - $(bwidth)$em) !important; }\n\u003C/style>\n\u003C$list filter=\"[\u003Cmodal>is[tiddler]] [\u003Cpopup>is[tiddler]] +[limit[1]]\">\n \u003Cstyle> .editlist_input_$(id)$ { width:calc(100% - $(bwidth)$em) !important; } \u003C/style>\n\u003C/$list>\n\\end\n\n\\define editlist_styles_setselectsize()\n\u003C!-- WIDTH: MATCH INPUT SIZE, LISTWIDTH PARAM, OR HMAX (AUTO) -->\n\u003Cstyle>.editlist_popup_select_$(id)$ { min-width:$(width)$; width:$(listwidth)$; }\u003C/style>\n\u003C$list filter=\"[\u003Cminmax>get[hmax]]\" >\u003Cstyle>.editlist_popup_select_$(id)$ { min-width:$(listwidth)$; width:auto; }\u003C/style>\u003C/$list>\n\u003C$list filter=\"[\u003Cmobile>match[yes]]\">\u003Cstyle>.editlist_popup_select_$(id)$ { min-width:100%; }\u003C/style>\u003C/$list>\n\u003C!-- HEIGHT: USE SIZE, LISTHEIGHT (CSS UNITS), OR VMAX (COUNT) -->\n\u003Cstyle>.editlist_popup_select_$(id)$ { height:calc($(size)$ * 1.4em + 0.25em); }\u003C/style>\n\u003C$list filter=\"[\u003Clistheight>!regexp[^\\d+$]]\">\u003Cstyle>.editlist_popup_select_$(id)$ { height:$(listheight)$; }\u003C/style>\u003C/$list>\n\u003C$list filter=\"[\u003Clistheight>match[fit]] [\u003Cminmax>get[vmax]] +[limit[1]]\">\n \u003Cstyle>.editlist_popup_select_$(id)$ { height:calc($(count)$ * 1.4em + 0.25em); }\u003C/style>\n \u003C$list filter=\"[\u003Cmobile>match[yes]]\">\u003Cstyle>.editlist_popup_select_$(id)$ { height:max-content; }\u003C/style>\u003C/$list>\n\u003C/$list>\n\\end\n\n\\define editlist_input()\n\\whitespace trim\n\u003C$keyboard key=\"enter\" actions=\"\u003C\u003Csave>>\u003C\u003Cgoto>>\u003C\u003Cdone>>\">\n\u003C$keyboard key=\"escape\" actions=\"\u003C\u003Cdone>>\">\n\u003C$keyboard key=\"down\" actions=\"\u003C\u003Copenpopup>>\u003C\u003Cgotoselect>>\">\n\u003C$keyboard key=\"up\" actions=\"\u003C\u003Cclosepopup>>\u003C\u003Cgotoinput>>\">\n\u003C\u003Cinput>>\n\u003Cspan class=\"editlist_input_buttons_$(id)$\">\u003C\u003Ceditlist_clear>>\u003C\u003Ceditlist_popup>>\u003C/span>\n\u003Cspan class=\"editlist_modal_buttons_$(id)$\">\u003C\u003Ceditlist_save>>\u003C\u003Ceditlist_cancel>>\u003C/span>\n\\end\n\n\\define editlist_clear()\n\\whitespace trim\n\u003C!-- IF INDEX OR FIELD VALUE IS NOT BLANK, SHOW CLEAR BUTTON -->\n\u003C$vars tid={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}}>\n\u003C$list filter=\"[\u003Ctid>getindex\u003Cindex>] ~[\u003Ctid>get\u003Cfield>] +[!match[]]\" variable=\"show_clear\">\n\u003C$eventcatcher $focusin=\"\u003C$list filter='[\u003CfocusPopup>!match[]]'>\u003C\u003Copenpopup>>\u003C/$list>\u003C\u003Cstartmodal>>\">\n\u003C$button class=\"tc-button editlist_clear fadeIn\" tooltip=\"clear input\" actions=\u003C\u003Creset>>>\n \u003Cdiv style=\"transform:translateY(-0.1em);\">''x''\u003C/div> \u003C\u003Cclear>>\n\u003C/$button>\n\\end\n\n\\define editlist_popup()\n\\whitespace trim\n\u003C!-- IF LIST OR CALENDAR NOT SHOWN, SHOW POPUP BUTTON -->\n\u003C$list filter=\"[\u003Cpopup>!match[]]\" variable=\"show_popup\">\n\u003C$vars tip={{{ [\u003Cpopup>is[missing]then[show ]else[hide ]] [\u003Ccalendar>match[]then[list]else[calendar]] +[join[]] }}}>\n\u003C$eventcatcher $focusin=\u003C\u003Cstartmodal>>>\n\u003C$button class=\"tc-button editlist_popup fadeIn\" tooltip=\u003C\u003Ctip>> actions=\u003C\u003Cgotoinput>>>\n \u003C$list filter=\"[\u003Cpopup>is[missing]]\" emptyMessage=\u003C\u003Cclosepopup>>>\u003C\u003Copenpopup>>\u003C/$list>\n \u003C$list filter=\"[\u003Ccalendar>match[]]\"> \u003C!-- DOWN OR UP TRIANGLE -->\n \u003Cdiv style=\"font-size:80%;transform:translateY(-0.04em);\">\n \u003C$list filter=\"[\u003Cpopup>is[missing]]\" emptyMessage=\"▲\">▼\u003C/$list>\n \u003C/div>\n \u003C/$list>\n \u003C$list filter=\"[\u003Ccalendar>!match[]]\"> \u003C!-- CALENDAR EMOJI --> \n \u003Cspan style=\"font-size:90%;margin-left:-0.2em;vertical-align:text-top;\">📅\u003C/span>\n \u003C/$list>\n\u003C/$button>\n\\end\n\n\\define editlist_save()\n\\whitespace trim\n\u003C!-- IF MODAL IS ACTIVE, SHOW SAVE BUTTON -->\n\u003C$list filter=\"[\u003Cmodal>is[tiddler]]\">\n\u003C$button class=\"tc-button editlist_save\" tooltip=\"save\" actions=\"\u003C\u003Creset>>\u003C\u003Cgoto>>\">\n \u003Cdiv style=\"transform:translateY(-0.05em);\">{{$:/core/images/done-button}}\u003C/div> \u003C\u003Csave>>\u003C\u003Cdone>>\n\u003C/$button>\n\\end\n\n\\define editlist_cancel()\n\\whitespace trim\n\u003C!-- IF MODAL IS ACTIVE, SHOW CANCEL BUTTON -->\n\u003C$list filter=\"[\u003Cmodal>is[tiddler]]\">\n\u003C$button class=\"tc-button editlist_cancel\" tooltip=\"cancel\">\n \u003Cdiv style=\"transform:translateY(-0.05em);\">{{$:/core/images/cancel-button}}\u003C/div> \u003C\u003Cdone>>\n\u003C/$button>\n\\end\n\n\\define editlist_select()\n\\whitespace trim\n\u003C!-- IF NOT FILTERING, DON'T SHOW LIST -->\n\u003C$list filter=\"[\u003Cfilter>!match[]]\" variable=\"show_select\">\n\u003C!-- IF FIXED-HEIGHT, OR POPUP IS OPEN, SHOW LIST -->\n\u003C$list filter=\"[\u003Cshow>!match[no]] [\u003Cpopup>is[tiddler]] +[limit[1]]\" variable=\"show_select\">\n\u003C$keyboard key=\"enter\" actions=\"\u003C\u003Csave>>\u003C\u003Cgoto>>\u003C\u003Cdone>>\">\n\u003C$keyboard key=\"escape\" actions=\"\u003C\u003Cdone>>\">\n\u003C$keyboard key=\"right\" actions=\"\u003C\u003Cmaximize>>\">\n\u003C$keyboard key=\"left\" actions=\"\u003C\u003Cminimize>>\">\n\u003C$keyboard key=\"backspace\" actions=\"\u003C\u003Cclosepopup>>\u003C\u003Cgotoinput>>\">\n\u003Cdiv class=\"editlist_popup_wrapper_$(id)$\">\u003C\u003Cselect>>\u003C/div>\n\\end\n\n\\define editlist_select_showheading()\n\\whitespace trim\n$(editlist_select_search)$\n\u003Cdiv class=\"editlist_popup_heading_$(id)$\">\n \u003C$text text={{{ [\u003Ctotal>addsuffix[ items]] }}}/>\n \u003C$list filter=\"[\u003Cval>!match[]then\u003Cfind>!match[]]\">\n \u003C$list filter=\"[\u003Cfound>match[0]] [\u003Cfound>!match\u003Cselected>] +[limit[1]]\"> , \u003C\u003Cfound>> matches \u003C/$list>\n \u003C/$list>\n \u003C$text text={{{ [\u003Cselected>!match[0]then[, ]addsuffix\u003Cselected>addsuffix[ selected]] }}}/>\n \u003C\u003Ceditlist_select_minmax_goto>>\n\u003C/div>\n\\end\n\n\\define editlist_select_showlist()\n$(editlist_select_search)$\n\u003C\u003Ceditlist_styles_setselectsize>>\n\u003C$list filter=\"[enlist\u003Cdisplay>]\" variable=\"item\" counter=\"i\"> \u003C\u003Coption>> \u003C/$list>\n\\end\n\n\\define editlist_select_search()\n\u003C$set name=\"curr\" filter=\"[\u003Cmodal>is[tiddler]else\u003Ctid>]\">\n\u003C$set name=\"exclude\" filter=\"[\u003Cfield>match[tags]then\u003Ccurr>get[tags]enlist-input[]] :filter[tagging[]count[]match[1]]\"> \n\u003C$set name=\"all\" filter=\"[subfilter\u003Cfilter>] -[enlist\u003Cexclude>] -[prefix[$:/state/popup/edit-list]]\">\n\u003C$set name=\"total\" filter=\"[enlist\u003Call>count[]]\">\n\u003C$set name=\"case\" filter=\"[enlist[OR AND EXACT REGEXP]match\u003Cfind>]\" value=\"casesensitive\" emptyValue=\"\">\n\u003C$set name=\"find\" filter=\"[\u003Cfind>lowercase[]]\">\n\u003C$set name=\"find\" filter=\"[enlist[or and exact regexp]match\u003Cfind>]\" value=\u003C\u003Cfind>> emptyValue=\"\">\n\u003C$set name=\"match\" filter=\"[\u003Cfind>match[exact]]\" value=\"literal\" emptyValue=\"\">\n\u003C$set name=\"regexp\" filter=\"[\u003Cfind>match[regexp]]\" value=\"regexp\" emptyValue=\"\">\n\u003C$set name=\"flags\" filter=\"[\u003Cmatch>!match[]] [\u003Cregexp>!match[]] [\u003Ccase>!match[]] +[join[,]]\">\n\u003C$set name=\"val\" filter=\"[\u003Ccurr>getindex\u003Cindex>] ~[\u003Ccurr>get\u003Cfield>]\" select=0>\n\u003C$wikify name=\"or\" text=\u003C\u003Ceditlist_select_or>>>\n\u003C$wikify name=\"and\" text=\u003C\u003Ceditlist_select_and>>>\n\u003C$vars selected={{{ [\u003Cmultiple>match[yes]then\u003Cmatch>!match[exact]then\u003Cval>enlist-input[]] ~[\u003Cval>] :intersection[enlist\u003Call>] +[count[]] }}}>\n\u003C$vars results={{{ [\u003Cfind>match[or]then\u003Cor>] ~[\u003Cfind>match[and]then\u003Cand>] ~[\u003Cfind>match[exact]then\u003Cand>] ~[\u003Cfind>match[regexp]then\u003Cand>] ~[\u003Call>] +[trim[]] }}}>\n\u003C$vars found={{{ [enlist\u003Cresults>count[]] }}}>\n\u003C$vars display={{{ [\u003Cfound>match[0]then\u003Call>] ~[\u003Cfound>match\u003Cselected>then\u003Call>] ~[\u003Cresults>] }}}>\n\u003C$vars count={{{ [enlist\u003Cdisplay>count[]] }}}>\n\u003C$vars size={{{ [\u003Clistheight>match[fit]then\u003Ctotal>] ~[\u003Ccount>min\u003Clistheight>] +[max[1]] }}}>\n\\end\n\\define editlist_select_or() \u003C$list filter=\"[enlist\u003Cval>sort[]]\" variable=\"val\"> \u003C\u003Ceditlist_select_and>> \u003C/$list>\n\\define editlist_select_and() \u003C$list filter=\"[enlist\u003Call>search:title:$(flags)$\u003Cval>]\"> `[[`\u003C\u003CcurrentTiddler>>`]]`\u003Cbr> \u003C/$list>\n\n\\define editlist_select_minmax_goto()\n\\whitespace trim\n\u003C$list filter=\"[\u003Clistheight>compare:integer:gt[1]] [\u003Clistheight>!regexp[^\\d+$]] [\u003Clistheight>match[fit]]\" +[limit[1]]>\u003C!-- not a dropdown -->\n\u003Cdiv class=\"editlist_popup_minmax_$(id)$ fadeIn\">\n\u003C$vars hmax={{{ [\u003Cminmax>get[hmax]] }}} vmax={{{ [\u003Cminmax>get[vmax]] }}}>\n\u003C$list filter=\"[\u003Chmax>!match[]] ~[\u003Clistwidth>!match[auto]]\">\n \u003C$button tooltip={{{ [\u003Chmax>match[]then[fit width]else[restore width]] }}}>\n \u003C$list filter=\"[\u003Chmax>match[]]\" emptyMessage={{$:/core/images/chevron-left}}>{{$:/core/images/chevron-right}}\u003C/$list>\n \u003C$action-setfield $tiddler=\u003C\u003Cminmax>> hmax={{{ [\u003Chmax>match[]then[yes]else[]] }}} />\n \u003C$list filter=\"[\u003Chmax>!match[]then\u003Cvmax>match[]]\">\u003C$action-deletetiddler $filter=\"[\u003Cminmax>]\"/>\u003C/$list>\n \u003C\u003Cgotoselect>>\n \u003C/$button>\n\u003C/$list>\n\u003C$list filter=\"[\u003Cvmax>!match[]] ~[\u003Clistheight>!regexp[^\\d+$]] ~[\u003Ccount>compare:integer:gt\u003Clistheight>] +[then\u003Clistheight>!match[fit]]\">\n \u003C$button tooltip={{{ [\u003Cvmax>match[]then[fit height]else[restore height]] }}}>\n \u003C$list filter=\"[\u003Cvmax>match[]]\" emptyMessage={{$:/core/images/chevron-up}}>{{$:/core/images/chevron-down}}\u003C/$list>\n \u003C$action-setfield $tiddler=\u003C\u003Cminmax>> vmax={{{ [\u003Cvmax>match[]then[yes]else[]] }}} />\n \u003C$list filter=\"[\u003Chmax>match[]then\u003Cvmax>!match[]]\">\u003C$action-deletetiddler $filter=\"[\u003Cminmax>]\"/>\u003C/$list>\n \u003C\u003Cgotoselect>>\n \u003C/$button>\n\u003C/$list>\n\u003C$vars curr={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}}>\u003C$vars val={{{ [\u003Ccurr>getindex\u003Cindex>] ~[\u003Ccurr>get\u003Cfield>] }}}>\n\u003C$list filter=\"[\u003Cgoto_button>match[yes]then\u003Cval>!match[]]\">\n \u003C$button tooltip=\"view selected items\"> {{$:/core/images/preview-open}} \u003C\u003Cgoto>>\u003C/$button>\n\u003C/$list>\n\\end\n\n\\define editlist_calendar()\n\u003C$importvariables filter=\"TiddlyTools/Time/Calendar\">\n\u003C$vars showday_popup_extras=\u003C\u003Ceditlist_selectday>>>\n\u003C$vars target={{{ [\u003Cmodal>is[tiddler]else\u003Ctid>] }}}>\n\u003C$vars config=\"$:/state/popup/calendar/config\">\n\u003C$vars format=\"YYYY/0MM/0DD\" month=\u003C\u003Cnow \"[UTC]MM\">> year=\u003C\u003Cnow \"[UTC]YYYY\">>>\n\u003C$list filter=\"[\u003Cconfig>]\">\n\u003C$vars width={{{ [\u003Cstretch>match[auto]then\u003Cwidth>else\u003Cstretch>] }}}>\n\u003C!-- CONVERT WIDTH TO EMWIDTH -->\n\u003C$vars emwidth={{{ [\u003Cwidth>removesuffix[em]] }}}>\n\u003C$vars emwidth={{{ [\u003Cwidth>removesuffix[in]multiply[6.420]else\u003Cemwidth>] }}}> \u003C!-- EMs per inch -->\n\u003C$vars emwidth={{{ [\u003Cwidth>removesuffix[cm]multiply[2.530]else\u003Cemwidth>] }}}> \u003C!-- EMs per cm -->\n\u003C$vars emwidth={{{ [\u003Cwidth>removesuffix[mm]multiply[.2530]else\u003Cemwidth>] }}}> \u003C!-- EMs per mm -->\n\u003C$vars emwidth={{{ [\u003Cwidth>removesuffix[px]multiply[0.066]else\u003Cemwidth>] }}}> \u003C!-- EMs per pixel -->\n\u003C$vars emwidth={{{ [\u003Cwidth>removesuffix[pt]multiply[0.089]else\u003Cemwidth>] }}}> \u003C!-- EMs per point -->\n\u003C!-- GET HEIGHT FROM DAYS PER MONTH -->\n\u003C$vars yyyy={{{ [\u003Cconfig>get[year]else\u003Cyear>] }}} mm={{{ [\u003Cconfig>get[month]else\u003Cmonth>pad[2]] }}}>\n\u003C$vars date={{{ [\u003Cyyyy>addsuffix\u003Cmm>addsuffix[01]] }}}>\n\u003C$wikify name=\"first\" text=\"\"\"\u003C$view tiddler=\u003C\u003Cdate>> field=\"title\" format=\"date\" template=\"[UTC]ddd\" />\"\"\">\n\u003C$vars first={{{ [all[shadows]prefix[$:/language/Date/Short/Day/]get[text]allbefore\u003Cfirst>count[]] }}}>\n\u003C$vars dpm={{{ [\u003Cyyyy>remainder[4]match[0]then[31 29 31 30 31 30 31 31 30 31 30 31]else[31 28 31 30 31 30 31 31 30 31 30 31]] }}}>\n\u003C$vars dm={{{ [\u003Cdpm>split[ ]nth\u003Cmm>] }}}> \u003C!-- days this month -->\n\u003C$vars rows={{{ [\u003Cfirst>subtract[1]add\u003Cdm>divide[7]add[1]trunc[]] }}}> \u003C!-- rows this month -->\n\u003C$vars height={{{ [\u003Crows>multiply[2.5]add[7.25]addsuffix[em]] }}}> \u003C!-- rows + heading + format -->\n\u003C!-- SET SCALE AND SPACER -->\n\u003C$vars scale={{{ [\u003Cstretch>match[no]then[1]] ~[\u003Cemwidth>addsuffix[/18.75]] }}}> \u003C!-- 18.75 = 7 days + borders + padding -->\n\u003C$vars spacer={{{ [\u003Cheight>addsuffix[*]addsuffix\u003Cscale>] }}}>\n\u003C!-- SHOW POPUP OR INLINE CALENDAR -->\n\u003C$list filter=\"[\u003Cshow>match[no]]\" variable=\"show_popup_calendar\">\n \u003C$reveal state=\u003C\u003Cpopup>> type=\"nomatch\" text=\"\" class=\"editlist_calendar_wrapper tc-popup-keep\">\u003C\u003Ceditlist_calendar_show>>\u003C/$reveal>\n\u003C/$list>\n\u003C$list filter=\"[\u003Cshow>!match[no]]\" variable=\"show_inline_calendar\">\n \u003Cdiv style=\"margin-top:1.6em;\">\u003C\u003Ceditlist_calendar_show>>\u003C/div>\n\u003C/$list>\n\\end\n\n\\define editlist_calendar_show()\n\\whitespace trim\n\u003C$eventcatcher events=\"focusin\" actions-focusin=\"\u003C$list filter='[\u003Cshow>match[no]]'>\u003C\u003Copenpopup>>\u003C/$list>\u003C\u003Cstartmodal>>\">\n\u003Cdiv style=\"height:calc($(spacer)$);\">\n \u003Cdiv style=\"transform-origin:top left;transform:scale(calc($(scale)$));\">\n \u003Cdiv class=\"editlist_calendar tc-block-dropdown\" style=\"margin:0;min-width:auto;\">\n \u003C$macrocall $name=\"showmonth\" yyyy={{{ [\u003Cconfig>get[year]else\u003Cyear>] }}} mm={{{ [\u003Cconfig>get[month]else\u003Cmonth>] }}} view=\"edit\" />\n \u003Cdiv>\n \u003C$list filter=\"[\u003Cconfig>get[format]]\">\n \u003C$button class=\"tc-btn-invisible\" style=\"float:right;\" tooltip=\"use default format\">{{$:/core/images/close-button}}\n \u003C$action-deletefield $tiddler=\u003C\u003Cconfig>> $field=\"format\" />\n \u003C/$button>\n \u003C/$list>\n format:\u003Cbr/>\n \u003C$edit-text tag=\"input\" class=\"editlist_calendar_format\" tiddler=\u003C\u003Cconfig>> field=\"format\" default=\u003C\u003Cformat>> placeholder=\u003C\u003Cformat>> />\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\\end\n\n\\define editlist_selectday()\n\\whitespace trim\n\u003C!-- ADD CUSTOM CALENDAR SHOWDAY_POPUP_EXTRAS() MACRO WITH SIMPLE \"SELECTDAY\" BUTTON -->\n\u003C$vars UTC=\"[UTC]\" time=\u003C\u003Cnow \"0hh0mm0ss0XXX\">>>\n\u003C$vars template={{{ [\u003Cconfig>get[format]else\u003Cformat>addprefix\u003CUTC>] }}}>\n\u003C$vars value={{{ [\u003Cdate>addsuffix\u003Ctime>format:date\u003Ctemplate>] }}}>\n\u003C$button class=\"tc-button tt-button\" style=\"text-align:center;width:100%;margin:0.25em 0;\"> ''select this date''\n \u003C$action-setfield $timestamp=\u003C\u003Ctimestamp>> $tiddler=\u003C\u003Ctarget>> $field=\u003C\u003Cfield>> $index=\u003C\u003Cindex>> $value=\u003C\u003Cvalue>> />\n \u003C$action-deletetiddler $filter=\"[\u003Ccalendar_popID>]\" />\n \u003C$list filter='[\u003Cconfirm>!match[yes]]'>\u003C\u003Cclosepopup>>\u003C/$list>\n\u003C/$button>\n\\end\n\n| author|''[ext[Eric Shulman|mailto:elsdesign@gmail.com]]''|\n| source|''http://TiddlyTools.com/edit-list.html''|\n| updated|''\u003C$view field=\"modified\" format=\"date\" template=\"DDD, MMM DDth YYYY at 0hh12:0mm:0ssam\"/>''|\n\n\u003Cpre style=\"font-size:80%;line-height:1em;\">\u003C$text text={{TiddlyTools/Macros/edit-list}}/>\u003C/pre>","title":"$:/ThirdParty/TiddlyTools/Macros/edit-list","creator":"EricShulman","modified":"20230109220547803","modifier":"EricShulman","tags":"$:/tags/Macro TiddlyTools"}, {"created":"20150126131341956","creator":"Tobias Beer","text":"/*\\\ntitle: $:/.tb/macros/calc\ntype: application/javascript\nmodule-type: macro\n\nComputes a (Field) value +,-,*,/ a provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"calc\";\n\nexports.params = [\n\t{name: \"value\"},\n\t{name: \"operation\"},\n\t{name: \"until\"},\n\t{name: \"beyond\"},\n\t{name: \"decimals\"},\n\t{name: \"tiddler\"},\n\t{name: \"by\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(value, operation, until, beyond, decimals, tiddler, by) {\n\tif(!value) {\n\t\treturn;\n\t}\n\tif(\"\" === operation){\n\t\toperation = \"+\";\n\t}\n\tvar\n\t\tcurr,dec,init,initMatch,op,opGiven,r,result,val,\n\t\tregInit = /^((?:[0-9]+)|(?:(?:[0-9]*)[\\.,\\,](?:[0-9]*))){1}[=][>](.*)/mg,\n\t\tops = [\"+\",\"-\",\"*\",\"/\"];\n\tinitMatch = regInit.exec(value);\n\tif(initMatch) {\n\t\tinit = initMatch[1].replace(/[\\,]/,\".\");\n\t\tvalue = initMatch[2];\n\t}\n\tcurr = parseFloat(\n\t\tisNaN(parseFloat(value)) ?\n\t\tthis.wiki.getTextReference(value, init || \"NaN\", tiddler || this.getVariable(\"currentTiddler\")) :\n\t\tvalue\n\t);\n\tuntil = parseFloat(until);\n\tdecimals = parseInt(decimals);\n\n\top = operation.charAt(0);\n\topGiven = ops.indexOf(op) >= 0;\n\tif(!opGiven) {\n\t\top = \"+\";\n\t}\n\tinitMatch = regInit.exec(by);\n\tif(initMatch) {\n\t\tinit = initMatch[1].replace(/[\\,]/,\".\");\n\t\tby = initMatch[2];\n\t}\n\tval = parseFloat(\n\t\tisNaN(parseFloat(by)) ?\n\t\tthis.wiki.getTextReference(by, init || \"NaN\", tiddler || this.getVariable(\"currentTiddler\")) :\n\t\tby\n\t);\n\tif(by === \"\") {\n\t\tval = opGiven ?\n\t\t\t(operation.length \u003C 2 ? 0 : parseFloat(operation.substr(1))) :\n\t\t\tparseFloat(operation);\n\t}\n\tif(isNaN(curr)) {\n\t\tresult = \"NaN\";\n\t} else {\n\t\tswitch (op){\n\t\t\tcase \"-\": result = curr - val; break;\n\t\t\tcase \"*\": result = curr * val; break;\n\t\t\tcase \"/\": result = curr / val; break;\n\t\t\tcase \"+\":\n\t\t\t\t/* falls through */\n\t\t\tdefault: result = curr + val;\n\t\t}\n\t\tif(!isNaN(until)) {\n\t\t\tif (!(\n\t\t\t\t\"+\" == op || \"*\" == op ?\n\t\t\t\tresult \u003C= until :\n\t\t\t\tresult >= until\n\t\t\t)) {\n\t\t\t\tif(\"true\" == beyond) {\n\t\t\t\t\tresult = true;\n\t\t\t\t} else {\n\t\t\t\t\tresult = until;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(beyond && result !== true) {\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif(!isNaN(result)){\n\t\tr = result.toString();\n\t\tdec = r.indexOf('.');\n\t\tif(dec > -1){\n\t\t\tdec = r.substr(dec).length;\n\t\t\tif(\n\t\t\t\t!isNaN(decimals) && dec > decimals ||\n\t\t\t\tisNaN(decimals) && dec > 2\n\t\t\t){\n\t\t\t\tresult = result.toFixed(isNaN(decimals) ? 2 : decimals);\n\t\t\t}\n\t\t}\n\t}\n\treturn result.toString();\n};\n\n})();","bag":"default","revision":"0","type":"application/javascript","title":"$:/ThirdParty/tobibeer/calc","summary":"allows simple calculations based on tiddler fields","module-type":"macro","modifier":"Tobias Beer","modified":"20230110224652721"}, -{"created":"20141211131633372","creator":"Tobias Beer","text":"\\define ibox(image, caption, template:\"$:/ThirdParty/tobibeer/ibox/Lightbox\", btn-class:\"ibox-btn\", direct)\n\u003C$reveal type=match text=\"\" default=\"$direct$\">\u003C$button class=\"$btn-class$\">\u003C$action-sendmessage $message=\"tm-modal\" $param=\"$template$\" image=\"$image$\" caption=\"$caption$\"/>\u003C$image source=\"$image$\"/>\u003C/$button>\u003C/$reveal>\u003C$reveal type=nomatch text=\"\" default=\"$direct$\">\u003C$button class=\"$btn-class$\">\u003C$action-sendmessage $message=\"tm-modal\" $param=\"$image$\"/>\u003C$image source=\"$image$\"/>\u003C/$button>\u003C/$reveal>\u003Cstyle>\n.ibox-btn{\npadding:5px;\n}\n\n.ibox-btn img{\nwidth:150px;\n}\n\n.tc-modal .tc-modal-body > div > img{\n width:100%;\n}\n\u003C/style>\n\\end","title":"$:/ThirdParty/tobibeer/ibox","tags":"$:/tags/Macro","modifier":"Octt","modified":"20230117125511138"}, +{"created":"20141211131633372","creator":"Tobias Beer","text":"\\define ibox(image, caption, template:\"$:/ThirdParty/tobibeer/ibox/Lightbox\", btn-class:\"ibox-btn\", direct)\n\u003C$reveal type=match text=\"\" default=\"$direct$\">\u003C$button class=\"$btn-class$\">\u003C$action-sendmessage $message=\"tm-modal\" $param=\"$template$\" image=\"$image$\" caption=\"$caption$\"/>\u003C$image source=\"$image$\"/>\u003C/$button>\u003C/$reveal>\u003C$reveal type=nomatch text=\"\" default=\"$direct$\">\u003C$button class=\"$btn-class$\">\u003C$action-sendmessage $message=\"tm-modal\" $param=\"$image$\"/>\u003C$image source=\"$image$\"/>\u003C/$button>\u003C/$reveal>\u003Cstyle>\n.ibox-btn {\n padding: 5px;\n}\n\n.ibox-btn img {\n width: 150px;\n}\n\n.tc-modal .tc-modal-body > div > img {\n width: 100%;\n}\n\u003C/style>\n\\end","title":"$:/ThirdParty/tobibeer/ibox","tags":"$:/tags/Macro","modifier":"Octt","modified":"20230225142836580"}, {"created":"20141211130114064","creator":"Tobias Beer","text":"\u003C$image source=\u003C\u003Cimage>> width=\"100%\" height=\"100%\"/>\u003C$reveal type=match text=\"\" default=\u003C\u003Ccaption>>>\u003C$transclude tiddler=\u003C\u003Cimage>> field=caption/>\u003C/$reveal>\u003C$reveal type=nomatch text=\"\" default=caption>\u003C\u003Ccaption>>\u003C/$reveal>","title":"$:/ThirdParty/tobibeer/ibox/Lightbox","tags":"","summary":"the default modal template used with the ibox macro","modifier":"Octt","modified":"20230117130401126","caption":"Lightbox"}, {"created":"20150129001857442","creator":"Tobias Beer","text":"(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nenables js via \u003C\u003Cscript>> and disables with \u003C\u003Cscript 0>>\nModified from original to add ability to exec scripts with a script=\"\" param\n*/\n\nexports.name = \"script\";\n\nexports.params = [\n\t{name: \"run\"},\n {name: \"script\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(run, script) {\n var off = run ? run.toLowerCase() : false;\n\tif(off && [\"0\",\"no\",\"off\",\"false\"].indexOf(off) > -1) {\n\t\t$tw.config.htmlUnsafeElements = [\"script\"];\n\t} else {\n\t\t$tw.config.htmlUnsafeElements = [];\n if (script) {\n eval(script);\n }\n\t}\nreturn \"\";\n};\n})();","type":"application/javascript","title":"$:/ThirdParty/tobibeer/script","tags":"","module-type":"macro","modifier":"Octt","modified":"20230217100026908"}, {"created":"20180630143633913","text":"\\define link(showcount: none) \u003Cspan style=\"display: inline-block\">@@font-size: calc(0.6em + $(count)$px / 2); \u003C$link>\u003C$text text=\u003C\u003Ctitle>> />\u003C/$link>@@ @@font-size: 0.6em;display: $showcount$; (\u003C\u003Ccount>>)@@\u003C/span>\n\n''Credits'' to [[zemoxian (zemox.tiddlyspot.com)|https://zemox.tiddlyspot.com/#Tag%20Cloud]]!\n\n\u003C$edit-text tag=input type=range tiddler=\"$:/temp/cloud/range\"/> {{$:/temp/cloud/range}} \n\u003C$checkbox\n tiddler=\"$:/state/tag-cloud-count\"\n field=text\n checked=inline\n unchecked=none\n> show count\u003C/$checkbox>\n\n@@text-align: center;\n\u003C$list filter=\"[tags[]!is[system]]\">\n\u003C$list filter=\"[all[current]tagging[]rest{$:/temp/cloud/range}first[]]\" variable=_>\n\u003C$vars\n title={{{ [all[current]] }}}\n count=\n{{{ [all[current]tagging[]count[]] }}}\n>\n\u003C$macrocall $name=link showcount={{$:/state/tag-cloud-count}} />\n\u003C/$vars>\n\u003C/$list>\n\u003C/$list>\n@@\n","title":"$:/ThirdParty/zemoxian/Tag Cloud","tags":"TiddlyWiki","modifier":"zemoxian","modified":"20230109231828669","creator":"zemoxian"}, {"created":"20230203215712028","creator":"Octt","text":"","title":"$:/Tools","modified":"20230208214210071","modifier":"Octt","tags":"$:/ToC"}, {"created":"20230124063904327","creator":"Octt","text":"* \u003Ca href=\"javascript:(alert(eval(prompt('Quick Eval'))))\">Quick JavaScript Eval\u003C/a>\n\n* \u003Ca href={{$:/ThirdParty/Eruda-Inject.bkjs}}>Load Eruda DevTools\u003C/a> [\u003Cspan>[[?|Eruda]]\u003C/span>]","tags":"$:/Tools","title":"$:/Tools/DevTools","modified":"20230219160015227","modifier":"Octt"}, {"created":"20140114170004978","text":"Credits: [[https://tw5magick.tiddlyspot.com]]\n\nThis great trick was shown to the tiddlywiki google group by [[Alberto Molina|https://groups.google.com/forum/#!topic/tiddlywiki/OCntQ79DuwM]]. I enhanced it a bit.\n\n|!Search tag: | \u003C$edit-text tiddler=\"$:/temp/RenameTags/search\" tag=\"input\" type=\"text\"/> |\n|!Replace by: | \u003C$edit-text tiddler=\"$:/temp/RenameTags/replace\" tag=\"input\" type=\"text\"/> |\n\n---\n\u003C$reveal type=\"nomatch\" text=\"\" state=\"$:/temp/RenameTags/replace\">\n\n!First step\n!!//Apply the tag \u003C$tiddler tiddler={{$:/temp/RenameTags/replace}}>\u003C$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\u003C/$tiddler> to the following tiddlers//\n\u003C$list filter=\"[!has[draft.of]tag{$:/temp/RenameTags/search}!tag{$:/temp/RenameTags/replace}sort[created]]\">\n\u003C$checkbox tag={{$:/temp/RenameTags/replace}}> \u003C$link to={{!!title}}>\u003C$view field=\"title\"/>\u003C/$link>\u003C/$checkbox>\u003Cbr/>\n\u003C/$list>\n\u003C/$reveal>\n\n\u003C$reveal type=\"nomatch\" text=\"\" state=\"$:/temp/RenameTags/search\">\n\n!Second step\n!!//Remove the tag \u003C$tiddler tiddler={{$:/temp/RenameTags/search}}>\u003C$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\u003C/$tiddler> from the following tiddlers//\n\u003C$list filter=\"[!has[draft.of]tag{$:/temp/RenameTags/search}tag{$:/temp/RenameTags/replace}sort[created]]\">\n\u003C$checkbox tag={{$:/temp/RenameTags/search}}> ~~\u003C$link to={{!!title}}>\u003C$view field=\"title\"/>\u003C/$link>~~\u003C/$checkbox>\u003Cbr/>\n\u003C/$list>\n\u003C/$reveal>","title":"$:/Tools/RenameTags","tags":"","modifier":"Stephan Hradek","modified":"20220926114819573","description":"A great trick invented by Alberto Molina to search and replace tags.","creator":"Stephan Hradek"}, -{"created":"20220920114605308","title":"$:/view","text":"classic","modified":"20220920114631852"}, +{"created":"20220920114605308","creator":"Octt","title":"$:/view","text":"classic","modified":"20230225151317747","modifier":"Octt"}, {"created":"20220923133930693","creator":"Octt","text":"''1337x'' is a [[torrent|BitTorrent]] search engine.\n\n[img[https://upload.wikimedia.org/wikipedia/commons/b/bb/1337X_logo.svg]]\n\nIn recent years, the service has become more popular than some of its older alternatives, in part thanks to some of its quality-ensuring rules.\n\nThe site features text search, categories, and user profiles.","tags":"Web BitTorrent Sharing Research $:/i18n:en","title":"1337x:en","modified":"20230221224113158","modifier":"Octt"}, {"created":"20230111153852789","creator":"Octt","text":"\u003C\u003C^wikipediaframe \"2048 (video game)\">>\n\n!! ''Gamin' Time''\n\n\u003C\u003CiFrameFixed \"https://play2048.co\">>\n\n!! ''Implementations''\n\n* ''Official (Gabriele Cirulli)'': [[Web|https://play2048.co/]] | [[Git|https://github.com/gabrielecirulli/2048/]]\n** Android Repack: [[F-Droid|https://f-droid.org/en/packages/com.uberspot.a2048/]] | [[Git|https://github.com/uberspot/2048-android/]]\n\n* ''Privacy Friendly 2048 (SecUSo)'': [[F-Droid|https://f-droid.org/en/packages/org.secuso.privacyfriendly2048/]] | [[Git|https://github.com/SecUSo/privacy-friendly-2048/]]\n\n!! ''Clones''\n\n* [[2248]]\n* ...\n","tags":"Puzzle $:/i18n:en Game Generic Libre $:/Games","title":"2048","modified":"20230225112624871","modifier":"Octt"}, {"created":"20230205144033227","creator":"Octt","text":"A diverse [[2048]] clone, nice fun.\n\n!! ''Gamin' Time''\n\n\u003C\u003CiFrameFixed \"https://2248game.com\">>\n","tags":"TODO Game $:/Games","title":"2248","modified":"20230225112438828","modifier":"Octt"}, @@ -707,7 +709,7 @@ Error message and password prompt {"created":"20230215213812453","creator":"Octt","text":"\u003C\u003C^WikipediaFrame Calculator en>>\n\n!!! ''Resources''\n\n; Some Calculators\n: \u003C\u003CYoutubeL Ong91Ji3iDk \"EEVblog #1159 - World's Most Precise Pocket Calculator\">>\n\n; Curiosities\n: \u003C\u003CYoutubeL waqDoeQ0Ijw \"Calculator Number Trick: rectangle patterns [Stand-up Maths]\">>\n: \u003C\u003CYoutubeL ihK6MKbHvSc \"How does a calculator work? The magic of the 8-digit four function calculator\">>\n: (Casio) \u003C\u003CYoutubeL 7LKy3lrkTRA \"Why do calculators get this wrong? (We don't know!) [Stand-up Maths]\">>\n: \u003C\u003CYoutubeL dTLhXHyzfEM \"Whats Inside Black Stuff in Calculator Circuit board IC\">>\n\n; DIY, Hacks, Reuses\n: \u003Cdiv>\n\n* \u003C\u003CYoutubeL dJoKl0LK5jM \"HHC 2019: DIY Calculators\">>\n* \u003C\u003CYoutubeL lJu1ij_Emlk \"Ben Heckโs DIY Raspberry Pi Calculator\">>\n* \u003C\u003CYoutubeL HeJPX-fPN6Y \"DIY graphics calculator galdeano02 hardware\">> - //A DIY calculator, programed in micropython, a custom version with lvgl widgets and Eigenmath, a CAS engine//\n* \u003C\u003CYoutubeL m1aFRhqvuLM \"IVEE - a Powerful Programable RPN Calculator based on FORTH and Arduino\">>\n\u003C/div>\n\n: \u003Cdiv>\n\n* \u003C\u003CYoutubeL QlpZyf7hKg8 \"Coil winding counter from old calculator - home made DIY ืืื ื ืืืคืืฃ ืกืืืืื\">>\n** \u003C\u003CYoutubeL TWPS0lI33Mc \"How to make a calculator coil winding counter with a retractable USB cable\">>\n\u003C/div>\n: \u003C\u003CYoutubeL U8DnuSo8SV4 \"EEVblog #962 - Hacking A Calculator Into A Counter\">>\n: \u003C\u003CYoutubeL T9alyB4fznw \"Hacking a pocket calculator as LCD for the Arduino\">>\n: \u003C\u003CYoutubeL EzkUPGPEVp8 \"Turning my High School Calculator into a Mechanical Keyboard. 1 Year Review. [TheLastMillennial]\">>\n\n; Memes\n: [[Fuck man, the Mulino Bianco calculator can make Square Root|https://web.archive.org/web/20230217134036id_/https://i.imgur.com/sM5KmoK.png]]\n: \u003C\u003CYoutubeL \"PLt5AfwLFPxWKAINNfxIdYmFVKuk_F_cQq\" \"Calculator Unboxings on Numberphile\" \"playlist?list=\">>\n: \u003C\u003CYoutubeL Mp_8OqCbFt4 \"POWER OF GAMING CALCULATOR๐ฑโก\">>\n: \u003C\u003CYoutubeL AAw1JjN-7u0 \"When You Are Game Addicted - Casio Calculator Play Racing Game Asphalt\">>\n","title":"Calculator","modified":"20230217143401588","modifier":"Octt"}, {"created":"20230225111237015","creator":"Octt","text":"\u003C\u003C^wikipediaframe Candle en>>","tags":"","title":"Candle","modified":"20230225111724354","modifier":"Octt","icon":"๐ฏ๏ธ","page-cover":"https://source.unsplash.com/random/?Candle"}, {"created":"20230205150537106","creator":"Octt","text":"","tags":"TODO","title":"CASIO","modified":"20230205150543738","modifier":"Octt"}, -{"created":"20230112100848709","creator":"Octt","text":"\u003C\u003CMediaWiki Celeste_(video_game) en 3>>\n\n!! ''Gamin' Time''\n\n\u003C\u003CiFrameFixed \"https://www.lexaloffle.com/bbs/widget.php?pid=15133\" \" \" 'style=\"width:100%; height:512px\"'>>","tags":"TODO Platformer $:/i18n:en Game","title":"Celeste:en","modified":"20230207221631232","modifier":"Octt"}, +{"created":"20230112100848709","creator":"Octt","text":"\u003C\u003C^wikipediaframe \"Celeste (video game)\" en>>\n\n!! ''Gamin' Time''\n\n\u003C\u003CiFrameFixed \"https://www.lexaloffle.com/bbs/widget.php?pid=15133\" \" \" 'style=\"width:100%; height:512px\"'>>","tags":"TODO Platformer $:/i18n:en Game $:/Games","title":"Celeste","modified":"20230225143911212","modifier":"Octt"}, {"created":"20230216224705472","creator":"Octt","text":"!! ''ASCII Art''\n\n\u003C\u003C^wikipediaframe \"ASCII Art\" en>>\n\n!! ''ANSI Art''\n\n\u003C\u003C^wikipediaframe \"ANSI Art\" en>>\n","tags":"Digital Art Visual","title":"Character Art","modified":"20230217074704518","modifier":"Octt"}, {"created":"20230126102033696","creator":"Octt","text":"\u003C\u003CMediaWiki ChatGPT en 2>>","tags":"AI LLM","title":"ChatGPT","modified":"20230206194423427","modifier":"Octt"}, {"created":"20230215191853969","creator":"Octt","text":"\u003C\u003CWikipediaFrame CHIP-8 en>>","tags":"","title":"CHIP-8","modified":"20230215191910586","modifier":"Octt"}, @@ -833,7 +835,7 @@ Error message and password prompt {"created":"20220920160642961","creator":"Octt","text":"; Macros\n: \u003C\u003Cdirtreelist $:/Macros>>\n\u003C!-- > \u003C\u003CTDirList $:/Macros 4>> -->\n\n; Theming\n: \u003C\u003Cdirtreelist $:/Styles>>\n: [[$:/palettes/Octt Light]]\n\u003C!-- > \u003C\u003CTDirList $:/Styles 4>> -->\n\n!!! Modified system and plugin files\n\n; $:/StaticBanner\n: (Shown as banner in statically exported pages)\n\n; $:/core/templates/static.content\n: (Shown as static HTML content in the standard TiddlyWiki file)\n\n; $:/core/templates/exporters/StaticRiver\n: (Added meta viewport for correct viewing on mobile) [[[Pull Request|https://github.com/Jermolene/TiddlyWiki5/pull/6953]]]\n\n; $:/plugins/kookma/refnotes/ui/bibtexlibrary\n: Remove this applet from the sidebar since I don't use it\n\n\u003C!--\n* ~~$:/themes/tiddlywiki/vanilla (Changed paddings)~~\n-->","tags":"TiddlyWiki OcttKB $:/i18n:en","title":"OcttKB/Hacks","modified":"20230219103824938","modifier":"Octt"}, {"created":"20230109112202970","creator":"Octt","text":"\u003Cdiv>\n\u003C$link to=\"OcttKB\" class=\"StartHere-Button\">[img[$:/ThirdParty/Icons/Windows/9x-Start.png]] \u003Cspan>here!\u003C/span>\u003C/$link>\n\u003C/div>\n\n{{$:/OcttKB/ToC}}\n\n\u003C!-- caption: {{$:/language/SideBar/Contents/Caption}} --->\n\n; Other things\n: [[๐๏ธ Comments? Issues? PRs?|https://gitlab.com/octtspacc/OcttKB/-/issues]]\n: [[๐ณ๏ธโ๐ Translate this site (Google)|https://translate.google.com/translate?sl=en&tl=it&hl=en&u=https://kb.octt.eu.org&client=webapp]]\n\n{{$:/OcttKB/LicensingButtons}}\n\n\u003Cbr>\n\n''Last edit at'' {{$:/OcttKB/LastEditTime}}\n","tags":"$:/tags/SideBar","title":"OcttKB/Index","modified":"20230225105337571","caption":"Index","modifier":"Octt","list-before":"$:/core/ui/SideBar/Open"}, {"created":"20220924173239034","creator":"Octt","text":"All my //original content// on this website, unless where otherwise specified, is licensed under [[CC BY-SA 4.0|Creative Commons/BY-SA 4.0:en]].\n\nIt is a [[free culture]] license that promotes the benefits of making information available for anyone to learn from and build upon. However, be sure to know its terms before doing anything other than just consuming the site!\n\nYou can easily recognize which of the directly hosted (entirely contained in a //tiddler// itself, like text, string-encoded files, or standalone files in the file system) content is my original creation: it's anything that features no indication of source or license.\n\nUnless I forget to do so in specific instances, I always credit the source and/or specify the original license for anything upon which I don't hold 100% of the rights (even public domain content) and is a straight copy. I may not do so if the content in question is not directly copied //into// my site, but instead embedded from a Web space which is the property of another entity - in which case, a clickable link directing to the source will be present; if not, you can click the pencil-shaped (edit) button to read the source code for a specific //tiddler//, to discover possible external embed URLs.\n\nThe above is valid for all //content tiddlers// (those whose name does not start with `$:/`) and all //system tiddlers// created by me (not part of standard [[TiddlyWiki|TiddlyWiki]] or any of my [[installed plugins|$:/core/ui/ControlPanel/Plugins]]).\n\n//Non-original system tiddlers// which I never touched, obviously fall under their own license; but, for simplicity of operations, as well as to avoid accidentally claiming ownership on code not written by me, I hereby explicitly give away my copyright for //non-original system tiddlers// that I modified from their original state. This means you can consider those as always falling under their original license, even if I touched them; From another point of view, you can effectively consider any //diff// generated between the original version of a //system tiddler// and my modified version of the same file as falling under public domain.\n\n{{$:/OcttKB/LicensingButtons}}","tags":"OcttKB Legal $:/i18n:en","title":"OcttKB/Licensing","modified":"20230206113209759","modifier":"Octt"}, -{"created":"20230126105640952","creator":"Octt","text":"!!! ''WIP/TODO''\n\n* Better footnotes (should be clickable)\n* Fix StaticRiver template, broken after introducing breadcrumbs ~~(showing duplicate title, and also broken elements)~~\n* Move all bachecoctt links (and old GitHub stars) to proper tiddlers\n* Personal easy notes on various technical things of TiddlyWiki\n* Organize all my customizations into plugins easily installable by anyone\n* On showing date and time of last wiki saving (on Index tab on sidebar), also consider when a system tiddler is edited\n\n* Breadcrumbs bar:\n** Show unformatted title on click or at least disable hiding of some tokens\n** Button to copy full path to clipboard\n** Clicking on a path element brings up the compact directory listing at that point, instead of opening the tiddler directly\n*** Will need to expose an additional button to open the tiddler then\n** In the small directory listing menu, add textbox/button to quickly create a new tiddler in that path\n\n* In whatever directory listing, show button to create a new tiddler in current path\n\n* Custom proper reusable directory tree browser (maybe like the one we have with $:/OcttKB/ToC)\n** To use instead of the [[Directory macros|$:/Macros/Directory]], showing automatically on pages that are directories, and also as a file browser for the whole wiki\n\n* Data compression of everything (without breaking TiddlyWiki CLI support)\n** Choosing algorithm: best is probably Zstd\n** Tiddlers should be stored compressed individually; At saving, they are all compressed and stored in the HTML; At loading, they are read and decompressed to start the app\n** Single tiddlers are only compressed when it actually saves space, they should be checked at saving stage\n\n* When opening missing tiddlers, show a preview from Wikipedia or from word dictionaries, with GUI to customize fetching options\n* To the possible extent, save Git deploy scripts for the KB inside itself, for easy editing needs\n* Case insensitivity for tiddlers (?)\n* Handy button to reload direct scripts like $:/OcttKB/Functions.js\n* A way to reload any internal script (JS macros and exports) without reloading the entire wiki\n* Button to reload a single tiddler; if not possible, then the macros that can fail (e.g. MediaWiki, or all which fetch content from the Internet) should provide their own retry button\n* Fix images embedded with CSS float, make them not go out of tiddler's body if too tall\n* Better positioning of open/close sidebar button (should move the tiddler action bar buttons slightly to the left on single-column layout at least)\n\n* Add a feature to let users send issues or pull requests\n* Maybe add normal user comments?\n\n* Rehost embedded games for better CSS\n** Find the best retro console HTML5 emulator to embed in tiddlers which talk about certain games - they also need to be adapted to load ROMs from URL\n\n* In here I also put some tiddlers that are about a mainstream thing or topic just because they are connected to a more worthy tiddler; they should be tagged as Mainstream so that they can be filtered out in search and stuff\n* Special protection for some tiddlers, not encryption necessarily but just lock access to them globally until a specific task is performed (a password inputted is boring, maybe specific screen swipes is better)\n\n* \"Back to top\" button\n** Made with the style of bilibili, graphic is reused but logic needs to be reprogrammed\n\n!!!! ''Nice to have''\n* When tiddlers are transcluded show a small version of their action bar without the `\u003C\u003C{ >>` macro\n* Automatic lightboxes for images, without having to use the `\u003C\u003Cibox>>` macro\n\n!!!! ''i18n''\n* Make the language bar collapsed by default, or make it a menu callable by a button on the tiddler\n** Show the button as a country flag in the tiddler title maybe? Ideally showing it in place of the \":lang\" suffix when present\n* Selecting to open a language on a tiddler should ideally remove the previously open tiddler from the story river (or else if you switch language many times you have a cluttered river but no real advantage)\n* Automatically handle connections between different-language versions of a tiddler when the only difference in title is the \":lang\" suffix, without manually setting \"i18n\" attribute\n* Automatically handle eventual tiddlers which don't exist by their common i18n name (e.g \"Thing\") but do with a \":lang\" suffix, that should automatically transclude the //preferred language//\n** Preferred language could be enforced by the user with a global setting, or just be set softly based on the language of the last tiddler opened by the user (latter is ideal)\n\n!!!! ''External wikis''\n* Unified transclusion features for external TiddlyWikis and MediaWikis\n** Adapt the [[MediaWiki macro|$:/Macros/MediaWiki]] to:\n** Have internal links present\n*** Add lists of known wikis callable from a shorthand name\n*** Choosing number (by total from first/last, or ranges), or titles, of paragraphs or chapters to transclude (with support for specifying items to exclude)\n*** Retrieving and embedding files from wiki or Commons by known name (`File:`)\n*** It must also handle files that aren't images (audio/video)\n**** Default embed displays also the article cover image, allow setting a custom file or just `none`\n** Understand transclusions from external TiddlyWikis (it seems like people just use iframes, OK for showing things but not for choosing to display specific limited sections)\n* Somehow have working full-text search for tiddlers that transclude external wikis?\n\n!!!! ''Graphing and statistics''\n* Keyword (not tag) cloud ([[[tw5] Simple Word Clouds|https://talk.tiddlywiki.org/t/tw5-simple-word-clouds/3234]]?)\n* Need to get an automatic content-based relationship map (like the one on [[https://baczek.me/map/]])\n* Activity view with calendar (like KOReader) \u003C!-- or squares wall (Git) -->\n","tags":"OcttKB $:/i18n:en","title":"OcttKB/WIP","modified":"20230219113858036","modifier":"Octt"}, +{"created":"20230126105640952","creator":"Octt","text":"!!! ''WIP/TODO''\n\n* Better footnotes (should be clickable)\n* Fix StaticRiver template, broken after introducing breadcrumbs ~~(showing duplicate title, and also broken elements)~~\n* Move all bachecoctt links (and old GitHub stars) to proper tiddlers\n* Personal easy notes on various technical things of TiddlyWiki\n* Organize all my customizations into plugins easily installable by anyone\n* On showing date and time of last wiki saving (on Index tab on sidebar), also consider when a system tiddler is edited\n\n* Breadcrumbs bar:\n** Show unformatted title on click or at least disable hiding of some tokens\n** Button to copy full path to clipboard\n** Clicking on a path element brings up the compact directory listing at that point, instead of opening the tiddler directly\n*** Will need to expose an additional button to open the tiddler then\n** In the small directory listing menu, add textbox/button to quickly create a new tiddler in that path\n\n* In whatever directory listing, show button to create a new tiddler in current path\n\n* Custom proper reusable directory tree browser (maybe like the one we have with $:/OcttKB/ToC)\n** To use instead of the [[Directory macros|$:/Macros/Directory]], showing automatically on pages that are directories, and also as a file browser for the whole wiki\n\n* Data compression of everything (without breaking TiddlyWiki CLI support)\n** Choosing algorithm: best is probably Zstd\n** Tiddlers should be stored compressed individually; At saving, they are all compressed and stored in the HTML; At loading, they are read and decompressed to start the app\n** Single tiddlers are only compressed when it actually saves space, they should be checked at saving stage\n\n* When opening missing tiddlers, show a preview from Wikipedia or from word dictionaries, with GUI to customize fetching options\n* To the possible extent, save Git deploy scripts for the KB inside itself, for easy editing needs\n* Case insensitivity for tiddlers (?)\n* Handy button to reload direct scripts like $:/OcttKB/Functions.js\n* A way to reload any internal script (JS macros and exports) without reloading the entire wiki\n* Button to reload a single tiddler; if not possible, then the macros that can fail (e.g. MediaWiki, or all which fetch content from the Internet) should provide their own retry button\n* Fix images embedded with CSS float, make them not go out of tiddler's body if too tall\n* Better positioning of open/close sidebar button (should move the tiddler action bar buttons slightly to the left on single-column layout at least)\n\n* Add a feature to let users send issues or pull requests\n* Maybe add normal user comments?\n\n* Rehost embedded games for better CSS\n** Find the best retro console HTML5 emulator to embed in tiddlers which talk about certain games - they also need to be adapted to load ROMs from URL\n\n* In here I also put some tiddlers that are about a mainstream thing or topic just because they are connected to a more worthy tiddler; they should be tagged as Mainstream so that they can be filtered out in search and stuff\n* Special protection for some tiddlers, not encryption necessarily but just lock access to them globally until a specific task is performed (a password inputted is boring, maybe specific screen swipes is better)\n\n* \"Back to top\" button\n** Made with the style of bilibili, graphic is reused but logic needs to be reprogrammed\n\n!!!! ''Nice to have''\n* When tiddlers are transcluded show a small version of their action bar without the `\u003C\u003C{ >>` macro\n* Automatic lightboxes for images, without having to use the `\u003C\u003Cibox>>` macro\n\n!!!! ''i18n''\n* Make the language bar collapsed by default, or make it a menu callable by a button on the tiddler\n** Show the button as a country flag in the tiddler title maybe? Ideally showing it in place of the \":lang\" suffix when present\n* Selecting to open a language on a tiddler should ideally remove the previously open tiddler from the story river (or else if you switch language many times you have a cluttered river but no real advantage)\n* Automatically handle connections between different-language versions of a tiddler when the only difference in title is the \":lang\" suffix, without manually setting \"i18n\" attribute\n* Automatically handle eventual tiddlers which don't exist by their common i18n name (e.g \"Thing\") but do with a \":lang\" suffix, that should automatically transclude the //preferred language//\n** Preferred language could be enforced by the user with a global setting, or just be set softly based on the language of the last tiddler opened by the user (latter is ideal)\n\n!!!! ''External wikis''\n* Unified transclusion features for external TiddlyWikis and MediaWikis\n** Adapt the [[MediaWiki macro|$:/Macros/MediaWiki]] to:\n** Have internal links present\n*** Add lists of known wikis callable from a shorthand name\n*** Choosing number (by total from first/last, or ranges), or titles, of paragraphs or chapters to transclude (with support for specifying items to exclude)\n*** Retrieving and embedding files from wiki or Commons by known name (`File:`)\n*** It must also handle files that aren't images (audio/video)\n**** Default embed displays also the article cover image, allow setting a custom file or just `none`\n** Understand transclusions from external TiddlyWikis (it seems like people just use iframes, OK for showing things but not for choosing to display specific limited sections)\n* Somehow have working full-text search for tiddlers that transclude external wikis?\n\n!!!! ''Graphing and statistics''\n* Keyword (not tag) cloud ([[[tw5] Simple Word Clouds|https://talk.tiddlywiki.org/t/tw5-simple-word-clouds/3234]]?)\n* Need to get an automatic content-based relationship map (like the one on [[https://baczek.me/map/]])\n* Activity view with calendar (like KOReader) \u003C!-- or squares wall (Git) -->\n\n!!!! ''Strategies for storing data''\n\nWhat are the ways that are most easily reusable, with the best UI possible, and many querying capabilities, to store the following data?\n\n* CLI commands and flags, with snippets - how to view them in an interactive and visually compact form, to show only what each possible option does only when needed?\n* Simple links that correlate to many different topics - I'm not making a dedicated tiddler for every single one, that's crazy\n** ..or just any kind of data, Wikidata-style\n* \n","tags":"OcttKB $:/i18n:en","title":"OcttKB/WIP","modified":"20230225151155605","modifier":"Octt"}, {"created":"20230217075057597","creator":"Octt","text":"\u003C\u003C^wikipediaframe OLED>>","tags":"Light","title":"OLED","modified":"20230217075257066","modifier":"Octt"}, {"created":"20230108195546523","text":"The following entities host miscellaneous useful open-source Internet services for the public. Some are classifiable as [[pubnixes|Pubnix:en]].\n\n* [[adminForge|https://services.adminforge.de]]\n* [[Artemis|https://artemislena.eu/services]]\n* [[Bฤ czek|https://baczek.me/decentralisation]]\n* [[Brotherbear Den|https://stuehieyr.com]]\n* [[bus-hit.me|https://bus-hit.me/#services]]\n* [[dcs0|https://dcs0.hu]]\n* [[CachyOS|https://github.com/CachyOS/CachyOS-services/blob/master/README.md]]\n* [[Devol|https://devol.it]]\n* [[dhusch.de|https://dhusch.de]]\n* [[Disroot|https://disroot.org/en]]\n* [[domain.glass|https://domain.glass]]\n* [[Drivet|https://drivet.xyz/services]]\n* [[envs.net|https://envs.net]]\n* [[Esmail EL BoB|https://esmailelbob.xyz/en]]\n* [[Epic Site|https://epicsite.xyz]]\n* [[Freedit|https://freedit-org.github.io/status]]\n* [[foss.wtf|https://foss.wtf]]\n* [[Garuda Linux|https://start.garudalinux.org]]\n* [[GGC-Project|https://www.ggc-project.de/index.html#services]]\n* [[Hostux|https://hostux.network/en]]\n* [[Jae.fi|https://jae.fi/#public-services]]\n* [[kavin.rocks|https://kavin.rocks]]\n* [[LibertaCasa|https://liberta.casa]]\n* [[Lunar.ICU|https://service.lunar.icu]]\n* [[ManaSiWibi|https://manasiwibi.com/public-instance-services]]\n* [[Mask.sh|https://mask.sh]]\n* [[Miaoute (4201337.xyz)|https://4201337.xyz]]\n* [[Ming Di Leom (mdleom.com)|https://mdleom.com/about/#Services]]\n* [[Mico Hautaluoma (mha.fi)|https://mha.fi/services]]\n* [[mint.lgbt|https://mint.lgbt]]\n* [[namazso|https://namazso.eu]]\n* [[Odyssey346|https://odyssey346.dev/posts/selfhost]]\n* [[Plausibility|https://plausibility.cloud]]\n* [[Plus St|https://plus.st]]\n* [[PrivacyDev|https://privacydev.net/services.html]]\n* [[Privex+PrivacyTools|https://www.privex.io/articles/privacy-frontends]]\n* [[Project Segfault|https://projectsegfau.lt]]\n* [[Puffyan|https://puffyan.us]]\n* [[PussTheCat.org|https://pussthecat.org]]\n* [[Riseup|https://riseup.net]]\n* [[Riverside Rocks|https://riverside.rocks]]\n* [[rtrace.io|https://status.rtrace.io]]\n* [[Stetsed's Selfhosted (selfhostable.net)|https://dash.selfhostable.net]]\n* [[Services FACiLes|https://facil.services]]\n* [[Seth For Privacy|https://status.sethforprivacy.com]]\n* [[Slipfox Network Suite|https://slipfox.xyz]]\n* [[Snopyta|https://snopyta.org]]\n* [[Strongthany|https://blog.strongthany.cc/about/#other-strongservices]]\n* [[The Froth Zone|https://status.froth.zone]]\n* [[The kitty zone|https://thekitty.zone]]\n* [[Tiekรถtter|https://www.tiekoetter.com/en/services]]\n* [[Tildeverse|https://tildeverse.org]]\n* [[Tinfoil-hat.net|https://tinfoil-hat.net]]\n* [[Tokhmi|https://status.tokhmi.xyz]]\n* [[TotalDarkness|https://totaldarkness.net]]\n* [[TROM.tf|https://trom.tf]]\n* [[~vern|https://vern.cc]]\n* [[Voring.me|https://status.voring.me]]\n* [[weblibre.org|https://weblibre.org]]\n* [[whatever.social|https://whatever.social]]\n* [[YuruVerse (funami.tech)|https://funami.tech]]\n* [[zaggy.nl|https://zaggy.nl]]\n\n!!! Specific single offerings\n\n* [[CryptPad|CryptPad:en]]: [[๐ Curated List|https://cryptpad.org/instances]]\n\n* [[SearX/SearXNG|SearX:en]] (Metasearch engine): [[๐ Curated List|https://searx.space]] | [[priv.au|https://priv.au]]\n\n* [[Whoogle|Whoogle:en]]: [[๐ Curated List|https://github.com/benbusby/whoogle-search#public-instances]]\n\n* [[Lingva|Lingva:en]]: [[๐ Curated List|https://github.com/TheDavidDelta/lingva-translate#instances]]\n\n* [[Libreddit|Libreddit:en]]: [[๐ Curated List|https://github.com/libreddit/libreddit-instances/blob/master/instances.md]]\n\n* [[Teddit|Teddit:en]]: [[๐ Curated List|https://codeberg.org/teddit/teddit#instances]]\n\n* [[Nitter|Nitter:en]] (Twitter frontend): [[๐ Curated List|https://xnaas.github.io/nitter-instances]]\n\n* [[Invidious|Invidious:en]]: [[๐ Curated List|https://api.invidious.io]] \u003C!--| [[com.sb|https://y.com.sb]], [[flokinet.to|https://invidious.flokinet.to]], [[lidarshield|https://invidious.lidarshield.cloud]], [[ggtyler.dev|https://iv.ggtyler.dev]], [[melmac.space|https://iv.melmac.space]], [[nerdvpn.de|https://invidious.nerdvpn.de]], [[priv.au|https://vid.priv.au]], [[Silur.me|https://invidious.silur.me]]--->\n\n* [[Piped|Piped:en]]: [[๐ Curated List|https://github.com/TeamPiped/Piped/wiki/Instances]]\n","tags":"Internet $:/i18n:en","title":"Open Services Providers","modified":"20230206111552312","modifier":"Octt"}, {"created":"20230213172417684","creator":"Octt","text":"\u003C\u003CMediaWiki OpenVPN en 5>>\n\n* https://openvpn.net/\n* https://github.com/OpenVPN\n* [[Android]] Client: [\u003C\u003CFDroidLink de.blinkt.openvpn>>] [\u003C\u003CGPlayLink de.blinkt.openvpn>>] [[[Git|https://github.com/schwabe/ics-openvpn]]]\n","tags":"VPN Libre","title":"OpenVPN","modified":"20230213173140940","modifier":"Octt"}, @@ -899,8 +901,8 @@ Error message and password prompt {"created":"20230206204937437","creator":"Octt","text":"\u003C\u003CMediaWiki Telegram_(software) en 1>>","tags":"","title":"Telegram","modified":"20230206205147969","modifier":"Octt"}, {"created":"20230205142300738","creator":"Octt","text":"","tags":"Protocol TODO","title":"Telnet","modified":"20230205142342159","modifier":"Octt"}, {"created":"20230205144623259","creator":"Octt","text":"","tags":"Android TODO","title":"Termux","modified":"20230205144712142","modifier":"Octt"}, +{"created":"20230112091241450","creator":"Octt","text":"\u003C\u003C^wikipediaframe Tetris>>\n\n!! ''Gamin' Time''\n\n\u003C\u003CiFrameFixed \"https://reactgular.github.io/tetromino\">>","tags":"TODO Puzzle $:/i18n:en Game Generic $:/Games","title":"Tetris","modified":"20230225144132380","modifier":"Octt"}, {"created":"20230114125105418","creator":"Octt","text":"","tags":"TODO $:/i18n:en Game Proprietary","title":"Tetris Effect:en","modified":"20230207221713804","modifier":"Octt"}, -{"created":"20230112091241450","creator":"Octt","text":"\u003C\u003CMediaWiki Tetris en 3>>\n\n!! ''Gamin' Time''\n\n\u003C\u003CiFrameFixed \"https://reactgular.github.io/tetromino\">>","tags":"TODO Puzzle $:/i18n:en Game Generic","title":"Tetris:en","modified":"20230211163900356","modifier":"Octt"}, {"created":"20230205144742742","creator":"Octt","text":"\u003C\u003CMediaWiki Tetris_effect en 4>>","tags":"","title":"Tetris/effect","modified":"20230207220154847","modifier":"Octt"}, {"created":"20230130143847729","creator":"Octt","text":"\u003C\u003C.@Wikipedia The_Legend_of_Zelda en >>","tags":"Nintendo Retro $:/i18n:en Game Proprietary","title":"The Legend of Zelda:en","modified":"20230207221713804","modifier":"Octt"}, {"created":"20230208214932674","creator":"Octt","text":"\u003C\u003CMediaWiki The_World_Factbook en 5>>","tags":"USA Gov. Book Site Web","title":"The World Factbook","modified":"20230208215147789","modifier":"Octt"}, @@ -916,6 +918,7 @@ Error message and password prompt {"created":"20230109104324882","text":"\u003C\u003CMediaWiki Twitter en 1>>","tags":"Internet TODO $:/i18n:en","title":"Twitter:en","modified":"20230206111552411","modifier":"Octt"}, {"created":"20230205151025917","creator":"Octt","text":"","tags":"TODO","title":"TWRP","modified":"20230205151249161","modifier":"Octt"}, {"created":"20230206192622617","creator":"Octt","text":"\u003C\u003CMediaWiki Ubuntu en 3>>","title":"Ubuntu","modified":"20230206192749386","modifier":"Octt","tags":"GNU Linux Debian [[Canonical Ltd]]"}, +{"created":"20230225150019278","creator":"Octt","text":"\u003C\u003C^wikipediaframe Unicode>>\n\n!! ''Emoji''\n\n\u003C\u003C^wikipediaframe Emoji>>\n","tags":"","title":"Unicode","modified":"20230225151034804","modifier":"Octt"}, {"created":"20230202232344991","creator":"Octt","text":"\u003C\u003CMediaWiki Unix en 4>>","tags":"$:/i18n:en","title":"UNIX:en","modified":"20230206111552412","modifier":"Octt"}, {"created":"20230114161806791","creator":"Octt","text":"\u003C!--\n\\define URLRnd() https://source.unsplash.com/random?\u003C$macrocall $name=\"now\"/>\u003C\u003Cnow \"hh.mm.ss.XXX\">>\n--->\n\n''[[Unsplash|https://unsplash.com]]'' provides royalty-free and credit-free pictures, sorted by category and easily obtainable trough both a webapp and an HTTP GET API (even without authentication), under the \"Unsplash license\".\n\n\u003C\u003C^wikipediaframe Unsplash en>>\n\nMany decorative images on this KB are hotliked from Unsplash; some randomly, some not.\n\n!!! ''Unauthenticated API''\n\nThe base URL for all following endpoints is `https://source.unsplash.com`.\n\n\u003C\u003C\u003C\n(Adapted from [[Generate Random Images From Unsplash Without Using The API|https://awik.io/generate-random-images-unsplash-without-using-api/]])\n\nThe URL schema is the following:\n\n```txt\nhttps://source.unsplash.com/{From}/[Size]/?[Keywords]\n```\n\n; `{From}`\n: `/random` - Image from a random user\n: `/user/{Username}` - Image from a specific user\n; `[Size]`\n: `{Width}x{Height}` - Image of specific size of width * height\n; `[Keywords]` - Image with certain keyword[s]; Multiple can be specified by separation with:^^[citation needed]^^\n: `Word1[,...]` - Comma: meaning AND\n: `Word1[-...]` - Dash: meaning OR\n\n\u003C\u003C\u003C\n\n!!! ''Random Picture from the Gallery''\n\n\u003Ca href=\"https://unsplash.com\" rel=\"noopener noreferrer\" target=\"_blank\">\u003Cimg class=\"Img90\" src=\"https://source.unsplash.com/random\">\u003C/a>\n\n\u003C!--\n\u003Ca href=\"https://source.unsplash.com/random?{{{[\u003Cnow hh.mm.ss.XXX>]}}}\">a\u003C/a>\n--->","tags":"Internet $:/i18n:en $:/Apps","title":"Unsplash","modified":"20230221195107270","modifier":"Octt","icon":"๐","page-cover":"https://source.unsplash.com/random?web-design"}, {"created":"20230205142939788","creator":"Octt","text":"","tags":"TODO","title":"USB","modified":"20230205142946545","modifier":"Octt"}, @@ -955,7 +958,7 @@ Error message and password prompt {"created":"20230202225649145","creator":"Octt","text":"\u003C\u003CWikipediaFrame XML en>>","tags":"$:/i18n:en","title":"XML:en","modified":"20230206111552472","modifier":"Octt"}, {"created":"20230109104559438","text":"\u003C\u003CMediaWiki YouTube en 1>>","tags":"Internet TODO $:/i18n:en","title":"YouTube:en","modified":"20230206111552474","modifier":"Octt"}, {"created":"20230203223632196","creator":"Octt","text":"\u003C\u003CMediaWiki Zettelkasten en 2>>\n\n* Good website about ZK: [[zettelkasten.de|https://zettelkasten.de/]] (CC BY-SA)","tags":"$:/i18n:en","title":"Zettelkasten","modified":"20230209162956023","modifier":"Octt"}, -{"created":"20230215194409423","creator":"Octt","text":"Most efficient compression algorithm available today.\n\nAt the maximux compression setting, it has:\n\n* Compression ratio just a bit worse than lzma, better than deflate.\n* Decompression speed much higher than lzma or deflate.\n\n\u003C\u003C^WikipediaFrame zstd en>>\n\n* https://facebook.github.io/zstd/\n* https://github.com/facebook/zstd\n","tags":"Libre Meta Algorithm Compression","title":"zstd","modified":"20230225105251445","modifier":"Octt"} +{"created":"20230215194409423","creator":"Octt","text":"Most efficient compression algorithm available today.\n\nAt the maximux compression setting, it has:\n\n* Compression ratio just a bit worse than lzma, better than deflate.\n* Decompression speed much higher than lzma or deflate.\n\n\u003C\u003CiboxL \"https://raw.githubusercontent.com/facebook/zstd/master/doc/images/DCspeed5.png\">>\n\n\u003C\u003C^WikipediaFrame zstd en>>\n\n* https://facebook.github.io/zstd/\n* https://github.com/facebook/zstd\n","tags":"Libre Algorithm Compression [[Meta Inc]]","title":"zstd","modified":"20230225142017281","modifier":"Octt"} ]</script><div id="storeArea" style="display:none;"></div> <!--~~ Library modules ~~--> <div id="libraryModules" style="display:none;">