尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Try it: https://kyoto-trip-planner.vercel.app (public, no login)
This is a prototype with sample data. Nothing here is a real listing or booking.
A chat page that answers questions about a Kyoto weekend with stay, experience and food cards.
Each tick links to a screenshot in Tested on phone and laptop where one exists. Code-level rows link to the code. "Confirmed by tester" means it was checked by hand on that device, but no screenshot was taken.
| Requirement | Phone | Laptop | Proof |
|---|---|---|---|
| Guest message stays visible throughout | ✅ | ✅ | Phone 1, 2, 3; Laptop 1, 2, 3 |
| Thinking dots show before every reply | ✅ | ✅ | Confirmed by tester on phone and laptop |
| Three cards appear (stay, Experience, food) | ✅ | ✅ | Laptop 1, 3; phone confirmed by tester (screenshots show the stay card) |
Typing best places in USA shows the broken mock | ✅ | ✅ | Phone 2; Laptop 2 |
| The error appears inside the assistant bubble with “We couldn't put your plan together just now.” and “Your request is saved, and you can try again.” | ✅ | ✅ | Phone 2; Laptop 2 |
| Exactly one “Try again” button, inside the bubble | ✅ | ✅ | Phone 2; Laptop 2 |
| No red, no error codes, no alerts, toasts, modals or separate pages | ✅ | ✅ | Phone 2; Laptop 2 |
All three broken shapes (bad type, missing data, plain string) are rejected by toResponseItems | — | — | Code check: src/lib/responseItems.ts, shapes in src/data/mockResponse.ts |
| Try again removes the failed bubble, shows the dots, then the three cards, and never picks the broken mock | ✅ | ✅ | Phone 3, Laptop 3; dots confirmed by tester |
aria-live="polite", AA contrast, icon hidden from screen readers | — | — | Code check: src/app/chat.tsx (aria-live="polite", text-gray-800 on bg-gray-50; the bubble has no icon) |
| Visible focus ring on Try again | N/A (touch, no keyboard) | ✅ | Laptop confirmed by tester; classes in src/app/chat.tsx |
| 44px tap target on Try again | ✅ | ✅ | Confirmed by tester; min-h-[44px] in src/app/chat.tsx |
| Works on phone and laptop | ✅ | ✅ | Phone 1, 2, 3; Laptop 1, 2, 3 |
| Public Vercel link opens with no login | ✅ | ✅ | Phone 2 (vercel.app in the address bar); Laptop 1 |
Each step was run on the live Vercel link. The step names match the checklist rows they prove.
| Step | Laptop | Phone |
|---|---|---|
| 1. Three cards appear (stay, Experience, food) | ||
2. Typing best places in USA shows the broken mock | ||
| 3. Try again removes the failed bubble, then the three cards |
To fire the forced failure, type best places in USA as the whole message (any case); src/app/chat.tsx then sends the broken mock from src/data/mockResponse.ts.
Every text field (name, neighbourhood, dates, price, highlight) comes from a real row in Kyoto_weekend_workbook.xlsx. The one filler field is:
StayCard, ExperienceCard, FoodCard): a placeholder image icon labelled "Photo of … coming soon". The workbook has no photo column yet.Run it locally with npm install && npm run dev, then open http://localhost:3000.
Checked against the draft UX Research requirements note.
Hi team and leaders, the Kyoto Trip Planner prototype is ready for Thursday's session. The researcher shares this link with 8 test guests; product team and leadership, try it before and after: https://kyoto-trip-planner.vercel.app (public, no login, phone or laptop).
All sample data: nothing is a real listing or can be booked.