diff --git a/CHANGES.md b/CHANGES.md index 6222f93c2..0637a7a00 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,14 @@ #### Bug fixes +### Version 2026.09.03-0 + +#### Features + +#### Bug fixes + +* Fixes an issue with uploading PNG files to a manuscript. + ### Version 2026.08.13-0 #### Features diff --git a/package.json b/package.json index 5dfd37c9f..cfb409792 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kotahi", - "version": "2026.09.02-1", + "version": "2026.09.02-2", "private": true, "description": "Kotahi - open journals", "repository": { diff --git a/packages/client/app/components/component-submit/src/components/SubmitPage.jsx b/packages/client/app/components/component-submit/src/components/SubmitPage.jsx index 06c1fdc0f..46831b31e 100644 --- a/packages/client/app/components/component-submit/src/components/SubmitPage.jsx +++ b/packages/client/app/components/component-submit/src/components/SubmitPage.jsx @@ -69,20 +69,17 @@ const SubmitPage = () => { const decisionPurpose = 'decision' const reviewPurpose = 'review' - const { data, loading, error } = useQuery( - USER_MANUSCRIPT, - { - variables: { - id: params.version, - groupId: config.groupId, - submitPurpose, - decisionPurpose, - reviewPurpose, - }, - partialRefetch: true, + const { data, loading, error } = useQuery(USER_MANUSCRIPT, { + variables: { + id: params.version, + groupId: config.groupId, + submitPurpose, + decisionPurpose, + reviewPurpose, }, - { refetchOnMount: true }, - ) + // stops screen flickering (and losing local UI state, e.g. active tab) when other queries touch overlapping cache entities + notifyOnNetworkStatusChange: false, + }) let channelId diff --git a/packages/client/app/start.js b/packages/client/app/start.js index cd43d7ee7..0f2ec220b 100644 --- a/packages/client/app/start.js +++ b/packages/client/app/start.js @@ -88,6 +88,31 @@ const cacheConfig = { return incoming }, }, + storedObjects: { + // storedObjects entries have no `id`, so Apollo can't normalize + // them individually. Different queries (e.g. the manuscript + // query vs the asset manager's file list query) select different + // subsets of storedObjects fields, keyed by `type`. Without this + // merge, whichever query writes last wins outright and silently + // drops fields the other query needs, forcing it to refetch. + merge(existing = [], incoming = []) { + const merged = [...existing] + + incoming.forEach(incomingItem => { + const index = merged.findIndex( + item => item.type === incomingItem.type, + ) + + if (index > -1) { + merged[index] = { ...merged[index], ...incomingItem } + } else { + merged.push(incomingItem) + } + }) + + return merged + }, + }, }, }, }, diff --git a/packages/client/package.json b/packages/client/package.json index f13cc45bc..7eb605519 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "kotahi", - "version": "2026.09.02-1", + "version": "2026.09.02-2", "private": true, "description": "Kotahi - open journals", "repository": { @@ -83,9 +83,9 @@ "split-pane-react": "^0.1.3", "striptags": "^3.1.1", "styled-components": "^6.4.1", - "wax-prosemirror-core": "0.10.2", - "wax-prosemirror-services": "0.10.2", - "wax-table-service": "0.10.2", + "wax-prosemirror-core": "0.10.3", + "wax-prosemirror-services": "0.10.3", + "wax-table-service": "0.10.3", "y-prosemirror": "1.2.0", "y-protocols": "1.0.5", "y-textarea": "^1.0.0", diff --git a/packages/client/yarn.lock b/packages/client/yarn.lock index 7e868e106..465f1c6fc 100644 --- a/packages/client/yarn.lock +++ b/packages/client/yarn.lock @@ -5431,9 +5431,9 @@ __metadata: storybook: "npm:^10.4.6" striptags: "npm:^3.1.1" styled-components: "npm:^6.4.1" - wax-prosemirror-core: "npm:0.10.2" - wax-prosemirror-services: "npm:0.10.2" - wax-table-service: "npm:0.10.2" + wax-prosemirror-core: "npm:0.10.3" + wax-prosemirror-services: "npm:0.10.3" + wax-table-service: "npm:0.10.3" y-prosemirror: "npm:1.2.0" y-protocols: "npm:1.0.5" y-textarea: "npm:^1.0.0" @@ -8492,9 +8492,9 @@ __metadata: languageName: node linkType: hard -"wax-prosemirror-core@npm:0.10.2, wax-prosemirror-core@npm:^0.10.2": - version: 0.10.2 - resolution: "wax-prosemirror-core@npm:0.10.2" +"wax-prosemirror-core@npm:0.10.3, wax-prosemirror-core@npm:^0.10.3": + version: 0.10.3 + resolution: "wax-prosemirror-core@npm:0.10.3" dependencies: crypto-js: "npm:^4.2.0" deepmerge: "npm:^4.2.2" @@ -8523,13 +8523,13 @@ __metadata: react: ^19.2.6 react-dom: ^19.2.6 styled-components: ^6.4.1 - checksum: 10c0/10d68c966242614ca4e1bce87f8bd80fc29e7e819a29202e01541351917bcebdb89b122ab81be96b6047af7342bce310062d7de22d65b7ad1e17db25e8911b52 + checksum: 10c0/83c28496cfd9383a1676a7e508cd918cb913219c8d61209dd5cb2aeec69bc1cfbe8bc7c9437f028f14759b3ccbb22d6721d190651ec8bea5befbcb51d8bca4f3 languageName: node linkType: hard -"wax-prosemirror-services@npm:0.10.2": - version: 0.10.2 - resolution: "wax-prosemirror-services@npm:0.10.2" +"wax-prosemirror-services@npm:0.10.3": + version: 0.10.3 + resolution: "wax-prosemirror-services@npm:0.10.3" dependencies: highlight.js: "npm:^10.1.1" inversify: "npm:^5.0.1" @@ -8552,7 +8552,7 @@ __metadata: react-i18next: "npm:^13.3.1" use-deep-compare-effect: "npm:^1.3.1" uuid: "npm:^7.0.3" - wax-prosemirror-core: "npm:^0.10.2" + wax-prosemirror-core: "npm:^0.10.3" y-prosemirror: "npm:1.2.0" y-protocols: "npm:1.0.5" y-webrtc: "npm:10.2.0" @@ -8563,13 +8563,13 @@ __metadata: react: ^19.2.6 react-dom: ^19.2.6 styled-components: ^6.4.1 - checksum: 10c0/c3b3773a35bb1eeb24e8afaab2c547304caf449714501e356900530d48c1b7e22a3491d51626f1f49f056124d4a19b581dc31854c709e45a8aa3d55649a0cc44 + checksum: 10c0/08f7a2e22b0d7732b10dcb12baf2e018ce96787bcab6a3322c88ff1183457a5adcfb98d10784327baf0856c420158ec3626f9cae427d124ea822af481ab6cd69 languageName: node linkType: hard -"wax-table-service@npm:0.10.2": - version: 0.10.2 - resolution: "wax-table-service@npm:0.10.2" +"wax-table-service@npm:0.10.3": + version: 0.10.3 + resolution: "wax-table-service@npm:0.10.3" dependencies: inversify: "npm:^5.0.1" lodash: "npm:^4.17.4" @@ -8579,13 +8579,13 @@ __metadata: prosemirror-view: "npm:1.30.2" react-i18next: "npm:^13.3.1" uuid: "npm:^7.0.3" - wax-prosemirror-core: "npm:^0.10.2" + wax-prosemirror-core: "npm:^0.10.3" peerDependencies: i18next: ^23.6.0 react: ^19.2.6 react-dom: ^19.2.6 styled-components: ^6.4.1 - checksum: 10c0/c0db173cb8863a3be629102e99b6f8e4e9d2c094237e9878fa2e5c18e7f95053ffe3388078d71ae133d9e6b09b69afff56922350bba30f269597cd37e5d67338 + checksum: 10c0/8dc768a926afdc33ffd0cbd79437c644aa5c4084d2f1d85b49ee6985716c9b45da83ef8c73b64fb516252d0a10839dcf57f61bc755e95deff04dd5fcd390faec languageName: node linkType: hard diff --git a/packages/server/package.json b/packages/server/package.json index 391989a47..e14ea410b 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "kotahi", - "version": "2026.09.02-1", + "version": "2026.09.02-2", "private": true, "description": "Kotahi - open journals", "repository": {