Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions CHANGELOG.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ Markleaf의 주요 변경 사항을 기록합니다. 영어판이 기본이며 G

v2.15.3 이전 항목은 이 파일에만 한국어로 보존되어 있습니다.

## v2.32.0 - 노트를 정리해 보는 두 가지 방법 (Two ways to arrange your notes) - 2026-07-25

두 가지 모두 같은 제보자의 요청이며, 기존 동작을 대체하지 않는 선택지입니다. 직접 바꾸기 전까지 목록의 모양도, 노트의 제목도 그대로입니다. 권한 변경과 저장 형식 변경은 없습니다.

### Added
- **노트를 바둑판으로 볼 수 있습니다 (#279).** **설정 → 노트 및 검색 → 노트 목록 배치**에 한 열짜리 *목록*과 함께 *바둑판*이 생겼습니다. 기본값은 그대로 *목록*입니다. 바둑판은 같은 노트를 카드로 배치하며 화면 너비가 허용하는 만큼 열을 늘립니다 — 폰에서는 두 열, 태블릿에서는 더 많이, 편집기 옆의 태블릿 목록 창에서는 폭에 맞춰 줄어듭니다. 나머지는 그대로입니다: 오늘 / 어제 / 고정 섹션은 여전히 노트를 묶고, 카드를 길게 누르면 고정 / 보관 / 잠금 / 휴지통이 열리며, *노트 미리보기 표시*가 발췌와 수정 시각의 표시 여부를 계속 결정합니다.
- **노트 제목을 어느 줄에서 가져올지 고를 수 있습니다 (#280).** Markleaf는 노트 *어디에 있든* 첫 Markdown 제목을 노트 제목으로 삼았습니다. 그래서 문단으로 시작하고 아래쪽에 제목이 있는 노트는 그 제목으로 불렸습니다 — 맨 위에서 열 줄 아래의 편집이 노트 이름을 바꾸는 셈이었습니다. 이제 **설정 → 노트 및 검색 → 노트 제목**에서 *첫 줄*을 고를 수 있습니다. 언제나 비어 있지 않은 첫 줄을 쓰고, 그 줄이 제목이면 `#` 표시를 떼어 냅니다. 기본값은 여전히 *첫 제목 줄*이라 바꾸지 않으면 아무 이름도 달라지지 않습니다. 전환하면 이미 가지고 있는 노트의 제목이 다시 계산되며, 수정 시각은 건드리지 않으므로 목록 순서도 그대로입니다. 동기화 폴더의 파일명은 **동기화 센터 → 파일명을 노트 제목으로 정리**로 함께 맞출 수 있습니다.

## v2.31.0 - 노트 안에서 Markleaf의 기록을 걷어내다 (Your notes, without Markleaf's bookkeeping in them) - 2026-07-24

동기화가 기록을 어디에 두는지에 대한 선택형 변경 하나와, 모든 언어에서 한국어로 나오던 텍스트 수정 하나입니다. 권한 변경은 없으며, 새 옵션을 켜지 않는 한 저장 형식도 그대로입니다.
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ All notable changes to Markleaf are documented in this file. This English editio

> 💬 **Questions or feedback?** Start a thread in [GitHub Discussions](https://github.com/jeiel85/markleaf-android/discussions). Bug reports still belong in [Issues](https://github.com/jeiel85/markleaf-android/issues).

## v2.32.0 - Two ways to arrange your notes - 2026-07-25

Both additions came from the same reporter, and both are choices rather than replacements: your list keeps its shape and your notes keep their titles until you say otherwise. No permission or storage-format changes.

### Added
- **See your notes as a grid (#279).** **Settings → Notes & search → Notes list layout** now offers *Grid* alongside the one-column *List*, which stays the default. Grid lays the same notes out as cards, in as many columns as the screen fits — two on a phone, more on a tablet, and it narrows correctly in the tablet's list pane beside the editor. Everything else about the list is unchanged: the Today / Yesterday / Pinned sections still group your notes, long-pressing a card still opens pin / archive / lock / trash, and *Show note previews* still governs whether the excerpt and edit time appear.
- **Choose which line becomes a note's title (#280).** Markleaf took the title from the first Markdown heading *anywhere* in a note, so a note that opened with a paragraph and had a heading further down was titled by that heading — the same note, retitled by an edit ten lines below the top. **Settings → Notes & search → Note title** now offers *First line*, which always uses the first non-empty line and strips the `#` markers if that line happens to be a heading. *First heading* remains the default, so nothing is renamed unless you switch. Switching retitles the notes you already have — leaving their edit times, and therefore their order, untouched — and *Sync Center → Rename files to note titles* brings a sync folder's filenames along.

## v2.31.0 - Your notes, without Markleaf's bookkeeping in them - 2026-07-24

One opt-in change to how sync stores its bookkeeping, and one fix for text that was Korean in every language. No permission changes, and the storage format is unchanged unless you turn the new option on.
Expand Down
9 changes: 9 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
## 2026-07-25 - Notes grid, first-line titles, and v2.32.0 (#279, #280)

- Trigger: two feature requests filed the same afternoon by one external reporter — a grid view for the notes list (#279), and a title field for each note (#280), the second reported as "what is set as the title is not necessarily the first line".
- Analysis: (#280) `TitleExtractor.titleLineIndex` searched the whole note for the first heading and only fell back to the first non-empty line when there was none, so a note opening with a paragraph took its name from a heading further down. The report is accurate and reproducible. A stored title field — the literal request — was declined in the triage comment: a Markleaf note *is* its `.md` file, so a separate title would have to live in the frontmatter or the sidecar index and would drift the moment the file was edited elsewhere. (#279) the list was a single `LazyColumn` with per-row action lambdas defined inline, so a second layout would have duplicated the lock action's mirror cleanup.
- Contract/scope: two settings under **Notes & search**, both defaulting to today's behaviour. `notesLayout` = LIST | GRID (#279) and `noteTitleSource` = FIRST_HEADING | FIRST_LINE (#280), the latter living in `core.text` beside `TitleExtractor` so `core` keeps not depending on `data`. Switching the title rule runs `NoteRetitler.retitleAll` over the database — titles are derived at save time, so the setting would otherwise appear to do nothing — leaving `updatedAt`, empty notes and conflict copies alone. Mirror filenames follow through the existing Sync Center "tidy filenames" action rather than a new folder pass.
- Implementation: PR #281. Row actions hoisted out of the list body and shared by `NoteRow` and the new `NoteCard`; the long-press menu extracted to `NoteContextMenu`; the shared-bounds transition moved into a `Modifier.noteSharedBounds` helper used by both. `titleSource` threaded through the editor's five derivations, both import passes in `NoteFolderMirror`, and the share-intent note creation — which reads the store directly, since the first composition still holds default settings.
- Verification: `testDebugUnitTest` + `lintRelease` locally; 27 unit tests across `TitleExtractorTest`, `NoteRetitlerTest`, `AppSettingsRepositoryListTest` and `AppSettingsTest`. Device pass on `markleaf-phone-api36`: grid at two columns with section headers spanning and the long-press menu working, then the title rule both ways on a note reading `Plain first line` / `## Heading below` — "Retitled 1 note." and the note kept its place in the list. The `settings_notes_search_tablet` golden was re-anchored on "First line": anchored on "Where I left off" it kept passing while showing none of the new rows.
- Release: versionCode 121→122, versionName 2.31.0→2.32.0, CHANGELOG both editions, six store-locale `122.txt` (414 chars at the longest against the 500 cap), landing x6 + README x6. No hardening issue filed — this is issue-response work, and AGENTS.md keeps that flow from growing the backlog it is meant to spend.

## 2026-07-24 - Sidecar metadata index, localised sync labels, and v2.31.0 (#216, #255)

- Trigger: #216 asked why Markleaf writes its own bookkeeping into the note file itself. #255, the hardening list filed alongside v2.30.0, carried a settings-snapshot coverage item, and covering it is what surfaced the hardcoded Korean relative-time labels.
Expand Down
4 changes: 2 additions & 2 deletions README.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@

**Markleaf** ist eine Android-Markdown-Notiz-App, die bewusst auf Ballast verzichtet, damit du dich auf zwei Dinge konzentrieren kannst: festhalten und ordnen. Deine Daten liegen ausschließlich auf deinem Gerät, und das standardisierte Markdown-Format garantiert volle Eigentümerschaft und Portabilität. Auch die Synchronisierung läuft nur über *einen von dir gewählten Ordner* – Markleaf selbst geht nie online.

[**Branding-Seite ansehen**](https://jeiel85.github.io/markleaf-android/) · [Aktuelle Version: v2.31.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0) · [Datenschutzerklärung](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)
[**Branding-Seite ansehen**](https://jeiel85.github.io/markleaf-android/) · [Aktuelle Version: v2.32.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0) · [Datenschutzerklärung](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)

---

Expand Down Expand Up @@ -162,7 +162,7 @@ com.markleaf.notes
> **Google-Play-Updates sind derzeit ausgesetzt.** Bis eine koreanische Gewerbeanmeldungs-Anforderung für den Einzelentwickler geklärt ist, werden keine neuen Versionen in den Play Store geladen. Hol dir in der Zwischenzeit **die neueste Version über F-Droid, GitHub Releases oder GitLab Releases.** (Wenn du sie bereits aus dem Play Store installiert hast, funktioniert sie weiterhin.)

- **F-Droid** *(empfohlen)*: [Markleaf on F-Droid](https://f-droid.org/packages/com.markleaf.notes/) – im F-Droid-Client suchen oder über den Link oben installieren. Es wird derselbe Signaturschlüssel (SHA-256 `0be97352…f91a`) verwendet, sodass Updates auch dann nahtlos weiterlaufen, wenn du ein APK aus den GitHub- oder GitLab-Releases per Sideload installiert hast.
- **Direkte APK-Installation**: lade das APK aus dem [GitHub-v2.31.0-Release](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0) herunter und führe es auf deinem Android-Gerät aus.
- **Direkte APK-Installation**: lade das APK aus dem [GitHub-v2.32.0-Release](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0) herunter und führe es auf deinem Android-Gerät aus.
- **Google Play**: [Markleaf on Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes) – **Updates sind ausgesetzt** (siehe Hinweis oben). Wenn du die App bereits hast, funktioniert sie weiter, aber die neueste Version gibt es über F-Droid, GitHub oder GitLab.

### Aus dem Quellcode bauen
Expand Down
4 changes: 2 additions & 2 deletions README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@

**Markleaf** es una app de notas Markdown para Android diseñada para eliminar lo superfluo y dejarte concentrar en solo dos cosas: capturar y organizar. Tus datos se guardan únicamente en tu dispositivo, y el formato Markdown estándar garantiza la propiedad total y la portabilidad de tus datos. Incluso la sincronización ocurre solo a través de *una carpeta que tú eliges* — Markleaf en sí nunca se conecta a internet.

[**Ver la página de branding**](https://jeiel85.github.io/markleaf-android/) · [Versión actual: v2.31.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0) · [Política de privacidad](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)
[**Ver la página de branding**](https://jeiel85.github.io/markleaf-android/) · [Versión actual: v2.32.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0) · [Política de privacidad](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)

---

Expand Down Expand Up @@ -162,7 +162,7 @@ com.markleaf.notes
> **Las actualizaciones en Google Play están en pausa por ahora.** No se publicarán nuevas versiones en la Play Store hasta que se resuelva un requisito de política de registro de negocio en Corea para el desarrollador individual. Mientras tanto, **obtén la última versión desde F-Droid, GitHub Releases o GitLab Releases.** (Si ya la instalaste desde la Play Store, seguirá funcionando.)

- **F-Droid** *(recomendado)*: [Markleaf en F-Droid](https://f-droid.org/packages/com.markleaf.notes/) — búscalo en el cliente de F-Droid o instálalo con el enlace de arriba. Usa la misma clave de firma (SHA-256 `0be97352…f91a`), así que las actualizaciones continúan sin problemas incluso si instalaste un APK de GitHub o GitLab Releases mediante sideload.
- **Instalación directa del APK**: descarga el APK desde el [release v2.31.0 de GitHub](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0), y ejecútalo en tu dispositivo Android.
- **Instalación directa del APK**: descarga el APK desde el [release v2.32.0 de GitHub](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0), y ejecútalo en tu dispositivo Android.
- **Google Play**: [Markleaf en Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes) — **las actualizaciones están en pausa** (ver la nota de arriba). Si ya la tienes instalada, seguirá funcionando, pero obtén la última versión desde F-Droid, GitHub o GitLab.

### Compilar desde el código fuente
Expand Down
4 changes: 2 additions & 2 deletions README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@

**Markleaf** est une application Android de prise de notes Markdown conçue pour éliminer le superflu afin que vous puissiez vous concentrer sur seulement deux choses : capturer et organiser. Vos données sont stockées uniquement sur votre appareil, et le format Markdown standard garantit une propriété et une portabilité complètes. Même la synchronisation ne passe que par *un dossier que vous choisissez* — Markleaf lui-même ne se connecte jamais à internet.

[**Voir la page de branding**](https://jeiel85.github.io/markleaf-android/) · [Version actuelle : v2.31.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0) · [Politique de confidentialité](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)
[**Voir la page de branding**](https://jeiel85.github.io/markleaf-android/) · [Version actuelle : v2.32.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0) · [Politique de confidentialité](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)

---

Expand Down Expand Up @@ -162,7 +162,7 @@ com.markleaf.notes
> **Les mises à jour sur Google Play sont actuellement en pause.** Aucune nouvelle version ne sera publiée sur le Play Store tant qu'une exigence de politique d'enregistrement d'entreprise en Corée pour le développeur indépendant ne sera pas résolue. En attendant, **obtenez la dernière version via F-Droid, GitHub Releases ou GitLab Releases.** (Si vous l'avez déjà installée depuis le Play Store, elle continue de fonctionner.)

- **F-Droid** *(recommandé)* : [Markleaf sur F-Droid](https://f-droid.org/packages/com.markleaf.notes/) — recherchez-le dans le client F-Droid ou installez-le via le lien ci-dessus. Il utilise la même clé de signature (SHA-256 `0be97352…f91a`), donc les mises à jour continuent sans interruption même si vous avez installé un APK via sideload depuis GitHub ou GitLab Releases.
- **Installation directe de l'APK** : téléchargez l'APK depuis la [release GitHub v2.31.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0), puis exécutez-le sur votre appareil Android.
- **Installation directe de l'APK** : téléchargez l'APK depuis la [release GitHub v2.32.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0), puis exécutez-le sur votre appareil Android.
- **Google Play** : [Markleaf sur Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes) — **les mises à jour sont en pause** (voir la note ci-dessus). Si vous l'avez déjà, elle continue de fonctionner, mais obtenez la dernière version via F-Droid, GitHub ou GitLab.

### Compilation depuis les sources
Expand Down
4 changes: 2 additions & 2 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@

**Markleaf** は、余計なものをそぎ落とし「記録」と「整理」だけに集中できるよう設計された Android 向け Markdown メモアプリです。データは端末内にのみ保存され、標準 Markdown 形式によってデータの所有権と移植性が完全に保証されます。同期も *あなたが選んだフォルダ* を介してのみ行われ、Markleaf 自体はインターネットに接続しません。

[**ブランディングページを見る**](https://jeiel85.github.io/markleaf-android/) · [現在のバージョン: v2.31.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0) · [プライバシーポリシー](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)
[**ブランディングページを見る**](https://jeiel85.github.io/markleaf-android/) · [現在のバージョン: v2.32.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0) · [プライバシーポリシー](https://jeiel85.github.io/markleaf-android/privacy.html) · [F-Droid](https://f-droid.org/packages/com.markleaf.notes/) · [Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes)

---

Expand Down Expand Up @@ -162,7 +162,7 @@ com.markleaf.notes
> **現在、Google Play での更新は一時保留中です。** 個人開発者の韓国の事業者登録に関するポリシー要件が解決するまで、新しいバージョンは Play ストアに公開しません。その間は **最新版を F-Droid、GitHub Releases、または GitLab Releases から入手してください。**(すでに Play ストアからインストール済みの場合はそのまま使えます。)

- **F-Droid** *(推奨)*: [Markleaf on F-Droid](https://f-droid.org/packages/com.markleaf.notes/) — F-Droid クライアントで検索するか、上のリンクから直接インストールできます。同じ署名鍵(SHA-256 `0be97352…f91a`)を使用するため、GitHub/GitLab Releases の APK をサイドロードした場合でも途切れなく更新が続きます。
- **APK の直接インストール**: [GitHub v2.31.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.31.0) リリースから APK をダウンロードし、Android 端末で実行してインストールします。
- **APK の直接インストール**: [GitHub v2.32.0](https://github.com/jeiel85/markleaf-android/releases/tag/v2.32.0) リリースから APK をダウンロードし、Android 端末で実行してインストールします。
- **Google Play**: [Markleaf on Google Play](https://play.google.com/store/apps/details?id=com.markleaf.notes) — **更新は一時保留中**です(上の注記を参照)。すでにインストール済みなら引き続き使えますが、最新版は F-Droid・GitHub・GitLab から入手してください。

### 開発環境の構築
Expand Down
Loading
Loading