Browse Source

fix(sync): dual transport guarantee (WS + HTTP fallback) and comprehensive real-time transmission logging

main^2 v1.001
Ali Alavi 1 day ago
parent
commit
b31b4cd071
  1. BIN
      .gradle/8.11.1/executionHistory/executionHistory.bin
  2. BIN
      .gradle/8.11.1/executionHistory/executionHistory.lock
  3. BIN
      .gradle/8.11.1/fileHashes/fileHashes.bin
  4. BIN
      .gradle/8.11.1/fileHashes/fileHashes.lock
  5. BIN
      .gradle/8.11.1/fileHashes/resourceHashesCache.bin
  6. BIN
      .gradle/buildOutputCleanup/buildOutputCleanup.lock
  7. BIN
      app/build/intermediates/dex/debug/mergeProjectDexDebug/5/classes.dex
  8. 2
      app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
  9. BIN
      app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/MainActivity.dex
  10. BIN
      app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/SonioxLiveStreamer$createWebSocketListener$1.dex
  11. BIN
      app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/SonioxLiveStreamer.dex
  12. BIN
      app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/StreamDictationClient.dex
  13. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
  14. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at
  15. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
  16. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
  17. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
  18. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
  19. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab
  20. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
  21. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len
  22. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len
  23. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at
  24. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i
  25. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab
  26. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
  27. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab
  28. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at
  29. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab
  30. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at
  31. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab
  32. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at
  33. 2
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab
  34. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab
  35. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at
  36. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab
  37. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream
  38. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len
  39. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len
  40. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at
  41. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i
  42. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab
  43. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream
  44. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len
  45. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len
  46. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values
  47. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at
  48. 2
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s
  49. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i
  50. BIN
      app/build/kotlin/compileDebugKotlin/cacheable/last-build.bin
  51. BIN
      app/build/kotlin/compileDebugKotlin/local-state/build-history.bin
  52. BIN
      app/build/outputs/apk/debug/app-debug.apk
  53. BIN
      app/build/tmp/kotlin-classes/debug/com/soniox/remotemic/MainActivity.class
  54. BIN
      app/build/tmp/kotlin-classes/debug/com/soniox/remotemic/StreamDictationClient.class
  55. 14
      app/src/main/java/com/soniox/remotemic/MainActivity.kt
  56. 7
      app/src/main/java/com/soniox/remotemic/StreamDictationClient.kt

BIN
.gradle/8.11.1/executionHistory/executionHistory.bin

BIN
.gradle/8.11.1/executionHistory/executionHistory.lock

BIN
.gradle/8.11.1/fileHashes/fileHashes.bin

BIN
.gradle/8.11.1/fileHashes/fileHashes.lock

BIN
.gradle/8.11.1/fileHashes/resourceHashesCache.bin

BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock

BIN
app/build/intermediates/dex/debug/mergeProjectDexDebug/5/classes.dex

2
app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt

@ -1,4 +1,4 @@
#Tue Aug 25 18:05:09 UTC 2026
#Tue Aug 25 18:43:45 UTC 2026
path.3=5/classes.dex
path.2=10/classes.dex
path.1=0/classes.dex

BIN
app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/MainActivity.dex

BIN
app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/SonioxLiveStreamer$createWebSocketListener$1.dex

BIN
app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/SonioxLiveStreamer.dex

BIN
app/build/intermediates/project_dex_archive/debug/dexBuilderDebug/out/com/soniox/remotemic/StreamDictationClient.dex

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at

2
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab

@ -1,2 +1,2 @@
62
65
0

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at

2
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s

@ -1 +1 @@
фЮЭХтPЙАвUфДи!фщх*юТМ!циВoЭБШЫж к)ФТЦн9дГоь,ХХмО2АЧЭ9лм*Э3м&СЬ%л)и.Члиию!Ь,яФ²чяп/рК#д0ыФ5У÷сЕ#Вс<к3ГоЗМафа-л%ТьЕр/М(Т>ЖбХчЫ,н7ЭЪRкиМ!ТЪ*С/М
фЮЭХтPЙАвUфДи!фщх*юТМ!циВoЭБШЫж к)ФТЦн9дГоь,ХХмО2АЧЭ9лм*Э3м&СЬ%л)и.Члиию!Ь,яФ²чяп/рК#д0ыФ5У÷сЕ#Вс<к3ГоЗМафа-л%ТьЕр/М(Т>ЖбХчЫ,н7ЭЪRкиМ!ТЪ*С/МрДЕ$мTФЙМящ1Ъ9р#юШу

BIN
app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i

BIN
app/build/kotlin/compileDebugKotlin/cacheable/last-build.bin

BIN
app/build/kotlin/compileDebugKotlin/local-state/build-history.bin

BIN
app/build/outputs/apk/debug/app-debug.apk

BIN
app/build/tmp/kotlin-classes/debug/com/soniox/remotemic/MainActivity.class

BIN
app/build/tmp/kotlin-classes/debug/com/soniox/remotemic/StreamDictationClient.class

14
app/src/main/java/com/soniox/remotemic/MainActivity.kt

@ -181,8 +181,20 @@ class MainActivity : AppCompatActivity() {
vibrate(100)
if (finalText.isNotEmpty()) {
updateLiveSpeechAtCursor(finalText, "")
binding.tvInstruction.text = getString(R.string.status_ready)
val currentFullText = binding.etTranscript.text?.toString() ?: ""
val cur = binding.etTranscript.selectionStart.coerceIn(0, currentFullText.length)
AppLogger.log("Main", "🚀 ارسال خودکار متن به مک: '$finalText'")
binding.tvInstruction.text = "✨ ارسال شد به مک"
binding.tvInstruction.setTextColor(ContextCompat.getColor(this, R.color.accent_green))
// Dual transport guarantee:
// 1. WebSocket sync_state
streamDictationClient?.sendLocalSyncState(currentFullText, cur)
// 2. HTTP POST direct paste fallback
lifecycleScope.launch {
sendDirectPaste(currentFullText, cur)
}
} else {
binding.tvInstruction.text = getString(R.string.status_ready)
binding.tvInstruction.setTextColor(ContextCompat.getColor(this, R.color.text_secondary))

7
app/src/main/java/com/soniox/remotemic/StreamDictationClient.kt

@ -205,7 +205,12 @@ class StreamDictationClient(
put("selection", selection)
put("timestamp", System.currentTimeMillis() / 1000.0)
}.toString()
webSocket?.send(payload)
val sent = webSocket?.send(payload) ?: false
if (sent) {
AppLogger.log(tag, "📤 ارسال زنده وضعیت به مک (${text.length} کاراکتر)")
} else {
AppLogger.log(tag, "⚠️ سوکت متصل نیست؛ در حال اتصال مجدد جهت ارسال به مک...")
}
}
@SuppressLint("MissingPermission")

Loading…
Cancel
Save