1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-01-08 16:30:26 +00:00

Merge branch 'TiddlyWiki:master' into sidebar-resizer-config

This commit is contained in:
Simon Huber 2024-11-16 11:06:01 +01:00 committed by GitHub
commit fc8396273e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
38 changed files with 339 additions and 56 deletions

View File

@ -5,7 +5,7 @@
# Default to the current version number for building the plugin library # Default to the current version number for building the plugin library
if [ -z "$TW5_BUILD_VERSION" ]; then if [ -z "$TW5_BUILD_VERSION" ]; then
TW5_BUILD_VERSION=v5.3.6 TW5_BUILD_VERSION=v5.3.7
fi fi
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]" echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"

View File

@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/library/v5.3.6/index.html url: https://tiddlywiki.com/library/v5.3.7/index.html
caption: {{$:/language/OfficialPluginLibrary}} caption: {{$:/language/OfficialPluginLibrary}}
{{$:/language/OfficialPluginLibrary/Hint}} {{$:/language/OfficialPluginLibrary/Hint}}

View File

@ -0,0 +1,54 @@
caption: 5.3.7
created: 20241115171024144
modified: 20241115171024144
tags: ReleaseNotes
title: Release 5.3.7
type: text/vnd.tiddlywiki
description: Under development
//[[See GitHub for detailed change history of this release|https://github.com/TiddlyWiki/TiddlyWiki5/compare/v5.3.6...master]]//
! Major Improvements
! Translation improvements
*
! Plugin Improvements
! Widget Improvements
*
! Filter Improvements
*
! Usability Improvements
*
! Hackability Improvements
*
! Bug Fixes
*
! Node.js Improvements
*
! Developer Improvements
*
! Acknowledgements
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
<<.contributors """
""">>

View File

@ -1,6 +1,6 @@
title: $:/config/LocalPluginLibrary title: $:/config/LocalPluginLibrary
tags: $:/tags/PluginLibrary tags: $:/tags/PluginLibrary
url: http://127.0.0.1:8080/prerelease/library/v5.3.6/index.html url: http://127.0.0.1:8080/prerelease/library/v5.3.7/index.html
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local) caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local)
A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library// A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library//

View File

@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/prerelease/library/v5.3.6/index.html url: https://tiddlywiki.com/prerelease/library/v5.3.7/index.html
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.

View File

