summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/dependabot.yml14
-rw-r--r--.github/workflows/ci.yml9
-rw-r--r--.github/workflows/create-prerelease-on-tag.yml2
-rw-r--r--.github/workflows/playwright.yml9
-rw-r--r--.gitignore1
-rw-r--r--CONTRIBUTING.md10
-rw-r--r--README.md2
-rw-r--r--dev/build.js12
-rw-r--r--dev/data/manifest-variants.json2
-rw-r--r--ext/manifest.json131
-rw-r--r--package-lock.json28
-rw-r--r--package.json4
12 files changed, 54 insertions, 170 deletions
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 0bbc7cb8..0d2b9bb0 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -6,6 +6,13 @@ updates:
interval: "weekly"
labels:
- "area/dependencies"
+ groups: # group minor/patch updates together
+ minor:
+ patterns:
+ - "*"
+ update-types:
+ - "minor"
+ - "patch"
- package-ecosystem: "npm"
directory: "/"
@@ -13,3 +20,10 @@ updates:
interval: "weekly"
labels:
- "area/dependencies"
+ groups: # group minor/patch updates together
+ minor:
+ patterns:
+ - "*"
+ update-types:
+ - "minor"
+ - "patch"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c62c9893..1b81df2f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -41,16 +41,11 @@ jobs:
env:
CI: true
- - name: Manifest
- run: npm run test-manifest
- env:
- CI: true
+ - name: Build
+ run: npm run build
- name: Validate manifest.json of the extension
uses: cardinalby/schema-validator-action@c2da05377e89dd0c9b7be9420da0b3534b1efcce # pin@v1
with:
file: ext/manifest.json
schema: "https://json.schemastore.org/chrome-manifest.json"
-
- - name: Build
- run: npm run test-build
diff --git a/.github/workflows/create-prerelease-on-tag.yml b/.github/workflows/create-prerelease-on-tag.yml
index 06cb8c7e..0999c5ec 100644
--- a/.github/workflows/create-prerelease-on-tag.yml
+++ b/.github/workflows/create-prerelease-on-tag.yml
@@ -21,7 +21,7 @@ jobs:
node-version-file: ".node-version"
- name: Lint
- run: npm run-script build
+ run: npm run-script build -- --yomitan-version ${{ github.ref_name }}
shell: bash
- name: Release
diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml
index a1135157..8efc184a 100644
--- a/.github/workflows/playwright.yml
+++ b/.github/workflows/playwright.yml
@@ -14,13 +14,13 @@ jobs:
run: rm -rf /usr/share/fonts
- uses: actions/checkout@v3
-
+
- name: Install CJK fonts
uses: awalsh128/cache-apt-pkgs-action@1850ee53f6e706525805321a3f2f863dcf73c962 # v1.3.0
with:
packages: fonts-ipafont-mincho
execute_install_scripts: true
-
+
- uses: actions/setup-node@v3
with:
cache: "npm"
@@ -29,6 +29,9 @@ jobs:
- name: Install dependencies
run: npm ci
+ - name: Build
+ run: npm run build
+
- name: Cache playwright browsers
id: cache-playwright
uses: actions/cache@v3
@@ -40,7 +43,7 @@ jobs:
- if: ${{ steps.cache-playwright.outputs.cache-hit != 'true' }}
name: Install Playwright Browsers
run: npx playwright install chromium
-
+
- name: Grab latest dictionaries from dictionaries branch
uses: actions/checkout@v3
with:
diff --git a/.gitignore b/.gitignore
index d4e5da07..405fead0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ dictionaries/
/playwright-report/
/playwright/.cache/
/test/playwright/__screenshots__/
+ext/manifest.json
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ffc76b74..b67f6092 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -50,9 +50,10 @@ Several command line arguments are available for these scripts:
* `[target]` - Builds a specific target.
* `--all` - Builds all targets specified in [manifest-variants.json](dev/data/manifest-variants.json).
* `--default` - Restores the default manifest file.
-* `--manifest <target>` - Overwrites [ext/manifest.json](ext/manifest.json) with the manifest variant for the specified build target.
+* `--manifest <target>` - Overwrites `ext/manifest.json` with the manifest variant for the specified build target.
* `--dry-run` - Runs the full build process (excluding zip building), checking that the configuration is valid.
* `--dry-run-build-zip` - If `--dry-run` is also specified, zip building will also be performed in memory; no files are created.
+* `--yomitan-version <version>` - Sets the version number in the extension manifest. Defaults to 0.0.0.0 if not set.
If no arguments are specified, the command is equivalent to `build.bat --all`.
@@ -66,11 +67,8 @@ Otherwise, the [JSZip](https://stuk.github.io/jszip/) API is used to generate th
## Manifest
Manifest variants for different build targets are specified in [manifest-variants.json](dev/data/manifest-variants.json).
-This file is used to overwrite the [manfiest.json](ext/manifest.json) file included in the extension.
-By default, this manifest should be the default `chrome` manifest, and changes to [manfiest.json](ext/manifest.json) should not be committed
-unless there is a corresponding change in [manifest-variants.json](dev/data/manifest-variants.json).
-There is a continuous integration test which validates this, and the default manifest can be restored by running
-`build.bat --default`.
+This file is used to generate the `ext/manifest.json` file included in the extension.
+The generated `ext/manfiest.json` should not be committed.
## Style
diff --git a/README.md b/README.md
index a299368c..e6289d0e 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Yomitan
-[![Chrome Release (Testing)](https://img.shields.io/chrome-web-store/v/likgccmbimhjbgkjambclfkhldnlhbnn?label=chrome%20release%20(testing))](https://chrome.google.com/webstore/detail/yomitan-development-build/glnaenfapkkecknnmginabpmgkenenml)
+[![Chrome Release (Testing)](https://img.shields.io/chrome-web-store/v/glnaenfapkkecknnmginabpmgkenenml?label=chrome%20release%20(testing))](https://chrome.google.com/webstore/detail/yomitan-development-build/glnaenfapkkecknnmginabpmgkenenml)
[![Firefox Release (Testing)](https://img.shields.io/github/v/release/themoeway/yomitan?filter=*&label=firefox%20release%20(testing))](https://github.com/themoeway/yomitan/releases)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/themoeway/yomitan/badge)](https://securityscorecards.dev/viewer/?uri=github.com/themoeway/yomitan)
[![Discord Server](https://dcbadge.vercel.app/api/server/4ysT8qjE?style=flat)](https://discord.gg/4ysT8qjE)\
diff --git a/dev/build.js b/dev/build.js
index 5222c4c8..24b1e2d0 100644
--- a/dev/build.js
+++ b/dev/build.js
@@ -108,7 +108,7 @@ function getIndexOfFilePath(array, item) {
return -1;
}
-async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip) {
+async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip, yomitanVersion) {
const sevenZipExes = ['7za', '7z'];
// Create build directory
@@ -130,6 +130,8 @@ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath,
process.stdout.write(message);
};
+ process.stdout.write(`Version: ${yomitanVersion}...\n`);
+
for (const variantName of variantNames) {
const variant = manifestUtil.getVariant(variantName);
if (typeof variant === 'undefined' || variant.buildable === false) { continue; }
@@ -148,7 +150,7 @@ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath,
const fileNameSafe = path.basename(fileName);
const fullFileName = path.join(buildDir, fileNameSafe);
if (!dryRun) {
- fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(modifiedManifest));
+ fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(modifiedManifest).replace('$YOMITAN_VERSION', yomitanVersion));
}
if (!dryRun || dryRunBuildZip) {
@@ -183,11 +185,13 @@ async function main(argv) {
['manifest', null],
['dry-run', false],
['dry-run-build-zip', false],
+ ['yomitan-version', '0.0.0.0'],
[null, []]
]));
const dryRun = args.get('dry-run');
const dryRunBuildZip = args.get('dry-run-build-zip');
+ const yomitanVersion = args.get('yomitan-version');
const manifestUtil = new ManifestUtil();
@@ -202,14 +206,14 @@ async function main(argv) {
manifestUtil.getVariants().filter(({buildable}) => buildable !== false).map(({name}) => name) :
args.get(null)
);
- await build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip);
+ await build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip, yomitanVersion);
} finally {
// Restore manifest
const manifestName = (!args.get('default') && args.get('manifest') !== null) ? args.get('manifest') : null;
const restoreManifest = manifestUtil.getManifest(manifestName);
process.stdout.write('Restoring manifest...\n');
if (!dryRun) {
- fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(restoreManifest));
+ fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(restoreManifest).replace('$YOMITAN_VERSION', yomitanVersion));
}
}
}
diff --git a/dev/data/manifest-variants.json b/dev/data/manifest-variants.json
index 304a3a0e..26d91d26 100644
--- a/dev/data/manifest-variants.json
+++ b/dev/data/manifest-variants.json
@@ -2,7 +2,7 @@
"manifest": {
"manifest_version": 3,
"name": "Yomitan",
- "version": "23.4.7.0",
+ "version": "$YOMITAN_VERSION",
"description": "Japanese dictionary with Anki integration",
"author": "TheMoeWay",
"icons": {
diff --git a/ext/manifest.json b/ext/manifest.json
deleted file mode 100644
index 018a4a0b..00000000
--- a/ext/manifest.json
+++ /dev/null
@@ -1,131 +0,0 @@
-{
- "manifest_version": 3,
- "name": "Yomitan",
- "version": "23.4.7.0",
- "description": "Japanese dictionary with Anki integration",
- "author": "TheMoeWay",
- "icons": {
- "16": "images/icon16.png",
- "19": "images/icon19.png",
- "32": "images/icon32.png",
- "38": "images/icon38.png",
- "48": "images/icon48.png",
- "64": "images/icon64.png",
- "128": "images/icon128.png"
- },
- "action": {
- "default_icon": {
- "16": "images/icon16.png",
- "19": "images/icon19.png",
- "32": "images/icon32.png",
- "38": "images/icon38.png",
- "48": "images/icon48.png",
- "64": "images/icon64.png",
- "128": "images/icon128.png"
- },
- "default_title": "Yomitan",
- "default_popup": "action-popup.html"
- },
- "background": {
- "service_worker": "sw.js"
- },
- "content_scripts": [
- {
- "run_at": "document_idle",
- "matches": [
- "http://*/*",
- "https://*/*",
- "file://*/*"
- ],
- "match_about_blank": true,
- "all_frames": true,
- "js": [
- "js/core.js",
- "js/yomichan.js",
- "js/app/frontend.js",
- "js/app/popup.js",
- "js/app/popup-factory.js",
- "js/app/popup-proxy.js",
- "js/app/popup-window.js",
- "js/app/theme-controller.js",
- "js/comm/api.js",
- "js/comm/cross-frame-api.js",
- "js/comm/frame-ancestry-handler.js",
- "js/comm/frame-client.js",
- "js/comm/frame-offset-forwarder.js",
- "js/data/sandbox/string-util.js",
- "js/dom/dom-text-scanner.js",
- "js/dom/document-util.js",
- "js/dom/text-source-element.js",
- "js/dom/text-source-range.js",
- "js/input/hotkey-handler.js",
- "js/language/text-scanner.js",
- "js/script/dynamic-loader.js",
- "js/app/content-script-main.js"
- ]
- }
- ],
- "minimum_chrome_version": "96.0.0.0",
- "options_ui": {
- "page": "settings.html",
- "open_in_tab": true
- },
- "sandbox": {
- "pages": [
- "template-renderer.html"
- ]
- },
- "permissions": [
- "storage",
- "clipboardWrite",
- "unlimitedStorage",
- "webRequest",
- "declarativeNetRequest",
- "scripting"
- ],
- "optional_permissions": [
- "clipboardRead",
- "nativeMessaging"
- ],
- "host_permissions": [
- "<all_urls>"
- ],
- "commands": {
- "toggleTextScanning": {
- "suggested_key": {
- "default": "Alt+Delete"
- },
- "description": "Toggle text scanning on/off"
- },
- "openInfoPage": {
- "description": "Open the info page"
- },
- "openSettingsPage": {
- "description": "Open the settings page"
- },
- "openSearchPage": {
- "suggested_key": {
- "default": "Alt+Insert"
- },
- "description": "Open the search page"
- },
- "openPopupWindow": {
- "description": "Open the popup window"
- }
- },
- "web_accessible_resources": [
- {
- "resources": [
- "popup.html",
- "template-renderer.html"
- ],
- "matches": [
- "<all_urls>"
- ]
- }
- ],
- "content_security_policy": {
- "extension_pages": "default-src 'self'; img-src blob: 'self'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *",
- "sandbox": "sandbox allow-scripts; default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'unsafe-inline'"
- }
-}
diff --git a/package-lock.json b/package-lock.json
index 232e2de5..f0ec91b6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,9 +17,9 @@
"eslint": "^8.48.0",
"eslint-plugin-header": "^3.1.1",
"eslint-plugin-jsdoc": "^39.3.6",
- "eslint-plugin-jsonc": "^2.8.0",
+ "eslint-plugin-jsonc": "^2.9.0",
"eslint-plugin-no-unsanitized": "^4.0.1",
- "fake-indexeddb": "^4.0.0",
+ "fake-indexeddb": "^4.0.2",
"html-validate": "^7.6.0",
"jsdom": "^22.1.0",
"parse5": "^7.1.2",
@@ -3040,9 +3040,9 @@
}
},
"node_modules/eslint-plugin-jsonc": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.8.0.tgz",
- "integrity": "sha512-K4VsnztnNwpm+V49CcCu5laq8VjclJpuhfI9LFkOrOyK+BKdQHMzkWo43B4X4rYaVrChm4U9kw/tTU5RHh5Wtg==",
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.9.0.tgz",
+ "integrity": "sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
@@ -3283,9 +3283,9 @@
]
},
"node_modules/fake-indexeddb": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.0.tgz",
- "integrity": "sha512-oCfWSJ/qvQn1XPZ8SHX6kY3zr1t+bN7faZ/lltGY0SBGhFOPXnWf0+pbO/MOAgfMx6khC2gK3S/bvAgQpuQHDQ==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.2.tgz",
+ "integrity": "sha512-SdTwEhnakbgazc7W3WUXOJfGmhH0YfG4d+dRPOFoYDRTL6U5t8tvrmkf2W/C3W1jk2ylV7Wrnj44RASqpX/lEw==",
"dev": true,
"dependencies": {
"realistic-structured-clone": "^3.0.0"
@@ -11629,9 +11629,9 @@
}
},
"eslint-plugin-jsonc": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.8.0.tgz",
- "integrity": "sha512-K4VsnztnNwpm+V49CcCu5laq8VjclJpuhfI9LFkOrOyK+BKdQHMzkWo43B4X4rYaVrChm4U9kw/tTU5RHh5Wtg==",
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.9.0.tgz",
+ "integrity": "sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
@@ -11761,9 +11761,9 @@
"dev": true
},
"fake-indexeddb": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.0.tgz",
- "integrity": "sha512-oCfWSJ/qvQn1XPZ8SHX6kY3zr1t+bN7faZ/lltGY0SBGhFOPXnWf0+pbO/MOAgfMx6khC2gK3S/bvAgQpuQHDQ==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.2.tgz",
+ "integrity": "sha512-SdTwEhnakbgazc7W3WUXOJfGmhH0YfG4d+dRPOFoYDRTL6U5t8tvrmkf2W/C3W1jk2ylV7Wrnj44RASqpX/lEw==",
"dev": true,
"requires": {
"realistic-structured-clone": "^3.0.0"
diff --git a/package.json b/package.json
index b4028da7..12ac8305 100644
--- a/package.json
+++ b/package.json
@@ -43,9 +43,9 @@
"eslint": "^8.48.0",
"eslint-plugin-header": "^3.1.1",
"eslint-plugin-jsdoc": "^39.3.6",
- "eslint-plugin-jsonc": "^2.8.0",
+ "eslint-plugin-jsonc": "^2.9.0",
"eslint-plugin-no-unsanitized": "^4.0.1",
- "fake-indexeddb": "^4.0.0",
+ "fake-indexeddb": "^4.0.2",
"html-validate": "^7.6.0",
"jsdom": "^22.1.0",
"parse5": "^7.1.2",