feat(infrared): add infrared control, learning, and virtual remote module #9

Merged
KremeCN merged 41 commits from feat/moler-infrared-control into main 2026-08-25 14:51:34 +08:00
41 Commits
Author SHA1 Message Date
KremeCN 2cc70b0ca3 fix(infrared): correct default device name from ir-1 to 红外控制器 2026-08-25 14:49:55 +08:00
KremeCN dab1bef5aa feat(infrared): clean up device configuration settings page and remove obsolete learned keys 2026-08-25 14:40:57 +08:00
KremeCN ec51ae1db7 feat(infrared): choose layout template at creation time and improve grid key management 2026-08-25 14:34:47 +08:00
KremeCN 849b7e4aea fix(infrared): allocate dedicated static slot for physically learned keys 2026-08-25 14:22:47 +08:00
KremeCN 63cac722c2 feat(infrared): add virtual remote learn mode, custom layout switching, and key management 2026-08-25 14:20:30 +08:00
KremeCN 7f9fb8c2b6 feat(infrared): refactor virtual remote hub with multi-device presets and quota management 2026-08-25 14:11:49 +08:00
KremeCN 86af7f4c91 feat(infrared): integrate learned keys management screen and sync provider profile mode 2026-08-25 13:39:01 +08:00
KremeCN 4aa9116ac4 refactor(infrared): unify infrared remote with app provider architecture and complete localization 2026-08-25 13:25:04 +08:00
KremeCN 2185e73f5e fix(infrared): add cutoff timestamp to failInterruptedLearning to prevent race with subsequent tasks 2026-08-25 13:07:38 +08:00
KremeCN a3812aae27 fix(infrared): propagate repository storage errors and recover learning keys across effective profiles 2026-08-25 12:51:47 +08:00
KremeCN b6cae9b2c9 fix(infrared): add relearn use case for ready keys and clean up interrupted learning in onCleared and init 2026-08-25 12:44:07 +08:00
KremeCN 8cd44c93e1 fix(infrared): unify atomic config state snapshot, avoid message race, and rollback cancelled learning status 2026-08-25 12:36:19 +08:00
KremeCN 3561f3dd4a fix(infrared): url-encode profileId in routes and cancel underlying learning deferred 2026-08-25 12:27:54 +08:00
KremeCN 8682f81cb8 fix(infrared): propagate learning error result and localize remote screen strings 2026-08-25 12:20:29 +08:00
KremeCN a3bcdd973c fix(infrared): support re-learning existing keys, cancel active learning jobs, and propagate CancellationException 2026-08-25 12:14:12 +08:00
KremeCN 714fe699f6 fix(infrared): clear learning state on completion and guard against duplicate key sending 2026-08-25 12:05:02 +08:00
KremeCN ee42d59879 refactor: align infrared feature with provider login architecture and remove legacy temporary login flow 2026-08-25 11:41:06 +08:00
Moler 1fdc9bd376 feat: wire infrared remote screen and settings navigation 2026-08-25 11:41:06 +08:00
Moler 9dc5226d83 feat: build custom remote visual components and Compose panels 2026-08-25 11:40:46 +08:00
Moler 3a79338fb9 feat: implement infrared remote control viewmodel 2026-08-25 11:40:46 +08:00
Moler feab58bf3d feat: define infrared remote scenes and button specifications 2026-08-25 11:40:46 +08:00
Moler 4c8403e45f docs: plan infrared remote control UI implementation 2026-08-25 11:40:46 +08:00
Moler 29de3f2eb5 docs: design infrared remote control multi-scene UI 2026-08-25 11:40:45 +08:00
Moler 78dac5519a feat: support 1-100 numeric infrared key slots and gateway login entry 2026-08-25 11:40:45 +08:00
Moler aec43df775 docs: add infrared hardware validation 2026-08-25 11:40:45 +08:00
Moler 1376702476 test: verify ABSDK infrared contracts 2026-08-25 11:40:45 +08:00
Moler 03a3167a55 feat: add temporary infrared navigation 2026-08-25 11:40:45 +08:00
Moler 980fd38421 feat: route infrared debug hardware modes 2026-08-25 11:40:23 +08:00
Moler 116f8d1b75 feat: add infrared control screen 2026-08-25 11:40:23 +08:00
Moler 6e83a78a81 feat: add infrared control state machine 2026-08-25 11:40:23 +08:00
Moler 9ccbfbc297 feat: coordinate infrared runtime state 2026-08-25 11:40:23 +08:00
Moler ff85b3eb45 feat: persist infrared key bindings 2026-08-25 11:40:23 +08:00
Moler 616d97ca03 fix: snapshot infrared fake calls 2026-08-25 11:40:23 +08:00
Moler 82afee3a1b test: add scriptable infrared fakes 2026-08-25 11:40:23 +08:00
Moler 0e82daaa23 fix: preserve infrared failure context 2026-08-25 11:40:23 +08:00
Moler ee60b75a32 feat: manage saved infrared keys 2026-08-25 11:40:23 +08:00
Moler 274807c2ff feat: orchestrate infrared key learning 2026-08-25 11:40:22 +08:00
Moler 4ff6ef6c43 fix: harden infrared key contracts 2026-08-25 11:40:22 +08:00
Moler f1f00701d4 feat: define infrared key contracts 2026-08-25 11:40:22 +08:00
Moler cd564cbfa1 docs: plan infrared control implementation 2026-08-25 11:40:22 +08:00
Moler d763d5dea7 docs: design infrared learning and sending 2026-08-25 11:40:22 +08:00