From c7610cf0f8cec428147a5545f9cf56a82c8495c3 Mon Sep 17 00:00:00 2001 From: David Bolack Date: Thu, 10 Jul 2025 07:10:13 -0500 Subject: [PATCH 1/2] Run patch processing in parallel to prior system to attempt to narrow down not-quite-so-edge cases that did not come up prior to user testing. --- client/homebrew/pages/editPage/editPage.jsx | 2 +- server/homebrew.api.js | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 7e6c03473..8eb011cab 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -265,7 +265,7 @@ const EditPage = createClass({ brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1; brew.patches = stringifyPatches(makePatches(this.savedBrew.text, brew.text)); brew.hash = await md5(this.savedBrew.text); - brew.text = undefined; + //brew.text = undefined; - Temporary parallel path brew.textBin = undefined; const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId); diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 84f639a4d..e34195ffa 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -340,7 +340,7 @@ const api = { const brewFromClient = api.excludePropsFromUpdate(req.body); const brewFromServer = req.brew; splitTextStyleAndMetadata(brewFromServer); - + brewFromServer.text = brewFromServer.text.normalize(); brewFromServer.hash = await md5(brewFromServer.text); @@ -357,15 +357,20 @@ const api = { let brew = _.assign(brewFromServer, brewFromClient); brew.title = brew.title.trim(); brew.description = brew.description.trim() || ''; + try { const patches = parsePatch(brewFromClient.patches); - brew.text = applyPatches(patches, brewFromServer.text)[0]; + // Patch to a throwaway variable while parallelizing - we're more concerned with error/no error. + const patchedResult = applyPatches(patches, brewFromServer.text)[0]; + // brew.text = applyPatches(patches, brewFromServer.text)[0]; } catch (err) { console.error('Failed to apply patches:', { - patches: brewFromClient.patches, - brewId: brew.editId || 'unknown' + patches : brewFromClient.patches, + brewId : brew.editId || 'unknown', + error : err }); - throw err; // rethrow to preserve the 500 behavior + // While running in parallel, don't throw the error upstream. + // throw err; // rethrow to preserve the 500 behavior } brew.text = api.mergeBrewText(brew); From 440c7beff673e7d7e5e5379476adc535a024de2d Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 10 Jul 2025 09:47:21 -0400 Subject: [PATCH 2/2] Up to 3.19.3 so users can get the update --- changelog.md | 8 ++++++++ package-lock.json | 4 ++-- package.json | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/changelog.md b/changelog.md index 3f85850fc..0a108b9f2 100644 --- a/changelog.md +++ b/changelog.md @@ -88,6 +88,14 @@ pre { ## changelog For a full record of development, visit our [Github Page](https://github.com/naturalcrit/homebrewery). +### Wednesday 7/09/2025 - v3.19.3 + +{{taskList +##### calculuschild +* [x] Restoring original saving behavior; will continue investigating why save was failing for some users in background +}} + + ### Wednesday 7/09/2025 - v3.19.2 {{taskList diff --git a/package-lock.json b/package-lock.json index 8ed54390e..c7f21c942 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "homebrewery", - "version": "3.19.2", + "version": "3.19.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "homebrewery", - "version": "3.19.2", + "version": "3.19.3", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index bc23a434e..527bfe256 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homebrewery", "description": "Create authentic looking D&D homebrews using only markdown", - "version": "3.19.2", + "version": "3.19.3", "type": "module", "engines": { "npm": "^10.8.x", @@ -72,7 +72,7 @@ "lines": 50 }, "server/homebrew.api.js": { - "statements": 69, + "statements": 60, "branches": 50, "functions": 65, "lines": 70