diff --git a/.Screenshots/HomePage.png b/.Screenshots/HomePage.png new file mode 100644 index 0000000..d676681 Binary files /dev/null and b/.Screenshots/HomePage.png differ diff --git a/.Screenshots/InfoPage.png b/.Screenshots/InfoPage.png new file mode 100644 index 0000000..10af6c5 Binary files /dev/null and b/.Screenshots/InfoPage.png differ diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 0000000..a529aad --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,70 @@ +{ + "projectName": "exam-showboard-next", + "projectOwner": "ProjectCampus-CH", + "files": [ + "README.md" + ], + "commitType": "docs", + "commitConvention": "angular", + "contributorsPerLine": 7, + "contributors": [ + { + "login": "MKStoler4096", + "name": "MKStoler", + "avatar_url": "https://avatars.githubusercontent.com/u/178344462?v=4", + "profile": "http://qsgz.edicdn.eu.org", + "contributions": [ + "code", + "bug" + ] + }, + { + "login": "Jursin", + "name": "Jursin", + "avatar_url": "https://avatars.githubusercontent.com/u/127487914?v=4", + "profile": "https://github.com/Jursin", + "contributions": [ + "content", + "design" + ] + }, + { + "login": "hello8693DSZ", + "name": "Hello8693", + "avatar_url": "https://avatars.githubusercontent.com/u/88492699?v=4", + "profile": "https://github.com/hello8693DSZ", + "contributions": [ + "code" + ] + }, + { + "login": "fhzit", + "name": "fhzit", + "avatar_url": "https://avatars.githubusercontent.com/u/152045732?v=4", + "profile": "https://github.com/fhzit", + "contributions": [ + "code", + "bug", + "doc" + ] + }, + { + "login": "wjj-8283", + "name": "wjj-8283", + "avatar_url": "https://avatars.githubusercontent.com/u/82750345?v=4", + "profile": "https://github.com/wjj-8283", + "contributions": [ + "code" + ] + }, + { + "login": "dependabot", + "name": "Dependabot", + "avatar_url": "https://avatars.githubusercontent.com/u/27347476?v=4", + "profile": "https://github.com/features/security", + "contributions": [ + "code" + ] + } + ] +} diff --git a/.github/ISSUE_TEMPLATE/BugReport.yml b/.github/ISSUE_TEMPLATE/BugReport.yml new file mode 100644 index 0000000..9fed2f4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BugReport.yml @@ -0,0 +1,90 @@ +name: Bug 反馈 +description: 在使用考试看板 Next 的过程中遇到了 Bug 。 +title: (在这里输入你的标题) +labels: ['Bug', '未阅读'] +body: + - type: markdown + attributes: + value: | + 感谢您进行 Bug 反馈。请在上面的文本框⬆️起一个能够清晰描述您的问题的标题,便于开发者解决您的问题。 + + > [!important] + > + > 如果要提出**多个 Bug **,请为每一个 Bug 开一个单独的 issue。 + > + > 如果您不知道如何有效、精准地表述,建议先阅读[《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)。 + + - type: checkboxes + id: checklist + attributes: + label: 检查清单 + description: 在开始反馈这个问题之前,请先检查: + options: + - label: 我已更新到最新版  ,并看过[最新提交](https://github.com/ProjectCampus-CH/dsz-exam-showboard-next/commits/dev/),确认这一 Bug 还没有修复。 + required: true + - label: 我已在 [Issues](https://github.com/ProjectCampus-CH/dsz-exam-showboard-next/issues?q=label%3ABug) 中检索,确认这一 Bug 未被提交过。 + required: true + - label: 我已知晓并同意,此处仅用于汇报程序中存在的问题(关于其他非程序本身的问题应当在 Discussion 板块提出)。 + required: true + - type: markdown + attributes: + value: | + ### Bug 信息 + + 描述您遇到的 Bug。您可以附上截图、录屏、堆栈跟踪、日志等材料,便于开发者追踪问题。 + - type: textarea + id: excepted + attributes: + label: 期望的行为 + description: 详细的描述你期望发生的行为,突出与目前(可能不正确的)行为的不同。 + validations: + required: true + - type: textarea + id: what-happened + attributes: + label: 实际结果 + description: 实际发生的行为。 + validations: + required: true + - type: textarea + id: reproduce-steps + attributes: + label: 重现步骤 + description: | + 详细描述怎么操作能再次触发这个 Bug 。 + placeholder: | + 1. 首先…… + 2. 然后…… + 3. …… + validations: + required: true + - type: textarea + id: stacktrace + attributes: + label: 堆栈跟踪(可选) + description: 如果在遇到这个 Bug 时发生了崩溃(弹出崩溃提示),或者产生了错误日志,请将产生的堆栈跟踪信息粘贴到此处,便于开发者定位 Bug 。 + render: shell + - type: input + id: app_version + attributes: + label: 应用版本 + description: 您当前使用的考试看板 Next 版本号,可以在【关于】中查看。 + placeholder: 如:1.2.0 + validations: + required: true + - type: input + id: os_version + attributes: + label: 操作系统版本 + description: | + 您当前使用的 Windows 操作系统版本,可以运行 `winver.exe` 查看。 + 如果您不能肯定此 Bug 与操作系统无关,请填写此项。 + placeholder: 如:10.0.22000.0 + - type: checkboxes + id: revision + attributes: + label: 最后一步 + description: 回顾您的回答 + options: + - label: 我认为上述的描述已经足以详细,以允许开发人员能复现该问题。如果我的 issue 没有按照上述的要求填写,可能会被无条件关闭。 + required: true diff --git a/.github/ISSUE_TEMPLATE/FeatureRequest.yml b/.github/ISSUE_TEMPLATE/FeatureRequest.yml new file mode 100644 index 0000000..bef3ad2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/FeatureRequest.yml @@ -0,0 +1,48 @@ +name: 功能请求 +description: 提出一项新的功能。 +title: (在这里输入你的标题) +labels: ['新功能', '未阅读'] +body: + - type: markdown + attributes: + value: | + 感谢您贡献您的想法。请在上面的文本框⬆️起一个能够清晰概括此功能的标题,便于开发者了解您的想法。 + + > [!important] + > 重要:如果您想要提出 **多项功能**,请为每一个功能开一个单独的 issue。 + - type: checkboxes + id: checklist + attributes: + label: 检查清单 + description: 在开始反馈这个问题之前,请先检查: + options: + - label: 我已将本应用更新到最新测试版 ,并看过[最新提交](https://github.com/ClassIsland/ClassIsland/commits/dev/),确认我想要的功能还没有实现。 + required: true + - label: 我已在 [Issues](https://github.com/ProjectCampus-CH/dsz-exam-showboard-next/issues?q=label%3A新功能) 确认我想要的功能未被提交过。 + required: true + - label: 我认为我想要的功能是用户广泛需要的,且没有超出考试看板 Next 的开发目标,而非添加与之无关的内容。 + required: true + - label: 我已知晓由于开发者时间精力有限,加上已经积压了大量的功能请求,我提交的功能请求可能需要比较久的时间才能实现。 + required: true + - type: textarea + id: back + attributes: + label: 背景与动机 + description: 添加此功能的理由。 + validations: + required: true + - type: textarea + id: req + attributes: + label: 想要实现或优化的功能 + description: 详细地描述一下你想要的功能,描述的越具体,采纳的可能性越高。 + validations: + required: true + - type: checkboxes + id: revision + attributes: + label: 最后一步 + description: 回顾您的回答 + options: + - label: 我认为上述的描述已经足以详细,以便开发人员理解您想要的功能。如果我的 issue 没有按照上述的要求填写,可能会被无条件关闭。 + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..f259687 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: 讨论区 + url: https://github.com/ProjectCampus-CH/dsz-exam-showboard-next/discussions + about: 使用中若遇到问题或有新点子新需求,请先在这里求助和征求意见。 diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b417983 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "npm" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 68798a6..ddb0696 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,9 +1,10 @@ -name: Build and Package Electron App +name: 推送时构建 on: push: branches: - master + - dev jobs: build: diff --git a/.github/workflows/inactive.yaml b/.github/workflows/inactive.yaml new file mode 100644 index 0000000..11292fc --- /dev/null +++ b/.github/workflows/inactive.yaml @@ -0,0 +1,26 @@ +name: 关闭不活跃 Issue 和 Pull Request +on: + workflow_dispatch: + + schedule: + - cron: "30 1 * * *" + +jobs: + close-issues: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@v9 + with: + any-of-labels: 进一步提供信息, 不正确 + days-before-issue-stale: 14 + days-before-issue-close: 7 + days-before-pr-stale: 14 + days-before-pr-close: 7 + stale-issue-label: "陈旧" + stale-pr-label: "陈旧" + stale-issue-message: "由于此 Issue 在 14 天内没有动态,已被标记为陈旧。如果此 Issue 没有更多动态(评论等),将在 7 天后被关闭。" + stale-pr-message: "由于此 Pull Request 在 14 天内没有动态,已被标记为陈旧。如果此 Pull Request 没有更多动态(评论等),将在 7 天后被关闭。" + repo-token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/publish.yaml b/.github/workflows/package.yaml similarity index 63% rename from .github/workflows/publish.yaml rename to .github/workflows/package.yaml index d656a2e..54dcaa6 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/package.yaml @@ -1,14 +1,17 @@ -name: Release Build and Package +name: 打包并生成应用 on: + pull_request: release: types: [published] + workflow_dispatch: jobs: build: runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [windows-latest, macos-latest, ubuntu-latest] node-version: [20.x] @@ -16,28 +19,25 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4.1.7 - if: github.event.release.prerelease == false || matrix.os == 'windows-latest' - name: Set up Node.js uses: actions/setup-node@v4 - if: github.event.release.prerelease == false || matrix.os == 'windows-latest' with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: yarn install - if: github.event.release.prerelease == false || matrix.os == 'windows-latest' - name: Build and package for Windows - if: github.event.release.prerelease == false && matrix.os == 'windows-latest' + if: matrix.os == 'windows-latest' run: yarn build:win - name: Build and package for macOS - if: github.event.release.prerelease == true && matrix.os == 'macos-latest' + if: matrix.os == 'macos-latest' run: yarn build:mac - name: Build and package for Linux - if: github.event.release.prerelease == true && matrix.os == 'ubuntu-latest' + if: matrix.os == 'ubuntu-latest' run: yarn build:linux - name: Upload artifact for Windows @@ -48,15 +48,26 @@ jobs: path: dist/*.exe - name: Upload artifact for macOS - if: github.event.release.prerelease == true && matrix.os == 'macos-latest' + if: matrix.os == 'macos-latest' uses: actions/upload-artifact@v4 with: name: ExamShowboard-macOS path: dist/*.dmg - name: Upload artifact for Linux - if: github.event.release.prerelease == true && matrix.os == 'ubuntu-latest' + if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: ExamShowboard-Linux path: dist/*.AppImage + + - name: Upload assets to GitHub Release + if: github.event_name == 'release' && github.event.action == 'published' + uses: softprops/action-gh-release@v1 + with: + files: | + dist/*.exe + dist/*.dmg + dist/*.AppImage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/similarity.yaml b/.github/workflows/similarity.yaml new file mode 100644 index 0000000..3a6a323 --- /dev/null +++ b/.github/workflows/similarity.yaml @@ -0,0 +1,21 @@ +name: 相似 Issues 分析 + +on: + issues: + types: [opened, edited] + +jobs: + similarity-analysis: + runs-on: ubuntu-latest + steps: + - name: analysis + uses: actions-cool/issues-similarity-analysis@v1 + with: + filter-threshold: 0.5 + comment-title: | + ### 相似 Issues + comment-body: '${index}. ${similarity} #${number}' + title-excludes: "(在这里输入你的标题),bug" + since-days: 365 + show-footer: false + show-mentioned: true \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 9c6b791..ac2bbdf 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,3 +4,5 @@ pnpm-lock.yaml LICENSE.md tsconfig.json tsconfig.*.json +.all-contributorsrc +.github/dependabot.yml \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index fa35abe..b8d881b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -25,5 +25,6 @@ "command": "extension.execute", "priority": 4 } - ] + ], + "Codegeex.RepoIndex": true } diff --git a/README.md b/README.md index 1dd90bf..88c12d0 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,120 @@ -# DSZ考试展板 +
MKStoler 💻 🐛 |
+ Jursin 🖋 🎨 |
+ Hello8693 💻 |
+ fhzit 💻 🐛 📖 |
+ wjj-8283 💻 |
+ Dependabot 💻 |
+