Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: jeiel85/markleaf-android

v2.16.5 - 날짜 표기 다국어화 & F-Droid 스크린샷 (i18n & Screenshots)

11 Jun 07:16
@github-actions github-actions

Choose a tag to compare

노트 목록의 상대 날짜 표기를 다국어화하고, GitHub 이슈 #132 요청대로 F-Droid 스크린샷을 추가한 릴리스입니다.

Fixed

  • 노트 목록 날짜의 한국어 하드코딩 제거. formatUpdatedTime이 섹션 헤더와 달리 행 타임스탬프를 "오늘 ...", "어제 ...", "n일 전" 한국어 리터럴로 하드코딩하고 있었습니다. 기기 언어가 한국어가 아닌 사용자(영어·일본어·독일어 등)는 영어 UI에서도 날짜만 한국어로 보였습니다. 문자열 리소스(relative_today/relative_yesterday/relative_days_ago)로 옮기고 6개 로케일(en·ko·ja·de·es·fr) 번역을 추가했습니다.

Distribution

  • F-Droid 폰 스크린샷 추가(#132). fastlane/metadata/android/en-US/images/phoneScreenshots/에 실기기(TB320FC, Android 15) 캡처 4장을 추가했습니다 — 라이브 마크다운 에디터, 코드 하이라이트 프리뷰, 태그 화면, 로컬-퍼스트 안내. 로케일별 중복 아이콘 정리는 이전 릴리스에서 완료되어 en-US/images/icon.png만 유지합니다.
Assets 5
Loading

v2.16.4 - 목록 안 태그 인식 (Tags in Lists)

11 Jun 06:15
@github-actions github-actions

Choose a tag to compare

GitHub 이슈 #137(글머리 기호 목록 안의 태그가 태그 뷰에 나타나지 않는 문제)을 해결한 패치 릴리스입니다.

Fixed

  • 목록 안 태그 인식(#137). TagParser가 태그 본문을 "공백 직전까지 전부"로 매칭하던 탓에, 목록 항목 끝의 마침표·쉼표(#shopping., #work,)가 태그 이름에 흡수돼 검증에 실패하고 태그가 통째로 누락됐습니다. 태그 본문을 유효 문자 집합(\p{L}/\p{N})으로 직접 매칭하도록 바꿔, 뒤따르는 구두점을 자연스럽게 배제합니다.
  • 다국어 태그 지원. 세그먼트 문자 집합이 라틴 + 한글로 한정돼 독일어 움라우트·일본어·중국어 태그가 거부되던 문제를 유니코드 문자 카테고리 기반으로 확장해 해결했습니다.
  • 불필요한 heading/URL 제외 로직 제거. (^|\s)# 접두 조건이 이미 URL 프래그먼트와 heading 선행 마커를 걸러내므로, 기존 제외 패스는 동작 없이 "heading에 한 번 등장한 태그를 노트 전체에서 차단"하는 부작용만 있었습니다.

Tests

  • 목록 항목·후행 구두점·쉼표 구분·heading·독일어/일본어/중국어 태그에 대한 단위 테스트를 추가했습니다.
  • 유니코드 클래스 정규식이 호스트 JVM뿐 아니라 Android ICU 엔진에서도 동작하는지 검증하는 instrumented 테스트를 추가했습니다.
Loading

v2.16.2 - Play 프로덕션 배포 준비 (Play Production Readiness)

27 May 05:29
@github-actions github-actions

Choose a tag to compare

Play 프로덕션 권한 확보 후 첫 정식 제출을 위한 배포 준비 릴리즈입니다.

Distribution

  • Play Console 제출용 버전 갱신. versionCode 90 → 91, versionName 2.16.1 → 2.16.2로 올려 프로덕션 트랙 업로드 충돌 없이 새 AAB를 제출할 수 있도록 했습니다.
  • 공개 표면 최신화 반영. GitHub Pages, README, Privacy 페이지, F-Droid metadata, repository metadata를 v2.16.x 현재 기능과 no-cloud 정책 기준으로 정리한 상태를 새 패치 릴리즈에 포함했습니다.
  • Play 릴리즈 노트 패키징. ko-KR / en-US fastlane changelog를 versionCode 91 기준으로 작성해 데스크톱 export TXT가 Play Console에 바로 붙여넣을 수 있는 형식으로 생성되도록 했습니다.
Loading

v2.16.1 - 스마트 포맷팅 토글 & 단어 감싸기

22 May 01:42
@github-actions github-actions

Choose a tag to compare

Bear 앱 수준의 스마트 텍스트 포맷팅 UX(Bold, Italic, Strikethrough, Inline Code) 개선 묶음 릴리즈입니다.

Added

  • 지능형 주변 단어 감싸기(Smart Word Wrapping): 드래그 선택 영역이 없고 커서만 있는 상태(Collapsed)에서 포맷팅 단축키/툴바를 적용할 때, 한글/영어/기호 경계를 분석하여 주변 단어를 정확히 식별해 묶습니다.
  • 스마트 포맷팅 토글 및 언랩(Smart Toggle / Unwrap): 이미 포맷팅 마커(**, *, ~~, `)로 감싸진 텍스트 내부나 바로 바깥에서 다시 포맷팅 버튼을 적용하면, 마커를 지능적으로 제거(Unwrap)합니다.
  • 포맷팅 시 선택 영역 보존: 텍스트 드래그 상태에서 포맷팅을 토글해도, 선택 영역 해제 없이 포맷팅된 전체 텍스트 영역이 그대로 블록 선택된 채로 유지되도록 개선하여 매끄러운 연속 편집 흐름을 보장합니다.

Distribution

  • F-Droid 카탈로그 아이콘 메타데이터 추가. fastlane/metadata/android/*/images/icon.png에 512x512 PNG 아이콘을 추가해, F-Droid 웹/클라이언트가 기본 아이콘 대신 Markleaf 런처 아이콘을 표시할 수 있도록 했습니다.
Loading

v2.16.0 - Bear-class 마무리 9종 셋

20 May 16:04
@github-actions github-actions

Choose a tag to compare

남아 있던 GitHub 이슈 9개를 OSS 철학(로컬-퍼스트 · 프라이버시 · 오픈소스 투명성) 기준으로 동시 처리한 기능 묶음 릴리스. Play 마케팅성 이슈(#52/#53/#54)는 별도로 정리해 닫고, 코어 가치와 정렬된 이슈만 코드로 옮겼습니다.

Added

  • 첫 실행 4단계 안내 시트(#57). WelcomeOnboardingSheetWelcome → Markdown → #tags → local-first 순서로 호버 없이 한 번만 노출. DataStore의 onboardingCompleted 플래그로 두 번째 실행부터는 사라집니다.
  • 생체 인증 앱 잠금(#37). BiometricLockGateandroidx.biometric (AOSP)로 지문/얼굴 인증을 요구합니다. 설정에서 토글, 기본 OFF. 인증은 100% 기기 내부에서 끝나며 노트는 같은 Room DB에 그대로 — 잠금은 UI 차단일 뿐 데이터에는 영향이 없습니다. MainActivityBiometricPrompt를 호스팅하기 위해 FragmentActivity로 승격.
  • 노트 → PDF 내보내기(#38). 에디터 공유 메뉴에 Export as PDF... 추가. 파이프라인은 commonmark HtmlRenderer → 숨김 WebView → PrintManager. 결과 파일은 시스템 인쇄 대화상자가 책임지므로 Markleaf는 출력 URI를 소유하지 않고 INTERNET·저장소 권한도 추가하지 않습니다. A4 / 18mm·16mm 여백 / Markleaf 그린 액센트 인라인 스타일.
  • 홈 화면 위젯이 최근 노트 리스트(#39). 기존 1버튼 위젯이 ListView 기반 컬렉션 위젯으로 재작성. 상단 + 버튼(legacy quick-compose 유지) + 비-휴지통/비-보관 최근 10개 노트. 행 탭은 ACTION_OPEN_NOTEMarkleafNavHost의 새 openNoteId 경로로 바로 에디터 진입. MainActivity.onPause()에서 위젯 데이터를 갱신해 launcher로 돌아갔을 때 최신 상태가 반영됩니다.
  • 일본어(ja) UI 번역(#51). res/values-ja/strings.xml 신규. 노트/에디터/설정/Privacy Dashboard/Sync/오픈소스/Onboarding/Biometric/PDF 모든 키 커버. 로드맵에서 가장 큰 Bear 사용자 풀로 식별된 일본어를 우선.
  • 설정에 오픈소스 섹션(#55). 라이선스(Apache 2.0), GitHub repo, 전체 라이선스 본문, F-Droid 패키지 페이지 링크 4개를 Settings → Open source 한 곳에 모았습니다. Bear와의 OSS 차별점을 in-product에서 그대로 보여줍니다.

Changed

  • 검색이 unicode61 토크나이저(#65). notes_ftssimple 토크나이저에서 unicode61 remove_diacritics=2로 재구성. 한국어/일본어/중국어 노트가 그동안 LIKE fallback으로만 검색되던 회귀가 사라집니다. DB v12 → v13, MIGRATION_12_13notes_fts를 destructive recreate(파생 인덱스이므로 사용자 데이터는 손실되지 않음). Room이 @Fts5를 지원하지 않는 이유와 FTS4를 유지하기로 한 trade-off는 NoteFtsEntity.kt의 KDoc에 정리.
  • Predictive Back 제스처(#27). AndroidManifestandroid:enableOnBackInvokedCallback="true"는 이미 활성 상태였고, 코드 전반에 BackHandler로 가로채는 지점이 없어 Android 13+ Predictive Back 애니메이션이 그대로 동작하는 것을 확인. 이번 릴리스에서 명시적으로 추적 종료.
  • TalkBack 헤딩 시맨틱(#76, partial). SettingsSection 제목과 NotesListScreen의 섹션 헤더(Pinned / Today / Yesterday / Past 7 days / Older)에 heading() 시맨틱 추가. TalkBack swipe-up/down으로 섹션을 건너뛸 수 있습니다. NoteRowsemantics(mergeDescendants = true)로 묶어서 한 노트가 한 포커스 정류장으로 들립니다.

Build

  • versionCode 88 → 89, versionName 2.15.3 → 2.16.0.
  • androidx.biometric:biometric:1.1.0 추가 (Apache 2.0, F-Droid 친화).
  • MainActivity: ComponentActivityFragmentActivity.
  • DB schema 12 → 13, 새 13.json schema export 포함.
  • app/src/main/AndroidManifest.xmlQuickNoteWidgetService 서비스 + 위젯 인텐트 추가.

Issues closed

Loading

v2.15.3 - 코드블록 미리보기 크래시 수정

20 May 01:54
@github-actions github-actions

Choose a tag to compare

Fixed

  • 코드블록을 포함한 노트의 미리보기 진입 시 앱이 종료되던 문제 수정. SyntaxHighlighter의 SHELL_RULES 정규식에서 닫는 }가 escape되지 않은 한 곳이 있었는데, JVM java.util.regex는 이걸 허용해도 Android ICU regex는 거부합니다. 정적 초기화가 실패하면서 어떤 언어의 코드블록이든 미리보기 렌더링 시점에 ExceptionInInitializerError로 죽었습니다. JVM 단위 테스트와 Robolectric 스냅샷 테스트는 호스트 JVM regex를 쓰기 때문에 전부 통과했고, 실기기/에뮬레이터에서만 재현되는 회귀였습니다. (fdroiddata !38659에서 community tester @Dking08가 발견)

Improved

  • 에디터 상단 타이틀이 너비를 넘어가면 자동으로 글자 크기를 줄입니다. "노트 편집" 등 헤드라인이 줄바꿈되지 않고 한 줄로 들어가도록 0.7배까지 점진적으로 축소.

Tests

  • SyntaxHighlighterAndroidTest (instrumented): 모든 언어 rule을 실제 Android runtime에서 한 번씩 tokenize해서 ICU regex 호환성을 검증합니다. 같은 종류의 회귀가 다시 들어오면 instrumented test가 잡습니다.

Build

  • versionCode 87 → 88, versionName 2.15.2 → 2.15.3.

Contributors

Dking08
Loading
Dking08 reacted with thumbs up emoji
1 person reacted

v2.15.2 - F-Droid reproducible-build 가능성 정리

19 May 14:36
@github-actions github-actions

Choose a tag to compare

F-Droid fdroiddata MR(!38659) 리뷰 후속. APK 자체 동작 변화는 없습니다.

Build / F-Droid readiness

  • AGP의 "Dependency metadata" APK 서명 블록 비활성화. dependenciesInfo { includeInApk = false; includeInBundle = false } 적용. AGP 8.x는 기본적으로 release APK/AAB에 의존성 메타데이터 서명 블록을 삽입하는데, F-Droid scanner가 이를 "extra signing block"으로 잡아 check apk 잡이 실패합니다. 우리는 어차피 이 메타데이터를 사용하지 않으므로 출력에서 제거 → F-Droid가 upstream 서명된 APK를 그대로 받아들일 수 있게 합니다 (Binaries + AllowedAPKSigningKeys 경로).
  • versionCode 86 → 87, versionName 2.15.1 → 2.15.2.
Loading

v2.15.1 - F-Droid 빌드 준비와 Room 마이그레이션 안전망

19 May 07:37
@github-actions github-actions

Choose a tag to compare

Build / F-Droid readiness

  • Room schema export 활성화. AppDatabaseexportSchema = true를 사용하고, KSP가 schema JSON을 app/schemas에 생성합니다.
  • 마이그레이션 회귀 테스트 추가. v4 레거시 DB를 현재 v12 schema까지 올리며 노트/태그 보존, FTS rebuild, 재도입된 note_links / attachments 테이블을 확인합니다.
  • 재현 가능한 소스 빌드 정리. Apache 2.0 LICENSE 파일을 추가하고, 빌드 서버가 로컬 Windows SDK 경로에 묶이지 않도록 추적 중이던 local.properties를 제거했습니다.
  • Fastlane 메타데이터 보강. F-Droid/store metadata에 재사용할 수 있는 영어/한국어 short/full description을 추가했습니다.
  • compileSdk 35 경고 정리. 현재 AGP baseline에서 API 35를 의도적으로 타깃한다는 점을 Gradle 설정에 명시했습니다.
Loading

v2.14.0 - 각주 점프 (Footnote ref ↔ def click jump)

11 May 02:44
@github-actions github-actions

Choose a tag to compare

새로운 기능

  • 미리보기에서 [^N] 위첨자를 탭하면 같은 노트의 [^N]: ... 정의 행으로 자동 스크롤. 각주가 많은 노트에서 본문↔정의를 손가락 한 번에 왕복할 수 있습니다. 일치하는 정의가 없으면 silent no-op (오류 다이얼로그 X).
  • 작동 방식: MarkdownPreviewList 가 자기 LazyListState 를 들고 있다가, 각주 ref 클릭 콜백을 받으면 findFootnoteDefIndex 로 매칭 정의의 라인 인덱스를 찾아 animateScrollToItem 으로 부드럽게 점프.
  • 콜아웃, 인용문 등 nested 컨텍스트의 각주 ref도 동일하게 작동.

디자인 결정

  • 정의 → ref 역방향 점프는 v2.14.0 범위에서 의도적으로 미포함 — 각주 def가 보통 노트 맨 아래에 모이기 때문에 보통은 정의→ref가 아니라 ref→정의 흐름이 필요. 백링크 패널처럼 더 큰 디자인이 필요하다고 판단되면 별도 cycle에서.
  • 위첨자 자체에는 underline을 추가하지 않음 — superscript baseline shift + primary color 만으로 이미 클릭 가능 어포던스가 충분.

검증

  • FootnoteJumpTestfindFootnoteDefIndex 의 (1) 매칭 없음 (2) 매칭 있음 (3) 중복 정의의 첫 번째 picking 동작을 단위 테스트로 잠금.
Loading

v2.13.0 - 노트 안에서 바꾸기 (Find & Replace)

11 May 02:40
@github-actions github-actions

Choose a tag to compare

새로운 기능

  • 에디터 Find 바에 "바꾸기" 행 추가. 상단 검색 아이콘으로 열리는 Find 바가 이제 두 줄. 위에는 기존 찾기 + 결과 카운터 + 이전/다음/닫기, 아래에는 바꾸기 텍스트 입력칸 + "바꾸기" / "모두 바꾸기" 버튼.
  • "바꾸기": 현재 하이라이트된 매치 하나만 치환. 다음 매치로는 안 넘김 (그건 ▼ 버튼이 명확히 함).
  • "모두 바꾸기": 모든 매치를 단일 패스로 치환 — 길이가 달라져도 인덱스 시프트 없이 안전. 완료 후 Toast로 N개를 바꿨습니다 알림.

디자인 결정

  • §2.5 chrome 누적 회피: 새 상단바 아이콘 추가 없음. 검색이 켜져 있을 때만 하나의 Find/Replace 바가 두 줄로 펼쳐짐. 검색이 꺼지면 같이 사라짐.
  • 매칭 자체는 기존 findAllRanges대소문자 무시 substring 정책 그대로 유지 — 정규식이나 case-sensitive 토글은 의도적으로 지금은 미도입 (UI 복잡도 / 안전 동작 우선).
  • 빈 바꾸기 텍스트로 "모두 바꾸기" 하면 지우기 효과 (의도된 동작).

검증

  • ReplaceRangesTestreplaceRange/replaceAllRanges 동작을 단위 테스트로 잠금: 단일 치환, 빈 치환(삭제), 다중 치환, 빈 매치 목록, 더 긴 치환에서도 인덱스 시프트 안전, 대소문자 무시.
Loading
Previous 1 3 4 5 6 7
Previous

AltStyle によって変換されたページ (->オリジナル) /