xmoj-script 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  name: 综合 Bug 反馈
2
2
  description: 有功能有问题
3
3
  labels: bug, needs-triage
4
+ type: Bug
4
5
  # assignees: PythonSmall-Q, boomzero, shihongxi
5
6
  title: "[Bug]"
6
7
  body:
@@ -1,6 +1,7 @@
1
1
  name: 帮助文档反馈
2
2
  description: 帮助文档有问题
3
3
  labels: docs, needs-triage
4
+ type: Task
4
5
  title: "[Docs]"
5
6
  body:
6
7
  - type: checkboxes
@@ -1,6 +1,7 @@
1
1
  name: 新功能提案
2
2
  description: 对已有功能的大幅度修改,或添加一个新内容或选项
3
3
  labels: enhancement, needs-triage
4
+ type: Feature
4
5
  #assignees: PythonSmall-Q, boomzero, shihongxi
5
6
  title: "[Feature Request]"
6
7
  body:
@@ -5,6 +5,7 @@ on:
5
5
  - opened
6
6
  - reopened
7
7
  - synchronize
8
+ - edited
8
9
  branches:
9
10
  - master
10
11
  jobs:
@@ -24,7 +25,8 @@ jobs:
24
25
  gh pr comment ${{ github.event.pull_request.number }} --body "请向\`dev\`分支提交pull request, 本pull request将被自动关闭"
25
26
  gh pr close ${{ github.event.pull_request.number }}
26
27
  else
27
- node ./Update/UpdateToRelease.js ${{ secrets.GITHUB_TOKEN }} ${{ github.event.number }}
28
+ node ./Update/UpdateToRelease.js ${{ secrets.GITHUB_TOKEN }} ${{ github.event.number }} "$PR_BODY"
28
29
  fi
29
30
  env:
30
31
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32
+ PR_BODY: ${{ github.event.pull_request.body }}
@@ -23,4 +23,6 @@ jobs:
23
23
  private-key: ${{ secrets.APP_PRIVATE_KEY }}
24
24
  - uses: actions/checkout@v5
25
25
  - name: Update version
26
- run: node ./Update/UpdateVersion.js ${{ steps.generate_token.outputs.token }} ${{ github.event.number }} "${{ github.event.pull_request.title }}"
26
+ env:
27
+ PR_BODY: ${{ github.event.pull_request.body }}
28
+ run: node ./Update/UpdateVersion.js ${{ steps.generate_token.outputs.token }} ${{ github.event.number }} "${{ github.event.pull_request.title }}" "$PR_BODY"
package/CONTRIBUTING.md CHANGED
@@ -18,3 +18,4 @@ We believe that you must be excited to contribute to our repo, but first, please
18
18
  - Be patient. We are a small team and may not be able to review your PR immediately.
19
19
  - Please be considerate towards the developers and other users when raising issues or presenting pull requests.
20
20
  - Respect our decision(s), and do not be upset or abusive if your submission is not used.
21
+ - For release pull requests, include an HTML comment block starting with `<!-- release-notes` and ending with `-->` in the PR description. The automation will extract that block into the release notes.
@@ -3,6 +3,13 @@ import {execSync} from "child_process";
3
3
 
4
4
  var GithubToken = process.argv[2];
5
5
  var PRNumber = process.argv[3];
6
+ function extractReleaseNotes(body) {
7
+ const match = body
8
+ .replace(/\r\n/g, "\n")
9
+ .match(/<!--\s*release[- ]notes\s*([\s\S]*?)-->/i);
10
+ return match ? match[1].trim() : "";
11
+ }
12
+ var CurrentNotes = extractReleaseNotes(String(process.argv[4] || ""));
6
13
  process.env.GITHUB_TOKEN = GithubToken;
7
14
  execSync("gh pr checkout " + PRNumber);
8
15
  console.info("PR #" + PRNumber + " has been checked out.");
@@ -45,6 +52,7 @@ console.log("Last JSON version : " + LastJSONVersion);
45
52
  console.log("Last PR : " + LastPR);
46
53
  console.log("Last type : " + LastType);
47
54
  console.log("npm version : " + NpmVersion);
