1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-01-26 12:53:42 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
Jeremy Ruston
b5030abe9e Initial commit
Fixes #8842
2024-12-22 13:47:57 +00:00
235 changed files with 33 additions and 13346 deletions

View File

@@ -4,9 +4,8 @@ on:
branches:
- master
- tiddlywiki-com
- multi-wiki-support
env:
NODE_VERSION: "23"
NODE_VERSION: "22"
jobs:
test:
runs-on: ubuntu-latest
@@ -83,14 +82,3 @@ jobs:
- run: "./bin/build-tw-org.sh"
env:
GH_TOKEN: ${{ secrets.GITHUBPUSHTOKEN }}
build-mws-tiddlywiki-com:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/multi-wiki-support'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: "${{ env.NODE_VERSION }}"
- run: "./bin/build-mws-site.sh"
env:
GH_TOKEN: ${{ secrets.GITHUBPUSHTOKEN }}

2
.gitignore vendored
View File

@@ -5,9 +5,7 @@
tmp/
output/
node_modules/
store/
/test-results/
/playwright-report/
/playwright/.cache/
$__StoryList.tid
/editions/test/test-store/*

View File

@@ -1,4 +0,0 @@
The `multi-wiki-support` branch includes some changes that are not intended to be merged into the `master` branch:
* Readme update (see `editions/tw5.com/tiddlers/readme/ReadMe.tid`)
* Remove `multiwikiserver` plugin from `readme-bld.sh` (see `bin/readme-bld.sh`)

View File

@@ -1,97 +0,0 @@
#!/bin/bash
# Build mws.tiddlywiki.com assets.
# Default to the version of TiddlyWiki installed in this repo
if [ -z "$MWSTWCOM_BUILD_TIDDLYWIKI" ]; then
MWSTWCOM_BUILD_TIDDLYWIKI=./tiddlywiki.js
fi
echo "Using MWSTWCOM_BUILD_TIDDLYWIKI as [$MWSTWCOM_BUILD_TIDDLYWIKI]"
# Set up the build details
if [ -z "$MWSTWCOM_BUILD_DETAILS" ]; then
MWSTWCOM_BUILD_DETAILS="$(git symbolic-ref --short HEAD)-$(git rev-parse HEAD) from $(git remote get-url origin)"
fi
echo "Using MWSTWCOM_BUILD_DETAILS as [$MWSTWCOM_BUILD_DETAILS]"
if [ -z "$MWSTWCOM_BUILD_COMMIT" ]; then
MWSTWCOM_BUILD_COMMIT="$(git rev-parse HEAD)"
fi
echo "Using MWSTWCOM_BUILD_COMMIT as [$MWSTWCOM_BUILD_COMMIT]"
# Set up the build output directory
if [ -z "$MWSTWCOM_BUILD_OUTPUT" ]; then
MWSTWCOM_BUILD_OUTPUT=$(mktemp -d)
fi
mkdir -p $MWSTWCOM_BUILD_OUTPUT
if [ ! -d "$MWSTWCOM_BUILD_OUTPUT" ]; then
echo 'A valid MWSTWCOM_BUILD_OUTPUT environment variable must be set'
exit 1
fi
echo "Using MWSTWCOM_BUILD_OUTPUT as [$MWSTWCOM_BUILD_OUTPUT]"
# Pull existing GitHub pages content
git clone --depth=1 --branch=main "https://github.com/TiddlyWiki/mws.tiddlywiki.com-gh-pages.git" $MWSTWCOM_BUILD_OUTPUT
# Make the CNAME file that GitHub Pages requires
echo "mws.tiddlywiki.com" > $MWSTWCOM_BUILD_OUTPUT/CNAME
# Delete any existing static content
mkdir -p $MWSTWCOM_BUILD_OUTPUT/static
rm $MWSTWCOM_BUILD_OUTPUT/static/*
# Put the build details into a .tid file so that it can be included in each build (deleted at the end of this script)
echo -e -n "title: $:/build\ncommit: $MWSTWCOM_BUILD_COMMIT\n\n$MWSTWCOM_BUILD_DETAILS\n" > $MWSTWCOM_BUILD_OUTPUT/build.tid
######################################################
#
# mws.tiddlywiki.com distribution
#
######################################################
# /index.html Main site
# /favicon.ico Favicon for main site
# /static.html Static rendering of default tiddlers
# /alltiddlers.html Static rendering of all tiddlers
# /static/* Static single tiddlers
# /static/static.css Static stylesheet
# /static/favicon.ico Favicon for static pages
node $MWSTWCOM_BUILD_TIDDLYWIKI \
editions/multiwikidocs \
--verbose \
--version \
--load $MWSTWCOM_BUILD_OUTPUT/build.tid \
--output $MWSTWCOM_BUILD_OUTPUT \
--build favicon static index \
|| exit 1
# Delete the temporary build tiddler
rm $MWSTWCOM_BUILD_OUTPUT/build.tid || exit 1
# Push output back to GitHub
# Exit script immediately if any command fails
set -e
pushd $MWSTWCOM_BUILD_OUTPUT
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
git add -A .
git commit --message "GitHub build: $GITHUB_RUN_NUMBER of $TW5_BUILD_BRANCH ($(date +'%F %T %Z'))"
git remote add deploy "https://$GH_TOKEN@github.com/TiddlyWiki/mws.tiddlywiki.com-gh-pages.git" &>/dev/null
git push deploy main &>/dev/null
popd

View File

@@ -2,8 +2,6 @@
# test TiddlyWiki5 for tiddlywiki.com
npm install
node ./tiddlywiki.js \
./editions/test \
--verbose \

View File

@@ -10,7 +10,6 @@ fi
# tw5.com readmes
node $TW5_BUILD_TIDDLYWIKI \
+plugins/tiddlywiki/multiwikiserver \
editions/tw5.com \
--verbose \
--output . \

View File

@@ -4,7 +4,7 @@ type: text/plain
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
Copyright (c) 2004-2007, Jeremy Ruston
Copyright (c) 2007-2025, UnaMesa Association
Copyright (c) 2007-2024, UnaMesa Association
All rights reserved.
Redistribution and use in source and binary forms, with or without

View File

@@ -38,13 +38,6 @@ Commander.prototype.log = function(str) {
}
};
/*
Clear pending commands
*/
Commander.prototype.clearCommands = function() {
this.commandTokens = this.commandTokens.slice(0,this.nextToken);
};
/*
Write a string if verbose flag is set
*/

View File

@@ -16,7 +16,7 @@ var Server = require("$:/core/modules/server/server.js").Server;
exports.info = {
name: "listen",
synchronous: false,
synchronous: true,
namedParameterMode: true,
mandatoryParameters: []
};
@@ -38,11 +38,7 @@ Command.prototype.execute = function() {
wiki: this.commander.wiki,
variables: self.params
});
var nodeServer = this.server.listen(null,null,null,{
callback: function() {
self.callback();
}
});
var nodeServer = this.server.listen();
$tw.hooks.invokeHook("th-server-command-post-start",this.server,nodeServer,"tiddlywiki");
return null;
};

View File

