MProcs 9.0__tar.gz → 9.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. {mprocs-9.0/src/MProcs.egg-info → mprocs-9.1.2}/PKG-INFO +5 -5
  2. {mprocs-9.0 → mprocs-9.1.2}/README.md +4 -4
  3. {mprocs-9.0 → mprocs-9.1.2}/pyproject.toml +3 -3
  4. mprocs-9.1.2/src/MProcs/__init__.py +4 -0
  5. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/gwf.py +5 -1
  6. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/lpro.py +6 -0
  7. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/lpro_s.py +6 -0
  8. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/theme.py +2 -2
  9. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/tui.py +18 -5
  10. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/lpro.py +25 -9
  11. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/lpro_s.py +25 -9
  12. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/theme.py +2 -1
  13. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/tui.py +13 -4
  14. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/lpro.py +27 -11
  15. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/lpro_s.py +27 -11
  16. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/tui.py +292 -103
  17. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/version_checker.py +2 -2
  18. {mprocs-9.0 → mprocs-9.1.2/src/MProcs.egg-info}/PKG-INFO +5 -5
  19. mprocs-9.0/src/MProcs/__init__.py +0 -4
  20. {mprocs-9.0 → mprocs-9.1.2}/LICENSE +0 -0
  21. {mprocs-9.0 → mprocs-9.1.2}/MANIFEST.in +0 -0
  22. {mprocs-9.0 → mprocs-9.1.2}/setup.cfg +0 -0
  23. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/__main__.py +0 -0
  24. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/__init__.py +0 -0
  25. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/LICENSE +0 -0
  26. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/__init__.py +0 -0
  27. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/__init__.py +0 -0
  28. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/agent.py +0 -0
  29. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/ai_image.py +0 -0
  30. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/acadlist.json +0 -0
  31. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/ahb.json +0 -0
  32. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/bible1.json +0 -0
  33. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/biology1.json +0 -0
  34. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/chemistry1.json +0 -0
  35. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/chi_chars.json +0 -0
  36. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/degrees1.json +0 -0
  37. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/dhammapada1.json +0 -0
  38. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/diction.json +0 -0
  39. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/fcci.json +0 -0
  40. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/hospitals.json +0 -0
  41. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/jamo.json +0 -0
  42. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/katakana.json +0 -0
  43. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/koran1.json +0 -0
  44. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/legal_terms1.json +0 -0
  45. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/lexicon.json +0 -0
  46. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/medicals1.json +0 -0
  47. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/mims.json +0 -0
  48. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/proverbs.json +0 -0
  49. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/psychology1.json +0 -0
  50. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/science1.json +0 -0
  51. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/strains.json +0 -0
  52. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/acadlist.json +0 -0
  53. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/ahb.json +0 -0
  54. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/bible1.json +0 -0
  55. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/biology1.json +0 -0
  56. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/chemistry1.json +0 -0
  57. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/chi_chars.json +0 -0
  58. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/degrees1.json +0 -0
  59. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/dhammapada1.json +0 -0
  60. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/diction.json +0 -0
  61. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/fcci.json +0 -0
  62. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/hospitals.json +0 -0
  63. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/jamo.json +0 -0
  64. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/katakana.json +0 -0
  65. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/koran1.json +0 -0
  66. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/legal_terms1.json +0 -0
  67. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/medicals1.json +0 -0
  68. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/mims.json +0 -0
  69. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/proverbs.json +0 -0
  70. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/psychology1.json +0 -0
  71. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/science1.json +0 -0
  72. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/strains.json +0 -0
  73. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/tracks.json +0 -0
  74. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/themed/verses1.json +0 -0
  75. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/tracks.json +0 -0
  76. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data/verses1.json +0 -0
  77. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/data_loader.py +0 -0
  78. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/deepseek_ai.py +0 -0
  79. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/drills.py +0 -0
  80. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/ghostwrite.py +0 -0
  81. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/keys.py +0 -0
  82. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/lexicon.py +0 -0
  83. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/main.py +0 -0
  84. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/ops.py +0 -0
  85. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/program.py +0 -0
  86. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/scmpy.py +0 -0
  87. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/session.py +0 -0
  88. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/version_checker.py +0 -0
  89. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/flu0/scripts/wrappers.py +0 -0
  90. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/LICENSE +0 -0
  91. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/__init__.py +0 -0
  92. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/__init__.py +0 -0
  93. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/agent.py +0 -0
  94. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/ai_image.py +0 -0
  95. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/acadlist.json +0 -0
  96. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/ahb.json +0 -0
  97. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/bible1.json +0 -0
  98. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/biology1.json +0 -0
  99. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/chemistry1.json +0 -0
  100. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/chi_chars.json +0 -0
  101. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/degrees1.json +0 -0
  102. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/dhammapada1.json +0 -0
  103. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/diction.json +0 -0
  104. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/fcci.json +0 -0
  105. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/hospitals.json +0 -0
  106. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/jamo.json +0 -0
  107. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/katakana.json +0 -0
  108. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/koran1.json +0 -0
  109. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/legal_terms1.json +0 -0
  110. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/medicals1.json +0 -0
  111. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/mims.json +0 -0
  112. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/proverbs.json +0 -0
  113. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/psychology1.json +0 -0
  114. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/science1.json +0 -0
  115. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/strains.json +0 -0
  116. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/acadlist.json +0 -0
  117. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/ahb.json +0 -0
  118. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/bible1.json +0 -0
  119. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/biology1.json +0 -0
  120. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/chemistry1.json +0 -0
  121. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/chi_chars.json +0 -0
  122. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/degrees1.json +0 -0
  123. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/dhammapada1.json +0 -0
  124. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/diction.json +0 -0
  125. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/fcci.json +0 -0
  126. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/hospitals.json +0 -0
  127. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/jamo.json +0 -0
  128. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/katakana.json +0 -0
  129. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/koran1.json +0 -0
  130. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/legal_terms1.json +0 -0
  131. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/medicals1.json +0 -0
  132. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/mims.json +0 -0
  133. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/proverbs.json +0 -0
  134. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/psychology1.json +0 -0
  135. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/science1.json +0 -0
  136. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/strains.json +0 -0
  137. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/tracks.json +0 -0
  138. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/themed/verses1.json +0 -0
  139. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/tracks.json +0 -0
  140. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data/verses1.json +0 -0
  141. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/data_loader.py +0 -0
  142. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/deepseek_ai.py +0 -0
  143. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/gwf.py +0 -0
  144. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/keys.py +0 -0
  145. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/main.py +0 -0
  146. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/scmpy.py +0 -0
  147. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/session.py +0 -0
  148. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/version_checker.py +0 -0
  149. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/hmptunnel/scripts/wrappers.py +0 -0
  150. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/LICENSE +0 -0
  151. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/__init__.py +0 -0
  152. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/__main__.py +0 -0
  153. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/agent.py +0 -0
  154. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/app.py +0 -0
  155. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/__init__.py +0 -0
  156. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/almanac.py +0 -0
  157. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/domains.py +0 -0
  158. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/domains_applied.py +0 -0
  159. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/encyclopedia.py +0 -0
  160. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/lexicon.py +0 -0
  161. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/people.py +0 -0
  162. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/sources.py +0 -0
  163. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/content/timeline.py +0 -0
  164. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/acadlist.json +0 -0
  165. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/ahb.json +0 -0
  166. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/bible1.json +0 -0
  167. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/biology1.json +0 -0
  168. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/chemistry1.json +0 -0
  169. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/chi_chars.json +0 -0
  170. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/degrees1.json +0 -0
  171. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/dhammapada1.json +0 -0
  172. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/diction.json +0 -0
  173. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/diction_raw.json +0 -0
  174. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/fcci.json +0 -0
  175. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/hospitals.json +0 -0
  176. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/jamo.json +0 -0
  177. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/katakana.json +0 -0
  178. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/koran1.json +0 -0
  179. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/legal_terms1.json +0 -0
  180. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/manifest.json +0 -0
  181. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/medicals1.json +0 -0
  182. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/mims.json +0 -0
  183. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/proverbs.json +0 -0
  184. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/psychology1.json +0 -0
  185. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/science1.json +0 -0
  186. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data/verses1.json +0 -0
  187. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/data_loader.py +0 -0
  188. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/knowledge.py +0 -0
  189. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/py.typed +0 -0
  190. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/technica.py +0 -0
  191. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/modules/polyhistor/theme.py +0 -0
  192. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/__init__.py +0 -0
  193. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/ai_image.py +0 -0
  194. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/acadlist.json +0 -0
  195. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/ahb.json +0 -0
  196. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/bible1.json +0 -0
  197. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/biology1.json +0 -0
  198. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/chemistry1.json +0 -0
  199. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/chi_chars.json +0 -0
  200. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/degrees1.json +0 -0
  201. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/dhammapada1.json +0 -0
  202. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/diction.json +0 -0
  203. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/fcci.json +0 -0
  204. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/hospitals.json +0 -0
  205. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/jamo.json +0 -0
  206. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/katakana.json +0 -0
  207. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/koran1.json +0 -0
  208. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/legal_terms1.json +0 -0
  209. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/medicals1.json +0 -0
  210. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/mims.json +0 -0
  211. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/proverbs.json +0 -0
  212. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/psychology1.json +0 -0
  213. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/science1.json +0 -0
  214. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/strains.json +0 -0
  215. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/tracks.json +0 -0
  216. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data/verses1.json +0 -0
  217. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/data_loader.py +0 -0
  218. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/deepseek_ai.py +0 -0
  219. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/gwf.py +0 -0
  220. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/keys.py +0 -0
  221. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/main.py +0 -0
  222. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/native.py +0 -0
  223. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/scmpy.py +0 -0
  224. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/session.py +0 -0
  225. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs/scripts/wrappers.py +0 -0
  226. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs.egg-info/SOURCES.txt +0 -0
  227. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs.egg-info/dependency_links.txt +0 -0
  228. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs.egg-info/entry_points.txt +0 -0
  229. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs.egg-info/requires.txt +0 -0
  230. {mprocs-9.0 → mprocs-9.1.2}/src/MProcs.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MProcs
