feat: implement dynamic launcher shortcuts, launch intent routing, dynamic theme color overrides, and initial profiles

This commit is contained in:
2026-07-04 14:23:51 -06:00
parent 17b0ccf464
commit 7fe1eda75b
7 changed files with 305 additions and 12 deletions

View File

@@ -109,6 +109,22 @@ fun Application.module() {
deviceRegistry.register(device)
println("[WebSocket] Device registered: ID=$deviceId, Type=$deviceType")
// Send requested profile layout immediately if specified
val profileId = call.parameters["profileId"]
if (profileId != null) {
val profile = profileStore.getProfile(profileId)
if (profile != null) {
val payload = WebSocketPayload(
attentionTier = AttentionTier.SILENT_HAPTIC,
uiPrimitive = profile.layout
)
send(Frame.Text(SDUIJson.json.encodeToString(payload)))
println("[WebSocket] Pushed initial profile layout '$profileId' to device $deviceId")
} else {
println("[WebSocket] Requested profile '$profileId' was not found in ProfileStore")
}
}
// Send pairing success indicator screen only if we actually paired in this session
if (showedPairingScreen) {
val successMessage = Message(