From 64fa8f68c06ac25d1a39d0039806ec3a423f3dc2 Mon Sep 17 00:00:00 2001 From: Rarya <3148438955@qq.com> Date: Mon, 17 Aug 2026 16:41:33 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E8=BE=93=E5=87=BA=E7=BB=93=E6=9E=9C=EF=BC=8C?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=AF=AF=E4=BF=AE=E6=94=B9=E7=9A=84README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-apk.yml | 58 ++++++++++++++++++++++++--------- README.md | 3 +- 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml index 7fd20f6..3e5f239 100644 --- a/.github/workflows/build-apk.yml +++ b/.github/workflows/build-apk.yml @@ -65,6 +65,13 @@ jobs: - name: Install dependencies run: flutter pub get + - name: Read app version + run: | + VERSION=$(sed -n 's/^version: *\([^+]*\)+.*/\1/p' pubspec.yaml) + test -n "$VERSION" || { echo 'Unable to read app version'; exit 1; } + echo "RELEASE_VERSION=$VERSION" >> "$GITHUB_ENV" + echo "RELEASE_TAG=v$VERSION" >> "$GITHUB_ENV" + - name: Configure release signing env: SECRETS_PK8_BASE64: ${{ secrets.SECRETS_PK8_BASE64 }} @@ -95,13 +102,13 @@ jobs: - name: Rename APK run: | mv build/app/outputs/flutter-apk/app-release.apk \ - build/app/outputs/flutter-apk/AstrBot.apk + "build/app/outputs/flutter-apk/AstrBot-v${RELEASE_VERSION}.apk" - name: Upload APK artifact uses: actions/upload-artifact@v4 with: - name: AstrBot - path: build/app/outputs/flutter-apk/AstrBot.apk + name: AstrBot-v${{ env.RELEASE_VERSION }} + path: build/app/outputs/flutter-apk/AstrBot-v${{ env.RELEASE_VERSION }}.apk compression-level: 0 if-no-files-found: error @@ -110,20 +117,39 @@ jobs: github.event_name == 'pull_request' && github.event.pull_request.merged == true run: | - VERSION=$(sed -n 's/^version: *\([^+]*\)+.*/\1/p' pubspec.yaml) - TAG="v${VERSION}" PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || true) - { - printf '更新内容\n\n' - if [ -n "$PREVIOUS_TAG" ]; then - git log --pretty=format:'- %s (%h)' "${PREVIOUS_TAG}..HEAD" + if [ -n "$PREVIOUS_TAG" ]; then + LOG_RANGE="${PREVIOUS_TAG}..HEAD" + else + LOG_RANGE=HEAD + fi + + NOTES_DIR=$(mktemp -d) + trap 'rm -rf "$NOTES_DIR"' EXIT + for CATEGORY in 新增 优化 修复 更新 修改 移除 其他; do + : > "$NOTES_DIR/$CATEGORY" + done + + while IFS= read -r SUBJECT; do + [[ "$SUBJECT" == Merge\ pull\ request\ * ]] && continue + if [[ "$SUBJECT" =~ ^(新增|优化|修复|更新|修改|移除|其他)[[:space:]]+(.+)$ ]]; then + CATEGORY="${BASH_REMATCH[1]}" + CONTENT="${BASH_REMATCH[2]}" else - git log --pretty=format:'- %s (%h)' HEAD + CATEGORY=其他 + CONTENT="$SUBJECT" fi - printf '\n' - } > release-notes.md - echo "RELEASE_TAG=$TAG" >> "$GITHUB_ENV" - echo "RELEASE_VERSION=$VERSION" >> "$GITHUB_ENV" + printf '%s\n' "- $CONTENT" >> "$NOTES_DIR/$CATEGORY" + done < <(git log --pretty=format:'%s' "$LOG_RANGE") + + : > release-notes.md + for CATEGORY in 新增 优化 修复 更新 修改 移除 其他; do + if [ -s "$NOTES_DIR/$CATEGORY" ]; then + printf '%s\n' "$CATEGORY" >> release-notes.md + cat "$NOTES_DIR/$CATEGORY" >> release-notes.md + printf '\n' >> release-notes.md + fi + done - name: Publish GitHub Release if: >- @@ -137,12 +163,12 @@ jobs: --title "AstrBot $RELEASE_VERSION" \ --notes-file release-notes.md gh release upload "$RELEASE_TAG" \ - build/app/outputs/flutter-apk/AstrBot.apk \ + "build/app/outputs/flutter-apk/AstrBot-v${RELEASE_VERSION}.apk" \ --clobber else gh release create "$RELEASE_TAG" \ --target "$GITHUB_SHA" \ --title "AstrBot $RELEASE_VERSION" \ --notes-file release-notes.md \ - build/app/outputs/flutter-apk/AstrBot.apk + "build/app/outputs/flutter-apk/AstrBot-v${RELEASE_VERSION}.apk" fi diff --git a/README.md b/README.md index 302afff..89d707d 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,11 @@ - 新增固定 NapCat 终端标签页,方便查看 NapCat 日志。 - 新增终端小键盘,提供`Ctrl`、`Alt`、`Shift` 修饰键及常用组合键, `Esc`、`Tab`、方向键、删除、翻页、行首行尾等常用按键,方便操作命令行。 - 长按方向键可快速移动光标、切换历史命令。 -- 新增终端文本长按复制功能,长按选中文本后弹出复制弹窗。 +- 新增终端文本长按复制功能,长按选中文本后松手即可复制。 ### 修复与优化 - 使用原生 WebView ,访问 WebUI 无卡顿。 -- 优化终端输入法弹出条件,仅在单击时才弹出输入法。 - 优化终端滚动输出,不会到达上限停止更新。 - 优化 后台进程处理,关闭终端页不会有残留进程。 - 优化网络下载,减少因为网络波动导致安装失败的概率。 From 1ed51a5aa0d2d8e2ea56de3f2bc525c4783a0538 Mon Sep 17 00:00:00 2001 From: Rarya <3148438955@qq.com> Date: Mon, 17 Aug 2026 19:07:44 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E6=A0=BC=E5=BC=8F=E6=8F=90=E5=8F=96=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=20NapCat=E7=99=BB=E5=BD=95=E6=8F=90?= =?UTF-8?q?=E9=86=92=E5=87=BA=E7=8E=B0=E6=97=B6=E6=9C=BA=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9ENapCat=E5=BF=AB=E9=80=9F=E7=99=BB=E5=BD=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-apk.yml | 47 ++++++++++++++++----- lib/ui/controllers/terminal_controller.dart | 37 +++++++++++----- 2 files changed, 63 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml index 3e5f239..2ecb472 100644 --- a/.github/workflows/build-apk.yml +++ b/.github/workflows/build-apk.yml @@ -130,17 +130,42 @@ jobs: : > "$NOTES_DIR/$CATEGORY" done - while IFS= read -r SUBJECT; do - [[ "$SUBJECT" == Merge\ pull\ request\ * ]] && continue - if [[ "$SUBJECT" =~ ^(新增|优化|修复|更新|修改|移除|其他)[[:space:]]+(.+)$ ]]; then - CATEGORY="${BASH_REMATCH[1]}" - CONTENT="${BASH_REMATCH[2]}" - else - CATEGORY=其他 - CONTENT="$SUBJECT" - fi - printf '%s\n' "- $CONTENT" >> "$NOTES_DIR/$CATEGORY" - done < <(git log --pretty=format:'%s' "$LOG_RANGE") + python3 - "$LOG_RANGE" "$NOTES_DIR" <<'PY' + import re + import subprocess + import sys + + log_range, notes_dir = sys.argv[1:] + categories = ("新增", "优化", "修复", "更新", "修改", "移除", "其他") + separators = r",,、;;::|//\\\\\\s" + label_pattern = re.compile( + rf"(?:^|[{separators}])(?P