diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 5131532..dcf2ef3 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,15 @@ # Release Notes +## Release 1.1.0 - 2026-10-30 + +- Display opportunities first, then load Service Requests and update their badges in the background. +- Clicking an item when all filter choices are selected now selects that item alone, including Booking and Workload. +- Added a bookmark shortcut that opens the extension automatically from Fusion. +- Ctrl+Shift+F opens a searchable bookmarks folder picker; Ctrl+Shift+D toggles Debug Requests. +- Show a prominent favorites shortcut hint for 20 seconds when the shortcut is not bookmarked; keep Last update first in the header. +- Smaller dialogs can be dragged by their title bars, with up to 70% overflow beyond viewport edges. +- Updated Chromium/Edge and Firefox builds. Automated validation uses synthetic data; live Oracle and installed-browser testing are not included. + ## Release 1.0.9 - 2026-10-28 - Added a landscape print/PDF view with filters, totals, and opportunities. diff --git a/dist/chromium/manifest.json b/dist/chromium/manifest.json index a06526f..9d9d950 100644 --- a/dist/chromium/manifest.json +++ b/dist/chromium/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "Opportunities Extension", "description": "Adiciona um atalho de Opportunities Extension nas paginas Oracle Fusion permitidas.", - "version": "1.0.9", + "version": "1.1.0", "permissions": [ "bookmarks", "cookies", diff --git a/dist/firefox/manifest.json b/dist/firefox/manifest.json index 3af6778..b7f82ed 100644 --- a/dist/firefox/manifest.json +++ b/dist/firefox/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "Opportunities Extension", "description": "Adiciona um atalho de Opportunities Extension nas paginas Oracle Fusion permitidas.", - "version": "1.0.9", + "version": "1.1.0", "permissions": [ "bookmarks", "cookies", diff --git a/package.json b/package.json index 9d22766..bae8b08 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opportunities-extension", - "version": "1.0.9", + "version": "1.1.0", "private": true, "type": "module", "scripts": { diff --git a/scripts/build.mjs b/scripts/build.mjs index 3c24cda..eb3dfc6 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -16,7 +16,7 @@ const baseManifest = { manifest_version: 3, name: "Opportunities Extension", description: "Adiciona um atalho de Opportunities Extension nas paginas Oracle Fusion permitidas.", - version: "1.0.9", + version: "1.1.0", permissions: [ "bookmarks", "cookies", diff --git a/tests/architecture.test.cjs b/tests/architecture.test.cjs index cf2a1fd..e355f0c 100644 --- a/tests/architecture.test.cjs +++ b/tests/architecture.test.cjs @@ -14,7 +14,7 @@ const json = value => JSON.parse(JSON.stringify(value)); test("every source belongs to an explicit runtime composition, with no duplicate factories", () => { const actual = fs.readdirSync(path.join(root, "src"), { recursive: true }) .filter(file => file.endsWith(".js")).map(file => `src/${file.replaceAll(path.sep, "/")}`).sort(); - assert.deepEqual([...new Set([...Object.values(sources).flat(), ...Object.values(vendorSources).flat()])].sort(), actual); + assert.deepEqual([...new Set(["src/content/shortcut-intent.js", ...Object.values(sources).flat(), ...Object.values(vendorSources).flat()])].sort(), actual); for (const files of Object.values(vendorSources)) { for (const file of files) { assert.doesNotThrow(() => new vm.Script(read(file))); diff --git a/tests/characterization.test.cjs b/tests/characterization.test.cjs index 9c793e0..4619e4b 100644 --- a/tests/characterization.test.cjs +++ b/tests/characterization.test.cjs @@ -40,7 +40,7 @@ test("distribution contracts: manifests, execution boundaries and deterministic const base = { manifest_version: 3, name: "Opportunities Extension", description: "Adiciona um atalho de Opportunities Extension nas paginas Oracle Fusion permitidas.", - version: "1.0.9", permissions: ["bookmarks", "cookies", "storage", "webRequest", "declarativeNetRequestWithHostAccess"], + version: "1.1.0", permissions: ["bookmarks", "cookies", "storage", "webRequest", "declarativeNetRequestWithHostAccess"], host_permissions: ["https://eeho.fa.us2.oraclecloud.com/*", "https://spa.oracle.com/*", "https://comcipapic-oalprod.integration.ocp.oraclecloud.com/*"], content_scripts: [{ matches: ["https://eeho.fa.us2.oraclecloud.com/hcmUI/faces/FuseWelcome*", "https://eeho.fa.us2.oraclecloud.com/fscmUI/faces/FuseWelcome*"], diff --git a/tests/currentUser.test.cjs b/tests/currentUser.test.cjs index 47adc3f..1c50bc0 100644 --- a/tests/currentUser.test.cjs +++ b/tests/currentUser.test.cjs @@ -194,7 +194,7 @@ for (const [roles, allowed] of [[ ["SALES_REP", "SIMPLE_USER"], false ], [ ["SOL assert.equal(same, app.currentUser.ensure()); finish({ ok: true, user: { ...validIdentity.user, roles } }); await first; - assert.deepEqual(calls, [type, "tokenrelay", "opportunities"]); + assert.deepEqual(calls, [type, "tokenrelay", "opportunities", ...(allowed ? ["crm"] : [])]); app.productsContentState.currentProductsRequestId = "products-cycle"; app.productActivities.begin("products-cycle", "synthetic"); const products = { items: [{ RevnId: "123" }] };