From a349d8af68dc8d531aa30ae9721c4317e00bbc3d Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 8 Feb 2022 20:55:31 +0700 Subject: [PATCH 1/8] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=20JembaDb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 18 +++++++++--------- package.json | 2 +- server/db/JembaConnManager.js | 14 +++++++++----- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7865b34a..5ce0d2b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Liberama", - "version": "0.11.1", + "version": "0.11.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Liberama", - "version": "0.11.1", + "version": "0.11.2", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -22,7 +22,7 @@ "got": "^11.8.2", "he": "^1.2.0", "iconv-lite": "^0.6.3", - "jembadb": "^1.3.0", + "jembadb": "^2.2.0", "localforage": "^1.10.0", "lodash": "^4.17.21", "minimist": "^1.2.5", @@ -6379,9 +6379,9 @@ } }, "node_modules/jembadb": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-1.3.0.tgz", - "integrity": "sha512-zMJ1GyXmqvniWToaZTzc3JPHK+SfvcynFHYsZAx8bJWlgVdQd6cqYpIEXJFP+3OZqxPTzMYG5OBGclxTsoOqtg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-2.2.0.tgz", + "integrity": "sha512-1ddK0F4hAvDPmiSqPkn8GMbG7O+mMTbEG8oSOM+XczW1gdpChKt699ewUdFlMmTAQsx4XC43WDfVZzulc4a+3w==", "engines": { "node": ">=14.4.0" } @@ -16229,9 +16229,9 @@ } }, "jembadb": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-1.3.0.tgz", - "integrity": "sha512-zMJ1GyXmqvniWToaZTzc3JPHK+SfvcynFHYsZAx8bJWlgVdQd6cqYpIEXJFP+3OZqxPTzMYG5OBGclxTsoOqtg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-2.2.0.tgz", + "integrity": "sha512-1ddK0F4hAvDPmiSqPkn8GMbG7O+mMTbEG8oSOM+XczW1gdpChKt699ewUdFlMmTAQsx4XC43WDfVZzulc4a+3w==" }, "jest-worker": { "version": "27.3.1", diff --git a/package.json b/package.json index dd35260f..815dd62f 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "got": "^11.8.2", "he": "^1.2.0", "iconv-lite": "^0.6.3", - "jembadb": "^1.3.0", + "jembadb": "^2.2.0", "localforage": "^1.10.0", "lodash": "^4.17.21", "minimist": "^1.2.5", diff --git a/server/db/JembaConnManager.js b/server/db/JembaConnManager.js index d91e3d44..b989e00f 100644 --- a/server/db/JembaConnManager.js +++ b/server/db/JembaConnManager.js @@ -46,12 +46,16 @@ class JembaConnManager { } log(`Open "${dbConfig.dbName}" begin`); - await dbConn.openDb({ + await dbConn.lock({ dbPath, create: true, - cacheSize: dbConfig.cacheSize, - compressed: dbConfig.compressed, - forceFileClosing: dbConfig.forceFileClosing + softLock: true, + + tableDefaults: { + cacheSize: dbConfig.cacheSize, + compressed: dbConfig.compressed, + forceFileClosing: dbConfig.forceFileClosing + }, }); if (dbConfig.openAll) { @@ -97,7 +101,7 @@ class JembaConnManager { return; for (const dbConfig of this.config.jembaDb) { - await this._db[dbConfig.dbName].closeDb(); + await this._db[dbConfig.dbName].unlock(); } this._db = {}; From 02d458d1924663e896ff49b94c17fd1456473756 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 29 Mar 2022 15:49:48 +0700 Subject: [PATCH 2/8] =?UTF-8?q?=D0=9C=D0=B8=D0=B3=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20"jembadb"=20=3D>=20"^2.3.0"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 14 +++++++------- package.json | 2 +- server/core/AsyncExit.js | 15 ++++++--------- server/db/JembaConnManager.js | 21 ++++++++++----------- server/index.js | 1 - 5 files changed, 24 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5ce0d2b1..13c1ce3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "got": "^11.8.2", "he": "^1.2.0", "iconv-lite": "^0.6.3", - "jembadb": "^2.2.0", + "jembadb": "^2.3.0", "localforage": "^1.10.0", "lodash": "^4.17.21", "minimist": "^1.2.5", @@ -6379,9 +6379,9 @@ } }, "node_modules/jembadb": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-2.2.0.tgz", - "integrity": "sha512-1ddK0F4hAvDPmiSqPkn8GMbG7O+mMTbEG8oSOM+XczW1gdpChKt699ewUdFlMmTAQsx4XC43WDfVZzulc4a+3w==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-2.3.0.tgz", + "integrity": "sha512-Jrvbe+4a3ULZvYmM6VnIK6mGFegPELbAppSYTTvPUeMmndNVOAVr1RDHKEiV8ccLanv1xWnJYiCo1mdnepR/Cg==", "engines": { "node": ">=14.4.0" } @@ -16229,9 +16229,9 @@ } }, "jembadb": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-2.2.0.tgz", - "integrity": "sha512-1ddK0F4hAvDPmiSqPkn8GMbG7O+mMTbEG8oSOM+XczW1gdpChKt699ewUdFlMmTAQsx4XC43WDfVZzulc4a+3w==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jembadb/-/jembadb-2.3.0.tgz", + "integrity": "sha512-Jrvbe+4a3ULZvYmM6VnIK6mGFegPELbAppSYTTvPUeMmndNVOAVr1RDHKEiV8ccLanv1xWnJYiCo1mdnepR/Cg==" }, "jest-worker": { "version": "27.3.1", diff --git a/package.json b/package.json index 815dd62f..139d548c 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "got": "^11.8.2", "he": "^1.2.0", "iconv-lite": "^0.6.3", - "jembadb": "^2.2.0", + "jembadb": "^2.3.0", "localforage": "^1.10.0", "lodash": "^4.17.21", "minimist": "^1.2.5", diff --git a/server/core/AsyncExit.js b/server/core/AsyncExit.js index 10921f1b..59272504 100644 --- a/server/core/AsyncExit.js +++ b/server/core/AsyncExit.js @@ -1,27 +1,26 @@ let instance = null; const defaultTimeout = 15*1000;//15 sec -const exitSignals = ['SIGINT', 'SIGTERM', 'SIGBREAK', 'SIGHUP', 'uncaughtException', 'SIGUSR2']; +const exitSignals = ['SIGINT', 'SIGTERM', 'SIGBREAK', 'SIGHUP', 'uncaughtException']; //singleton class AsyncExit { - constructor() { + constructor(signals = exitSignals, codeOnSignal = 2) { if (!instance) { this.onSignalCallbacks = new Map(); this.callbacks = new Map(); this.afterCallbacks = new Map(); this.exitTimeout = defaultTimeout; - this.inited = false; + + this._init(signals, codeOnSignal); + instance = this; } return instance; } - init(signals = exitSignals, codeOnSignal = 2) { - if (this.inited) - throw new Error('AsyncExit: initialized already'); - + _init(signals, codeOnSignal) { const runSingalCallbacks = async(signal) => { for (const signalCallback of this.onSignalCallbacks.keys()) { try { @@ -38,8 +37,6 @@ class AsyncExit { this.exit(codeOnSignal); }); } - - this.inited = true; } onSignal(signalCallback) { diff --git a/server/db/JembaConnManager.js b/server/db/JembaConnManager.js index b989e00f..27193f31 100644 --- a/server/db/JembaConnManager.js +++ b/server/db/JembaConnManager.js @@ -14,6 +14,7 @@ class JembaConnManager { constructor() { if (!instance) { this.inited = false; + this._db = {}; instance = this; } @@ -28,6 +29,8 @@ class JembaConnManager { this.config = config; this._db = {}; + ayncExit.add(this.close.bind(this)); + for (const dbConfig of this.config.jembaDb) { const dbPath = `${this.config.dataDir}/db/${dbConfig.dbName}`; @@ -44,21 +47,23 @@ class JembaConnManager { } else { dbConn = new JembaDb(); } + this._db[dbConfig.dbName] = dbConn; log(`Open "${dbConfig.dbName}" begin`); await dbConn.lock({ dbPath, create: true, softLock: true, - + tableDefaults: { cacheSize: dbConfig.cacheSize, compressed: dbConfig.compressed, - forceFileClosing: dbConfig.forceFileClosing + forceFileClosing: dbConfig.forceFileClosing, + typeCompatMode: true, }, }); - if (dbConfig.openAll) { + if (dbConfig.openAll || forceAutoRepair || dbConfig.autoRepair) { try { await dbConn.openAll(); } catch(e) { @@ -87,21 +92,15 @@ class JembaConnManager { if (applied.length) log(`${applied.length} migrations applied to "${dbConfig.dbName}"`); } - - this._db[dbConfig.dbName] = dbConn; } - ayncExit.add(this.close.bind(this)); - this.inited = true; } async close() { - if (!this.inited) - return; - for (const dbConfig of this.config.jembaDb) { - await this._db[dbConfig.dbName].unlock(); + if (this._db[dbConfig.dbName]) + await this._db[dbConfig.dbName].unlock(); } this._db = {}; diff --git a/server/index.js b/server/index.js index 884c147f..633f0f84 100644 --- a/server/index.js +++ b/server/index.js @@ -8,7 +8,6 @@ const http = require('http'); const WebSocket = require ('ws'); const ayncExit = new (require('./core/AsyncExit'))(); -ayncExit.init(); let log = null; From bcf075a72cef5fa4fe9a3328945c2c3ad4bd7441 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 29 Mar 2022 16:23:34 +0700 Subject: [PATCH 3/8] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20WebSocketConnection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/webpack.base.config.js | 7 ++++--- client/api/reader.js | 2 +- server/controllers/WebSocketController.js | 3 +-- server/core/WebSocketConnection.js | 5 ++--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/build/webpack.base.config.js b/build/webpack.base.config.js index 747c506f..570f9193 100644 --- a/build/webpack.base.config.js +++ b/build/webpack.base.config.js @@ -5,11 +5,12 @@ const { VueLoaderPlugin } = require('vue-loader'); const clientDir = path.resolve(__dirname, '../client'); module.exports = { - /*resolve: { + resolve: { alias: { - vue: '@vue/compat' + ws: false, + //vue: '@vue/compat' } - },*/ + }, entry: [`${clientDir}/main.js`], output: { publicPath: '/app/', diff --git a/client/api/reader.js b/client/api/reader.js index d3995597..742a9792 100644 --- a/client/api/reader.js +++ b/client/api/reader.js @@ -219,7 +219,7 @@ class Reader { const state = response.state; if (!state) throw new Error('Неверный ответ api'); - if (response.state == 'error') { + if (state == 'error') { throw new Error(response.error); } diff --git a/server/controllers/WebSocketController.js b/server/controllers/WebSocketController.js index 1ef46135..229dbcf0 100644 --- a/server/controllers/WebSocketController.js +++ b/server/controllers/WebSocketController.js @@ -55,8 +55,7 @@ class WebSocketController { ws.lastActivity = Date.now(); //pong for WebSocketConnection - if (req._rpo === 1) - this.send({_rok: 1}, req, ws); + this.send({_rok: 1}, req, ws); switch (req.action) { case 'test': diff --git a/server/core/WebSocketConnection.js b/server/core/WebSocketConnection.js index d33d95f0..3045659e 100644 --- a/server/core/WebSocketConnection.js +++ b/server/core/WebSocketConnection.js @@ -9,8 +9,7 @@ const cleanPeriod = 5*1000;//5 секунд class WebSocketConnection { //messageLifeTime в секундах (проверка каждый cleanPeriod интервал) constructor(url, openTimeoutSecs = 10, messageLifeTimeSecs = 30) { - //const ws = 'ws';//for nodejs - this.WebSocket = (isBrowser ? WebSocket : null/*for nodejs require(ws)*/); + this.WebSocket = (isBrowser ? WebSocket : require('ws')); this.url = url; this.ws = null; this.listeners = []; @@ -166,7 +165,7 @@ class WebSocketConnection { this.requestId = (this.requestId < 1000000 ? this.requestId + 1 : 1); const requestId = this.requestId;//реентерабельность!!! - this.ws.send(JSON.stringify(Object.assign({requestId, _rpo: 1}, req)));//_rpo: 1 - ждем в ответ _rok: 1 + this.ws.send(JSON.stringify(Object.assign({requestId}, req))); let resp = {}; try { From 26f6ffc83ad9a21d6c34534550c0cdbad230f920 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 29 Mar 2022 16:25:26 +0700 Subject: [PATCH 4/8] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20PayPal=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reader/HelpPage/DonateHelpPage/DonateHelpPage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/components/Reader/HelpPage/DonateHelpPage/DonateHelpPage.vue b/client/components/Reader/HelpPage/DonateHelpPage/DonateHelpPage.vue index 001ff35e..5f83684a 100644 --- a/client/components/Reader/HelpPage/DonateHelpPage/DonateHelpPage.vue +++ b/client/components/Reader/HelpPage/DonateHelpPage/DonateHelpPage.vue @@ -19,7 +19,7 @@ -
+
From ba2943c7227cc859e008534045e02744dff60ee7 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 29 Mar 2022 16:49:04 +0700 Subject: [PATCH 5/8] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc | 1 + .../ExternalLibs/BookmarkSettings/BookmarkSettings.vue | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.eslintrc b/.eslintrc index 2025d7b5..73eb5287 100644 --- a/.eslintrc +++ b/.eslintrc @@ -31,6 +31,7 @@ "vue/max-attributes-per-line": "off", "vue/html-self-closing": "off", "vue/no-v-html": "off", + "vue/no-v-model-argument": "off", "strict": 0, "indent": [0, 4, { diff --git a/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue b/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue index fb24cc86..b41d3fc6 100644 --- a/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue +++ b/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue @@ -55,16 +55,16 @@
- +
Date: Tue, 29 Mar 2022 16:52:03 +0700 Subject: [PATCH 6/8] =?UTF-8?q?=D0=A1=D0=BA=D1=80=D1=8B=D0=BB=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=80=D0=B5=D0=B2=D1=88=D0=B8=D0=B9=20=D1=87?= =?UTF-8?q?=D0=B5=D0=BA=D0=B1=D0=BE=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/SettingsPage/OthersTab.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/components/Reader/SettingsPage/OthersTab.inc b/client/components/Reader/SettingsPage/OthersTab.inc index 6dd91fd5..9d5964d5 100644 --- a/client/components/Reader/SettingsPage/OthersTab.inc +++ b/client/components/Reader/SettingsPage/OthersTab.inc @@ -52,7 +52,7 @@
-
+
Другое
From 5c48ca9e6c6ac8939fbed029c6f82ad5c0e91ebc Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 29 Mar 2022 17:37:24 +0700 Subject: [PATCH 7/8] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20versionHistory,=20=D0=BD=D0=B5=D0=B1?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D1=88=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VersionHistoryPage/VersionHistoryPage.vue | 9 +- .../Reader/LoaderPage/LoaderPage.vue | 4 +- client/components/Reader/Reader.vue | 4 +- .../Reader/ReaderDialogs/ReaderDialogs.vue | 34 ++-- client/components/Reader/versionHistory.js | 183 ++++++++++++++---- package.json | 2 +- 6 files changed, 170 insertions(+), 66 deletions(-) diff --git a/client/components/Reader/HelpPage/VersionHistoryPage/VersionHistoryPage.vue b/client/components/Reader/HelpPage/VersionHistoryPage/VersionHistoryPage.vue index 95df0a40..7fd4876f 100644 --- a/client/components/Reader/HelpPage/VersionHistoryPage/VersionHistoryPage.vue +++ b/client/components/Reader/HelpPage/VersionHistoryPage/VersionHistoryPage.vue @@ -33,14 +33,15 @@ class VersionHistoryPage { mounted() { let vh = []; - for (const version of versionHistory) { - vh.push(version.header); + for (const v of versionHistory) { + vh.push(`${v.version} (${v.releaseDate})`); } this.versionHeader = vh; let vc = []; - for (const version of versionHistory) { - vc.push({key: version.header, content: 'Версия ' + version.header + version.content}); + for (const v of versionHistory) { + let header = `${v.version} (${v.releaseDate})`; + vc.push({key: header, content: 'Версия ' + header + v.content}); } this.versionContent = vc; } diff --git a/client/components/Reader/LoaderPage/LoaderPage.vue b/client/components/Reader/LoaderPage/LoaderPage.vue index 7dcdb15a..831722e9 100644 --- a/client/components/Reader/LoaderPage/LoaderPage.vue +++ b/client/components/Reader/LoaderPage/LoaderPage.vue @@ -114,9 +114,7 @@ class LoaderPage { } get clientVersion() { - let v = versionHistory[0].header; - v = v.split(' ')[0]; - return v; + return versionHistory[0].version; } submitUrl() { diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index e6ea41cc..6fbe1c22 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -525,9 +525,7 @@ class Reader { } get clientVersion() { - let v = versionHistory[0].header; - v = v.split(' ')[0]; - return v; + return versionHistory[0].version; } get routeParamUrl() { diff --git a/client/components/Reader/ReaderDialogs/ReaderDialogs.vue b/client/components/Reader/ReaderDialogs/ReaderDialogs.vue index 13f84d2d..52f64320 100644 --- a/client/components/Reader/ReaderDialogs/ReaderDialogs.vue +++ b/client/components/Reader/ReaderDialogs/ReaderDialogs.vue @@ -5,12 +5,17 @@ Что нового: -
+
+
+
- Посмотреть историю версий - - Больше не показывать - + Посмотреть историю версий + + @@ -55,11 +60,13 @@
- +
@@ -112,9 +119,9 @@ class ReaderDialogs { const whatsNew = versionHistory[0]; if (this.showWhatsNewDialog && whatsNew.showUntil >= utils.formatDate(new Date(), 'coDate') && - whatsNew.header != this.whatsNewContentHash) { + this.whatsNewHeader != this.whatsNewContentHash) { await utils.sleep(2000); - this.whatsNewContent = 'Версия ' + whatsNew.header + whatsNew.content; + this.whatsNewContent = 'Версия ' + this.whatsNewHeader + whatsNew.content; this.whatsNewVisible = true; } } @@ -160,8 +167,11 @@ class ReaderDialogs { whatsNewDisable() { this.whatsNewVisible = false; - const whatsNew = versionHistory[0]; - this.commit('reader/setWhatsNewContentHash', whatsNew.header); + this.commit('reader/setWhatsNewContentHash', this.whatsNewHeader); + } + + get whatsNewHeader() { + return `${versionHistory[0].version} (${versionHistory[0].releaseDate})`; } get mode() { diff --git a/client/components/Reader/versionHistory.js b/client/components/Reader/versionHistory.js index 9a6ba551..583b5f2e 100644 --- a/client/components/Reader/versionHistory.js +++ b/client/components/Reader/versionHistory.js @@ -1,73 +1,99 @@ export const versionHistory = [ { + version: '0.11.3', + releaseDate: '2022-03-29', + showUntil: '2022-04-10', + content: +` +
    +
  • исправления багов
  • +
+ +` +}, + +{ + version: '0.11.2', + releaseDate: '2022-01-11', showUntil: '2022-01-10', - header: '0.11.2 (2022-01-11)', content: `
    -
  • переход на JembaDb вместо SQLite
  • +
  • исправления багов
+ ` }, { + version: '0.11.1', + releaseDate: '2021-12-03', showUntil: '2021-12-02', - header: '0.11.1 (2021-12-03)', content: `
  • переход на JembaDb вместо SQLite
+ ` }, { + version: '0.11.0', + releaseDate: '2021-11-18', showUntil: '2021-11-17', - header: '0.11.0 (2021-11-18)', content: `
  • переход на Vue 3
+ ` }, { + version: '0.10.3', + releaseDate: '2021-10-24', showUntil: '2021-10-23', - header: '0.10.3 (2021-10-24)', content: `
  • исправления багов
+ ` }, { + version: '0.10.2', + releaseDate: '2021-10-19', showUntil: '2021-10-18', - header: '0.10.2 (2021-10-19)', content: `
  • актуализация версий пакетов и стека используемых технологий
+ ` }, { + version: '0.10.1', + releaseDate: '2021-10-10', showUntil: '2021-10-09', - header: '0.10.1 (2021-10-10)', content: `
  • исправления багов
+ ` }, { + version: '0.10.0', + releaseDate: '2021-02-09', showUntil: '2021-02-16', - header: '0.10.0 (2021-02-09)', content: `
    @@ -76,12 +102,14 @@ export const versionHistory = [
  • в настройки добавлена возможность загрузки пользовательских обоев (пока без синхронизации)
  • немного улучшен парсинг fb2
+ ` }, { + version: '0.9.12', + releaseDate: '2020-12-18', showUntil: '2020-12-17', - header: '0.9.12 (2020-12-18)', content: `
    @@ -90,23 +118,27 @@ export const versionHistory = [
  • добавлена кнопка для быстрого доступа к настройкам конвертирования
  • улучшения работы конвертеров
+ ` }, { + version: '0.9.11', + releaseDate: '2020-12-09', showUntil: '2020-12-08', - header: '0.9.11 (2020-12-09)', content: `
  • оптимизации, улучшения работы конвертеров
+ ` }, { + version: '0.9.10', + releaseDate: '2020-12-03', showUntil: '2020-12-10', - header: '0.9.10 (2020-12-03)', content: `
    @@ -114,69 +146,81 @@ export const versionHistory = [
  • добавлена поддержка Rar-архивов
  • исправления багов
+ ` }, { + version: '0.9.9', + releaseDate: '2020-11-21', showUntil: '2020-11-20', - header: '0.9.9 (2020-11-21)', content: `
  • оптимизации, исправления багов
+ ` }, { + version: '0.9.8', + releaseDate: '2020-11-13', showUntil: '2020-11-12', - header: '0.9.8 (2020-11-13)', content: `
  • добавлено окно "Оглавление/закладки"
+ ` }, { + version: '0.9.7', + releaseDate: '2020-11-12', showUntil: '2020-11-11', - header: '0.9.7 (2020-11-12)', content: `
  • исправления багов
+ ` }, { + version: '0.9.6', + releaseDate: '2020-11-06', showUntil: '2020-11-05', - header: '0.9.6 (2020-11-06)', content: `
  • завершена работа над новым окном "Библиотека"
  • исправления багов
+ ` }, { + version: '0.9.5', + releaseDate: '2020-11-01', showUntil: '2020-10-31', - header: '0.9.5 (2020-11-01)', content: `
  • на панель инструментов добавлена новая кнопка "Обновить с разбиением на параграфы"
  • исправления багов
+ ` }, { + version: '0.9.4', + releaseDate: '2020-10-29', showUntil: '2020-10-28', - header: '0.9.4 (2020-10-29)', content: `
    @@ -184,23 +228,27 @@ export const versionHistory = [
  • для liberama.top добавлено новое окно: "Библиотека"
  • исправления багов
+ ` }, { + version: '0.9.3', + releaseDate: '2020-05-21', showUntil: '2020-05-20', - header: '0.9.3 (2020-05-21)', content: `
  • исправления багов
+ ` }, { + version: '0.9.2', + releaseDate: '2020-03-15', showUntil: '2020-04-25', - header: '0.9.2 (2020-03-15)', content: `
    @@ -208,119 +256,139 @@ export const versionHistory = [
  • переход на Service Worker вместо AppCache для автономного режима работы
  • исправления багов
+ ` }, { + version: '0.9.1', + releaseDate: '2020-03-03', showUntil: '2020-03-02', - header: '0.9.1 (2020-03-03)', content: `
  • улучшение работы серверной части
  • незначительные изменения интерфейса
+ ` }, { + version: '0.9.0', + releaseDate: '2020-02-26', showUntil: '2020-02-25', - header: '0.9.0 (2020-02-26)', content: `
  • переход на UI-фреймфорк Quasar
  • незначительные изменения интерфейса
+ ` }, { + version: '0.8.4', + releaseDate: '2020-02-06', showUntil: '2020-02-05', - header: '0.8.4 (2020-02-06)', content: `
  • добавлен paypal-адрес для пожертвований
  • исправления багов
+ ` }, { + version: '0.8.3', + releaseDate: '2020-01-28', showUntil: '2020-01-27', - header: '0.8.3 (2020-01-28)', content: `
  • добавлено всплывающее окно с акцией "Оплатим хостинг вместе"
  • внутренние оптимизации
+ ` }, { + version: '0.8.2', + releaseDate: '2020-01-20', showUntil: '2020-01-19', - header: '0.8.2 (2020-01-20)', content: `
  • внутренние оптимизации
+ ` }, { + version: '0.8.1', + releaseDate: '2020-01-07', showUntil: '2020-01-06', - header: '0.8.1 (2020-01-07)', content: `
  • добавлена частичная поддержка формата FB3
  • исправлен баг "Request path contains unescaped characters"
+ ` }, { + version: '0.8.0', + releaseDate: '2020-01-02', showUntil: '2020-01-05', - header: '0.8.0 (2020-01-02)', content: ` + ` }, { + version: '0.7.9', + releaseDate: '2019-11-27', showUntil: '2019-11-26', - header: '0.7.9 (2019-11-27)', content: `
  • добавлен неубираемый баннер для http-версии о переходе на httpS
  • исправления багов
+ ` }, { + version: '0.7.8', + releaseDate: '2019-11-25', showUntil: '2019-11-24', - header: '0.7.8 (2019-11-25)', content: `
  • улучшение html-фильтров для сайтов
  • исправления багов
+ ` }, { + version: '0.7.7', + releaseDate: '2019-11-06', showUntil: '2019-11-10', - header: '0.7.7 (2019-11-06)', content: `
    @@ -332,34 +400,40 @@ export const versionHistory = [
  • от центра влево: уменьшить скорость скроллинга
+ ` }, { + version: '0.7.6', + releaseDate: '2019-10-30', showUntil: '2019-10-29', - header: '0.7.6 (2019-10-30)', content: `
  • исправления багов
+ ` }, { + version: '0.7.5', + releaseDate: '2019-10-22', showUntil: '2019-10-21', - header: '0.7.5 (2019-10-22)', content: `
  • исправления багов
+ ` }, { + version: '0.7.3', + releaseDate: '2019-10-18', showUntil: '2019-10-17', - header: '0.7.3 (2019-10-18)', content: `
    @@ -368,12 +442,14 @@ export const versionHistory = [
  • добавлен параметр "Включить html-фильтр для сайтов" в раздел "Вид"->"Текст" в настройках
  • исправления багов
+ ` }, { + version: '0.7.1', + releaseDate: '2019-09-20', showUntil: '2019-09-19', - header: '0.7.1 (2019-09-20)', content: `
    @@ -381,12 +457,14 @@ export const versionHistory = [
  • на панель управления добавлена кнопка "Автономный режим"
  • актуализирована справка
+ ` }, { + version: '0.7.0', + releaseDate: '2019-09-07', showUntil: '2019-10-01', - header: '0.7.0 (2019-09-07)', content: `
    @@ -397,23 +475,27 @@ export const versionHistory = [
  • немного улучшен внешний вид и управление на смартфонах
  • добавлен параметр "Компактность" в раздел "Вид"->"Текст" в настройках
+ ` }, { + version: '0.6.10', + releaseDate: '2019-07-21', showUntil: '2019-07-20', - header: '0.6.10 (2019-07-21)', content: `
  • исправления багов
+ ` }, { + version: '0.6.9', + releaseDate: '2019-06-23', showUntil: '2019-06-22', - header: '0.6.9 (2019-06-23)', content: `
    @@ -424,12 +506,14 @@ export const versionHistory = [
  • улучшены прогрессбары
  • исправления недочетов, небольшие оптимизации
+ ` }, { + version: '0.6.7', + releaseDate: '2019-05-30', showUntil: '2019-06-05', - header: '0.6.7 (2019-05-30)', content: `
    @@ -442,36 +526,42 @@ export const versionHistory = [
  • добавлен GET-параметр вида "/reader?__pp=50.5&url=..." для указания позиции в книге в процентах
  • исправления багов и недочетов
+ ` }, { + version: '0.6.6', + releaseDate: '2019-03-29', showUntil: '2019-03-29', - header: '0.6.6 (2019-03-29)', content: `
  • в справку добавлено описание настройки браузеров для автономной работы читалки (без доступа к интернету)
  • оптимизации процесса синхронизации, внутренние переделки
+ ` }, { + version: '0.6.4', + releaseDate: '2019-03-24', showUntil: '2019-03-24', - header: '0.6.4 (2019-03-24)', content: `
  • исправления багов, оптимизации
  • добавлена возможность синхронизации данных между устройствами
+ ` }, { + version: '0.5.4', + releaseDate: '2019-03-04', showUntil: '2019-03-04', - header: '0.5.4 (2019-03-04)', content: `
    @@ -480,12 +570,14 @@ export const versionHistory = [
  • (0.4.2) фильтр для СИ больше не вырезает изображения
  • (0.4.0) добавлено отображение картинок в fb2
+ ` }, { + version: '0.3.0', + releaseDate: '2019-02-17', showUntil: '2019-02-17', - header: '0.3.0 (2019-02-17)', content: `
    @@ -493,12 +585,14 @@ export const versionHistory = [
  • улучшено распознавание текста
  • изменена верстка страницы - убрано позиционирование каждого слова
+ ` }, { + version: '0.1.7', + releaseDate: '2019-02-14', showUntil: '2019-02-14', - header: '0.1.7 (2019-02-14)', content: `
    @@ -508,17 +602,20 @@ export const versionHistory = [
  • добавлена возможность сброса настроек
  • убран автоматический редирект на последнюю загруженную книгу, если не задан url в маршруте
+ ` }, { + version: '0.1.0', + releaseDate: '2019-02-12', showUntil: '2019-02-12', - header: '0.1.0 (2019-02-12)', content: `
  • первый деплой проекта, длительность разработки - 2 месяца
+ ` }, diff --git a/package.json b/package.json index 139d548c..dcfffac9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Liberama", - "version": "0.11.2", + "version": "0.11.3", "author": "Book Pauk ", "license": "CC0-1.0", "repository": "bookpauk/liberama", From 53135e7ee8ec00bb6a71b820e780c1160e764da6 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 29 Mar 2022 17:40:29 +0700 Subject: [PATCH 8/8] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=B0=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/versionHistory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/components/Reader/versionHistory.js b/client/components/Reader/versionHistory.js index 583b5f2e..8960de53 100644 --- a/client/components/Reader/versionHistory.js +++ b/client/components/Reader/versionHistory.js @@ -2,7 +2,7 @@ export const versionHistory = [ { version: '0.11.3', releaseDate: '2022-03-29', - showUntil: '2022-04-10', + showUntil: '2022-03-28', content: `