Skip to content

[DONE] ops: upstream/horizontal-desktop — a clean branch of fork PR #5 on engmung/Patternflow dev, for the upstream PR that supersedes #488 (record only) - #6

Closed
patternflow-bot wants to merge 1 commit into
devfrom
claude/upstream-horizontal-desktop-1ugzxh
Closed

patternflow-bot wants to merge 1 commit into
devfrom
claude/upstream-horizontal-desktop-1ugzxh

Conversation

@patternflow-bot

Copy link
Copy Markdown

ops / https://claude.ai/code/session_01GAwcqsnaY1RVezcwx8QjAq

원래 레포 engmung/Patternflow 에 올릴 깨끗한 브랜치 upstream/horizontal-desktop 을 이 포크에 만들었습니다. 원래 레포 dev 위에 mbchars 커밋(작성자 그대로)과 포크 PR 5 의 미리보기 커밋 셋만 얹어서, 바뀐 파일이 PR 5 와 똑같은 51개입니다. 이 PR 은 기록용 빈 커밋이라 머지해도 포크 dev 는 바뀌지 않습니다.

체크리스트

한 일

$ git log --format='%h | %an | %cn | %s' engmung/dev..upstream/horizontal-desktop
dd528bc | Claude        | Claude        | docs: changelog for mbchars' horizontal desktop case and the fourth preview case
646331c | Claude        | Claude        | web: /build's case switch and 3D preview get a fourth case, mbchars' horizontal desktop one
5c8e0be | Claude        | Claude        | tools: case-models builds mbchars' horizontal desktop case
a22659d | Mykyta Bilous | Mykyta Bilous | Add horizontal desktop printed enclosure and assembly instructions. Switch username to mbchars.

① git diff --stat engmung/dev...upstream/horizontal-desktop

 CHANGELOG.md                                       |   2 +
 .../mbchars-horizontal-desktop-printed/README.md   |  79 +++
 .../mbchars-horizontal-desktop-printed/assembly.md | 141 +++++
 .../mbchars-horizontal-desktop-printed/bom.md      |  46 ++
 .../images/01_frame_connections.png                | Bin 0 -> 161198 bytes
 .../images/02_joint_section.png                    | Bin 0 -> 74927 bytes
 .../images/03_optional_pins.png                    | Bin 0 -> 30686 bytes
 .../images/04_usb_installation.png                 | Bin 0 -> 83624 bytes
 .../images/05_connections.png                      | Bin 0 -> 66720 bytes
 .../images/photo_front.jpg                         | Bin 0 -> 3496660 bytes
 .../images/photo_front_angle.jpg                   | Bin 0 -> 3518913 bytes
 .../images/photo_rear_assembly.jpg                 | Bin 0 -> 3077555 bytes
 .../images/photo_socket_detail.jpg                 | Bin 0 -> 1687845 bytes
 .../print_layout.3mf                               | Bin 0 -> 564648 bytes
 .../stl/alignment_pin_2mm.stl                      | Bin 0 -> 42684 bytes
 .../stl/control_section.stl                        | Bin 0 -> 284784 bytes
 .../stl/joint_bar.stl                              | Bin 0 -> 26484 bytes
 .../stl/knob.stl                                   | Bin 0 -> 44384 bytes
 .../stl/rear_control_cover.stl                     | Bin 0 -> 164784 bytes
 .../stl/rear_display_cover.stl                     | Bin 0 -> 164684 bytes
 .../stl/stand.stl                                  | Bin 0 -> 1884 bytes
 .../stl/usb_retainer.stl                           | Bin 0 -> 53184 bytes
 .../stl/white_inner_frame.stl                      | Bin 0 -> 381684 bytes
 .../stl/white_outer_frame.stl                      | Bin 0 -> 229684 bytes
 tools/case-models/README.md                        |  24 +-
 tools/case-models/assemble.mjs                     |  33 +-
 tools/case-models/build.sh                         |  10 +-
 tools/case-models/lib/looks.mjs                    |   8 +-
 tools/case-models/mbchars.py                       | 625 +++++++++++++++++++++
 web/content/build.md                               |   2 +-
 .../builds/{extraplojo => mbchars}/angle.jpg       | Bin
 .../builds/{extraplojo => mbchars}/front.jpg       | Bin
 .../builds/{extraplojo => mbchars}/inside.jpg      | Bin
 .../mbchars-horizontal-desktop-printed/angle.jpg   | Bin 0 -> 265520 bytes
 .../mbchars-horizontal-desktop-printed/front.jpg   | Bin 0 -> 231358 bytes
 .../mbchars-horizontal-desktop-printed/model.glb   | Bin 0 -> 379676 bytes
 .../rear_assembly.jpg                              | Bin 0 -> 139308 bytes
 web/public/llms.txt                                |   2 +-
 web/src/components/3d/HeroScene.tsx                |  21 +-
 web/src/components/3d/buildPose.test.ts            |  32 +-
 web/src/components/3d/buildPose.ts                 |  31 +-
 web/src/components/3d/caseModels.ts                |   2 +
 .../3d/cases/mbchars-horizontal-desktop-printed.ts |  42 ++
 web/src/components/3d/heroCase.test.ts             |   2 +
 web/src/components/3d/heroCase.ts                  |  12 +-
 web/src/components/sections/BuildPanel.test.tsx    |  36 +-
 web/src/components/sections/CasePicker.module.css  |  20 +-
 web/src/components/sections/CasePicker.tsx         |   6 +-
 web/src/components/sections/InsideGlobe/builds.ts  |  12 +-
 .../components/sections/build-cases-data.test.ts   |  26 +-
 web/src/components/sections/build-cases-data.ts    |  72 ++-
 51 files changed, 1234 insertions(+), 52 deletions(-)