3
- Version: 9.0
3
+ Version: 9.1.2
4
4
  Summary: MProcs // Terminal Suite - MProcs, POLYHISTOR, FLU0 and JADE//WIRE in one launcher
5
5
  Author-email: tderk <usvu.tech@gmail.com>
6
6
  License: MIT
@@ -19,7 +19,7 @@ Dynamic: license-file
19
19
 
20
20
  Derived from NeonBunny. A Life program by tderk, originally LPro.py and Destiny [2024].
21
21
 
22
- ## MProcs // Terminal Suite (11.0 / app 9.0)
22
+ ## MProcs // Terminal Suite (12.0 / app 9.1.2)
23
23
 
24
24
  MProcs is now a single, self-contained launcher for every terminal in the
25
25
  suite. Nothing is looked up on PyPI, nothing is downloaded at startup, and the
@@ -151,7 +151,7 @@ Fix applied vs. original PyPI sdist: moved `dependencies = ["requests","ddgs"]`
151
151
  ```bash
152
152
  # from this directory (/home/kredt/BDCS/MProcs)
153
153
  pip install --upgrade build twine
154
- python -m build # creates dist/mprocs-9.0.tar.gz + .whl
154
+ python -m build # creates dist/mprocs-9.1.2.tar.gz + .whl
155
155
  # or
156
156
  pip wheel . --no-deps
157
157
  pip install dist/mprocs-*.whl # test install
@@ -287,7 +287,7 @@ Display full article from source header? (enter header/title/id or n): agent-tra
287
287
  terminal summary.
288
288
  - `MProcs --list`, `MProcs --version` and `MProcs --help` are available without
289
289
  starting the TUI.
290
- - `pyproject.toml` application version `9.0` (suite version `11.0`); package data includes every terminal data
290
+ - `pyproject.toml` application version `9.1.2` (suite version `12.0`); package data includes every terminal data
291
291
  directory.
292
292
 
293
293
  **Layout:** `src/MProcs/modules/{polyhistor,flu0,hmptunnel}`.
@@ -343,7 +343,7 @@ PASSED.
343
343
  between blank lines.
344
344
  - **Wording:** removed previous integration labels from the UI, package description and
345
345
  documentation.
346
- - **Versions:** MProcs `11.0`; application package `9.0`.
346
+ - **Versions:** MProcs `12.0`; application package `9.1.2`.
347
347
 
348
348
  **Verified:** 256-colour POLYHISTOR output and spacing, FLU0/JADE//WIRE boards
349
349
  with rails/frame, both GWFs, nested Esc/Ctrl-G navigation, update screen and
@@ -2,7 +2,7 @@
2
2
 
3
3
  Derived from NeonBunny. A Life program by tderk, originally LPro.py and Destiny [2024].
4
4
 
5
- ## MProcs // Terminal Suite (11.0 / app 9.0)
5
+ ## MProcs // Terminal Suite (12.0 / app 9.1.2)
6
6
 
7
7
  MProcs is now a single, self-contained launcher for every terminal in the
8
8
  suite. Nothing is looked up on PyPI, nothing is downloaded at startup, and the
@@ -134,7 +134,7 @@ Fix applied vs. original PyPI sdist: moved `dependencies = ["requests","ddgs"]`
134
134
  ```bash
