原型修訂號 proto-r1 設計提案,待確認 上面那一整格就是可以真的動手的原型 —— 滑素材庫、按住把一件拿上牆、換位、收回、按「完成整理」。 它吃的是你這支手機當次的實際可用視窗,不是固定的 393×793 手機框。
這不是 CM。本頁沒有載入正式 app、沒有讀寫你的任何資料(不碰 localStorage / cm_data / 備份 / 照片;本頁自己也不註冊 service worker)。
放進 LAB 測試站後由測試站自己的 cm-lab-* 快取管理,那是另一個網址,和正式 CM 的快取與資料互不相通。
裡面 31 件東西全部是假的。重整頁面就回到最初的測資,怎麼弄都不會弄壞真的咖啡角。
底下那排導覽列與「+」只是示意,按了不會去任何地方。
原型修訂號本頁用自己的修訂號(proto-r1),不借用、也不遞增正式 app 的快取號。
覺得哪一步「怪」「不順」「按不到」就是這一輪要的答案。順不順比對不對重要。
設計提案,待確認素材庫是「按住拿起」,牆與檯面是「直接拖」。 兩邊不一樣是刻意的:庫要能上下滑,所以在庫裡一碰就拖會把捲動吃掉; 牆與檯面本來就不捲,直接拖比較快。這個代價要你摸過才算數。
| 起手/狀態 | 這個原型的行為 |
|---|---|
| 非整理態 | 只有牆面右上那顆 ⇅ 有作用;不能搬東西。其餘都是無作用示意,不會跳去任何地方 |
| 庫內單點後放手 | 什麼都不做 —— 不擺出、不收回、不開詳情 |
| 庫內上下滑(從圖形上或名稱上起手都算) | 捲格網。一旦判成捲動,這根手指到放開為止都不會變成拿取 |
| 庫內按住約 0.32 秒且沒滑動 | 那一格亮起紅框 = 已拿起,同時停掉庫的捲動,接著拖去牆/檯面 |
| 庫還在慣性滑動時按住 | 不成立 —— 要等格網靜止滿 0.26 秒才允許起拖 |
| 場景物件上起手 | 移動超過 9px 才起拖;沒超過就放手,不做任何收放 |
| 拖曳中 | 只有一個拿起物、一個有效落點;分類不切、庫不捲、完成整理按不到 |
| 參數 | 採用值 | 為什麼是這個值 |
|---|---|---|
| 長按時間 | 320 ms | iOS 系統自己的長按(選字放大鏡/分享選單)約 500ms,超過就會跟系統手勢撞;250ms 以下實測太容易在「想捲一下」時誤觸發。320 落在兩者中間。這是本原型量出來的取捨,不是任何既有驗收數字。 |
| 長按取消位移 | 8 px | 手指放著本來就會漂。8px 是 repo 既有的長按取消容忍(工程書_028),拿來當本原型的候選起點,不是它已被驗收成庫內長按的數字。 |
| 靜止判斷 | 格網 260 ms 沒有捲動事件 | 取自 DRAG_STILL_MS=260 本尊(index.html 3329 行)。它原本是「頁面連續靜止」的門檻,不是長按時間 —— 這裡只借它的「靜止多久算停下來」這一件事。 |
| 場景移動容忍 | 9 px | 照 DRAG_MOVE_TOL 現值(index.html 3329 行)。本原型只是抄同一個初值,沒有改正式常數。 |
| 拖曳中場景自動捲動 | 邊緣 48 px 觸發,速度 2→14 px/幀 | 只在「降級可捲」時才會發生,而且只捲場景、不捲格網、不切分類。48px 約等於一根手指的寬度,再窄會很難停在觸發帶裡。捲完會重新量一次落點幾何再判命中。 |
touch-action:pan-y(手指落下前就成立,不是長按後才掛),長按成立才改成 none 並由開機就註冊好的 touchmove 攔截器接手。
這個原型不用「把整片庫鎖成不能滑」去換拖曳成功,也沒有用桌機的 HTML5 拖放。
攔截器每次拿到的 cancelable 實際值印在下面的診斷區 —— 如果 iOS 沒讓我們攔下來,那裡會直接顯示出來。| 物件 | 牆上 S1/S2 | 檯面 | 素材庫格網 |
|---|---|---|---|
| 豆袋 | 可擺、可換位 | 無效落點 | 從場景拖回可收 |
| 三樣裝飾(🪴/相框/🌿) | 可擺、可換位 | 無效落點 | 從場景拖回可收 |
| 本輪可操作器具(濾杯 5+愛樂壓 1) | 可擺、可換位 | 可擺、可換位 | 從場景拖回可收 |
| Menu 小黑板、豆倉克數、磨豆機/手沖壺 | 不可拿取、不可收,占著原位置(前兩者是功能不是擺飾;後兩者本輪標「未確認支援」) | ||
cornerWallSplit() 跨層溢出演算法,
不會自動把別的東西收回或重排。所以不能拿本頁的結果宣告正式溢出問題已經解決。100dvh)並處理 safe-area 與底部導覽占位。793 不是手機高度,本頁沒有把任何內容整體縮小去塞滿。設計提案,待確認比較基準沿用前一段靜態稿:4 欄、格高 100、庫高 395。 這三個都是前一段的模擬提案,不是手機必須符合的常數。本次在你手機上的實量印在診斷區。
靜態示意下面三塊是三個分類一開始的內容,直接展開排好,不是切換出來的——這樣 JS 被擋掉時你照樣看得完。上面操作台裡的東西就是這 31 件。
刻意挑會把格子擠壞的那幾種:最短名(「秘魯」)、最長名(「巴西 喜拉朵 黃波旁 半日曬 微批次」)、貼標籤影像的袋、立袋/平袋/半透明袋都在裡面。
現況可收的擺飾今天只有三樣(🪴/相框/🌿)—— 書背與綠罐已於 2026-09-06 刪除。本頁沒有憑空生出裝飾目錄。
現況今天檯面上的器具取自 brewGear(),而它只收濾杯與愛樂壓,最多顯示 3 個。
未確認支援磨豆機與手沖壺今天沒有專屬 SVG、也沒有場景外觀(index.html 全檔只有 dripperIconSVG 與 aeropressIconSVG)。格子裡畫的是檯面既有的擺飾形狀,本輪不可拿取,並且明標。這是原型的測試範圍,不是「正式只支援兩種」的裁決,也不承諾磨豆機/壺已經有正式外觀。
分類鈕上的數字是該分類的總件數(20/3/8),不會因為擺出或收回而改變,也不是「庫裡還剩幾件」。
高矮差最大的兩個都在庫裡:愛樂壓(又高又窄)與平底濾杯(又扁又寬)——格高固定 100,兩者都沒有被切,格子也沒有被撐開。
素材庫能不能伸縮、格子密度能不能調、搜尋、庫內排序、複製物件、分類補資料、Apple 那種即時擠開的動畫 —— 本輪都沒有做。 正式的器具支援範圍、容量政策、溢出規則與「要不要寫進資料」留給正式功能工程書; 手勢、捲動、拿取與收回由這一份可操作原型先驗證,確認之後才進正式工程書。 本頁的任何行為都還不是使用者已定案的規格。
固定假資料情境這幾個是為了讓「不好重現」的狀況一按就到位。 按下去只換上面操作台裡的假擺法,不會存任何東西,也會先取消還沒完成的手勢。
「重置試用」與重整頁面等價 —— 只重置本頁的假狀態,沒有碰到任何真實資料。
下面的數字是你這支手機、這一次開啟量出來的。回報時把整塊複製給指揮部就好。
互動未啟用 —— 沒有 JavaScript 就沒有讀數。這一塊在 JS 執行時才會有內容。
模型紀錄:本段實際由 Claude Code / Opus 5 / 高 施工。簡報「Claude 建議」欄與此一致, 但這一行是實際,不是照抄建議。
桌機 Chrome 148(Claude Code 內建瀏覽器窗格,macOS 15.5),以 http://127.0.0.1 本機伺服器開啟;
模擬視窗 393×793 / 375×667 / 393×500,另有非模擬桌機視窗 653×715。
回報圖以 headless Chrome 出圖(本機 Chrome 最小視窗寬 500px,因此改用 393px iframe 框架出圖再裁切)。
沒有 iOS Safari、沒有真機、沒有 safe-area、沒有網址列收合。
標記說明:桌機實作驗證=非模擬的真實滑鼠事件;合成事件=程式派送 PointerEvent(不算真觸控); 真機=手機;未測=沒跑。
| # | 試用動作 | 方式 | 結果 |
|---|---|---|---|
| 1 | 進整理、三分類切一遍、完成後再進 | 合成事件 | 通過。四項定案一致(地圖收起/櫃體換成素材庫/牆面 ✓ 隱藏/完成入口 1 顆);往返後擺法一致、三分類捲動位置各自保留、沒有跳導航 |
| 2 | 庫格圖與字上快滑慢滑、滑到頂底、滑後馬上按住 | 合成事件(部分)/真機未測 | 已驗:單點放手不動作;位移超過 8px 判為捲動後,這根手指到放開都不再變成拿取;分類列與完成列不隨格網跑。未驗:真慣性滑動、快滑手感、到頂/到底的捲動穿透 —— 這幾項只有真觸控算數 |
| 3 | 滑到屏外的豆袋按住拖上 S1;愛樂壓上 S2/檯面 | 合成事件 | 通過。長按 320ms 成立 → ghost 出現、庫格亮紅框、拖到 S1 成交;愛樂壓在牆與檯面都放得下;庫原格標「已擺出」且不複製;圖形沒有被裁切(見回報圖 ③)。「目標會不會被手指或庫遮住」真機未測 |
| 4 | 三類場景物件換位;庫中新物件放到已占位置 | 合成事件 | 通過。場景→場景落在別件上=交換(兩件位置對調);庫→場景落在物件上=插在它前面且該件仍在;落空白=排尾端;庫格目錄順序不變 |
| 5 | 場景物件拖入庫空白/其他格;切到別分類後再收回 | 合成事件 | 通過。整塊格網亮起並收回;庫顯示「裝飾」時照樣收得回豆袋,不自動切分類、不跳捲動位置;回自己分類後仍在原格、沒有多一件 |
| 6 | 點一下擺飾/庫格;拿起放回自己、分類列、完成列、固定功能件 | 合成事件 | 通過。點一下不收放;放回自身判為無變動;分類列、完成整理列、Menu 小黑板都是無效落點(小黑板沒有被穿透成空白);放手那一下的 click 被吞掉,沒有順便按到「完成整理」 |
| 7 | 滿層、跨層交換後放不下、器具移往已滿檯面 | 合成事件 | 通過。S1 滿層(餘裕 1px)再放一件 → 落點紅斜線、整次退回(需 364px/只有 345px);跨層交換 60px 立袋換 44px 平袋 → 來源層放不下也整次拒收(需 343/只有 341);檯面 4 件已滿再插一支 → 拒收(需 413/只有 365)。三次都沒有偷偷收走、改小或重排其他件 |
| 8 | 拖曳中離開頁面/第二指/旋轉;放手後立即再滑庫 | 合成事件 | 通過。第二根手指、離開頁面、視窗改變都取消當次,ghost 清乾淨、保留起拖前擺法;下一次仍正常。真正的背景切換與旋轉真機未測 |
| 9 | 393/375 模擬與實際手機;Safari 網址列;短視窗 | 模擬 | 模擬通過:393 → 庫高 394、4 欄、格 86×100、可見 2.80 列;375 → 格 82×100;393×500 → 降級可捲(庫固定 270,場景可捲 169px),拖到場景上緣自動捲動並在捲後重新命中成交,格網沒有被自動捲、分類沒有被自動切。iOS Safari 與網址列收合完全未測 |
| 10 | 44px 命中檢查(含捲出畫面的格子) | 合成事件 | 通過。三個分類各跑一次 elementFromPoint + 事件派送:庫格最小 86.3×100、分類鈕 120.3×44、完成整理 369×48、場景成員最小 44×44,全部兩軸 ≥44 且中心點沒有被遮擋。⚠️ 合成派送不算真觸控 |
| 11 | 連續切分類、拿出收回、重置/重整;停用 JS | 合成事件 + 靜態 | 通過。一件永遠只有一份;重置只動假資料;重整回初始測資。JS 完全不執行時:紅色「互動未啟用」條出現,場景、素材庫、三分類 31 件起始測資與全部提案、限制都看得到(見回報圖 ⑧) |
本段目前沒有。若試用中對位置/間距/顏色/文案有純視覺的決定,施工端會把原話與定案補寫在這裡 —— 在聊天裡拍板而沒有人寫下來的決定,等於沒有發生過。