mirror of
https://github.com/asyouplz/SpeechNote.git
synced 2026-07-22 06:43:33 +00:00
chore(repo): remove ignored repo files (#83)
This commit is contained in:
parent
f54c91b255
commit
77b63f54b3
17 changed files with 10 additions and 992 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -162,9 +162,12 @@ docs/BRANCH_PROTECTION.md
|
|||
docs/LINT_RULES.md
|
||||
docs/obsidian-review-8004-issuecomment-3839142330.md
|
||||
docs/obsidian-review-8004-issuecomment-3839840641.md
|
||||
docs/obsidian-review-8004-issuecomment-3840783932.md
|
||||
docs/obsidian-review-8004-issuecomment-3885815068-detailed-response.md
|
||||
docs/obsidian-review-8004-issuecomment-3885815068.md
|
||||
docs/obsidian-review-8004-issuecomment-4007884875-plan.md
|
||||
docs/obsidian-review-8004.md
|
||||
docs/obsidian-review-8004-sentence-case-followup-plan.md
|
||||
|
||||
# Lint and typecheck output files
|
||||
lint-output.txt
|
||||
|
|
@ -181,6 +184,7 @@ AGENTS.md
|
|||
CODE_OF_CONDUCT.md
|
||||
CLAUDE.md
|
||||
CHANGELOG.md
|
||||
SECURITY.md
|
||||
|
||||
# Semantic Release
|
||||
.semantic-release-cache/
|
||||
|
|
|
|||
|
|
@ -65,12 +65,6 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
"@semantic-release/changelog",
|
||||
{
|
||||
"changelogFile": "CHANGELOG.md"
|
||||
}
|
||||
],
|
||||
[
|
||||
"@semantic-release/npm",
|
||||
{
|
||||
|
|
@ -96,8 +90,7 @@
|
|||
"manifest.json",
|
||||
"package.json",
|
||||
"package-lock.json",
|
||||
"versions.json",
|
||||
"CHANGELOG.md"
|
||||
"versions.json"
|
||||
],
|
||||
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
||||
}
|
||||
|
|
@ -122,4 +115,4 @@
|
|||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
149
CHANGELOG.md
149
CHANGELOG.md
|
|
@ -1,149 +0,0 @@
|
|||
## [4.0.15](https://github.com/asyouplz/SpeechNote/compare/v4.0.14...v4.0.15) (2026-03-16)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* address obsidian review bot settings copy ([#82](https://github.com/asyouplz/SpeechNote/issues/82)) ([de37e9f](https://github.com/asyouplz/SpeechNote/commit/de37e9f814e063f3a6d74808199dd20a2ae38b99))
|
||||
|
||||
## [4.0.14](https://github.com/asyouplz/SpeechNote/compare/v4.0.13...v4.0.14) (2026-03-15)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **settings:** normalize review bot sentence case text ([90e5026](https://github.com/asyouplz/SpeechNote/commit/90e502638618bc659cc396d7e1807c088e0f1cac))
|
||||
|
||||
## [4.0.13](https://github.com/asyouplz/SpeechNote/compare/v4.0.12...v4.0.13) (2026-03-15)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **release:** trigger patch release for sentence case follow-ups ([d420ecc](https://github.com/asyouplz/SpeechNote/commit/d420ecc67bfa9a4798778dd915678b361f80e569)), closes [#80](https://github.com/asyouplz/SpeechNote/issues/80)
|
||||
|
||||
## [4.0.12](https://github.com/asyouplz/SpeechNote/compare/v4.0.11...v4.0.12) (2026-03-14)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **ui:** use lowercase openai key placeholders ([#79](https://github.com/asyouplz/SpeechNote/issues/79)) ([fcae62a](https://github.com/asyouplz/SpeechNote/commit/fcae62a84512f91b9b4b35cb4afb973a75cc9686))
|
||||
|
||||
## [4.0.11](https://github.com/asyouplz/SpeechNote/compare/v4.0.10...v4.0.11) (2026-03-14)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **ui:** use lowercase openai key placeholders ([#78](https://github.com/asyouplz/SpeechNote/issues/78)) ([e7f4139](https://github.com/asyouplz/SpeechNote/commit/e7f4139979eeb5a249911c6f8b5058b88e807ada))
|
||||
|
||||
### 🔧 Maintenance
|
||||
|
||||
* **ci:** update actions for node 24 runners ([#77](https://github.com/asyouplz/SpeechNote/issues/77)) ([cbdb374](https://github.com/asyouplz/SpeechNote/commit/cbdb374e9d778587da555c1928e16a3599d90308))
|
||||
* **deps:** bump undici and @actions/http-client ([#74](https://github.com/asyouplz/SpeechNote/issues/74)) ([68312a2](https://github.com/asyouplz/SpeechNote/commit/68312a2b1fb2f4282abf49a464c17b4f4afdd79e))
|
||||
|
||||
## [4.0.10](https://github.com/asyouplz/SpeechNote/compare/v4.0.9...v4.0.10) (2026-03-13)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **ui:** align settings review follow-ups ([#73](https://github.com/asyouplz/SpeechNote/issues/73)) ([1686d84](https://github.com/asyouplz/SpeechNote/commit/1686d84e85e5c4a69316121ae4874f4eb7ae0e60))
|
||||
|
||||
### 🔧 Maintenance
|
||||
|
||||
* **deps:** bump minimatch ([#72](https://github.com/asyouplz/SpeechNote/issues/72)) ([f5638bf](https://github.com/asyouplz/SpeechNote/commit/f5638bf4a4535ba97648e2fef2d3a57c65c18a04))
|
||||
* **deps:** bump tar and npm ([#71](https://github.com/asyouplz/SpeechNote/issues/71)) ([e1e6521](https://github.com/asyouplz/SpeechNote/commit/e1e6521b5e8bfe7d8f37d4b8ab90b8b32fad38dd))
|
||||
|
||||
## [4.0.9](https://github.com/asyouplz/SpeechNote/compare/v4.0.8...v4.0.9) (2026-03-10)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **ui:** address pr 8004 human review feedback ([#70](https://github.com/asyouplz/SpeechNote/issues/70)) ([0f6c3ac](https://github.com/asyouplz/SpeechNote/commit/0f6c3ac21809720c38418ec7f4e86a5a21b9ef58))
|
||||
|
||||
### 🔧 Maintenance
|
||||
|
||||
* **deps:** bump @tootallnate/once and jest-environment-jsdom ([#69](https://github.com/asyouplz/SpeechNote/issues/69)) ([fee0dde](https://github.com/asyouplz/SpeechNote/commit/fee0dde35cdf1cc23cdee592044e9749e24c2ac7))
|
||||
|
||||
## [4.0.8](https://github.com/asyouplz/SpeechNote/compare/v4.0.7...v4.0.8) (2026-02-19)
|
||||
|
||||
### ♻️ Code Refactoring
|
||||
|
||||
* **ui:** consolidate settings architecture and wave3 fixes ([#67](https://github.com/asyouplz/SpeechNote/issues/67)) ([f62f8ee](https://github.com/asyouplz/SpeechNote/commit/f62f8eec5adee5c0c4a22498102490a3851d7e61))
|
||||
|
||||
## [4.0.7](https://github.com/asyouplz/SpeechNote/compare/v4.0.6...v4.0.7) (2026-02-04)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* address obsidian review findings ([#65](https://github.com/asyouplz/SpeechNote/issues/65)) ([e28c350](https://github.com/asyouplz/SpeechNote/commit/e28c35058125dab6eda98f53708634ca658cfa3c))
|
||||
|
||||
## [4.0.6](https://github.com/asyouplz/SpeechNote/compare/v4.0.5...v4.0.6) (2026-02-03)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **ui:** align emoji labels with sentence case ([#64](https://github.com/asyouplz/SpeechNote/issues/64)) ([2bcaa6a](https://github.com/asyouplz/SpeechNote/commit/2bcaa6a07e81ad23d39c1645b76262e23f3b8a84))
|
||||
|
||||
## [4.0.5](https://github.com/asyouplz/SpeechNote/compare/v4.0.4...v4.0.5) (2026-02-03)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* **ui:** apply sentence case to provider labels ([#63](https://github.com/asyouplz/SpeechNote/issues/63)) ([3645309](https://github.com/asyouplz/SpeechNote/commit/3645309b5f5db4e028922337c163516b22851fbd))
|
||||
|
||||
## [4.0.4](https://github.com/asyouplz/SpeechNote/compare/v4.0.3...v4.0.4) (2026-02-03)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* address reviewbot required issues ([#62](https://github.com/asyouplz/SpeechNote/issues/62)) ([a87dc8f](https://github.com/asyouplz/SpeechNote/commit/a87dc8f9d994a3f7d5c48483db21ac25c9ce5c6b))
|
||||
|
||||
## [4.0.3](https://github.com/asyouplz/SpeechNote/compare/v4.0.2...v4.0.3) (2026-02-02)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* address reviewbot feedback and update tests ([#61](https://github.com/asyouplz/SpeechNote/issues/61)) ([eefd7f1](https://github.com/asyouplz/SpeechNote/commit/eefd7f136d3751733c30e0da02989bebbb62ac3c))
|
||||
|
||||
## [4.0.2](https://github.com/asyouplz/SpeechNote/compare/v4.0.1...v4.0.2) (2026-01-29)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* address review feedback and stabilize tests ([#60](https://github.com/asyouplz/SpeechNote/issues/60)) ([2d8bc68](https://github.com/asyouplz/SpeechNote/commit/2d8bc686154d28ca68d67c5889a2cfc6f8ecf07c))
|
||||
* **ci:** add semantic-release configuration ([#59](https://github.com/asyouplz/SpeechNote/issues/59)) ([cb98d70](https://github.com/asyouplz/SpeechNote/commit/cb98d70ce80e9c19c0b03410cc0b0ceafb7d5fc1))
|
||||
* **ci:** use github app token to bypass repository rulesets ([537a4bb](https://github.com/asyouplz/SpeechNote/commit/537a4bb9561378896143fa679ec435011ac7f562))
|
||||
* **review:** resolve obsidian bot validation errors (metadata, lint, ui) ([#58](https://github.com/asyouplz/SpeechNote/issues/58)) ([c6df377](https://github.com/asyouplz/SpeechNote/commit/c6df37736221b619a02b1f9c36ce0979c4d4eec9))
|
||||
|
||||
## [4.0.0](https://github.com/asyouplz/SpeechNote/compare/v3.0.14...v4.0.0) (2026-01-26)
|
||||
|
||||
### ⚠ BREAKING CHANGES
|
||||
|
||||
* Manual version updates via version-bump.mjs will be deprecated.
|
||||
Use Conventional Commits format for all commits going forward.
|
||||
|
||||
* fix: address code review feedback from Claude bot
|
||||
|
||||
Addressing 8 issues identified in PR #54:
|
||||
- [P0/Critical] Disable version-bump.yml to prevent workflow conflicts
|
||||
- [P0/Critical] Remove persist-credentials: false from release-auto.yml
|
||||
- [P0/Critical] Remove deprecated version lifecycle hook in package.json
|
||||
- [P1/Important] Add semver and manifest validation to update-version.mjs
|
||||
- [P1/Important] Fix JSON formatting consistency in scripts
|
||||
- [P2/Optional] Enhance build artifact verification with file size checks
|
||||
- [P2/Optional] Rename release.sh to release-emergency.sh and add warning
|
||||
|
||||
* fix: address final code review points and documentation updates
|
||||
|
||||
* fix: address third round of code review feedback
|
||||
|
||||
- Revert pre-commit hook to use lint-staged
|
||||
- Add file existence checks to update-version.mjs
|
||||
- Remove unnecessary npm override in package.json
|
||||
- Add syntax verification for build artifacts in release workflow
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
* implement semantic-release automation ([#54](https://github.com/asyouplz/SpeechNote/issues/54)) ([240e125](https://github.com/asyouplz/SpeechNote/commit/240e125df5479cda9c084164494756ea87eafb38))
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
* make lint step resilient to eslint crashes ([2e3adc8](https://github.com/asyouplz/SpeechNote/commit/2e3adc8a5301bbd7b4c92e8b2b61dc8bd3746d51))
|
||||
* upgrade nodejs to v20 for semantic-release ([4dc3ae9](https://github.com/asyouplz/SpeechNote/commit/4dc3ae9abdf25ed9233f50b9c92c45fcbebaeb26))
|
||||
* upgrade nodejs to v22 for semantic-release v24 ([8c5ec24](https://github.com/asyouplz/SpeechNote/commit/8c5ec24f1b8c49996cb6df5f8bed5d88cee10e8f))
|
||||
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
<!--
|
||||
This file will be automatically updated by semantic-release.
|
||||
Change history will be generated from conventional commit messages.
|
||||
-->
|
||||
14
CLAUDE.md
14
CLAUDE.md
|
|
@ -1,14 +0,0 @@
|
|||
## Project Work Principles
|
||||
|
||||
- If you have existing code, first check if it's workable by modifying it.
|
||||
- Always find and update related documentation after code modifications are complete.
|
||||
- Actively collaborate with other agents.
|
||||
|
||||
## Code and Script Work Principles
|
||||
|
||||
1. When modifying code, first consult @agent-mentor-educational-guide for guidance.
|
||||
2. @agent-systems-architect seeks advice from @agent-backend-api-infrastructure and @agent-code-refactorer.
|
||||
3. Then, @agent-documentation-expert modifies the related documentation.
|
||||
4. @agent-backend-api-infrastructure and @agent-code-refactorer restructure the code.
|
||||
5. @qa-testing-expert code restructuring end, Always restructure the code only when QA passes. If pass fails, restructure the code again.
|
||||
6. Always find and update related documentation after code modifications are complete.
|
||||
|
|
@ -179,7 +179,7 @@ Fixes #456
|
|||
Releases are managed by maintainers:
|
||||
|
||||
1. Version bump in `package.json` and `manifest.json`
|
||||
2. Update `CHANGELOG.md`
|
||||
2. Publish release notes on GitHub
|
||||
3. Create a GitHub release with release notes
|
||||
4. Publish to Obsidian Community Plugins (maintainers only)
|
||||
|
||||
|
|
|
|||
|
|
@ -1058,7 +1058,7 @@ This project uses **semantic-release** for fully automated versioning and releas
|
|||
2. **CI/CD Pipeline**: GitHub Actions triggered on push to `main` will:
|
||||
- Analyze commits to determine the next version (feat -> minor, fix -> patch, BREAKING CHANGE -> major).
|
||||
- Update `manifest.json`, `package.json`, and `versions.json`.
|
||||
- Generate `CHANGELOG.md`.
|
||||
- Generate GitHub Release notes.
|
||||
- Create a git tag and GitHub Release with built assets.
|
||||
|
||||
### 📝 Conventional Commits
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ SpeechNote 플러그인의 릴리스 프로세스 문서입니다.
|
|||
|
||||
3. GitHub Actions가 자동으로:
|
||||
- 버전 업데이트
|
||||
- CHANGELOG.md 생성
|
||||
- GitHub Release 노트 생성
|
||||
- GitHub Release 생성
|
||||
- 빌드 아티팩트 업로드
|
||||
|
||||
|
|
|
|||
21
SECURITY.md
21
SECURITY.md
|
|
@ -1,21 +0,0 @@
|
|||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Use this section to tell people about which versions of your project are
|
||||
currently being supported with security updates.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 5.1.x | :white_check_mark: |
|
||||
| 5.0.x | :x: |
|
||||
| 4.0.x | :white_check_mark: |
|
||||
| < 4.0 | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Use this section to tell people how to report a vulnerability.
|
||||
|
||||
Tell them where to go, how often they can expect to get an update on a
|
||||
reported vulnerability, what to expect if the vulnerability is accepted or
|
||||
declined, etc.
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
# Branch Protection 설정 가이드
|
||||
|
||||
GitHub repository의 main 브랜치를 보호하기 위한 설정 가이드입니다.
|
||||
|
||||
## 왜 Branch Protection이 필요한가?
|
||||
|
||||
Branch Protection은 다음을 보장합니다:
|
||||
|
||||
- ✅ 모든 코드가 리뷰를 거쳐 merge됨
|
||||
- ✅ CI 파이프라인 통과 없이는 merge 불가
|
||||
- ✅ 직접 main 브랜치에 push 방지
|
||||
- ✅ 코드 품질 유지
|
||||
|
||||
## 설정 방법
|
||||
|
||||
### 1. GitHub Repository 설정 접근
|
||||
|
||||
1. **GitHub Repository로 이동**: https://github.com/asyouplz/SpeechNote
|
||||
2. **Settings 탭 클릭** (repository 상단 메뉴)
|
||||
3. 왼쪽 사이드바에서 **"Branches"** 클릭 (Code and automation 섹션)
|
||||
|
||||
### 2. Branch Protection Rule 추가
|
||||
|
||||
1. **"Add branch protection rule"** 버튼 클릭
|
||||
2. **Branch name pattern**: `main` 입력
|
||||
|
||||
### 3. 보호 규칙 설정
|
||||
|
||||
다음 옵션들을 체크:
|
||||
|
||||
#### Required (필수)
|
||||
|
||||
- ✅ **Require a pull request before merging**
|
||||
- ✅ "Require approvals" 체크
|
||||
- Approvals 수: `1` 입력
|
||||
- ✅ **Require status checks to pass before merging**
|
||||
|
||||
- ✅ "Require branches to be up to date before merging" 체크
|
||||
- 검색창에서 다음 status checks 추가:
|
||||
- `Code Quality Check`
|
||||
- `Build Test`
|
||||
|
||||
> **참고**: Status checks는 최소 한 번 이상 CI가 실행된 후에야 선택 가능합니다.
|
||||
> PR을 하나 생성하고 CI를 실행한 후 이 설정을 추가하세요.
|
||||
|
||||
#### Optional but Recommended (선택적, 권장)
|
||||
|
||||
- ✅ **Do not allow bypassing the above settings**
|
||||
|
||||
- 관리자도 규칙을 우회할 수 없도록 강제
|
||||
|
||||
- ✅ **Require conversation resolution before merging**
|
||||
|
||||
- PR 코멘트가 모두 resolved되어야 merge 가능
|
||||
|
||||
- ✅ **Lock branch**
|
||||
- main 브랜치를 read-only로 만들기 (선택적)
|
||||
|
||||
### 4. 설정 저장
|
||||
|
||||
- 페이지 하단의 **"Create"** 버튼 클릭
|
||||
|
||||
## 설정 검증
|
||||
|
||||
Branch Protection이 올바르게 설정되었는지 확인:
|
||||
|
||||
1. **새 PR 생성**:
|
||||
|
||||
```bash
|
||||
git checkout -b test-branch
|
||||
echo "test" >> test.txt
|
||||
git add test.txt
|
||||
git commit -m "test: branch protection"
|
||||
git push origin test-branch
|
||||
```
|
||||
|
||||
2. **GitHub에서 PR 생성**
|
||||
|
||||
3. **다음 사항 확인**:
|
||||
- [ ] CI가 자동으로 실행됨
|
||||
- [ ] CI 통과 전에는 merge 버튼이 비활성화됨
|
||||
- [ ] "Merge" 대신 "Merge when checks pass" 표시
|
||||
- [ ] 1명의 approval 필요 표시
|
||||
|
||||
## Status Checks가 안 보일 때
|
||||
|
||||
Status checks는 CI가 최소 한 번 실행된 후에만 선택 가능합니다:
|
||||
|
||||
1. **먼저 PR 생성하고 CI 실행**:
|
||||
|
||||
- 아무 변경사항으로 PR을 생성
|
||||
- CI가 완료될 때까지 대기
|
||||
|
||||
2. **다시 Branch Protection 설정으로 이동**:
|
||||
|
||||
- Settings → Branches → Edit rule
|
||||
- "Require status checks to pass" 섹션에서
|
||||
- 검색창에 체크할 항목들이 나타남
|
||||
|
||||
3. **필요한 checks 선택**:
|
||||
- `Code Quality Check`
|
||||
- `Build Test`
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Settings" 탭이 안 보여요
|
||||
|
||||
- Repository의 owner 또는 admin 권한이 필요합니다
|
||||
- Collaborator라면 owner에게 admin 권한을 요청하세요
|
||||
|
||||
### Status checks를 추가할 수 없어요
|
||||
|
||||
- CI 워크플로우가 최소 한 번 실행되어야 합니다
|
||||
- PR을 생성하고 CI가 완료된 후 다시 시도하세요
|
||||
|
||||
### CI를 우회하고 싶어요
|
||||
|
||||
- **권장하지 않습니다**. Branch protection의 목적을 훼손합니다
|
||||
- 긴급 hotfix가 필요한 경우:
|
||||
1. "Allow specified actors to bypass required pull requests" 체크
|
||||
2. 특정 사용자/팀만 우회 허용 (최소한으로 제한)
|
||||
|
||||
## 다음 단계
|
||||
|
||||
Branch Protection 설정 후:
|
||||
|
||||
1. ✅ 팀원들에게 새로운 워크플로우 안내
|
||||
2. ✅ [docs/RELEASE.md](RELEASE.md) 참조하여 릴리즈 프로세스 숙지
|
||||
3. ✅ Pre-commit hooks 설정: `npm install`
|
||||
|
||||
## 참고 자료
|
||||
|
||||
- [GitHub Branch Protection 공식 문서](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches)
|
||||
- [Status Checks 설정](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks)
|
||||
|
|
@ -1,205 +0,0 @@
|
|||
# Obsidian Plugin Lint Rules Guide
|
||||
|
||||
이 문서는 Obsidian 플러그인 개발 시 준수해야 하는 린트 규칙을 설명합니다. 이 규칙들은 [Obsidian 플러그인 리뷰 프로세스](https://github.com/obsidianmd/obsidian-releases)에서 자동으로 체크되는 항목들입니다.
|
||||
|
||||
## 로컬에서 린트 실행 방법
|
||||
|
||||
```bash
|
||||
# 기본 린트 체크
|
||||
npm run lint
|
||||
|
||||
# 자동 수정 가능한 항목 수정
|
||||
npm run lint:fix
|
||||
|
||||
# Obsidian 특화 린트 (상세 리포트)
|
||||
npm run lint:obsidian
|
||||
|
||||
# 경고도 에러로 처리 (CI와 동일한 엄격함)
|
||||
npm run lint:verbose
|
||||
```
|
||||
|
||||
## 주요 Required 규칙 (필수 수정)
|
||||
|
||||
### 1. Async/Await 사용
|
||||
|
||||
**규칙**: `@typescript-eslint/require-await`
|
||||
|
||||
async 함수는 반드시 `await` 표현식을 포함해야 합니다.
|
||||
|
||||
```typescript
|
||||
// ❌ 잘못된 예
|
||||
async function loadSettings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
// ✅ 올바른 예
|
||||
async function loadSettings() {
|
||||
const data = await this.loadData();
|
||||
return data || DEFAULT_SETTINGS;
|
||||
}
|
||||
|
||||
// ✅ 또는 async 제거
|
||||
function loadSettings() {
|
||||
return this.settings;
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 불필요한 Type Assertion 제거
|
||||
|
||||
**규칙**: `@typescript-eslint/no-unnecessary-type-assertion`
|
||||
|
||||
타입을 변경하지 않는 불필요한 type assertion은 제거해야 합니다.
|
||||
|
||||
```typescript
|
||||
// ❌ 잘못된 예
|
||||
const value = someValue as string as string;
|
||||
const element = document.createElement('div') as HTMLDivElement;
|
||||
|
||||
// ✅ 올바른 예
|
||||
const value = someValue as string;
|
||||
const element = document.createElement('div');
|
||||
```
|
||||
|
||||
### 3. Empty Object Type 사용 금지
|
||||
|
||||
**규칙**: `@typescript-eslint/ban-types`
|
||||
|
||||
빈 객체 타입 `{}`는 사용하지 않고 `object` 또는 `unknown`을 사용해야 합니다.
|
||||
|
||||
```typescript
|
||||
// ❌ 잘못된 예
|
||||
function processData(data: {}) {
|
||||
// ...
|
||||
}
|
||||
|
||||
// ✅ 올바른 예
|
||||
function processData(data: object) {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 또는 더 명확하게
|
||||
function processData(data: unknown) {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Floating Promises 처리
|
||||
|
||||
**규칙**: `@typescript-eslint/no-floating-promises`
|
||||
|
||||
Promise를 반환하는 함수는 적절히 처리해야 합니다.
|
||||
|
||||
```typescript
|
||||
// ❌ 잘못된 예
|
||||
someAsyncFunction(); // Promise가 처리되지 않음
|
||||
|
||||
// ✅ 올바른 예
|
||||
await someAsyncFunction();
|
||||
|
||||
// 또는 명시적으로 무시
|
||||
void someAsyncFunction();
|
||||
|
||||
// 또는 catch 처리
|
||||
someAsyncFunction().catch((error) => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
```
|
||||
|
||||
### 5. Deprecated API 사용 금지
|
||||
|
||||
Obsidian API의 deprecated 항목은 사용하지 않아야 합니다:
|
||||
|
||||
- `noticeEl` → `messageEl` 사용
|
||||
- `createElement` → Obsidian의 `createEl` 또는 `createDiv` 사용
|
||||
|
||||
```typescript
|
||||
// ❌ 잘못된 예
|
||||
const notice = new Notice('Message');
|
||||
notice.noticeEl.addClass('custom-class');
|
||||
|
||||
// ✅ 올바른 예
|
||||
const notice = new Notice('Message');
|
||||
notice.messageEl?.addClass('custom-class');
|
||||
```
|
||||
|
||||
## Obsidian 플러그인 특화 규칙
|
||||
|
||||
### UI Sentence Case
|
||||
|
||||
**규칙**: `obsidian/ui/sentence-case`
|
||||
|
||||
UI 텍스트는 sentence case를 사용해야 합니다 (첫 글자만 대문자).
|
||||
|
||||
```typescript
|
||||
// ❌ 잘못된 예
|
||||
addCommand({
|
||||
id: 'my-command',
|
||||
name: 'Convert Audio To Text', // Title Case
|
||||
});
|
||||
|
||||
// ✅ 올바른 예
|
||||
addCommand({
|
||||
id: 'my-command',
|
||||
name: 'Convert audio to text', // Sentence case
|
||||
});
|
||||
```
|
||||
|
||||
### Sample Code 제거
|
||||
|
||||
**규칙**: `obsidian/no-sample-code`
|
||||
|
||||
샘플 코드나 placeholder는 제거해야 합니다:
|
||||
|
||||
- `MyPlugin` → 실제 플러그인 이름으로 변경
|
||||
- `SampleSettingTab` → 실제 이름으로 변경
|
||||
- 샘플 커맨드 제거
|
||||
|
||||
### HTML Heading 금지
|
||||
|
||||
**규칙**: `obsidian/settings-tab/no-manual-html-headings`
|
||||
|
||||
Settings 탭에서 HTML heading 태그를 직접 사용하지 않아야 합니다.
|
||||
|
||||
```typescript
|
||||
// ❌ 잘못된 예
|
||||
containerEl.createEl('h2', { text: 'General Settings' });
|
||||
|
||||
// ✅ 올바른 예
|
||||
new Setting(containerEl).setName('General settings').setHeading();
|
||||
```
|
||||
|
||||
## Optional 규칙 (경고)
|
||||
|
||||
### 미사용 변수 및 Imports
|
||||
|
||||
**규칙**: `unused-imports/no-unused-vars`, `unused-imports/no-unused-imports`
|
||||
|
||||
사용되지 않는 변수나 imports는 자동으로 제거됩니다:
|
||||
|
||||
```bash
|
||||
npm run lint:fix
|
||||
```
|
||||
|
||||
underscore(`_`)로 시작하는 변수는 미사용으로 허용됩니다:
|
||||
|
||||
```typescript
|
||||
// ✅ 허용됨
|
||||
const _unusedVariable = someValue;
|
||||
function handler(_event: Event) {
|
||||
// event를 사용하지 않지만 signature가 필요한 경우
|
||||
}
|
||||
```
|
||||
|
||||
## CI 파이프라인 통합
|
||||
|
||||
모든 PR은 자동으로 이 린트 규칙들을 체크합니다:
|
||||
|
||||
1. GitHub PR 생성 시 자동 실행
|
||||
2. `Code Quality Check` job에서 린트 체크
|
||||
3. 에러 발생 시 PR 머지 차단
|
||||
|
||||
## 추가 리소스
|
||||
|
||||
- [Obsidian Plugin Guidelines](https://docs.obsidian.md/Plugins/Releasing/Plugin+guidelines)
|
||||
- [eslint-plugin-obsidian](https://github.com/obsidianmd/eslint-plugin)
|
||||
- [Obsidian Developer Docs](https://docs.obsidian.md/)
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
# Obsidian Review Bot Comment (PR #8004) — main 브랜치 기준
|
||||
|
||||
- Source: https://github.com/obsidianmd/obsidian-releases/pull/8004#issuecomment-3840783932
|
||||
- GitHub main SHA: 7531c3d2410fa964d6023fde75db6b234b34542c
|
||||
- Updated (UTC): 2026-02-03T11:34:35Z
|
||||
|
||||
---
|
||||
|
||||
## Required Findings (main 브랜치 기준)
|
||||
|
||||
> [!IMPORTANT]
|
||||
> 아래 링크는 **GitHub main 브랜치 커밋** 기준입니다.
|
||||
|
||||
---
|
||||
|
||||
### 'audio.sampleRate' may use Object's default stringification format ('[object Object]') when stringified.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/infrastructure/api/SettingsValidator.ts#L299-L299](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/infrastructure/api/SettingsValidator.ts#L299-L299)
|
||||
수정 주석: 객체가 될 수 있는 값은 String(...) 또는 JSON.stringify(...)로 명시 변환하고 타입을 좁힙니다.
|
||||
|
||||
### 'value' may use Object's default stringification format ('[object Object]') when stringified.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/progress/StatusMessage.ts#L273-L273](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/progress/StatusMessage.ts#L273-L273)
|
||||
수정 주석: 객체가 될 수 있는 값은 String(...) 또는 JSON.stringify(...)로 명시 변환하고 타입을 좁힙니다.
|
||||
|
||||
### Use sentence case for UI text.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L395-L395](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L395-L395)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L512-L512](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L512-L512)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L586-L586](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L586-L586)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L623-L623](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L623-L623)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L710-L710](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L710-L710)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L759-L759](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L759-L759)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L155-L155](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L155-L155)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L319-L319](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L319-L319)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L357-L357](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L357-L357)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L368-L368](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L368-L368)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L369-L369](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L369-L369)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L380-L380](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L380-L380)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L403-L403](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L403-L403)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L405-L405](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L405-L405)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabOptimized.ts#L473-L473](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabOptimized.ts#L473-L473)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabOptimized.ts#L482-L482](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabOptimized.ts#L482-L482)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabRefactored.ts#L156-L156](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabRefactored.ts#L156-L156)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L42-L42](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L42-L42)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L64-L64](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L64-L64)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L65-L65](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L65-L65)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L81-L81](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L81-L81)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L84-L84](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L84-L84)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L96-L96](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L96-L96)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/DeepgramSettings.ts#L581-L581](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/DeepgramSettings.ts#L581-L581)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L83-L83](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L83-L83)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L84-L84](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L84-L84)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L85-L85](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L85-L85)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L309-L309](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L309-L309)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
- [7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291)
|
||||
수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
|
||||
|
||||
---
|
||||
|
||||
## Optional Findings (main 브랜치 기준)
|
||||
|
||||
- (없음)
|
||||
|
||||
---
|
||||
|
||||
## Original Review Comment
|
||||
|
||||
```markdown
|
||||
Thank you for your submission, an automated scan of your plugin code's revealed the following issues:
|
||||
|
||||
### Required
|
||||
|
||||
[\[1\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/infrastructure/api/SettingsValidator.ts#L299-L299)
|
||||
'audio.sampleRate' may use Object's default stringification format ('[object Object]') when stringified.
|
||||
|
||||
[\[1\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/progress/StatusMessage.ts#L273-L273)
|
||||
'value' may use Object's default stringification format ('[object Object]') when stringified.
|
||||
|
||||
[\[1\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L395-L395)[\[2\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L512-L512)[\[3\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L586-L586)[\[4\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L623-L623)[\[5\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L710-L710)[\[6\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/EnhancedSettingsTab.ts#L759-L759)[\[7\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L155-L155)[\[8\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L319-L319)[\[9\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L357-L357)[\[10\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L368-L368)[\[11\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L369-L369)[\[12\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L380-L380)[\[13\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L403-L403)[\[14\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTab.ts#L405-L405)[\[15\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabOptimized.ts#L473-L473)[\[16\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabOptimized.ts#L482-L482)[\[17\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SettingsTabRefactored.ts#L156-L156)[\[18\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L42-L42)[\[19\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L64-L64)[\[20\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L65-L65)[\[21\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L81-L81)[\[22\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L84-L84)[\[23\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/SimpleSettingsTab.ts#L96-L96)[\[24\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/DeepgramSettings.ts#L581-L581)[\[25\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L83-L83)[\[26\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L84-L84)[\[27\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L85-L85)[\[28\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/components/ProviderSettings.ts#L309-L309)[\[29\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197)[\[30\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198)[\[31\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199)[\[32\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289)[\[33\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290)[\[34\]](https://github.com/asyouplz/SpeechNote/blob/7531c3d2410fa964d6023fde75db6b234b34542c/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291)
|
||||
Use sentence case for UI text.
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Optional
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
Do <b>NOT</b> open a new PR for re-validation.
|
||||
Once you have pushed some changes to your repository the bot will rescan within 6 hours
|
||||
If you think some of the required changes are incorrect, please comment with `/skip` and the reason why you think the results are incorrect.
|
||||
To run these checks locally, install the [eslint plugin](https://github.com/obsidianmd/eslint-plugin) in your project.
|
||||
Do <b>NOT</b> rebase this PR, this will be handled by the reviewer once the plugin has been approved.
|
||||
```
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
# Plan for PR #8004 Follow-up
|
||||
|
||||
- Source comment: https://github.com/obsidianmd/obsidian-releases/pull/8004#issuecomment-4007884875
|
||||
- Comment date: 2026-03-05
|
||||
- Branch baseline: `fix/pr8004-human-review`
|
||||
|
||||
## Review Summary
|
||||
|
||||
The reviewer has no more line-level comments for now, but asked for three remaining cleanup areas before a broader review:
|
||||
|
||||
1. Choose either Korean or English for the UI and logs.
|
||||
2. Prefix CSS selectors to avoid leaking styles outside the plugin.
|
||||
3. Review SVG creation.
|
||||
|
||||
## Decisions
|
||||
|
||||
### 1. UI and log language
|
||||
|
||||
- Choose English as the canonical language for user-facing UI copy and runtime logs.
|
||||
- Translate remaining Korean notices, labels, button text, ARIA labels, and log messages in the active settings and shared UI paths.
|
||||
- Leave developer comments unchanged unless they affect runtime text.
|
||||
|
||||
### 2. CSS selector prefixing
|
||||
|
||||
- Prefix provider-settings selectors with the existing `sn-` namespace.
|
||||
- Update the corresponding DOM class names in `ProviderSettings.ts`.
|
||||
- Keep selectors scoped under `.speech-to-text-settings` where practical.
|
||||
|
||||
### 3. SVG creation
|
||||
|
||||
- Audit the codebase for raw SVG HTML injection.
|
||||
- Keep using Obsidian's `setIcon(...)` helper and `document.createElementNS(...)` for programmatic SVG.
|
||||
- Only change code if a non-namespaced or string-based SVG path is found.
|
||||
|
||||
## Execution Order
|
||||
|
||||
1. Update shared settings/UI text and logs to English.
|
||||
2. Prefix provider-settings CSS classes and sync the TypeScript renderers.
|
||||
3. Finish the SVG audit and document whether code changes were needed.
|
||||
4. Run targeted validation: typecheck, lint, and focused tests if string or selector changes affect coverage.
|
||||
|
||||
## Validation Notes
|
||||
|
||||
- Search for remaining Korean runtime strings in `src/`.
|
||||
- Search for remaining unprefixed provider-settings selectors.
|
||||
- Search for raw `<svg` or `createEl('svg')` usage and confirm only safe creation paths remain.
|
||||
|
||||
## Additional Bot Follow-up
|
||||
|
||||
- Follow-up comment: https://github.com/obsidianmd/obsidian-releases/pull/8004#issuecomment-4029277995
|
||||
- Comment date: 2026-03-10
|
||||
|
||||
Applied follow-up cleanup:
|
||||
|
||||
1. Use sentence case for the `DragDropZone` helper text.
|
||||
2. Remove the unused `safeJsonParse` import flagged in `StatisticsDashboard.ts`.
|
||||
|
|
@ -1,209 +0,0 @@
|
|||
# PR #8004 Sentence Case Follow-up Plan
|
||||
|
||||
- Source comments:
|
||||
- https://github.com/obsidianmd/obsidian-releases/pull/8004#issuecomment-4060715550
|
||||
- https://github.com/obsidianmd/obsidian-releases/pull/8004#issuecomment-4061036624
|
||||
- Branch baseline: `origin/fix/pr8004-settings-sentence-case-followups`
|
||||
- Local verification date: 2026-03-15
|
||||
|
||||
## Goal
|
||||
|
||||
The review bot is still flagging UI copy that is not in sentence case.
|
||||
|
||||
For this follow-up, treat "sentence case" as:
|
||||
|
||||
- Capitalize only the first word of a sentence or label.
|
||||
- Keep brand names and acronyms as proper nouns when needed.
|
||||
- Avoid title-case nouns inside labels and dropdown options unless they are brand names.
|
||||
|
||||
## Current status
|
||||
|
||||
The issue is not fully fixed on the current remote follow-up branch.
|
||||
|
||||
The remaining work falls into two groups:
|
||||
|
||||
1. Active settings UI that the user can still reach now.
|
||||
2. Secondary settings components that are still present in the repository and may still be scanned by the review bot.
|
||||
|
||||
## Group 1: Active settings UI
|
||||
|
||||
### `src/ui/settings/SettingsTab.ts`
|
||||
|
||||
These strings still look likely to trigger the review bot:
|
||||
|
||||
- `Auto (intelligent selection)` -> `Automatic (recommended)`
|
||||
- `OpenAI whisper` -> `OpenAI Whisper`
|
||||
- `Cost optimized` -> `Cost-optimized`
|
||||
- `Performance optimized` -> `Performance-optimized`
|
||||
- `Quality optimized` -> `Quality-optimized`
|
||||
- `Round robin` -> `Round-robin`
|
||||
- `A/B testing` -> `A/B testing`
|
||||
- Keep as-is only if the rule accepts acronym-style casing.
|
||||
- If the bot still flags it, change to `A/B tests`.
|
||||
- `Provider API keys` -> `Provider API keys`
|
||||
- This may still be flagged because of internal capitalization.
|
||||
- Safer alternative: `API keys for providers`
|
||||
- `OpenAI API key` -> `OpenAI API key`
|
||||
- Keep brand capitalization, but verify whether the rule tolerates this.
|
||||
- If not, use `API key for OpenAI`.
|
||||
- `Enter your OpenAI API key for whisper transcription` -> `Enter your OpenAI API key for Whisper transcription`
|
||||
- `Saved the OpenAI API key.` -> `Saved the OpenAI API key.`
|
||||
- If still flagged, use `Saved the API key for OpenAI.`
|
||||
- `Deepgram API key saved.` -> `Saved the Deepgram API key.`
|
||||
- `Whisper model` -> `Whisper model`
|
||||
- `Debug information` -> `Debug information`
|
||||
- `Buy me a coffee` -> `Buy me a coffee`
|
||||
|
||||
Representative lines to revisit:
|
||||
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:155)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:156)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:262)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:263)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:264)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:265)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:266)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:298)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:369)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:370)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:381)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:414)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:527)
|
||||
- [SettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SettingsTab.ts:652)
|
||||
|
||||
### `src/ui/settings/SimpleSettingsTab.ts`
|
||||
|
||||
These are the same issue in a smaller settings surface:
|
||||
|
||||
- `Auto (intelligent selection)` -> `Automatic (recommended)`
|
||||
- `OpenAI whisper` -> `OpenAI Whisper`
|
||||
- `OpenAI API key` -> `OpenAI API key`
|
||||
- Fallback if flagged: `API key for OpenAI`
|
||||
- `Enter your OpenAI API key for whisper` -> `Enter your OpenAI API key for Whisper`
|
||||
- `Deepgram model` -> `Deepgram model`
|
||||
- `Debug information` -> `Debug information`
|
||||
- `Enhanced` -> `Enhanced`
|
||||
- `Base (economy)` -> `Base (economy)`
|
||||
- These may be acceptable if treated as product labels; verify after the first pass.
|
||||
|
||||
Representative lines to revisit:
|
||||
|
||||
- [SimpleSettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SimpleSettingsTab.ts:41)
|
||||
- [SimpleSettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SimpleSettingsTab.ts:42)
|
||||
- [SimpleSettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SimpleSettingsTab.ts:64)
|
||||
- [SimpleSettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SimpleSettingsTab.ts:65)
|
||||
- [SimpleSettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SimpleSettingsTab.ts:95)
|
||||
- [SimpleSettingsTab.ts](/home/tslee/SpeechNote/src/ui/settings/SimpleSettingsTab.ts:155)
|
||||
|
||||
## Group 2: Secondary settings components still in the repository
|
||||
|
||||
These are still present on the branch and were explicitly referenced by the review bot comment.
|
||||
|
||||
### `src/ui/settings/components/ApiKeyValidator.ts`
|
||||
|
||||
Potentially problematic sentence-case copy:
|
||||
|
||||
- `The API key is valid, but it may not have access to whisper.` -> `The API key is valid, but it may not have access to Whisper.`
|
||||
|
||||
Representative line:
|
||||
|
||||
- [ApiKeyValidator.ts](/home/tslee/SpeechNote/src/ui/settings/components/ApiKeyValidator.ts:73)
|
||||
|
||||
### `src/ui/settings/components/AudioSettings.ts`
|
||||
|
||||
Potentially problematic copy:
|
||||
|
||||
- `Whisper-1 (default)` -> `Whisper-1 (default)`
|
||||
- Likely acceptable, but the bot has flagged this area before.
|
||||
- `Verbose JSON (detailed output)` -> `Verbose JSON (detailed output)`
|
||||
- If flagged, change to `Detailed JSON output`
|
||||
- `WebVTT format (VTT)` -> `WebVTT format (VTT)`
|
||||
- Likely acceptable because of the proper acronym.
|
||||
- `Maximum file size` and `25 MB` are fine semantically; only change if the bot flags exact casing nearby.
|
||||
|
||||
Representative lines:
|
||||
|
||||
- [AudioSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/AudioSettings.ts:40)
|
||||
- [AudioSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/AudioSettings.ts:44)
|
||||
- [AudioSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/AudioSettings.ts:63)
|
||||
- [AudioSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/AudioSettings.ts:65)
|
||||
- [AudioSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/AudioSettings.ts:103)
|
||||
- [AudioSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/AudioSettings.ts:114)
|
||||
|
||||
### `src/ui/settings/components/ProviderSettings.ts`
|
||||
|
||||
Still contains sentence-case candidates:
|
||||
|
||||
- `Automatic (recommended)` is already improved, but verify whether the bot still flags brand-heavy option labels.
|
||||
- `OpenAI whisper` -> `OpenAI Whisper`
|
||||
- `Cost optimized` -> `Cost-optimized`
|
||||
- `Performance optimized` -> `Performance-optimized`
|
||||
- `Quality optimized` -> `Quality-optimized`
|
||||
- `Round robin` -> `Round-robin`
|
||||
- `A/B testing` -> `A/B tests` if needed
|
||||
- `Performance metrics` -> `Performance metrics`
|
||||
- `Provider comparison` -> `Provider comparison`
|
||||
|
||||
Representative lines:
|
||||
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:83)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:84)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:85)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:222)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:223)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:224)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:225)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:226)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:285)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:352)
|
||||
- [ProviderSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ProviderSettings.ts:410)
|
||||
|
||||
### `src/ui/settings/components/ShortcutSettings.ts`
|
||||
|
||||
Representative flagged copy:
|
||||
|
||||
- `Shortcut conflicts detected` -> `Shortcut conflicts detected`
|
||||
- `Recording... (press Escape to cancel)` -> `Recording... (press Escape to cancel)`
|
||||
|
||||
These already look sentence-case compliant, so this file should be rechecked carefully before changing anything.
|
||||
|
||||
Representative lines:
|
||||
|
||||
- [ShortcutSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ShortcutSettings.ts:153)
|
||||
- [ShortcutSettings.ts](/home/tslee/SpeechNote/src/ui/settings/components/ShortcutSettings.ts:488)
|
||||
|
||||
## Proposed execution order
|
||||
|
||||
1. Fix the active settings surfaces first:
|
||||
- `SettingsTab.ts`
|
||||
- `SimpleSettingsTab.ts`
|
||||
2. Fix the explicitly referenced secondary components:
|
||||
- `ApiKeyValidator.ts`
|
||||
- `AudioSettings.ts`
|
||||
- `ProviderSettings.ts`
|
||||
- `ShortcutSettings.ts` only if a real sentence-case issue is confirmed
|
||||
3. Re-run repository-wide copy checks with targeted grep:
|
||||
- `OpenAI whisper`
|
||||
- `Auto (intelligent selection)`
|
||||
- `Cost optimized`
|
||||
- `Performance optimized`
|
||||
- `Quality optimized`
|
||||
- `Round robin`
|
||||
- `Debug information`
|
||||
4. Run full validation:
|
||||
- `npm run build:css`
|
||||
- `npm run typecheck`
|
||||
- `npm run build`
|
||||
- `npx jest --runInBand`
|
||||
|
||||
## Notes
|
||||
|
||||
- The local ESLint setup in this repository does not currently expose the review bot's `obsidianmd/ui/sentence-case` rule, so validation here must be done by direct string audit plus normal build/test checks.
|
||||
- Prefer minimal wording changes over broad copy rewrites.
|
||||
- Preserve proper nouns:
|
||||
- `OpenAI`
|
||||
- `Deepgram`
|
||||
- `Whisper`
|
||||
- `WebVTT`
|
||||
- `JSON`
|
||||
- `API`
|
||||
35
package-lock.json
generated
35
package-lock.json
generated
|
|
@ -12,7 +12,6 @@
|
|||
"@commitlint/cli": "^20.3.1",
|
||||
"@commitlint/config-conventional": "^20.3.1",
|
||||
"@deepgram/sdk": "^3.9.0",
|
||||
"@semantic-release/changelog": "^6.0.3",
|
||||
"@semantic-release/exec": "^7.1.0",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"@semantic-release/github": "^12.0.2",
|
||||
|
|
@ -3007,40 +3006,6 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@semantic-release/changelog": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz",
|
||||
"integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@semantic-release/error": "^3.0.0",
|
||||
"aggregate-error": "^3.0.0",
|
||||
"fs-extra": "^11.0.0",
|
||||
"lodash": "^4.17.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.17"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"semantic-release": ">=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@semantic-release/changelog/node_modules/fs-extra": {
|
||||
"version": "11.3.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz",
|
||||
"integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.14"
|
||||
}
|
||||
},
|
||||
"node_modules/@semantic-release/commit-analyzer": {
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.1.tgz",
|
||||
|
|
|
|||
|
|
@ -26,14 +26,12 @@
|
|||
"test:debug": "DEBUG=true node --inspect-brk ./node_modules/.bin/jest --runInBand",
|
||||
"test:changed": "jest -o",
|
||||
"test:update-snapshots": "jest -u",
|
||||
"coverage:report": "node scripts/open-coverage.js",
|
||||
"coverage:clean": "rm -rf coverage .jest-cache",
|
||||
"pretest": "npm run lint && npm run typecheck",
|
||||
"version:update": "node scripts/update-version.mjs",
|
||||
"semantic-release": "semantic-release",
|
||||
"release:dry-run": "semantic-release --dry-run",
|
||||
"release:debug": "semantic-release --debug",
|
||||
"posttest": "npm run coverage:report",
|
||||
"clean": "rm -rf main.js main.js.map coverage .jest-cache",
|
||||
"clean:all": "npm run clean && rm -rf node_modules",
|
||||
"typecheck": "npx tsc -noEmit",
|
||||
|
|
@ -55,7 +53,6 @@
|
|||
"@commitlint/cli": "^20.3.1",
|
||||
"@commitlint/config-conventional": "^20.3.1",
|
||||
"@deepgram/sdk": "^3.9.0",
|
||||
"@semantic-release/changelog": "^6.0.3",
|
||||
"@semantic-release/exec": "^7.1.0",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"@semantic-release/github": "^12.0.2",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ module.exports = {
|
|||
plugins: [
|
||||
'@semantic-release/commit-analyzer',
|
||||
'@semantic-release/release-notes-generator',
|
||||
'@semantic-release/changelog',
|
||||
[
|
||||
'@semantic-release/npm',
|
||||
{
|
||||
|
|
@ -19,13 +18,7 @@ module.exports = {
|
|||
[
|
||||
'@semantic-release/git',
|
||||
{
|
||||
assets: [
|
||||
'CHANGELOG.md',
|
||||
'package.json',
|
||||
'package-lock.json',
|
||||
'manifest.json',
|
||||
'versions.json',
|
||||
],
|
||||
assets: ['package.json', 'package-lock.json', 'manifest.json', 'versions.json'],
|
||||
message: 'chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}',
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const reportPath = path.join(__dirname, '..', 'coverage', 'lcov-report', 'index.html');
|
||||
|
||||
if (!fs.existsSync(reportPath)) {
|
||||
console.warn('Coverage report not found. Skipping open step.');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
console.log(`Coverage report: ${reportPath}`);
|
||||
Loading…
Reference in a new issue