尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗เว็บออกแบบแนวคิดทางแยกและวงเวียน สำหรับการจราจรชิดซ้าย
repository นี้เป็นฐานเดียวของผลิตภัณฑ์ โดยรวมแนวคิดจาก street-concept-designer และ road-concept-builder เข้ามาในรูปแบบสเปก ไม่ใช่โค้ด เป้าหมายคือ workspace เดียวแบบ road-first ที่วิศวกรใช้งานได้โดยไม่ต้องอ่านคู่มือ ระหว่างนี้งดเพิ่มฟีเจอร์ใหม่จนกว่า workspace ใหม่จะผ่านการยอมรับ
รายละเอียดการปรับปรุงก่อนหน้าและข้อจำกัด: Remediation report
สำหรับการรับช่วงพัฒนาต่อ ให้เริ่มจาก AGENTS.md และ Project Context แล้วอ่าน HANDOFF.md, Architecture, Slip Lane Design Basis และ Product v1 Release Audit ก่อนแก้โค้ด โดย repository/branch/commit/PR เป็น source of truth ไม่ใช่ความจำจากบทสนทนาเดิม
หน้าหลักคือ หน้าออกแบบ (/ และ /design) แบบวาดถนนก่อน (road-first): ถนนเป็นเจ้าของแนวและหน้าตัด ทางแยกเกิดเองตรงที่ถนนตัดกัน
/junction สำหรับ 3 มิติของทางแยก ทางข้าม สัญญาณไฟ วงเวียน ช่องเปิดเกาะกลาง ลูกศร และ Slip lane ขั้นสูง แล้วนำค่ากลับมาเป็นขั้นตอนเดียวที่ย้อนได้หน้า /network เดิมปลดแล้ว (URL พาไปหน้าออกแบบ) งานที่เคยบันทึกไว้ในเบราว์เซอร์นำเข้าเป็นทางเลือกเพิ่มได้ ส่วน /roads ยังเป็นห้องทดลองแนวถนน ไม่ใช่ส่วนหลักของผลิตภัณฑ์ ดูรายการความสามารถที่ย้ายหรือตัดออกใน docs/spec/RETIREMENT_PARITY.md
Product v1 ได้รับการยอมรับและ merge เข้า main ผ่าน PR #1 แล้วเมื่อ 2026-09-30 (merge commit 98198c443b4aee96fcb25c64d5c426aa03bb8d0b). รายละเอียด release gate และข้อจำกัดที่ตั้งใจไว้บันทึกใน docs/PRODUCT_V1_RELEASE_AUDIT.md
/junction)เลือกทางแยกหรือวงเวียน เปิด/ปิดขาถนนให้เหลือ 3 หรือ 4 ขา จากนั้นคลิกขาถนนบนแบบเพื่อแก้ไข
ขาถนนเป็นเส้นตรงแยกมุมได้ มีระยะห่างมุมขั้นต่ำ 40 องศาเพื่อกันแบบซ้อนกัน กรณีที่พื้นที่ไม่พอสำหรับโค้ง Slip lane หรือเส้นทึบ 30 เมตรจะคงแบบเดิมและแสดงเหตุผล
หน้าตัดใช้กติกาคงที่ ซ้าย = ขาเข้าแยก / กลาง = เกาะกลาง / ขวา = ขาออกแยก ไม่กลับด้านตามทิศภูมิศาสตร์ ผู้ใช้เลือกองค์ประกอบจากผังหรือหน้าตัดและแก้ความกว้างจากหน้าตัดได้โดยตรง เลนหลักของแต่ละทิศทางใช้ความกว้างร่วมกัน ส่วนเลนเสริม/เลนรับสามารถกำหนดความกว้างแยกได้ แถบเพิ่มเติม ได้แก่ ไหล่ทาง เลนจักรยาน เลนมอเตอร์ไซค์ และพื้นที่คั่น
3D เป็นแบบฉายขนานจากพิกัดสามมิติ ใช้ Canvas และผัง SVG ชุดเดียวกัน ถนนอยู่ระดับเดียว ยังไม่มีภูมิประเทศ ความลาดชัน สะพาน การจำลองรถ การคำนวณแสง หรือการส่งออกโมเดล 3D ต้นไม้/เสาไฟเป็นชุดอัตโนมัติ ยังไม่มีการย้ายวัตถุทีละชิ้น
แบบนี้สำหรับสื่อสารแนวคิด ยังไม่ใช่แบบรับรองมาตรฐานวิศวกรรม
core/junction/model.ts: ข้อมูลแบบหลัก, schema v6, validation ระดับข้อมูล และ migration JSON รุ่นเก่าcore/junction/geometry.ts: base junction geometry เท่านั้น — ขอบถนน ทางเท้า ปากแยก median/pocket datums; ห้ามนำ Slip logic กลับเข้ามาcore/junction/slip-model.ts: source of truth ของ Design.slips: SlipLane[] และ lifecycle เพิ่ม/ลบ/แก้ Slipcore/junction/slip-geometry.ts: Slip overlay geometry, tangent/width transition, approach auxiliary, departure/acceleration, crossing และ validation เฉพาะ Slipcore/junction/design-validation.ts: รวม base-junction validation กับ Slip-overlay validationapp/junction/drawing.tsx: ผัง SVG; render base junction และ Slip overlay แยกกันcore/junction/selection.ts / object-layer.tsx: selection และ drag interaction ที่อ้าง geometry ชุดเดียวกับ rendererapp/junction/section-view.tsx / scene3d.tsx: หน้าตัดและ 3D ที่ consume Slip overlay โดยไม่แก้ base roadcore/junction/objects.ts: ตำแหน่งต้นไม้/เสาไฟร่วม 2D/3D และหลบพื้นที่ Slip overlayapp/junction/page.tsx: เครื่องมือ ประวัติการแก้ไข autosave และส่งออกapp/roads/page.tsx: พื้นที่ทำงานวาดถนนอิสระ (Free Draw / Network)Slip lane เป็น design-level overlay ไม่ใช่ field ใน Arm และไม่ใช้ generic Pocket เป็น source of truth อีกต่อไป กฎเหล็กคือการเพิ่ม/ลบ/ปรับ Slip ต้องไม่เปลี่ยน edges(d) ของ base junction; regression test ตรวจ edges(withSlip) === edges(base) แบบโครงสร้างตรงกัน
Baseline Slip ไม่มีทางข้าม, auxiliary lane หรือ acceleration lane โดยอัตโนมัติ Treatment ต่าง ๆ ต้องเปิดอย่าง explicit ผ่าน SlipLane.approach, SlipLane.departure และ SlipLane.crossing. ดูรายละเอียดและข้อห้ามใน docs/ARCHITECTURE.md และหลักวิศวกรรมใน docs/SLIP_LANE_DESIGN_BASIS.md
Node >= 22.13 และ pnpm ตาม packageManager ใน package.json
pnpm install --frozen-lockfile
pnpm dev
pnpm exec tsc --noEmit
pnpm test
pnpm lint
pnpm test:builds
การทดสอบ geometry สร้างภาพตรวจในโฟลเดอร์ชั่วคราวที่ไม่บันทึกลง Git
ยังไม่ได้ทดสอบทุกขนาดหน้าจอหรือทุกชุดค่าทางเรขาคณิต
Browser verification covers reset/undo, 3D zoom buttons, opposite-arm alignment, copying markings and image preview/download. Pure pointer tests cover pinch ratio, anchoring, continuing with one finger and clearing cancelled pointers. Physical multi-touch devices have not yet been tested.
Lane divider controls now select incoming, outgoing or both directions within the selected arm. Each direction retains its own mode and solid length; changing incoming values does not change outgoing values. Legacy files without outgoing overrides inherit their former shared settings. Markings-copy includes both directions, and road-length checks consider directions that actually contain lane dividers. Regression coverage includes independent modes, lengths, other-arm isolation, legacy imports and rendered SVG paths.
Replaced average-depth face sorting with a cached BSP visibility tree. Surfaces crossing another surface's plane are split, then traversed back-to-front for the current orthographic camera. Long sidewalk faces therefore cannot incorrectly cover nearer trees, lamps or traffic signals. Canvas previews and PNG/JPEG exports share this ordering. No design-file changes are required.
Regression: node scripts/verify-junction.cjs then node scripts/verify-visibility.cjs. The latter compares painted visibility with independently calculated nearest-surface depths at 8,505 overlap probes across 36 yaw/pitch combinations, using four-arm sidewalks and furniture. Browser checks cover rotation and PNG preview.
Each approach now measures setbacks from the farther of its own two curb tangencies instead of the largest junction-wide node extent. An acute corner only changes its two incident approaches. Median noses, crossings, stop/divider lines, arrows, section bands, selection extents, roadside placement and 3D furniture use that local datum consistently. The markings panel displays the selected approach datum; zero setback means its own mouth, not the intersection center. Roundabout datums are unchanged.
Tests cover the reported 315°/90°/180°/270° layout, unaffected west/south approaches, zero offsets, rotated designs, SVG placement, existing geometry cases and shared 3D visibility. Browser checks cover the skew layout, zero median/crosswalk offsets and disabling the crossing then setting the stop offset to zero.
Select an arm, open ถนน, then select ทิศทางหน้าตัด. Incoming and outgoing directions independently retain lane width, sidewalk width and ordered shoulder/bicycle/motorcycle/separator bands. Existing designs inherit their original shared dimensions until edited.
Each direction supports 0–3 additional lanes on either side: left is curb-side and right is median-side, relative to travel. Incoming additions are turning pockets; outgoing additions are receiving lanes. Incoming full-width/storage length is referenced from the incoming control datum. Outgoing receiving length is referenced from the actual departure-side road-mouth/tangency datum, followed by its merge taper.
Auto space allocation is feature-driven. A median-side auxiliary lane uses available median width first and widens outward only by the actual deficit. A curb-side auxiliary lane widens outward by default. Shoulder/buffer reallocation and retained-median constraints are explicit choices rather than hidden Auto rules. A narrow residual median produces feedback; it does not silently force widening. Schema-4 imports preserve their former visual result through explicit migrated allocation settings.
Main and auxiliary lanes have lane identity and editable arrow markings. Outgoing receiving lanes default to a semantic merge-to-main arrow that is mirrored from local lane geometry rather than geographic screen direction. These remain conceptual geometric lanes without vehicle routing, capacity simulation or standards certification.
Verification: node scripts/verify-junction.cjs followed by node scripts/verify-pockets.cjs. Tests cover independent dimensions, legacy defaults, JSON validation, insufficient length, both pocket sides, outgoing receiving lanes, skew approaches, slip lanes and roundabouts. Browser checks cover independent directional controls, six added lanes, and 2D/3D rendering.
Release candidate ใช้ชุด gate เดียวกับ GitHub Quality workflow:
pnpm install --frozen-lockfile
pnpm test
pnpm exec tsc --noEmit
pnpm lint
pnpm test:builds
pnpm test:browser
pnpm test:browser ครอบคลุม Network create/edit/review/compare, Project File recovery, keyboard destructive safety, export/report, 2D/3D และ golden Junction cases.
Vercel / Next.js only. See VERCEL.md. pnpm test:builds runs the production build and the TypeScript check.