135
135
  # from this directory (/home/kredt/BDCS/MProcs)
136
136
  pip install --upgrade build twine
137
- python -m build # creates dist/mprocs-9.0.tar.gz + .whl
137
+ python -m build # creates dist/mprocs-9.1.2.tar.gz + .whl
138
138
  # or
139
139
  pip wheel . --no-deps
140
140
  pip install dist/mprocs-*.whl # test install
@@ -270,7 +270,7 @@ Display full article from source header? (enter header/title/id or n): agent-tra
270
270
  terminal summary.
271
271
  - `MProcs --list`, `MProcs --version` and `MProcs --help` are available without
272
272
  starting the TUI.
273
- - `pyproject.toml` application version `9.0` (suite version `11.0`); package data includes every terminal data
273
+ - `pyproject.toml` application version `9.1.2` (suite version `12.0`); package data includes every terminal data
274
274
  directory.
275
275
 
276
276
  **Layout:** `src/MProcs/modules/{polyhistor,flu0,hmptunnel}`.
@@ -326,7 +326,7 @@ PASSED.
326
326
  between blank lines.
327
327
  - **Wording:** removed previous integration labels from the UI, package description and
328
328
  documentation.
329
- - **Versions:** MProcs `11.0`; application package `9.0`.
329
+ - **Versions:** MProcs `12.0`; application package `9.1.2`.
330
330
 
331
331
  **Verified:** 256-colour POLYHISTOR output and spacing, FLU0/JADE//WIRE boards
332
332
  with rails/frame, both GWFs, nested Esc/Ctrl-G navigation, update screen and
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "MProcs"
7
- version = "9.0"
7
+ version = "9.1.2"
8
8
  description = "MProcs // Terminal Suite - MProcs, POLYHISTOR, FLU0 and JADE//WIRE in one launcher"
9
9
  requires-python = ">=3.8"
10
10
  readme = "README.md"
@@ -22,8 +22,8 @@ lpro-s = "MProcs.scripts.lpro_s:main"
22
22
  gwf = "MProcs.scripts.gwf:run"
23
23
 
24
24
  [tool.mprocs]
25
- version = "11.0"
26
- app-version = "9.0"
25
+ version = "12.0"
26
+ app-version = "9.1.2"
27
27
 
28
28
  [project.optional-dependencies]
29
29
  dev = ["pytest", "black", "flake8"]
@@ -0,0 +1,4 @@
1
+ """MProcs terminal suite."""
2
+
3
+ __version__ = "12.0"
4
+ __app_version__ = "9.1.2"
@@ -235,7 +235,11 @@ class GWF:
235
235
 
236
236
  def _dims(self):
237
237
  if self.tui is not None:
238
- width = max(1, int(getattr(self.tui, 'width', 80)) - 4)
238
+ content = getattr(self.tui, '_content_width', None)
239
+ if callable(content):
240
+ width = max(1, int(content()) - 1)
241
+ else:
242
+ width = max(1, int(getattr(self.tui, 'width', 80)) - 4)
239
243
  height = max(1, int(getattr(self.tui, 'height', 24)) - 4)
240
244
  return width, height
241
245
  try:
@@ -8345,6 +8345,12 @@ def main():
8345
8345
  if choice == "insta ghost write" or choice == "Insta Ghost Write" or choice == "IGW" or choice == "igw" or choice == "insta ghost code" or choice == "iGW" or choice == "insta GW" or choice == "insta gw":
8346
8346
  insta_ghost_write()
8347
8347
 
8348
+ if choice.strip() == "+":
8349
+ ghost_write()
8350
+
8351
+ if choice.strip().startswith("+") and choice.strip()[1:].strip().isdigit():
8352
+ insta_ghost_write(int(choice.strip()[1:].strip()))
8353
+
8348
8354
  if choice == "soundstream" or choice == "sst" or choice == "SST" or choice == "sound stream" or choice == "stream sound" or choice == "streamsound":
8349
8355
  sound_stream()
8350
8356
 
@@ -6223,6 +6223,12 @@ def main():
6223
6223
  if choice == "insta ghost write" or choice == "Insta Ghost Write" or choice == "IGW" or choice == "igw" or choice == "insta ghost code" or choice == "iGW" or choice == "insta GW" or choice == "insta gw":
6224
6224
  insta_ghost_write()
6225
6225
 
6226
+ if choice.strip() == "+":
6227
+ ghost_write()
6228
+
6229
+ if choice.strip().startswith("+") and choice.strip()[1:].strip().isdigit():
6230
+ insta_ghost_write(int(choice.strip()[1:].strip()))
6231
+
6226
6232
  if choice == "soundstream" or choice == "sst" or choice == "SST" or choice == "sound stream" or choice == "stream sound" or choice == "streamsound":
6227
6233
  sound_stream()
6228
6234
 
@@ -2597,8 +2597,8 @@ def command_help():
2597
2597
  "program training | program oversight | program metrics | program watch",
2598
2598
  "probe simulated engagement report",
2599
2599
  "drill | train field drill record and currency",