@ -4,14 +4,3 @@ type: text/vnd.tiddlywiki
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
.tc-scary-warning {
font-weight: bold;
padding: 0 1em;
margin-left: -1em;
margin-right: -1em;
color: #f22;
border-radius: 4px;
border: 3px solid transparent;
background: #ffd;
background: linear-gradient(#ffd, #ffd) padding-box, repeating-linear-gradient(-45deg, red 0, red 25%, transparent 0, transparent 50%) 0 / .6em .6em;
}

View File

@ -2,7 +2,7 @@ color: #808
created: 20241009150445080 created: 20241009150445080
icon: $:/core/images/link icon: $:/core/images/link
list: TalkTiddlyWiki [[TiddlyWiki on YouTube]] [[TiddlyWiki on Reddit]] [[TiddlyWiki on Discord]] [[TiddlyWiki on GitHub]] [[TiddlyWiki on Mastodon]] [[TiddlyWiki on Twitter]] [[TiddlyWiki on Gitter]] [[TiddlyWiki on Open Collective]] list: TalkTiddlyWiki [[TiddlyWiki on YouTube]] [[TiddlyWiki on Reddit]] [[TiddlyWiki on Discord]] [[TiddlyWiki on GitHub]] [[TiddlyWiki on Mastodon]] [[TiddlyWiki on Twitter]] [[TiddlyWiki on Gitter]] [[TiddlyWiki on Open Collective]]
modified: 20241009150453139 modified: 20241115170824144
tags: Welcome tags: Welcome
title: TiddlyWiki on the Web title: TiddlyWiki on the Web
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -0,0 +1,9 @@
component: demo
created: 20160107230134172
modified: 20160107230134172
title: SampleAlert
type: text/vnd.tiddlywiki
This is a demonstration alert.
Note that the trashcan icon deletes the tiddler containing this alert. You can also remove it by opening the tiddler SampleAlert and editing it to remove the tag [[$:/tags/Alert]].

View File

@ -1,7 +1,7 @@
color: #880 color: #880
created: 20241009150347613 created: 20241009150347613
icon: $:/core/images/help icon: $:/core/images/help
modified: 20241009150430229 modified: 20241115170824144
tags: Welcome tags: Welcome
title: Find Out More title: Find Out More
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -1,7 +1,7 @@
created: 20130822170200000 created: 20130822170200000
icon: $:/core/icon icon: $:/core/icon
list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]]
modified: 20241009150333146 modified: 20241115170824144
tags: Welcome tags: Welcome
title: HelloThere title: HelloThere
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -1,5 +1,5 @@
created: 20150414070451144 created: 20150414070451144
list: [[HelloThumbnail - Twenty Years of TiddlyWiki]] [[HelloThumbnail - Newsletter]] [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Grok TiddlyWiki]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyWikiLinks]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Funding]] [[HelloThumbnail - Marketplace]] [[HelloThumbnail - Intertwingled Innovations]] list: [[HelloThumbnail - Twenty Years of TiddlyWiki]] [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - TiddlyWiki Privacy]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - Newsletter]] [[HelloThumbnail - Grok TiddlyWiki]] [[HelloThumbnail - TiddlyWikiLinks]] [[HelloThumbnail - MultiWikiServer]] [[HelloThumbnail - Funding]] [[HelloThumbnail - Marketplace]] [[HelloThumbnail - Intertwingled Innovations]]
modified: 20150414070948246 modified: 20150414070948246
title: HelloThumbnail title: HelloThumbnail
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -1,6 +1,6 @@
color: #088 color: #088
icon: $:/core/images/star-filled icon: $:/core/images/star-filled
modified: 20241001141521924 modified: 20241115170824144
tags: Welcome tags: Welcome
title: Testimonials and Reviews title: Testimonials and Reviews
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -2,7 +2,7 @@ color: #cc9
created: 20241009163451663 created: 20241009163451663
icon: $:/core/images/tip icon: $:/core/images/tip
list: GettingStarted [[Getting Started Video]] [[Find Out More]] [[TiddlyWiki on the Web]] [[Testimonials and Reviews]] list: GettingStarted [[Getting Started Video]] [[Find Out More]] [[TiddlyWiki on the Web]] [[Testimonials and Reviews]]
modified: 20241009163521037 modified: 20241115170824144
tags: Welcome tags: Welcome
title: Quick Start title: Quick Start
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -0,0 +1,10 @@
title: HelloThumbnail - MultiWikiServer
tags: HelloThumbnail
color: purple
background-color: #fff
caption: Coming Soon
link: MultiWikiServer
image: MWS Banner.png
ribbon-text: SOON
Find out more about the new ~MultiWikiServer plugin that turns ~TiddlyWiki into a full-fledged server system supporting multiple user accounts and tiddler sharing

View File

@ -4,6 +4,5 @@ caption: ~TiddlyWiki Newsletter
link: TiddlyWiki Newsletter link: TiddlyWiki Newsletter
image: TiddlyWiki Newsletter Badge.png image: TiddlyWiki Newsletter Badge.png
color: #fff color: #fff
ribbon-text: NEW
Subscribe to the ~TiddlyWiki Newsletter, a fortnightly summary of the most interesting and relevant news from the ~TiddlyWiki community Subscribe to the ~TiddlyWiki Newsletter, a fortnightly summary of the most interesting and relevant news from the ~TiddlyWiki community

View File

@ -0,0 +1,9 @@
title: HelloThumbnail - TiddlyWiki Privacy
tags: HelloThumbnail
color: #D5B7EA
image: TiddlyWiki Privacy Badge.png
caption: Your Privacy and Security
link: TiddlyWiki Privacy and Security
ribbon-text: NEW
With care, ~TiddlyWiki can be used totally privately, without needing to trust anything or anyone but your own device

View File

@ -2,7 +2,7 @@ title: HelloThumbnail - TiddlyWikiLinks
tags: HelloThumbnail tags: HelloThumbnail
color: #D5B7EA color: #D5B7EA
image: TiddlyWikiLinks image: TiddlyWikiLinks
caption: links.tiddlywiki.org caption: Community Links
link: Community Links Aggregator link: Community Links Aggregator
Links to ~TiddlyWiki-related content collected by the community Links to ~TiddlyWiki-related content collected by the community

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

View File

@ -0,0 +1,6 @@
alt-text: Motovun Jack's laser eyes highlight TiddlyWiki's security badge
created: 20241106165307259
modified: 20241106165307259
tags: picture
title: TiddlyWiki Privacy Badge.png
type: image/png

View File

@ -1,14 +1,19 @@
caption: 5.3.6 caption: 5.3.6
created: 20240830144941926 created: 20241115170824144
modified: 20240830144941926 modified: 20241115170824144
released: 20241115170824144
tags: ReleaseNotes tags: ReleaseNotes
title: Release 5.3.6 title: Release 5.3.6
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
description: Under development description: Under development
//[[See GitHub for detailed change history of this release|https://github.com/TiddlyWiki/TiddlyWiki5/compare/v5.3.5...master]]// //[[See GitHub for detailed change history of this release|https://github.com/TiddlyWiki/TiddlyWiki5/compare/v5.3.5...v5.3.6]]//
! Major Improvements <<.banner-credits
credit:"""Congratulations to [[pmario|https://talk.tiddlywiki.org/u/pmario]] for their winning design for the banner for this release (here is the [[competition thread|https://talk.tiddlywiki.org/t/banner-image-competition-for-v5-3-6]]).
"""
url:"https://raw.githubusercontent.com/TiddlyWiki/TiddlyWiki5/fdafdba1b07032f3d777bd3f782c4e62cfbf3731/editions/tw5.com/tiddlers/images/New%20Release%20Banner.png"
>>
! Translation improvements ! Translation improvements
@ -30,6 +35,7 @@ This release includes improvements to the following translations:
!! Geospatial Plugin !! Geospatial Plugin
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8404">> support for custom wikitext popups to be attached to map features * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8404">> support for custom wikitext popups to be attached to map features
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8740">> support for click actions to be attached to map features
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8437">> ordering of latitude and longitude in geospatial operators * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8437">> ordering of latitude and longitude in geospatial operators
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8484">> crash when geomap contains an empty geolayer widget * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8484">> crash when geomap contains an empty geolayer widget
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8511">> loading map state from saved tiddlers * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8511">> loading map state from saved tiddlers
@ -66,10 +72,6 @@ This release includes several fixes and improvements to the TestCaseWidget, its
* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8256">> DroppableWidget to allow actions to be triggered once passing all the items in the list rather than invoking the actions separately for each item in the list * <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8256">> DroppableWidget to allow actions to be triggered once passing all the items in the list rather than invoking the actions separately for each item in the list
! Filter Improvements
*
! Usability Improvements ! Usability Improvements
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8545">> new light and dark "Flexoki" palettes, originally designed by Steph Ango see https://stephango.com/flexoki * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8545">> new light and dark "Flexoki" palettes, originally designed by Steph Ango see https://stephango.com/flexoki

View File

