diff --git a/AGENTS.md b/AGENTS.md index f735f87..4698354 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -80,7 +80,7 @@ CI 또는 릴리즈 검증 시에는 APK 산출물 확인을 반드시 포함한 - `app/build/outputs/apk/debug/app-debug.apk` 파일 존재 여부 확인 - GitHub Release에서 APK 다운로드 가능 여부와 크기가 0보다 큰지 확인 -- 태그 전에 `pwsh scripts/verify-release-export.ps1` — `D:\Build`의 AAB·mapping·6개 +- 태그 전에 `pwsh scripts/verify-release-export.ps1` — `D:\Build`의 AAB·mapping·7개 로케일 노트가 현재 versionName/versionCode로 존재하고 비어 있지 않은지 확인한다. **이것이 릴리스 자산의 유일한 영구 사본 검증이다**(D066). - GitLab 쪽 검증은 `GITLAB_RELEASE_MIRROR=true`일 때만 적용된다. **2026-08-05(v2.32.2)부터 @@ -108,7 +108,7 @@ Android 프로젝트가 아직 초기화되지 않았다면 먼저 표준 Kotlin - `markleaf-v-vc.aab` — `app/build/outputs/bundle/release/app-release.aab`(서명) 복사본 - `markleaf-v-vc.mapping.txt` — R8 mapping(Play 크래시 deobfuscation; 있으면 복사). AAB가 없으면 task가 예외를 던지지만 mapping은 warn만 남기고 넘어가므로, AAB가 나왔다고 mapping도 나왔다고 볼 수 없다 — `scripts/verify-release-export.ps1`이 이것까지 확인한다 -- `markleaf-v-vc-release-notes.txt` — **모든 스토어 로케일**(ko-KR / en-US / ja-JP / de-DE / fr-FR / es-ES)의 `fastlane/metadata/android//changelogs/.txt`를 읽어 하나의 파일에 로케일 태그 블록을 연달아 묶음 +- `markleaf-v-vc-release-notes.txt` — **모든 스토어 로케일**(ko-KR / en-US / ja-JP / zh-CN / de-DE / fr-FR / es-ES)의 `fastlane/metadata/android//changelogs/.txt`를 읽어 하나의 파일에 로케일 태그 블록을 연달아 묶음 TXT 파일은 바로 복사/붙여넣기 가능해야 하며, 각 로케일 릴리즈 노트만 아래 태그로 감싼다. 태그 밖에는 어떤 설명이나 문구도 넣지 않는다 (Gradle task가 이 형식을 보장한다). @@ -133,7 +133,7 @@ TXT 파일은 바로 복사/붙여넣기 가능해야 하며, 각 로케일 릴 ``` -따라서 cut 전에 **6개 스토어 로케일 fastlane changelog 전부**(BCP 47 region 대문자)가 새 versionCode 파일명으로 작성되어 있어야 task가 통과한다. 하나라도 누락되거나 로케일당 500자를 넘으면 task가 명시적으로 실패한다. +따라서 cut 전에 **7개 스토어 로케일 fastlane changelog 전부**(BCP 47 region 대문자)가 새 versionCode 파일명으로 작성되어 있어야 task가 통과한다. 하나라도 누락되거나 로케일당 500자를 넘으면 task가 명시적으로 실패한다. GitLab CI용 산출물은 `-Pmarkleaf.releaseExportDir=`와 함께 `:app:exportReleaseArtifacts`를 실행한다. 이 task는 위 3개 파일에 서명 APK를 더해 내보내며, @@ -185,7 +185,7 @@ GitLab CI용 산출물은 `-Pmarkleaf.releaseExportDir=`와 함께 Play 제출용 서명 AAB와 릴리즈 노트 TXT를 내보낸다(서명 AAB는 CI 릴리스 산출물 기준). 업로드는 메인테이너가 수동으로 한다. 5. **마감 + 보고.** 해결된 이슈에 감사 댓글을 달고 닫되, 사용자측 확인이 남으면 열어 둔다. - 굵직한 변경이면 README·랜딩 페이지의 버전 표기를 6개 언어 모두 갱신하고 + 굵직한 변경이면 README·랜딩 페이지의 버전 표기를 7개 언어 모두 갱신하고 `scripts/verify-landing-versions.ps1`로 검증한다. 마지막으로 무엇이 나갔는지, 이슈 상태, 릴리스 링크를 보고한다. @@ -258,9 +258,9 @@ Markleaf 사용자 대부분이 영어를 쓰므로 공개 문서의 기본 언 - 이슈 번호(`#123`), 코드 식별자, 파일 경로, 제품명은 번역하지 않고 그대로 둔다. - v2.16.0 이전 항목은 영어화 대상이 아니다. `CHANGELOG.md`의 "Earlier releases (Korean)" 이후 구간과 `CHANGELOG.ko.md`에 한국어로 보존되어 있으며 소급 번역하지 않는다. -Play/F-Droid용 `fastlane/metadata/android//changelogs/.txt`는 기존대로 **6개 스토어 로케일 전부** 작성한다. 이 지침은 [Release Artifact Export](#release-artifact-export)의 6개 로케일 요구사항을 대체하지 않는다. +Play/F-Droid용 `fastlane/metadata/android//changelogs/.txt`는 기존대로 **7개 스토어 로케일 전부** 작성한다. 이 지침은 [Release Artifact Export](#release-artifact-export)의 7개 로케일 요구사항을 대체하지 않는다. -README와 GitHub Pages 랜딩도 영어가 기본이며 앱이 지원하는 6개 언어(en · ko · ja · de · es · fr)로 병기한다. 영어판이 canonical이고 `x-default`다. 공개 표면의 버전 표기를 갱신할 때는 6개 언어를 함께 갱신하고 `scripts/verify-landing-versions.ps1`로 검증한다. +README와 GitHub Pages 랜딩도 영어가 기본이며 앱이 지원하는 7개 언어(en · ko · ja · zh · de · es · fr)로 병기한다. 영어판이 canonical이고 `x-default`다. 공개 표면의 버전 표기를 갱신할 때는 7개 언어를 함께 갱신하고 `scripts/verify-landing-versions.ps1`로 검증한다. ### GitHub 공개 표면 콘텐츠 — 영어 기본 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 406383e..9ac7a88 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -240,7 +240,7 @@ val writeReleaseArtifacts: (File, Boolean) -> Unit = { exportDir, includeApk -> // Every locale must have a changelog for this versionCode; fail fast so // a cut never ships notes that silently drop a locale. val fastlaneRoot = rootProject.file("fastlane/metadata/android") - val noteLocales = listOf("ko-KR", "en-US", "ja-JP", "de-DE", "fr-FR", "es-ES") + val noteLocales = listOf("ko-KR", "en-US", "ja-JP", "zh-CN", "de-DE", "fr-FR", "es-ES") val sources = noteLocales.associateWith { File(fastlaneRoot, "$it/changelogs/$versionCode.txt") } val missing = noteLocales.filter { !sources.getValue(it).isFile } diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt index fec032e..32eeb67 100644 --- a/fastlane/metadata/android/de-DE/full_description.txt +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -27,7 +27,7 @@ Design und Barrierefreiheit: * Homescreen-Widget, biometrische Sperre, Option zum Blockieren von Screenshots * Hell / dunkel / Material You, Tablet-Layout mit zwei Spalten -* Oberfläche in 6 Sprachen (Koreanisch, Englisch, Spanisch, Japanisch, Französisch, Deutsch) +* Oberfläche in 7 Sprachen (Koreanisch, Englisch, Spanisch, Japanisch, Französisch, Deutsch, Vereinfachtes Chinesisch) Datenschutz und Verteilung: diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 864d38c..4a88ba4 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -27,7 +27,7 @@ Design and accessibility: * Home screen widget, biometric lock, screenshot blocking option * Light / dark / Material You, tablet two-pane layout -* UI in 6 languages (Korean, English, Spanish, Japanese, French, German) +* UI in 7 languages (Korean, English, Spanish, Japanese, French, German, Simplified Chinese) Privacy and distribution: diff --git a/fastlane/metadata/android/es-ES/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt index fffd56c..85d6265 100644 --- a/fastlane/metadata/android/es-ES/full_description.txt +++ b/fastlane/metadata/android/es-ES/full_description.txt @@ -27,7 +27,7 @@ Diseño y accesibilidad: * Widget de pantalla de inicio, bloqueo biométrico, opción de bloqueo de capturas de pantalla * Claro / oscuro / Material You, diseño de dos paneles para tablets -* Interfaz en 6 idiomas (coreano, inglés, español, japonés, francés, alemán) +* Interfaz en 7 idiomas (coreano, inglés, español, japonés, francés, alemán, chino simplificado) Privacidad y distribución: diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt index 09875e8..74a04fb 100644 --- a/fastlane/metadata/android/fr-FR/full_description.txt +++ b/fastlane/metadata/android/fr-FR/full_description.txt @@ -27,7 +27,7 @@ Design et accessibilité : * Widget d'écran d'accueil, verrouillage biométrique, option de blocage des captures d'écran * Clair / sombre / Material You, disposition à deux volets pour tablettes -* Interface en 6 langues (coréen, anglais, espagnol, japonais, français, allemand) +* Interface en 7 langues (coréen, anglais, espagnol, japonais, français, allemand, chinois simplifié) Confidentialité et distribution : diff --git a/fastlane/metadata/android/ja-JP/full_description.txt b/fastlane/metadata/android/ja-JP/full_description.txt index a8e4e6d..428a397 100644 --- a/fastlane/metadata/android/ja-JP/full_description.txt +++ b/fastlane/metadata/android/ja-JP/full_description.txt @@ -27,7 +27,7 @@ Markleaf は Android 向けのローカルファースト Markdown ノートア * ホーム画面ウィジェット、生体認証ロック、スクリーンショット遮断オプション * ライト / ダーク / Material You、タブレット向け 2ペインレイアウト -* 6 言語の UI(韓国語、英語、スペイン語、日本語、フランス語、ドイツ語) +* 7 言語の UI(韓国語、英語、スペイン語、日本語、フランス語、ドイツ語、簡体字中国語) プライバシーと配布: diff --git a/fastlane/metadata/android/ko-KR/full_description.txt b/fastlane/metadata/android/ko-KR/full_description.txt index 41f80ff..00e5384 100644 --- a/fastlane/metadata/android/ko-KR/full_description.txt +++ b/fastlane/metadata/android/ko-KR/full_description.txt @@ -27,7 +27,7 @@ Markleaf는 Android용 로컬 우선(local-first) Markdown 메모 앱입니다. * 홈 화면 위젯, 생체 인증 잠금, 스크린샷 차단 옵션 * 라이트 / 다크 / Material You, 태블릿 2-pane 레이아웃 -* 6개 언어 UI (한국어, 영어, 스페인어, 일본어, 프랑스어, 독일어) +* 7개 언어 UI (한국어, 영어, 스페인어, 일본어, 프랑스어, 독일어, 중국어 간체) 개인정보와 배포 원칙: diff --git a/fastlane/metadata/android/zh-CN/changelogs/124.txt b/fastlane/metadata/android/zh-CN/changelogs/124.txt new file mode 100644 index 0000000..62e05be --- /dev/null +++ b/fastlane/metadata/android/zh-CN/changelogs/124.txt @@ -0,0 +1 @@ +编辑器中的两处配色修复。引用块和分隔线此前使用固定的灰色,不随主题变化,在浅色页面上的对比度低于正文保持可读所需的程度;现在它们会像编辑器中其他结构标记一样跟随主题。标记笔记已锁定为预览模式的琥珀色徽章,在浅色顶栏上也过淡,现已加深。深色主题不变。 diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt new file mode 100644 index 0000000..ea6cf56 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/full_description.txt @@ -0,0 +1,37 @@ +Markleaf 是一款面向 Android 的本地优先 Markdown 笔记应用。 + +书写纯 Markdown,用内联标签整理,即时搜索,让笔记始终由你掌控。Markleaf 将笔记保存在本地 Room 数据库中,并且不声明 INTERNET 权限。 + +书写与预览: + +* 实时 Markdown 预览,支持实时语法着色 +* GFM 表格、复选框、引用、提示块(> [!NOTE] …) +* 10 种语言的代码块语法高亮 +* 脚注引用 ↔ 定义跳转、Wiki 链接与反向链接 +* 智能格式化,为选区或单词加上粗体/斜体/删除线/代码 +* 专注模式、词数与阅读时长统计、笔记内查找替换 + +整理与导航: + +* 只需在正文中写 #标签 即可自动索引(无需文件夹) +* 快速切换与 SQLite FTS 全文搜索 +* 置顶、归档、回收站与恢复流程 + +同步与导入(No-Cloud): + +* 通过 SAF 选择文件夹,把每篇笔记镜像为 .md 文件 +* 用打开或分享的方式导入外部 .md / .txt 文件 +* 单篇与全部笔记的 Markdown 导出,以及系统分享 + +设计与无障碍: + +* 主屏幕小组件、生物识别锁、屏蔽截屏选项 +* 浅色 / 深色 / Material You,平板双栏布局 +* 7 种语言界面(韩语、英语、西班牙语、日语、法语、德语、简体中文) + +隐私与分发: + +* 无需账户,没有 Markleaf 服务器 +* 没有分析、广告、跟踪、Firebase 或专有崩溃报告 SDK +* 不声明 INTERNET 权限,已关闭 Android 自动备份 +* 只有在你明确执行导出、分享、打开外部链接或选择 SAF 文件夹等由系统中介的操作时,用户数据才会离开设备 diff --git a/fastlane/metadata/android/zh-CN/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt new file mode 100644 index 0000000..4f31b03 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/short_description.txt @@ -0,0 +1 @@ +本地优先的 Markdown 笔记,支持标签、搜索与文件导出 diff --git a/scripts/verify-release-export.ps1 b/scripts/verify-release-export.ps1 index d9ee5cb..f3cbd0a 100644 --- a/scripts/verify-release-export.ps1 +++ b/scripts/verify-release-export.ps1 @@ -37,7 +37,7 @@ Set-StrictMode -Version Latest # app/build.gradle.kts 의 noteLocales 와 같은 목록이어야 한다. 릴리스 노트 TXT 는 # 로케일마다 ... 블록을 연달아 담는다(writeReleaseArtifacts). -$StoreLocales = @("ko-KR", "en-US", "ja-JP", "de-DE", "fr-FR", "es-ES") +$StoreLocales = @("ko-KR", "en-US", "ja-JP", "zh-CN", "de-DE", "fr-FR", "es-ES") function Resolve-UnderRoot([string]$Path) { if ([System.IO.Path]::IsPathRooted($Path)) { return $Path } diff --git a/scripts/verify-release-notes.ps1 b/scripts/verify-release-notes.ps1 index 2d5c8f3..219ddca 100644 --- a/scripts/verify-release-notes.ps1 +++ b/scripts/verify-release-notes.ps1 @@ -41,7 +41,7 @@ $PlayNoteLimit = 500 $PlayNoteWarnAt = [int][math]::Floor($PlayNoteLimit * 0.9) # app/build.gradle.kts 의 noteLocales 와 같은 목록이어야 한다. -$StoreLocales = @("ko-KR", "en-US", "ja-JP", "de-DE", "fr-FR", "es-ES") +$StoreLocales = @("ko-KR", "en-US", "ja-JP", "zh-CN", "de-DE", "fr-FR", "es-ES") function Resolve-UnderRoot([string]$Path) { if ([System.IO.Path]::IsPathRooted($Path)) { return $Path }