2600
- "ghost write [gw] continuous word stream; Ctrl+C to stop",
2601
- "insta ghost write prompt for N lines [igw]",
2600
+ "ghost write [gw, +] continuous word stream; Ctrl+C to stop",
2601
+ "insta ghost write N lines [igw, +N] (e.g. +3)",
2602
2602
  "lexicon 40,000-entry vocabulary [flu0-lexicon]",
2603
2603
  ]),
2604
2604
  ("TERMINAL CORE", [
@@ -539,6 +539,9 @@ class Flu0TUI:
539
539
  def _handle_key(self, key):
540
540
  if isinstance(key, int) and key < 0:
541
541
  return
542
+ if key == '\x07' and os.environ.get('MPROCS_NATIVE'):
543
+ self._request_exit()
544
+ return
542
545
  if key == 27 or key == '\x1b':
543
546
  if not self.menu_mode and not self.input_active and self.app_key_handler is not None:
544
547
  try:
@@ -628,6 +631,9 @@ class Flu0TUI:
628
631
  if self.menu_mode:
629
632
  if self.session_started:
630
633
  self.menu_mode = False
634
+ elif os.environ.get('MPROCS_NATIVE'):
635
+ self._request_exit()
636
+ return
631
637
  else:
632
638
  self.menu_mode = True
633
639
  self._dirty = True
@@ -660,6 +666,10 @@ class Flu0TUI:
660
666
  if getattr(app, 'name', '') == 'LEXICON':
661
667
  self._launch(idx)
662
668
  break
669
+ elif len(k) == 1 and k.isalpha():
670
+ idx = ord(k) - ord('a')
671
+ if 0 <= idx < len(self.apps):
672
+ self._launch(idx)
663
673
 
664
674
  def _launch(self, idx):
665
675
  self.menu_index = idx
@@ -818,8 +828,8 @@ class Flu0TUI:
818
828
  def _draw_footer(self):
819
829
  narrow = self.width < 70
820
830
  if self.menu_mode:
821
- hints = ' l lexicon ↑↓ select Enter ^C ' if narrow else \
822
- ' l lexicon // ↑↓ select // Enter launch // Esc back // ^C stand down '
831
+ hints = (' a-%s l ↑↓ Esc MProcs ^C ' % (chr(ord('a') + len(self.apps) - 1) if len(self.apps) <= 26 else 'z')) if narrow else \
832
+ (' a-%s select // ↑↓ // Enter launch // l lexicon // Esc/Ctrl-G MProcs // ^C stand down ' % (chr(ord('a') + len(self.apps) - 1) if len(self.apps) <= 26 else 'z'))
823
833
  else:
824
834
  hints = ' ↑↓ scroll PgUp/PgDn ^C ' if narrow else \
825
835
  ' ↑↓ scroll // PgUp/PgDn page // Home/End // ^C stand down '
@@ -979,7 +989,8 @@ class Flu0TUI:
979
989
  limit=main_r)
980
990
  self._put(2, max(main_x, main_r - 17), 'PROGRAM CAMELTOE', self._attr('ash', curses.A_DIM),
981
991
  limit=main_r)
982
- self._put(3, main_x, 'l lexicon',
992
+ last_letter = chr(ord('a') + len(self.apps) - 1) if len(self.apps) <= 26 else 'z'
993
+ self._put(3, main_x, 'a-%s shortcuts l lexicon' % last_letter,
983
994
  self._attr('ice', curses.A_DIM), limit=main_r)
984
995
  apps = list(self.apps)
985
996
  if not apps:
@@ -997,7 +1008,8 @@ class Flu0TUI:
997
1008
  marker = '▶' if (i - 1) == self.menu_index else ' '
998
1009
  label = getattr(app, 'display_name', None) or app.name
999
1010
  desc = getattr(app, 'description', '') or 'terminal daemon'
1000
- line = '%s %2d %-22s %s' % (marker, i, label, desc)
1011
+ shortcut = chr(ord('a') + i - 1) if i <= 26 else str(i)
1012
+ line = '%s %s %-22s %s' % (marker, shortcut, label, desc)
1001
1013
  attr = curses.A_REVERSE if (i - 1) == self.menu_index else 0
1002
1014
  self._put(y, main_x, line, attr, limit=main_x + list_w)
1003
1015
  y += 1
@@ -1014,8 +1026,9 @@ class Flu0TUI:
1014
1026
  self._line(dy, dx, dw, part, 0); dy += 1
1015
1027
  dy += 1
1016
1028
  self._line(dy, dx, dw, 'Enter launch', self._attr('ash', curses.A_DIM)); dy += 1
1029
+ self._line(dy, dx, dw, 'a-%s select' % last_letter, self._attr('ash', curses.A_DIM)); dy += 1
1017
1030
  self._line(dy, dx, dw, 'l lexicon', self._attr('ash', curses.A_DIM)); dy += 1
1018
- self._line(dy, dx, dw, 'Esc back', self._attr('ash', curses.A_DIM)); dy += 1
1031
+ self._line(dy, dx, dw, 'Esc MProcs' if os.environ.get('MPROCS_NATIVE') else 'Esc back', self._attr('ash', curses.A_DIM)); dy += 1
1019
1032
  self._line(dy, dx, dw, '^C stand down', self._attr('ash', curses.A_DIM)); dy += 2
1020
1033
  self._line(dy, dx, dw, 'CLASSIFICATION', self._attr('ash', curses.A_DIM)); dy += 1
1021
1034
  self._line(dy, dx, dw, 'SIMULATED // FICTION', self._attr('red')); dy += 1
@@ -3512,16 +3512,22 @@ def main():
3512
3512
  print("\nStopped by user.")
3513
3513
  print("this saved to ghost.txt")
3514
3514
 
3515
- def insta_ghost_write():
3515
+ def insta_ghost_write(count=None):
3516
3516
  nano = (diction)
3517
3517
  g = open("ghost.txt", "a", buffering=1)
3518
- while True:
3518
+ if count is None:
3519
+ while True:
3520
+ try:
3521
+ number = int(input("Indicate number of (i-GhostWrite) results: "))
3522
+ except ValueError:
3523
+ print("Invalid value")
3524
+ else:
3525
+ break
3526
+ else:
3519
3527
  try:
3520
- number = int(input("Indicate number of (i-GhostWrite) results: "))
3521
- except ValueError:
3522
- print("Invalid value")
3523
- else:
3524
- break
3528
+ number = int(count)
3529
+ except (TypeError, ValueError):
3530
+ number = 1
3525
3531
  number
3526
3532
  print()
3527
3533
  for _ in range(number):
@@ -7841,8 +7847,12 @@ def main():
7841
7847
  if choice == 'profile' or choice == 'Profile':
7842
7848
  profile()
7843
7849
 
7844
- if choice == 'change username' or choice == 'username' or choice == 'user':
7845
- change_username()
7850
+ if (choice == 'change username' or choice == 'username'
7851
+ or choice == 'user' or choice.startswith('user ')
7852
+ or choice.startswith('username ')
7853
+ or choice.startswith('change username ')):
7854
+ parts = choice.split(None, 1)
7855
+ change_username(parts[1].strip() if len(parts) > 1 else None)
7846
7856
  return "continue"
7847
7857
 
7848
7858
  if choice == 'alerts' or choice == 'Alerts':
@@ -8378,6 +8388,12 @@ def main():
8378
8388
  if choice == "insta ghost write" or choice == "Insta Ghost Write" or choice == "IGW" or choice == "igw" or choice == "insta ghost code" or choice == "iGW" or choice == "insta GW" or choice == "insta gw":
8379
8389
  insta_ghost_write()
8380
8390
 
8391
+ if choice.strip() == "+":
8392
+ ghost_write()
8393
+
8394
+ if choice.strip().startswith("+") and choice.strip()[1:].strip().isdigit():
8395
+ insta_ghost_write(int(choice.strip()[1:].strip()))
8396
+
8381
8397
  if choice == "soundstream" or choice == "sst" or choice == "SST" or choice == "sound stream" or choice == "stream sound" or choice == "streamsound":
8382
8398
  sound_stream()
8383
8399
 
@@ -2904,15 +2904,21 @@ def main():
2904
2904
  print()
2905
2905
  print("\nStopped by user.")
2906
2906
 
2907
- def insta_ghost_write():
2907
+ def insta_ghost_write(count=None):
2908
2908
  nano = (diction)
2909
- while True:
2909
+ if count is None:
2910
+ while True:
2911
+ try:
2912
+ number = int(input("Indicate number of (i-GhostWrite) results: "))
2913
+ except ValueError:
2914
+ print("Invalid value")
2915
+ else:
2916
+ break
2917
+ else:
2910
2918
  try:
2911
- number = int(input("Indicate number of (i-GhostWrite) results: "))
2912
- except ValueError:
2913
- print("Invalid value")
2914
- else:
2915
- break
2919
+ number = int(count)
2920
+ except (TypeError, ValueError):
2921
+ number = 1
2916
2922
  number
2917
2923
  print()
2918
2924
  for _ in range(number):
@@ -5752,8 +5758,12 @@ def main():
5752
5758
  if choice == 'profile' or choice == 'Profile':
5753
5759
  profile()
5754
5760
 
5755
- if choice == 'change username' or choice == 'username' or choice == 'user':
5756
- change_username()
5761
+ if (choice == 'change username' or choice == 'username'
5762
+ or choice == 'user' or choice.startswith('user ')
5763
+ or choice.startswith('username ')
5764
+ or choice.startswith('change username ')):
5765
+ parts = choice.split(None, 1)
5766
+ change_username(parts[1].strip() if len(parts) > 1 else None)
5757
5767
  return "continue"
5758
5768
 
5759
5769
  if choice == 'alerts' or choice == 'Alerts':
@@ -6240,6 +6250,12 @@ def main():
6240
6250
  if choice == "insta ghost write" or choice == "Insta Ghost Write" or choice == "IGW" or choice == "igw" or choice == "insta ghost code" or choice == "iGW" or choice == "insta GW" or choice == "insta gw":
6241
6251
  insta_ghost_write()
6242
6252
 
6253
+ if choice.strip() == "+":
6254
+ ghost_write()
6255
+
6256
+ if choice.strip().startswith("+") and choice.strip()[1:].strip().isdigit():
6257
+ insta_ghost_write(int(choice.strip()[1:].strip()))
6258
+
6243
6259
  if choice == "soundstream" or choice == "sst" or choice == "SST" or choice == "sound stream" or choice == "stream sound" or choice == "streamsound":
6244
6260
  sound_stream()
6245
6261
 
@@ -2768,9 +2768,10 @@ def command_help():
2768
2768
  "version | no_color [nc] | switch/lx | commands | pwd / ls / cd / clear / mkdir / rm",
2769
2769
  "blank input = nano | n1 = 1-nano | morn [m] | nanochars [nnc]",
2770
2770
  "katakana [kata/b] | jamo [hangu/n] | chi [++] | ans [@@] | ruh [%%]",
2771
- "profile | note | journal | save | type-text | echo | print time | alerts | fuzz",
2771
+ "profile | change username/user [name] | note | journal | save | type-text | echo | print time | alerts | fuzz",
2772
2772
  "tsearch | search | msearch | asearch | fsearch | jot [JOT] | threads",
2773
2773
  "programs [PROGR] | speak [spk] | generate string [gstring]",
2774
+ "ghost write [gw, +] | insta ghost write [igw, +N] (e.g. +3)",
2774
2775
  "Deepseek AI [DS/ds] | dsnan interpret | ai_image | scmpy / scm",
2775
2776
  "update | restart | A-HB [Agent Handbook] | rhospital / ghosthunt",
2776
2777
  ]),
