Skip to content

Releases: pineapple-ooo/MINXG-Beta

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 28 Jun 06:24

[0.14.0] - 2026-06-28 - Polyglot expansion + gateway hardening + think UX + extension manifest

Highlights

  • Open Gateway fully restored. Rewrote gateway/server.py wiring so
    inference + RAG + router + runner + workspace all consume a single
    GatewayConfig (loaded from minxg._config); removed ad-hoc env-var
    forks. Added gateway/channels.py with a ChannelManager,
    MemoryChannel, and HTTPChannel so the channels section in
    config/gateway.yaml actually drives inbound surfaces (not only the
    REST server). Reference taken from /storage/emulated/0/文件/mmm/gateway
    patterns (channel/manager), implemented fresh on top of MINXG's own
    config/state surfaces.
  • Chat "think" tags. AI thinking is now wrapped in [thinking]...[/thinking]
    in terminal/chat output so users can tell reasoning from response.
  • AI identity polish. Removed the redundant "You:" prompt label from
    multiligua_cli/interactive.py and multiligua_cli/terminal_chat.py;
    the prompt now uses a neutral arrow () matching tui_chat.py.
  • Wizard/config flicker killed. The MinxgMenu widget in
    multiligua_cli/wizard_ui.py redraws in place with cursor-up/erase
    sequences instead of clearing the whole screen.
  • Centralised config bump. VERSION lives in minxg/_version.py only;
    pyproject reads it via setuptools dynamic. Bumps are one-line edits and
    the minxg/__init__.py docstring now echoes the same value.
  • Polyglot activation. Reactivated C/C++/Go paths via real subprocess
    bridges (g++/clang++, go run) that compile/run shipped source
    assets under minxg/contracts/runtime/assets; added first-class adapters
    for WebAssembly (.wat + wasmtime / arithmetic emulator), R
    (.R bridge + jsonlite), Datalog (.lp + clingo / pyDatalog),
    and Julia (.jl bridge + JSON.jl). Each adapter detects its own
    runtime availability and degrades cleanly when missing — manifest-driven
    discovery via minxg polyglot-manifest.
  • New experimental verbs. minxg contract, minxg polyglot-manifest,
    minxg think toggle, and minxg ext-reload now work end-to-end.
    ext-reload uses the new extensions.loader.rescan_all() helper.
  • Self-evolved capability: MINXG Genesis Loop. minxg genesis
    runs propose → mutate → evaluate → crystallise and writes the winning
    candidate to ~/.minxg/genesis/latest.py with a JSON report.

Refactor

  • Removed duplicate from __future__ import annotations in
    gateway/server.py.
  • Normalised minxg/contracts/runtime/_exec.py shared helpers for
    subprocess-based language adapters.

Updates since 0.14.0

  • Polyglot runtime install helpers. New module
    minxg/contracts/runtime/installer.py exposes a 6-language install
    matrix (cpp / go / wasm / r / julia / datalog) with platform-aware
    recipes for termux / linux / macos / windows /
    unknown. The module is pure-data by design: detect_runtime /
    plan_install / render_install_plan never launch subprocesses
    and run_install(..., apply=True) is opt-in via --apply so the
    user is never surprised by an unattended pkg install. Re-exported
    through minxg.contracts.runtime so existing imports stay
    stable.
  • Two new [EXPERIMENTAL] verbs. minxg runtime-plan [<lang>]
    prints the install plan for one language (or every managed
    language when lang is omitted / all). minxg runtime-install [<lang>] --apply runs only the chosen language's
    recipe via sh -c <cmd> with a 10-minute timeout, or stays a
    dry-run JSON view when --apply is absent. Both honour
    --platform so users on a Linux box can preview the Termux /
    macOS recipes and vice versa.
  • minxg doctor polyglot panel. A new Polyglot runtimes
    section reports every managed language's binary, availability, and
    install hint next to the existing Tool cap / Extensions
    panels; it never escalates the doctor exit code past WARN when a
    runtime is missing (the verbosity matches the existing
    polyglot-manifest contract).
  • New tests. tests/test_polyglot_runtime_installer.py (34)
    covers platform_id hermetic across all five platforms,
    per-language detect (R/jsonlite gate, Julia version probe, datalog
    clingo + pyDatalog fallback, wasm optional signal), install plan
    shape, run_install dry-run vs apply via the runner seam, and
    the doctor panel never returns FAIL. Full suite: 467 passed,
    1 skipped.
  • Twin emit now preserves the source function name. The
    TwinConfig.function_name default flipped from the
    placeholder "twin_fn" to the empty-string sentinel
    "", which makes :func:minxg.twin.python_to_rust fall back
    to fn.name on the Python side. The previous default forced
    every caller to wrap and rename — turning the round-trip test in
    tests/test_twin.py into a compile failure that was being
    silently turned into a skip. After the fix, the
    test_python_to_rust_emitted_function_compiles_when_rustc_present
    case compiles a fn main { fn add(...) { ... } } template
    that, when rustc is on PATH, actually returns 7 from
    add(3, 4) instead of skipping.
  • Right-prefix temp dir on Android. rustc -o /tmp/...
    silently aborted on Termux (the symlinked /tmp can't host
    rustc's scratch subdirs); the test now writes the
    intermediate artefact into tempfile.mkdtemp(prefix="minxg_twin_")
    so the same path used by minxg.contracts.runtime._exec.run
    is the one rustc works in.
  • Full suite now skips 0 tests. Before: 1 skipped (the
    silent-failure twin case). After: 468 passed, 0 skipped, 0
    failed.

v0.13.1

Choose a tag to compare

@github-actions github-actions released this 26 Jun 11:15

[0.13.1] - 2026-06-26 - Version bump + GitHub release

Release

  • Bumped version lock across pyproject.toml, minxg/__init__.py,
    README.md, and CHANGELOG.md to 0.13.1.
  • Tagged v0.13.1 and pushed to GitHub.

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 05:17

[0.13.0] - 2026-06-25 - Surface sweep + experimental verbs

Top-level promotion

  • Eight subsystem modules (minxg.twin, minxg.lens, minxg.lossless,
    minxg.self_evolution, minxg.polyglot, minxg.driver, minxg.cap,
    minxg.contracts) are now reachable as top-level attributes
    (import minxg; minxg.twin) — same convention as the six math pillars.
    from minxg.<x> import ... continues to work. Added to minxg/__all__.

Documentation cleanup

  • Deleted the entire docs/archive/ folder (10 files) including
    the obsolete multi-AI negotiation file docs/archive/AGENTS.md
    (formerly used to inject anti-loop directives into AI system prompts).
  • README updates: dead link to phantom docs/OPERATORS.md removed;
    expired # Successfully installed minxg-beta-0.10.0 snippet updated
    to 0.13.0; v0.11.0 stale tag in the experimental surface section
    collapsed to a runtime-truth table; the ga ID-range claim
    5000-5049 corrected to 5000-5046 (the actual registered range).
  • DEVELOPER.md: new "v0.13.0 release notes" section before the historical
    v0.11.0 notes; §12 "Publishing checklist" updated to current numbers.

New [EXPERIMENTAL] CLI verbs (0.13.0)

All five live behind multiligua_cli/experimental.py and broadcast an
[EXPERIMENTAL] minxg <verb> — signature may change banner. They are
exercised by tests/test_experimental_cli.py so a regression breaks CI.

  • minxg bench — local perf snapshot of lossless, driver, twin,
    polyglot, operators, and experimental import path.
  • minxg replay <file> — re-render a markdown chat log (output of
    features.export_to_markdown) back into the TUI-friendly stream.
  • minxg theme [name] — get/set the active TUI theme
    (dark / colorful / minimal); state in ~/.minxg/theme.json.
  • minxg safe-eval <expr> — restricted expression evaluator. Allowed
    builtins: abs, all, any, bool, dict, enumerate, float,
    int, len, list, max, min, pow, range, round, sorted,
    str, sum, tuple, zip. No attribute access, no comprehensions,
    no lambda/import/class.
  • minxg ext-reload --all — rescan extension sources without
    restarting the Python interpreter.

CI / Tests

  • tests/test_experimental_cli.py (NEW, 14 tests) covers every new
    verb plus the top-level-promotion contract for the eight subsystems.
  • tests/test_version_lock.py (NEW, parametric) catches drift between
    pyproject.toml, minxg/__init__.py, README.md, and
    CHANGELOG.md.
  • Bug fixes found during the surface sweep:
    • multiligua_cli/wizard_ui.py — when readchar is missing, the
      module now exposes readchar = None so test introspection paths
      stay defined (instead of AttributeError).
    • tests/test_cap_extra.py::test_cli_cap_check_returns_zero_on_clean_tree_subprocess
      — child interpreter now inherits PYTHONPATH so the unit-under-test
      script can import minxg in dev environments.

Operator registry correctness

  • The README's ID-range claims are now machine-checkable:
    minxg.operators.OPERATOR_REGISTRY.total_operators returns 376
    (11 categories), list_categories() enumerates them, and the six
    mathematical pillars (ga/cat/fiber/topo/chaos/infogeo)
    contribute the documented 306 mathematical IDs.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

v0.12.4

Choose a tag to compare

@github-actions github-actions released this 23 Jun 14:39
Immutable release. Only release title and notes can be modified.

[0.12.4] - 2026-06-22 - MINXG Chat rewrite + flicker-free picker + safe print

MINXG Chat rebuild

  • A proper REPL replaces the old "you > " stub.
    tui_chat() now lives entirely in multiligua_cli/tui_chat.py
    and ships a polished three-region UI: a top status bar
    (provider · model · host · depth/cost), a scrolling conversation
    thread that streams tokens under rich.live, and a
    helper-rich bottom input box. The brand label inside the banner is
    MINXG Chat (formerly the ambiguous "chat CLI") — the change
    is documented in README §Tutorial A.
  • Brand refactor. The hard-coded product name in the chat
    surface, /help, README, and DEVELOPER.md is consolidated under
    tui_chat._BRAND = "MINXG Chat". Updating the brand now means
    changing one constant.
  • Streaming faithful to upstream events.
    _stream consumes text / thinking / tool_call / tool_result / done / error events from NexusOrchestrator.chat_stream and
    renders tool calls as inline → name (Nms) widgets with a
    yellow anti-loop warning line if the safety guard fires.

In-place reconfiguration (no chat restart)

  • New slash commands: /setup, /provider [slug], /model [name], /url [URL], /apikey [KEY], /lang [code],
    /history. They hot-swap the orchestrator, save the config
    atomically (tmp + os.replace), and re-paint the status bar
    without dropping the session.
  • /provider <slug> is non-interactive (omit the slug for the
    picker). /model <name> tries to fetch GET /models from the
    current provider; if the API is reachable, the picker shows the
    real list of available models. If the fetch fails, it falls back
    to the provider's default_model and accepts typed input.
  • /setup reruns the wizard with the existing config as
    defaults
    , then re-renders the chat banner — no more "exit chat
    minxg setup → re-enter chat" round-trip.
  • /apikey is masked before being written to disk, the way
    the wizard has always done it. Naked key payloads no longer leak
    to log files.

Bug fixes

  • MinxgMenu no longer flickers under Termux. The old
    _render forked clear on every arrow-key press and wiped the
    whole scrollback; the new implementation paints in place using
    \033[<n>A (cursor up) + \033[J (erase to end of screen), so
    the chat scrollback stays intact and no full-screen flicker
    shows up under tmux/SSH/screen.
  • print_error / print_success / print_info / print_warning / print_dim no longer crash on user messages that contain
    brackets.
    A new _escape_markup escapes [ and ] in
    inbound strings before handing them to rich, so URLs, exception
    messages and model names with brackets stop raising
    rich.errors.MarkupError inside the chat prompt.

NUANCE alignment

  • The new _save_config (atomic write) centralises every
    one-shot setter that previously hand-rolled yaml.dump
    minxg model <name>, minxg api <url>, minxg key <key>,
    minxg lang <code> now share one error-handling path.
  • All chat-side saves log a friendly Config saved to ... /
    Save failed: <hint> line so the user can see exactly which
    file was touched (and why) — instead of dumping a yaml
    traceback on top of a half-finished wizard panel.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

v0.12.3

Choose a tag to compare

@github-actions github-actions released this 22 Jun 17:22
Immutable release. Only release title and notes can be modified.

[0.12.3] - 2026-06-22 - CLI polish + setup wizard UnboundLocalError fix

Bug fix

  • minxg setup no longer raises UnboundLocalError: cannot access local variable 'run_setup'. The wizard's full-run dispatcher in
    multiligua_cli/main.py was named run_setup, which shadowed the
    same-named import inside main() and made the symbol local —
    the very first invocation from the CLI now hit the classic
    local-before-assignment trap. The dispatcher is renamed to
    cmd_setup, the @ensure_config decorator is removed (wizards
    don't need to recursively invoke themselves), and the resulting
    duplicated banner is dropped because the wizard prints its own
    rich panel. minxg model, minxg api, minxg key, minxg config,
    and minxg status were already fine — only the setup path was
    exposed.

CLI beautification

  • Quiet by default. The Loading tool modules... and
    Registered N tools from new system INFO lines from
    multiling/orchestrator.py no longer print to stderr on every
    command. The logging root now starts at WARNING in interactive
    shells and is bumped to INFO only when minxg -v is passed
    (or MINXG_LOG_LEVEL=DEBUG is exported for diagnostics).
  • Banner shows the real version. The header panel now reads
    MINXG — Five-Pillar Worker Platform v0.12.3 (the
    minxg.VERSION constant is rendered live instead of relying on
    whichever snapshot was last edited into the banner template).
  • Setup wizard ribbon. The wizard banner gets a ◆ tagline vX.Y.Z
    accent line and a setup wizard sub-line so the user knows what the
    screen is for the moment they enter minxg setup.
  • Step counter is correct. TOTAL_STEPS is now 6 (was 5), the
    duplicate step 2 of 5 for the mode prompt is now step 3 of 6,
    the orphaned step 7 of 5 for Browser Search is now step 6 of 6,
    and the dead-step step 8 of 5 Summary banner has been removed in
    favour of a non-step gold "Review your configuration" panel.
    setup_platforms (and the now-redundant comment) is documented as
    a compatibility shim so future readers don't think it ran.
  • Wide-terminal-aware descriptions. Menu descriptions used to be
    hard-truncated to 28 characters. They now size themselves between
    28 and 56 based on shutil.get_terminal_size, so a desktop user
    gets the full provider description while Termux users still keep a
    single-line layout.
  • Setup finishes with a celebration. _post_setup_hints now prints
    a centred ✓ Setup complete panel plus a two-column quick-reference
    grid (minxg, minxg gateway start, minxg doctor, …) so the
    first action after install is obvious.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

v0.12.2

Choose a tag to compare

@github-actions github-actions released this 20 Jun 19:23
Immutable release. Only release title and notes can be modified.

[0.12.2] - 2026-06-21 - PyPI publication + release automation

Published on PyPI

  • minxg-beta is now installable directly from PyPI:
    pip install minxg-beta.
  • Releases are fully automated via .github/workflows/release.yml
    pushing a v*.*.* tag triggers Trusted Publishing (OIDC) for PyPI
    and creates a GitHub Release with the wheel + sdist attached.
    No PyPI API token is stored in the repository.

Housekeeping

  • README: top-of-file PyPI / Downloads / GitHub Release / License badges.
  • README: replaced "PyPI publication is on the roadmap but not yet done"
    with a real pip install minxg-beta block and a Releasing section.
  • pyproject: project description now mentions the PyPI name and
    install command so it surfaces on the PyPI page itself.
  • PyPI metadata: removed retired Topic :: Artificial Intelligence
    classifier (PyPI no longer accepts it).

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

Versioning policy (effective 2026-06-14): MINXG is in pre-1.0
development. Public releases start at 0.10.0; the legacy
1.x numbering on internal commits is retained in git history as
a milestone but is not part of the public release graph.

v0.12.1 — Safety / Memory / Platform-cap / Termux-notify patch

Choose a tag to compare

@pineapple-ooo pineapple-ooo released this 20 Jun 16:58
Immutable release. Only release title and notes can be modified.

v0.12.1 — Safety / Memory / Platform-cap / Termux-notify patch

A backwards-compatible patch over v0.12.0. No public-API removals; all CLI
imports from multiligua_cli.*, multiling.*, and minxg.* still work. The
test count goes 161 → 196 (+35) and four new surfaces are now backed by
real implementations instead of silent fallbacks.

Anti-loop guard (src.ai.safety.guard)

Real module replacing the previous from src.ai... import AntiLoopGuard
path that swallowed ImportError and let the LLM spend user money on a
100-call loop. Three independent ceilings fire, in order, before the call
is dispatched:

  • DepthGuard — hard cap on tool calls per turn (~5 mobile, ~8 desktop)
  • DupDetector — same (name, args) within a window of K
  • CostGuard — wall-clock budget (12 s mobile / 30 s desktop)

A short context injection is surfaced to the model the moment a loop
pattern emerges ("deep into tool-call budget (4/5); repeated the same tool 4× in this turn. Stop calling tools and answer the user.") — see
AntiLoopGuard.get_context_injection().

Multi-tier memory (src.ai.memory.*)

Implementation: entropic_evolution.py + working_memory.py.

  • L0 hot — last 32 turns verbatim, deque + JSONL append log.
  • L1 warm — bag-of-hashes quantised vectors (256-D, 8-bit per dim),
    cosine-sim retrieval, capped to 10 000 items (~ 640 KB).
  • L2 cold — sqlite-backed compressed storage at ~/.minxg/memory.db
    (path overridable via MINXG_L2_DB). Re-hydrated on cold-start so a
    fresh chat session can resume without re-priming.

The engine never throws on input — bad args degrade silently so a chat
never dies on a malformed payload.

Per-platform tool cap (multiling/platform_cap.py)

Platform Cap
android 600
linux 1000
macos 1000
windows 1000
unknown 500

Override at runtime via MINXG_TOOL_CAP. The cap is applied as a prefix
to tools.registry insertion order; first N tools are visible, the rest
are filtered out of get_all_tool_names, get_available_toolsets, and
handle_function_call. The registry keeps all definitions so dropping
is non-destructive and a later opt-in extension can re-expose them.

Termux-API notify (src.ai.notify.termux)

Real Android notifications via termux-notification — only on Termux /
ZeroTermux. Every other platform returns False from the helpers without
ever raising. install.sh grew a final block that hits
notify_task_completed() when MINXG_NOTIFY=1 is set; outside Termux
the block is silent.

MINXG_NOTIFY=1 bash install.sh   # on Termux: real notification
                                 # elsewhere: log line then exit

CLI chat rewrite (multiligua_cli/tui_chat.py)

Three visible regions now: a top status bar (provider / model / host /
depth / cost), the conversation area, and the prompt. Newer banner with
a blocky wordmark that survives weird terminal metric ratios.

New slash commands added:

/memory   memory-tier snapshot (L0/L1/L2 counts)
/doctor   self-check inline
/forget   reset anti-loop counter (escape a wedge)
/reset    reset memory engine

install.sh

  • Step labels re-numbered 1..6 — the previous "8-step" ladder was
    misleading because the two ADB/ROOT auto-detect blocks were dropped
    in 0.11 without re-numbering.
  • cpp_core CMake wiring added in [4/6] so libminxg_core.so and
    libminxg_cpp_json.so are actually built at install time. Before this
    patch, minxg doctor reported native lib WARN native library 'libminxg_core.so' not found on a fresh install.
  • Termux notify integration guarded by MINXG_NOTIFY=1.

Doctor (multiligua_cli/doctor.py)

Adds a "Tool cap" section so the user can see the platform budget at a
glance:

                                    Tool cap
    platform                        OK        android
    tool cap                        OK        600
    active tools                    OK        26 / 26

C/C++ memory safety

  • cpp_wrapper.c:560strcpy(table[...].word, word) replaced with
    memcpy + explicit NUL. Stays in bounds under all current inputs;
    defensive against future bound-slip regressions.
  • tests/asan_harness.c (still in the tree from 0.12.0) verifies
    rc=0 — zero leaks, zero use-after-free, zero OOB — across the
    full C API surface (arena, slab, ring buffer, sha256, url paths,
    tokenize, NCD pair/matrix).

Verification

$ python3 -m pytest tests/ -q
196 passed, 1 skipped in 3.97s

$ bash install.sh --help                # exits 0
[1/6] checking python...                # no longer skips
[2/6] installing python dependencies...
[3/6] registering global command...
[4/6] building native library...        # now actually builds
[5/6] checking python source compiles...
[6/6] extension self-check...

$ minxg doctor
 0 failure(s), 0 warning(s) out of 26 check(s)

See CHANGELOG.md for the full release notes
(entry [0.12.1] - 2026-06-21).

v0.12.0 — Test coverage, experimental flags, install polish

Choose a tag to compare

@pineapple-ooo pineapple-ooo released this 20 Jun 11:55
Immutable release. Only release title and notes can be modified.

v0.12.0 — Test coverage, experimental flags, install polish

Headlines

  • Test suite: 130 → 161 passing (+1 env-skipped, rustc absent
    in Termux sandbox).

    • tests/test_cli_commands.py covers every CLI subcommand and
      flag (zero coverage before).
    • tests/test_experimental_features.py guards the
      [EXPERIMENTAL] labelling on multiligua_cli.features so it
      cannot silently regress.
  • AddressSanitizer harness (tests/asan_harness.c +
    build_asan/libminxg_asan.so) exercises every C entry-point
    under -fsanitize=address. rc=0: zero leaks, zero
    use-after-free, zero OOB.
    Six P3 hardening notes recorded in
    CHANGELOG; none are fixing a present defect.

  • install.sh no longer probes for adb / ROOT. ADB and ROOT
    ship as opt-in extensions (minxg ext add minxg-adb
    / minxg ext add minxg-root). The eight-step ladder collapses
    to a six-step one.

  • multiligua_cli/features.py declares its experimental status
    at module-level and per-method. A warn-once WARNING is emitted
    on first invocation of every experimental symbol. New helper
    list_experimental_exports() returns the canonical set.

  • README gains: Command reference table, Tutorials (A-D),
    Troubleshooting table, and Experimental surface section.
    config.example.yaml published as a sanitised template.

Why v0.12.0 and not v0.11.0

The prior v0.11.0 tag was already on the remote when this
commit landed, and the repo's ref-creation rule blocks recreating
an existing tag. The CHANGELOG entry has been re-titled to
[0.12.0] to mirror this publish; the previous [0.11.0] entry
was renamed to [0.11.0-pre] to keep the version history honest.

Compatibility

Backward-compatible: no public-API removals. Run bash install.sh
on a fresh machine, or pip install -e . from the source tree,
to install. Run minxg doctor to verify the install landed
clean.

See CHANGELOG.md for the full notes.

Verification locally

$ python3 -m pytest tests/ -q
161 passed, 1 skipped in 5.38s

$ ASAN_OPTIONS=halt_on_error=1:detect_leaks=1 \
  LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib \
  ./asan_harness   # built from tests/asan_harness.c
all paths exercised — ASan exit code will surface leaks.
$ echo $?
0

main

Choose a tag to compare

@github-actions github-actions released this 20 Jun 19:03
Immutable release. Only release title and notes can be modified.

main

See CHANGELOG.md for details.

v0.11.0 - Cold-start hardening + wizard polish

Choose a tag to compare

@pineapple-ooo pineapple-ooo released this 19 Jun 12:38
Immutable release. Only release title and notes can be modified.

MINXG v0.11.0 — Cold-start hardening + wizard polish

Cold-start hardening plus a polished, Termux-friendly setup wizard.
No breaking-API changes; same minxg imports and same worker count
(55 workers, 306 math operators, 376 total operator IDs).

What is actually shipping

  • minxg (no subcommand) is now a one-shot picker.
    Pick a usage mode and go: chat CLI right away, start the API
    gateway immediately, or run the setup wizard. No more silent
    drop-into-TUI that the old behavior implied.

  • Setup wizard: reasoning_effort knob (OpenAI standard).
    Six levels: xhigh, high, medium, low, minimal, none,
    with a per-provider support map (OpenAI supports all five,
    Anthropic three, Gemini five, DeepSeek / Doubao / xAI four, plus
    the rest). The wizard persists the choice to ai.reasoning_effort
    and the value is resolved against the provider's allowed levels
    at runtime.

  • Wizard menus strictly fit one line per option.
    Descriptions are truncated to 28 chars in print_option_item so
    every row stays under 42 chars wide. Termux 80-col screens stop
    spilling one option across two terminal rows.

  • Built-in extensions are opt-in. The legacy
    ADB_AVAILABLE / ROOT_AVAILABLE auto-detect ladder is
    removed. minxg-adb, minxg-root, minxg-files ship with
    EXTENSION_ENABLED = False; enable with minxg ext add <slug>.

  • cpp_core link error fixed. libminxg_core.so no longer
    crashes on dlopen with cannot locate symbol "minxg_slugify"
    on Termux + Py3.13. cpp_core/CMakeLists.txt now also links
    c_core/text_engine.c.

  • minxg doctor ships as a real self-check subcommand with an
    exit-code contract (0 OK / 1 fail / 2 warn) and 23 checks across
    platform, binaries, minxg package, config, and extensions.

  • install.sh English-only (43 [CN] placeholders stripped);
    brand line reads MINXG v0.11.0; ADB/ROOT messaging is now
    opt-in by default.

  • py_workers alias hardened. Pillar aliases (scalar, io,
    aggregate, dispatch, transform) and the six math pillars
    resolve through the alias module's own __getattr__.

Files changed (high level)

CHANGELOG.md, DEVELOPER.md, README.md, config/minxg.yaml,
cpp_core/CMakeLists.txt, extensions/__init__.py,
extensions/loader.py, three built-in extensions,
extensions/package_cli.py, install.sh, minxg/__init__.py,
minxg/cap/manifest.py, minxg/driver/engine.py,
minxg/five_pillars/scalar/core_native.py,
minxg/self_evolution/loop.py, multiligua_cli/banner.py (new),
multiligua_cli/doctor.py (new), multiligua_cli/main.py,
multiligua_cli/providers.py, multiligua_cli/setup.py,
multiligua_cli/tui_chat.py, multiligua_cli/wizard_ui.py,
py_workers/__init__.py, pyproject.toml,
tests/test_extensions.py.

Verification

  • 130 tests pass, 1 skipped (rustc absent in Termux sandbox).
  • minxg --version -> 0.11.0.
  • minxg doctor -> 0 failures, 0 warnings across 23 checks.
  • bash install.sh --help -> exits 0 with the post-install
    cheatsheet.
  • from minxg.five_pillars.scalar.core_native import sha256; print(sha256(b"hi").hex()) -> native lib loads, expected hash.