Skip to content

Commit e280646

Browse files
committed
릴리즈: 0.2.3 CI 보정
1 parent 2b21333 commit e280646

9 files changed

Lines changed: 40 additions & 29 deletions

File tree

.github/workflows/publish.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
workflow_dispatch:
77
inputs:
88
tag:
9-
description: "Release tag to publish, for example v0.2.2"
9+
description: "Release tag to publish, for example v0.2.3"
1010
required: true
1111
type: string
1212

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,30 @@ in this file (see `docs/skills/ops/release/git-and-release.md`).
88

99
(next release accumulates here)
1010

11+
## 0.2.3 - 2026-06-06
12+
13+
0.2.2 공개 직후 원격 CI에서 확인된 macOS 런처 health probe와 mobile-layout 정적 게이트를
14+
패치했다. PyPI 발행은 이 CI 정리판 기준으로 진행한다.
15+
16+
### Fixed
17+
18+
- 런처 health check client가 localhost probe에서 proxy 설정을 타지 않도록 `no_proxy`를 적용했다.
19+
- `mainSurface` loading shell에 responsive spacing 클래스를 추가해 mobile-layout core surface gate를 통과하도록 했다.
20+
- Playwright dogfood verifier의 위젯 API probe를 page execution context에서 request context로 옮겨 navigation timing flake를 제거했다.
21+
22+
### Verification
23+
24+
- `uv run python -X utf8 tests/run.py preflight` 3/3.
25+
- `uv run python -X utf8 tests/run.py gate widget-bridge` 통과.
26+
- `uv run python -X utf8 tests/run.py gate editor-build` 통과.
27+
- `uv run python -X utf8 tests/run.py gate landing-build` 통과.
28+
- `uv run python -X utf8 tests/run.py gate mobile-layout` 통과.
29+
- `uv run python -X utf8 tests/run.py gate app-runtime` 통과.
30+
- `python -X utf8 tests/run.py gate launcher-check` 통과.
31+
- `python -X utf8 tests/run.py gate launcher-test` 통과.
32+
- `uv run python -X utf8 tests/run.py gate install-launcher-smoke` 통과.
33+
- `uv build --clear` 통과.
34+
1135
## 0.2.2 - 2026-06-06
1236

1337
런처 수신성, 자동화 영속 세션, 과제방 진행 추적, 학습 카드 계약, 테스트/릴리즈 운영면을 한 번에

editor/src/components/app/mainSurface.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ function MainSurfaceContent(props: MainSurfaceProps) {
233233
function SurfaceLoading() {
234234
const { t } = useLocale();
235235
return (
236-
<div className="grid h-full min-h-0 place-items-center px-4 text-sm text-muted-foreground">
236+
<div className="grid h-full min-h-0 place-items-center px-4 text-sm text-muted-foreground sm:px-6">
237237
{t("surface.loading")}
238238
</div>
239239
);

launcher/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

launcher/codaro-launcher/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "codaro-launcher"
3-
version = "0.2.2"
3+
version = "0.2.3"
44
edition = "2024"
55

66
[dependencies]

launcher/codaro-launcher/src/backend.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ pub fn wait_for_backend_ready(child: &mut Child, url: &str, timeout: Duration) -
219219

220220
fn build_healthcheck_client() -> Result<Client> {
221221
Client::builder()
222+
.no_proxy()
222223
.timeout(Duration::from_millis(500))
223224
.build()
224225
.context("Failed to build HTTP client for launcher health check.")

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "codaro"
3-
version = "0.2.2"
3+
version = "0.2.3"
44
description = "Programmable studio — interactive editor runtime for code, learning, and automation"
55
readme = "README.md"
66
license = { file = "LICENSE" }

tests/runtime/verifyPlaywrightDogfood.py

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -93,35 +93,21 @@ def record(name: str, payload: dict[str, Any]) -> None:
9393

9494
# 2. ui-event 직접 fetch — 위젯 클릭 round-trip
9595
ctx2 = browser.new_context()
96-
page2 = ctx2.new_page()
97-
page2.goto(base, wait_until="domcontentloaded", timeout=15000)
98-
createResp = page2.evaluate(
99-
"""async () => {
100-
const create = await fetch('/api/kernel/create', {
101-
method: 'POST',
102-
headers: { 'Content-Type': 'application/json' },
103-
body: JSON.stringify({ workingDirectory: null }),
104-
});
105-
return await create.json();
106-
}"""
96+
createResponse = ctx2.request.post(
97+
f"{base}/api/kernel/create",
98+
data={"workingDirectory": None},
10799
)
100+
createResp = createResponse.json()
108101
sessionId = createResp.get("sessionId")
109-
clickResp = page2.evaluate(
110-
"""async ({ sessionId, callbackId }) => {
111-
const r = await fetch(`/api/kernel/${sessionId}/ui-event`, {
112-
method: 'POST',
113-
headers: { 'Content-Type': 'application/json' },
114-
body: JSON.stringify({ callbackId, eventType: 'click', payload: null }),
115-
});
116-
return { status: r.status, body: await r.json() };
117-
}""",
118-
{"sessionId": sessionId, "callbackId": callbackId},
102+
clickResponse = ctx2.request.post(
103+
f"{base}/api/kernel/{sessionId}/ui-event",
104+
data={"callbackId": callbackId, "eventType": "click", "payload": None},
119105
)
120106
record("widget-click-round-trip", {
121107
"sessionId": sessionId,
122-
"httpStatus": clickResp["status"],
108+
"httpStatus": clickResponse.status,
123109
"callbackFired": clicks == ["clicked"],
124-
"responseStatus": clickResp["body"].get("status"),
110+
"responseStatus": clickResponse.json().get("status"),
125111
})
126112
ctx2.close()
127113

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)