② 원래 레포에 올릴 PR 초안 (영어, 원래 레포 PR 템플릿 What / Why / Tested)

제목

hardware+web: mbchars' horizontal desktop case as the third remix, and the fourth case in /build's 3D preview (supersedes #488)

본문

## What
Mykyta Bilous' ([@mbchars](https://github.com/mbchars)) horizontal desktop printed case, `hardware/case/remixes/mbchars-horizontal-desktop-printed/`, comes in as the third enclosure remix: the commit from #488 (`a22659d`), unchanged and with Mykyta Bilous as its author. On top of it, the case becomes the fourth one in /build's case switch and 3D preview, after the official v3.9 case, Besoiobiy's and SimonePDA's: `tools/case-models/mbchars.py` puts its model together from the remix's STLs (no assembled file exists) and checks it against the README (410.28 × 176.16 × 42 mm, the board's encoder grid, the 320 × 160 mm panel, no overlapping parts), and the card is the README's facts and the author's photos. The switch is four tabs, two by two on a phone. The case is 41 cm across, so on a desktop's tall view it is drawn smaller, by as little as keeps it clear of the arrows; on a phone all four cases, and on a desktop the three upright ones, stay at the one scale. The new model is 0.38 MB and loads only when the case is picked; the other three rebuild byte for byte. The build map's pin for the same build goes by the maker's name, mbchars (it was extraplojo).