55
+ console.log("Current notes : " + (CurrentNotes || "No release notes were provided for this release."));
48
56
 
49
57
  if (LastJSONVersion != LastJSVersion) {
50
58
  console.error("XMOJ.user.js and Update.json have different patch versions.");
@@ -67,7 +75,7 @@ JSONObject.UpdateHistory[CurrentVersion] = {
67
75
  "UpdateDate": Date.now(),
68
76
  "Prerelease": false,
69
77
  "UpdateContents": [],
70
- "Notes": "No release notes were provided for this release."
78
+ "Notes": CurrentNotes || "No release notes were provided for this release."
71
79
  };
72
80
 
73
81
  for (var i = Object.keys(JSONObject.UpdateHistory).length - 2; i >= 0; i--) {
@@ -47,6 +47,13 @@ execSync("git config --global user.email \"github-actions[bot]@users.noreply.git
47
47
  execSync("git config --global user.name \"github-actions[bot]\"");
48
48
  var CurrentPR = Number(PRNumber);
49
49
  var CurrentDescription = String(process.argv[4]);
50
+ function extractReleaseNotes(body) {
51
+ const match = body
52
+ .replace(/\r\n/g, "\n")
53
+ .match(/<!--\s*release[- ]notes\s*([\s\S]*?)-->/i);
54
+ return match ? match[1].trim() : "";
55
+ }
56
+ var CurrentNotes = extractReleaseNotes(String(process.argv[5] || ""));
50
57
  if (LastJSVersion != NpmVersion) {
51
58
  console.warn("Assuming you manually ran npm version.");
52
59
  } else if (!(LastPR == CurrentPR && NpmVersion == LastJSVersion)) {
@@ -58,6 +65,7 @@ var CurrentVersion = execSync("jq -r '.version' package.json").toString().trim()
58
65
  console.log("Current version : " + CurrentVersion);
59
66
  console.log("Current PR : " + CurrentPR);
60
67
  console.log("Current description: " + CurrentDescription);
68
+ console.log("Current notes : " + (CurrentNotes || "No release notes were provided for this release."));
61
69
 
62
70
  var ChangedFileList = execSync("gh pr diff " + CurrentPR + " --name-only").toString().trim().split("\n");
63
71
  console.log("Changed files : " + ChangedFileList.join(", "));
@@ -67,6 +75,9 @@ if (LastPR == CurrentPR && NpmVersion == LastJSVersion) {
67
75
  console.warn("Warning: PR is the same as last version.");
68
76
  JSONObject.UpdateHistory[LastJSVersion].UpdateDate = Date.now();
69
77
  JSONObject.UpdateHistory[LastJSVersion].UpdateContents[0].Description = CurrentDescription;
78
+ if (CurrentNotes) {
79
+ JSONObject.UpdateHistory[LastJSVersion].Notes = CurrentNotes;
80
+ }
70
81
  CommitMessage = "Update time and description of " + LastJSVersion;
71
82
  } else if (ChangedFileList.indexOf("XMOJ.user.js") == -1) {
72
83
  console.warn("XMOJ.user.js is not changed, so the version should not be updated.");
@@ -79,7 +90,7 @@ if (LastPR == CurrentPR && NpmVersion == LastJSVersion) {
79
90
  "PR": CurrentPR,
80
91
  "Description": CurrentDescription
81
92
  }],
82
- "Notes": "No release notes were provided for this release."
93
+ "Notes": CurrentNotes || "No release notes were provided for this release."
83
94
  };
84
95
  writeFileSync(JSFileName, JSFileContent.replace(/@version(\s+)\d+\.\d+\.\d+/, "@version$1" + CurrentVersion), "utf8");
85
96
  console.warn("XMOJ.user.js has been updated.");
package/Update.json CHANGED
@@ -3021,6 +3021,28 @@
3021
3021
  }
3022
3022
  ],
3023
3023
  "Notes": "No release notes were provided for this release."
3024
+ },
3025
+ "2.2.1": {
3026
+ "UpdateDate": 1756003502262,
3027
+ "Prerelease": true,
3028
+ "UpdateContents": [
3029
+ {
3030
+ "PR": 839,
3031
+ "Description": "Fix formatting in feedback card text"
3032
+ }
3033
+ ],
3034
+ "Notes": "No release notes were provided for this release."
3035
+ },
3036
+ "2.2.2": {
3037
+ "UpdateDate": 1757851046240,
3038
+ "Prerelease": true,
3039
+ "UpdateContents": [
3040
+ {
3041
+ "PR": 852,
3042
+ "Description": "Fix the submit button on some pages"
3043
+ }
3044
+ ],
3045
+ "Notes": "No release notes were provided for this release."
3024
3046
  }
3025
3047
  }
3026
3048
  }
package/XMOJ.user.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // ==UserScript==
2
2
  // @name XMOJ
3
- // @version 2.2.0
3
+ // @version 2.2.2
4
4
  // @description XMOJ增强脚本
5
5
  // @author @XMOJ-Script-dev, @langningchen and the community
6
6
  // @namespace https://github/langningchen
@@ -444,7 +444,7 @@ let UtilityEnabled = (Name) => {
444
444
  let storeCredential = async (username, password) => {
445
445
  if ('credentials' in navigator && window.PasswordCredential) {
446
446
  try {
447
- const credential = new PasswordCredential({ id: username, password: password });
447
+ const credential = new PasswordCredential({id: username, password: password});
448
448
  await navigator.credentials.store(credential);
449
449
  } catch (e) {
450
450
  console.error(e);
@@ -454,7 +454,7 @@ let storeCredential = async (username, password) => {
454
454
  let getCredential = async () => {
455
455
  if ('credentials' in navigator && window.PasswordCredential) {
456
456
  try {
457
- return await navigator.credentials.get({ password: true, mediation: 'optional' });
457
+ return await navigator.credentials.get({password: true, mediation: 'optional'});
458
458
  } catch (e) {
459
459
  console.error(e);
460
460
  }
@@ -1513,7 +1513,7 @@ async function main() {
1513
1513
  FeedbackCardBody.className = "card-body";
1514
1514
  let FeedbackCardText = document.createElement("p");
1515
1515
  FeedbackCardText.className = "card-text";
1516
- FeedbackCardText.innerText = "如果您有任何建议或者发现了bug,请前往本项目的GitHub页面并提交issue。提交issue前请先搜索是否有相同的issue,如果有请在该issue下留言。请在issue中尽可能详细地描述您的问题,并且附上您的浏览器版本、操作系统版本、脚本版本、复现步骤等信息。谢谢您支持本项目。";
1516
+ FeedbackCardText.innerText = "如果您有任何建议或者发现了 bug,请前往本项目的 GitHub 页面并提交 issue。提交 issue 前请先搜索是否有相同的 issue,如果有请在该 issue 下留言。请在 issue 中尽可能详细地描述您的问题,并且附上您的浏览器版本、操作系统版本、脚本版本、复现步骤等信息。谢谢您支持本项目。";
1517
1517
  FeedbackCardBody.appendChild(FeedbackCardText);
1518
1518
  let FeedbackCardLink = document.createElement("a");
1519
1519
  FeedbackCardLink.className = "card-link";
@@ -1627,8 +1627,9 @@ async function main() {
1627
1627
  }, 1000);
1628
1628
  } else {
1629
1629
  let PID = localStorage.getItem("UserScript-Contest-" + SearchParams.get("cid") + "-Problem-" + SearchParams.get("pid") + "-PID");
1630
-
1631
- document.querySelector("body > div > div.mt-3 > center").lastChild.style.marginLeft = "10px";
1630
+ if (document.querySelector("body > div > div.mt-3 > center").lastElementChild !== null) {
1631
+ document.querySelector("body > div > div.mt-3 > center").lastElementChild.style.marginLeft = "10px";
1632
+ }
1632
1633
  //修复提交按钮
1633
1634
  let SubmitLink = document.querySelector('.mt-3 > center:nth-child(1) > a:nth-child(12)');
1634
1635
  if (SubmitLink == null) { //a special type of problem
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xmoj-script",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "an improvement script for xmoj.tech",
5
5
  "main": "AddonScript.js",
6
6
  "scripts": {