Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
617c59a
fix: correct score notation, Richter mapping and import validation
ax2 Oct 22, 2026
7052ec5
feat(scores): add verified Arirang and Harvest Song melodies
ax2 Oct 22, 2026
fc0c27b
feat(scores): support meter changes and add four sourced melodies
ax2 Oct 22, 2026
9c96a6b
feat(library): add practice filters and persistent favorites
ax2 Oct 22, 2026
3eaec19
feat(scores): add five complete melodies and natural cancellation
ax2 Oct 22, 2026
46b1a16
Add grace-note notation and verified Mozart and blues studies
ax2 Oct 22, 2026
00ce3d8
Model mordent auxiliary pitches and add two verified Chinese melodies
ax2 Oct 22, 2026
0826509
Support thirty-second notes and readable dense measures; add four sou…
ax2 Oct 22, 2026
8ad0e2e
Add four verified traditional melodies with complete repeat endings
ax2 Oct 22, 2026
75bb221
Preserve explicit pickups and fermatas; expand library to forty songs
ax2 Oct 22, 2026
c4b2c21
Protect personal scores from corruption and concurrent import data loss
ax2 Oct 22, 2026
8e29196
Add validated personal library merge and replacement recovery
ax2 Oct 22, 2026
5ae86e5
Render every imported technique and clarify pitch analysis scope
ax2 Oct 22, 2026
0345b39
Paginate printed scores by complete rows and correct two folk positions
ax2 Oct 22, 2026
bd9df2a
Keep imported keys valid and Unicode score IDs stable across round trips
ax2 Oct 22, 2026
65f9f33
Recheck legacy melodies against complete sources and restore lost not…
ax2 Oct 22, 2026
5b9b439
Validate score data and application on Windows and Linux in CI
ax2 Oct 22, 2026
8cc0c1c
Record verified Node 24 checks and pending remote CI execution
ax2 Oct 22, 2026
b3a57fa
fix: keep score import focus and file reads consistent
ax2 Oct 22, 2026
aa041d3
fix: preserve favorites across concurrent browser tabs
ax2 Oct 22, 2026
40c209c
fix: hold storage locks across browser task checkpoints
ax2 Oct 22, 2026
5a921ed
fix: finish storage checkpoint after failed mutations
ax2 Oct 22, 2026
d99a36b
fix: adopt verified eight-bar Spanish Rowing Song version
ax2 Oct 22, 2026
191fd38
feat: add eight source-checked songs with independent ABC comparisons
ax2 Oct 23, 2026
68a20ad
feat: add four verified songs and optional written measure numbers
ax2 Oct 23, 2026
394bd3f
fix: align diagnostics with written measure numbers
ax2 Oct 23, 2026
8468f01
feat: expand balanced library to sixty verified scores
ax2 Oct 23, 2026
f31531e
perf: deduplicate built-in note payload without changing scores
ax2 Oct 23, 2026
c7b28e1
docs: identify build-reported gzip measurements
ax2 Oct 23, 2026
9e8c8ac
feat: add source-checked Kangding and beginner singing tune
ax2 Oct 23, 2026
3e0eb54
feat: preserve articulations and publish version 0.2.0 releases
ax2 Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Publish release

on:
push:
tags: ['v*']

permissions:
contents: read

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

jobs:
validate:
uses: ./.github/workflows/validate.yml
publish:
needs: validate
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: write
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run build
- run: npm run release:pack
- name: Publish tested build and checksums
env:
GH_TOKEN: ${{ github.token }}
shell: bash
run: |
set -euo pipefail
version=$(node -p "require('./package.json').version")
test "$GITHUB_REF_NAME" = "v$version"
gh release create "$GITHUB_REF_NAME" \
"release/harpscore-$version-web.tar.gz" release/SHA256SUMS.txt \
--verify-tag --title "HarpScore $GITHUB_REF_NAME" \
--notes-file "docs/releases/$GITHUB_REF_NAME.md"
35 changes: 35 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Validate scores and application

on:
push:
branches: [main, 'codex/**']
pull_request:
workflow_dispatch:
workflow_call:

permissions:
contents: read

jobs:
validate:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 15
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm test
- run: npm run scores:validate
- run: npm run scores:build
- name: Generated scores must be committed
run: git diff --exit-code -- src/data
- run: npm run build
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
node_modules
dist
dist-ssr
release/
*.local
*.tsbuildinfo
.DS_Store
Expand Down
115 changes: 106 additions & 9 deletions README.md

Large diffs are not rendered by default.

31 changes: 31 additions & 0 deletions docs/releases/v0.2.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# HarpScore v0.2.0

本阶段将内置曲库从14项扩充至64项:60首歌曲、4首原创练习,并修复音高、时值、指法、导入和打印中的多项问题。

## 新功能与修复

- 逐首记录选定曲谱的来源、移调方式和核对范围;按传统曲与入门曲均衡扩充。最新加入《康定情歌》《一起来学唱》《苏武牧羊》《小蜜蜂》。
- 支持变拍、前倚音、带明确辅助音的波音、三十二分音符、显式弱起、自由延长、重音和保持音;保留跨小节/跨行同音延音。
- 修正标准Richter口琴的音高与孔位,明确低音压音及超吹提示;诊断位置与可选小节编号一致。
- 增加多条件曲库筛选、排序、收藏、个人库备份与预检恢复;修复存储并发、慢文件读取和键盘焦点问题。
- 手机按实际可用宽度重排,密集小节保留续行关系;PNG/SVG/JSON导出及A4分页打印同步。
- 内置谱的传输数据去重,保留完整音乐内容及公开JSON格式。
- 新增标签触发的GitHub Release工作流:Windows/Linux Node24验证通过后构建、打包并上传Web版本及SHA256校验文件。

## 下载和使用

下载 `harpscore-0.2.0-web.tar.gz` 与 `SHA256SUMS.txt`,解压后安装Node.js 24或更新版本,无需运行npm install。

- Windows:双击 `START.cmd`,在浏览器打开 `http://127.0.0.1:4178`。
- macOS/Linux:在解压目录运行 `node serve.mjs`,打开同一地址。
- 静态网站部署:上传包内 `dist/` 内容;不要直接双击其中的HTML。

Windows可用 `tar -xzf harpscore-0.2.0-web.tar.gz` 解压,`Get-FileHash -Algorithm SHA256 harpscore-0.2.0-web.tar.gz` 校验文件。此包是Web应用,不是Windows EXE。

个人曲谱和收藏保存在浏览器,绑定网站地址和端口。升级前导出个人库备份,升级后沿用原地址与浏览器;如改了地址,请从备份恢复。

## 验证范围

150项自动测试覆盖来源旋律对照、节拍/延音/孔位门禁、导入和存储、记号与打印布局、数据打包隔离及本地启动器。64项曲库验证和生产构建通过。Chromium/Firefox检查64曲的三种谱宽;新曲经过实际搜索、导出、手机及打印DOM检查。新两曲Chromium实际PDF分别2页和1页,组合标记经过导入、重载和导出验证。

当前没有音频播放。音乐核对针对注明的来源版本,尚未经过独立音乐专家、实体口琴、真实手机和打印机的验收;Firefox原生PDF与WebKit未验。不将自动测试声称为专业音乐审校,也不将体积减少声称为启动速度必然提高。
Loading
Loading