MProcs 9.0__tar.gz → 9.1__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.
- {mprocs-9.0/src/MProcs.egg-info → mprocs-9.1}/PKG-INFO +5 -5
- {mprocs-9.0 → mprocs-9.1}/README.md +4 -4
- {mprocs-9.0 → mprocs-9.1}/pyproject.toml +2 -2
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/__init__.py +1 -1
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/tui.py +292 -103
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/version_checker.py +1 -1
- {mprocs-9.0 → mprocs-9.1/src/MProcs.egg-info}/PKG-INFO +5 -5
- {mprocs-9.0 → mprocs-9.1}/LICENSE +0 -0
- {mprocs-9.0 → mprocs-9.1}/MANIFEST.in +0 -0
- {mprocs-9.0 → mprocs-9.1}/setup.cfg +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/__main__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/LICENSE +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/agent.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/ai_image.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/acadlist.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/ahb.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/bible1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/biology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/chemistry1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/chi_chars.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/degrees1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/dhammapada1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/diction.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/fcci.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/hospitals.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/jamo.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/katakana.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/koran1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/legal_terms1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/lexicon.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/medicals1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/mims.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/proverbs.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/psychology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/science1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/strains.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/acadlist.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/ahb.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/bible1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/biology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/chemistry1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/chi_chars.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/degrees1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/dhammapada1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/diction.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/fcci.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/hospitals.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/jamo.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/katakana.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/koran1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/legal_terms1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/medicals1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/mims.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/proverbs.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/psychology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/science1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/strains.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/tracks.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/themed/verses1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/tracks.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data/verses1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/data_loader.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/deepseek_ai.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/drills.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/ghostwrite.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/gwf.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/keys.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/lexicon.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/lpro.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/lpro_s.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/main.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/ops.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/program.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/scmpy.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/session.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/theme.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/tui.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/version_checker.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/flu0/scripts/wrappers.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/LICENSE +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/agent.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/ai_image.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/acadlist.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/ahb.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/bible1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/biology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/chemistry1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/chi_chars.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/degrees1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/dhammapada1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/diction.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/fcci.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/hospitals.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/jamo.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/katakana.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/koran1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/legal_terms1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/medicals1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/mims.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/proverbs.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/psychology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/science1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/strains.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/acadlist.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/ahb.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/bible1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/biology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/chemistry1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/chi_chars.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/degrees1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/dhammapada1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/diction.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/fcci.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/hospitals.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/jamo.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/katakana.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/koran1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/legal_terms1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/medicals1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/mims.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/proverbs.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/psychology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/science1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/strains.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/tracks.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/themed/verses1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/tracks.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data/verses1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/data_loader.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/deepseek_ai.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/gwf.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/keys.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/lpro.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/lpro_s.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/main.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/scmpy.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/session.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/theme.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/tui.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/version_checker.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/hmptunnel/scripts/wrappers.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/LICENSE +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/__main__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/agent.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/app.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/almanac.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/domains.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/domains_applied.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/encyclopedia.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/lexicon.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/people.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/sources.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/content/timeline.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/acadlist.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/ahb.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/bible1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/biology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/chemistry1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/chi_chars.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/degrees1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/dhammapada1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/diction.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/diction_raw.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/fcci.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/hospitals.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/jamo.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/katakana.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/koran1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/legal_terms1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/manifest.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/medicals1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/mims.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/proverbs.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/psychology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/science1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data/verses1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/data_loader.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/knowledge.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/py.typed +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/technica.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/modules/polyhistor/theme.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/__init__.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/ai_image.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/acadlist.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/ahb.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/bible1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/biology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/chemistry1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/chi_chars.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/degrees1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/dhammapada1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/diction.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/fcci.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/hospitals.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/jamo.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/katakana.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/koran1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/legal_terms1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/medicals1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/mims.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/proverbs.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/psychology1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/science1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/strains.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/tracks.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data/verses1.json +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/data_loader.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/deepseek_ai.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/gwf.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/keys.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/lpro.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/lpro_s.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/main.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/native.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/scmpy.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/session.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs/scripts/wrappers.py +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs.egg-info/SOURCES.txt +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs.egg-info/dependency_links.txt +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs.egg-info/entry_points.txt +0 -0
- {mprocs-9.0 → mprocs-9.1}/src/MProcs.egg-info/requires.txt +0 -0
- {mprocs-9.0 → mprocs-9.1}/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.
|
|
3
|
+
Version: 9.1
|
|
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.
|
|
22
|
+
## MProcs // Terminal Suite (11.0 / app 9.1)
|
|
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.
|
|
154
|
+
python -m build # creates dist/mprocs-9.1.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.
|
|
290
|
+
- `pyproject.toml` application version `9.1` (suite version `11.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.
|
|
346
|
+
- **Versions:** MProcs `11.0`; application package `9.1`.
|
|
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.
|
|
5
|
+
## MProcs // Terminal Suite (11.0 / app 9.1)
|
|
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.
|
|
137
|
+
python -m build # creates dist/mprocs-9.1.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.
|
|
273
|
+
- `pyproject.toml` application version `9.1` (suite version `11.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.
|
|
329
|
+
- **Versions:** MProcs `11.0`; application package `9.1`.
|
|
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.
|
|
7
|
+
version = "9.1"
|
|
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"
|
|
@@ -23,7 +23,7 @@ gwf = "MProcs.scripts.gwf:run"
|
|
|
23
23
|
|
|
24
24
|
[tool.mprocs]
|
|
25
25
|
version = "11.0"
|
|
26
|
-
app-version = "9.
|
|
26
|
+
app-version = "9.1"
|
|
27
27
|
|
|
28
28
|
[project.optional-dependencies]
|
|
29
29
|
dev = ["pytest", "black", "flake8"]
|
|
@@ -1135,9 +1135,29 @@ class MProcsTUI:
|
|
|
1135
1135
|
avail = max(0, w - rw - 1)
|
|
1136
1136
|
lw = _str_width(left)
|
|
1137
1137
|
if lw > avail:
|
|
1138
|
-
|
|
1138
|
+
candidates = [
|
|
1139
|
+
' %s | %s (v%s) ' % (version_checker.PACKAGE_NAME,
|
|
1140
|
+
version_checker.MPROCS_VERSION,
|
|
1141
|
+
version_checker.PACKAGE_VERSION),
|
|
1142
|
+
' %s | v%s ' % (version_checker.PACKAGE_NAME,
|
|
1143
|
+
version_checker.PACKAGE_VERSION),
|
|
1144
|
+
' %s ' % version_checker.PACKAGE_NAME,
|
|
1145
|
+
]
|
|
1146
|
+
for candidate in candidates:
|
|
1147
|
+
if _str_width(candidate) <= avail:
|
|
1148
|
+
left = candidate
|
|
1149
|
+
break
|
|
1150
|
+
else:
|
|
1151
|
+
left = left[:avail]
|
|
1152
|
+
lw = _str_width(left)
|
|
1153
|
+
if lw + 1 + rw > w:
|
|
1154
|
+
right = now.strftime('%H:%M')
|
|
1155
|
+
rw = _str_width(right)
|
|
1156
|
+
if lw + rw >= w:
|
|
1157
|
+
right = ''
|
|
1158
|
+
rw = 0
|
|
1139
1159
|
std.addstr(0, 0, left, a)
|
|
1140
|
-
if rw < w:
|
|
1160
|
+
if rw and rw < w:
|
|
1141
1161
|
std.addstr(0, w - rw, right, a)
|
|
1142
1162
|
std.move(1, 0)
|
|
1143
1163
|
std.clrtoeol()
|
|
@@ -1455,33 +1475,82 @@ class MProcsTUI:
|
|
|
1455
1475
|
except curses.error:
|
|
1456
1476
|
break
|
|
1457
1477
|
|
|
1458
|
-
def put(row, col, text, attr=0):
|
|
1478
|
+
def put(row, col, text, attr=0, limit=None):
|
|
1479
|
+
if row < 2 or row >= h or col < 0:
|
|
1480
|
+
return
|
|
1481
|
+
maxw = (limit if limit is not None else w) - col
|
|
1482
|
+
if maxw <= 0:
|
|
1483
|
+
return
|
|
1484
|
+
text = str(text)[:maxw]
|
|
1485
|
+
if not text:
|
|
1486
|
+
return
|
|
1459
1487
|
try:
|
|
1460
|
-
|
|
1461
|
-
return
|
|
1462
|
-
if col + _str_width(text) <= w:
|
|
1463
|
-
std.addstr(row, col, text, attr)
|
|
1488
|
+
std.addstr(row, col, text, attr)
|
|
1464
1489
|
except curses.error:
|
|
1465
1490
|
pass
|
|
1466
1491
|
|
|
1467
|
-
def
|
|
1468
|
-
|
|
1492
|
+
def wrap(text, width):
|
|
1493
|
+
width = max(1, int(width))
|
|
1494
|
+
words = str(text).split()
|
|
1495
|
+
if not words:
|
|
1496
|
+
return ['']
|
|
1497
|
+
lines = []
|
|
1498
|
+
current = ''
|
|
1499
|
+
for word in words:
|
|
1500
|
+
while len(word) > width:
|
|
1501
|
+
if current:
|
|
1502
|
+
lines.append(current)
|
|
1503
|
+
current = ''
|
|
1504
|
+
lines.append(word[:width])
|
|
1505
|
+
word = word[width:]
|
|
1506
|
+
trial = (current + ' ' + word).strip()
|
|
1507
|
+
if current and len(trial) > width:
|
|
1508
|
+
lines.append(current)
|
|
1509
|
+
current = word
|
|
1510
|
+
else:
|
|
1511
|
+
current = trial
|
|
1512
|
+
if current:
|
|
1513
|
+
lines.append(current)
|
|
1514
|
+
return lines or ['']
|
|
1469
1515
|
|
|
1470
|
-
def clip(text):
|
|
1471
|
-
return
|
|
1516
|
+
def clip(text, width):
|
|
1517
|
+
return str(text)[:max(0, int(width))]
|
|
1472
1518
|
|
|
1473
1519
|
compact = h < 24
|
|
1474
|
-
|
|
1520
|
+
wide = w >= 100 and not compact
|
|
1521
|
+
panel_w = 0
|
|
1522
|
+
panel_x = 0
|
|
1523
|
+
menu_w = w - 1
|
|
1524
|
+
if wide:
|
|
1525
|
+
panel_w = min(46, max(28, w // 3))
|
|
1526
|
+
panel_x = w - panel_w - 2
|
|
1527
|
+
menu_w = panel_x - 2
|
|
1528
|
+
|
|
1529
|
+
title = ' MProcs // TERMINAL LAUNCHER '
|
|
1475
1530
|
version = 'v%s ' % version_checker.PACKAGE_VERSION
|
|
1476
|
-
|
|
1477
|
-
|
|
1531
|
+
if len(title) + len(version) + 2 > w:
|
|
1532
|
+
title = ' MProcs // LAUNCHER '
|
|
1533
|
+
if len(title) + len(version) + 2 > w:
|
|
1534
|
+
title = ' MProcs '
|
|
1535
|
+
if len(title) + len(version) + 2 > w:
|
|
1536
|
+
version = ''
|
|
1537
|
+
put(2, 0, title, curses.A_BOLD | curses.A_REVERSE)
|
|
1538
|
+
if version:
|
|
1539
|
+
put(2, max(0, w - len(version) - 1), version,
|
|
1540
|
+
curses.A_BOLD | curses.A_REVERSE)
|
|
1541
|
+
|
|
1542
|
+
start = 4
|
|
1478
1543
|
if self.menu_depth == 0 and not compact and self.proverb:
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1544
|
+
quote = 'hmptunnel // PROVERBS: \u201c%s\u201d' % self.proverb
|
|
1545
|
+
qlines = wrap(quote, max(8, w - 4))
|
|
1546
|
+
if 4 + len(qlines) + 1 <= h - 8:
|
|
1547
|
+
row = 4
|
|
1548
|
+
for line in qlines:
|
|
1549
|
+
put(row, 2, line,
|
|
1550
|
+
self._accent_attr('jade', bold=False) | curses.A_DIM)
|
|
1551
|
+
row += 1
|
|
1552
|
+
start = row + 1
|
|
1553
|
+
if start == 4:
|
|
1485
1554
|
if self.menu_subtitle:
|
|
1486
1555
|
subtitle = ' ' + self.menu_subtitle
|
|
1487
1556
|
elif self.menu_depth == 0:
|
|
@@ -1490,109 +1559,229 @@ class MProcsTUI:
|
|
|
1490
1559
|
else:
|
|
1491
1560
|
subtitle = ''
|
|
1492
1561
|
if subtitle:
|
|
1493
|
-
|
|
1494
|
-
|
|
1562
|
+
slines = wrap(subtitle, max(8, w - 4))[:2]
|
|
1563
|
+
for i, line in enumerate(slines):
|
|
1564
|
+
put(3 + i, 0, line, curses.A_DIM)
|
|
1565
|
+
start = 3 + len(slines)
|
|
1566
|
+
else:
|
|
1567
|
+
start = 4
|
|
1568
|
+
if not compact:
|
|
1569
|
+
start = max(start, 5)
|
|
1570
|
+
start = max(3, min(start, h - 4))
|
|
1495
1571
|
|
|
1496
|
-
|
|
1572
|
+
physical = []
|
|
1573
|
+
ranges = {}
|
|
1497
1574
|
current_group = None
|
|
1498
1575
|
for idx, app in enumerate(self.apps):
|
|
1499
1576
|
group = getattr(app, 'group', 'core')
|
|
1500
1577
|
if group != current_group:
|
|
1501
|
-
rows.append(('group', group))
|
|
1502
1578
|
current_group = group
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
slots = max(1, h - start - 3)
|
|
1506
|
-
selected_pos = 0
|
|
1507
|
-
for pos, (kind, payload) in enumerate(rows):
|
|
1508
|
-
if kind == 'app' and payload == self.menu_index:
|
|
1509
|
-
selected_pos = pos
|
|
1510
|
-
break
|
|
1511
|
-
offset = max(0, selected_pos - slots + 1) if len(rows) > slots else 0
|
|
1512
|
-
visible = rows[offset:offset + slots]
|
|
1513
|
-
|
|
1514
|
-
y = start
|
|
1515
|
-
for kind, payload in visible:
|
|
1516
|
-
if kind == 'group':
|
|
1517
|
-
if payload == 'view' and self.menu_group_title:
|
|
1518
|
-
title = self.menu_group_title
|
|
1579
|
+
if group == 'view' and self.menu_group_title:
|
|
1580
|
+
gtitle = self.menu_group_title
|
|
1519
1581
|
else:
|
|
1520
|
-
|
|
1521
|
-
label = ' \u2500\u2500 %s ' %
|
|
1522
|
-
fill = max(0,
|
|
1523
|
-
if
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
else:
|
|
1528
|
-
accent = 'jade'
|
|
1529
|
-
put(y, 0, clip(label + '\u2500' * fill), self._accent_attr(accent))
|
|
1530
|
-
y += 1
|
|
1531
|
-
continue
|
|
1532
|
-
|
|
1533
|
-
app = self.apps[payload]
|
|
1534
|
-
selected = payload == self.menu_index
|
|
1535
|
-
accent = getattr(app, 'accent', 'white')
|
|
1536
|
-
shortcut = self._menu_shortcut(payload, app)
|
|
1582
|
+
gtitle = _GROUP_TITLES.get(group, group.upper())
|
|
1583
|
+
label = ' \u2500\u2500 %s ' % gtitle
|
|
1584
|
+
fill = max(0, menu_w - len(label))
|
|
1585
|
+
accent = (self.menu_accent if group == 'view'
|
|
1586
|
+
else ('gold' if group == 'core' else 'jade'))
|
|
1587
|
+
physical.append((None, clip(label + '\u2500' * fill, menu_w),
|
|
1588
|
+
self._accent_attr(accent)))
|
|
1537
1589
|
if self.menu_depth:
|
|
1538
|
-
name = getattr(app, 'display_name', None)
|
|
1590
|
+
name = (getattr(app, 'display_name', None)
|
|
1591
|
+
or getattr(app, 'name', '') or '')
|
|
1539
1592
|
else:
|
|
1540
1593
|
name = getattr(app, 'name', '') or ''
|
|
1541
1594
|
detail = getattr(app, 'description', '') or getattr(app, 'tagline', '')
|
|
1542
|
-
|
|
1595
|
+
shortcut = self._menu_shortcut(idx, app)
|
|
1596
|
+
marker = '\u25b8' if idx == self.menu_index else ' '
|
|
1543
1597
|
prefix = ' %s %-2s ' % (marker, shortcut)
|
|
1544
|
-
|
|
1545
|
-
name_width = max(4,
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1598
|
+
indent = ' ' * len(prefix)
|
|
1599
|
+
name_width = max(4, menu_w - len(prefix))
|
|
1600
|
+
nlines = wrap(name, name_width)
|
|
1601
|
+
single = False
|
|
1602
|
+
if len(nlines) == 1 and detail:
|
|
1603
|
+
pad = min(22, name_width)
|
|
1604
|
+
if len(prefix) + pad + 2 + len(detail) <= menu_w:
|
|
1605
|
+
nlines = [nlines[0].ljust(pad)]
|
|
1606
|
+
single = True
|
|
1607
|
+
item_start = len(physical)
|
|
1608
|
+
for n, line in enumerate(nlines):
|
|
1609
|
+
text = (prefix if n == 0 else indent) + line
|
|
1610
|
+
physical.append((idx, clip(text, menu_w),
|
|
1611
|
+
self._accent_attr(getattr(app, 'accent', 'white'))))
|
|
1612
|
+
if detail:
|
|
1613
|
+
if single:
|
|
1614
|
+
physical[-1] = (idx, physical[-1][1] + ' ' + detail,
|
|
1615
|
+
physical[-1][2])
|
|
1616
|
+
else:
|
|
1617
|
+
dindent = ' ' * len(prefix)
|
|
1618
|
+
dlines = wrap(detail, max(4, menu_w - len(dindent)))
|
|
1619
|
+
if dlines and physical and physical[-1][0] == idx:
|
|
1620
|
+
last_text = physical[-1][1]
|
|
1621
|
+
if len(last_text) + 2 + len(dlines[0]) <= menu_w:
|
|
1622
|
+
physical[-1] = (idx, last_text + ' ' + dlines[0],
|
|
1623
|
+
physical[-1][2])
|
|
1624
|
+
dlines = dlines[1:]
|
|
1625
|
+
for line in dlines:
|
|
1626
|
+
physical.append((idx, clip(dindent + line, menu_w),
|
|
1627
|
+
curses.A_DIM))
|
|
1628
|
+
ranges[idx] = (item_start, len(physical) - 1)
|
|
1629
|
+
|
|
1630
|
+
if w < 80:
|
|
1631
|
+
hint = (' \u2191\u2193 \u00b7 Enter \u00b7 1-0/P/F/J \u00b7 '
|
|
1632
|
+
'u update \u00b7 q quit')
|
|
1633
|
+
else:
|
|
1634
|
+
hint = (' \u2191\u2193 move \u00b7 Enter launch \u00b7 '
|
|
1635
|
+
'1-0/P/F/J/a-g \u00b7 u update \u00b7 '
|
|
1636
|
+
'Esc/Ctrl-G launcher \u00b7 q quit')
|
|
1637
|
+
hint_lines = wrap(hint, max(8, w - 2))[:2]
|
|
1638
|
+
|
|
1639
|
+
if 0 <= self.menu_index < len(self.apps):
|
|
1640
|
+
sel = self.apps[self.menu_index]
|
|
1641
|
+
sel_title = (getattr(sel, 'display_name', None)
|
|
1642
|
+
or getattr(sel, 'title', None)
|
|
1643
|
+
or getattr(sel, 'name', ''))
|
|
1644
|
+
sel_detail = (getattr(sel, 'tagline', '')
|
|
1645
|
+
or getattr(sel, 'description', ''))
|
|
1646
|
+
if w < 70 or not sel_detail:
|
|
1647
|
+
status = ' ' + sel_title
|
|
1555
1648
|
else:
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1649
|
+
status = ' %s \u00b7 %s' % (sel_title, sel_detail)
|
|
1650
|
+
status_lines = wrap(status, max(8, w - 2))[:2]
|
|
1651
|
+
else:
|
|
1652
|
+
status_lines = []
|
|
1653
|
+
|
|
1654
|
+
hint_y = (h - 1) - len(hint_lines)
|
|
1655
|
+
status_y = hint_y - len(status_lines)
|
|
1656
|
+
update_y = None
|
|
1657
|
+
if self.menu_depth == 0 and not compact and h >= 25:
|
|
1658
|
+
update_y = status_y - 1
|
|
1659
|
+
content_bottom = (update_y - 1) if update_y is not None else (status_y - 1)
|
|
1660
|
+
|
|
1661
|
+
avail = max(1, content_bottom - start + 1)
|
|
1662
|
+
total = len(physical)
|
|
1663
|
+
if total <= avail:
|
|
1664
|
+
offset = 0
|
|
1665
|
+
else:
|
|
1666
|
+
s, e = ranges.get(self.menu_index, (0, 0))
|
|
1667
|
+
if e - s + 1 >= avail:
|
|
1668
|
+
offset = s
|
|
1669
|
+
else:
|
|
1670
|
+
offset = max(0, e - avail + 1)
|
|
1671
|
+
if offset > s:
|
|
1672
|
+
offset = s
|
|
1673
|
+
offset = max(0, min(offset, total - avail))
|
|
1674
|
+
visible = physical[offset:offset + avail]
|
|
1675
|
+
|
|
1676
|
+
y = start
|
|
1677
|
+
for idx, text, attr in visible:
|
|
1678
|
+
if idx is not None and idx == self.menu_index:
|
|
1679
|
+
line = text[:menu_w].ljust(max(1, menu_w))
|
|
1680
|
+
put(y, 0, line,
|
|
1681
|
+
self._accent_attr(getattr(self.apps[idx], 'accent', 'white'))
|
|
1682
|
+
| curses.A_REVERSE)
|
|
1683
|
+
else:
|
|
1684
|
+
put(y, 0, text, attr)
|
|
1560
1685
|
y += 1
|
|
1561
1686
|
|
|
1562
|
-
|
|
1563
|
-
if len(rows) > slots:
|
|
1564
|
-
scroll = ' %d-%d/%d ' % (offset + 1, min(offset + slots, len(rows)), len(rows))
|
|
1565
|
-
if 0 <= self.menu_index < len(self.apps):
|
|
1687
|
+
if panel_w and 0 <= self.menu_index < len(self.apps):
|
|
1566
1688
|
app = self.apps[self.menu_index]
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1689
|
+
accent = getattr(app, 'accent', 'white')
|
|
1690
|
+
ptitle = (getattr(app, 'display_name', None)
|
|
1691
|
+
or getattr(app, 'title', None)
|
|
1692
|
+
or getattr(app, 'name', ''))
|
|
1693
|
+
pdetail = getattr(app, 'description', '') or getattr(app, 'tagline', '')
|
|
1694
|
+
if getattr(app, 'native_tui', False):
|
|
1695
|
+
kind = 'original TUI'
|
|
1696
|
+
elif getattr(app, 'is_submenu', False):
|
|
1697
|
+
kind = 'launcher board'
|
|
1698
|
+
elif getattr(app, 'group', '') == 'core':
|
|
1699
|
+
kind = 'MProcs core'
|
|
1700
|
+
else:
|
|
1701
|
+
kind = 'terminal'
|
|
1702
|
+
sep_x = panel_x - 1
|
|
1703
|
+
for row in range(start, max(start, content_bottom + 1)):
|
|
1704
|
+
put(row, sep_x, '\u2502', curses.A_DIM)
|
|
1705
|
+
py = start
|
|
1706
|
+
put(py, panel_x, 'SELECTED', curses.A_DIM)
|
|
1707
|
+
py += 2
|
|
1708
|
+
for line in wrap(ptitle, panel_w):
|
|
1709
|
+
if py > content_bottom:
|
|
1710
|
+
break
|
|
1711
|
+
put(py, panel_x, clip(line, panel_w),
|
|
1712
|
+
self._accent_attr(accent))
|
|
1713
|
+
py += 1
|
|
1714
|
+
for line in wrap(kind, panel_w):
|
|
1715
|
+
if py > content_bottom:
|
|
1716
|
+
break
|
|
1717
|
+
put(py, panel_x, clip(line, panel_w), curses.A_DIM)
|
|
1718
|
+
py += 1
|
|
1719
|
+
py += 1
|
|
1720
|
+
for line in wrap(pdetail, panel_w):
|
|
1721
|
+
if py > content_bottom - 4:
|
|
1722
|
+
break
|
|
1723
|
+
put(py, panel_x, clip(line, panel_w), curses.A_DIM)
|
|
1724
|
+
py += 1
|
|
1725
|
+
py += 1
|
|
1726
|
+
for label, value in (
|
|
1727
|
+
('shortcut', self._menu_shortcut(self.menu_index, app)),
|
|
1728
|
+
('group', getattr(app, 'group', 'core')),
|
|
1729
|
+
):
|
|
1730
|
+
if py > content_bottom:
|
|
1731
|
+
break
|
|
1732
|
+
put(py, panel_x,
|
|
1733
|
+
clip('%-9s %s' % (label, value), panel_w), curses.A_DIM)
|
|
1734
|
+
py += 1
|
|
1735
|
+
sy = max(py + 1, content_bottom - 4)
|
|
1736
|
+
if sy <= content_bottom:
|
|
1737
|
+
put(sy, panel_x, 'SUITE', curses.A_DIM)
|
|
1738
|
+
sy += 1
|
|
1739
|
+
for line in (version_checker.MPROCS_VERSION,
|
|
1740
|
+
'app ' + version_checker.PACKAGE_VERSION,
|
|
1741
|
+
'%d terminals' % len(self.root_apps)):
|
|
1742
|
+
if sy > content_bottom:
|
|
1743
|
+
break
|
|
1744
|
+
put(sy, panel_x, clip(line, panel_w), curses.A_DIM)
|
|
1745
|
+
sy += 1
|
|
1746
|
+
if sy <= content_bottom and self.update_available:
|
|
1747
|
+
put(sy, panel_x,
|
|
1748
|
+
clip('update v%s' % self.update_latest, panel_w),
|
|
1749
|
+
self._accent_attr('gold'))
|
|
1750
|
+
|
|
1751
|
+
scroll = None
|
|
1752
|
+
if total > avail:
|
|
1753
|
+
vis_items = [i for i, _, _ in visible if i is not None]
|
|
1754
|
+
if vis_items:
|
|
1755
|
+
scroll = ' %d-%d/%d ' % (min(vis_items) + 1,
|
|
1756
|
+
max(vis_items) + 1,
|
|
1757
|
+
len(self.apps))
|
|
1577
1758
|
else:
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1759
|
+
scroll = ' %d/%d ' % (self.menu_index + 1, len(self.apps))
|
|
1760
|
+
|
|
1761
|
+
status_attr = curses.A_DIM
|
|
1762
|
+
if 0 <= self.menu_index < len(self.apps):
|
|
1763
|
+
status_attr = self._accent_attr(
|
|
1764
|
+
getattr(self.apps[self.menu_index], 'accent', 'white'))
|
|
1765
|
+
for i, line in enumerate(status_lines):
|
|
1766
|
+
put(status_y + i, 0, clip(line, w - 1), status_attr)
|
|
1767
|
+
if scroll:
|
|
1768
|
+
put(status_y, max(0, w - len(scroll) - 1), scroll, curses.A_DIM)
|
|
1769
|
+
|
|
1770
|
+
if update_y is not None:
|
|
1581
1771
|
if self.update_available:
|
|
1582
|
-
|
|
1583
|
-
|
|
1772
|
+
uline = (' u update available: v%s \u00b7 '
|
|
1773
|
+
'install / restart' % self.update_latest)
|
|
1774
|
+
put(update_y, 0, clip(uline, w - 1), self._accent_attr('gold'))
|
|
1584
1775
|
elif not self.update_check_done:
|
|
1585
|
-
put(
|
|
1776
|
+
put(update_y, 0, clip(' u checking for updates ...', w - 1),
|
|
1777
|
+
curses.A_DIM)
|
|
1586
1778
|
else:
|
|
1587
|
-
put(
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
hint = (' \u2191\u2193 move \u00b7 Enter launch \u00b7 1-0/P/F/J/a-g \u00b7 '
|
|
1594
|
-
'u update \u00b7 Esc/Ctrl-G launcher \u00b7 q quit')
|
|
1595
|
-
put(h - 2, 0, clip(hint), curses.A_DIM)
|
|
1779
|
+
put(update_y, 0,
|
|
1780
|
+
clip(' u check for updates / install / restart', w - 1),
|
|
1781
|
+
curses.A_DIM)
|
|
1782
|
+
|
|
1783
|
+
for i, line in enumerate(hint_lines):
|
|
1784
|
+
put(hint_y + i, 0, clip(line, w - 1), curses.A_DIM)
|
|
1596
1785
|
|
|
1597
1786
|
def _draw_input(self):
|
|
1598
1787
|
if self.menu_mode:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MProcs
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.1
|
|
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.
|
|
22
|
+
## MProcs // Terminal Suite (11.0 / app 9.1)
|
|
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.
|
|
154
|
+
python -m build # creates dist/mprocs-9.1.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.
|
|
290
|
+
- `pyproject.toml` application version `9.1` (suite version `11.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.
|
|
346
|
+
- **Versions:** MProcs `11.0`; application package `9.1`.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|