@@ -1,37 +0,0 @@
/*\
title: $:/core/modules/commands/quit.js
type: application/javascript
module-type: command
Immediately ends the TiddlyWiki process
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
name: "quit",
synchronous: true
};
var Command = function(params,commander,callback) {
var self = this;
this.params = params;
this.commander = commander;
this.callback = callback;
};
Command.prototype.execute = function() {
// Clear any pending commands
this.commander.clearCommands();
// We don't actually quit, we just issue the "th-quit" hook to give listeners a chance to exit
$tw.hooks.invokeHook("th-quit");
return null;
};
exports.Command = Command;
})();

View File

@@ -31,7 +31,7 @@ exports.run = function(baseName,separator,template,startCount) {
}
// $tw.wiki.generateNewTitle = function(baseTitle,options)
// options.prefix must be a string!
return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount}).trim();
return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount});
};
})();

View File

@@ -364,11 +364,6 @@ Server.prototype.listen = function(port,host,prefix) {
}
// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)
server.on("listening",function() {
// Stop listening when we get the "th-quit" hook
$tw.hooks.addHook("th-quit",function() {
server.close();
});
// Log listening details
var address = server.address(),
url = self.protocol + "://" + (address.family === "IPv6" ? "[" + address.address + "]" : address.address) + ":" + address.port + prefix;
$tw.utils.log("Serving on " + url,"brown/orange");

View File

@@ -257,11 +257,7 @@ Save an incoming tiddler in the store, and updates the associated tiddlerInfo
Syncer.prototype.storeTiddler = function(tiddlerFields) {
// Save the tiddler
var tiddler = new $tw.Tiddler(tiddlerFields);
// Only save the tiddler if it has changed
var existingTiddler = this.wiki.getTiddler(tiddlerFields.title);
if(!existingTiddler || !existingTiddler.isEqual(tiddler)) {
this.wiki.addTiddler(tiddler);
}
this.wiki.addTiddler(tiddler);
// Save the tiddler revision and changeCount details
this.tiddlerInfo[tiddlerFields.title] = {
revision: this.getTiddlerRevision(tiddlerFields.title),
@@ -560,7 +556,6 @@ SaveTiddlerTask.prototype.run = function(callback) {
// Invoke the callback
callback(null);
},{
syncer: self.syncer,
tiddlerInfo: self.syncer.tiddlerInfo[self.title]
});
} else {
@@ -591,7 +586,6 @@ DeleteTiddlerTask.prototype.run = function(callback) {
// Invoke the callback
callback(null);
},{
syncer: self.syncer,
tiddlerInfo: self.syncer.tiddlerInfo[this.title]
});
};
@@ -620,8 +614,6 @@ LoadTiddlerTask.prototype.run = function(callback) {
}
// Invoke the callback
callback(null);
},{
syncer: self.syncer
});
};

View File

@@ -163,4 +163,4 @@ ImageWidget.prototype.refresh = function(changedTiddlers) {
exports.image = ImageWidget;
})();
})();

View File

@@ -1,14 +0,0 @@
created: 20240313100515958
modified: 20241222104855231
original-modified: 20240313103959789
tags: Editions
title: TiddlyWiki Docs PR Maker
ja-title: TiddlyWikiドキュメントPRメーカー
[[@saqimtiaz|https://github.com/saqimtiaz/]]が作成した''~TiddlyWikiドキュメントPRメーカー''は、ドキュメントへの貢献と改善を支援するために設計された、tiddlywiki.comの特別エディションです。
https://saqimtiaz.github.io/tw5-docs-pr-maker/
ドキュメントに加えられたすべての変更は、GitHubに簡単に送信できます。 -- プルリクエストは自動的に作成されるため、エディションの名前は"PRメーカー"になります。
ドキュメントPRメーカーを使用する前に、無料の~GitHubアカウントを作成し、[[貢献者ライセンス契約|Contributor License Agreement]]に署名する必要があります。ドキュメントへの貢献の詳細については、[[ここ|Improving TiddlyWiki Documentation]]をご覧ください。

View File

@@ -1,11 +0,0 @@
created: 20140912145139340
modified: 20241225110311898
original-modified: 20140916132022553
tags: TableOfContents
title: About
ja-title: TiddlyWikiについて
type: text/vnd.tiddlywiki
TiddlyWikiの開発に関する情報:
<<list-links "[tag[About]]">>

View File

@@ -1,11 +0,0 @@
created: 20140129204112515
modified: 20241225111031964
original-modified: 20140912145138466
tags: About
title: Acknowledgements
ja-title: 謝辞
type: text/vnd.tiddlywiki
TiddlyWikiは、TiddlyWiki[[コミュニティ|Community]]の継続的なサポートなしでは成り立ちません。みなさんの注目とフィードバックにより、何が求められているかを理解することができ、その製品に対するみなさんの熱い思いから、投資する価値があることが分かります
{{$:/Acknowledgements}}

View File

@@ -1,83 +0,0 @@
created: 20231005205623086
modified: 20241226114558500
original-modified: 20241115193649399
tags: About
title: TiddlyWiki Archive
ja-title: TiddlyWikiアーカイブ
\procedure versions()
5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9
5.1.10 5.1.11 5.1.12 5.1.13 5.1.14 5.1.15 5.1.16 5.1.17 5.1.18 5.1.19
5.1.20 5.1.21 5.1.22 5.1.23
5.2.0 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7
5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6
\end
TiddlyWikiの古いバージョンは[[アーカイブ|https://github.com/TiddlyWiki/tiddlywiki.com-gh-pages/tree/master/archive]]で入手できます:
<table>
<tbody>
<tr>
<th>
バージョン
</th>
<th>
リリース日
</th>
<th>
生存期間
</th>
<th>
概略
</th>
<th>
ダウンロード
</th>
</tr>
<$list filter="[enlist<versions>reverse[]]" variable="version">
<$let
filename=`TiddlyWiki-$(version)$`
emptyFilename=`Empty-$(filename)$`
releaseTiddler={{{ [<version>addprefix[Release ]] }}}
releaseDate={{{ [<releaseTiddler>get[released]format:date[TIMESTAMP]] }}}
nextVersion={{{ [enlist<versions>after<version>] }}}
nextReleaseTiddler={{{ [<nextVersion>addprefix[Release ]] }}}
nextReleaseDate={{{ [<nextReleaseTiddler>get[released]format:date[TIMESTAMP]] }}}
lifetime={{{ [<nextReleaseDate>subtract<releaseDate>divide[86400000]add[0.5]fixed[0]] }}}
>
<tr>
<td>
<$link to=<<releaseTiddler>>>
<$text text=`v$(version)$`/>
</$link>
</td>
<td>
<$view tiddler=<<releaseTiddler>> field="released" format="date" template="YYYY年mmmDD日"/>
</td>
<td>
<$list filter="[<lifetime>compare:number:lt[0]]" variable="ignore">
現在
</$list>
<$list filter="[<lifetime>compare:number:gteq[0]]" variable="ignore">
<$text text=<<lifetime>>/>日
</$list>
</td>
<td>
<$transclude $tiddler=<<releaseTiddler>> $field="description" $format="inline">
(none)
</$transclude>
</td>
<td>
<a href={{{ [<filename>addprefix[https://tiddlywiki.com/archive/full/]]}}} rel="noopener noreferrer" target="_blank">
Complete
</a>
|
<a href={{{ [<emptyFilename>addprefix[https://tiddlywiki.com/archive/empty/]]}}} rel="noopener noreferrer" target="_blank">
Empty
</a>
</td>
</tr>
</$let>
</$list>
</tbody>
</table>

View File

@@ -1,45 +0,0 @@
created: 20140916132828137
modified: 20241225111720612
original-modified: 20140916133148206
tags: About
title: Contributors
ja-title: 貢献者
type: text/vnd.tiddlywiki
以下は、[[TiddlyWikiの開発に貢献|https://github.com/TiddlyWiki/TiddlyWiki5/graphs/contributors]]するために時間を割いてくれている方々です:
* Jeremy Ruston ([[@Jermolene|https://github.com/Jermolene]])
* Dave Gifford ([[@giffmex|https://github.com/giffmex]])
* Bram Chen ([[@BramChen|https://github.com/BramChen]])
* Mario Pietsch ([[@pmario|https://github.com/pmario]])
* Xavier Cazin ([[@xcazin|https://github.com/xcazin]])
* Eric Shulman ([[@ericshulman|https://github.com/ericshulman]])
* Stephan Hradek ([[@Skeeve|https://github.com/Skeeve]])
* ~BuggyJef ([[@buggyj|https://github.com/buggyj]])
* Nathan Cain ([[@natecain|https://github.com/natecain]])
* Ton Gerner ([[@gernert|https://github.com/gernert]])
* Devin Weaver ([[@sukima|https://github.com/sukima]])
* João Bolila ([[@jbolila|https://github.com/jbolila]])
* David Johnston ([[@Brennall|https://github.com/Brennall]])
* David Jade ([[@davidjade|https://github.com/davidjade]])
* Bob Robison ([[@grayeul|https://github.com/grayeul]])
* [[@nameanyone|https://github.com/nameanyone]]
* Maurizio Pollio ([[@mpollio|https://github.com/mpollio]])
* Ogoshi Masayuki ([[@ogoshima|https://github.com/ogoshima]])
* Chris Sugden ([[@csugden|https://github.com/csugden]])
* [[@asampal|https://github.com/asampal]]
* Bow Yi Jang ([[@Eucaly|https://github.com/Eucaly]])
* Mal Gamble ([[@malgam|https://github.com/malgam]])
* Michael Fogleman ([[@mwfogleman|https://github.com/mwfogleman]])
* Daniel Barrett ([[@shendaras|https://github.com/shendaras]])
* Simon Baird ([[@simonbaird|https://github.com/simonbaird]])
* James Anderson ([[@welford|https://github.com/welford]])
* Jon Lister ([[@jayfresh|https://github.com/jayfresh]])
* [[@TheDiveO|https://github.com/TheDiveO]]
* Danielo Rodríguez ([[@danielo515|https://github.com/danielo515]])
* [[@willover|https://github.com/willover]]
* [[@slotik|https://github.com/slotik]]
* Irene Knapp ([[@IreneKnapp|https://github.com/IreneKnapp]])
* Brian Shaver ([[@shakerlxxv|https://github.com/shakerlxxv]])
* Tobi Beer ([[@tobibeer|https://github.com/tobibeer]])
* Craig Cook ([[@BoyCook|https://github.com/BoyCook]])

View File

@@ -1,88 +0,0 @@
created: 20140908114400000
modified: 20241225112134741
original-modified: 20241016125145988
tags: About
title: History of TiddlyWiki
ja-title: TiddlyWikiの歴史
type: text/vnd.tiddlywiki
! ~TiddlyWikiの20年
~TiddlyWikiの20周年を祝うために、いくつかのライブストリームを開催しました。録画はここで視聴できます:
* 2024年9月19日 - https://youtube.com/live/z9slx92TyrU
* 2024年9月20日 - https://youtube.com/live/puFdN-FgOjg
* 2024年9月21日 - https://youtube.com/live/0SjsHvwjHGE
* 2024年9月22日 - https://youtube.com/live/oD7Jtq2D4lg
GitHubでは、TiddlyWikiの貢献者に記念日の感想を[[聞いて|https://github.com/TiddlyWiki/TiddlyWiki5/discussions/7983]]お祝いしました。興味深く思慮深い回答がいくつか寄せられました。たとえば、[[@FND|https://github.com/FND]]からの回答は次の通りです:
> TiddlyWikiは、私のキャリアだけでなく、価値観にも計り知れないほどの永続的な影響を与えました。今日に至るまで、私はTiddlyWikiから学んだ[[基本的なコンセプト|https://prepitaph.org/articles/creative-privacy/]] - その多くは、他では忘れられたり無視されたりしています - を頻繁に参照しています。このバックグラウンドがあることで、技術的な複雑さを崇拝したり、テクノロジーの世界に人間が存在することを思い出したりする場合でも、この業界で仕事をする上で自分の方向性を保つことができます。
> TiddlyWikiとは、人々のことです。このコミュニティや、Jeremyがその周りに築いたグループと交流し、そこから学ぶことができたのは、私にとって計り知れない特権でした。また、この特権がまったくの偶然によって私に与えられたものだということを思い出すのにも役立ちます。この恩返しをしていきたいと思います。
~TiddlyWikiを特集した最近のポッドキャスト:
* 2016年のチェンジログ ポッドキャスト - https://changelog.com/podcast/196 ~TiddlyWikiの背景について議論しています
* 2021年のFloss Weeklyの録画 - https://twit.tv/shows/floss-weekly/episodes/620
! TiddlyWikiの起源
遡ること1997年に、同僚が私に[[Ward Cunningham のオリジナル wiki|http://c2.com/cgi/wiki]]を紹介してくれました。これほど強力なものがわずか700行のPerlに収まることに感銘を受け、セキュリティとパーミッションの根本的な再考に魅了されました。他の多くの開発者と同様に、私もあらゆる機会を利用してさまざまなWikiを試し、仕事での使用法を模索しました
私にとってWikiの魅力は、印刷物中心のドキュメントやEメールの一般的なパラダイムを最終的に破壊する可能性があるという感覚でした
人々がWikiを使用する様子を数年間観察した結果、パワーユーザーは複数のブラウザタブで複数のWikiページを同時に開く機能を多用しており、ページの比較やレビュー、ページ間でのテキストのコピー、未読ページの一種のキューとして用いることが容易になっていることに気づきました
一度に複数のページを操作するこの機能がWikiをリファクタリングする機能の中心であると感じました。また、愛情を込めてリファクタリングされたWikiはより便利になる傾向があると一般に認められています。それでも、標準のWikiユーザーインターフェイスは常に、単一ページを一度に表示し操作すること専用にデザインされてきました
2004年4月にGMailを見たとき、すべての考えがまとまりました。GMailは、Ajaxを巧みに使用して個々のメールをスレッド化された会話に融合させました。
このアイデアをさらに探求するために、HTMLとJavaScriptを試し始めました。私にはどちらの経験もなく、以前の活動で、いくつかの静的ページと単純なASPサイトをまとめただけでした。これらのクライアント側テクロジーについて理解するのは大変でした。他の皆さんと同じように、私もWebプログラミングの非互換性と矛盾がどれほど恐ろしいものであるかを知り、愕然としました
! TiddlyWikiのラウンチ
そうして、2004年9月に、私は原始的な[[TiddlyWikiの最初のバージョン|https://classic.tiddlywiki.com/firstversion.html]]をリリースしました。これは、アイデアを実証するための最小のもので、シンプルで自己完結型の静的な48KB HTMLファイルでした
TiddlyWikiの最初のバージョンをこの方法で作成することの欠点は、編集に使用するのが完全に非現実的になることでした。'変更を保存'をクリックすると、ファイルシステムにHTMLページを書き込むために、保存されるデータを示すウィンドウがポップアップ表示されるだけでした
初期のフィードバックの多くは、TiddlyWikiは優れているが、変更を適切に保存できればさらに便利になるというものでした。ブラウザで実行されているHTMLファイルがローカルファイルシステムに変更を保存することは不可能であることはわかっていると思っていたので、少しイライラしました
数か月以内に、TiddlyWikiがブラウザに変更を保存できるようにする実験的なFirefox拡張機能を目にしました。コードを調べてみると、ファイルシステムへの書き込みに使用されていたAPIは、`file://` URI経由でロードされている場合に限り、実際には通常のHTMLファイルで利用できることがわかりました
私はFirefoxコードをTiddlyWikiのコアに適合させ、すぐにInternet Explorerにも同様の機能を追加しました(MicrosoftがInternet Explorerとともに配布した古い[[ActiveX|https://en.wikipedia.org/wiki/ActiveX]]コントロールを利用しています)
! TiddlyWikiの成長
TiddlyWikiの成長における大きなマイルストーンは、Nathan Bowersによる"GTDTiddlyWiki"の作成でした。彼はバニラのTiddlyWiki製品を採用し、一般的なGetting Things Done方法論を使用してタスクをトラックするという特定のアプリケーションに適応させました。GTDTiddlyWikiはすぐに人気を博し、[[LifeHacker|https://lifehacker.com/]]などのWebサイトで熱狂的に歓迎されました
その後数年間にわたって、TiddlyWikiの人気は高まり続け、新しい機能や能力も獲得しました。1年以内に、私はTiddlyWikiでオーダーメイドの開発作業を行うことで自活できるようになり、特にWikiパイオニアである[[SocialText|https://en.wikipedia.org/wiki/Socialtext]]と協力して変更をオンラインサーバと同期する機能に取り組みました
! BTの獲得
2007年5月に、[[BT]]は私のコンサルティング会社である[[Osmosoft]]を買収しました。従業員が1人で、収益がほんの少ししかない会社を買収するというのは、異例の決断でした。[[Osmosoft]]は、コミュニティの将来を保証するために私がTiddlyWikiの知的財産をUnaMesaに譲渡したため、TiddlyWikiの知的財産さえ所有していませんでした
[[BT]]の動機は、コミュニティベースのエコシステムを理解することでした。私は"オープンソースイノベーション責任者"として組織に加わり、オープンソースガバナンスの責任を負い、オープンソースコミュニティへの参加方法に関するアドバイスと専門知識を提供しました
! [[Osmosoft]]とTiddlySpace
私はBTに[[Osmosoft]]という名前でチームを作りました。私たちの目的は、オープンソースのメリットを広め、他のチームが実際にそのメリットを実感できるよう支援することでした。また、Webの使用全般、特にWeb標準の使用を普及する必要があることもわかりました
私たちのアプローチは、話すことよりも見せることに重点を置くことでした。私たちはTiddlyWikiコミュニティと協力してエコシステムを拡張し、BT用の多数の内部システムを構築しました(TiddlyWikiに基づくものもあれば、そうでないものもあります)
TiddlyWikiコミュニティへの[[Osmosoft]]の主な貢献は、TiddlyWebとTiddlySpaceの作成でした。TiddlyWebは、Tiddlerのための堅牢なインターネット規模のサーバであり、TiddlerのTiddlyWikiビューを構成することもできました。TiddlySpaceは、TiddlyWebをより直接的に使用可能な形式にパッケージ化する試みでした
! BTを離れる
2011年の終わりまでに、私はBTという企業の枠外でTiddlyWikiの可能性を実現するのがより適切な立場にあると感じるようになりました。そうして、私は退職して独立した開発者として働き始め、主にTiddlyWiki5という形でTiddlyWikiを新しくリブートすることに取り組みました
! TiddlyWiki5の開発
私は2011年11月からTiddlyWikiの新しいリリースに取り組みました。プログラマーとして、すでに書いたものの"バージョン 2.0"に取り組むことは非常に魅力的な提案です。これは、要件が完全に理解され、目的の機能をサポートするために必要なアーキテクチャの進化に集中できることを意味します
! 将来
TiddlyWiki5がついに"ベータ"ステータスを脱した今、私の希望は、それが長く存続することです。HTML5とNode.jsの標準機能のみを使用しているため、今後何年にもわたって完全に動作しない理由はありません。私の目標は、少なくとも25年は続けることです
//Jeremy Ruston, 2014年9月20日//

View File

@@ -1,21 +0,0 @@
created: 20170127221457627
modified: 20241226112706885
original-modified: 20170127222646488
title: License
ja-title: ライセンス
type: text/vnd.tiddlywiki
tags: About
TiddlyWikiは、[[隠しTiddler|ShadowTiddlers]] [[$:/core/copyright.txt]]に保存されている[[寛容な3条項BSDライセンス|https://opensource.org/licenses/BSD-3-Clause]]に基づいて公開されています:
<div style="font-size: 0.7em;line-height:1.4;">
{{$:/core/copyright.txt}}
</div>
平たく言うと、このライセンスには、~TiddlyWikiの作成者やその他の者へのライセンス料の支払いやその他の法的義務を課すことなく、TiddlyWikiを利用して、やりたいことを何でもできる、と書かれています。代償として、~TiddlyWikiのようなオープンソースプロジェクトには何の保証もありません。~TiddlyWikiに関わる悲劇的な状況の連鎖によってデータが失われたとしても、~TiddlyWikiの使用による損失や損害についてTiddlyWikiの貢献者を訴えることはできません
プロジェクトへの関わりを明示することが求められていますが、そうする義務はありません
誤解を避けるために付け加えておきますが、あなたが~TiddlyWikiの自分のコピー内に保存する情報はすべて、あなたのもののままです。~TiddlyWikiを使用してコンテンツを公開しても、そのコンテンツに対してあなたが持つ権利は変更されません

View File

@@ -1,11 +0,0 @@
created: 20150902123139133
modified: 20241221102414663
original-modified: 20150902123255662
tags: Editions
title: Blog Edition
ja-title: ブログエディション
type: text/vnd.tiddlywiki
TiddlyWikiの''ブログ''エディションには、TiddlyWikiで書かれた静的HTMLブログの公開を支援するツールが含まれています。現在、Node.jsで使用するように設計されています。
ドキュメントは準備中ですが、使用例については https://github.com/Jermolene-blog/blog を参照してください。

View File

@@ -1,18 +0,0 @@
created: 20140908125500000
list: [[Empty Edition]]
modified: 20241220114652589
original-modified: 20160107222125923
tags: TableOfContents
title: Editions
ja-title: エディション
type: text/vnd.tiddlywiki
TiddlyWikiは、特定の目的に合わせて調整されたいくつかの異なるエディションで配布されています
エディションは、できるだけ早く立ち上げて実行できるように、TiddlyWikiのコアコンポーネントとプラグイン、ドキュメント、およびサンプルコンテンツで構成されています
これらのエディションのコンポーネントを組み合わせて、特定のアプリケーションに固有のソリューションを作成できます
<<list-links "[tag[Editions]]">>
<$macrocall $name=".tip" _="""エディションと、TiddlyWikiが実行される[[プラットフォーム|Platforms]]と混同しないように注意してください(例:[[単一HTMLファイル|Saving]] vs. [[Node.js|TiddlyWiki on Node.js]])"""/>

View File

@@ -1,16 +0,0 @@
created: 20140916213421041
modified: 20241220115009879
original-modified: 20160702084215576
tags: Editions
title: Empty Edition
ja-title: 空エディション
type: text/vnd.tiddlywiki
TiddlyWikiの"空"エディションはバニラディストリビューションであり、コアコード以外に追加されているプラグインや構成はありません
空のエディションは次からダウンロードできます:
* リンク: [ext[empty.html]]
* ビルトイン: {{$:/editions/tw5.com/snippets/download-empty-button}}
ブラウザによっては、ダウンロード開始前にダウンロードを受け入れるかどうかを尋ねられる場合があります

View File

@@ -1,13 +0,0 @@
created: 20150310103210459
modified: 20241221102710941
original-modified: 20160602051530592
tags: Editions
title: Full Edition
ja-title: フルエディション
type: text/vnd.tiddlywiki
TiddlyWikiの"フル"エディションは、TiddlyWikiで使用可能なすべての言語、テーマ、プラグインで構成されています。これはTiddlyWikiのテスト、特に利用可能なすべての言語プラグイン間の切り替えに使用することを目的としています。
フルエディションは以下からダウンロードできます:
https://tiddlywiki.com/editions/full/

View File

@@ -1,11 +0,0 @@
created: 20150718123139133
modified: 20241221103022837
original-modified: 20160602051544252
tags: Editions
title: Résumé Builder Edition
ja-title: 履歴書ビルダーエディション
type: text/vnd.tiddlywiki
TiddlyWikiの''履歴書ビルダー''エディションを使用すると、Webに保存したり印刷したりできる職業上の履歴書を簡単な方法で作成し始めることができます
https://tiddlywiki.com/editions/resumebuilder/

View File

@@ -1,11 +0,0 @@
created: 20150718123139133
modified: 20241221103255652
original-modified: 20160602051553479
tags: Editions
title: Text-Slicer Edition
ja-title: テキストスライサーエディション
type: text/vnd.tiddlywiki
TiddlyWikiの''テキストスライサー''エディションには、上級ユーザーが長いテキストを個々のTiddlerにスライスするのに役立つツールが含まれています
https://tiddlywiki.com/editions/text-slicer/

View File

@@ -1,11 +0,0 @@
created: 20161023202301847
modified: 20241221103512732
original-modified: 20161023202301847
tags: Editions
title: XLSX Utilities Edition
ja-title: XLSXユーティリティエディション
type: text/vnd.tiddlywiki
TiddlyWikiの''XLSXユーティリティ''エディションには、Microsoft ExcelやGoogle Sheetsなどのアプリケーションによって生成された`.XLSX`スプレッドシートを操作するためのツールが含まれています。ブラウザーやNode.jsで使用できます
https://tiddlywiki.com/editions/xlsx-utils/

View File

@@ -1,14 +0,0 @@
caption: Castellano (España)
created: 20160511155557372
list-before: Deutsch (Deutschland) Edition
modified: 20241221105234901
original-modified: 20160511160224223
tags: Languages
title: Edición en Castellano
ja-title: スペイン語版
type: text/vnd.tiddlywiki
La edición española de ~TiddlyWiki se encuentra aquí:
* ''Documentación'' : https://tiddlywiki.com/languages/es-ES/index.html
* ''~TiddlyWiki en blanco'' : https://tiddlywiki.com/languages/es-ES/empty.html

View File

@@ -1,15 +0,0 @@
caption: 中文 (简体)
created: 20140919215640174
modified: 20241221104728318
original-modified: 20140920030246450
tags: Languages
title: Chinese (Simplified) Edition
ja-title: 中国語(簡体字)版
type: text/vnd.tiddlywiki
TiddlyWiki 的简体中文翻译版本:
<!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hans/index.html -->
* ''空白版本'': https://tiddlywiki.com/languages/zh-Hans/empty.html
另请参阅 [[中文 (正體) 版|Chinese (Traditional) Edition]]。

View File

@@ -1,15 +0,0 @@
caption: 中文 (正體)
created: 20140919215743298
modified: 20241221104801318
original-modified: 20140920030246450
tags: Languages
title: Chinese (Traditional) Edition
ja-title: 中国語(繁体字)版
type: text/vnd.tiddlywiki
TiddlyWiki 的正體中文翻譯版本:
<!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hant/index.html -->
* ''空白版本'': https://tiddlywiki.com/languages/zh-Hant/empty.html
另請參閱 [[中文 (简体) 版|Chinese (Simplified) Edition]]。

View File

@@ -1,13 +0,0 @@
created: 20140919215540827
modified: 20241221105647964
original-modified: 20141123162938012
tags: Languages
caption: Français (France)
title: Édition en Français (France)
ja-title: フランス語版
type: text/vnd.tiddlywiki
La traduction en Français (France) de TiddlyWiki démarre ici :
* ''documentation'' : https://tiddlywiki.com/languages/fr-FR/index.html
* ''empty'' : https://tiddlywiki.com/languages/fr-FR/empty.html

View File

@@ -1,15 +0,0 @@
created: 20140919214900580
modified: 20241221105339061
original-modified: 20140919215900428
tags: Languages
caption: Deutsch (Österreich)
title: Deutsch (Österreich) Edition
ja-title: オーストリア語版
type: text/vnd.tiddlywiki
Die österreichische Übersetzung von TiddlyWiki ist verfügbar unter:
* ''Dokumentation'': https://tiddlywiki.com/languages/de-AT/index.html
* ''Leer'': https://tiddlywiki.com/languages/de-AT/empty.html
Siehe auch: [[Deutsch (Deutschland) Edition|ドイツ語版]].

View File

@@ -1,15 +0,0 @@
created: 20140919215410238
modified: 20241221105310877
original-modified: 20140919215851101
tags: Languages
caption: Deutsch (Deutschland)
title: Deutsch (Deutschland) Edition
ja-title: ドイツ語版
type: text/vnd.tiddlywiki
Die deutsche Übersetzung von TiddlyWiki ist verfügbar unter:
* ''Dokumentation'': https://tiddlywiki.com/languages/de-DE/index.html
* ''Leer'': https://tiddlywiki.com/languages/de-DE/empty.html
Siehe auch: [[Deutsch (Österreich) Edition|オーストリア語版]].

View File

@@ -1,13 +0,0 @@
caption: 日本語 (日本国)
created: 20201227004927059
modified: 20241224112824830
original-modified: 20241224112736358
tags: Languages
title: Japanese (Japan) Edition
ja-title: 日本語版
type: text/vnd.tiddlywiki
TiddlyWikiの日本語バージョンはこちら:
* ''ドキュメント'' : https://tiddlywiki.com/languages/ja-JP/index.html
* ''空白のコピー'' : https://tiddlywiki.com/languages/ja-JP/empty.html

View File

@@ -1,13 +0,0 @@
caption: 한국어 (대한민국)
created: 20160424113322330
modified: 20241221105737475
original-modified: 20160424113322330
tags: Languages
title: Korean (Korea Republic) Edition
ja-title: 韓国語版
type: text/vnd.tiddlywiki
티들리위키 한국어 번역은 다음에서 사용할 수 있습니다:
<!--* ''설명문서'' : https://tiddlywiki.com/languages/ko-KR/index.html-->
* ''빈 위키'' : https://tiddlywiki.com/languages/ko-KR/empty.html

View File

@@ -1,27 +0,0 @@
created: 20151231083708980
modified: 20241221105811581
original-modified: 20211117212723856
tags: Languages
title: LanguageGallery Example
ja-title: 言語ギャラリー
type: text/vnd.tiddlywiki
これは、ListWidgetとTranscludeWidgetを使用して、<<tag Language>>と<<tag Icon>>の[[タグ付け|Tagging]]された言語アイコンすべてをグリッド表示する例です。
<style>
.language-gallery img {
width: 5em;
height: auto;
margin: 0.5em;
-webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
-moz-box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
}
</style>
<div class="language-gallery">
<$list filter="[all[tiddlers+shadows]tag[Language]tag[Icon]]">
<span title=<<currentTiddler>>>
<$transclude/>
</span>
</$list>
</div>

View File

@@ -1,19 +0,0 @@
created: 20141202125500000
modified: 20241221104605323
original-modified: 20160617101222113
tags: TableOfContents
title: Languages
ja-title: 言語
type: text/vnd.tiddlywiki
!! 言語プラグイン
TiddlyWikiのコアユーザーインターフェイスは20以上の言語で利用できます。[[プラグインライブラリからプラグインをインストールする|Installing a plugin from the plugin library]]の手順に従って、言語プラグインをインストールできます。サイドバーの"ツール"タブにある"言語"ボタンを使用して、表示する言語を変更できます。
[[TiddlyWiki を母国語に翻訳する|Translate TiddlyWiki into your language]]方法を学ぶことで、ライブラリに新しい言語を提供できます。
!! 言語エディション
一部の言語については、追加の翻訳ドキュメントを備えた、ビルド済みエディションがあります。
<<list-links "[tag[Languages]]">>

View File

@@ -1,12 +0,0 @@
created: 20170703193252423
modified: 20241222101154614
original-modified: 20170703193353918
tags: OfficialPlugins
title: Amazon Web Services Plugin
ja-title: アマゾンウェブサービスプラグイン
type: text/vnd.tiddlywiki
アマゾンウェブサービスプラグインは、アマゾンウェブサービスで動かすためのいくつかのツールを提供します:
* TiddlyWikiをAWS Lambda関数として実行できるZIPファイル内の単一のJavaScriptファイルとして保存するためのテンプレート。この形式では、TiddlyWikiは、スタンドアロンのHTMLファイル構成と同様に、コードとデータの両方を含む自己完結型の単一ファイルです
* TiddlyWikiのNode.js構成とLambda構成の両方で、AWSサービスで操作するために使用できるコマンド

View File

@@ -1,20 +0,0 @@
created: 20190206181204119
modified: 20241222101408936
original-modified: 20190206181204119
tags: OfficialPlugins
title: BrowserStorage Plugin
ja-title: ブラウザストレージプラグイン
type: text/vnd.tiddlywiki
ブラウザストレージプラグインを使用すると、TiddlyWikiが[[ブラウザのローカルストレージ|https://en.wikipedia.org/wiki/Web_storage#localStorage]]にTiddlerを保存できるようになります。これは、変更がブラウザ内に保存され、ベースWikiがリロードされるたびに自動的に再適用されることを意味します
ブラウザのローカルストレージはTiddlyWikiにとって万能薬ではありません:
* ブラウザは、各ページで使用できるローカルストレージの量を制限しており、通常は5または10MBに制限されています
* 個人データをブラウザのローカル ストレージに保存すると、予期しないプライバシー侵害につながる可能性があります
* ブラウザは、ローカルストレージに保存されているデータを警告なしにいつでも削除する権利を留保します
* ブラウザはローカルストレージをURLと結び付けるため、以前に別のWikiが使用していたURLにWikiを移動すると問題が発生する可能性があります
このプラグインは注意して使用してください。未解決の問題や未解決の疑問が数多くあります
ブラウザストレージプラグインは、プラグインライブラリからインストールできます

View File

@@ -1,12 +0,0 @@
created: 20160107223435497
list:
modified: 20241222101622863
original-modified: 20170228102537972
tags: OfficialPlugins [[Plugin Editions]]
title: CodeMirror Plugin
ja-title: CodeMirrorプラグイン
type: text/vnd.tiddlywiki
CodeMirrorプラグインは、洗練されたWebベースのエディタをTiddlyWikiに追加します
[ext[https://tiddlywiki.com/plugins/tiddlywiki/codemirror|plugins/tiddlywiki/codemirror]]でデモを参照してください

View File

@@ -1,16 +0,0 @@
created: 20201019084534263
modified: 20241222111136646
original-modified: 20201019084658478
tags: OfficialPlugins
title: Consent Banner Plugin
ja-title: 同意バナープラグイン
type: text/vnd.tiddlywiki
同意バナープラグインは、[[EU一般データ保護規則|https://gdpr.eu/cookies/]]などの"Cookie法"に準拠したWebサイトの作成に役立ちます。
このプラグインは、ユーザーにCookieを受け入れるか拒否するかを促すバナーを表示し、ユーザーの同意をローカルストレージに記録して、次回のアクセス時にバナーを非表示にできるようにします。
デフォルトでは、ユーザーがCookieを受け入れることに同意しない限り、&lt;iframe>、&lt;embed>、&lt;object>で埋め込まれたコンテンツはブロックされます。
同意ステータスは構成Tiddlerを介して利用できるため、同意が得られたかどうかに応じて異なる動作をするコンテンツを構築できます。たとえば、ユーザーがCookieを受け入れない限り、自動的に youtube-nocookie.com バリアントのビデオURLを使用する~YouTubeビデオを埋め込むためのマクロが提供されています。
このプラグインを使用することで、特定の法律への準拠が保証されるわけではないことにご注意ください。あなたの状況に固有の技術的な問題を理解し、必要に応じて法的アドバイスを求める必要があります。

View File

@@ -1,14 +0,0 @@
created: 20160107223425581
caption: {{!!ja-title}} - ^^deprecated^^
modified: 20241222102055511
original-modified: 20240913122437925
tags: OfficialPlugins [[Plugin Editions]] $:/deprecated
title: D3 Plugin
ja-title: D3プラグイン
type: text/vnd.tiddlywiki
<<.deprecated-since "5.3.4">> D3プラグインは、D3ビジュアライゼーションライブラリをTiddlyWikiと統合します
https://tiddlywiki.com/plugins/tiddlywiki/d3/ を参照してください
[ext[https://tiddlywiki.com/plugins/tiddlywiki/d3|plugins/tiddlywiki/d3]]でデモをご覧ください。

View File

@@ -1,14 +0,0 @@
created: 20180111122953142
modified: 20241223104409794
original-modified: 20181113084151268
tags: OfficialPlugins
title: Dynaview Plugin
ja-title: 動的表示プラグイン
type: text/vnd.tiddlywiki
動的表示プラグインを使用すると、スクロールやズームによるブラウザビューポートの変更に動的に応答するユーザーインターフェイスを構築できます:
* スクロールされて表示されるまで出力のレンダリングを延期できるCSSクラス
* 現在のズームレベルに応じてDOM要素の不透明度を変更できるようにするCSSクラス
[ext[https://tiddlywiki.com/plugins/tiddlywiki/dynaview|plugins/tiddlywiki/dynaview]]でデモをご覧ください

View File

@@ -1,12 +0,0 @@
created: 20171031172325817
list:
modified: 20241222102153176
original-modified: 20171031172440017
tags: OfficialPlugins [[Plugin Editions]]
title: External Attachments Plugin
ja-title: 外部添付プラグイン
type: text/vnd.tiddlywiki
外部添付ファイルプラグインは、Tiddlerを外部添付ファイルとしてインポートするためのサポートを提供します。つまり、バイナリファイルを自己完結型Tiddlerとしてインポートするのではなく、''_canonical_uri''フィールドを介して元のファイルを参照する "スキニー" Tiddler としてインポートされます。これによりWikiのサイズが削減され、パフォーマンスが向上します。ただし、これはWikiが完全な自己完結型ではなくなったことを意味します
このプラグインは、インポート/ドラッグされたファイルの''path''属性をサポートするTiddlyDesktopなどのプラットフォームでTiddlyWikiを使用する場合にのみ機能します

View File

@@ -1,14 +0,0 @@
created: 20160107223417655
list:
modified: 20241222102315584
original-modified: 20220222094354907
tags: OfficialPlugins [[Plugin Editions]]
title: Highlight Plugin
ja-title: ハイライトプラグイン
type: text/vnd.tiddlywiki
ハイライトプラグインは、テキストに色付けする機能を提供します
[ext[https://tiddlywiki.com/plugins/tiddlywiki/highlight|plugins/tiddlywiki/highlight]]を参照してください
<<.warning """最新バージョンの[[ハイライトプラグイン|Highlight Plugin]]には、JavaScript ES6(2015年リリース)を完全にサポートする最新ブラウザが必要です。古いバージョンは、古いブラウザを使用する必要があるユーザー向けの''ハイライトレガシー''プラグインとして引き続き利用できます""">>

View File

@@ -1,13 +0,0 @@
created: 20190127104143725
modified: 20241223111102675
original-modified: 20190127104143725
tags: OfficialPlugins
title: Innerwiki Plugin
ja-title: インナーウィキプラグイン
type: text/vnd.tiddlywiki
インナーウィキプラグインにより、TiddlyWikiは自身の変更されたコピー("innerwiki")を埋め込むことができます。主な目的は、時間の経過とともに変化するTiddlyWikiの外観に合わせて自動的に最新のスクリーンショットイラストを作成したり、異なる言語でスクリーンショットを作成したりできるようにすることです。
ブラウザでは、インナーウィキは埋め込みiframeとして表示されます。Node.jsでは、[[GoogleのPuppeteer|https://pptr.dev/]]を使用してインナーウィキをオフスクリーンのWebページとして読み込み、PNG画像としてスナップショットを作成します。
[ext[https://tiddlywiki.com/plugins/tiddlywiki/innerwiki|plugins/tiddlywiki/innerwiki]]でデモをご覧ください

View File

@@ -1,40 +0,0 @@
created: 20160107222352710
modified: 20241221111035323
original-modified: 20220617122143911
tags: Plugins
title: Installing a plugin from the plugin library
ja-title: プラグインライブラリからプラグインをインストールする
type: text/vnd.tiddlywiki
\rules except wikilink
手順を//隣に並べて//実行したい場合は、<<open-tiddler-in-window>>でできます。
TiddlyWikiをスタンドアロンの単一ファイルWikiとして使用する場合は、次の手順に従ってください。
# ブラウザでTiddlyWikiを開きます
# 現在のWikiファイルのバックアップを作成します([[念のため|The First Rule of Using TiddlyWiki]])
# <<controlPanel-plugin-link>>を開きます
#* ''プラグイン''タブをクリックし
#*<<.icon $:/core/images/download-button>> ''他のプラグインを取得''ボタンをクリックします
# <<.icon $:/core/images/chevron-right>> ''プラグインライブラリを開く''をクリックして公式プラグインライブラリを開きます
# ライブラリのリストがロードされると:
## ''プラグイン''、''テーマ''、''言語''のタブが使用でき、
## プラグインの詳細を検索する''検索''ボックスが使用できます
# ''インストール''ボタンをクリックしてプラグインをインストールします
# <<.icon $:/core/images/save-button-dynamic>>をクリックしてTiddlyWikiを保存します
# ウィンドウの上部に黄色い警告バーが表示された場合は、TiddlyWikiがプラグイン<<.icon $:/core/images/refresh-button>>のインストールを完了するためにウィンドウを更新します。
#* <<.from-version "5.1.22">> 動的読み込みをサポートするプラグインを削除するときにTiddlyWikiを更新する必要がなくなりました。詳細については、[[プラグインのメカニズム|PluginMechanism]]を参照してください。
# これでプラグインが使用できるようになりました
<$macrocall $name=".note" _="""''Node.js''でTiddlyWikiを使用する場合の詳細は、[[Node.jsで公式プラグインをインストールする|Installing official plugins on Node.js]]を確認してください。<br>概要は[[プラグイン|Plugins]]でご覧いただけます。"""/>

View File

@@ -1,9 +0,0 @@
created: 20201019084712096
modified: 20241222103057478
original-modified: 20201019084824422
tags: OfficialPlugins
title: JSZip Plugin
ja-title: JSZipプラグイン
type: text/vnd.tiddlywiki
このプラグインは、ブラウザでZipファイルを作成するためのプリミティブを提供します。また、[[JSZip|https://stuk.github.io/jszip/]]ライブラリを他のプラグインで使用できるようになります

View File

@@ -1,12 +0,0 @@
created: 20160107223410181
list:
modified: 20241222103257736
original-modified: 20170228102517666
tags: OfficialPlugins [[Plugin Editions]]
title: KaTeX Plugin
ja-title: KaTeXプラグイン
type: text/vnd.tiddlywiki
このプラグインは、~LaTeXで書かれた数学表記を表示する機能を追加します
[ext[https://tiddlywiki.com/plugins/tiddlywiki/katex|plugins/tiddlywiki/katex]]を参照してください

View File

@@ -1,31 +0,0 @@
created: 20160107222430613
modified: 20241221112212036
original-modified: 20220617115930635
tags: Plugins
title: Manually installing a plugin
ja-title: プラグインを手動でインストールする
type: text/vnd.tiddlywiki
\rules except wikilink
手順を//隣に並べて//実行したい場合は、<<open-external-window "https://tiddlywiki.com/plugins/tiddlywiki/katex">>でできます。
# 現在のTiddlyWiki HTMLファイルのバックアップを作成します([[念のため|The First Rule of Using TiddlyWiki]])
# ブラウザでTiddlyWikiを開きます
# 別のブラウザウィンドウで、プラグインへのリンク(例: https://tiddlywiki.com/plugins/tiddlywiki/katex )を見つけます。通常、これらのリンクはプラグインのホームページにあります
# TiddlyWikiブラウザウィンドウに、`$:/plugins/tiddlywiki/example`へのリンクをドラッグします
# $:/Import Tiddlerに表示された新しいプラグインをインポートします
# TiddlyWikiを保存します(<<.icon $:/core/images/save-button-dynamic>>)
# ウィンドウの上部に黄色い警告バーが表示された場合は、TiddlyWikiがプラグイン<<.icon $:/core/images/refresh-button>>のインストールを完了するためにウィンドウを更新します。
#* <<.from-version "5.1.22">> 動的読み込みをサポートするプラグインを削除するときにTiddlyWikiを更新する必要がなくなりました。詳細については、[[プラグインのメカニズム|PluginMechanism]]を参照してください。
# これでプラグインが使用できるようになりました
<$macrocall $name=".note" _="公式プラグインライブラリからプラグインをインストールする方法の詳細については、[[プラグインライブラリからプラグインをインストールする|Installing a plugin from the plugin library]]を確認してください。<br>概要は[[プラグイン|Plugins]]でご覧いただけます。"/>

View File

@@ -1,12 +0,0 @@
created: 20160107223401584
list:
modified: 20241222103338193
original-modified: 20170228102511347
tags: OfficialPlugins [[Plugin Editions]]
title: Markdown Plugin
ja-title: Markdownプラグイン
type: text/vnd.tiddlywiki
Markdownプラグインを使用すると、標準Markdownマークアップで記述されたTiddlerを使用できるようになります。
[ext[https://tiddlywiki.com/plugins/tiddlywiki/markdown|plugins/tiddlywiki/markdown]]を参照してください。

View File

@@ -1,10 +0,0 @@
created: 20170328173820802
caption: {{!!ja-title}} - ^^deprecated^^
modified: 20241223111912267
original-modified: 20240913122844238
tags: OfficialPlugins $:/deprecated
title: Mobile Drag And Drop Shim Plugin
ja-title: モバイルのドラッグアンドドロップ詰め木プラグイン
type: text/vnd.tiddlywiki
<<.deprecated-since "5.3.4">> モバイルのドラッグアンドドロップ詰め木プラグインは、iOSやAndroidなどのモバイルブラウザーでHTML 5互換のドラッグアンドドロップ操作を可能にする"詰め木"を提供します。この詰め木はTim Rufflesによって作成され、 https://github.com/timruffles/ios-html5-drag-drop-shim で公開されています。

View File

@@ -1,13 +0,0 @@
created: 20170210075109635
modified: 20241221112634689
original-modified: 20220612082350537
tags: Plugins
title: OfficialPlugins
ja-title: 公式プラグイン
type: text/vnd.tiddlywiki
公式TiddlyWikiプラグインライブラリには、[[TiddlyWiki 5のメインGitHubレポジトリ|Working with the TiddlyWiki5 repository]]の一部であるプラグインが含まれています。[[プラグインライブラリ|Installing a plugin from the plugin library]]からインストールします。公式プラグインライブラリのプラグインは、[[アップグレードプロセス|UpgradeMechanism]]の一部として自動的に更新されます。
<<list-links "[tag[OfficialPlugins]]">>
<$macrocall $name=".note" _="プラグインの概要と処理方法については、[[プラグイン|Plugins]]を参照してください"/>

View File

@@ -1,11 +0,0 @@
created: 20160107223443647
modified: 20241221104043422
original-modified: 20160107223732928
tags: Editions
title: Plugin Editions
ja-title: プラグインエディション
type: text/vnd.tiddlywiki
これらのエディションには、TiddlyWikiプラグインのオリジナルセットの簡単なデモが含まれています。これらは、プラグインライブラリが欠如していた以前のバージョンのTiddlyWiki用に用意されていました
<<list-links "[tag[Plugin Editions]]">>

View File

@@ -1,32 +0,0 @@
created: 20140910215514237
list: [[Installing a plugin from the plugin library]] [[Uninstalling a plugin]] [[Manually installing a plugin]] OfficialPlugins
modified: 20241221110419644
original-modified: 20220617133819755
tags: Concepts TableOfContents
title: Plugins
ja-title: プラグイン
type: text/vnd.tiddlywiki
! 紹介
TiddlyWiki5のプラグインを使用して、Wikiをカスタマイズ・拡張するオプションコンポーネントを配布できます。公式プラグインライブラリやコミュニティサイトからプラグインをインストールできます。
内部的には、プラグインは1つのTiddlerとしてパッケージ化されたTiddler集であり、ユニットとしてインストール、コピー、無効化、削除することができます。プラグイン内の個々のTiddlerは、隠しTiddlerとして表示されます。
プラグインには、JavaScriptモジュール、スタイルシート、テンプレートを含めることができます。プラグインを使用して、通常のテキスト、画像、その他のコンテンツを配布することもできます。
! 単一ファイルWikiによるプラグインの処理
<<list-links "[tag[Plugins]] -[has[draft.of]]">>
! クライアント - サーバー構成(Node.js)でのプラグインの処理
<<list-links "[tag[PluginsCS]] -[has[draft.of]]">>
! プラグインのメカニズム
[[プラグインのメカニズム|PluginMechanism]]Tiddlerには、プラグインが内部でどのように実装されるかについての詳細が含まれています。
プラグインの詳細は、<<controlPanel-plugin-link>>のサブタグ<<.controlpanel-tab Plugins>>で開けます。
TiddlyWikiのメインコアコードを含む $:/core というプラグインがあります。これは常に存在し、デフォルトの[[隠しTiddler|ShadowTiddlers]]のソースです。

View File

@@ -1,12 +0,0 @@
created: 20160107223348621
list:
modified: 20241222103824983
original-modified: 20170228102501706
tags: OfficialPlugins [[Plugin Editions]]
title: Railroad Plugin
ja-title: Railroadプラグイン
type: text/vnd.tiddlywiki
{{$:/plugins/tiddlywiki/railroad/readme}}
{{$:/plugins/tiddlywiki/railroad/syntax}}

View File

@@ -1,17 +0,0 @@
created: 20170210074840860
modified: 20241223112712712
original-modified: 20170328173912704
tags: OfficialPlugins
title: SaveTrail Plugin
ja-title: 履歴保存プラグイン
type: text/vnd.tiddlywiki
このプラグインにより、TiddlyWikiは、以下のいずれかの方法で手動で変更されたすべてのTiddlerのコンテンツを(JSONファイルとして)継続的にダウンロードします:
* 編集の確認
* Tiddlerの削除
* インポート
* 名前の変更/再リンク
* オプション: ドラフトTiddlerへのタイピングでダウンロード開始
必要に応じて、'前'と'後'のファイルが別々にダウンロードされます。正しく設定すると、ブラウザはバックグラウンドでファイルをサイレントにダウンロードし、誤ってデータが失われた場合のバックアップとして使用できます。

View File

@@ -1,14 +0,0 @@
created: 20201228143125000
modified: 20241222103744408
original-modified: 20201228143125000
tags: OfficialPlugins
title: Share Plugin
ja-title: シェアプラグイン
type: text/vnd.tiddlywiki
<div class="tc-message-box">このプラグインの機能を正確に理解していない限り、このプラグインをインストールしないでください</div>
この実験的なプラグインは、URL経由でTiddlerを共有するためのツールを提供します。これには以下が含まれます:
* 起動時にブラウザのロケーションハッシュからTiddlerのグループをロードする機能
* TiddlerのグループからURLを作成するためのウィザードとテンプレート

View File

@@ -1,12 +0,0 @@
created: 20160107223340750
list:
modified: 20241222103757551
original-modified: 20170228102455677
tags: OfficialPlugins [[Plugin Editions]]
title: TW2Parser Plugin
ja-title: TW2Parser プラグイン
type: text/vnd.tiddlywiki
この実験的なプラグインは、TiddlyWikiのオリジナルのクラシックバージョン用に書かれたWikiTextを表示する機能を追加します
[ext[https://tiddlywiki.com/plugins/tiddlywiki/tw2parser|plugins/tiddlywiki/tw2parser]]を参照してください

View File

@@ -1,14 +0,0 @@
created: 20170227223209558
modified: 20241222103812151
original-modified: 20170328173919702
tags: OfficialPlugins
title: Twitter Plugin
ja-title: Twitterプラグイン
type: text/vnd.tiddlywiki
このプラグインは、twitter.comからさまざまなエンティティを埋め込むことができる`<$twitter>`ウィジェットを追加します:
* 個別のツイートと会話スレッド
* ハッシュタグ/アカウントをツイートする、アカウントをフォロー/いいねする、URLを共有するためのボタン
* ユーザー、ハッシュタグ、リスト、コレクションからのツイートを表示するタイムライン

View File

@@ -1,31 +0,0 @@
created: 20160107222504269
modified: 20241221111742412
original-modified: 20220617132957241
tags: Plugins
title: Uninstalling a plugin
ja-title: プラグインをアンインストールする
type: text/vnd.tiddlywiki
\rules except wikilink
手順を//隣に並べて//実行したい場合は、<<open-tiddler-in-window>>でできます。
TiddlyWikiをスタンドアロンの単一ファイルWikiとして使用する場合は、次の手順に従ってください。
# 現在のWikiファイルのバックアップを作成します([[念のため|The First Rule of Using TiddlyWiki]])
# <<controlPanel-plugin-link>>を開き、''プラグイン''タブに移動します
# 削除したいプラグインをクリックして、スタンドアロンTiddlerとして開きます。
# <<.icon $:/core/images/down-arrow>> ''その他の操作''ボタン、そして<<.icon $:/core/images/delete-button>> ''削除''をクリックします
# <<.icon $:/core/images/save-button-dynamic>>をクリックしてTiddlyWikiを保存します
# ウィンドウの上部に黄色い警告バーが表示された場合は、TiddlyWikiがプラグイン<<.icon $:/core/images/refresh-button>>の削除を完了するためにウィンドウを更新します。
#* <<.from-version "5.1.22">> 動的読み込みをサポートするプラグインを削除するときにTiddlyWikiを更新する必要がなくなりました。詳細については、[[プラグインのメカニズム|PluginMechanism]]を参照してください。
# これでプラグインがアクティブではなくなるか、使用できるようになりました
<$macrocall $name=".note" _="""Node.jsでTiddlyWikiを使用する場合の詳細は、[[Node.jsでプラグインをアンインストールする|Uninstalling a plugin with Node.js]]を確認してください。<br>概要は[[プラグイン|Plugins]]でご覧いただけます。"""/>

View File

@@ -1,15 +0,0 @@
created: 20150419144523070
modified: 20241226113315947
original-modified: 20231005205612322
tags: About
title: Releases
ja-title: リリース
type: text/vnd.tiddlywiki
TiddlyWikiとTiddlyDesktopの新しいリリースは、[[公式ディスカッショングループ|Forums]]と[[Twitter|https://twitter.com/TiddlyWiki]]にて発表します
TiddlyWikiの次のバージョンのプレリリースは、テストとレビューの目的で https://tiddlywiki.com/prerelease で見付けられます。
旧バージョンをダウンロードするには、[[TiddlyWikiアーカイブ|TiddlyWiki Archive]]を参照してください
<<tabs "[[TiddlyWiki Releases]] [[TiddlyDesktop Releases]]" "TiddlyWiki Releases" "$:/state/tab">>

View File

@@ -1,11 +0,0 @@
created: 20130823203800000
modified: 20241226114145100
original-modified: 2020051619421803
tags: About
title: RoadMap
ja-title: ロードマップ
type: text/vnd.tiddlywiki
TiddlyWiki 5は現在、多くの人々に信頼されている成熟した安定したプロジェクトです。同時に、開発者とユーザーの幅広いコミュニティのおかげで、さまざまな方向に急速に進化しています。この逆説的な状況が可能なのは、プロジェクトが下位互換性を厳密に維持し、既存の機能に加えて新しい機能を追加しているためです
正式なロードマップはありませんが、検索と置換、リッチテキスト編集など、まだ完全に実装されていない領域がかなりあります。現在の作業は~GitHub(https://github.com/TiddlyWiki/TiddlyWiki5/)で確認できます

View File

@@ -1,41 +0,0 @@
created: 20240309135835396
modified: 20240309142156125
title: Bags and Recipes
type: text/vnd.tiddlywiki
The bags and recipes model is a reference architecture for how tiddlers can be shared between multiple wikis. It was first introduced by TiddlyWeb in 2008.
The principles of bags and recipes can be simply stated:
# Tiddlers are stored in named "bags"
# Bags have access controls that determines which users can read or write to them
# Recipes are named lists of bags, ordered from lowest priority to highest
# The tiddlers within a recipe are accumulated in turn from each bag in the recipe in order of increasing priority. Thus, if there are multiple tiddlers with the same title in different bags then the one from the highest priority bag will be used as the recipe tiddler
# Wikis are composed by splicing the tiddlers from the corresponding recipe into the standard TW5 HTML template
A very simple example of the recipe/bag model might be for a single user who maintains the following bags:
* ''recipes'' - tiddlers related to cooking recipes
* ''work'' - tiddlers related to work
* ''app'' - common tiddlers for customising TiddlyWiki
Those bags would be used with the following recipes:
* ''recipes'' --> recipes, app - wiki for working with recipes, with common custom components
* ''work'' --> work, app - wiki for working with work, with common custom components
* ''app'' --> app - wiki for maintaining custom components
All of this will work dynamically, so changes to the app bag will instantly ripple into the affected hosted wikis.
A more complex example might be for a teacher working with a group of students:
* ''student-{name}'' bag for each students work
* ''teacher-course'' bag for the coursework, editable by the teacher
* ''teacher-tools'' bag for custom tools used by the teacher
Those bags would be exposed through the following hosted wikis:
* ''student-{name}'' hosted wiki for each students work, including the coursework material
* ''teacher-course'' hosted wiki for the coursework, editable by the teacher
* ''teacher'' hosted wiki for the teacher, bringing together all the bags, giving them an overview of all the students work

View File

@@ -1,15 +0,0 @@
title: Database Engines
tags: Reference
MWS uses [[SQLite]] for data storage. It supports choosing between two "database engines" that are based on two different npm modules:
* [[better-sqlite3|https://www.npmjs.com/package/better-sqlite3]] is written partially in C/C++ and so requires compilation for the target platform
* [[node-sqlite3-wasm|https://www.npmjs.com/package/node-sqlite3-wasm]] is written entirely in JavaScript and does not require compilation, but does require a WebAssembly-capable Node.js host. This is not currently possible on some platforms such as iOS/iPadOS
By default `npm install` will install both database engines. By default it will use `better-sqlite3`. To switch to using `node-sqlite3-wasm`, set the system configuration tiddler `$:/config/MultiWikiServer/Engine` to `wasm` (the default value is `better`). Note that this tiddler resides in the [[Administration Wiki]].
!! Avoiding Installation Errors
If you encounter errors during `npm install` related to `gyp` or `prebuild`, you may be able to avoid them by using `node-sqlite3-wasm` instead of `better-sqlite3`. However, it will be necessary to manually install `node-sqlite3-wasm` and its dependencies. This can be done by running the following commands in your terminal:
<<.copy-code-to-clipboard "npm install node-sqlite3-wasm">>

View File

@@ -1,6 +0,0 @@
title: $:/DefaultTiddlers
HelloThere
Installation
Usage
Reference

View File

@@ -1,19 +0,0 @@
title: HelloThere
tags: TableOfContents
!! ~TiddlyWiki is Growing Up
<span class="tc-float-right">[img width=200 [MWS Banner.png]]</span>
~MultiWikiServer is a new development that drastically improves ~TiddlyWiki's capabilities when running as a server under Node.js. It brings ~TiddlyWiki up to par with common web-based tools like ~WordPress or ~MediaWiki by supporting multiple wikis and multiple users at the same time.
Features under development include:
* Hosting multiple wikis at once, using the [[Bags and Recipes]] mechanism for sharing data between them
* Based on [[SQLite|MWS and SQLite]] for performance and reliability
* Robust built-in synchronisation handlers for syncing data to the filesystem
* Flexible authentication and authorisation options
* Improved handling of file uploads and attachments, allowing gigabyte video files to be uploaded and streamed
* Instantaneous synchronisation of changes between the server and all connected clients
* Workflow processing on the server, for example to automatically compress images, or to archive webpages
MWS is currently [[under development at GitHub|https://github.com/TiddlyWiki/TiddlyWiki5/pull/7915]] but it is already functional and usable.

View File

@@ -1,19 +0,0 @@
title: Installation using Git
tags: Installation
modified: 20241105133737778
created: 20241105133737778
These instructions require basic knowledge both of the terminal and of Git. There are also [[alternative instructions without using Git|Installation]].
# Clone the code from GitHub with: <<.copy-code-to-clipboard "git clone -b multi-wiki-support --single-branch https://github.com/TiddlyWiki/TiddlyWiki5">>
# Open a terminal window and set the current directory to the root of the downloaded folder
# Install the dependencies with the command: <<.copy-code-to-clipboard "npm install">>
# Start the server with the command: <<.copy-code-to-clipboard "npm start">>
# To use MWS, visit http://localhost:8080 in a browser on the same computer
# When you have finished using MWS, stop the server with <kbd>ctrl-C</kbd>
See [[Troubleshooting]] if you encounter any errors.
To update your copy of MWS with newer changes from ~GitHub, run the following command:
<<.copy-code-to-clipboard "git pull">>

View File

@@ -1,18 +0,0 @@
title: Installation
tags: TableOfContents
modified: 20241105133737778
created: 20241105133737778
These instructions require minimal knowledge of the terminal. There are also [[alternative instructions for those using Git|Installation using Git]].
# Download the code [[direct from GitHub|https://github.com/TiddlyWiki/TiddlyWiki5/archive/refs/pull/7915/head.zip]]
# Open a terminal window and set the current directory to the root of the downloaded folder
# Install the dependencies with the command: <<.copy-code-to-clipboard "npm install">>
# To verify that MWS is working correctly, start the server with the command: <<.copy-code-to-clipboard "npm start">> and then visit http://localhost:8080 in a browser on the same computer
# When you have finished using MWS, stop the server with <kbd>ctrl-C</kbd>
See [[Troubleshooting]] if you encounter any errors.
To update your copy of MWS in the future with newer changes will require re-downloading the code, taking care not to lose any changes you might have made.

View File

@@ -1,2 +0,0 @@
title: Architecture
tags: TableOfContents

View File

@@ -1,25 +0,0 @@
title: MWS and SQLite
tags: Architecture
! Introduction
SQLite is a very popular open source embedded SQL database with some [[unusual characteristics|https://www.sqlite.org/different.html]]. It has proved itself to be robust, fast and scalable, and has been widely adopted in a range of applications including web browsers, mobile devices, and embedded systems.
The "embedded" part means that developers access SQLite as a library of C functions that run as part of a larger application. This contrasts with more familiar database applications like Microsoft's SQL Server or Oracle that are accessed as network services.
MWS uses SQLite for the tiddler store and associated data. It brings many advantages:
* ''Performance'': the optimising query engine inside SQLite makes it much faster and more efficient than could be achieved in plain JavaScript. In some cases, it is [[faster than writing directly to the file system||https://www.sqlite.org/fasterthanfs.html]]
* ''Reliability'': SQLite uses protocols that [[ensure data integrity and consistency|https://www.sqlite.org/hirely.html]], even when the application crashes
* ''Scalability'': SQLite can handle extremely [[large datasets and complex queries|https://www.sqlite.org/limits.html]]
* ''Portability'': SQLite databases are stored as [[a single file|https://www.sqlite.org/fileformat.html]] that can be easily copied and moved between systems
! Misconceptions
TiddlyWiki 5 has always incorporated a database. Until MWS, that database has always been a custom tiddler database written in JavaScript. Over the years it has been enhanced and optimised with indexes and other database features that have given us reasonably decent performance for a range of common operations.
In terms of the traditional architecture of TiddlyWiki, MWS uses SQLite as the basis for an internal API that is equivalent to that of the `$tw.Wiki` object: basic CRUD operations on a database of tiddlers stored by their titles.
In the context of MWS, SQLite is just a fast and efficient equivalent of TiddlyWiki's existing JavaScript database engine. It gives us the option of persisting the database in file storage, but we also retain the option to run the database entirely within memory and rely on a file synchronisation process to save changes as individual `.tid` files in the file system, just as we do today.
One particular misconception to avoid is the idea that SQLite replaces the folders of `.tid` files that characterise the Node.js configuration of TiddlyWiki. These are separate components with a different purpose. The tiddler files are the result of syncing a database to the filesystem, and that database can be conceptually interchanged between our custom JavaScript database or the new SQLite implementation in MWS.

View File

@@ -1,230 +0,0 @@
title: Reference
tags: TableOfContents
! Authentication & Authorization
!! Overview
Our application has transitioned from a conventional username/password authentication system to a more robust Authentication and Authorization implementation. This new system supports multiple user accounts, roles, permissions, and a comprehensive access control list.
!! Key Features
# Multiple User Accounts
# Role-based Access Control
# Granular Permissions
# Access Control List (ACL)
!! Application Access & Security
!!! Initial Setup
When you first launch the Multiwiki Server, it operates in an unauthenticated mode to facilitate initial configuration. During this initial state, the system creates a temporary anonymous administrator account. Upon accessing the landing page, you'll receive a prominent security warning with instructions to establish a permanent ADMIN account. It's crucial to create this account immediately to secure your installation.
!!! User Types and Permissions
!!!! Administrator (ADMIN)
* Full system access and configuration rights
* Can create, modify, and delete user accounts
* Manages role assignments and permissions
* Controls global system settings
* Can configure guest access policies
* Has complete control over all recipes and tiddlers
!!!! Regular Users
* Custom accounts created by administrators
* Permissions determined by assigned roles
* Access limited to specific recipes based on role permissions
* Can have READ and/or WRITE permissions
!!!! Guest Users
* Default anonymous access level
* No inherent permissions
* Can only access recipes without Access Control Lists (ACLs)
* Read/write capabilities configurable by ADMIN
* Useful for public wikis or documentation sites
!!! Access Control System
!!!! Recipe-Level Security
* Access control is implemented at the recipe level
* Each recipe can have its own Access Control List (ACL)
* Permissions are granular:
** READ: Allows viewing recipe contents
** WRITE: Allows modifications to recipe contents
!!!! Role-Based Access Control (RBAC)
* Administrators can create custom roles
* Roles can be assigned specific READ/WRITE permissions
* Users inherit permissions from their assigned roles
* Multiple roles can be assigned to a single user
* Provides flexible and scalable access management
!!!! Permission Inheritance
* Users receive combined permissions from all assigned roles
* When roles grant different permission levels for the same resource, the higher access level is granted. For example, if one role grants "read" and another grants "write" access to a recipe, the user receives "write" access since it includes all lower-level permissions.
* Guest access is overridden by recipe ACLs
* When different permission rules conflict, the system follows a "most restrictive wins" principle: if any applicable rule denies access or requires a higher security level, that restriction takes precedence over more permissive rules. This ensures security is maintained even when users have multiple overlapping role assignments or inherited permissions.
This security model allows for fine-grained control over content access while maintaining flexibility for both private and public wiki deployments.
!! User Management & Security Architecture
!!! User Account Management
Users can be administered through two interfaces:
# Web-based Administrative Interface
#* Accessible only to ADMIN users
#* Provides graphical interface for user operations
#* Real-time validation and feedback
# Command-line Interface (CLI) Tools
#* Suitable for automation and scripting
#* Enables batch operations
#* Useful for system initialization
Each user account contains the following essential components:
* ''Username''
** Must be unique across the system
** Case-sensitive
** Used for authentication and audit trails
* ''Password''
** Stored using secure hashing algorithms
** Never stored in plaintext
** Subject to complexity requirements
* ''Role Assignments''
** Multiple roles can be assigned
** Inherited permissions from all assigned roles
** Dynamic permission calculation based on role combination
!!! Role & Permission Framework
!!!! Role Management
Roles serve as permission containers and provide organized access control. The system includes:
Built-in Roles:
* `ADMIN`
** Highest privilege level
** Full system access
** Cannot be modified or deleted
** Can create and manage other roles
** Controls guest access policies
* `USER`
** Basic access rights
** Typically limited to specific recipes
**Custom Roles (Examples):**
* `MANAGER`
** Intermediate access level
** Can manage subset of resources
** Custom roles as needed for specific use cases
!!!! Permission Architecture
Core Permissions:
* `READ` Permission
** View recipe contents
** Access tiddler data
** View metadata
** Export capabilities
* `WRITE` Permission
** Create new tiddlers
** Modify existing content
** Delete resources
** Manage recipe contents
**Guest Access:**
* No default permissions
* Access limited to non-ACL recipes
* Configurable by ADMIN users
* Suitable for public wikis
!!! Access Control List (ACL) Implementation
The ACL system provides granular security control through:
!!!! Entity-Level Control
* Recipe-based access control
* Individual resource protection
* Hierarchical permission inheritance
!!! Authentication Process Flow
* Initial Authentication
** User submits credentials
** System validates username existence
** Password hash comparison
** Session token generation
* Session Management
** Secure session storage
** Token-based authentication
** Automatic session expiration
** Re-authentication requirements
!!! Authorization Workflow
* Request Processing
** Capture user action request
** Identify target resource
** Extract required permissions
* Permission Validation
** Check user roles
** Aggregate permissions
** Verify ACL entries
** Apply guest policies if applicable
* Access Decision
** Compare required vs. available permissions
** Apply most restrictive policy
** Return access decision
!!! System Extension Guidelines
!!!! Adding New Roles
# Access administrative interface
# Define role identifier
# Assign base permissions
# Configure ACL mappings
# Test role functionality
!!!! Permission Expansion
# Define new permission type
# Update ACL structure
# Implement permission checks
# Update validation logic
# Document new permission
!!!! Security Considerations
* Regular permission audits
* Role assignment reviews
* Guest access monitoring
* Security log analysis
* Access pattern monitoring
This comprehensive security model provides flexible, maintainable, and secure access control while supporting both authenticated and guest users within the Multiwiki Server environment.
! HTTP API
The ~MultiWikiServer HTTP API provides access to resources hosted by the MWS store. It is based on [[the API of TiddlyWeb|https://tank.peermore.com/tanks/tiddlyweb/HTTP%20API]], first developed in 2008 by Chris Dent.
The design goals of the API are:
* To follow the principles of REST where practical
* To present resources as nouns, not verbs
General points about the design:
* In MWS there are no resources that end with / (except for the root path which is /)

View File

@@ -1,19 +0,0 @@
title: Troublesheeting gyp/prebuild Installation Errors
tags: Troubleshooting
modified: 20241105133737778
created: 20241105133737778
Installation may fail with errors related to `gyp` or `prebuild`. These errors are caused by missing dependencies or incorrect versions of dependencies.
Note that in most cases, these errors occur because of the use of the npm module [[better-sqlite3|https://www.npmjs.com/package/better-sqlite3]]. This module is mostly written in C, and thus requires compilation for the target platform. MWS supports switchable database engines, and also supports the use of the [[node-sqlite3-wasm|https://www.npmjs.com/package/node-sqlite3-wasm]] module which is written in ~JavaScript and does not require compilation and so may avoid these errors. See [[Database Engines]] for more details of how to switch between engines.
The following steps may help resolve errors involving `gyp` or `prebuild`:
# Ensure that you have the latest version of Node.js installed. You can download the latest version from the [[Node.js website|https://nodejs.org/]].
# Update npm to the latest version by running the following command in your terminal: <<.copy-code-to-clipboard "npm install -g npm@latest">>
# Clear the npm cache by running the following command in your terminal: <<.copy-code-to-clipboard "npm cache clean --force">>
# Delete the `node_modules` folder in your TiddlyWiki directory by running the following command in your terminal: <<.copy-code-to-clipboard "rm -rf node_modules">>
# Reinstall the dependencies by running the following command in your terminal: <<.copy-code-to-clipboard "npm install">>
# If you continue to encounter errors, try running the following command in your terminal: <<.copy-code-to-clipboard "npm rebuild">>
# If you are still experiencing issues, you may need to manually install the `gyp` and `prebuild` dependencies. You can do this by running the following commands in your terminal: <<.copy-code-to-clipboard "npm install -g node-gyp">> <<.copy-code-to-clipboard "npm install -g prebuild">>
# Once you have installed the dependencies, try reinstalling the TiddlyWiki dependencies by running the following command in your terminal: <<.copy-code-to-clipboard "npm install">>

View File

@@ -1,4 +0,0 @@
title: Troubleshooting
tags: TableOfContents
<<list-links "[tag[Troubleshooting]]">>

View File

@@ -1,13 +0,0 @@
title: Usage
tags: TableOfContents
modified: 20241105133737778
created: 20241105133737778
Once MWS is successfully [[installed|Installation]], you can access it by visiting http://localhost:8080 in a browser on the same computer.
By default, MWS is installed with full anonymous access enabled, meaning that anyone with access to the server has full access to read and modify anything. However, also by default, the server is only accessible to browsers on the same machine.
If you intend to put an MWS installation on a public network like the Internet, the server will need to be secured with the following steps:
* Create and login with a new administrator account
* Disable anonymouse access

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

View File

@@ -1,4 +0,0 @@
title: MWS Banner.png
type: image/png
tags: picture
alt-text: Banner for the new Multi Wiki Server plugin for TiddlyWiki

View File

@@ -1,16 +0,0 @@
list-after: $:/core/ui/EditTemplate/title
tags: $:/tags/EditTemplate
title: $:/ContributionBanner
\define base-github()
https://github.com/TiddlyWiki/TiddlyWiki5/edit/multi-wiki-support/editions/multiwikidocs/tiddlers/
\end
<$set name="draft-of" value={{{ [<currentTiddler>get[draft.of]] }}}>
<$list filter="[[$:/config/OriginalTiddlerPaths]getindex<draft-of>]" variable="target" >
<div class="tc-improvement-banner">
{{$:/core/images/star-filled}} Can you help us improve this documentation? [[Find out how|Improving TiddlyWiki Documentation]] to
<a href={{{ [<target>addprefix<base-github>] }}} class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer">edit it directly on ~GitHub</a>
</div>
</$list>
</$set>

View File

@@ -1,3 +0,0 @@
title: $:/SiteDomain
mws.tiddlywiki.com

View File

@@ -1,3 +0,0 @@
title: $:/SitePreviewUrl
https://tiddlywiki.com/images/Introduction%2520Video%2520Thumbnail.jpg

View File

@@ -1,3 +0,0 @@
title: $:/SiteSubtitle
~TiddlyWiki for the People

View File

@@ -1,4 +0,0 @@
title: $:/SiteTitle
type: text/vnd.tiddlywiki
~TiddlyWiki ~MultiWikiServer

View File

@@ -1,3 +0,0 @@
title: $:/SiteUrl
https://mws.tiddlywiki.com/

View File

@@ -1,129 +0,0 @@
tags: $:/tags/RawMarkupWikified/TopBody
title: $:/SplashScreen
type: text/vnd.tiddlywiki
\import [subfilter{$:/core/config/GlobalImportFilter}]
\procedure show-icon(title)
<$wikify name="icon" text={{{ [<title>addprefix[{{]addsuffix[}}]] }}} output="html">
<$text text=<<icon>>/>
</$wikify>
\end
\rules only filteredtranscludeinline transcludeinline macrocallinline
<div class="tc-remove-when-wiki-loaded">
<style scoped>
.tc-splash-text {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
margin: 20px auto 0;
width: 200px;
text-align: center;
color: <<colour foreground>>;
fill: <<colour foreground>>;
}
.tc-splash-text img {
width: 150px;
<<box-shadow "2px 2px 10px rgba(0, 0, 0, 0.5)">>
}
html body.tc-body {
background: <<colour page-background>>;
}
/*
Spinner from https://github.com/tobiasahlin/SpinKit/ by Tobias Ahlin
The MIT License (MIT)
Copyright (c) 2015 Tobias Ahlin
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.tc-splash-spinner {
margin: 20px auto 0;
width: 70px;
text-align: center;
}
.tc-splash-spinner > div {
width: 18px;
height: 18px;
border-radius: 100%;
display: inline-block;
-webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
animation: sk-bouncedelay 1.4s infinite ease-in-out both;
background-color: #f88;
}
.tc-splash-spinner .tc-splash-bounce-1 {
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
background-color: #8f8;
}
.tc-splash-spinner .tc-splash-bounce-2 {
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
background-color: #88f;
}
@-webkit-keyframes sk-bouncedelay {
0%, 80%, 100% { -webkit-transform: scale(0) }
40% { -webkit-transform: scale(1.0) }
}
@keyframes sk-bouncedelay {
0%, 80%, 100% {
-webkit-transform: scale(0);
transform: scale(0);
} 40% {
-webkit-transform: scale(1.0);
transform: scale(1.0);
}
}
</style>
<div class="tc-splash-spinner">
<div class="tc-splash-bounce-1"></div>
<div class="tc-splash-bounce-2"></div>
<div class="tc-splash-bounce-3"></div>
</div>
<div class="tc-splash-text">
<strong>{{$:/SiteTitle}}</strong>
<br/>
is loading
</div>
<!-- Demonstrating how to embed a bitmap graphic -->
<div class="tc-splash-text">
<img src="data:image/jpeg;base64,{{MWS Banner.png||$:/core/templates/plain-text-tiddler}}" width="100"/>
</div>
<!-- Demonstrating how to embed a wikitext SVG graphic -->
<div class="tc-splash-text">
<<show-icon "$:/core/icon">>
</div>
</div>

View File

@@ -1,3 +0,0 @@
title: $:/StaticBanner
<div class="tc-static-alert"><div class="tc-static-alert-inner">This page is part of a static HTML representation of the ~TiddlyWiki at https://tiddlywiki.com/</div></div>

View File

@@ -1,49 +0,0 @@
tags: $:/tags/Stylesheet
title: $:/_styles
type: text/vnd.tiddlywiki
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
.tc-improvement-banner {
font-size: 0.7em;
background: #fcc;
padding-left: 5px;
margin-top: 6px;
margin-bottom: 12px;
<<box-shadow "2px 2px 2px rgba(0,0,0,0.4)">>
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-improvement-banner {
}
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-improvement-banner {
margin-right: -53px;
margin-left: -53px;
}
.tc-improvement-banner:before {
display: block;
position: absolute;
width: 0;
height: 0;
content: " ";
margin-left: -5px;
margin-top: -10px;
border-top: 5px solid transparent;
border-left: 5px solid transparent;
border-right: 5px solid #C07E7E;
border-bottom: 5px solid #C07E7E;
}
}
.tc-improvement-banner svg {
width: 1em;
height: 1em;
}

View File

@@ -1,9 +0,0 @@
tags: $:/tags/SideBar
title: TableOfContents
list-before:
<div class="tc-table-of-contents">
<<toc-selective-expandable 'TableOfContents'>>
</div>

View File

@@ -1,3 +0,0 @@
title: $:/config/DefaultSidebarTab
TableOfContents

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,2 +0,0 @@
title: $:/favicon.ico
type: image/png

View File

@@ -1,11 +0,0 @@
code-body: yes
tags: $:/tags/Macro
title: $:/editions/multiwikidocs/doc-macros
type: text/vnd.tiddlywiki
\procedure .copy-code-to-clipboard(text)
<div>
<$transclude $variable="copy-to-clipboard-above-right" src=<<text>>/>
<$codeblock code=<<text>>/>
</div>
\end .copy-code-to-clipboard

View File

@@ -1,149 +0,0 @@
title: $:/palettes/MWS
name: MWS Palette
description: Palette for mws.tiddlywiki.com
tags: $:/tags/Palette
type: application/x-tiddler-dictionary
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background:
button-foreground:
button-border:
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
diff-delete-background: #ffc9c9
diff-delete-foreground: <<colour foreground>>
diff-equal-background:
diff-equal-foreground: <<colour foreground>>
diff-insert-background: #aaefad
diff-insert-foreground: <<colour foreground>>
diff-invisible-background:
diff-invisible-foreground: <<colour muted-foreground>>
dirty-indicator: #ff0000
download-background: #34c734
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #ffffff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #0000ee
footnote-target-background: #ecf2ff
foreground: #333333
highlight-background: #ffff00
highlight-foreground: #000000
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbbbbb
network-activity-foreground: #448844
notification-background: #ffffdd
notification-border: #999999
page-background: #eddee7
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
selection-background:
selection-foreground:
select-tag-background:
select-tag-foreground:
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #eddee7
sidebar-tab-background: #c7b7bf
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
stability-stable: #008000
stability-experimental: #c07c00
stability-deprecated: #ff0000
stability-legacy: #0000ff
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #eecc66
tag-foreground: #ffffff
testcase-accent-level-1: #c1eaff
testcase-accent-level-2: #E3B740
testcase-accent-level-3: #5FD564
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #182955
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
wikilist-background: #e5e5e5
wikilist-item: #ffffff
wikilist-info: #000000
wikilist-title: #666666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaaaaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000000

View File

@@ -1,3 +0,0 @@
title: $:/palette
$:/palettes/MWS

View File

@@ -1,3 +0,0 @@
title: $:/themes/tiddlywiki/vanilla/options/sidebarlayout
fluid-fixed

View File

@@ -1,18 +0,0 @@
title: $:/core/templates/static.content
\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html
<!-- For Google, and people without JavaScript-->
<$reveal default="yes" text=<<savingEmpty>> type="nomatch">
It looks like this browser doesn't run JavaScript. You can use one of these static HTML versions to browse the same content:
* https://mws.tiddlywiki.com/static.html - browse individual tiddlers as separate pages
* https://mws.tiddlywiki.com/alltiddlers.html#HelloThere - single file containing all tiddlers
---
{{HelloThere}}
</$reveal>

View File

@@ -1,26 +0,0 @@
{
"description": "Multiple wiki server documentation edition",
"plugins": [
],
"themes": [
"tiddlywiki/vanilla",
"tiddlywiki/snowwhite"
],
"build": {
"index": [
"--savetiddlers","[tag[external-image]]","images",
"--setfield","[tag[external-image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain",
"--setfield","[tag[external-image]]","text","","text/plain",
"--render","$:/core/save/all","index.html","text/plain"],
"favicon": [
"--savetiddler","$:/favicon.ico","favicon.ico"],
"static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
},
"config": {
"retain-original-tiddler-path": true
}
}

View File

@@ -1,2 +0,0 @@
list: GettingStarted
title: $:/StoryList

View File

@@ -1,2 +0,0 @@
title: $:/config/MultiWikiServer/Engine
text: better

View File

@@ -1,39 +0,0 @@
{
"description": "Multiple wiki client-server edition",
"plugins": [
"tiddlywiki/tiddlyweb",
"tiddlywiki/filesystem",
"tiddlywiki/multiwikiclient",
"tiddlywiki/multiwikiserver"
],
"themes": [
"tiddlywiki/vanilla",
"tiddlywiki/snowwhite"
],
"build": {
"load-mws-demo-data": [
"--mws-load-wiki-folder","./editions/multiwikidocs","mws-docs", "MWS Documentation from https://mws.tiddlywiki.com","mws-docs","MWS Documentation from https://mws.tiddlywiki.com",
"--mws-load-wiki-folder","./editions/tw5.com","docs", "TiddlyWiki Documentation from https://tiddlywiki.com","docs","TiddlyWiki Documentation from https://tiddlywiki.com",
"--mws-load-wiki-folder","./editions/dev","dev","TiddlyWiki Developer Documentation from https://tiddlywiki.com/dev","dev-docs", "TiddlyWiki Developer Documentation from https://tiddlywiki.com/dev",
"--mws-load-wiki-folder","./editions/tour","tour","TiddlyWiki Interactive Tour from https://tiddlywiki.com","tour", "TiddlyWiki Interactive Tour from https://tiddlywiki.com",
"--mws-create-bag","bag-alpha","A test bag",
"--mws-create-bag","bag-beta","Another test bag",
"--mws-create-bag","bag-gamma","A further test bag",
"--mws-create-recipe","recipe-rho","bag-alpha bag-beta","First wiki",
"--mws-create-recipe","recipe-sigma","bag-alpha bag-gamma","Second Wiki",
"--mws-create-recipe","recipe-tau","bag-alpha","Third Wiki",
"--mws-create-recipe","recipe-upsilon","bag-alpha bag-gamma bag-beta","Fourth Wiki",
"--mws-save-tiddler-text","bag-alpha","$:/SiteTitle","bag-alpha",
"--mws-save-tiddler-text","bag-alpha","😀😃😄😁😆🥹😅😂","bag-alpha",
"--mws-save-tiddler-text","bag-beta","$:/SiteTitle","bag-beta",
"--mws-save-tiddler-text","bag-gamma","$:/SiteTitle","bag-gamma",
"--mws-add-permission", "READ", "Allows user to read recipes and bags",
"--mws-add-permission", "WRITE", "Gives the user the permission to edit and delete tiddlers",
"--mws-add-role", "ADMIN", "System Administrator",
"--mws-add-role", "USER", "Basic User",
"--mws-assign-role-permission", "ADMIN", "READ",
"--mws-assign-role-permission", "ADMIN", "WRITE",
"--mws-assign-role-permission", "USER", "READ"
]
}
}

Some files were not shown because too many files have changed in this diff Show More