Repository navigation
feat: field focus on the visual container, eased field states and enforced plan procedure - #128
Merged
owjs3901 merged 2 commits intoNov 12, 2026
Conversation
- Generator: field component sets emit their focus variant as _focusWithin on the container and, without a Figma prototype transition, a 160ms ease-out transition on the changed props; transitionProperty is written in CSS kebab-case. - devup_ui_validate: input-focus-* rules and input-state-transition. - devup_runtime_audit: input-focus check (click and Tab) that fails inner outlines, rings missing the container, focus on the container, movement and focus states that snap with no transition. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lock - Screen and project plan confirm require the user's approval receipt (via, verbatim answer, approved URLs); page writes are refused until a confirmed plan carries it. - Every devup_screen_plan reply and refused export carries a procedure block: step of 5, the one next call, waitForUser and forbiddenNow. - site:motion recommends predicting motion from the design; status adds motion and field-state-motion completion items. - Skills, instructions, delivery-quality contract (v6) and manifest updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
owjs3901
marked this pull request as ready for review
November 12, 2026 03:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약 / Summary
세 가지를 한 PR로 묶었습니다: (1) 입력 필드 포커스를 사용자가 보는 컨테이너 전체에 적용, (2) 필드 상태·모션 애니메이션 기본값과 시안 기반 모션 예측, (3) 약한 모델이 절차(URL·화면 컨펌)를 건너뛰지 못하도록 서버 측 게이트와
procedure안내 강화.바뀐 동작 / Changed behavior
1. 필드 포커스 = 보이는 박스 (generation + validation)
_focusWithin으로 생성 (DEVUP_CODEGEN_FIELD_FOCUS_WITHINinfo diagnostic). 루트가 native control이면_focus유지, 버튼은 그대로.devup_ui_validate):input-focus-container,input-focus-duplicate-outline,input-focus-layout-shift(info, browser-required),input-focus-outline-removed,input-focus-moved-to-container(warning).devup_runtime_audit): 새input-focuscheck — 보이는 input/textarea/select를 click과 Tab으로 각각 포커스하고, 내부 기본 outline, 컨테이너를 감싸지 않는 ring, 컨테이너로 간 포커스, 크기/위치 변화를 실패 처리. disabled 필드는 목록에만 표시. auditPlan이 자동으로 계획에 넣음.2. 애니메이션
transition="160ms ease-out"+transitionProperty생성.transitionProperty는 이제 CSS kebab-case(border-color)로 출력 (기존에는borderColor처럼 camelCase가 그대로 나갈 수 있었음).input-state-transition(info, browser-required) — 포커스를 보여주는 박스에 transition이 없을 때.input-focuscheck가 transition으로 덮이지 않은 포커스 변화(snap)를 실패 처리. 측정 전 settle 대기를 추가해 이전 상태의 전환 중간값을 읽지 않도록 함.site:motion질문의 권장 답이 "Predict from the design"({"motion":{"source":"predicted","implementation":"devup-ui-static-keyframes"}})으로 변경. status 완료 항목에motion(선택한 모션의 keyframes가 소스에 없으면 missing)과field-state-motion(필드가 있는 파일에 transition이 없으면 missing) 추가.3. 절차 강제 (약한 모델 대응)
devup_screen_planconfirm은userApproval {via, userAnswer, approvedUrls}없이는 아무것도 확정하지 않음. placeholder/알 수 없는 채널/URL 불일치도 거부하고 보여줄 표를 반환.devup_project_planconfirm도 같은 receipt 필요(URL 제외).approval_required로 차단 (미리보기 export는 그대로 허용).devup_screen_plan응답과 거부된 export 응답에 plan 파일에서 계산한procedure블록:step(5단계 중 위치),next(지금 할 단 하나의 호출),waitForUser,forbiddenNow.devup/devup-implementation-plan스킬, delivery-quality, OpenCode 명령 문서에 hard stop과 procedure 규칙 추가. contract identifierfield-focus-on-visual-container,user-approved-plan-before-implementation(developmentContract v6), manifest 해시 갱신.검증 / Verification
로컬에서 실행한 것과 실행하지 않은 것을 구분합니다.
cargo test --workspace --no-fail-fast2340 pass / 0 fail. 새 테스트: 필드 포커스/전환 생성, 정적 규칙 6종, approval 거부·URL 불일치·delegated·export 차단,procedure단계별 출력, motion/field-state-motion 완료 항목.cargo clippy --workspace --all-targets -- -D warningsclean,cargo fmt --all -- --checkclean.harness/runtime-auditnpm test109 pass / 0 fail / 1 skip.fixtures/fields.html에서 click·Tab 포커스를 실제로 판정 (eased box pass, snap/inner outline/shift/tabIndex container fail).composite_export::r3_cancelled_client_recovers_retained_asset_job가 한 번 실패 후 재실행 3회 모두 통과 (asset job 타이밍 테스트, 이번 변경과 무관해 보임).한계 / Limits
<Input>같은 커스텀 컴포넌트 내부는 인식하지 못해 브라우저 check가 최종 판단입니다.motion/field-state-motion완료 항목은 소스 문자열 휴리스틱(keyframes/transition 존재)입니다. 실제 동작 증명은 runtime audit의 motion/input-focus check가 합니다.site:motion권장 답 변경으로, 새로 draft되는 plan은 기본적으로 모션 구현을 요구합니다 (사용자가 "None"을 고르면 not-applicable).🤖 Generated with Claude Code
Submitted via Devfive hub. Employee: ; device:
3099154426bffbeef8b62999b80bb038