mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-07-10 22:02:45 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c9f1154643 | |||
| 748f04c9e3 | |||
| d391595836 | |||
| 967140a148 | |||
| 95e68b0437 | |||
| 8ddede1611 | |||
| ceb200b08c | |||
| 00e5f48a59 | |||
| ea0e9105bc | |||
| 51459815ba | |||
| 8c62935a01 | |||
| 839fa2417d | |||
| 1b8610e4d8 |
+1
-1
@@ -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.4.1.
|
TW5_BUILD_VERSION=v5.5.0.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -243,8 +243,28 @@ exports.slowInSlowOut = function(t) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.copyObjectPropertiesSafe = function(object) {
|
exports.copyObjectPropertiesSafe = function(object) {
|
||||||
const seen = new Set(),
|
const seen = new Set();
|
||||||
isDOMElement = (value) => value instanceof Node || value instanceof Window;
|
|
||||||
|
function isDOMElement(value) {
|
||||||
|
if(!value || typeof value !== "object") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cross-realm DOM nodes
|
||||||
|
if(typeof value.nodeType === "number" &&
|
||||||
|
typeof value.nodeName === "string") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cross-realm Window objects
|
||||||
|
if(value.window === value &&
|
||||||
|
value.document &&
|
||||||
|
value.location) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function safeCopy(obj) {
|
function safeCopy(obj) {
|
||||||
// skip circular references
|
// skip circular references
|
||||||
@@ -255,10 +275,6 @@ exports.copyObjectPropertiesSafe = function(object) {
|
|||||||
if(typeof obj !== "object" || obj === null) {
|
if(typeof obj !== "object" || obj === null) {
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
// skip DOM elements
|
|
||||||
if(isDOMElement(obj)) {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
// copy arrays, preserving positions
|
// copy arrays, preserving positions
|
||||||
if(Array.isArray(obj)) {
|
if(Array.isArray(obj)) {
|
||||||
return obj.map((item) => {
|
return obj.map((item) => {
|
||||||
@@ -266,7 +282,11 @@ exports.copyObjectPropertiesSafe = function(object) {
|
|||||||
return value === undefined ? null : value;
|
return value === undefined ? null : value;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// skip DOM elements
|
||||||
|
if(isDOMElement(obj)) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
seen.add(obj);
|
seen.add(obj);
|
||||||
const copy = {};
|
const copy = {};
|
||||||
let key,
|
let key,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
title: $:/config/OfficialPluginLibrary
|
title: $:/config/OfficialPluginLibrary
|
||||||
tags: $:/tags/PluginLibrary
|
tags: $:/tags/PluginLibrary
|
||||||
url: https://tiddlywiki.com/library/v5.4.1/index.html
|
url: https://tiddlywiki.com/library/v5.5.0/index.html
|
||||||
caption: {{$:/language/OfficialPluginLibrary}}
|
caption: {{$:/language/OfficialPluginLibrary}}
|
||||||
|
|
||||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||||
|
|||||||
@@ -8,9 +8,8 @@ type: text/vnd.tiddlywiki
|
|||||||
# Ensure the new release banner image is up to date
|
# Ensure the new release banner image is up to date
|
||||||
# Update ''master'' with changes from ''tiddlywiki-com''
|
# Update ''master'' with changes from ''tiddlywiki-com''
|
||||||
# Verify the version numbers in [[$:/config/OfficialPluginLibrary]] in `core/wiki/config/OfficialPluginLibrary.tid`
|
# Verify the version numbers in [[$:/config/OfficialPluginLibrary]] in `core/wiki/config/OfficialPluginLibrary.tid`
|
||||||
# Move the latest release note from the prerelease edition into the tw5.com edition
|
# Adjust the release date and the ''released'' field of the release tiddler (eg, [[Release 5.1.3]])
|
||||||
# Adjust the release date and the ''released'' field of the latest release tiddler (eg, [[Release 5.1.3]])
|
# Update the ''release-introduction'' definition with the new release text, and if necessary the ''description'' field of the release tiddler
|
||||||
# Also adjust the github.com comparison link to point to the tag for the new release
|
|
||||||
# Adjust the tiddler [[TiddlyWiki Archive]] to include the new version number
|
# Adjust the tiddler [[TiddlyWiki Archive]] to include the new version number
|
||||||
# Ensure [[TiddlyWiki Releases]] has the new version as the default tab
|
# Ensure [[TiddlyWiki Releases]] has the new version as the default tab
|
||||||
# Adjust the modified time of HelloThere
|
# Adjust the modified time of HelloThere
|
||||||
@@ -23,7 +22,6 @@ type: text/vnd.tiddlywiki
|
|||||||
# Run `./bin/readme-bld.sh` to build the readme files
|
# Run `./bin/readme-bld.sh` to build the readme files
|
||||||
# Commit the new readme files to ''master''
|
# Commit the new readme files to ''master''
|
||||||
# Restore `package.json` to the previous version number
|
# Restore `package.json` to the previous version number
|
||||||
# Adjust the link for "GitHub for detailed change history of this release" in the release note
|
|
||||||
# Add the credits for the new release banner to the release note, including a link to the GitHub instance of the image from the commit history
|
# Add the credits for the new release banner to the release note, including a link to the GitHub instance of the image from the commit history
|
||||||
|
|
||||||
!! Make New Release
|
!! Make New Release
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
"description": "Developer documentation from https://tiddlywiki.com/dev/",
|
"description": "Developer documentation from https://tiddlywiki.com/dev/",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"tiddlywiki/highlight",
|
"tiddlywiki/highlight",
|
||||||
"tiddlywiki/nodewebkitsaver",
|
|
||||||
"tiddlywiki/github-fork-ribbon",
|
"tiddlywiki/github-fork-ribbon",
|
||||||
"tiddlywiki/menubar",
|
"tiddlywiki/menubar",
|
||||||
"tiddlywiki/internals",
|
"tiddlywiki/internals",
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"description": "A step by step introduction to TiddlyWiki",
|
"description": "A step by step introduction to TiddlyWiki",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"tiddlywiki/cecily",
|
|
||||||
"tiddlywiki/codemirror",
|
"tiddlywiki/codemirror",
|
||||||
"tiddlywiki/highlight",
|
"tiddlywiki/highlight",
|
||||||
"tiddlywiki/katex"
|
"tiddlywiki/katex"
|
||||||
|
|||||||
@@ -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.4.1/index.html
|
url: http://127.0.0.1:8080/prerelease/library/v5.5.0/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//
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
title: $:/config/OfficialPluginLibrary
|
title: $:/config/OfficialPluginLibrary
|
||||||
tags: $:/tags/PluginLibrary
|
tags: $:/tags/PluginLibrary
|
||||||
url: https://tiddlywiki.com/prerelease/library/v5.4.1/index.html
|
url: https://tiddlywiki.com/prerelease/library/v5.5.0/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.
|
||||||
|
|||||||
@@ -0,0 +1,240 @@
|
|||||||
|
/*\
|
||||||
|
title: test-utils-copyObjectPropertiesSafe.js
|
||||||
|
type: application/javascript
|
||||||
|
tags: [[$:/tags/test-spec]]
|
||||||
|
|
||||||
|
Tests $tw.utils.copyObjectPropertiesSafe, the root cause of #9869.
|
||||||
|
|
||||||
|
$eventcatcher serialises DOM events via JSON.stringify(copyObjectPropertiesSafe(event)).
|
||||||
|
|
||||||
|
The original bug was caused by instanceof Node/Window being realm-specific.
|
||||||
|
When an event originated from a different browser window, DOM objects from that
|
||||||
|
window were not detected and JSON.stringify() could throw "Illegal invocation".
|
||||||
|
|
||||||
|
The implementation must:
|
||||||
|
- skip DOM nodes and Window objects from other realms
|
||||||
|
- preserve normal event data
|
||||||
|
- preserve CustomEvent.detail payloads
|
||||||
|
- continue copying enumerable properties from non-DOM objects
|
||||||
|
- preserve arrays and break circular references
|
||||||
|
|
||||||
|
The tests use substitutes for foreign DOM objects because headless Node does not
|
||||||
|
provide a second browser realm. These objects model the important characteristics:
|
||||||
|
DOM nodes have nodeType/nodeName, and Window objects have window/self/document.
|
||||||
|
\*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
describe("copyObjectPropertiesSafe (#9869)", function() {
|
||||||
|
|
||||||
|
var cops = $tw.utils.copyObjectPropertiesSafe;
|
||||||
|
|
||||||
|
// Simulates a DOM node from another realm.
|
||||||
|
// The important characteristics are:
|
||||||
|
// - nodeType/nodeName identify it as a DOM node
|
||||||
|
// - circular parentNode references resemble real DOM trees
|
||||||
|
function fakeElement(tagName,extra) {
|
||||||
|
var node = $tw.utils.extend({
|
||||||
|
nodeType: 1,
|
||||||
|
nodeName: tagName,
|
||||||
|
tagName: tagName
|
||||||
|
},extra || {});
|
||||||
|
|
||||||
|
node.parentNode = node;
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Simulates a Window object from another realm.
|
||||||
|
function fakeWindow() {
|
||||||
|
var win = {
|
||||||
|
document: {},
|
||||||
|
location: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
win.window = win;
|
||||||
|
win.self = win;
|
||||||
|
|
||||||
|
return win;
|
||||||
|
}
|
||||||
|
|
||||||
|
// An event carrying foreign DOM nodes and a Window.
|
||||||
|
function fakeEvent(type,target,extra) {
|
||||||
|
return $tw.utils.extend({
|
||||||
|
type: type,
|
||||||
|
target: target,
|
||||||
|
currentTarget: target,
|
||||||
|
view: fakeWindow(),
|
||||||
|
detail: 0,
|
||||||
|
isTrusted: true
|
||||||
|
},extra || {});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
it("does not throw serialising any event type from a secondary window", function() {
|
||||||
|
var events = [
|
||||||
|
fakeEvent("focusin",fakeElement("INPUT")),
|
||||||
|
fakeEvent("change",fakeElement("SELECT")),
|
||||||
|
fakeEvent("click",fakeElement("BUTTON"),{
|
||||||
|
button: 0,
|
||||||
|
clientX: 5,
|
||||||
|
clientY: 9,
|
||||||
|
relatedTarget: null
|
||||||
|
}),
|
||||||
|
fakeEvent("mouseover",fakeElement("DIV"),{
|
||||||
|
relatedTarget: fakeElement("SPAN")
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
events.forEach(function(event) {
|
||||||
|
expect(function() {
|
||||||
|
JSON.stringify(cops(event));
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("drops DOM nodes and Window but keeps serialisable event data", function() {
|
||||||
|
var event = fakeEvent("click",fakeElement("BUTTON"),{
|
||||||
|
button: 0,
|
||||||
|
clientX: 5,
|
||||||
|
clientY: 9
|
||||||
|
});
|
||||||
|
|
||||||
|
var result = JSON.parse(JSON.stringify(cops(event)));
|
||||||
|
|
||||||
|
expect(result.target).toBeUndefined();
|
||||||
|
expect(result.currentTarget).toBeUndefined();
|
||||||
|
expect(result.view).toBeUndefined();
|
||||||
|
|
||||||
|
expect(result.type).toBe("click");
|
||||||
|
expect(result.detail).toBe(0);
|
||||||
|
expect(result.isTrusted).toBe(true);
|
||||||
|
expect(result.button).toBe(0);
|
||||||
|
expect(result.clientX).toBe(5);
|
||||||
|
expect(result.clientY).toBe(9);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("preserves nested objects, arrays and circular reference handling", function() {
|
||||||
|
var event = fakeEvent("custom",fakeElement("DIV"),{
|
||||||
|
detail: {
|
||||||
|
nested: {
|
||||||
|
a: 1,
|
||||||
|
b: [2,3]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
path: [
|
||||||
|
fakeElement("DIV"),
|
||||||
|
fakeWindow(),
|
||||||
|
42
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
event.self = event;
|
||||||
|
|
||||||
|
var result = JSON.parse(JSON.stringify(cops(event)));
|
||||||
|
|
||||||
|
expect(result.detail).toEqual({
|
||||||
|
nested: {
|
||||||
|
a: 1,
|
||||||
|
b: [2,3]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.path).toEqual([
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
42
|
||||||
|
]);
|
||||||
|
|
||||||
|
expect(result.self).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("preserves CustomEvent.detail objects including custom object instances", function() {
|
||||||
|
function DetailObject() {
|
||||||
|
this.name = "example";
|
||||||
|
this.values = [1,2,3];
|
||||||
|
}
|
||||||
|
|
||||||
|
var event = fakeEvent("custom",fakeElement("DIV"),{
|
||||||
|
detail: new DetailObject()
|
||||||
|
});
|
||||||
|
|
||||||
|
var result = JSON.parse(JSON.stringify(cops(event)));
|
||||||
|
|
||||||
|
expect(result.detail).toEqual({
|
||||||
|
name: "example",
|
||||||
|
values: [1,2,3]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("preserves CustomEvent.detail objects while dropping DOM objects inside them", function() {
|
||||||
|
var event = fakeEvent("custom",fakeElement("DIV"),{
|
||||||
|
detail: {
|
||||||
|
value: 123,
|
||||||
|
nested: {
|
||||||
|
target: fakeElement("SPAN"),
|
||||||
|
kept: "yes"
|
||||||
|
},
|
||||||
|
items: [
|
||||||
|
fakeElement("BUTTON"),
|
||||||
|
42
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var result = JSON.parse(JSON.stringify(cops(event)));
|
||||||
|
|
||||||
|
expect(result.detail.value).toBe(123);
|
||||||
|
|
||||||
|
expect(result.detail.nested.target).toBeUndefined();
|
||||||
|
expect(result.detail.nested.kept).toBe("yes");
|
||||||
|
|
||||||
|
expect(result.detail.items).toEqual([
|
||||||
|
null,
|
||||||
|
42
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("accepts primitive, array and object arguments", function() {
|
||||||
|
var nullProto = Object.create(null);
|
||||||
|
nullProto.kept = true;
|
||||||
|
|
||||||
|
expect(cops(42)).toBe(42);
|
||||||
|
expect(cops(null)).toBe(null);
|
||||||
|
|
||||||
|
expect(cops([
|
||||||
|
1,
|
||||||
|
"two",
|
||||||
|
{three: 3}
|
||||||
|
])).toEqual([
|
||||||
|
1,
|
||||||
|
"two",
|
||||||
|
{three: 3}
|
||||||
|
]);
|
||||||
|
|
||||||
|
expect(cops({
|
||||||
|
a: 1,
|
||||||
|
b: {
|
||||||
|
c: 2
|
||||||
|
}
|
||||||
|
})).toEqual({
|
||||||
|
a: 1,
|
||||||
|
b: {
|
||||||
|
c: 2
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(JSON.parse(JSON.stringify(cops({
|
||||||
|
nullProto: nullProto
|
||||||
|
})))).toEqual({
|
||||||
|
nullProto: {
|
||||||
|
kept: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
created: 20231005205623086
|
created: 20231005205623086
|
||||||
modified: 20250807100434131
|
modified: 20260710090951727
|
||||||
tags: About
|
tags: About
|
||||||
title: TiddlyWiki Archive
|
title: TiddlyWiki Archive
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
\procedure versions()
|
\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.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
|
||||||
@@ -9,7 +10,7 @@ title: TiddlyWiki Archive
|
|||||||
5.1.20 5.1.21 5.1.22 5.1.23
|
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.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 5.3.7 5.3.8
|
5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.3.8
|
||||||
5.4.0
|
5.4.0 5.4.1
|
||||||
\end
|
\end
|
||||||
|
|
||||||
Older versions of TiddlyWiki are available in the [[archive|https://github.com/TiddlyWiki/tiddlywiki.com-gh-pages/tree/master/archive]]:
|
Older versions of TiddlyWiki are available in the [[archive|https://github.com/TiddlyWiki/tiddlywiki.com-gh-pages/tree/master/archive]]:
|
||||||
|
|||||||
@@ -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: 20260420192600833
|
modified: 20260710091122803
|
||||||
tags: Welcome
|
tags: Welcome
|
||||||
title: HelloThere
|
title: HelloThere
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 50 KiB |
@@ -0,0 +1,13 @@
|
|||||||
|
change-category: internal
|
||||||
|
change-type: bugfix
|
||||||
|
created: 20260710092852681
|
||||||
|
description: Fixes an issue with the minheight of textareas.
|
||||||
|
github-contributors: pmario
|
||||||
|
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9828
|
||||||
|
modified: 20260710093223971
|
||||||
|
release: 5.4.1
|
||||||
|
tags: $:/tags/ChangeNote
|
||||||
|
title: $:/changenotes/5.4.1/#9828
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
Fixes an issue with the minheight of textareas.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
title: $:/changenotes/5.4.0/#9829
|
||||||
|
description: Update Polish translation
|
||||||
|
release: 5.4.1
|
||||||
|
tags: $:/tags/ChangeNote
|
||||||
|
change-type: enhancement
|
||||||
|
change-category: translation
|
||||||
|
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9829
|
||||||
|
github-contributors: EvidentlyCube
|
||||||
|
|
||||||
@@ -1,11 +1,14 @@
|
|||||||
title: $:/changenotes/5.4.1/#9836
|
|
||||||
description: Fix mid-text link cutoff, fix disabling freelinks toggle blanks view, and add configurable MaxLinks cap
|
|
||||||
tags: $:/tags/ChangeNote
|
|
||||||
release: 5.4.1
|
|
||||||
change-type: bugfix
|
|
||||||
change-category: plugin
|
change-category: plugin
|
||||||
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9836
|
change-type: bugfix
|
||||||
|
created: 20260710092644515
|
||||||
|
description: Freelinks: Fix mid-text link cutoff, fix disabling freelinks toggle blanks view, and add configurable ~MaxLinks cap
|
||||||
github-contributors: s793016
|
github-contributors: s793016
|
||||||
|
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9836
|
||||||
|
modified: 20260710092700225
|
||||||
|
release: 5.4.1
|
||||||
|
tags: $:/tags/ChangeNote
|
||||||
|
title: $:/changenotes/5.4.1/#9836
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
Fixes correctness and reliability issues in the freelinks plugin.
|
Fixes correctness and reliability issues in the freelinks plugin.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
change-category: widget
|
||||||
|
change-type: bugfix
|
||||||
|
created: 20260710093059614
|
||||||
|
description: Fixes a regression in the SelectWidget when selecting multiple values.
|
||||||
|
github-contributors: pmario
|
||||||
|
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9841
|
||||||
|
modified: 20260710093210171
|
||||||
|
release: 5.4.1
|
||||||
|
tags: $:/tags/ChangeNote
|
||||||
|
title: $:/changenotes/5.4.1/#9841
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
Fixes a regression in the SelectWidget when selecting multiple values.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
title: $:/changenotes/5.4.0/#9870
|
||||||
|
description: Update Japanese translation
|
||||||
|
release: 5.4.1
|
||||||
|
tags: $:/tags/ChangeNote
|
||||||
|
change-type: enhancement
|
||||||
|
change-category: translation
|
||||||
|
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9870
|
||||||
|
github-contributors: IchijikuIchigo
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
change-category: plugin
|
||||||
|
change-type: bugfix
|
||||||
|
created: 20260710093318232
|
||||||
|
description: Katex: restores a missing font
|
||||||
|
github-contributors: Leilei332
|
||||||
|
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9873
|
||||||
|
modified: 20260710093432151
|
||||||
|
release: 5.4.1
|
||||||
|
tags: $:/tags/ChangeNote
|
||||||
|
title: $:/changenotes/5.4.1/#9873
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
Restores the missing KaTeX_Caligraphic-Regular.woff2
|
||||||
|
font in the Katex plugin
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
title: $:/changenotes/5.4.1/#9905
|
||||||
|
created: 20260709142414000
|
||||||
|
modified: 20260709142414000
|
||||||
|
description: Fix errors in eventcatcher while serializing event properties
|
||||||
|
release: 5.4.1
|
||||||
|
tags: $:/tags/ChangeNote
|
||||||
|
change-type: bugfix
|
||||||
|
change-category: internal
|
||||||
|
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9905
|
||||||
|
github-contributors: saqimtiaz
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
Fixes an issue in utils.copyObjectPropertiesSafe which did not correctly handle DOM objects from other windows resulting in an error.
|
||||||
@@ -1,13 +1,19 @@
|
|||||||
caption: 5.4.1
|
caption: 5.4.1
|
||||||
created: 20260508181012812
|
created: 20260508181012812
|
||||||
modified: 20260508181012812
|
description: Release v5.4.1 addresses regressions and bugs introduced in the v5.4.0 release.
|
||||||
|
modified: 20260710091945414
|
||||||
|
released: 20260710090509444
|
||||||
tags: ReleaseNotes
|
tags: ReleaseNotes
|
||||||
title: Release 5.4.1
|
title: Release 5.4.1
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
description: Under development
|
|
||||||
|
|
||||||
\procedure release-introduction()
|
\procedure release-introduction()
|
||||||
Release v5.4.1 is under development.
|
Release v5.4.1 addresses regressions and bugs introduced in the v5.4.0 release.
|
||||||
\end release-introduction
|
\end release-introduction
|
||||||
|
|
||||||
|
\define banner-credit-user-name() Peter
|
||||||
|
\define banner-credit-user-link() https://talk.tiddlywiki.org/u/peter
|
||||||
|
\define banner-credit-discussion-link() https://talk.tiddlywiki.org/t/vote-for-the-banner-tiddlywiki-v5-4-0/15016
|
||||||
|
\define banner-credit-permalink() https://raw.githubusercontent.com/TiddlyWiki/TiddlyWiki5/92caa7312ebc51c59cd345cc81b4a326661a0650/editions/tw5.com/tiddlers/images/New%20Release%20Banner.webp
|
||||||
|
|
||||||
<<releasenote 5.4.1>>
|
<<releasenote 5.4.1>>
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
caption: 5.5.0
|
||||||
|
created: 20260710103826404
|
||||||
|
modified: 20260710103826404
|
||||||
|
tags: ReleaseNotes
|
||||||
|
title: Release 5.5.0
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
description: Under development
|
||||||
|
|
||||||
|
\procedure release-introduction()
|
||||||
|
Release v5.5.0 is under development.
|
||||||
|
\end release-introduction
|
||||||
|
|
||||||
|
<<releasenote 5.5.0>>
|
||||||
@@ -10,7 +10,6 @@ Advanced/ShadowInfo/Shadow/Hint: Tiddler <$link to=<<infoTiddler>>><$text text=<
|
|||||||
Advanced/ShadowInfo/Shadow/Source: Zdefiniiowany we wtyczce <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>
|
Advanced/ShadowInfo/Shadow/Source: Zdefiniiowany we wtyczce <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>
|
||||||
Advanced/ShadowInfo/OverriddenShadow/Hint: Nadpisany przez zwykłego tiddlera
|
Advanced/ShadowInfo/OverriddenShadow/Hint: Nadpisany przez zwykłego tiddlera
|
||||||
Advanced/CascadeInfo/Heading: Szczegóły Kaskady
|
Advanced/CascadeInfo/Heading: Szczegóły Kaskady
|
||||||
Advanced/CascadeInfo/Hint: These are the view template segments that are resolved for each of the system view template cascades
|
|
||||||
Advanced/CascadeInfo/Hint: Lista elementów widoku, których kaskady określają szablony użyte do wyświetlenia tiddlera
|
Advanced/CascadeInfo/Hint: Lista elementów widoku, których kaskady określają szablony użyte do wyświetlenia tiddlera
|
||||||
Advanced/CascadeInfo/Detail/View: Widok
|
Advanced/CascadeInfo/Detail/View: Widok
|
||||||
Advanced/CascadeInfo/Detail/ActiveCascadeFilter: Aktywny filtr kaskady
|
Advanced/CascadeInfo/Detail/ActiveCascadeFilter: Aktywny filtr kaskady
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
|
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
|
||||||
|
|
||||||
Copyright (c) 2004-2007, Jeremy Ruston
|
Copyright (c) 2004-2007, Jeremy Ruston
|
||||||
Copyright (c) 2007-2026, UnaMesa Association
|
Copyright (c) 2007-2025, UnaMesa Association
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "tiddlywiki",
|
"name": "tiddlywiki",
|
||||||
"version": "5.4.0",
|
"version": "5.5.0-prerelease",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "tiddlywiki",
|
"name": "tiddlywiki",
|
||||||
"version": "5.4.0",
|
"version": "5.4.1",
|
||||||
"license": "BSD",
|
"license": "BSD",
|
||||||
"bin": {
|
"bin": {
|
||||||
"tiddlywiki": "tiddlywiki.js"
|
"tiddlywiki": "tiddlywiki.js"
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "tiddlywiki",
|
"name": "tiddlywiki",
|
||||||
"preferGlobal": true,
|
"preferGlobal": true,
|
||||||
"version": "5.4.1-prerelease",
|
"version": "5.5.0-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": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<h1 class="">Welcome</h1><p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p>TiddlyWiki is a complete interactive wiki in JavaScript. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><h2 class="">Demo</h2><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><h2 class="">Developer Documentation</h2><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h2 class="">Pull Request Previews</h2><p>Pull request previews courtesy of <a class="tc-tiddlylink-external" href="https://netlify.com" rel="noopener noreferrer" target="_blank">Netlify</a></p><p><a href="https://www.netlify.com" rel="noopener noreferrer" target="_blank"><img alt="Deploys by Netlify" src="https://www.netlify.com/v3/img/components/netlify-light.svg"></a></p><h1 class="">Join the Community</h1><p>
|
<h1 class="">Welcome</h1><p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p>TiddlyWiki is a complete interactive wiki in JavaScript. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><h2 class="">Demo</h2><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><h2 class="">Developer Documentation</h2><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h2 class="">Pull Request Previews</h2><p>Pull request previews courtesy of <a class="tc-tiddlylink-external" href="https://netlify.com" rel="noopener noreferrer" target="_blank">Netlify</a></p><p><a href="https://www.netlify.com" rel="noopener noreferrer" target="_blank"><img alt="Deploys by Netlify" src="https://www.netlify.com/v3/img/components/netlify-light.svg"></a></p><h1 class="">Join the Community</h1><p>
|
||||||
<h2 class="">User forums</h2><h3 class="">Talk TiddlyWiki</h3><p>As the official TiddlyWiki forum, Talk TiddlyWiki is a place to talk about TiddlyWiki: requests for help, <a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/c/announcements/20" rel="noopener noreferrer" target="_blank">announcements</a> of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.</p><p><a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/" rel="noopener noreferrer" target="_blank">https://talk.tiddlywiki.org/</a></p><h3 class="">Google Groups</h3><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><h2 class="">Developer forums</h2><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&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>See <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Contributing.html">Contributing</a> for guidelines on how to contribute to the project.</li></ul><h2 class="">Other forums</h2><ul><li><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> Subreddit: <a class="tc-tiddlylink-external" href="https://www.reddit.com/r/TiddlyWiki5/" rel="noopener noreferrer" target="_blank">/r/TiddlyWiki5</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>
|
<h2 class="">User forums</h2><h3 class="">Talk TiddlyWiki</h3><p>As the official TiddlyWiki forum, Talk TiddlyWiki is a place to talk about TiddlyWiki: requests for help, <a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/c/announcements/20" rel="noopener noreferrer" target="_blank">announcements</a> of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.</p><p><a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/" rel="noopener noreferrer" target="_blank">https://talk.tiddlywiki.org/</a></p><h3 class="">Google Groups</h3><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><h2 class="">Developer forums</h2><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&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>See <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Contributing.html">Contributing</a> for guidelines on how to contribute to the project.</li></ul><h2 class="">Other forums</h2><ul><li><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> Subreddit: <a class="tc-tiddlylink-external" href="https://www.reddit.com/r/TiddlyWiki5/" rel="noopener noreferrer" target="_blank">/r/TiddlyWiki5</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>
|
||||||
</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.4.0". 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.4.1". 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>
|
||||||
|
|||||||
Reference in New Issue
Block a user