@@ -536,6 +536,9 @@ class HmptunnelTUI:
536
536
  def _handle_key(self, key):
537
537
  if isinstance(key, int) and key < 0:
538
538
  return
539
+ if key == '\x07' and os.environ.get('MPROCS_NATIVE'):
540
+ self._request_exit()
541
+ return
539
542
  if key == 27 or key == '\x1b':
540
543
  if not self.menu_mode and not self.input_active and self.app_key_handler is not None:
541
544
  try:
@@ -625,6 +628,9 @@ class HmptunnelTUI:
625
628
  if self.menu_mode:
626
629
  if self.session_started:
627
630
  self.menu_mode = False
631
+ elif os.environ.get('MPROCS_NATIVE'):
632
+ self._request_exit()
633
+ return
628
634
  else:
629
635
  self.menu_mode = True
630
636
  self._dirty = True
@@ -650,8 +656,10 @@ class HmptunnelTUI:
650
656
  self._launch(self.menu_index)
651
657
  elif k == '\x03':
652
658
  self._request_exit()
653
- elif k.isdigit() and 1 <= int(k) <= len(self.apps):
654
- self._launch(int(k) - 1)
659
+ elif k.isdigit():
660
+ idx = 9 if k == '0' else int(k) - 1
661
+ if 0 <= idx < len(self.apps):
662
+ self._launch(idx)
655
663
 
656
664
  def _launch(self, idx):
657
665
  self.menu_index = idx
@@ -780,7 +788,7 @@ class HmptunnelTUI:
780
788
  def _draw_footer(self):
781
789
  narrow = self.width < 60
782
790
  if self.menu_mode:
783
- hints = ' ↑↓ | Enter | Esc | ^C ' if narrow else ' ↑↓ select // Enter launch // Esc back // ^C quit '
791
+ hints = (' ↑↓ | Enter | Esc MProcs ' if os.environ.get('MPROCS_NATIVE') else ' ↑↓ | Enter | Esc | ^C ') if narrow else (' ↑↓ select // Enter launch // Esc/Ctrl-G MProcs // ^C quit ' if os.environ.get('MPROCS_NATIVE') else ' ↑↓ select // Enter launch // Esc back // ^C quit ')
784
792
  else:
785
793
  hints = ' ↑↓ | PgUp/PgDn | ^C ' if narrow else ' ↑↓ scroll // PgUp/PgDn page // ^C quit '
786
794
  right = '' if narrow else ' JADE//WIRE '
@@ -832,7 +840,8 @@ class HmptunnelTUI:
832
840
  marker = '▶' if (i - 1) == self.menu_index else ' '
833
841
  label = getattr(app, 'display_name', None) or app.name
834
842
  desc = getattr(app, 'description', '') or 'terminal daemon'
835
- line = (' %s %2d %-22s %s' % (marker, i, label, desc))[:max(0, w - 4)]
843
+ number = 0 if i == 10 else i
844
+ line = (' %s %2d %-22s %s' % (marker, number, label, desc))[:max(0, w - 4)]
836
845
  attr = curses.A_REVERSE if (i - 1) == self.menu_index else 0
837
846
  put(y, 2, line, attr)
838
847
  y += 1
@@ -219,7 +219,7 @@ def main():
219
219
  print(alert, value, random_letters, rrchar_str, kkchar_str, cchat, hchar_str, ct, file=z)
220
220
 
221
221
  def version():
222
- title = usr + "" + " " + "" + f"snowtiger >>> {ORANGE}I.S. (Incubator Studios) Outbeat Produce:{RESET} {GREEN}MProcs-11.0 (v{version_checker.PACKAGE_VERSION}){RESET} {ORANGE}by tderk{RESET} - {ORANGE}Established Lpro.py (Life-pro) and Destiny [2024]{RESET}"
222
+ title = usr + "" + " " + "" + f"snowtiger >>> {ORANGE}I.S. (Incubator Studios) Outbeat Produce:{RESET} {GREEN}MProcs-12.0 (v{version_checker.PACKAGE_VERSION}){RESET} {ORANGE}by tderk{RESET} - {ORANGE}Established Lpro.py (Life-pro) and Destiny [2024]{RESET}"
223
223
  title2 = f"| {BLUE}Indicative: @USVirtualUni && © Medicine, Computable (N_2025) && FNTCCI{RESET} |"
224
224
  title3 = f"{ORANGE}All Rights Reserved{RESET} - {BLUE}Medicci.ca{RESET}"
225
225
  title4 = f"- {RED}(P0cket Un1-Ver$e){RESET}"
@@ -444,7 +444,7 @@ def main():
444
444
  print()
445
445
  print(" FNTCCI: tinien [single space/**], ntag, fcci-monitor [fstart/fcci] | synthesis: cbmp, cmbpc, xcbmp, xcbmpc, hbmp, hbmpc, xhbmp, xhbmpc, jbmp, jbmpc, xjbmp, xjbmpc, fbmp, xfbmp")
446
446
  print()
447
- print(" | Medicines (MIMS/mim), Medicals (M), equips, rpg, Bible [bb/BB], random hospital [rhosp/ghosthunt], jburner/jtburner, cburner/ctburner, ruh-time-call [RTC], ruh-monitor [rmonitor], insta ghost write [IGW], sound stream [sst], ghost write/code [GW], proverbs [ps], c-characters [cchar/cc], ch-monitor [CHM], kata-monitor [KM], jamo-monitor [JM], speak [spk], map, threads, zuz [pp], call, time-call [TC], message [lh], [echo], [fuzz], alerts, light incense, prayer, dhammapada, message-scan [scan], ascii [double space], ascii search [ascsearch/asc], archery, value, tag / atag, monitor-start [mstart], acad-monitor (astart), weapon start [wstart], oscillator/time-oscillator [oscill/toscill], MedProc AI [MAI], MedProcCont [MAIc/MPC], burner-start/time-burner [burn/tburn], burner-search [b-search], Earth Science (SCI), psychology (psyc), Patient Simu, biology (B), chemistry (ch), legal terms (Law), change username [username/user], print time, (ai) auto-mat [AAM], [ID / IDC], the heart sutra, herbs/herbals, maryjane [mj], degree/major, frames [fps], frames search [fsearch], police (prad), CAI Environments (CAI/GES), amror (meditation game), amror-search [amsearch], time-monitor [tmonitor], speech-time-monitor [stmonitor], guard, Programs [PROGR], generate string [gstring]")
447
+ print(" | Medicines (MIMS/mim), Medicals (M), equips, rpg, Bible [bb/BB], random hospital [rhosp/ghosthunt], jburner/jtburner, cburner/ctburner, ruh-time-call [RTC], ruh-monitor [rmonitor], insta ghost write [IGW/+N, e.g. +3], sound stream [sst], ghost write/code [GW/+], proverbs [ps], c-characters [cchar/cc], ch-monitor [CHM], kata-monitor [KM], jamo-monitor [JM], speak [spk], map, threads, zuz [pp], call, time-call [TC], message [lh], [echo], [fuzz], alerts, light incense, prayer, dhammapada, message-scan [scan], ascii [double space], ascii search [ascsearch/asc], archery, value, tag / atag, monitor-start [mstart], acad-monitor (astart), weapon start [wstart], oscillator/time-oscillator [oscill/toscill], MedProc AI [MAI], MedProcCont [MAIc/MPC], burner-start/time-burner [burn/tburn], burner-search [b-search], Earth Science (SCI), psychology (psyc), Patient Simu, biology (B), chemistry (ch), legal terms (Law), change username/user [name], print time, (ai) auto-mat [AAM], [ID / IDC], the heart sutra, herbs/herbals, maryjane [mj], degree/major, frames [fps], frames search [fsearch], police (prad), CAI Environments (CAI/GES), amror (meditation game), amror-search [amsearch], time-monitor [tmonitor], speech-time-monitor [stmonitor], guard, Programs [PROGR], generate string [gstring]")
448
448
  print()
449
449
  print(" | pray, sleep, eat, meditate, draw card, slot, find coins, search for items, fly, drink coffee, drink tea, surf, skate, art, give alms, radio, hack, brawl, souls, hipster tarot, mp3, spar, train, rest, psalms, haiku, karate, koans, color key, doodling, BUMP, MA, Magic, zen melody, monopoly, stats, progress, collections, football, c, entry, posting, koran, heBrews, Clearance, MiCasa, stuff, worship, License, climb, teletubby, {[muslim prayer] fajr (before dawn) / dhuhr (noon) / asr (late afternoon) / maghrib (at sunset) / isha (nighttime)}, monitor-search [msearch], acad-search [asearch]")
450
450
 
@@ -3529,16 +3529,22 @@ def main():
3529
3529
  print("\nStopped by user.")
3530
3530
  print("this saved to ghost.txt")
3531
3531
 
3532
- def insta_ghost_write():
3532
+ def insta_ghost_write(count=None):
3533
3533
  nano = (diction)
3534
3534
  g = open("ghost.txt", "a", buffering=1)
3535
- while True:
3535
+ if count is None:
3536
+ while True:
3537
+ try:
3538
+ number = int(input("Indicate number of (i-GhostWrite) results: "))
3539
+ except ValueError:
3540
+ print("Invalid value")
3541
+ else:
3542
+ break
3543
+ else:
3536
3544
  try:
3537
- number = int(input("Indicate number of (i-GhostWrite) results: "))
3538
- except ValueError:
3539
- print("Invalid value")
3540
- else:
3541
- break
3545
+ number = int(count)
3546
+ except (TypeError, ValueError):
3547
+ number = 1
3542
3548
  number
3543
3549
  print()
3544
3550
  for _ in range(number):
@@ -7857,8 +7863,12 @@ def main():
7857
7863
  if choice == 'profile' or choice == 'Profile':
7858
7864
  profile()
7859
7865
 
7860
- if choice == 'change username' or choice == 'username' or choice == 'user':
7861
- change_username()
7866
+ if (choice == 'change username' or choice == 'username'
7867
+ or choice == 'user' or choice.startswith('user ')
7868
+ or choice.startswith('username ')
7869
+ or choice.startswith('change username ')):
7870
+ parts = choice.split(None, 1)
7871
+ change_username(parts[1].strip() if len(parts) > 1 else None)
7862
7872
  return "continue"
7863
7873
 
7864
7874
  if choice == 'alerts' or choice == 'Alerts':
@@ -8394,6 +8404,12 @@ def main():
8394
8404
  if choice == "insta ghost write" or choice == "Insta Ghost Write" or choice == "IGW" or choice == "igw" or choice == "insta ghost code" or choice == "iGW" or choice == "insta GW" or choice == "insta gw":
8395
8405
  insta_ghost_write()
8396
8406
 
8407
+ if choice.strip() == "+":
8408
+ ghost_write()
8409
+
8410
+ if choice.strip().startswith("+") and choice.strip()[1:].strip().isdigit():
8411
+ insta_ghost_write(int(choice.strip()[1:].strip()))
8412
+
8397
8413
  if choice == "soundstream" or choice == "sst" or choice == "SST" or choice == "sound stream" or choice == "stream sound" or choice == "streamsound":
8398
8414
  sound_stream()
8399
8415
 
@@ -216,7 +216,7 @@ def main():
216
216
  print(alert, value, random_letters, kkchar_str, cchat, hchar_str, rrchar_str, ct)
217
217
 
218
218
  def version():
219
- title = usr + "" + " " + "" + f"snowtiger >>> {ORANGE}I.S. (Incubator Studios) Outbeat Produce:{RESET} {GREEN}MProcs-11.0-s (v{version_checker.PACKAGE_VERSION}){RESET} {ORANGE}by tderk{RESET} - {ORANGE}Established Lpro.py (Life-pro) and Destiny [2024]{RESET}"
219
+ title = usr + "" + " " + "" + f"snowtiger >>> {ORANGE}I.S. (Incubator Studios) Outbeat Produce:{RESET} {GREEN}MProcs-12.0-s (v{version_checker.PACKAGE_VERSION}){RESET} {ORANGE}by tderk{RESET} - {ORANGE}Established Lpro.py (Life-pro) and Destiny [2024]{RESET}"
220
220
  title2 = f"| {BLUE}Indicative: @USVirtualUni && © Medicine, Computable (N_2025) && FNTCCI{RESET} |"
221
221
  title3 = f"{ORANGE}All Rights Reserved{RESET} - {BLUE}Medicci.ca{RESET}"
222
222
  title4 = f"- {RED}(P0cket Un1-Ver$e){RESET}"
@@ -426,7 +426,7 @@ def main():
426
426
  print()
