Merge branch 'master' into dev

This commit is contained in:
benweet 2018-04-05 20:31:02 +01:00
commit 0afdaa557f
10 changed files with 44 additions and 8 deletions

View File

@ -1,3 +1,16 @@
language: node_js language: node_js
node_js: node_js:
- "8" - "8"
services:
- docker
before_deploy:
- docker build -t benweet/stackedit .
deploy:
provider: script
script: bash build/docker-push-tag.sh
on:
tags: true

7
build/docker-push-tag.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
set -e
docker login -u benweet -p "$DOCKER_PASSWORD"
docker tag benweet/stackedit "benweet/stackedit:$TRAVIS_TAG"
docker push benweet/stackedit:$TRAVIS_TAG
docker tag benweet/stackedit:$TRAVIS_TAG benweet/stackedit:latest
docker push benweet/stackedit:latest

View File

@ -18,3 +18,10 @@ const httpServer = http.createServer(app);
httpServer.listen(port, null, () => { httpServer.listen(port, null, () => {
console.log(`HTTP server started: http://localhost:${port}`); console.log(`HTTP server started: http://localhost:${port}`);
}); });
// Handle graceful shutdown
process.on('SIGTERM', () => {
httpServer.close(() => {
process.exit(0);
});
});

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "stackedit", "name": "stackedit",
"version": "5.10.2", "version": "5.10.5",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "stackedit", "name": "stackedit",
"version": "5.10.2", "version": "5.10.5",
"description": "Free, open-source, full-featured Markdown editor", "description": "Free, open-source, full-featured Markdown editor",
"author": "Benoit Schweblin", "author": "Benoit Schweblin",
"license": "Apache-2.0", "license": "Apache-2.0",

View File

@ -75,7 +75,7 @@ export default {
}), }),
computed: { computed: {
panel() { panel() {
return this.$store.getters['data/layoutSettings'].sideBarPanel; return !this.$store.state.light && this.$store.getters['data/layoutSettings'].sideBarPanel;
}, },
panelName() { panelName() {
return panelNames[this.panel]; return panelNames[this.panel];

View File

@ -13,7 +13,9 @@
StackEdit on <a target="_blank" href="https://twitter.com/stackedit/">Twitter</a> StackEdit on <a target="_blank" href="https://twitter.com/stackedit/">Twitter</a>
<br> <br>
<a target="_blank" href="https://community.stackedit.io/">Community</a> <a target="_blank" href="https://community.stackedit.io/">Community</a>
<hr> <div class="modal__info">
For commercial support or custom development, please <a href="mailto:stackedit.project@gmail.com">send us an email</a>.
</div>
<h3>FAQ</h3> <h3>FAQ</h3>
<div class="faq" v-html="faq"></div> <div class="faq" v-html="faq"></div>
<hr> <hr>

View File

@ -1,14 +1,17 @@
**Where is my data stored?** **Where is my data stored?**
If your workspace is not synced, your files are only stored inside your browser (using the [IndexedDB API](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API)) and are not stored anywhere else. If your workspace is not synced, your files are only stored inside your browser (using the [IndexedDB API](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API)) and are not stored anywhere else.
We recommend syncing your workspace to make sure files won't be lost in case your browser data is cleared. We recommend syncing your workspace to make sure files won't be lost in case your browser data is cleared.
**Where is my data stored once I sync my workspace?** **Where is my data stored once I sync my workspace?**
If you sign in with Google, your main workspace will be stored in Google Drive (in your [app data folder](https://developers.google.com/drive/v3/web/appdata)). If you sign in with Google, your main workspace will be stored in Google Drive (in your [app data folder](https://developers.google.com/drive/v3/web/appdata)).
If you open a Google Drive workspace, the files in the workspace will be stored inside a Google Drive folder which you can share with other users. If you open a Google Drive workspace, the files in the workspace will be stored inside a Google Drive folder which you can share with other users.
If you open a CouchDB workspace, the files in the workspace will be stored in the CouchDB database which can be hosted on premises for privacy concerns. If you open a CouchDB workspace, the files in the workspace will be stored in the CouchDB database which can be hosted on premises for privacy concerns.
**Can StackEdit access my data without telling me?** **Can StackEdit access my data without telling me?**
StackEdit is a frontend application. The access tokens issued by Google, Dropbox, GitHub... are stored in your browser and are not sent to our backend or to 3rd parties so your data won't be accessed by anybody. StackEdit is a frontend application. The access tokens issued by Google, Dropbox, GitHub... are stored in your browser and are not sent to any backend or 3^rd^ parties so your data won't be accessed by anyone.

View File

@ -335,6 +335,7 @@ function cledit(contentElt, scrollEltOpt, isMarkdown = false) {
}); });
turndownService = new TurndownService(store.getters['data/computedSettings'].turndown); turndownService = new TurndownService(store.getters['data/computedSettings'].turndown);
turndownService.escape = str => str; // Disable escaping
} }
contentElt.addEventListener('paste', (evt) => { contentElt.addEventListener('paste', (evt) => {
@ -347,7 +348,7 @@ function cledit(contentElt, scrollEltOpt, isMarkdown = false) {
if (turndownService) { if (turndownService) {
try { try {
const html = clipboardData.getData('text/html'); const html = clipboardData.getData('text/html');
if (html && !clipboardData.getData('text/css')) { if (html) {
const sanitizedHtml = htmlSanitizer.sanitizeHtml(html) const sanitizedHtml = htmlSanitizer.sanitizeHtml(html)
.replace(/&#160;/g, ' '); // Replace non-breaking spaces with classic spaces .replace(/&#160;/g, ' '); // Replace non-breaking spaces with classic spaces
if (sanitizedHtml) { if (sanitizedHtml) {

View File

@ -23,8 +23,11 @@ const isGoogleSponsor = () => {
const checkPayment = () => { const checkPayment = () => {
const currentDate = Date.now(); const currentDate = Date.now();
if (!isGoogleSponsor() && networkSvc.isUserActive() && !store.state.offline && if (!isGoogleSponsor()
lastCheck + checkPaymentEvery < currentDate && networkSvc.isUserActive()
&& !store.state.offline
&& !store.state.light
&& lastCheck + checkPaymentEvery < currentDate
) { ) {
lastCheck = currentDate; lastCheck = currentDate;
getMonetize() getMonetize()