feat(classroom): add seated arrow-key desk navigation and improve seating user experience
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 停滞
- 技術スタック
- html, javascript
- 領域
- frontend
調査の方向性
Everything is in public/classroom_poc.html: the arrow-key handler belongs where isSeated is checked, keysPressed is reset on leave_seat and seat_left, renderDesks() holds the row spacing, and showToast is the toast to stub out. Pull request #122 is already open against this work, so check it before starting. Done means the seated arrow-key navigation, the keysPressed reset, the spacing change and the toast removal all work as the testing steps describe.
索引モデルが issue の本文から書いたものです。
説明
Overview
This proposal improves the virtual classroom seating experience in public/classroom_poc.html.
Currently, users can sit at a desk but cannot easily move to another desk while seated. This change adds arrow-key navigation between adjacent available desks, fixes movement state after standing up, improves row spacing, and removes intrusive toast notifications.
Proposed improvements
- Allow seated users to move between adjacent available desks using
↑,↓,←, and→. - Prevent movement keys from becoming stuck after a user stands up by resetting
keysPressed. - Increase vertical spacing between desk rows so username labels do not overlap desks or chairs above them.
- Remove toast notifications for a cleaner classroom UI.
- Prevent arrow keys from scrolling the page or interfering with chat input while navigating seats.
Expected behavior
When seated:
- Pressing an arrow key attempts to move the user to the adjacent desk in that direction.
- Movement is blocked if the target seat is occupied or out of bounds.
- The client sends an
update_seatevent for valid seat changes. - Pressing
Ewhile seated lets the user stand up. - After standing up, normal character movement works immediately.
Implementation notes
Changes are limited to public/classroom_poc.html:
- Add an arrow-key handler when
isSeated === true. - Calculate the target desk row/column and validate it before sending
update_seat. - Show a non-intrusive message when the target seat is already taken.
- Reset
keysPressed = {}onleave_seatandseat_left. - Update
renderDesks()spacing usingstartTop = 20androwStep = 28. - Replace
showToastwith a no-op and remove the toast container. - Call
preventDefault()for arrow keys andEwhen the user is not typing in an input field.
Testing steps
- Open
/classroom_poc?autojoin=1&room=lobbywhile signed in. - Walk to an available desk and press
Eto sit. - Press
↑,↓,←, and→to move between adjacent available desks. - Try moving into an occupied seat and confirm the move is blocked.
- Press
Eto stand up. - Confirm that walking movement works immediately after standing.
- Confirm username labels no longer overlap desks in the row above.
- Confirm arrow keys do not scroll the page while seat navigation is active.
Screen recording
https://github.com/user-attachments/assets/9f3ff8c5-1074-4da6-b461-9017e9989fe6
- Sitting at a desk with
E - Moving between available desks with arrow keys
- Attempting to move into an occupied seat
- Standing up and immediately walking again
- Improved spacing between desk rows
Acceptance criteria
- Seated users can navigate to adjacent available desks with arrow keys.
- Occupied and out-of-bounds seats cannot be selected.
-
keysPressedresets after standing up. - Arrow keys do not scroll the page or interfere with chat input.
- Desk-row spacing prevents username-label overlap.
- Toast notifications no longer appear.
- 主要言語
- HTML
- スター
- 3
- フォーク
- 28
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 8
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
alphaonelabs/learn のほかの issue
-
Active Navigation State Is Not Highlighted in the Navbar対応中かも @Taha254511 が 5 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
alphaonelabs/learn#91 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
add edit an activity button対応中かも @gopikrishna-20 が今日担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
alphaonelabs/learn#134 ·
メンテナーはふだん 1 日以内に返信
-
Add a "Resend verification email" option on the login page対応中かも @gopikrishna-20 が 3 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
alphaonelabs/learn#131 ·
メンテナーはふだん 1 日以内に返信
-
[Security] Use random salts for new password hashes, with backward-compatible migration対応中かも @Taha254511 が 3 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
alphaonelabs/learn#130 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Add Google Sign-In Authentication対応中かも @gopikrishna-20 が 4 日前に担当しました。 オープン
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
alphaonelabs/learn#126 ·
メンテナーはふだん 1 日以内に返信
alphaonelabs/learn の issue をすべて見る
似ている issue
-
needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
bherbruck/solvecraft#4493 ·
-
level/task
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
wazuh/wazuh-dashboard-plugins#9472 ·
メンテナーはふだん 1 日以内に返信
-
Standalone dash flashes as its own RSVP step (e.g. Russian dialogue)対応中かも @bezig01 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
daniel-pimenta-cc/ledor#53 ·
-
Iteration Counterオープンenhancement firebase
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
brysonddelozier/scribbles#24 ·
-
bug category:security effort:s priority:p3
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
LanternOps/breeze#9550 ·
メンテナーはふだん 1 日以内に返信