diff --git a/README.ko.md b/README.ko.md index 724c07b7..a17b4298 100644 --- a/README.ko.md +++ b/README.ko.md @@ -120,7 +120,7 @@ Source-Available License 1.0을 따른다. compatibility canary는 비공개· 때만 만든다 (명세 §8): `@devslab/dds-tokens` (✅ 2026-08-13) → `dds-css` v1 인벤토리 (Core 6종 ✅ 2026-08-13, +13종 ✅ 2026-08-15) → AskLinq 적용 → `dds-icons` (✅ 2026-08-15) → `dds-solid` + `site-kit` → 안드로이드 네이티브 값·테마·모션 -(0.6.0, 2026-11-12, Maven Central — 테마·모션·부품·아이콘). 화면 틀과 `dds-compose-testing` 꾸러미를 담은 0.7.0은 만들었지만 **아직 Maven Central에 없다**. 정산나우가 폰에서 확인한 뒤에 올린다(D-052). RN·Ionic 패키지는 그 제품이 생길 때. +(0.6.0, 2026-11-12, Maven Central — 테마·모션·부품·아이콘). 0.7.0(2026-11-13, Maven Central)에서 화면 틀과 `dds-compose-testing` 꾸러미가 생겼다(D-052). RN·Ionic 패키지는 그 제품이 생길 때. ## 입력·선택·공유 달력 확장 diff --git a/README.md b/README.md index d2348f81..fdc57aa2 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ Priorities live in [`docs/backlog.md`](docs/backlog.md). Packages are created only when a consumer exists (spec §8): `@devslab/dds-tokens` (✅ 2026-08-13) → `dds-css` v1 inventory (Core 6 ✅ 2026-08-13, +13 ✅ 2026-08-15) → AskLinq adoption → `dds-icons` (✅ 2026-08-15) → `dds-solid` + `site-kit` → native Android values, theme and motion -(0.6.0, 2026-11-12, on Maven Central — theme, motion, components, icons). 0.7.0, the screen frame and the `dds-compose-testing` artifact, is built but **not on Maven Central yet**: it waits for JeongsanNow's check on its phone (D-052). RN and Ionic packages only when such a product exists. +(0.6.0, 2026-11-12, on Maven Central — theme, motion, components, icons). 0.7.0 (2026-11-13, on Maven Central) adds the screen frame and the `dds-compose-testing` artifact (D-052). RN and Ionic packages only when such a product exists. ## Input, choice and shared calendar additions diff --git a/android/CHANGELOG.ko.md b/android/CHANGELOG.ko.md index f4fc5ee9..0fd9ea2f 100644 --- a/android/CHANGELOG.ko.md +++ b/android/CHANGELOG.ko.md @@ -5,15 +5,13 @@ `kr.devslab:dds-android-tokens`, `kr.devslab:dds-compose`, 그리고 0.7.0부터 `kr.devslab:dds-compose-testing`은 한 버전을 쓰고, 웹 패키지와는 버전이 따로다(D-048). 릴리스는 `android-v<버전>` 태그로 낸다. -## 0.7.0 — 아직 배포 전 +## 0.7.0 — 2026-11-13 화면 틀(D-052). 정산나우가 펼친 폰에서 찾았다. 화면마다 시작선이 달랐고(187, 147, 127dp, 또는 끝에서 끝까지), 레일은 탭 화면에만 있었고, 상단 줄은 창 끝에서 본문은 가운데에서 시작했다. DDS에 숫자는 있는데 그 숫자를 지키는 부품이 없었다. 이제 부품이 있다. 가이드 §13. -**아직 Maven Central에 없다.** 정산나우가 로컬 빌드로 옮겨 폰의 창 세 가지(접힌 475×751, 펼친 세로 -704×933, 펼친 가로 933×704)에서 확인한 뒤에 배포한다. 그때까지는 이 레포에서 `./gradlew publishToMavenLocal`로 -만든다. +정산나우가 로컬 빌드로 옮겨 배포 전에 확인했다. 앱의 모든 화면을 DDS 부품으로 옮기고, 475×751·704×933·933×704에서 밝은·어두운 화면으로(475×751은 글자 200%도) `DdsFrameCheck`와 `assertSameLines`로 쟀다 — 1dp 넘게 어긋난 시작선이 없었다. 펼친 폰의 전체 연결 테스트에서 DDS 탓의 실패는 없었다. 거기서도 확인하지 못한 것: 폰을 실제로 가로로 돌린 것, TalkBack, 접힌 폰의 전체 테스트. **새로 생긴 것** diff --git a/android/CHANGELOG.md b/android/CHANGELOG.md index bebfa9f8..fc51cdb8 100644 --- a/android/CHANGELOG.md +++ b/android/CHANGELOG.md @@ -5,17 +5,14 @@ `kr.devslab:dds-android-tokens`, `kr.devslab:dds-compose` and (from 0.7.0) `kr.devslab:dds-compose-testing` share one version, separate from the web packages (D-048). Releases are cut by an `android-v` tag. -## 0.7.0 — not released yet +## 0.7.0 — 2026-11-13 The screen frame (D-052), from JeongsanNow on an unfolded phone: screens started on different lines (187, 147, 127dp, or edge to edge), the rail was there on tab screens only, and the top bar started at the window's edge while the body started in the middle. DDS had the numbers and no part that kept them. Now it has the parts. Guide §13. -**Not on Maven Central yet.** The release waits for JeongsanNow to move onto it from a -local build and check it on its phone in three windows (folded 475×751, unfolded upright -704×933, unfolded on its side 933×704). Until then it is built from this repository with -`./gradlew publishToMavenLocal`. +JeongsanNow moved onto it from the local build and checked it before the release: every screen of its app on the DDS parts, at 475×751, 704×933 and 933×704 in light and dark (and 475×751 at 200% text), measured with `DdsFrameCheck` and `assertSameLines` — no start line off by more than 1dp; its whole device suite on the unfolded phone had no DDS failure. Not checked there: the phone actually turned on its side, TalkBack, the folded phone's whole suite. **What is new** diff --git a/android/README.ko.md b/android/README.ko.md index 496e6c2f..2511bb21 100644 --- a/android/README.ko.md +++ b/android/README.ko.md @@ -22,9 +22,7 @@ dependencies { } ``` -**Maven Central에 있는 것은 0.6.0이다.** 0.7.0(화면 틀, 가이드 §13, 그리고 `dds-compose-testing` 꾸러미)은 -만들었지만 아직 Maven Central에 없다. 정산나우가 폰에서 확인한 뒤에 올린다. 지금 쓰려면 로컬 저장소에 -만들어 넣고(아래) 이렇게 받는다. +0.7.0에서 화면 틀(가이드 §13)과 `dds-compose-testing` 꾸러미가 생겼다. ```kotlin dependencies { diff --git a/android/README.md b/android/README.md index c48fd352..e361fb28 100644 --- a/android/README.md +++ b/android/README.md @@ -22,10 +22,7 @@ dependencies { } ``` -**0.6.0 is the version on Maven Central.** 0.7.0 (the screen frame, guide §13, and the -`dds-compose-testing` artifact) is built but not on Maven Central yet: it waits for -JeongsanNow's check on its phone. To use it now, build it into the local repository (below), -then: +0.7.0 adds the screen frame (guide §13) and the `dds-compose-testing` artifact: ```kotlin dependencies { diff --git a/docs/backlog.md b/docs/backlog.md index 37fc133d..72f89be5 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -334,7 +334,7 @@ D-048. 가이드 [`mobile-native.ko.md`](mobile-native.ko.md), 설계 페이지에서 레일·시트·다이얼로그의 픽셀, 제품 바탕 위의 컨트롤 테두리 3:1. - [ ] **입력칸 요청(정산나우)** — 글자의 사본을 남기지 않는 입력칸, 초점이 가면 화면 안으로 끌어오기 (bring-into-view), 최소 줄 수(`minLines`). 그리고 단계 화면의 틀. -- [ ] **화면 틀(0.7.0) — 만들었다, 소유자의 머지·배포 결정 대기(2026-11-12).** 브랜치 `feat/android-screen-frame`. +- [x] **화면 틀(0.7.0) — 배포했다(#147, `android-v0.7.0`, 2026-11-13).** 정산나우가 로컬 빌드로 옮겨 배포 전에 확인했다. 앱의 모든 화면을 DDS 부품으로 옮기고, 475×751·704×933·933×704에서 밝은·어두운 화면으로(475×751은 글자 200%도) `DdsFrameCheck`와 `assertSameLines`로 쟀다 — 1dp 넘게 어긋난 시작선이 없었다. 펼친 폰의 전체 연결 테스트에서 DDS 탓의 실패는 없었다. 거기서도 확인하지 못한 것: 폰을 실제로 가로로 돌린 것, TalkBack, 접힌 폰의 전체 테스트. `DdsAppFrame`, 새 `DdsScaffold`, `DdsBodyColumn`·`ddsBody`·`ddsBodyLines`, 본문 선에 서는 `DdsTopBar` (`onBack`, 두 줄 제목), `DdsCenteredColumn`·`DdsCenteredTitle`, `DdsPaneList`·`DdsPaneItem`, 새 꾸러미 `dds-compose-testing`(`DdsFrameCheck`). 기기 테스트 전체 실물 폰 접은 화면(1248x1972) 170개, 펼친 화면(2448x1848) 174개 실행, diff --git a/docs/decisions.md b/docs/decisions.md index 88c8ae3e..9cfb84dd 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -89,7 +89,7 @@ dark), the menu loses its shadow, and brand text is newly checked on the subtle ## D-052 — 화면 틀: 창 폭이 메뉴를 정하고, 본문은 한 기둥에 선다 (2026-11-12) -**상태.** 만들었다. 아직 배포 전(안드로이드 0.7.0, 브랜치 `feat/android-screen-frame`). 정산나우가 로컬 빌드로 옮겨 실물 폰의 창 세 가지에서 확인한 뒤에 배포한다. 설계 문서: `docs/superpowers/specs/2026-11-12-dds-android-screen-frame-design.ko.md`(설계와 달라진 것은 그 문서의 "달라진 것"). +**상태.** 배포했다(안드로이드 0.7.0, #147, `android-v0.7.0`, 2026-11-13). 정산나우가 로컬 빌드로 옮겨 배포 전에 확인했다. 앱의 모든 화면을 DDS 부품으로 옮기고, 475×751·704×933·933×704에서 밝은·어두운 화면으로(475×751은 글자 200%도) `DdsFrameCheck`와 `assertSameLines`로 쟀다 — 1dp 넘게 어긋난 시작선이 없었다. 펼친 폰의 전체 연결 테스트에서 DDS 탓의 실패는 없었다. 거기서도 확인하지 못한 것: 폰을 실제로 가로로 돌린 것, TalkBack, 접힌 폰의 전체 테스트. 설계 문서: `docs/superpowers/specs/2026-11-12-dds-android-screen-frame-design.ko.md`(설계와 달라진 것은 그 문서의 "달라진 것"). **문제.** 정산나우에서 소유자가 펼친 폰으로 찾았다. 화면마다 본문 시작선이 달랐고(펼친 가로에서 187, 147, 127, 끝에서 끝까지), 왼쪽 레일은 탭 화면에만 있었으며, 상단 줄은 화면 왼쪽 끝에서 본문은 가운데에서 diff --git a/docs/mobile-native.ko.md b/docs/mobile-native.ko.md index 87cecd8a..32dc280e 100644 --- a/docs/mobile-native.ko.md +++ b/docs/mobile-native.ko.md @@ -1069,6 +1069,10 @@ for (window in listOf(DpSize(475.dp, 751.dp), DpSize(704.dp, 933.dp), DpSize(933 check.assertSameLines() ``` +크기는 `DdsAppFrame` 바깥에서 고정한다. 틀 없이 그린 부품은 `ddsFrame()`이 창을 읽어 여백을 정하는데, 이때 +`ForcedSize`가 바꾸지 못하는 기기의 실제 창을 읽는다. 그런 테스트에서는 `LocalDdsFrame`을 직접 넣는다. 정산나우가 +자기 테스트에서 이것을 만났다. + `look`은 아래가 아니면 실패한다. 실패 문구는 화면 이름, 잰 값(dp), 맞게 해 주는 DDS 부품을 말한다. 1. 본문이 화면에 정확히 하나 있다(`DdsBodyColumn`이나 `ddsBody()`, 또는 `DdsCenteredColumn` 하나). diff --git a/docs/mobile-native.md b/docs/mobile-native.md index 6e7e24f6..f7971df7 100644 --- a/docs/mobile-native.md +++ b/docs/mobile-native.md @@ -1128,6 +1128,10 @@ for (window in listOf(DpSize(475.dp, 751.dp), DpSize(704.dp, 933.dp), DpSize(933 check.assertSameLines() ``` +Force the size around `DdsAppFrame`. A part drawn with no frame around it (`ddsFrame()` falls back to +the window) takes its gutter from the device's real window, which `ForcedSize` does not change; in such a +test provide `LocalDdsFrame` yourself. JeongsanNow met this in its own tests. + `look` fails, naming the screen, the measured numbers in dp and the DDS part that gives the right result, unless: