Skip to content

ais changelog

io.github.anode1/ais

7 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.

  • server.json 2 fields changed
    package_identifier
    https://github.com/Anode1/ais/releases/download/v0.3.43/ais-v0.3.43.mcpb https://github.com/Anode1/ais/releases/download/v0.3.47/ais-v0.3.47.mcpb
    version
    0.3.43 0.3.47

  • AGENTS.md +26 −29

    https://raw.githubusercontent.com/anode1/ais/HEAD/AGENTS.md

    − `make ut` runs two groups: CORE (codeut, cliut, the FFI stack budget, loopback− and mesh sync, upgrade, encrypt over a pty: the commit gate) and GUI (uiut, the− wrapper build-checks, the native Flutter sync UI; a layer whose toolchain is− absent SKIPs). A green CORE with a red or skipped GUI is fine to commit. Every− layer, what it covers and how to run it alone:− `tests/README.md`.− - **`tests/gui/flutter-sync.sh`** drives the real Host/Join UI. The harness−   existed but was wired into nothing, so when the Sync control moved into the−   overflow menu it silently stopped testing sync at all, for weeks, while the−   merge code underneath was being rewritten. Wire a new layer into−   `tests/run.sh` the day you write it.− Before tagging a release, run `make codeut-asan` and `make codeut-ubsan`: they− rebuild the engine tests under the compiler's sanitizers, so memory errors and− undefined behavior abort with a file:line report instead of passing silently− under `-O2`. `sanitizers.yml` runs both on every push to main, every pull request and on− manual dispatch, and `make hooks` installs a− pre-push hook that runs them first (bypass once with `git push --no-verify`).− They stay out of the default build: 2-3x slower and not universally available, so− `make` and `make ut` stay portable. The rest of the release procedure is in− Flutter desktop build, the win32 GUI under wine, a browser) runs on a virtual X− - **A value names ONE record.** Every write path enforces it: `put` resolves an−   existing record by value, `ais_merge_addval` by content hash, `ais_set_value`−   and `ais_add` refuse a value another record holds. Two records sharing a value−   make a peer collapse them, and a later delete of either takes both.− - **An id never crosses a device boundary.** It is a local ordinal: the sort key−   that makes posting lists mergeable and the recency order. Cross-device identity−   is `content_hash` over the value, and the export stream carries no id field at−   all. `tests/cli.sh` asserts that structurally, so adding one goes red.−     win32/     the native Windows GUI (ais-gui.c)+ `make ut` runs two groups, CORE (the commit gate) and GUI (a layer whose+ toolchain is absent SKIPs). A green CORE with a red or skipped GUI is fine to+ commit. Every layer, what it covers and how to run it alone: `tests/README.md`.+ - **`tests/gui/flutter-sync.sh`** drives the real Host/Join UI. It sat unwired+   for weeks and stopped testing sync when the control moved+   (`doc/dev/GUI_TESTING.md`, "Making a GUI test worth having"). Wire a new+   layer into `tests/run.sh` the day you write it.+ Before tagging a release, run `make codeut-asan` and `make codeut-ubsan`: a+ memory error or undefined behavior then aborts with a file:line report instead+ of passing under `-O2`. `sanitizers.yml` runs both on every push to main, every+ pull request and on manual dispatch; the pre-push hook can be bypassed once+ with `git push --no-verify`. They stay out of the default build: 2-3x slower+ and not universally available. The rest of the release procedure is in+ Flutter desktop build, a browser) runs on a virtual X+ **Three front ends, one feature set.** The web page (`c/serve.c`), the PWA+ (`app/index.html`) and the Flutter app (`app/flutter`) show the same features+ in the same words, each with its own test. A feature added to one goes into+ the other two in the same change, unless the platform lacks it (camera+ scanning on the web page). The version line in the app's About and in the+ pages' menu is the example: the pages had only `/api/version` for a year.+ - **A value names ONE record.** Every write path enforces it+   (`doc/dev/LAYOUT.md`, "A VALUE NAMES ONE RECORD").+ - **An id never crosses a device boundary.** Cross-device identity is+   `content_hash` over the value, and the export stream carries no id field at+   all; `tests/cli.sh` asserts that structurally, so adding one goes red+   (`doc/dev/FORMAT_V2.md`, "Ids").

  • server.json 2 fields changed
    package_identifier
    https://github.com/Anode1/ais/releases/download/v0.3.39/ais-v0.3.39.mcpb https://github.com/Anode1/ais/releases/download/v0.3.43/ais-v0.3.43.mcpb
    version
    0.3.39 0.3.43

  • server.json 2 fields changed
    package_identifier
    https://github.com/Anode1/ais/releases/download/v0.3.38/ais-v0.3.38.mcpb https://github.com/Anode1/ais/releases/download/v0.3.39/ais-v0.3.39.mcpb
    version
    0.3.38 0.3.39

  • server.json 2 fields changed
    package_identifier
    https://github.com/Anode1/ais/releases/download/v0.3.37/ais-v0.3.37.mcpb https://github.com/Anode1/ais/releases/download/v0.3.38/ais-v0.3.38.mcpb
    version
    0.3.37 0.3.38

  • AGENTS.md +14 −9

    https://raw.githubusercontent.com/anode1/ais/HEAD/AGENTS.md

    − `make ut` runs two groups: CORE (codeut + cliut + the FFI stack budget, the− commit gate) and GUI (uiut + the wrapper build-checks + the native Flutter sync− UI; a layer whose toolchain is absent SKIPs). A green CORE with a red or skipped− GUI is fine to commit. Every layer, what it covers and how to run it alone:− under `-O2`. `sanitizers.yml` runs both on every push and `make hooks` installs a− Browsers take `--headless=new --ozone-platform=headless` instead, and the Android− emulator takes `-no-window` (no X server at all); `make uiut` already does this.− tried alongside it. The full comparison is in `hsearch/probes/0010`.− - A `PostToolUse` hook auto-runs `make codeut` after edits to `c/` (see `.claude/`).+ `make ut` runs two groups: CORE (codeut, cliut, the FFI stack budget, loopback+ and mesh sync, upgrade, encrypt over a pty: the commit gate) and GUI (uiut, the+ wrapper build-checks, the native Flutter sync UI; a layer whose toolchain is+ absent SKIPs). A green CORE with a red or skipped GUI is fine to commit. Every+ layer, what it covers and how to run it alone:+ under `-O2`. `sanitizers.yml` runs both on every push to main, every pull request and on+ manual dispatch, and `make hooks` installs a+ Browsers take `--headless=new --ozone-platform=headless` instead (use both in a+ new script; `make uiut` already runs its browser headless), and the Android+ emulator takes `-no-window` (no X server at all).+ tried alongside it. The full comparison (probe 0010) is in the owner's+ research notes, outside this repository.+ - A `PostToolUse` hook auto-runs `make codeut` after edits to `c/*.c` and `c/*.h`+   (not `c/crypto/`; see `.claude/`).

  • server.json 2 fields changed
    package_identifier
    https://github.com/Anode1/ais/releases/download/v0.3.29/ais-v0.3.29.mcpb https://github.com/Anode1/ais/releases/download/v0.3.37/ais-v0.3.37.mcpb
    version
    0.3.29 0.3.37