@ -0,0 +1,17 @@
title: MWS: Installation using Git
tags: MultiWikiServer
modified: 20241105133737778
created: 20241105133737778
These instructions require basic knowledge both of the terminal and of Git. There are also [[alternative instructions without using Git|MWS: 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 in 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>
To update your copy of MWS with newer changes from ~GitHub, run the following command:
<<.copy-code-to-clipboard "git pull">>

View File

@ -0,0 +1,15 @@
title: MWS: Installation
tags: MultiWikiServer
modified: 20241105133737778
created: 20241105133737778
These instructions require minimal knowledge of the terminal. There are also [[alternative instructions for those using Git|MWS: Installation using Git]].
# Download the code [[direct from GitHub|https://github.com/TiddlyWiki/TiddlyWiki5/archive/refs/pull/7915/head.zip]]
# Open a terminal window in 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>
To update your copy of MWS with newer changes will require re-downloading the code, taking care not to lose any changes you might have made.

View File

@ -0,0 +1,13 @@
title: MWS: Usage
tags: MultiWikiServer
modified: 20241105133737778
created: 20241105133737778
Once MWS is successfully [[installed|MWS: 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

View File

@ -0,0 +1,26 @@
title: MultiWikiServer
tags: Definitions
modified: 20241105133737778
created: 20241105133737778
! Introduction
~MultiWikiServer is a new development that drastically improves ~TiddlyWiki's capabilities when running as 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.
Planned features include:
* Hosting multiple wikis at once, using the [[Bags and Recipes]] mechanism for sharing data between them
* Robust 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.
! Installing MWS
{{MWS: Installation}}
! Using MWS
{{MWS: Usage}}

View File

@ -1,10 +1,10 @@
created: 20130825160900000 created: 20130825160900000
modified: 20160610083350724 modified: 20241106165307259
tags: Features [[Working with TiddlyWiki]] tags: Features [[Working with TiddlyWiki]]
title: Encryption title: Encryption
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
When used as a single HTML file, TiddlyWiki5 allows content to be encrypted using the [[Stanford JavaScript Crypto Library]]. When used as a single HTML file, TiddlyWiki5 allows content to be encrypted with AES 128 bit encryption in CCM mode using the [[Stanford JavaScript Crypto Library]].
# Switch to the ''Tools'' tab in the sidebar and look for the button with a padlock icon # Switch to the ''Tools'' tab in the sidebar and look for the button with a padlock icon
# If the button is labelled <<.icon $:/core/images/unlocked-padlock>> ''set password'' then the current wiki is not encrypted. Clicking the button will prompt for a password that will be used to encrypt subsequent saves # If the button is labelled <<.icon $:/core/images/unlocked-padlock>> ''set password'' then the current wiki is not encrypted. Clicking the button will prompt for a password that will be used to encrypt subsequent saves

View File

@ -228,3 +228,11 @@ This is an example tiddler. See [[Table-of-Contents Macros (Examples)]].
</$list> </$list>
</ol> </ol>
\end \end
\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

@ -0,0 +1,17 @@
title: $:/_tw5.com/netlify-build-badge
tags: $:/tags/SideBarSegment
list-after: $:/core/ui/SideBarSegments/site-subtitle
<% if [{$:/build}prefix[NETLIFY-BUILD]] %>
<p>
<div class="tc-scary-warning" style="display: flex;gap: 0.5em;padding: 1em;margin-right: 1em;align-items: center;">
<div style="">
<a href="https://www.netlify.com" rel="noopener noreferrer" target="_blank"><img src="https://www.netlify.com/v3/img/components/netlify-light.svg" alt="Deploys by Netlify" /></a>
</div>
<div style="">
This is a preview build of the pull request <a href={{{ [{$:/build}split[|]nth[5]addprefix[https://github.com/TiddlyWiki/TiddlyWiki5/pull/]] }}} rel="noopener noreferrer" target="_blank">#<$text text={{{ [{$:/build}split[|]nth[5]] }}}/></a>
</div>
</div>
</p>
<% endif %>

View File

@ -133,3 +133,15 @@ type: text/vnd.tiddlywiki
.tc-saving-sidebar-category { margin-bottom:10px; } .tc-saving-sidebar-category { margin-bottom:10px; }
.tc-saving-sidebar-category-title { margin-bottom:5px; font-weight:bold; } .tc-saving-sidebar-category-title { margin-bottom:5px; font-weight:bold; }
.tc-saving-sidebar-category-item { margin-left:10px; white-space:nowrap; } .tc-saving-sidebar-category-item { margin-left:10px; white-space:nowrap; }
.tc-scary-warning {
font-weight: bold;
padding: 0 1em;
margin-left: -1em;
margin-right: -1em;
color: #f22;
border-radius: 4px;
border: 3px solid transparent;
background: #ffd;
background: linear-gradient(#ffd, #ffd) padding-box, repeating-linear-gradient(-45deg, red 0, red 25%, transparent 0, transparent 50%) 0 / .6em .6em;
}

View File

@ -0,0 +1,48 @@
title: TiddlyWiki Privacy and Security
created: 20241106165307259
modified: 20241106165307259
<span class="tc-float-right">[img width=200 [TiddlyWiki Privacy Badge.png]]</span>
TiddlyWiki is unique in that ordinary people without special training can use it securely and privately. It is easy to apply the advice from the EFF to ~TiddlyWiki. The key is that ~TiddlyWiki is just a file, and so everything that users may have already learned about how to keep documents and images private can be applied to ~TiddlyWiki.
Because data is stored in simple text files, people choosing to use ~TiddlyWiki today can be confident that their data will still be accessible in the decades to come.
! Verifiable Trust
An important aspect of ~TiddlyWiki's claims in the area of security and privacy is that these claims can be readily verified by anyone with basic technical skills. For example, the network monitoring tools built into browsers allow users to verify that ~TiddlyWiki doesn't send any data to other servers. Similarly anyone can open a ~TiddlyWiki HTML file in an editor and verify that their data is readily accessible.
! Single File Configuration
As a practical matter, using ~TiddlyWiki securely and privately in the single file configuration depends upon keeping that single file securely and privately.
Users can employ the same tools that they use to keep any document and photograph secure. So, for many users, the simplest solution will be to use an existing file storage service such as Google Drive, Apple's iCloud, or Dropbox. Many users will already be relying on the privacy and security of these services.
There are also open source alternatives such as [[Syncthing|https://syncthing.net/]] that allow users to synchronise files between their devices without using a third party service.
Users may wish to use additional layers of security. ~TiddlyWiki in the single file configuration itself offers built-in encryption. It uses an industry standard encryption library to offer AES 128 bit encryption in CCM mode. All the data within the file is encrypted, and cannot be accessed without entering the correct password. The password is never stored in the file, and so if it is lost, the data is lost. Instructions can be found in [[Encryption]].
It is important to understand that ~TiddlyWiki's built in encryption is our best endeavour to offer privacy and usability. However, the encryption feature has not been subject to the kind of rigorous third party testing that characterises secure services like Signal or Syncthing.
So, cautious users may wish to use ~TiddlyWiki's built in encryption as an extra layer of security, but should take care not to rely on it as one would rely on industry standard encryption solutions that have been rigorously tested in a variety of situations.
! Node.js Configuration
Using ~TiddlyWiki in the Node.js configuration requires more technical knowledge than the single file edition. There are several important areas with respect to security and privacy.
Firstly, and most obviously, there is the matter of how user data is stored on disc as individual `.tid` files. Just as with the single file configuration, these are just ordinary files, and so can be used with third party tools that provide encryption.
Secondly, consideration must be given to how data is transmitted across the network. By default, the Node.js configuration does not use SSL and so traffic can be observed by others (the impact is mitigated by the fact that by default only users on the same machine can connect to the server). While ~TiddlyWiki itself does offer the option of setting up an SSL connection it is generally advised to use an external proxy server to provide SSL services. nginx is popular for this purpose.
! Community Tools
There are also third party tools from the community that extend ~TiddlyWiki's built in encryption:
* [["Encrypt single tiddler plugin" by Danielo Rodriguez]] allows individual tiddlers to be encrypted
* [[TW5-CSEncryption|https://wiki.fspark.me/TW5-CSEncryption/]] offers client-side encryption for ~TiddlyWiki on Node.js
! Further Information
If security and privacy are important to you then you need to take the best available advice, and the best place for that is specialist organisations that focus on this area. The Electronic Frontier Foundation in the US is well respected, and their advice would be a good place to start. It emphasises basics such as dealing with passwords and two factor authentication, but also explains more advanced topics such as making a security plan, and how to set up a device securely.
https://ssd.eff.org/module-categories/basics

View File

@ -1,7 +1,7 @@
{ {
"name": "tiddlywiki", "name": "tiddlywiki",
"preferGlobal": "true", "preferGlobal": "true",
"version": "5.3.6-prerelease", "version": "5.3.7-prerelease",
"author": "Jeremy Ruston <jeremy@jermolene.com>", "author": "Jeremy Ruston <jeremy@jermolene.com>",
"description": "a non-linear personal web notebook", "description": "a non-linear personal web notebook",
"contributors": [ "contributors": [

View File

@ -16,7 +16,8 @@ The following attributes are supported:
|''long'' |Optional longitude of marker if json attribute missing | |''long'' |Optional longitude of marker if json attribute missing |
|''alt'' |Optional altitude of marker if json attribute missing | |''alt'' |Optional altitude of marker if json attribute missing |
|''draggable'' |Set to "yes" to make the marker draggable | |''draggable'' |Set to "yes" to make the marker draggable |
|''updateActions'' |Optional actions when the marker is dragged other otherwise modified. The variables ''lat'' and ''long'' contain the new coordinates of the marker | |''updateActions'' |Optional actions when the marker is dragged other otherwise modified. The variables ''lat'', ''long'' and ''alt'' contain the new coordinates of the marker |
|''clickActions'' |<<.from-version "5.3.6">> Optional actions when the marker is clicked. The variable ''properties'' contains the JSON properties of the marker. The variables ''lat'', ''long'' and ''alt'' contain the coordinates of the marker |
|''properties'' |<<.from-version "5.3.6">> Optional JSON properties to be attached to the marker (only supported for non-JSON layers) | |''properties'' |<<.from-version "5.3.6">> Optional JSON properties to be attached to the marker (only supported for non-JSON layers) |
|''popupTemplate'' |<<.from-version "5.3.6">> Optional template to be used for popups. The template is rendered with the variable ''feature'' containing the JSON text of the feature | |''popupTemplate'' |<<.from-version "5.3.6">> Optional template to be used for popups. The template is rendered with the variable ''feature'' containing the JSON text of the feature |

View File

@ -101,6 +101,36 @@ If no base layers are defined by `<$geobaselayer>` widgets within the `<$geomap>
<$data $tiddler="$:/plugins/tiddlywiki/geospatial"/> <$data $tiddler="$:/plugins/tiddlywiki/geospatial"/>
</$testcase> </$testcase>
<$testcase>
<$data
title="Description"
text="Map with geomarker with actions"
/>
<$data title="MarkerClickActions" text="""
<$action-setfield $tiddler="$:/clicked-marker" text={{{ =[<properties>] =[<lat>] =[<long>] =[<alt>] +[join[,]] }}}/>
"""/>
<$data title="Output" text="""Marker: <$text text={{$:/clicked-marker}}/>
<$geomap
state=<<qualify "$:/state/demo-map">>
>
<$list filter="[all[tiddlers+shadows]tag[$:/tags/GeoMarker]]">
<$geolayer lat={{!!lat}} long={{!!long}} alt={{!!alt}} color={{!!color}} properties={{{ [[{}]jsonset[title],<currentTiddler>] }}} clickActions={{MarkerClickActions}}/>
</$list>
</$geomap>
"""/>
<$data
title="Oxford"
tags="$:/tags/GeoMarker"
caption="Oxford"
lat="51.751944"
long="-1.257778"
alt="0"
text="""{{$:/core/images/star-filled}} This is Oxford!"""/>
properties={{{ [[{}]jsonset[title],[Oxford] }}}/>
<$data $tiddler="$:/plugins/tiddlywiki/geospatial"/>
</$testcase>
<$testcase> <$testcase>
<$data <$data
title="Description" title="Description"

View File

@ -1,3 +0,0 @@
title: $:/plugins/tiddlywiki/geospatial/templates/default-popup-template
Feature: <$text text={{{ [<feature>] }}}/>

View File

@ -167,11 +167,12 @@ GeomapWidget.prototype.refreshMap = function() {
}); });
this.map.addLayer(markers); this.map.addLayer(markers);
// Process embedded geolayer widgets // Process embedded geolayer widgets
var defaultPopupTemplateTitle = self.getAttribute("popupTemplate","$:/plugins/tiddlywiki/geospatial/templates/default-popup-template"); var defaultPopupTemplateTitle = self.getAttribute("popupTemplate");
this.findChildrenDataWidgets(this.contentRoot.children,"geolayer",function(widget) { this.findChildrenDataWidgets(this.contentRoot.children,"geolayer",function(widget) {
var jsonText = widget.getAttribute("json"), var jsonText = widget.getAttribute("json"),
popupTemplateTitle = widget.getAttribute("popupTemplate",defaultPopupTemplateTitle), popupTemplateTitle = widget.getAttribute("popupTemplate",defaultPopupTemplateTitle),
geoJson = []; geoJson = [];
// Build up the geojson of the layer
if(jsonText) { if(jsonText) {
// Layer is defined by JSON blob // Layer is defined by JSON blob
geoJson = $tw.utils.parseJSONSafe(jsonText,[]); geoJson = $tw.utils.parseJSONSafe(jsonText,[]);
@ -197,6 +198,7 @@ GeomapWidget.prototype.refreshMap = function() {
geoJson.features[0].properties = $tw.utils.parseJSONSafe(properties); geoJson.features[0].properties = $tw.utils.parseJSONSafe(properties);
} }
} }
// Create and add layer for the geojson
var draggable = widget.getAttribute("draggable","no") === "yes", var draggable = widget.getAttribute("draggable","no") === "yes",
layer = $tw.Leaflet.geoJSON(geoJson,{ layer = $tw.Leaflet.geoJSON(geoJson,{
style: function(geoJsonFeature) { style: function(geoJsonFeature) {
@ -211,31 +213,46 @@ GeomapWidget.prototype.refreshMap = function() {
var latlng = event.sourceTarget.getLatLng(); var latlng = event.sourceTarget.getLatLng();
self.invokeActionString(widget.getAttribute("updateActions"),null,event,{ self.invokeActionString(widget.getAttribute("updateActions"),null,event,{
lat: latlng.lat, lat: latlng.lat,
long: latlng.lng long: latlng.lng,
alt: latlng.alt
}); });
}); });
return marker; return marker;
}, },
onEachFeature: function(feature,layer) { onEachFeature: function(feature,layer) {
layer.bindPopup(function() { if(popupTemplateTitle) {
var widget = self.wiki.makeTranscludeWidget(popupTemplateTitle, { layer.bindPopup(function() {
document: self.document, var widget = self.wiki.makeTranscludeWidget(popupTemplateTitle, {
parentWidget: self, document: self.document,
parseAsInline: false, parentWidget: self,
importPageMacros: true, parseAsInline: false,
variables: { importPageMacros: true,
feature: JSON.stringify(feature) variables: {
} feature: JSON.stringify(feature)
}
});
var container = self.document.createElement("div");
widget.render(container,null);
self.wiki.addEventListener("change",function(changes) {
widget.refresh(changes,container,null);
});
return container;
}); });
var container = self.document.createElement("div"); }
widget.render(container,null); // Add event handlers
self.wiki.addEventListener("change",function(changes) { if(widget.hasAttribute("clickActions")) {
widget.refresh(changes,container,null); layer.on("click",function(event) {
self.invokeActionString(widget.getAttribute("clickActions"),null,event.originalEvent,{
lat: event.latlng.lat,
long: event.latlng.lng,
alt: event.latlng.alt,
properties: JSON.stringify(feature.properties)
});
}); });
return container; }
});
} }
}).addTo(self.map); }).addTo(self.map);
// Create a name for this layer
var name = widget.getAttribute("name") || ("Untitled " + untitledCount++); var name = widget.getAttribute("name") || ("Untitled " + untitledCount++);
self.renderedLayers.push({name: name, layer: layer}); self.renderedLayers.push({name: name, layer: layer});
}); });

View File

@ -3,7 +3,7 @@
</p></blockquote><h4 class="">Google Groups</h4><blockquote class="tc-quote"><p>For the convenience of existing users, we also continue to operate the original TiddlyWiki group (hosted on Google Groups since 2005): <a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWiki" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWiki</a> </p></blockquote><h4 class="">Google Groups</h4><blockquote class="tc-quote"><p>For the convenience of existing users, we also continue to operate the original TiddlyWiki group (hosted on Google Groups since 2005): <a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWiki" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWiki</a>
</p></blockquote><h2 class="">Developer Forums</h2><h2 class=""><a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/graphs/contributors" rel="noopener noreferrer" target="_blank">GitHub Stats</a></h2><p>There are several resources for developers to learn more about <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> and to discuss and contribute to its development.</p><blockquote><div><img class=" tc-image-loading" src="https://repobeats.axiom.co/api/embed/b92b1b363e2b5f26837ae573a60d39b4248b50a0.svg"></div></blockquote><ul><li><a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">tiddlywiki.com/dev</a> is the official developer documentation</li><li>Get involved in the <a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5" rel="noopener noreferrer" target="_blank">development on GitHub</a></li><li><a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">GitHub Discussions</a> are for Q&amp;A and open-ended discussion</li><li><a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/issues" rel="noopener noreferrer" target="_blank">GitHub Issues</a> are for raising bug reports and proposing specific, actionable new ideas</li><li>The older TiddlyWikiDev Google Group is now closed in favour of <a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/" rel="noopener noreferrer" target="_blank">Talk TiddlyWiki</a> and <a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">GitHub Discussions</a> <ul><li>It remains a useful archive: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWikiDev" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWikiDev</a><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywikidev@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li></ul></li><li>Chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> (development room coming soon)</li></ul><h2 class="">Twitter</h2><ul><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/#!/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li></ul><h2 class="">Other Forums</h2><ul><li><a class="tc-tiddlylink-external" href="https://www.reddit.com/r/TiddlyWiki5/" rel="noopener noreferrer" target="_blank">TiddlyWiki Subreddit</a></li><li>Chat with Gitter at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> !</li><li>Chat on Discord at <a class="tc-tiddlylink-external" href="https://discord.gg/HFFZVQ8" rel="noopener noreferrer" target="_blank">https://discord.gg/HFFZVQ8</a></li></ul><h3 class="">Documentation</h3><p>There is also a discussion group specifically for discussing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> documentation improvement initiatives: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/tiddlywikidocs" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/tiddlywikidocs</a> </p></blockquote><h2 class="">Developer Forums</h2><h2 class=""><a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/graphs/contributors" rel="noopener noreferrer" target="_blank">GitHub Stats</a></h2><p>There are several resources for developers to learn more about <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> and to discuss and contribute to its development.</p><blockquote><div><img class=" tc-image-loading" src="https://repobeats.axiom.co/api/embed/b92b1b363e2b5f26837ae573a60d39b4248b50a0.svg"></div></blockquote><ul><li><a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">tiddlywiki.com/dev</a> is the official developer documentation</li><li>Get involved in the <a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5" rel="noopener noreferrer" target="_blank">development on GitHub</a></li><li><a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">GitHub Discussions</a> are for Q&amp;A and open-ended discussion</li><li><a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/issues" rel="noopener noreferrer" target="_blank">GitHub Issues</a> are for raising bug reports and proposing specific, actionable new ideas</li><li>The older TiddlyWikiDev Google Group is now closed in favour of <a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/" rel="noopener noreferrer" target="_blank">Talk TiddlyWiki</a> and <a class="tc-tiddlylink-external" href="https://github.com/TiddlyWiki/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">GitHub Discussions</a> <ul><li>It remains a useful archive: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWikiDev" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWikiDev</a><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywikidev@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li></ul></li><li>Chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> (development room coming soon)</li></ul><h2 class="">Twitter</h2><ul><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/#!/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li></ul><h2 class="">Other Forums</h2><ul><li><a class="tc-tiddlylink-external" href="https://www.reddit.com/r/TiddlyWiki5/" rel="noopener noreferrer" target="_blank">TiddlyWiki Subreddit</a></li><li>Chat with Gitter at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> !</li><li>Chat on Discord at <a class="tc-tiddlylink-external" href="https://discord.gg/HFFZVQ8" rel="noopener noreferrer" target="_blank">https://discord.gg/HFFZVQ8</a></li></ul><h3 class="">Documentation</h3><p>There is also a discussion group specifically for discussing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> documentation improvement initiatives: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/tiddlywikidocs" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/tiddlywikidocs</a>
</p> </p>
</p><hr><h1 class="">Installing TiddlyWiki on Node.js</h1><p>TiddlyWiki is a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SingleFileApplication.html">SingleFileApplication</a>, which is easy to use. For advanced users and developers there is a possibility to use a Node.js client / server configuration. This configuration is also used to build the TiddlyWiki <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SinglePageApplication.html">SinglePageApplication</a></p><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>Linux: <blockquote><div><em>Debian/Ubuntu</em>:<br><code>apt install nodejs</code><br>May need to be followed up by:<br><code>apt install npm</code></div><div><em>Arch Linux</em><br><code>yay -S tiddlywiki</code> <br>(installs node and tiddlywiki)</div></blockquote></li><li>Mac<blockquote><div><code>brew install node</code></div></blockquote></li><li>Android<blockquote><div><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a></div></blockquote></li><li>Other <blockquote><div>See <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></div></blockquote></li></ul></li><li>Open a command line terminal and type:<blockquote><div><code>npm install -g tiddlywiki</code></div><div>If it fails with an error you may need to re-run the command as an administrator:</div><div><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</div></blockquote></li><li>Ensure TiddlyWiki is installed by typing:<blockquote><div><code>tiddlywiki --version</code></div></blockquote><ul><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.3.6-prerelease". You may also see other debugging information reported.)</li></ul></li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <span class="doc-icon"><svg class="tc-image-save-button-dynamic tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"> </p><hr><h1 class="">Installing TiddlyWiki on Node.js</h1><p>TiddlyWiki is a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SingleFileApplication.html">SingleFileApplication</a>, which is easy to use. For advanced users and developers there is a possibility to use a Node.js client / server configuration. This configuration is also used to build the TiddlyWiki <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/SinglePageApplication.html">SinglePageApplication</a></p><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>Linux: <blockquote><div><em>Debian/Ubuntu</em>:<br><code>apt install nodejs</code><br>May need to be followed up by:<br><code>apt install npm</code></div><div><em>Arch Linux</em><br><code>yay -S tiddlywiki</code> <br>(installs node and tiddlywiki)</div></blockquote></li><li>Mac<blockquote><div><code>brew install node</code></div></blockquote></li><li>Android<blockquote><div><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a></div></blockquote></li><li>Other <blockquote><div>See <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></div></blockquote></li></ul></li><li>Open a command line terminal and type:<blockquote><div><code>npm install -g tiddlywiki</code></div><div>If it fails with an error you may need to re-run the command as an administrator:</div><div><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</div></blockquote></li><li>Ensure TiddlyWiki is installed by typing:<blockquote><div><code>tiddlywiki --version</code></div></blockquote><ul><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.3.6". You may also see other debugging information reported.)</li></ul></li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <span class="doc-icon"><svg class="tc-image-save-button-dynamic tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt">
<g class="tc-image-save-button-dynamic-clean"> <g class="tc-image-save-button-dynamic-clean">
<path d="M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z" fill-rule="evenodd"></path> <path d="M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z" fill-rule="evenodd"></path>
</g> </g>