## ADDED Requirements ### Requirement: Connect to PC publish base URL The iPad app SHALL allow the user to supply a PC publish base URL by paste and by scanning the PC share QR code with the camera. After a successful scan the app SHALL fill the base URL and attempt to fetch the catalog. The app SHOULD remember the last successful base URL. #### Scenario: Fetch catalog with valid URL - **WHEN** the user enters a reachable publish base URL and requests the course list - **THEN** the app displays courses returned by `GET /api/courses` #### Scenario: Scan QR fills URL and connects - **WHEN** the user scans a QR code that encodes a reachable publish base URL - **THEN** the app fills that URL and fetches the course catalog without requiring manual typing #### Scenario: PC share not running - **WHEN** the user requests the course list but the host is unreachable or publish is stopped - **THEN** the app MUST show a clear message that the parent should enable sharing on the computer ### Requirement: Multi-select download The download browser SHALL let the user select one or more catalog courses and download their packs to local course storage. #### Scenario: Download selected courses - **WHEN** the user selects one or more courses and confirms download - **THEN** the app downloads each corresponding pack, validates it, and registers local courses on success #### Scenario: Partial failure reporting - **WHEN** one of several selected downloads fails - **THEN** successful courses still remain installed AND the user sees which course failed ### Requirement: Download progress feedback While downloading, the app SHALL show progress or busy state so the user knows work is in progress. #### Scenario: Progress visible - **WHEN** a pack download is in progress - **THEN** the UI indicates ongoing download activity for that course or batch ### Requirement: No iPad upload server as primary import The iPad app MUST NOT use an in-app LAN file upload server as the primary way to obtain courses. Course acquisition for MVP SHALL be pull-from-PC publish. #### Scenario: Primary path is pull - **WHEN** the user wants to add a new course - **THEN** the supported primary flow is connecting to the PC publish catalog and downloading packs