427
427
  print(" FNTCCI: tinien [single space/**], ntag, fcci-monitor [fstart/fcci] | synthesis: xcbmp, xcbmpc, xhbmp, xhbmpc, xjbmp, xjbmpc, xfbmp")
428
428
  print()
429
- print(" | Medicines (MIMS/mim), Medicals (M), equips, rpg, Bible [bb/BB], random hospital [rhosp/ghosthunt], jburner/jtburner, cburner/ctburner, ruh-time-call [RTC], ruh-monitor [rmonitor], insta ghost write [IGW], sound stream [sst], ghost write/code [GW], proverbs [ps], c-characters [cchar/cc], ch-monitor [CHM], kata-monitor [KM], jamo-monitor [JM], speak [spk], map, threads, zuz [pp], call, time-call [TC], message [lh], [echo], [fuzz], alerts, light incense, prayer, dhammapada, message-scan [scan], ascii [double space], archery, value, tag / atag, monitor-start [mstart], acad-monitor (astart), weapon start [wstart], oscillator/time-oscillator [oscill/toscill], MedProc AI [MAI], MedProcCont [MAIc/MPC], burner-start/time-burner [burn/tburn], burner-search [b-search], Earth Science (SCI), psychology (psyc), Patient Simu, biology (B), chemistry (ch), legal terms (Law), change username [username/user], print time, (ai) auto-mat [AAM], [ID / IDC], the heart sutra, herbs/herbals, maryjane [mj], degree/major, frames [fps], police (prad), CAI Environments (CAI/GES), time-monitor [tmonitor], speech-time-monitor [stmonitor], guard, Programs [PROGR], generate string [gstring]")
429
+ print(" | Medicines (MIMS/mim), Medicals (M), equips, rpg, Bible [bb/BB], random hospital [rhosp/ghosthunt], jburner/jtburner, cburner/ctburner, ruh-time-call [RTC], ruh-monitor [rmonitor], insta ghost write [IGW/+N, e.g. +3], sound stream [sst], ghost write/code [GW/+], proverbs [ps], c-characters [cchar/cc], ch-monitor [CHM], kata-monitor [KM], jamo-monitor [JM], speak [spk], map, threads, zuz [pp], call, time-call [TC], message [lh], [echo], [fuzz], alerts, light incense, prayer, dhammapada, message-scan [scan], ascii [double space], archery, value, tag / atag, monitor-start [mstart], acad-monitor (astart), weapon start [wstart], oscillator/time-oscillator [oscill/toscill], MedProc AI [MAI], MedProcCont [MAIc/MPC], burner-start/time-burner [burn/tburn], burner-search [b-search], Earth Science (SCI), psychology (psyc), Patient Simu, biology (B), chemistry (ch), legal terms (Law), change username/user [name], print time, (ai) auto-mat [AAM], [ID / IDC], the heart sutra, herbs/herbals, maryjane [mj], degree/major, frames [fps], police (prad), CAI Environments (CAI/GES), time-monitor [tmonitor], speech-time-monitor [stmonitor], guard, Programs [PROGR], generate string [gstring]")
430
430
  print()
431
431
  print(" | pray, sleep, eat, meditate, draw card, slot, find coins, search for items, fly, drink coffee, drink tea, surf, skate, art, give alms, radio, hack, brawl, souls, hipster tarot, mp3, spar, train, rest, psalms, haiku, karate, koans, color key, doodling, BUMP, MA, Magic, zen melody, monopoly, stats, progress, collections, football, c, entry, posting, koran, heBrews, Clearance, MiCasa, stuff, worship, License, climb, teletubby, {[muslim prayer] fajr (before dawn) / dhuhr (noon) / asr (late afternoon) / maghrib (at sunset) / isha (nighttime)}")
432
432
 
@@ -2916,15 +2916,21 @@ def main():
2916
2916
  print()
2917
2917
  print("\nStopped by user.")
2918
2918
 
2919
- def insta_ghost_write():
2919
+ def insta_ghost_write(count=None):
2920
2920
  nano = (diction)
2921
- while True:
2921
+ if count is None:
2922
+ while True:
2923
+ try:
2924
+ number = int(input("Indicate number of (i-GhostWrite) results: "))
2925
+ except ValueError:
2926
+ print("Invalid value")
2927
+ else:
2928
+ break
2929
+ else:
2922
2930
  try:
2923
- number = int(input("Indicate number of (i-GhostWrite) results: "))
2924
- except ValueError:
2925
- print("Invalid value")
2926
- else:
2927
- break
2931
+ number = int(count)
2932
+ except (TypeError, ValueError):
2933
+ number = 1
2928
2934
  number
2929
2935
  print()
2930
2936
  for _ in range(number):
@@ -5763,8 +5769,12 @@ def main():
5763
5769
  if choice == 'profile' or choice == 'Profile':
5764
5770
  profile()
5765
5771
 
5766
- if choice == 'change username' or choice == 'username' or choice == 'user':
5767
- change_username()
5772
+ if (choice == 'change username' or choice == 'username'
5773
+ or choice == 'user' or choice.startswith('user ')
5774
+ or choice.startswith('username ')
5775
+ or choice.startswith('change username ')):
5776
+ parts = choice.split(None, 1)
5777
+ change_username(parts[1].strip() if len(parts) > 1 else None)
5768
5778
  return "continue"
5769
5779
 
5770
5780
  if choice == 'alerts' or choice == 'Alerts':
@@ -6251,6 +6261,12 @@ def main():
6251
6261
  if choice == "insta ghost write" or choice == "Insta Ghost Write" or choice == "IGW" or choice == "igw" or choice == "insta ghost code" or choice == "iGW" or choice == "insta GW" or choice == "insta gw":
6252
6262
  insta_ghost_write()
6253
6263
 
6264
+ if choice.strip() == "+":
6265
+ ghost_write()
6266
+
6267
+ if choice.strip().startswith("+") and choice.strip()[1:].strip().isdigit():
6268
+ insta_ghost_write(int(choice.strip()[1:].strip()))
6269
+
6254
6270
  if choice == "soundstream" or choice == "sst" or choice == "SST" or choice == "sound stream" or choice == "stream sound" or choice == "streamsound":
6255
6271
  sound_stream()
6256
6272