Commits: `a22659d` (Mykyta Bilous, from #488 as it is), then `tools:` case-models builds the case, `web:` the fourth case in /build, `docs:` changelog.

## Why
Supersedes #488. It carries #488's commit as it is, so the case design, photos and assembly instructions stay credited to @mbchars (CC BY-SA 4.0), and adds the preview so the case shows on /build like the other two remixes. It was reviewed and merged in the fork first: https://github.com/Patternflow-lab/Patternflow/pull/5 (screenshots there: the arrows through four cases on a 1440×900 desktop, the author's photo beside the preview, a 390 px phone).

Not in this PR: `BUILD_GUIDE.md` §4 and the table in `docs/assembly/README.md` do not point at the new remix yet; the other two remixes are listed there.

## Tested
On this branch (engmung/Patternflow `dev` + these four commits):
- `web/`: `npm run lint` (0 errors; the 12 warnings are all in files this PR does not touch), `npm run typecheck`, `npm run build` (134/134 pages) and `npm run check:ci` (34 test files, 470 tests) all exit 0.
- `python3 .github/scripts/check_links.py`: all 579 relative links resolve.
- `tools/case-models/build.sh` (in the fork PR, on the same patch): four models; the three existing GLBs rebuild byte-identical, the new one is 379,676 bytes and rebuilds byte-identical too.

---
- [x] Touches `web/` → it builds (`npm run build`)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

증거

$ git ls-remote origin upstream/horizontal-desktop dev
e3a21485492ff103ad783d250677c4d1632b66b3	refs/heads/dev
dd528bc607dc7bd44beb4cb28a04272fae424f76	refs/heads/upstream/horizontal-desktop

$ git diff --name-only engmung/dev...upstream/horizontal-desktop | wc -l
51
$ git diff --name-only engmung/dev...upstream/horizontal-desktop | grep -E '^(\.claude/|incoming/|\.github/pr-evidence/)'
(없음)
$ git log --name-only --format= engmung/dev..upstream/horizontal-desktop | grep -E '^(\.claude/|incoming/|\.github/)'
(없음 — 히스토리의 어느 커밋도 이 경로를 건드리지 않음)
$ diff <(git diff --name-status engmung/dev upstream/horizontal-desktop) <(git diff --name-status e3a2148^1 e3a2148)
SAME file list + status
$ diff <(git diff engmung/dev upstream/horizontal-desktop) <(git diff e3a2148^1 e3a2148)
SAME patch
$ git diff --stat upstream/horizontal-desktop origin/dev      # 포크 dev 와 트리 차이는 포크 전용 파일 하나뿐
 .claude/settings.json | 1 +
 1 file changed, 1 insertion(+)

web$ npm ci && npm run build     → ▲ Next.js 16.3.0 · ✓ Compiled successfully in 20.2s · ✓ Generating static pages (134/134) · exit 0
web$ npm run check:ci            → exit 0 · Test Files 34 passed (34) · Tests 470 passed (470) · All … checks passed (각 스위트)
                                   (바뀐 테스트 buildPose · heroCase · BuildPanel · build-cases-data 모두 ✓)
web$ npm run typecheck           → exit 0
web$ npm run lint                → ✖ 12 problems (0 errors, 12 warnings) — 경고 파일 7개 모두 이 브랜치가 안 건드린 파일
$ python3 .github/scripts/check_links.py → all 579 relative links resolve

실행법

git fetch https://github.com/engmung/Patternflow.git dev:refs/remotes/engmung/dev
git fetch origin upstream/horizontal-desktop
git diff --stat engmung/dev...origin/upstream/horizontal-desktop
git log --format='%h | %an | %s' engmung/dev..origin/upstream/horizontal-desktop
git checkout origin/upstream/horizontal-desktop && cd web && npm ci && npm run build && npm run check:ci

가정

  1. PR [DONE] hardware+web: mbchars' horizontal desktop case (upstream #488) is the fourth case in the /build 3D preview #5 는 squash 가 아니라 merge commit 으로 들어갔다. 포크 dev 의 e3a2148 은 부모가 021e96f · 7ae41b4 인 머지 커밋이다. 그래서 과제의 둘째 길대로 원래 PR 브랜치 claude/horizontal-desktop-preview-qwlxhp 의 커밋을 가져왔다.
  2. mbchars 커밋은 --ff 로 Horizontal desktop engmung/Patternflow#488 의 커밋 그대로. a22659d 의 부모가 원래 레포 dev 와 같아서 새 커밋을 만들지 않고 그 커밋 자체를 얹었다. 작성자뿐 아니라 커미터 · 해시까지 Horizontal desktop engmung/Patternflow#488 과 같아서, 원래 레포에서 같은 커밋으로 보인다. 포크의 0d23998 은 패치는 같지만 부모가 .claude/settings.json 이 든 021e96f 라 쓰지 않았다.
  3. 증거 커밋 둘은 뺐다. ca0dafc(스크린샷 추가)와 7ae41b4(제거)는 합치면 바뀌는 것이 없지만, 얹으면 원래 레포 히스토리에 .github/pr-evidence/ 스크린샷이 남는다. 초안 본문은 스크린샷 대신 포크 PR [DONE] hardware+web: mbchars' horizontal desktop case (upstream #488) is the fourth case in the /build 3D preview #5 주소를 건다.
  4. 내용 · 메시지는 고치지 않았다. 미리보기 커밋 셋의 메시지는 원래 세션의 Co-Authored-By · Claude-Session 줄까지 그대로다. cherry-pick 이라 커미터만 Claude 다.
  5. 「51개와 같은지」는 패치까지 비교했다. 파일 이름과 상태(A/M/R)뿐 아니라 git diff 출력 전체가 같다.
  6. 원래 레포 web CI 를 따라 더 돌렸다. web-ci.yml 은 lint · typecheck · build · check:ci 를 돌리고, docs-links.yml 은 링크 검사를 돌린다. 넷 다 이 브랜치에서 통과했다. 펌웨어는 바뀐 것이 없어 빌드하지 않았다.
  7. case-models 재빌드는 다시 돌리지 않았다. 패치가 PR [DONE] hardware+web: mbchars' horizontal desktop case (upstream #488) is the fourth case in the /build 3D preview #5 와 바이트까지 같아서 PR [DONE] hardware+web: mbchars' horizontal desktop case (upstream #488) is the fourth case in the /build 3D preview #5 의 결과(기존 세 GLB 바이트 동일, 새 GLB 379,676 B)가 그대로 성립한다. 초안에도 「in the fork PR, on the same patch」라고 밝혔다.
  8. 초안은 「Supersedes Horizontal desktop engmung/Patternflow#488」. PR 은 키워드로 닫히지 않아서 Fixes 대신 이렇게 썼다. Horizontal desktop engmung/Patternflow#488 을 닫는 일은 원래 레포 PR 을 여는 쪽(총괄)이 정한다. 초안의 「Not in this PR」(BUILD_GUIDE §4 와 docs/assembly 표에 새 리믹스 안내 없음)는 PR [DONE] hardware+web: mbchars' horizontal desktop case (upstream #488) is the fourth case in the /build 3D preview #5 가정 10 과 같은 내용이다. 원래 레포 dev 에서 다른 두 리믹스만 그 두 곳에 있음을 확인했다.
  9. 이 기록 PR 은 포크 dev e3a2148 위의 빈 커밋 하나다. 머지해도 트리가 바뀌지 않는다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GAwcqsnaY1RVezcwx8QjAq


Generated by Claude Code

…rnflow (empty commit)

upstream/horizontal-desktop is engmung/Patternflow dev (abe7eb1) plus
mbchars' a22659d from engmung#488 as it is and the three preview commits of
fork PR #5 (23f45c9, d946f29, c785d7d). This commit changes nothing; it
only carries the record PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GAwcqsnaY1RVezcwx8QjAq
@engmung engmung closed this Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants