1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-08-24 20:19:10 +02:00

Compare commits

...

17 Commits

Author SHA1 Message Date
Laurent Cozic
f98c693adf CLI v1.0.112 2018-07-25 17:51:13 +02:00
Laurent Cozic
6da80f3291 Trying to get proxy to work 2018-07-25 17:47:35 +02:00
Laurent Cozic
f63668350b CLI v1.0.110 2018-06-30 19:58:36 +01:00
Laurent Cozic
3fc54d7ffd CLI: Updating SQLite to support Node 10 2018-06-30 19:57:49 +01:00
Laurent Cozic
2c6c20f44f Mobile: Resolves #350: Open non-image resources in external application 2018-06-30 19:45:21 +01:00
Laurent Cozic
08ee939951 Electron: Resolves #594: Enable support for SVG graphics 2018-06-30 19:05:45 +01:00
Laurent Cozic
463b1441d3 Updated DE translation 2018-06-30 16:20:22 +01:00
Laurent Cozic
6754d4ee89 Electron: Fixes #653: Don't detect horizontal rule as bullet list item 2018-06-30 16:15:44 +01:00
Laurent Cozic
d5d0732bf3 Clipper: Upgrade joplin-turndonw to fix import of literal HTML code 2018-06-30 16:12:01 +01:00
Laurent Cozic
d27cbaa663 Electron: Improve speed of loading notes that include many resources, and prevent UI from freezing 2018-06-29 18:51:50 +00:00
Laurent Cozic
70adf10f2e Clipper: Skip noscript elements 2018-06-29 18:45:33 +00:00
Laurent Cozic
e75417d26e Tools: Automate updating Git repo when creating new Clipper release 2018-06-28 22:16:15 +01:00
Laurent Cozic
2ded983828 Clipper: Resolves #641: Allow clipping selected part of the page 2018-06-28 22:01:55 +01:00
Laurent Cozic
0c708f766b All: Resolves #427: Import source-url from Enex files 2018-06-28 21:36:32 +01:00
Laurent Cozic
a801f8d8ed Update website 2018-06-28 21:27:54 +01:00
Laurent Cozic
26fc26c9fe CLI v1.0.109 2018-06-28 20:49:26 +01:00
Laurent Cozic
df4c07d204 CLI: Added way to decrypt string 2018-06-28 20:48:39 +01:00
37 changed files with 640 additions and 932 deletions

View File

@@ -47,30 +47,35 @@ class Command extends BaseCommand {
}
if (args.command === 'decrypt') {
this.stdout(_('Starting decryption... Please wait as it may take several minutes depending on how much there is to decrypt.'));
if (args.path) {
const plainText = await EncryptionService.instance().decryptString(args.path);
this.stdout(plainText);
} else {
this.stdout(_('Starting decryption... Please wait as it may take several minutes depending on how much there is to decrypt.'));
while (true) {
try {
await DecryptionWorker.instance().start();
break;
} catch (error) {
if (error.code === 'masterKeyNotLoaded') {
const masterKeyId = error.masterKeyId;
const password = await this.prompt(_('Enter master password:'), { type: 'string', secure: true });
if (!password) {
this.stdout(_('Operation cancelled'));
return;
while (true) {
try {
await DecryptionWorker.instance().start();
break;
} catch (error) {
if (error.code === 'masterKeyNotLoaded') {
const masterKeyId = error.masterKeyId;
const password = await this.prompt(_('Enter master password:'), { type: 'string', secure: true });
if (!password) {
this.stdout(_('Operation cancelled'));
return;
}
Setting.setObjectKey('encryption.passwordCache', masterKeyId, password);
await EncryptionService.instance().loadMasterKeysFromSettings();
continue;
}
Setting.setObjectKey('encryption.passwordCache', masterKeyId, password);
await EncryptionService.instance().loadMasterKeysFromSettings();
continue;
throw error;
}
throw error;
}
}
this.stdout(_('Completed decryption.'));
this.stdout(_('Completed decryption.'));
}
return;
}

View File

@@ -7,18 +7,18 @@ msgid ""
msgstr ""
"Project-Id-Version: Joplin-CLI 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Philipp Zumstein <zuphilip@gmail.com>\n"
"Last-Translator: Michael Sonntag <ms@editorei.de>\n"
"Language-Team: \n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.7\n"
"X-Generator: Poedit 2.0.8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "To delete a tag, untag the associated notes."
msgstr ""
"Um eine Markierung zu löschen, entferne diese bei allen damit verbundenen "
"Um ein Schlagwort zu löschen, entferne es bei allen damit verbundenen "
"Notizen."
msgid "Please select the note or notebook to be deleted first."
@@ -53,7 +53,7 @@ msgid "y"
msgstr "j"
msgid "Cancelling background synchronisation... Please wait."
msgstr "Breche Hintergrund-Synchronisation ab... Bitte warten."
msgstr "Breche Hintergrundsynchronisation ab Bitte warten."
#, javascript-format
msgid "No such command: %s"
@@ -480,10 +480,10 @@ msgid ""
"[tag] from [note], or to list the notes associated with [tag]. The command "
"`tag list` can be used to list all the tags."
msgstr ""
"<tag-command> kann \"add\", \"remove\" or \"list\" sein, um eine "
"[Markierung] zu [Notiz] zuzuweisen oder zu entfernen, oder um mit "
"[Markierung] markierte Notizen anzuzeigen. Mit dem Befehl `tag list` können "
"alle Markierungen angezeigt werden."
"<tag-command> kann \"add\", \"remove\" or \"list\" sein, um ein [Schlagwort] "
"zu [Notiz] zuzuweisen oder zu entfernen, oder um mit [Schlagwort] markierte "
"Notizen anzuzeigen. Mit dem Befehl `tag list` können alle Schlagwörter "
"angezeigt werden."
#, javascript-format
msgid "Invalid command: \"%s\""
@@ -644,16 +644,16 @@ msgid "Paste"
msgstr "Einfügen"
msgid "Bold"
msgstr ""
msgstr "Fett"
msgid "Italic"
msgstr ""
msgstr "Kursiv"
msgid "Insert Date Time"
msgstr ""
msgstr "Datum / Uhrzeit einfügen"
msgid "Edit in external editor"
msgstr ""
msgstr "Im externen Editor bearbeiten"
msgid "Search in all the notes"
msgstr "Alle Notizen durchsuchen"
@@ -692,7 +692,7 @@ msgid "Make a donation"
msgstr "Spenden"
msgid "Check for updates..."
msgstr "Überprüfe auf Updates..."
msgstr "Überprüfe auf Updates"
msgid "About Joplin"
msgstr "Über Joplin"
@@ -718,7 +718,7 @@ msgid "Current version is up-to-date."
msgstr "Die aktuelle Version ist up-to-date."
msgid "An update is available, do you want to download it now?"
msgstr "Es ist ein Update verfügbar! Soll dies jetzt heruntergeladen werden?"
msgstr "Es ist ein Update verfügbar! Soll es jetzt heruntergeladen werden?"
msgid "Yes"
msgstr "Ja"
@@ -726,10 +726,9 @@ msgstr "Ja"
msgid "No"
msgstr "Nein"
#, fuzzy
msgid "The web clipper service is enabled and set to auto-start."
msgstr ""
"Der Web Clipper Service ist bereits aktiviert und auf Autostart eingestellt."
"Der Webclipperservice ist bereits aktiviert und auf Autostart eingestellt."
#, javascript-format
msgid "Status: Started on port %d"
@@ -786,7 +785,7 @@ msgid "Notes and settings are stored in: %s"
msgstr "Notizen und Einstellungen werden gespeichert in: %s"
msgid "Apply"
msgstr ""
msgstr "Anwenden"
msgid "Submit"
msgstr "Absenden"
@@ -897,16 +896,16 @@ msgid "Notebook title:"
msgstr "Notizbuch Titel:"
msgid "Add or remove tags:"
msgstr "Füge hinzu oder entferne Markierungen:"
msgstr "Füge hinzu oder entferne Schlagwörter:"
msgid "Separate each tag by a comma."
msgstr "Trenne jede Markierung mit einem Komma."
msgstr "Trenne jedes Schlagwort mit einem Komma."
msgid "Rename notebook:"
msgstr "Notizbuch umbenennen:"
msgid "Rename tag:"
msgstr "Markierung umbenennen:"
msgstr "Schlagwort umbenennen:"
msgid "Set alarm:"
msgstr "Alarm erstellen:"
@@ -930,14 +929,14 @@ msgid "Set the password"
msgstr "Setze ein Passwort"
msgid "Add or remove tags"
msgstr "Markierungen hinzufügen oder entfernen"
msgstr "Schlagwörter hinzufügen oder entfernen"
msgid "Duplicate"
msgstr ""
msgstr "Duplizieren"
#, fuzzy, javascript-format
#, javascript-format
msgid "%s - Copy"
msgstr "Kopieren"
msgstr "%s kopieren"
msgid "Switch between note and to-do type"
msgstr "Zwischen Notiz und To-Do Typ wechseln"
@@ -965,9 +964,9 @@ msgstr ""
msgid "Open..."
msgstr "Öffne..."
#, fuzzy, javascript-format
#, javascript-format
msgid "This file could not be opened: %s"
msgstr "Dieses Notizbuch konnte nicht gespeichert werden: %s"
msgstr "Dieses Notizbuch konnte nicht geöffnet werden: %s"
msgid "Save as..."
msgstr "Sichern unter..."
@@ -976,7 +975,7 @@ msgid "Copy path to clipboard"
msgstr "Pfad in Zwischenablage kopieren"
msgid "Copy Link Address"
msgstr ""
msgstr "Link-Adresse kopieren"
#, javascript-format
msgid "Unsupported link or message: %s"
@@ -991,16 +990,16 @@ msgstr ""
"und die Notiz zu bearbeiten."
msgid "strong text"
msgstr ""
msgstr "Fetter Text"
msgid "emphasized text"
msgstr ""
msgstr "hervorgehobener Text"
msgid "List item"
msgstr ""
msgstr "Listeneintrag"
msgid "Insert Hyperlink"
msgstr ""
msgstr "Weblink einfügen"
msgid "Attach file"
msgstr "Datei anhängen"
@@ -1011,37 +1010,37 @@ msgstr "Markierungen"
msgid "Set alarm"
msgstr "Alarm erstellen"
#, fuzzy, javascript-format
#, javascript-format
msgid "In: %s"
msgstr "%s: %s"
msgstr "In: %s"
msgid "Hyperlink"
msgstr ""
msgstr "Weblink"
msgid "Code"
msgstr ""
msgstr "Code"
msgid "Numbered List"
msgstr ""
msgstr "Nummerierte Liste"
msgid "Bulleted List"
msgstr ""
msgstr "Aufzählung"
msgid "Checkbox"
msgstr ""
msgstr "Kontrollkästchen"
msgid "Heading"
msgstr ""
msgstr "Überschrift"
msgid "Horizontal Rule"
msgstr ""
msgstr "Horizontale Linie"
msgid "Click to stop external editing"
msgstr ""
msgstr "Klicken Sie hier, um die externe Bearbeitung anzuhalten"
#, fuzzy
msgid "Watching..."
msgstr "Abbrechen..."
msgstr "Ansehen…"
msgid "to-do"
msgstr "To-Do"
@@ -1078,7 +1077,7 @@ msgid "Clipper Options"
msgstr "Clipper Einstellungen"
msgid "Remove this tag from all the notes?"
msgstr "Diese Markierung von allen Notizen entfernen?"
msgstr "Dieses Schlagwort von allen Notizen entfernen?"
msgid "Remove this search from the sidebar?"
msgstr "Diese Suche von der Seitenleiste entfernen?"
@@ -1189,7 +1188,7 @@ msgid "State: %s."
msgstr "Status: %s."
msgid "Cancelling..."
msgstr "Abbrechen..."
msgstr "Abbrechen"
#, javascript-format
msgid "Completed: %s"
@@ -1200,7 +1199,7 @@ msgid "Last error: %s"
msgstr "Letzte Fehlermeldung: %s"
msgid "Idle"
msgstr "wartend"
msgstr "Wartend"
msgid "In progress"
msgstr "In Bearbeitung"
@@ -1230,17 +1229,14 @@ msgid "Notebooks cannot be named \"%s\", which is a reserved title."
msgstr ""
"Notizbuch kann nicht \"%s\" genannt werden. Dies ist ein reservierter Titel."
#, fuzzy
msgid "title"
msgstr "Unbenannt"
msgstr "Titel"
#, fuzzy
msgid "updated date"
msgstr "Aktualisiert: %d."
msgstr "Aktualsierungsdatum"
#, fuzzy
msgid "created date"
msgstr "Erstellt: %d."
msgstr "Erstelldatum"
msgid "Untitled"
msgstr "Unbenannt"
@@ -1339,18 +1335,15 @@ msgstr "%d Stunde"
msgid "%d hours"
msgstr "%d Stunden"
#, fuzzy
msgid "Text editor command"
msgstr "Textverarbeitungsprogramm"
msgstr "Editoraufruf"
#, fuzzy
msgid ""
"The editor command (may include arguments) that will be used to open a note. "
"If none is provided it will try to auto-detect the default editor."
msgstr ""
"Das Textverarbeitungsprogramm, mit dem Notizen geöffnet werden. Wenn keines "
"ausgewählt wurde, wird Joplin versuchen das standard-"
"Textverarbeitungsprogramm zu erkennen."
"Der Editor, mit dem Notizen geöffnet werden. Wenn keiner ausgewählt wurde, "
"wird Joplin versuchen den Standardeditor zu erkennen."
msgid "Show advanced options"
msgstr "Erweiterte Optionen anzeigen"
@@ -1395,7 +1388,7 @@ msgid "WebDAV password"
msgstr "WebDAV Passwort"
msgid "Custom TLS certificates"
msgstr ""
msgstr "Benutzerdefinierte TLS-Zertifikate"
msgid ""
"Comma-separated list of paths to directories to load the certificates from, "
@@ -1403,9 +1396,14 @@ msgid ""
"pem. Note that if you make changes to the TLS settings, you must save your "
"changes before clicking on \"Check synchronisation configuration\"."
msgstr ""
"Kommagetrennte Liste von Pfaden zu Verzeichnissen, aus denen die Zertifikate "
"geladen werden, oder Pfad zu einzelnen Zertifikatsdateien. Zum Beispiel: / "
"my / cert_dir, /other/custom.pem. Wenn Sie Änderungen an den TLS-"
"Einstellungen vornehmen, müssen Sie Ihre Änderungen speichern, bevor Sie auf "
"\"Synchronisierungskonfiguration prüfen\" klicken."
msgid "Ignore TLS certificate errors"
msgstr ""
msgstr "Ignoriere TLS-Zertifikatfehler"
#, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s."
@@ -1428,7 +1426,7 @@ msgstr "Verzeichnis"
#, javascript-format
msgid "Cannot load \"%s\" module for format \"%s\""
msgstr "Das Modul „%s“ für das Format „%s“ kann nicht geladen werden"
msgstr "Das Modul \"%s\" für das Format \"%s\" kann nicht geladen werden"
#, javascript-format
msgid "Please specify import format for %s"
@@ -1540,15 +1538,15 @@ msgstr "Bestätigen"
msgid "Cancel synchronisation"
msgstr "Synchronisation abbrechen"
#, fuzzy, javascript-format
#, javascript-format
msgid "Decrypting items: %d/%d"
msgstr "Geladene Objekte: %d/%d."
msgstr "Entschlüsselte Objekte: %d/%d"
msgid "New tags:"
msgstr "Neue Markierungen:"
msgstr "Neue Schlagwörter:"
msgid "Type new tags or select from list"
msgstr "Neue Markierungen eingeben oder aus der Liste auswählen"
msgstr "Neues Schlagwort eingeben oder aus der Liste auswählen"
msgid ""
"To work correctly, the app needs the following permissions. Please enable "
@@ -1667,8 +1665,8 @@ msgid ""
"Click on the (+) button to create a new note or notebook. Click on the side "
"menu to access your existing notebooks."
msgstr ""
"Drücke auf den (+) Knopf, um eine neue Notiz oder ein neues Notizbuch zu "
"erstellen. Tippe auf die Seitenleiste, um auf deine existierenden "
"Drücke auf die (+)-Schaltfläche, um eine neue Notiz oder ein neues Notizbuch "
"zu erstellen. Tippe auf die Seitenleiste, um auf deine existierenden "
"Notizbücher zuzugreifen."
msgid "You currently have no notebook. Create one by clicking on (+) button."

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,7 @@
],
"owner": "Laurent Cozic"
},
"version": "1.0.108",
"version": "1.0.112",
"bin": {
"joplin": "./main.js"
},
@@ -38,7 +38,7 @@
"html-entities": "^1.2.1",
"html-minifier": "^3.5.15",
"image-type": "^3.0.0",
"joplin-turndown": "^4.0.7",
"joplin-turndown": "^4.0.8",
"joplin-turndown-plugin-gfm": "^1.0.7",
"jssha": "^2.3.0",
"levenshtein": "^1.0.5",
@@ -58,10 +58,11 @@
"server-destroy": "^1.0.1",
"sharp": "^0.18.4",
"sprintf-js": "^1.1.1",
"sqlite3": "^3.1.8",
"sqlite3": "^4.0.1",
"string-padding": "^1.0.2",
"string-to-stream": "^1.1.0",
"strip-ansi": "^4.0.0",
"syswide-cas": "^5.2.0",
"tar": "^4.4.0",
"tcp-port-used": "^0.1.2",
"tkwidgets": "^0.5.26",

View File

@@ -0,0 +1,5 @@
<p>Some text, not an image, so it should remain escaped:</p>
<p>&lt;img src="http://test.com/image.png" /&gt;</p>
<p>&lt;p class="testing"&gt;Paragraph example&lt;/p&gt;
<p>But this is code so it can be unescaped:</p>
<pre><code>&lt;img src="http://test.com/image.png" /&gt;</code></pre>

View File

@@ -0,0 +1,9 @@
Some text, not an image, so it should remain escaped:
&lt;img src="http://test.com/image.png" /&gt;
&lt;p class="testing"&gt;Paragraph example&lt;/p&gt;
But this is code so it can be unescaped:
<img src="http://test.com/image.png" />

View File

@@ -38,7 +38,7 @@
const node = childNodes[i];
let isVisible = node.nodeType === 1 ? window.getComputedStyle(node).display !== 'none' : true;
if (isVisible && ['input', 'textarea', 'script', 'style', 'select', 'option', 'button'].indexOf(node.nodeName.toLowerCase()) >= 0) isVisible = false;
if (isVisible && ['input', 'textarea', 'script', 'noscript', 'style', 'select', 'option', 'button'].indexOf(node.nodeName.toLowerCase()) >= 0) isVisible = false;
if (!isVisible) {
element.removeChild(node);
@@ -74,6 +74,17 @@
async function prepareCommandResponse(command) {
console.info('Got command: ' + command.name);
const clippedContentResponse = (title, html) => {
return {
name: 'clippedContent',
title: title,
html: html,
base_url: baseUrl(),
url: location.origin + location.pathname,
parent_id: command.parent_id,
};
}
if (command.name === "simplifiedPageHtml") {
let article = null;
@@ -87,29 +98,20 @@
response.warning = 'Could not retrieve simplified version of page - full page has been saved instead.';
return response;
}
return {
name: 'clippedContent',
html: article.body,
title: article.title,
base_url: baseUrl(),
url: location.origin + location.pathname,
parent_id: command.parent_id,
};
return clippedContentResponse(article.title, article.body);
} else if (command.name === "completePageHtml") {
const cleanDocument = document.body.cloneNode(true);
cleanUpElement(cleanDocument);
return clippedContentResponse(pageTitle(), cleanDocument.innerHTML);
return {
name: 'clippedContent',
html: cleanDocument.innerHTML,
title: pageTitle(),
base_url: baseUrl(),
url: location.origin + location.pathname,
parent_id: command.parent_id,
};
} else if (command.name === "selectedHtml") {
const range = window.getSelection().getRangeAt(0);
const container = document.createElement('div');
container.appendChild(range.cloneContents());
return clippedContentResponse(pageTitle(), container.innerHTML);
} else if (command.name === 'screenshot') {

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Joplin Web Clipper [DEV]",
"version": "1.0.5",
"version": "1.0.6",
"description": "Capture and save web pages and screenshots from your browser to Joplin.",
"homepage_url": "https://joplin.cozic.net",
"icons": {

View File

@@ -41,6 +41,13 @@ class AppComponent extends Component {
});
}
this.clipSelection_click = () => {
bridge().sendCommandToActiveTab({
name: 'selectedHtml',
parent_id: this.props.selectedFolderId,
});
}
this.clipScreenshot_click = async () => {
try {
const baseUrl = await bridge().clipperServerBaseUrl();
@@ -195,6 +202,7 @@ class AppComponent extends Component {
<ul>
<li><a className="Button" onClick={this.clipSimplified_click}>Clip simplified page</a></li>
<li><a className="Button" onClick={this.clipComplete_click}>Clip complete page</a></li>
<li><a className="Button" onClick={this.clipSelection_click}>Clip selection</a></li>
<li><a className="Button" onClick={this.clipScreenshot_click}>Clip screenshot</a></li>
</ul>
</div>

View File

@@ -648,7 +648,7 @@ class NoteTextComponent extends React.Component {
if (lineNoLeftSpaces.indexOf('- [ ] ') === 0 || lineNoLeftSpaces.indexOf('- [x] ') === 0 || lineNoLeftSpaces.indexOf('- [X] ') === 0) return leftSpaces + '- [ ] ';
if (lineNoLeftSpaces.indexOf('- ') === 0) return leftSpaces + '- ';
if (lineNoLeftSpaces.indexOf('* ') === 0) return leftSpaces + '* ';
if (lineNoLeftSpaces.indexOf('* ') === 0 && line.trim() !== '* * *') return leftSpaces + '* ';
const bulletNumber = markdownUtils.olLineNumber(lineNoLeftSpaces);
if (bulletNumber) return leftSpaces + (bulletNumber + 1) + '. ';
@@ -711,8 +711,16 @@ class NoteTextComponent extends React.Component {
updateHtml(body = null) {
const mdOptions = {
onResourceLoaded: () => {
this.updateHtml();
this.forceUpdate();
if (this.resourceLoadedTimeoutId_) {
clearTimeout(this.resourceLoadedTimeoutId_);
this.resourceLoadedTimeoutId_ = null;
}
this.resourceLoadedTimeoutId_ = setTimeout(() => {
this.resourceLoadedTimeoutId_ = null;
this.updateHtml();
this.forceUpdate();
}, 100);
},
postMessageSyntax: 'ipcRenderer.sendToHost',
};

File diff suppressed because one or more lines are too long

View File

@@ -40,9 +40,9 @@
"integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4="
},
"acorn": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz",
"integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw=="
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
"integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ=="
},
"acorn-globals": {
"version": "4.1.0",
@@ -52,6 +52,14 @@
"acorn": "^5.0.0"
}
},
"agent-base": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz",
"integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==",
"requires": {
"es6-promisify": "^5.0.0"
}
},
"ajv": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz",
@@ -1363,9 +1371,9 @@
"dev": true
},
"cssom": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
"integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs="
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.3.tgz",
"integrity": "sha512-pjE/I/NSp3iyeoxXN5QaoJpgzYUMj2dJHx9OSufoTliJLDx+kuOQaMCJW8OwvrKJswhXUHnHN6eUmUSETN0msg=="
},
"cssstyle": {
"version": "0.3.1",
@@ -2258,6 +2266,14 @@
"resolved": "https://registry.npmjs.org/es6-promise-pool/-/es6-promise-pool-2.5.0.tgz",
"integrity": "sha1-FHxhKza0fxBQJ/nSv1SlmKmdnMs="
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"requires": {
"es6-promise": "^4.0.3"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -2265,9 +2281,9 @@
"dev": true
},
"escodegen": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz",
"integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz",
"integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==",
"requires": {
"esprima": "^3.1.3",
"estraverse": "^4.2.0",
@@ -3507,6 +3523,25 @@
"sshpk": "^1.7.0"
}
},
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"requires": {
"agent-base": "^4.1.0",
"debug": "^3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
}
}
},
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
@@ -3887,9 +3922,9 @@
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"joplin-turndown": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/joplin-turndown/-/joplin-turndown-4.0.7.tgz",
"integrity": "sha512-dOUzNg0nt1Sgz5LO/6CvZmgGLk3q0BCelZ+CDTb/UOBn7reqUl7R0B4yAfiqDtO8p0/wzY/N87RzXeEawbPvFA==",
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/joplin-turndown/-/joplin-turndown-4.0.8.tgz",
"integrity": "sha512-RPZJSZEplVPL3UiJNkaKsFAG8bCGofsKIiH24s8/4qcy1xYnEufvg++rHm7rxi/0VCtpSkRBlWHSs1/srJZvoA==",
"requires": {
"jsdom": "^11.9.0"
}
@@ -4557,9 +4592,9 @@
"dev": true
},
"nwsapi": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.3.tgz",
"integrity": "sha512-zFJF9lOpg2+uicP0BQKOAfIOqeTp/p8PC669mewxgRkR1hGjne8BMUHk4wpRS9o5Z0icA5Nv04HmGkW31KfMKw=="
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.4.tgz",
"integrity": "sha512-Zt6HRR6RcJkuj5/N9zeE7FN6YitRW//hK2wTOwX274IBphbY3Zf5+yn5mZ9v/SzAOTMjQNxZf9KkmPLWn0cV4g=="
},
"oauth-sign": {
"version": "0.8.2",

View File

@@ -90,8 +90,9 @@
"fs-extra": "^5.0.0",
"highlight.js": "^9.12.0",
"html-entities": "^1.2.1",
"https-proxy-agent": "^2.2.1",
"image-type": "^3.0.0",
"joplin-turndown": "^4.0.7",
"joplin-turndown": "^4.0.8",
"joplin-turndown-plugin-gfm": "^1.0.7",
"jssha": "^2.3.1",
"katex": "^0.9.0",

View File

@@ -20,9 +20,9 @@ Three types of applications are available: for the **desktop** (Windows, macOS a
Operating System | Download | Alternative
-----------------|--------|-------------------
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/Joplin-Setup-1.0.103.exe'><img alt='Get it on Windows' height="40px" src='https://joplin.cozic.net/images/BadgeWindows.png'/></a> | or Get the <a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/JoplinPortable.exe'>Portable version</a><br>(to run from a USB key, etc.)
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/Joplin-1.0.103.dmg'><img alt='Get it on macOS' height="40px" src='https://joplin.cozic.net/images/BadgeMacOS.png'/></a> |
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/Joplin-1.0.103-x86_64.AppImage'><img alt='Get it on Linux' height="40px" src='https://joplin.cozic.net/images/BadgeLinux.png'/></a> | An Arch Linux package<br>[is also available](#terminal-application).
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/Joplin-Setup-1.0.104.exe'><img alt='Get it on Windows' height="40px" src='https://joplin.cozic.net/images/BadgeWindows.png'/></a> | or Get the <a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/JoplinPortable.exe'>Portable version</a><br>(to run from a USB key, etc.)
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/Joplin-1.0.104.dmg'><img alt='Get it on macOS' height="40px" src='https://joplin.cozic.net/images/BadgeMacOS.png'/></a> |
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/Joplin-1.0.104-x86_64.AppImage'><img alt='Get it on Linux' height="40px" src='https://joplin.cozic.net/images/BadgeLinux.png'/></a> | An Arch Linux package<br>[is also available](#terminal-application).
The [portable application](https://en.wikipedia.org/wiki/Portable_application) allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.
@@ -309,7 +309,7 @@ Current translations:
![](https://joplin.cozic.net/images/flags/country-4x3/hr.png) | Croatian | [hr_HR](https://github.com/laurent22/joplin/blob/master/CliClient/locales/hr_HR.po) | Hrvoje Mandić (trbuhom@net.hr) | 53%
![](https://joplin.cozic.net/images/flags/country-4x3/cz.png) | Czech | [cs_CZ](https://github.com/laurent22/joplin/blob/master/CliClient/locales/cs_CZ.po) | Lukas Helebrandt (lukas@aiya.cz) | 82%
![](https://joplin.cozic.net/images/flags/country-4x3/dk.png) | Dansk | [da_DK](https://github.com/laurent22/joplin/blob/master/CliClient/locales/da_DK.po) | Morten Juhl-Johansen Zölde-Fejér (mjjzf@syntaktisk. | 84%
![](https://joplin.cozic.net/images/flags/country-4x3/de.png) | Deutsch | [de_DE](https://github.com/laurent22/joplin/blob/master/CliClient/locales/de_DE.po) | Philipp Zumstein (zuphilip@gmail.com) | 92%
![](https://joplin.cozic.net/images/flags/country-4x3/de.png) | Deutsch | [de_DE](https://github.com/laurent22/joplin/blob/master/CliClient/locales/de_DE.po) | Michael Sonntag (ms@editorei.de) | 99%
![](https://joplin.cozic.net/images/flags/country-4x3/gb.png) | English | [en_GB](https://github.com/laurent22/joplin/blob/master/CliClient/locales/en_GB.po) | | 100%
![](https://joplin.cozic.net/images/flags/country-4x3/es.png) | Español | [es_ES](https://github.com/laurent22/joplin/blob/master/CliClient/locales/es_ES.po) | Fernando Martín (f@mrtn.es) | 92%
![](https://joplin.cozic.net/images/flags/country-4x3/fr.png) | Français | [fr_FR](https://github.com/laurent22/joplin/blob/master/CliClient/locales/fr_FR.po) | Laurent Cozic | 100%

View File

@@ -137,6 +137,7 @@ android {
}
dependencies {
compile project(':react-native-file-viewer')
compile project(':react-native-securerandom')
compile project(':react-native-push-notification')
compile project(':react-native-fs')

View File

@@ -3,6 +3,7 @@ package net.cozic.joplin;
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.vinzscam.reactnativefileviewer.RNFileViewerPackage;
import net.rhogan.rnsecurerandom.RNSecureRandomPackage;
import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage;
import com.imagepicker.ImagePickerPackage;
@@ -33,6 +34,7 @@ public class MainApplication extends Application implements ReactApplication {
return Arrays.<ReactPackage>asList(
new ImageResizerPackage(),
new MainReactPackage(),
new RNFileViewerPackage(),
new RNSecureRandomPackage(),
new ReactNativePushNotificationPackage(),
new ImagePickerPackage(),

View File

@@ -1,4 +1,6 @@
rootProject.name = 'Joplin'
include ':react-native-file-viewer'
project(':react-native-file-viewer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-file-viewer/android')
include ':react-native-securerandom'
project(':react-native-securerandom').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-securerandom/android')
include ':react-native-push-notification'

View File

@@ -5,7 +5,6 @@
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
@@ -44,6 +43,7 @@
EC11356C90E9419799A2626F /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 51BCEC3BC28046C8BB19531F /* EvilIcons.ttf */; };
F3D0BB525E6C490294D73075 /* libRNSecureRandom.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22647ACF9A4C45918C44C599 /* libRNSecureRandom.a */; };
FBF57CE2F0F448FA9A8985E2 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EB8BCAEA9AA41CAAE460443 /* libsqlite3.0.tbd */; };
82C61D3DAE0A4666883001E9 /* libRNFileViewer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CCDC2774CD86466F897D88E2 /* libRNFileViewer.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -436,6 +436,8 @@
F5E37D05726A4A08B2EE323A /* libRNFetchBlob.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFetchBlob.a; sourceTree = "<group>"; };
FD370E24D76E461D960DD85D /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; };
FF411B45E68B4A8CBCC35777 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
59F5448FAF7345F8B568BD00 /* RNFileViewer.xcodeproj */ = {isa = PBXFileReference; name = "RNFileViewer.xcodeproj"; path = "../node_modules/react-native-file-viewer/ios/RNFileViewer.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
CCDC2774CD86466F897D88E2 /* libRNFileViewer.a */ = {isa = PBXFileReference; name = "libRNFileViewer.a"; path = "libRNFileViewer.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -466,6 +468,7 @@
AE6BB3A2FDA34D01864A721A /* libRNVectorIcons.a in Frameworks */,
AF99EEC6C55042F7BFC87583 /* libRNImagePicker.a in Frameworks */,
F3D0BB525E6C490294D73075 /* libRNSecureRandom.a in Frameworks */,
82C61D3DAE0A4666883001E9 /* libRNFileViewer.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -729,6 +732,7 @@
711CBD21F0894B83A2D8E234 /* RNVectorIcons.xcodeproj */,
A4716DB8654B431D894F89E1 /* RNImagePicker.xcodeproj */,
252BD7B86BF7435B960DA901 /* RNSecureRandom.xcodeproj */,
59F5448FAF7345F8B568BD00 /* RNFileViewer.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
@@ -1346,12 +1350,14 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)..\node_modules\neact-native-image-pickerios",
"$(SRCROOT)..\node_modules\neact-native-securerandomios",
"$(SRCROOT)\..\node_modules\react-native-file-viewer\ios",
);
INFOPLIST_FILE = Joplin/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/Joplin\"",
"\"$(SRCROOT)/Joplin\"",
);
OTHER_LDFLAGS = (
"$(inherited)",
@@ -1386,12 +1392,14 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)..\node_modules\neact-native-image-pickerios",
"$(SRCROOT)..\node_modules\neact-native-securerandomios",
"$(SRCROOT)\..\node_modules\react-native-file-viewer\ios",
);
INFOPLIST_FILE = Joplin/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/Joplin\"",
"\"$(SRCROOT)/Joplin\"",
);
OTHER_LDFLAGS = (
"$(inherited)",

View File

@@ -115,7 +115,7 @@ class MdToHtml {
if (!resource.id) return ''; // Resource is being loaded
const mime = resource.mime ? resource.mime.toLowerCase() : '';
if (mime == 'image/png' || mime == 'image/jpg' || mime == 'image/jpeg' || mime == 'image/gif') {
if (Resource.isSupportedImageMimeType(mime)) {
let src = './' + Resource.filename(resource);
if (this.resourceBaseUrl_ !== null) src = this.resourceBaseUrl_ + src;
let output = '<img data-resource-id="' + resource.id + '" title="' + htmlentities(title) + '" src="' + src + '"/>';

View File

@@ -35,6 +35,8 @@ const ImagePicker = require('react-native-image-picker');
const AlarmService = require('lib/services/AlarmService.js');
const { SelectDateTimeDialog } = require('lib/components/select-date-time-dialog.js');
import FileViewer from 'react-native-file-viewer';
class NoteScreenComponent extends BaseScreenComponent {
static navigationOptions(options) {
@@ -131,6 +133,9 @@ class NoteScreenComponent extends BaseScreenComponent {
noteId: item.id,
});
}, 5);
} else if (item.type_ === BaseModel.TYPE_RESOURCE) {
const resourcePath = Resource.fullPath(item);
await FileViewer.open(resourcePath);
} else {
throw new Error(_('The Joplin mobile app does not currently support this type of link: %s', BaseModel.modelTypeToName(item.type_)));
}

View File

@@ -2,6 +2,7 @@ const Setting = require('lib/models/Setting.js');
const SyncTargetRegistry = require('lib/SyncTargetRegistry');
const ObjectUtils = require('lib/ObjectUtils');
const { _ } = require('lib/locale.js');
const { shim } = require('lib/shim.js');
const shared = {}
@@ -17,7 +18,9 @@ shared.checkSyncConfig = async function(comp, settings) {
const SyncTargetClass = SyncTargetRegistry.classById(syncTargetId);
const options = Setting.subValues('sync.' + syncTargetId, settings);
comp.setState({ checkSyncConfigResult: 'checking' });
const previousTimeout = shim.setFetchTimeout(1000 * 5);
const result = await SyncTargetClass.checkConfig(ObjectUtils.convertValuesToFunctions(options));
shim.setFetchTimeout(previousTimeout);
comp.setState({ checkSyncConfigResult: result });
}

View File

@@ -19,7 +19,9 @@ async function tryAndRepeat(fn, count) {
while (true) {
try {
console.info('RRRRRRR');
const result = await fn();
console.info(result);
return result;
} catch (error) {
if (retryCount >= count) throw error;

View File

@@ -369,6 +369,7 @@ function importEnex(parentFolderId, filePath, importOptions = null) {
note.todo_completed = dateToTimestamp(noteAttributes['reminder-done-time'], true);
note.order = dateToTimestamp(noteAttributes['reminder-order'], true);
note.source = !!noteAttributes.source ? 'evernote.' + noteAttributes.source : 'evernote';
note.source_url = !!noteAttributes['source-url'] ? noteAttributes['source-url'] : '';
// if (noteAttributes['reminder-time']) {
// console.info('======================================================');

View File

@@ -26,7 +26,7 @@ class Resource extends BaseItem {
}
static isSupportedImageMimeType(type) {
const imageMimeTypes = ["image/jpg", "image/jpeg", "image/png", "image/gif"];
const imageMimeTypes = ["image/jpg", "image/jpeg", "image/png", "image/gif", "image/svg+xml"];
return imageMimeTypes.indexOf(type.toLowerCase()) >= 0;
}

View File

@@ -152,6 +152,7 @@ class Setting extends BaseModel {
'net.customCertificates': { value: '', type: Setting.TYPE_STRING, show: (settings) => { return [SyncTargetRegistry.nameToId('nextcloud'), SyncTargetRegistry.nameToId('webdav')].indexOf(settings['sync.target']) >= 0 }, public: true, appTypes: ['desktop', 'cli'], label: () => _('Custom TLS certificates'), description: () => _('Comma-separated list of paths to directories to load the certificates from, or path to individual cert files. For example: /my/cert_dir, /other/custom.pem. Note that if you make changes to the TLS settings, you must save your changes before clicking on "Check synchronisation configuration".') },
'net.ignoreTlsErrors': { value: false, type: Setting.TYPE_BOOL, show: (settings) => { return [SyncTargetRegistry.nameToId('nextcloud'), SyncTargetRegistry.nameToId('webdav')].indexOf(settings['sync.target']) >= 0 }, public: true, appTypes: ['desktop', 'cli'], label: () => _('Ignore TLS certificate errors') },
'net.proxy': { value: '', type: Setting.TYPE_STRING, public: true, appTypes: ['desktop', 'cli'], label: () => _('Proxy') },
};
return this.metadata_;

View File

@@ -7,8 +7,10 @@ const { setLocale, defaultLocale, closestSupportedLocale } = require('lib/locale
const { FsDriverNode } = require('lib/fs-driver-node.js');
const mimeUtils = require('lib/mime-utils.js').mime;
const Note = require('lib/models/Note.js');
const Setting = require('lib/models/Setting.js');
const Resource = require('lib/models/Resource.js');
const urlValidator = require('valid-url');
const HttpsProxyAgent = require('https-proxy-agent');
function shimInit() {
shim.fsDriver = () => { throw new Error('Not implemented') }
@@ -188,10 +190,27 @@ function shimInit() {
return new Buffer(data).toString('base64');
}
shim.addProxyAgent_ = (requestOptions) => {
if (requestOptions.agent) return requestOptions;
const proxy = Setting.value('net.proxy');
if (!proxy) return requestOptions;
requestOptions = Object.assign({}, requestOptions);
requestOptions.agent = new HttpsProxyAgent(proxy); // http://127.0.0.1:3128
return requestOptions;
}
shim.fetch = async function(url, options = null) {
const validatedUrl = urlValidator.isUri(url);
if (!validatedUrl) throw new Error('Not a valid URL: ' + url);
options = shim.addProxyAgent_(options);
if (shim.fetchTimeout()) options.timeout = shim.fetchTimeout();
console.info(options);
return shim.fetchWithRetry(() => {
return nodeFetch(url, options)
}, options);
@@ -221,7 +240,7 @@ function shimInit() {
};
}
const requestOptions = {
let requestOptions = {
protocol: url.protocol,
host: url.hostname,
port: url.port,
@@ -230,6 +249,8 @@ function shimInit() {
headers: headers,
};
requestOptions = shim.addProxyAgent_(requestOptions);
const doFetchOperation = async () => {
return new Promise((resolve, reject) => {
let file = null;

View File

@@ -120,6 +120,12 @@ shim.fetchWithRetry = async function(fetchFn, options = null) {
}
shim.fetch = () => { throw new Error('Not implemented'); }
shim.setFetchTimeout = (v) => {
const previousTimeout = shim.fetchTimeout_ ? shim.fetchTimeout_ : null;
shim.fetchTimeout_ = v;
return previousTimeout;
}
shim.fetchTimeout = () => { return shim.fetchTimeout_; }
shim.FormData = typeof FormData !== 'undefined' ? FormData : null;
shim.fsDriver = () => { throw new Error('Not implemented') }
shim.FileApiDriverLocal = null;

File diff suppressed because one or more lines are too long

View File

@@ -6506,6 +6506,11 @@
}
}
},
"react-native-file-viewer": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/react-native-file-viewer/-/react-native-file-viewer-1.0.5.tgz",
"integrity": "sha512-/5lwmVPliEOIJMoRby9tb1s9VPxUH1ru7BfdCKxZAwZI5LoOY1qHZuUMtCHAlIKLH1DHu8fhjleJuXbRHaCuLQ=="
},
"react-native-fs": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.8.5.tgz",

View File

@@ -31,6 +31,7 @@
"react-native-document-picker": "^2.1.0",
"react-native-dropdownalert": "^3.1.2",
"react-native-fetch-blob": "^0.10.6",
"react-native-file-viewer": "^1.0.5",
"react-native-fs": "^2.8.5",
"react-native-image-picker": "^0.26.7",
"react-native-image-resizer": "^1.0.0",

View File

@@ -28,10 +28,11 @@ async function updateManifestVersionNumber(manifestPath) {
manifest.version = v.join('.');
console.info('New version: ' + manifest.version);
await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 4));
return manifest.version;
}
async function main() {
await updateManifestVersionNumber(clipperDir + '/manifest.json');
const newVersion = await updateManifestVersionNumber(clipperDir + '/manifest.json');
console.info('Building extension...');
process.chdir(clipperDir + '/popup');
@@ -74,6 +75,13 @@ async function main() {
console.info(await execCommand('7z a -tzip ' + dist.name + '.zip *'));
console.info(await execCommand('mv ' + dist.name + '.zip ..'));
}
console.info(await execCommand('git pull'));
console.info(await execCommand('git add -A'));
console.info(await execCommand('git commit -m "Clipper release v' + newVersion + '"'));
console.info(await execCommand('git tag clipper-' + newVersion));
console.info(await execCommand('git push'));
console.info(await execCommand('git push --tags'));
}
main().catch((error) => {

View File

@@ -250,6 +250,20 @@
</ul>
</div>
<h1 id="joplin-changelog">Joplin changelog</h1>
<h2 id="-v1-0-104-https-github-com-laurent22-joplin-releases-tag-v1-0-104-2018-06-28t20-25-36z"><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.104">v1.0.104</a> - 2018-06-28T20:25:36Z</h2>
<ul>
<li>New: Allow HTML in Markdown documents in a secure way.</li>
<li>New: Resolves <a href="https://github.com/laurent22/joplin/issues/619">#619</a>: Context menu to cut, copy and paste. Also added menu to copy link in web view</li>
<li>New: Resolves <a href="https://github.com/laurent22/joplin/issues/612">#612</a>: Allow duplicating a note</li>
<li>New: Web Clipper: Support &#39;author&#39; property</li>
<li>Improved: Resolves <a href="https://github.com/laurent22/joplin/issues/647">#647</a>: Allow specifying text editor path and arguments in setting</li>
<li>Improved: Optimised encryption and decryption of items so that it doesn&#39;t freeze the UI, especially on mobile</li>
<li>Improved: Set PDF default file name</li>
<li>Improved: Resolves <a href="https://github.com/laurent22/joplin/issues/644">#644</a>: Added support for .markdown extension when importing files</li>
<li>Fixes <a href="https://github.com/laurent22/joplin/issues/634">#634</a>: Press ESC to dismiss dialog in non-English languages</li>
<li>Fixes <a href="https://github.com/laurent22/joplin/issues/639">#639</a>: Make sure text wraps when printing or exporting as PDF</li>
<li>Fixes <a href="https://github.com/laurent22/joplin/issues/646">#646</a>: Mentioned that TLS settings must be saved before checking sync config</li>
</ul>
<h2 id="-v1-0-103-https-github-com-laurent22-joplin-releases-tag-v1-0-103-2018-06-21t19-38-13z"><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.103">v1.0.103</a> - 2018-06-21T19:38:13Z</h2>
<ul>
<li>New: Resolves <a href="https://github.com/laurent22/joplin/issues/611">#611</a>: Allow opening and editing note in external editor</li>

View File

@@ -270,17 +270,17 @@
<tbody>
<tr>
<td>Windows (32 and 64-bit)</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/Joplin-Setup-1.0.103.exe'><img alt='Get it on Windows' height="40px" src='https://joplin.cozic.net/images/BadgeWindows.png'/></a></td>
<td>or Get the <a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/JoplinPortable.exe'>Portable version</a><br>(to run from a USB key, etc.)</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/Joplin-Setup-1.0.104.exe'><img alt='Get it on Windows' height="40px" src='https://joplin.cozic.net/images/BadgeWindows.png'/></a></td>
<td>or Get the <a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/JoplinPortable.exe'>Portable version</a><br>(to run from a USB key, etc.)</td>
</tr>
<tr>
<td>macOS</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/Joplin-1.0.103.dmg'><img alt='Get it on macOS' height="40px" src='https://joplin.cozic.net/images/BadgeMacOS.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/Joplin-1.0.104.dmg'><img alt='Get it on macOS' height="40px" src='https://joplin.cozic.net/images/BadgeMacOS.png'/></a></td>
<td></td>
</tr>
<tr>
<td>Linux</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.0.103/Joplin-1.0.103-x86_64.AppImage'><img alt='Get it on Linux' height="40px" src='https://joplin.cozic.net/images/BadgeLinux.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.0.104/Joplin-1.0.104-x86_64.AppImage'><img alt='Get it on Linux' height="40px" src='https://joplin.cozic.net/images/BadgeLinux.png'/></a></td>
<td>An Arch Linux package<br><a href="#terminal-application">is also available</a>.</td>
</tr>
</tbody>
@@ -540,8 +540,8 @@ $$
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/de.png" alt=""></td>
<td>Deutsch</td>
<td><a href="https://github.com/laurent22/joplin/blob/master/CliClient/locales/de_DE.po">de_DE</a></td>
<td>Philipp Zumstein (zuphilip@gmail.com)</td>
<td>92%</td>
<td>Michael Sonntag (ms@editorei.de)</td>
<td>99%</td>
</tr>
<tr>
<td><img src="https://joplin.cozic.net/images/flags/country-4x3/gb.png" alt=""></td>

View File

@@ -260,19 +260,19 @@
<tbody>
<tr>
<td>Total Windows downloads</td>
<td>28753</td>
<td>30732</td>
</tr>
<tr>
<td>Total macOs downloads</td>
<td>14879</td>
<td>15729</td>
</tr>
<tr>
<td>Total Linux downloads</td>
<td>13366</td>
<td>14050</td>
</tr>
<tr>
<td>Windows %</td>
<td>50%</td>
<td>51%</td>
</tr>
<tr>
<td>macOS %</td>
@@ -297,52 +297,60 @@
</thead>
<tbody>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.104">v1.0.104</a></td>
<td>2018-06-28T20:25:36Z</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.103">v1.0.103</a></td>
<td>2018-06-21T19:38:13Z</td>
<td>14</td>
<td>5</td>
<td>2</td>
<td>21 </td>
<td>1967</td>
<td>841</td>
<td>643</td>
<td>3451</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.101">v1.0.101</a></td>
<td>2018-06-17T18:35:11Z</td>
<td>1252</td>
<td>564</td>
<td>365</td>
<td>2181</td>
<td>1266</td>
<td>574</td>
<td>393</td>
<td>2233</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.100">v1.0.100</a></td>
<td>2018-06-14T17:41:43Z</td>
<td>829</td>
<td>830</td>
<td>401</td>
<td>217</td>
<td>1447</td>
<td>219</td>
<td>1450</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.99">v1.0.99</a></td>
<td>2018-06-10T13:18:23Z</td>
<td>1211</td>
<td>1212</td>
<td>573</td>
<td>367</td>
<td>2151</td>
<td>369</td>
<td>2154</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.97">v1.0.97</a></td>
<td>2018-06-09T19:23:34Z</td>
<td>271</td>
<td>273</td>
<td>129</td>
<td>50</td>
<td>450</td>
<td>452</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.96">v1.0.96</a></td>
<td>2018-05-26T16:36:39Z</td>
<td>2653</td>
<td>1191</td>
<td>2654</td>
<td>1192</td>
<td>1124</td>
<td>4968</td>
<td>4970</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.95">v1.0.95</a></td>
@@ -363,18 +371,18 @@
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.93">v1.0.93</a></td>
<td>2018-05-14T11:36:01Z</td>
<td>1751</td>
<td>824</td>
<td>714</td>
<td>3289</td>
<td>1752</td>
<td>826</td>
<td>725</td>
<td>3303</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.91">v1.0.91</a></td>
<td>2018-05-10T14:48:04Z</td>
<td>803</td>
<td>804</td>
<td>528</td>
<td>284</td>
<td>1615</td>
<td>1616</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.89">v1.0.89</a></td>
@@ -395,10 +403,10 @@
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.83">v1.0.83</a></td>
<td>2018-04-04T19:43:58Z</td>
<td>4396</td>
<td>4398</td>
<td>2367</td>
<td>2625</td>
<td>9388</td>
<td>9390</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.82">v1.0.82</a></td>
@@ -428,9 +436,9 @@
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.78">v1.0.78</a></td>
<td>2018-03-17T15:27:18Z</td>
<td>1295</td>
<td>832</td>
<td>833</td>
<td>839</td>
<td>2966</td>
<td>2967</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.77">v1.0.77</a></td>
@@ -459,10 +467,10 @@
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.67">v1.0.67</a></td>
<td>2018-02-19T22:51:08Z</td>
<td>1732</td>
<td>1735</td>
<td>577</td>
<td></td>
<td>2309</td>
<td>2312</td>
</tr>
<tr>
<td><a href="https://github.com/laurent22/joplin/releases/tag/v1.0.66">v1.0.66</a></td>

View File

@@ -26,6 +26,7 @@
"*.min.js",
"*.bundle.js",
"yarn.lock",
"*.icns"
],
"folder_exclude_patterns":
[
@@ -61,20 +62,9 @@
"_releases",
"ReactNativeClient/lib/csstojs",
"Clipper/joplin-webclipper/popup/build",
"Clipper/joplin-webclipper/dist",
"Clipper/joplin-webclipper/dist"
],
"path": "."
},
{
"file_exclude_patterns":
[
"src/log.txt",
],
"folder_exclude_patterns":
[
"node_modules",
],
"path": "D:\\Docs\\PROGS\\Node\\tkwidgets"
}
],
}
]
}

View File

@@ -1,5 +1,19 @@
# Joplin changelog
## [v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) - 2018-06-28T20:25:36Z
- New: Allow HTML in Markdown documents in a secure way.
- New: Resolves [#619](https://github.com/laurent22/joplin/issues/619): Context menu to cut, copy and paste. Also added menu to copy link in web view
- New: Resolves [#612](https://github.com/laurent22/joplin/issues/612): Allow duplicating a note
- New: Web Clipper: Support 'author' property
- Improved: Resolves [#647](https://github.com/laurent22/joplin/issues/647): Allow specifying text editor path and arguments in setting
- Improved: Optimised encryption and decryption of items so that it doesn't freeze the UI, especially on mobile
- Improved: Set PDF default file name
- Improved: Resolves [#644](https://github.com/laurent22/joplin/issues/644): Added support for .markdown extension when importing files
- Fixes [#634](https://github.com/laurent22/joplin/issues/634): Press ESC to dismiss dialog in non-English languages
- Fixes [#639](https://github.com/laurent22/joplin/issues/639): Make sure text wraps when printing or exporting as PDF
- Fixes [#646](https://github.com/laurent22/joplin/issues/646): Mentioned that TLS settings must be saved before checking sync config
## [v1.0.103](https://github.com/laurent22/joplin/releases/tag/v1.0.103) - 2018-06-21T19:38:13Z
- New: Resolves [#611](https://github.com/laurent22/joplin/issues/611): Allow opening and editing note in external editor

View File

@@ -2,36 +2,37 @@
Name | Value
--- | ---
Total Windows downloads | 28753
Total macOs downloads | 14879
Total Linux downloads | 13366
Windows % | 50%
Total Windows downloads | 30732
Total macOs downloads | 15729
Total Linux downloads | 14050
Windows % | 51%
macOS % | 26%
Linux % | 23%
Version | Date | Windows | macOS | Linux | Total
--- | --- | --- | --- | --- | ---
[v1.0.103](https://github.com/laurent22/joplin/releases/tag/v1.0.103) | 2018-06-21T19:38:13Z | 14 | 5 | 2 | 21
[v1.0.101](https://github.com/laurent22/joplin/releases/tag/v1.0.101) | 2018-06-17T18:35:11Z | 1252 | 564 | 365 | 2181
[v1.0.100](https://github.com/laurent22/joplin/releases/tag/v1.0.100) | 2018-06-14T17:41:43Z | 829 | 401 | 217 | 1447
[v1.0.99](https://github.com/laurent22/joplin/releases/tag/v1.0.99) | 2018-06-10T13:18:23Z | 1211 | 573 | 367 | 2151
[v1.0.97](https://github.com/laurent22/joplin/releases/tag/v1.0.97) | 2018-06-09T19:23:34Z | 271 | 129 | 50 | 450
[v1.0.96](https://github.com/laurent22/joplin/releases/tag/v1.0.96) | 2018-05-26T16:36:39Z | 2653 | 1191 | 1124 | 4968
[v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) | 2018-06-28T20:25:36Z | | | |
[v1.0.103](https://github.com/laurent22/joplin/releases/tag/v1.0.103) | 2018-06-21T19:38:13Z | 1967 | 841 | 643 | 3451
[v1.0.101](https://github.com/laurent22/joplin/releases/tag/v1.0.101) | 2018-06-17T18:35:11Z | 1266 | 574 | 393 | 2233
[v1.0.100](https://github.com/laurent22/joplin/releases/tag/v1.0.100) | 2018-06-14T17:41:43Z | 830 | 401 | 219 | 1450
[v1.0.99](https://github.com/laurent22/joplin/releases/tag/v1.0.99) | 2018-06-10T13:18:23Z | 1212 | 573 | 369 | 2154
[v1.0.97](https://github.com/laurent22/joplin/releases/tag/v1.0.97) | 2018-06-09T19:23:34Z | 273 | 129 | 50 | 452
[v1.0.96](https://github.com/laurent22/joplin/releases/tag/v1.0.96) | 2018-05-26T16:36:39Z | 2654 | 1192 | 1124 | 4970
[v1.0.95](https://github.com/laurent22/joplin/releases/tag/v1.0.95) | 2018-05-25T13:04:30Z | 366 | 184 | 79 | 629
[v1.0.94](https://github.com/laurent22/joplin/releases/tag/v1.0.94) | 2018-05-21T20:52:59Z | 1078 | 551 | 352 | 1981
[v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1751 | 824 | 714 | 3289
[v1.0.91](https://github.com/laurent22/joplin/releases/tag/v1.0.91) | 2018-05-10T14:48:04Z | 803 | 528 | 284 | 1615
[v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1752 | 826 | 725 | 3303
[v1.0.91](https://github.com/laurent22/joplin/releases/tag/v1.0.91) | 2018-05-10T14:48:04Z | 804 | 528 | 284 | 1616
[v1.0.89](https://github.com/laurent22/joplin/releases/tag/v1.0.89) | 2018-05-09T13:05:05Z | 459 | 204 | 87 | 750
[v1.0.85](https://github.com/laurent22/joplin/releases/tag/v1.0.85) | 2018-05-01T21:08:24Z | 1626 | 927 | 605 | 3158
[v1.0.83](https://github.com/laurent22/joplin/releases/tag/v1.0.83) | 2018-04-04T19:43:58Z | 4396 | 2367 | 2625 | 9388
[v1.0.83](https://github.com/laurent22/joplin/releases/tag/v1.0.83) | 2018-04-04T19:43:58Z | 4398 | 2367 | 2625 | 9390
[v1.0.82](https://github.com/laurent22/joplin/releases/tag/v1.0.82) | 2018-03-31T19:16:31Z | 682 | 381 | 90 | 1153
[v1.0.81](https://github.com/laurent22/joplin/releases/tag/v1.0.81) | 2018-03-28T08:13:58Z | 977 | 563 | 740 | 2280
[v1.0.79](https://github.com/laurent22/joplin/releases/tag/v1.0.79) | 2018-03-23T18:00:11Z | 912 | 506 | 351 | 1769
[v1.0.78](https://github.com/laurent22/joplin/releases/tag/v1.0.78) | 2018-03-17T15:27:18Z | 1295 | 832 | 839 | 2966
[v1.0.78](https://github.com/laurent22/joplin/releases/tag/v1.0.78) | 2018-03-17T15:27:18Z | 1295 | 833 | 839 | 2967
[v1.0.77](https://github.com/laurent22/joplin/releases/tag/v1.0.77) | 2018-03-16T15:12:35Z | 164 | 85 | 23 | 272
[v1.0.72](https://github.com/laurent22/joplin/releases/tag/v1.0.72) | 2018-03-14T09:44:35Z | 395 | 229 | 30 | 654
[v1.0.70](https://github.com/laurent22/joplin/releases/tag/v1.0.70) | 2018-02-28T20:04:30Z | 1836 | 1020 | 1218 | 4074
[v1.0.67](https://github.com/laurent22/joplin/releases/tag/v1.0.67) | 2018-02-19T22:51:08Z | 1732 | 577 | | 2309
[v1.0.67](https://github.com/laurent22/joplin/releases/tag/v1.0.67) | 2018-02-19T22:51:08Z | 1735 | 577 | | 2312
[v1.0.66](https://github.com/laurent22/joplin/releases/tag/v1.0.66) | 2018-02-18T23:09:09Z | 312 | 105 | 71 | 488
[v1.0.65](https://github.com/laurent22/joplin/releases/tag/v1.0.65) | 2018-02-17T20:02:25Z | 184 | 102 | 113 | 399
[v1.0.64](https://github.com/laurent22/joplin/releases/tag/v1.0.64) | 2018-02-16T00:58:20Z | 1066 | 526 | 1115 | 2707