app-state.json 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. {
  2. "schemaVersion": 1,
  3. "pageVersion": "sha256:5a08c085203eed7c6af86a5ee968fd9f61a42c7dec64787f196a9cfc4a404452",
  4. "claims": [
  5. {
  6. "id": "claim_daef343b267c45a987738a3daf7e404d",
  7. "statement": "AppEvent has variants Key, Redraw, Wa, AiReply, ImagesDescribed, ReplyDue, Sent, Web, ConfigReloaded and Relinked; AiReply carries a Reply or an error, Web carries a WebRequest from the web control panel, ConfigReloaded carries the reloaded Config or the load error, and Relinked carries the relink outcome.",
  8. "evidence": [
  9. {
  10. "resource": "repo://src/app.rs#L106-L141",
  11. "version": "repo-lines-v1:sha256:de9462259da6519ea1c124deddbc8bb27a8c18b17c07eed5377af48ee5589801:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4OWMyOWE3NjJmOGZhMmEzZmY0NmY5MGZiZDY3N2QyYTI3MjViMjM3NTYxNjIwODdkOTRmMWI2MDg2Yzk5YzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZmMGExNjA2YWZlMjU3OTU2NWMyMWNkOGU1ZjUyNzljMmY0ZWMwZWMyMjZmZjM5YjljNmY2MjllZTNkYjk0NTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJkNTQzZDNkZjU4ZmJmODdkZjViYjZlOGNmZDQwYzBkNjY5MjY3MWZmMTAyOWRmZDM4OWY0MWIyNDY2OTZiY2EifQ"
  12. }
  13. ]
  14. },
  15. {
  16. "id": "claim_0f09168e3dc247a7b0559a790064f17c",
  17. "statement": "Screen has Connecting, Pairing and Main; Focus has List and Input; ListMode has Chats and Contacts.",
  18. "evidence": [
  19. {
  20. "resource": "repo://src/app.rs#L151-L171",
  21. "version": "repo-lines-v1:sha256:92aaf2af1678376e51c1ad2567e9dce9ab29a60eb8e773ba16594a42750ff769:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2YTEyNzUwZTQ5YzY3NDE5NGM1Yjg4ODEzOGQ5Y2JjNGI0Y2M2OTM2NjdiYmZjMzIxYjgzM2MxMWZlMTdlY2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY3NmE1NDRjYzAyM2VkNDA1ZTNiOThiOGEzNTQwOTBmYWQxNmU5ZTE4ZDVlZTlmN2JhNmMzZTcwMDUzMDA5ZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFmY2RhYjQwOGQyMDcwM2JmNTU2ZWJmZjk2NGM3M2I4NGQzYWUzYzdiMzUwZTFiODNmNTA3OTE4MDUxYjA0ZjYifQ"
  22. }
  23. ]
  24. },
  25. {
  26. "id": "claim_0a2882d788054b5586b16e6e990f77ee",
  27. "statement": "App::new builds the AI client, loads chats, contacts and the persisted global autoreply flag, and starts on the Connecting screen with an empty filter, no pending deletion or relink, and a ReplyGate created at the current time.",
  28. "evidence": [
  29. {
  30. "resource": "repo://src/app.rs#L246-L286",
  31. "version": "repo-lines-v1:sha256:94b043b31861b7f2e517e87907e09881fb6d2f163bbb08ec7784e45a44e7d767:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNTYzZjU4ZTBlOWQyYjgxMjgwMTZhOWEyZGZhMTU2YjgzNTM0NWYzOTkzYTVhYjdkNjVhNWU4ODFmMDg0Y2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBhOGJlZTA0NjIzODBmZjdmN2Y0ZDZhYzE2MGViODRmYjk3YjgwZGRjMjM2ZGFmZWY4NTQ4OTYxYjcwZDQ4ZmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU3M2U3ZTFjNDIxZDk5NzQ5ZWVmNzNjNjJiNmE4ODAyODhjNGNhZDM4ZTYwZWQyMTNjNmM1ZDI1ZjAyMDU3OGMifQ"
  32. }
  33. ]
  34. },
  35. {
  36. "id": "claim_bf08f07b96ed49c2b688852a35a263f5",
  37. "statement": "handle_wa_event maps Qr to Pairing, Connected to Main with status Connesso, LoggedOut to Connecting, OfflineSyncCompleted to the startup catch-up, and routes Contact and Message { message, image } events.",
  38. "evidence": [
  39. {
  40. "resource": "repo://src/app.rs#L406-L429",
  41. "version": "repo-lines-v1:sha256:5d1dce3b181c3675faeb3b14606340ed867acb60a349b69ef26369d3856c49c6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZkOGNmMDJkODU2OWY1YTQ3ZjRiNmY0Zjc5MzBmNzkzMTczM2VmNGE4NDMwODNmYmZjMzAzNmNiM2JiMjc5MGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM5NDkyZWM5YTM2ZThkODU0NjE1MmI4MjJkNTdmZDIwMDk4OTE1MDMwYTIwZDliZGExZDVmYWQ0NGY4ZjFiNWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI2ZDczY2I1NTUwODdmZGQwZTc4MzhjZjM4MWZmZmRmMzljMzk2M2VmZWJhMGE0ZjQyNzg4OWE0MGUwODYwZWQifQ"
  42. }
  43. ]
  44. },
  45. {
  46. "id": "claim_537e6ac1d0184cefaaeaa2535327247a",
  47. "statement": "on_message returns early when History::save_message reports the message was not new.",
  48. "evidence": [
  49. {
  50. "resource": "repo://src/app.rs#L450-L459",
  51. "version": "repo-lines-v1:sha256:39169d7955b19430b175fe5273033b79acede8ec3c2de6b4a8998c3201160caa:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2ZjNjMTFjYTY5OWY4OTA5MTUwMjAyYzhkZTVlMjdlZjAwNTIyOGRmZmNjMzAzOTlmNDg4OTdmYzdhOTVlMTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmYzAyNDRhNGJkOTI4YWRmMDE3YjljOWQ0ODIxYjU4NjgwZGRhMmI2YTBhZDEyYWU2MWVhNDBlOWZkMjM3OGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhNDYyZmZiOTg5MjlkZTUyYmFlMTM0ZWVmMWRkZjYzNTRiODVlNGQ4MzE2MzlkMzZhMDIyMzA5NDcwNDYyZDYifQ"
  52. }
  53. ]
  54. },
  55. {
  56. "id": "claim_a5e4a2575e2a4890b96ffeed57e9f621",
  57. "statement": "F10 quits and F8 requests or confirms a relink on any screen; any other key cancels a pending relink and an Esc doing so is consumed; non-main screens ignore other keys; on the main screen F2 switches the list mode, F3 toggles the focused chat's autoreply and F4 the global autoreply, Tab switches focus, and Ctrl command chords are swallowed.",
  58. "evidence": [
  59. {
  60. "resource": "repo://src/app.rs#L23-L32",
  61. "version": "repo-lines-v1:sha256:683c16567f4074fbe88d85ef8581c16739d5ca0531826b0fb49c5df95ac18f20:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkMTkzOTVkMDA1MWQ2YTA4MzBkMmQ5OWZhNTk4ZDU4N2EyOWZkNTA0OTkwNGQ1OWNiNTI2YmQ3Yzc4ODBiMGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFmNjIzNzA4OWI5MWQxMDdiNjY0NTc5NzNhOGJhMmE3MWQ4NzA0NGVhOTFlOTE4Y2RlMjA1Zjg2YWNkNDZjOTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlZmRkMDA4YTE2MzY2YTNmMTdiNjY1M2IyNzcyMThkYzQ2NTRiMGFjYTE5MGI1YmFiZDcwNmIyM2IxMDQwNzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI2ZmI3YjljNTEzODFiZmNlNmIwYzU4ZTY0ZmZhMjhjODMyNjU5NTkyOWQ1MDNlYTUwYjBlMDRiNTk0N2QwNTMifQ"
  62. },
  63. {
  64. "resource": "repo://src/app.rs#L884-L929",
  65. "version": "repo-lines-v1:sha256:6e737f1163f7fc1e0f873a9756a9a2c32d247edaf022b24c9d62e4f5d3ecdc71:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhZGRmNjgzMjdhYTA4ZWZjNDYxNGFmZDIwOTkzZTFkNzZiZjUxNmQ3NzRjM2QyMmIzOTUyOTEwNmNkOTBhZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2ZWU5ZDllODg2ODFmN2JmM2M4ZmZiZjEzZDgyODk2ODM4MGY2Y2E0M2Y1ZGE4ODI5MmU1MjY3ZDRjMDhlOWYifQ"
  66. }
  67. ]
  68. },
  69. {
  70. "id": "claim_cb8373d154a942479406efbb317fe9fd",
  71. "statement": "In input focus characters are appended, Backspace deletes, Esc returns to the list and Enter submits the trimmed text to the open chat.",
  72. "evidence": [
  73. {
  74. "resource": "repo://src/app.rs#L1064-L1088",
  75. "version": "repo-lines-v1:sha256:93f1a991412191cf1e47a90542afc809bc43aaab50594660e57b57012282758d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ZWM1NzZmZGY5ZTZhYjIyYmM3ZTgyYWM2NzNiY2EyM2MxNTZkZjE0MTRmZGFjZjRlNzcwOTEzYmI3Yzg1OTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUxNzg4NWVhNGE5MGJjODU2N2NiZDFmYjM0M2FlNTQ0Y2EwMTU5ZDZkNTA0ZGU3ZjcyNWFiMWIyYjg0YzYwZGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlYTM2NTI1MWJlYzc3N2JhYTBmYTZjMGEzZTZmOGRiYzliNzhiNmQ5YTNmNmI4ODVmODBmY2RkMmQzYWFhMmEifQ"
  76. }
  77. ]
  78. },
  79. {
  80. "id": "claim_4b0ec5e5dcd04f838b031e75b64428de",
  81. "statement": "Enabling a chat's autoreply requires an AI client first and then a chat accepted by supports_autoreply (private chats and groups); disabling is always allowed and the flag is persisted with History::set_autoreply.",
  82. "evidence": [
  83. {
  84. "resource": "repo://src/app.rs#L1549-L1557",
  85. "version": "repo-lines-v1:sha256:ba5bea3063970ee3b66b2d54fc0529a98bf3972bf7e9a5cab37c6d0bf4659ff7:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFmNzM0NDVmZTU0ZTJjMzIyMDBiMGRiNDhlM2MyOGZlZDgyZDk3NWY0Mzg4MjM0NjA5NjhlZmM4ZmU1ZjJmOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWM5Yjc1NjM5OGI3MTI0NGNmYThkOTk4ZGRlOTQwZWRmODk1MmNkMDEwMTYyMzM1YmEwMzRjYjkxZGZmMjRiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDQwM2Q5ZmY0OGI3ZmI2ZDcyM2RlNWM5YjMxODkzMTNlMjQ2NzBhMWE5NjJhYWUxZTYxODRhMjllZmM3MWM1ZCJ9"
  86. },
  87. {
  88. "resource": "repo://src/app.rs#L1124-L1137",
  89. "version": "repo-lines-v1:sha256:cbcb0d80e707fedd21b3de7081436677468c63c025abb23dab5e5a6ab0ad90cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0ZTRlYmRmYjA5YmI0NTM3YzBhZDM0MWUxNGY5NTkzYjEwYWE5ZWJiOTM0ZTNiOGJhMGViY2ZiYjlhYjBkZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1Zjg5YTg3NjBkYWQ3NjUxYmZiZGQ4ZGFkYTM4OGRmZDUwZmU2NDczOGUwMzM4YjIzZTM5NzM4Y2Y1NTRmOWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzZWNmNGIzNzRlN2M0ODFlZjUzODQ1Y2Y1YjlmNDI5MDk3NmQxYTlmNDlkOWY5NWJjNjIxNWEyY2VhMDYyOTAifQ"
  90. }
  91. ]
  92. },
  93. {
  94. "id": "claim_4989af934f564cf789a6028f36e19728",
  95. "statement": "Opening the selected entry of the filtered list (resolved by selected_jid) loads its display name, autoreply flag and the last 200 messages and moves focus to the input.",
  96. "evidence": [
  97. {
  98. "resource": "repo://src/app.rs#L1205-L1232",
  99. "version": "repo-lines-v1:sha256:e52bd5fba06c8fa9c17319299e938b8922b2b431f8015138d79e1dca4d4c26d6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwZDJhY2QwNjZiMWU0MDM4ZGMyYzllOTI0YTAwNzlkZDNmOGNlNjllZjY4OTZlMTYzYzYyZThhMDlmYTQzYjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjYzVlMzg4ZThmOTY0ZGY1OTFjZDM1Y2FlZjk5ODM0MmRjNTllNGU5OTMwMmMyYmI0MjMyZmMxMzdhM2Q1ZjkifQ"
  100. },
  101. {
  102. "resource": "repo://src/app.rs#L20-L21",
  103. "version": "repo-lines-v1:sha256:052992c9f8e9b996b43554cee0a2351140f142d6d9781a2b3217356c40bf6cb1:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODdkOGI3ZDU2NTM2Yjg3MDE0OGY1Y2U5YzQ2YWQxN2FmMzI4ZDQ5NzRjMmNlMTVhODNhOWQ0ODllZTBjNDY5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjQwNDg4Y2VlODM4MmUwZTUzMWI5ZjEzZmQwYWE5NDFjNzJkMDM5MGU3ZTg5YzQ0MzA4MTFjYmM3NmFhNjYxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWY5NTFjZjJlOTBkY2Y1MDJiMGFhYWNmODA0ODQxY2UyZjk3NjUyMmZlNWI2ZDI1OGY3YjliMDY2ZTY5MDNiNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDcyMjFlYzQ5YThiY2FiYTFkNzUwNTE0MWZhYzY0MDhkOGZmMmUwMjUyMDgwZTZlMGYwNzQ1MDMzMjY3ZjQwZSJ9"
  104. }
  105. ]
  106. },
  107. {
  108. "id": "claim_7000c80d87994614ac6ac2cdaa398609",
  109. "statement": "spawn_send sends the text via WaHandle::send_text and emits AppEvent::Sent.",
  110. "evidence": [
  111. {
  112. "resource": "repo://src/app.rs#L1518-L1527",
  113. "version": "repo-lines-v1:sha256:946a66552037dc4ae7eff9cf6c602520fd019e2700d8d6cc4dc93c7db36bb837:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlOWMwM2FlM2RiZTlkZDA3YjYxNTZkZWFkNzBhNmRhYjc4MzI3M2I2Y2E0Y2JlZGI0M2E0MTI4YmJlNTdiZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwZDEyZTUxMmY3N2FlNTEwYWQwZTk5M2I3NGNmNjdmY2ExYmRiOTllYmE3OWY3OTdjZDkxMWYyN2Y2MWQ1ODQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyM2IxZmMxYjIzYjFmMWZhZWVhY2E4MTM2Yzc1YmFkOGEwNGEzMGQ5Nzk0MTc5ZDNjZjUxYjJkNGVhMDI1NTIifQ"
  114. }
  115. ]
  116. },
  117. {
  118. "id": "claim_3568f04cad88489a974266f0e241c354",
  119. "statement": "An AI text reply is sent only if the autoreply is still enabled for the chat (globally or per chat) and the owner did not answer by hand after the answered context; otherwise it is discarded with a status message.",
  120. "evidence": [
  121. {
  122. "resource": "repo://src/app.rs#L826-L852",
  123. "version": "repo-lines-v1:sha256:a05110c5a383be3518256a8f574d7c2b6dfa7ab90b8f3a2d19fbed62b9ec6e14:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlODZiMzQ5MjhkN2ZlZWQzNTRiNmY1OGM3MjJlNTk5YzI3ODhhNWE0Yzc2MjUxN2YzYzExYzIzMDM0OGVjOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc3ODkyYWI4MWM1MjU3OGQ5NjU4YWE4MmNmNDU0NjAyY2VmYTA4MDJiNmMzYzRkYWE4OWM4MjUwZDBlZDBjMjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVlYjQ1ODA1ZTI5MzcwMzMyZTY2ZDA3NzAwZjlhMDg3MDgyNWE3ZDM2NWFmYmJmNzYxOWNiYjNlMjNiNTViMWQifQ"
  124. }
  125. ]
  126. },
  127. {
  128. "id": "claim_17fa61af9be74c3dbc0b44f6b5d2873b",
  129. "statement": "build_ai returns no client when the system prompt is missing.",
  130. "evidence": [
  131. {
  132. "resource": "repo://src/app.rs#L1534-L1542",
  133. "version": "repo-lines-v1:sha256:02a6b90c8547969f5229ba908e64ec2f9fd8d0547f3a7b34404429320b337fe4:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzcyNTRhNjcwYWJhNGU4ZWFiNDlmM2U1OWYzNjc4NTk0OWM2ZDk1OTFlN2ZkMWY1NjA4NGU3NzBlOWM3NDJlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGQ3OWM4ZDU3OGFjNjM3NDFmOTgwMTlmMzlmOWRmMDA4M2RkN2YzM2U0ZDNlOWU3ODU1YzZmNmQ2MWQzNjg0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTA2ZDU0NTM1OGJmMGQyNTFiNDhiNWZhZTE2YzIyZjkzYzgzNDM5ZTQwNzA0YzRkYzg1MzgyN2ZmNWFiNmYyNiJ9"
  134. }
  135. ]
  136. },
  137. {
  138. "id": "claim_ba615926cccd4399b1bc801f51d947c3",
  139. "statement": "is_command treats Ctrl as a command only when Alt is not held, because Windows reports AltGr as Ctrl+Alt.",
  140. "evidence": [
  141. {
  142. "resource": "repo://src/app.rs#L1587-L1594",
  143. "version": "repo-lines-v1:sha256:a7e4215d1055bcf132d529dd3c057ef20525fbb22d5a1301c6980d41107b5124:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzllOWIxZTI5MGI4MzMyZDI5YTMwZjc1N2JjN2E3N2ZlYjZmMjAxYjNjMmM5M2ZiNTQ4MDU1YTFhODVmN2MyZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDg4NTkyMTBlYmNiMTJjZjY4YzYxNjIyMmZjNTYwYzFmNjhlMmZhMzFmNjMwNDkzZGY4MDk1ODg4N2Q1N2FmOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2JjOThkNmIwZGM0OTJjNTAxNmRmMTA4MDVhM2E1NGViOWMxODRhNWE2MTM3ZTdmNGJlY2ZhMGMyMjA1NTBkMCJ9"
  144. }
  145. ]
  146. },
  147. {
  148. "id": "claim_bc67b9414f7d4100abf86082fa0b5681",
  149. "statement": "start_reply records the last context message as answered, marks own mentions, reads the chat name and stored image descriptions, builds the turns and spawns the AI request.",
  150. "evidence": [
  151. {
  152. "resource": "repo://src/app.rs#L771-L790",
  153. "version": "repo-lines-v1:sha256:0a937f62450210fb1b4a45c2eb392c8533cab8fc5e7f2ca88caec3ba64669dbb:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZkMjA2ZWQ4NGMzNGNhMWE0ZmNmZmQ1NmFlOTBiNDgyZDIyNGM2OWQ0ZmRlMDY4MmI2MTllODNlMDRlNWJhYjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEyZTA5MzVlNDEzNWQ5MWEyZGFlMDUxOGE3ZTY5NjQ0MmIxYmM5ZGYxOThiNDA1ZmVmMGQzMjUwY2VmOWU1ZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQwMjI2ZGQ4YmZkY2JkMDhlNjUxMjUzOGY4MmU5YWNiOTEyNzg2NTgwNDEwMmQ2YjRlMzQ4NmRmMjU4YjMxNmYifQ"
  154. }
  155. ]
  156. },
  157. {
  158. "id": "claim_0a16da9dd5e942eb89a106629e24f51d",
  159. "statement": "maybe_autoreply schedules a reply when ReplyGate::should_schedule allows it: the chat is marked pending and a timer task emits ReplyDue after reply_delay_seconds.",
  160. "evidence": [
  161. {
  162. "resource": "repo://src/app.rs#L1345-L1350",
  163. "version": "repo-lines-v1:sha256:9d9b7ef08292560e1f25590a1f38732ed3fd2b45ffe522b5928335427699b373:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWM4Mjk4ODI1Mzg5YTU1NjFkNzUyZjZjZThhMjgyNzlkZTI4MDMyOTVlNTRlY2Y3NGQyODc2NWUwM2E3MDBkNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjE5NGJjNjc2ZDg4NmZhM2MyZDM3ZTNlMGFhM2M4OTEwODc1MWZhYzYzZmQwNzViNDY3MzM3NDZlZGIyM2Q2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDVkMmViYWNlOGUxMTQ2MDNlNjJkNzViNWY2ZGM4MWMzMmIzODMyYjhiMGIwZTNkNWFkNjQ5MzIwNDhhNmQzOCJ9"
  164. },
  165. {
  166. "resource": "repo://src/app.rs#L468-L493",
  167. "version": "repo-lines-v1:sha256:0f06f0bd1697dfc6eea76bf1331023d0de98cf0face31b358f6defedc38a31d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5NWFjMWY4MTY1YjkzNmU3MzY3MTRlNTgzM2FmNTc3YWZjMjdkMTUzZGY4NWEwNDRmMzkxNDJiOWI3OTZhODciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiMmY5MGU2YmE0M2NkMDdhNGMzZWRmMWRiZTJiZWI0MmY4NDBjYzAzYjhjNDI3NWQ1ZGEzNDUxYzhkNDlhNDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBmZDk1MWYzMzMxMmIwZGIxOTkwNzNjZDIzNDA4MWM3MzMyNDIxZjYwZjRjNmQ4MDA3YmU2YjM1YzMwODYxNGUifQ"
  168. }
  169. ]
  170. },
  171. {
  172. "id": "claim_817155a979284282b5a78c3baad994c8",
  173. "statement": "On ReplyDue the kept images of the chat are taken and, if the chat is still pending, prepare_reply either ends the pending state when no reply is wanted, spawns the description of images still lacking one (the reply follows ImagesDescribed), or starts the reply at once.",
  174. "evidence": [
  175. {
  176. "resource": "repo://src/app.rs#L539-L568",
  177. "version": "repo-lines-v1:sha256:7dc3d726de8b72086eda0835321c1115c4fd2cd81cc43f8ed74a3ad6704b3b61:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxMGU4Y2Q4NGRkNGVlMzUzOTU2ODAxODRjZTNlYTEwZDlhMTI3Mjg1Yzk2MDVkY2RmNDJiZjkwOWJkMDZlNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI5NDI0YzQ0ZDRkYWFkZTBkMTA4ZmM3Nzk5MDVlMGI2Mjk4NDJiMjk3ZjRkMWZhYTc5OTIxNTg5NDJlZGY1MzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU3ODQ1MTBjNTZmNWE5YTNiMmY0ZTdkNmZjMDFjNGM4NTEyOWJjYzUzM2U1YTZjZTA2MTYyY2FiMmIwNGY4YzIifQ"
  178. }
  179. ]
  180. },
  181. {
  182. "id": "claim_c8b0ab491aad4ebf91a3b7e090cdbe2b",
  183. "statement": "The startup catch-up runs once per process on OfflineSyncCompleted, marks pending and prepares a reply without delay for each enabled chat (every chat when the global autoreply is on) whose last message passes ReplyGate::catch_up_due within catch_up_seconds, and sets the status 'Risposte di recupero: N' when N > 0.",
  184. "evidence": [
  185. {
  186. "resource": "repo://src/app.rs#L688-L743",
  187. "version": "repo-lines-v1:sha256:42baaf60c3fa91366d408e42913e5157b90816c6d76274c43152965dd45df15f:eyJzZWxlY3RlZExpbmVDb3VudCI6NTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiYWY4NjRiNzJmMjM1YjJhNzAxNzllOWRiZTlkYTg1ZmY0NWM1OTg4YjY1MTUzNmQyYjNmMDM0MzRkMTA3YjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJkOWY0YzAxNDlmZTYwZWNjMDY0NDU2Y2VhNTgwNWIyMmI4YjgzZTljYzY0YzVmZTc3YzhjZDNjMzQ5ODg1OWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4OTU5NGE5NzIzN2Y2NjVkMmU0Y2RhMTIyZmY1NTIyNzJjMjVmZTFhMTI0NmZjMGNkNjllMDQ4MjE2ZTNlYWMifQ"
  188. }
  189. ]
  190. },
  191. {
  192. "id": "claim_785e7b1e3d8c4d7ebe9252097c4215de",
  193. "statement": "The autoreply applies to a chat when the global autoreply is on or the chat's per-chat flag is on.",
  194. "evidence": [
  195. {
  196. "resource": "repo://src/app.rs#L638-L644",
  197. "version": "repo-lines-v1:sha256:9190cc2d950eb45e132eae01c1ae01b5fb4af82470bb42fae8b4e0227a315710:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmMzZGZhMjZjNzdiNTNkZDcyZWZmZGI1MmEyNWFlNGY5YzMwNTdiZTk2NWI0MzRlMTMyOWIwMTM2MGZmNGViNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTYyZWU1N2U0MWE4YzIwYWUwMTY0ZGYyNjE0MzlkY2M0OTlkMzUyMDgzNDE1MTUxNmQwNDdlOGRlYWU4YTQ2NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTEyYzE5ODI4NjExZDJhZjdmZWFmNjQyN2ZmNzE0MjFiN2JhMTU4MzM5OWY0YWU5ODBiMzJkNThlNDUzYTJiYSJ9"
  198. }
  199. ]
  200. },
  201. {
  202. "id": "claim_3aacdc2cf4554221967cf93bba7a8d09",
  203. "statement": "Typing in the list focus edits a case-insensitive name filter that restricts the visible chats and contacts; selection, opening and deletion operate on the filtered list.",
  204. "evidence": [
  205. {
  206. "resource": "repo://src/app.rs#L1289-L1291",
  207. "version": "repo-lines-v1:sha256:fa265165a7dbaf620c22011a0c3c22d3351ef4c563f2f54f8fcb163c57bd1734:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTBhZGVkYjQzODU5N2ZkNWM0ZTVlZTAxMmE5Y2RiYzY1Yjk4Y2VkYTcxMDc2YWU5YjE4MmFjMDNmMmQ5YWRlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWI5ODAxZjkzZGZiYTU3OWNmZTAzOWRiMGFlYTMwNzc1YWRhYTU2ZDM2NGUxZjE3NWJmNjYxYzhhZjg4MDRkYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmFiZDA1MjI3NzQyOTJhOTE3MDdjZDg0ZjRmMWExYTExNmQ3MWQzNDA3Yjg1Y2NkNDY4OWU1ZDM1MDBiYjAyNiJ9"
  208. },
  209. {
  210. "resource": "repo://src/app.rs#L937-L973",
  211. "version": "repo-lines-v1:sha256:ebbdd1522a95030cb283c058e7c767edf7b3297cdfe336683fa94151dd1114b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNTZkYzNmM2MyODVjOTI5NmU1NWNlY2FiOGQzMzczNzg1YTgyOTVkYTZkZjU4Nzk1ZDUyNTZlNDc5MjRiMzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3NmVkYmFmNjIyMDAzYjdkMGYzOWE0YjE1ZGNkZjJmYTQ0NGNhY2Q5ZWRlMWRmNjc2OGI0ZWZiMzQ3OTVjNGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkZWE3NDZmZTI4YTEwOGI2ZDUyNmVkOWJlNzE1NjU3MmI2YjIwYTdmODgxYTI0NGU0OTViN2YzMzg4MWFiMDUifQ"
  212. },
  213. {
  214. "resource": "repo://src/app.rs#L1048-L1058",
  215. "version": "repo-lines-v1:sha256:3f82b1885fd37c0a7f8cddf8a1e57280241400b28724250c318d147c0b73a56a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4NDJlYTc1OTQ1NzNkNTFkY2MyY2YzMTUyNDRkODE2Nzc4NWQwYjA1ODUzZDc3NzAzMWQ4ODU5NmVmNzRlZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY5OTI3ZWJiYWIzOWI4Zjc4ZGM3NzcyYTY3Y2YxNzhjZmY4Y2I5OTBiYWJlZjVjMTc1ZDQwNDRlZTllOWZmMWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQzMzk2MDA5NzYxYzQ4YWY3MDRkZDRmZDQzNWM1NTNhOTg2ZGQ5ZWIzMmZiNTYyZmY0MGFkODI0NGIwMWU4ZDQifQ"
  216. }
  217. ]
  218. },
  219. {
  220. "id": "claim_3b803c70a66943d38cb5b1741e5a1e08",
  221. "statement": "Deleting a chat requires two Delete presses on the same chat in chat mode; confirmation removes the chat from the local history only, drops its pending reply, kept images and answered snapshot, and closes it if open; any other key cancels the pending deletion.",
  222. "evidence": [
  223. {
  224. "resource": "repo://src/app.rs#L979-L1031",
  225. "version": "repo-lines-v1:sha256:170c2b5d404120c0eeed964795203ed9134af4677755a22c29cc61b36babe747:eyJzZWxlY3RlZExpbmVDb3VudCI6NTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU1NWJlYTQ4MGM0OWY0N2ZiZDg2MGY3ZThiMDIwMzNmYmZlNGU4ZDJjYmZmMWU4Y2Q3Mjk3NjY2YTc3NDI2ZjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI0MzQxZWJmNGViOTE5ZGQwMmUwYWE3YTVmNjM0MjdhNDI1OGQ4YzZkOTAwNDc4MWY3Zjc5YmI2ZTViNWUwZjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyNTEwNTY0NjA2ZWRmNDUyODU1YTA4OTFlYmRlN2ZhOGZjYjIyMTBlODQyZjU4NDNjNzlhMmRmZDcyZjU5OTAifQ"
  226. }
  227. ]
  228. },
  229. {
  230. "id": "claim_9de77d642e45495ea644f73ab585004a",
  231. "statement": "toggle_global_autoreply refuses to enable without an AI client, persists the global flag in the history and updates the status; disabling is always allowed.",
  232. "evidence": [
  233. {
  234. "resource": "repo://src/app.rs#L1186-L1203",
  235. "version": "repo-lines-v1:sha256:05cde78eab7927a8b5c33ce971f85c0e210ce60936eada88f8c9481585c1519e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhMjY2MjVlMDNiMmE0MDg1NDg0YjQ2NjUzOTllOWRmOWFhZDQzYmVkNGQxNWFkODEwODMzMGIyMDhjNmM5ZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2ZWQ1MmZlYjhjZTliMjNiYmNiYTkwMGFkYjk0MzE3MjA4ODNhZTk0ODY4NmQyNjhlNmRkMjFlNjljYTU3YjkifQ"
  236. }
  237. ]
  238. },
  239. {
  240. "id": "claim_5447e09be26b40afa6cf039ca7dee031",
  241. "statement": "handle_web_request applies State, ToggleGlobal, ToggleChat, Relink or Quit and always replies with a WebState snapshot; a ToggleChat for a JID not in the panel's chat list only sets the status 'Chat non trovata'.",
  242. "evidence": [
  243. {
  244. "resource": "repo://src/app.rs#L1139-L1169",
  245. "version": "repo-lines-v1:sha256:64fdd9a3310b49def09cbd68a0103e07c41050b652d90eece3d0e2323f063a71:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3YTEzOTMxODdkZWNmZmM0NzMzYzYwY2FiYjA2MTkwYjdkYjAxMjJjYWEyYWM3YjRjNGUwNzBiNzIxNTk1NWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2MGUyOWExOGZkNDE5NDVjMjM3NTgxMzM4ZGI3NWFjOTIzYzYxYjVmYmFiOTNlOTM3ODdlNWJmMGMyMjk4OTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVhOGY4ZTE1N2Y4ODViMmUzM2NmZjkyMzAzNTIyY2VlYzYzZTlhZDcwZmI5NDgyMjg2MGI4NmJiZmJlNjc2ZmEifQ"
  246. }
  247. ]
  248. },
  249. {
  250. "id": "claim_42f6281320234303b6f272644df4e74f",
  251. "statement": "web_chats exposes the TUI chat list in the same order, restricted to chats that support autoreply.",
  252. "evidence": [
  253. {
  254. "resource": "repo://src/app.rs#L1571-L1585",
  255. "version": "repo-lines-v1:sha256:fef040ce667500067e70dc91e838a73c35752821bb041d4463b4361b4445b2c0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMTFhMDk4Y2E0M2I2Zjg1OTYwYTUxMjFiOGVmY2Y5MDVlZDZmNjdmZjE5MjY0NjcxZDhkYTFiYzhjZTEwNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1ZjZmNDY2ZTU5Y2ZjMzA3MDNjNDVmNzJhZjY1ZGU1NGFjMzYzZDM1NGNjMWEzMzMwMzUwYWNkNDUyNDM0YzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg5NGUwY2FkODFjNTBiOWY4MWE5ODI2ZjA1YzUyZjY0MGE0ZGM3NzdiYWQyNGM2MGEwMjQ5NzhlZWJmMWRjMGMifQ"
  256. }
  257. ]
  258. },
  259. {
  260. "id": "claim_779f06313b39432cbb9c3cb304427524",
  261. "statement": "When ImagesDescribed arrives, each description whose message still exists is stored in the history, failures set one status with their count and the first error, and the reply is started only when the target asks for it and the chat is still pending.",
  262. "evidence": [
  263. {
  264. "resource": "repo://src/app.rs#L1462-L1465",
  265. "version": "repo-lines-v1:sha256:22bd4378ebfd0c259aac4089a03d61912cbb17abca836659a5d9c8fc9cde7b15:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjA0MjdkNzcxY2Q5ZTlmY2YxZTMyODc5YWNlMDkzZWY5ODk3NjRiZjE4ZjE3OWY2YzFkZGFjM2M3Nzc1MDMyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTQzMjhiMGQzNWY1YmVlOTEzODE3NWRlZTE2ZDRmNmZhM2FmMzc1NDM0ZmIwOTMwYWU4Nzk5MDg2OTk2MTgxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTViMzliZDc5NmMyYjVjYThiYjhjMWEzNjUzODk5NzY5MGE0OTE5ZDY5NzVlNGMxMGZiMWE1ZGE3MGU1Mjc3OSJ9"
  266. },
  267. {
  268. "resource": "repo://src/app.rs#L591-L614",
  269. "version": "repo-lines-v1:sha256:5736af4a9574d77087b2de7f56f7b77e2d96d8861d19b9c42159d91fa560f0f1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmNTc4ODJlNGRmYjJmODViYWQyOGRhYWU0Njc1ZjIwODYxYzc2N2E1ZjIxNzg3OTIyYzYyZDgxOGQ5YjJiYjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjZWI1ZWFiOTZmZDM0MzEzNTI3ZjczMDk2ZjYwMWYzZDZiNWUxYmY1MzE3YTRmMzg0YWM0MTY4OWE0YWI1NTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhN2YyNDA4YTExOTJiY2VmZTI0ODJhNTg2MGM1MTVhMmQ4NGIxMzQzZTE1ZDdmMGVmNGRhMTA0YzY1ZTJiM2EifQ"
  270. }
  271. ]
  272. },
  273. {
  274. "id": "claim_831a5e88df6448b9a0545ab015ba1580",
  275. "statement": "finish_reply clears the pending state and, if a newer message that passes should_schedule arrived after the answered one, schedules a new reply; otherwise it drops the kept images of the chat.",
  276. "evidence": [
  277. {
  278. "resource": "repo://src/app.rs#L1453-L1455",
  279. "version": "repo-lines-v1:sha256:f837e4630ef0ee6fe89e07bf810f5851838ae48e227e0659b648d4ea480392fa:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk5ZjgxMThmMmE5ODIzYzNmZDQwNDcyYjlhMmUwNDE1ZTRhZGQzMWQ5NTkwNjE0NzY3MzlhYjk4YWIyNTUxMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGQ4NDkzOWY4ODU5NjI0YmY1NGNiOTdjYWJjMDE2ZjRhYmY3OTU0YWUwNGU0MTVmODUzMjQ3ZTRmYWY2Zjc3ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDlhNTk5ZGY5ZDUwOWVhMzBiNDMzZjkzYjY4ZjE4ZGQ1ODY2ZDVmMGJjMGMzMGEyMTU1OWFkN2U4MWM1ZmMwMCJ9"
  280. },
  281. {
  282. "resource": "repo://src/app.rs#L622-L636",
  283. "version": "repo-lines-v1:sha256:084f8b11c8537716d5b5aa7dd03d18d8c925c2c8808ed3bd55605fac82c22a47:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmN2EzMzI2Mzk4MGZiOTQ4OGI5NDcyZTI4ZGU0NjE4ZWVjMzc3MTE2ZmFmZDViODZlNmUzYTZhZGVjYjM2YTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBiZTFkYWFmY2ViYWI1NjdjMWQwYjE3NmVjZmY3N2I5NGNmOTllYmRmYzI0MGZiMjFhYTRjNDIxYzBkYTRiNzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNmMGY4ZWU3NGMyYmNhMjZlNTlmY2NmYjUzZmQyYWI2OGJjNzIwZTY2MGZiZjM3M2IwZjFhNTY4ZmIyNjBjOTUifQ"
  284. }
  285. ]
  286. },
  287. {
  288. "id": "claim_388616d41b3945b386a74e91229b089d",
  289. "statement": "spawn_ai_request awaits the request task in a second task so that AiReply is always emitted, even when the request task fails unexpectedly, and the chat never stays pending.",
  290. "evidence": [
  291. {
  292. "resource": "repo://src/app.rs#L1359-L1370",
  293. "version": "repo-lines-v1:sha256:5c8be8846fd13dfd0c92193083af62f733a451585be051143592b7b033237591:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2OWRlZjlmNmNmMDJlMjJjNGFhMmU4NTllMWY1MWZjYjdhOWUyYzc1NzRmZmFhY2IxNDNmOWIzZmUxMWY1ZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ZmM5YzZmMDQxZWE4YTkyNjlhMGIzYmYzMTJjNjYwYjk4OTEyNWI5MDhmN2I1NjE2Y2IwZmZmMjM0NTI2YjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5NTA2Nzc1NGYwNDQ1NDFmZmVlZDA3N2Y3OGMyZjg1ZTY3NjNiM2YzOTZkYjBlYTM5OTJmZDgxMmZjYWRmNDAifQ"
  294. }
  295. ]
  296. },
  297. {
  298. "id": "claim_6bb34eb965544529b117ebd74cf5568c",
  299. "statement": "When the model calls the no_reply tool, nothing is sent and the status shows 'AI: nessuna risposta necessaria'.",
  300. "evidence": [
  301. {
  302. "resource": "repo://src/app.rs#L812-L818",
  303. "version": "repo-lines-v1:sha256:f27e2fa9423ba6f3c9fb6381dd2ec60346c3c15ed204b861c320fac53ba2a473:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWY1MGM3ZGZhNzg3MTk0NDViMjRiNDI2NjAyNjQxZDk0MmI1NjFmN2U1MmQ3Y2M2MGNkN2M5YzNiYjI2NWQzNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzk0ZmJmY2NiNjQ2MWJhYjM5ZWE3YTVmZTJiZDJjMzU3YTQyY2I1NTUxYjE3NzJjNTc2YThjOTVjODkyMTY2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGVkOTlkNjVkMzhkZjFiODYxZTExYTc1MzdlZDk4YWI1NjA5NzEyYTVhZjgzNjdlNWY1Y2FkNjM4MGYyNWZiMSJ9"
  304. }
  305. ]
  306. },
  307. {
  308. "id": "claim_dc12a441f287421887863d2001c4d63e",
  309. "statement": "In list focus PageUp/PageDown move the selection by LIST_PAGE_ROWS (10) rows and Home/End jump to the first/last row, clamped to the filtered list.",
  310. "evidence": [
  311. {
  312. "resource": "repo://src/app.rs#L33-L34",
  313. "version": "repo-lines-v1:sha256:7825efb1211acd5d025f243b3bb470aeb24c370f07856a47d71779b8de576ab3:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTVlZWU2ODI2YzIzMDYxMTIxNjY4N2UzNjYyM2E1YjA0NThhMGRjNGFjMGIxOTk3ZDZjYmVlNDNhZGJkMDgyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGEwYTBlYmUxMGIzNDk4NjVhMzlmY2Y3ZjJlMzY5MDM2MTA2NjdiNWQwYmU5MGU2NWZhYzUwNGJiNmZkNTM5MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmZiMmY1ZDFiZmZhMTlmNWYxODFhNjBkYTg2NWU5YmY0ODk4MDBkYjUzNDgwMjZjNjE4MGJmNjBkZDk4MjhmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjM1MGFjYmZhYzdlNDEzZmFkNWYxMzk0NTQwYWE3MWM3YWY3ZWZmMDA4MDliYmMxYTlhNzQxZGRhNDFiOGYwZCJ9"
  314. },
  315. {
  316. "resource": "repo://src/app.rs#L937-L964",
  317. "version": "repo-lines-v1:sha256:acf06960921a82cc9b2dfbc4cd8be73f5ce9d8945326f358e29f727a80dd79f0:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNTZkYzNmM2MyODVjOTI5NmU1NWNlY2FiOGQzMzczNzg1YTgyOTVkYTZkZjU4Nzk1ZDUyNTZlNDc5MjRiMzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3NmVkYmFmNjIyMDAzYjdkMGYzOWE0YjE1ZGNkZjJmYTQ0NGNhY2Q5ZWRlMWRmNjc2OGI0ZWZiMzQ3OTVjNGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFlYjhjMzVjMzllMzMxMTJhMGUzZTVlMDg1NjlmOWVkYWJkNDM5ZmNkM2FkZmVkNjQ5MzAwNjcyZWRiYjYwNjEifQ"
  318. }
  319. ]
  320. },
  321. {
  322. "id": "claim_44fc6d9b1b484218b8a5d1b81c0a89f4",
  323. "statement": "F3 toggles the autoreply of the selected row of the filtered list when the list has focus and of the open chat when the input has focus.",
  324. "evidence": [
  325. {
  326. "resource": "repo://src/app.rs#L1101-L1116",
  327. "version": "repo-lines-v1:sha256:f3a02114e65f3b57e1e9609cdb5227848e7d4a8d0d2d3abc6b38c40f5286461f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjMWZhZjI0NjQzNTZlZjY0NzAyNjI4YzM0MGYyOGNhZDljMjY3OGYxMTViNTAxNDZkMGMyNTBmNzhmZDk2NWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkzNzNhMTgxNzI2YzQ3ZjdjNzlmOTI3ZDI2NzhhYzQ3NjYzY2VhMzI1OGYxOGEwNTM0ZTg2NDVlYmFlOTlkMGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc1YjdhNGU5MWJmNTc3ZDQwNjIyM2IzMjg2ZTFhYmI0NGRkNzUwYmViNmU1MzIwYTMyMGZlZDJkOTBjOWQ3ZDQifQ"
  328. },
  329. {
  330. "resource": "repo://src/app.rs#L1221-L1232",
  331. "version": "repo-lines-v1:sha256:b46e0c6074aa70a6a18b87a08237023dd69de8b989ccfb3ce3c5796148164d3b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjZGFkMjlkZWMwNzg5N2ZlNTVmMTZlNGRiNTEzOWEwMzEyZmU3M2M5Mzc5OTk0NTU5ZDg2ZmQyNjVlZWU2NjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjYzVlMzg4ZThmOTY0ZGY1OTFjZDM1Y2FlZjk5ODM0MmRjNTllNGU5OTMwMmMyYmI0MjMyZmMxMzdhM2Q1ZjkifQ"
  332. }
  333. ]
  334. },
  335. {
  336. "id": "claim_36c6c5a030ac405b87bbe3051c9b7d52",
  337. "statement": "A relink needs two F8 presses: the first sets pending_relink and asks for confirmation, the second starts it; start_relink is ignored while a relink is running, otherwise it switches to the Connecting screen, clears the QR, resets own_jids_known and spawns a task running WaHandle::relink that sends AppEvent::Relinked.",
  338. "evidence": [
  339. {
  340. "resource": "repo://src/app.rs#L326-L381",
  341. "version": "repo-lines-v1:sha256:1874e8b5ab58c3a5e271332f88ac81403b0acf03851aaef445bbd477d21f76c4:eyJzZWxlY3RlZExpbmVDb3VudCI6NTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxZGUyN2ZmNmY2ZmRjOWQxMWZhMDVjOGM5ZTVjNmI1NTc2NjU3NDhhMWRmM2I3YzFkOTVhZTQwNDY3MmJkNDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZWE1ZDExNGEyZjkyZThlZjQwMzQxN2JhMDkxZWRjODhiNTYwODM5OWY2YTFiNmM0ZWVmNTAzZmI1ZTdjZjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlZjIyYTA2NDVkNDAwY2EyNWVmYzI2Mjg2ZTdjMDZmOWUzZmZhZmQxY2UwMzVjMmZjOTkyYWZhNGI2NGIxY2EifQ"
  342. }
  343. ]
  344. },
  345. {
  346. "id": "claim_67ccf2b70e024c5a8241c0732c7e754c",
  347. "statement": "finish_relink clears the relinking flag and shows either 'Sessione cancellata: scansiona il nuovo QR' or 'Nuovo abbinamento fallito: <error>'; the screen then follows the new session's events.",
  348. "evidence": [
  349. {
  350. "resource": "repo://src/app.rs#L343-L354",
  351. "version": "repo-lines-v1:sha256:741e9b7ade558dddd72ab34aa017552f645c8cc476274a1266dc2b4f27a5860d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzZjY3YjMxMGI5MjEzMzcwMjdhMWY2YzdiYjA0YjkzNDM5MWZjOWM1ZDAzYTJlNjY1NWI2ZmVjNDE4ZjljMjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEyY2MwZDQ0ZGRlMzkxMDE4YTQ1OWMwNmIwOTBlZWVjOGRmNTA0MTg4Mjk3MzIwMmQwYTc2NWZjOTM1NjRjYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU1ZTg0YjQyYzc5NDMxZTNkOWI4Mjk4MGQwN2Y5NWQxMTBiYjQ1ZGUxZTI0NjlkYjcxMDJlNzJmODRiM2FjOWIifQ"
  352. }
  353. ]
  354. },
  355. {
  356. "id": "claim_41ee5980f5b144f8a6984144ec65e736",
  357. "statement": "apply_reloaded_config keeps the current configuration and shows 'Configurazione non ricaricata: <error>' on a load error; on success it replaces config, rebuilds the AI client with build_ai (running replies keep their previous client) and shows 'Configurazione ricaricata' or the build_ai status.",
  358. "evidence": [
  359. {
  360. "resource": "repo://src/app.rs#L383-L400",
  361. "version": "repo-lines-v1:sha256:11076b2b498b6d19b7a0629886f2cdb37229105049de848490f4e1d9faead710:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVhYTEzNjY2OGNiMzc5NzgyYTUwMTY4ZDNlOWM4Njg4MmM5YTBhZTAxOGQwNTZiNTEzZWU2ODA5OWYxNjc3YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVmMjAxZDg2ZGM3NzY0YWFmOTA5MGNhNDRkODcxNDM3Y2JiODk4ZGE5ZWJlMGU0ZDhlNjVlNDZiZDJkZGVkYjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAyNjE2ZDk0ZDJmZDg4NWViMDZhMGFmZjVkYjQ1YWUyOTdiMWQ5NzViYzU0MjRlZGIyYWUwZmE2NzZkMzE0ZTYifQ"
  362. }
  363. ]
  364. },
  365. {
  366. "id": "claim_1e2cad36bb074b0d9d9976128dd97003",
  367. "statement": "web_state returns the global flag, the toggleable chats, the status line, the current screen named connecting/pairing/main and, while a QR payload is stored, the QR rendered as SVG.",
  368. "evidence": [
  369. {
  370. "resource": "repo://src/app.rs#L1171-L1184",
  371. "version": "repo-lines-v1:sha256:643e53e7eee86239879c37d679254899bc317cdbf3cd55b8314e04ba1657043c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzN2M0MzFhZmQ5NGMyNzU0NzJkNjliODNlMGM0MmRmMjU0NmQ2MDQ3NmM4ODg3Yzk3MDRmZWM2Y2U0MDkyMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRkZDFkZTJkMmJiNWE5ODAxZDE4MTAyYTQwYzlmOTc4NjRkNjNkYmEzMzkzMzdiZDVlYTU3Y2FiOGU4YTYwYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJlODM0YjUzNzA2ODgzYmQzMmMxMmViNmQ0OGEyMmFjZjlkNTIyYzIzOWJlNTE5NDZmNzA5YjIxZDNkNjIwMzIifQ"
  372. },
  373. {
  374. "resource": "repo://src/app.rs#L1563-L1569",
  375. "version": "repo-lines-v1:sha256:aeccbfa28dab16bc5a14f9e771c54b3c780209ad3837bba0672ad94aaf49bd5a:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjYzMWVjNWFhMWFjMTI1MDk0ODNlODM1MTA5ZDBkNjMwMDY0YTBhYmU5MjU5NGUzOWUxZjUwOGIxZDUxNzVjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWNjYzYzZTY1NWZjNmMxODhkMDhhMzMyMTUyYzY1MTZiNzVlZDdkNTIzYmJmMGFhMTg2MzBkMTRkMjA0NDczOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDQwM2Q5ZmY0OGI3ZmI2ZDcyM2RlNWM5YjMxODkzMTNlMjQ2NzBhMWE5NjJhYWUxZTYxODRhMjllZmM3MWM1ZCJ9"
  376. }
  377. ]
  378. }
  379. ],
  380. "verification": {
  381. "by": "openwiki/0.7.2",
  382. "at": "2026-10-23T21:26:24.156Z"
  383. }
  384. }