Release Panini 1.1.8 - #53
Merged
Merged
Conversation
This basically removed the null error.
- Remove 22 artifact files (test junk, research outputs, old .clan runs) - Untrack .agents/, add .agents/ and .claude/ to .gitignore - Move CLAN-SPEC.md, SEQUENCE-DIAGRAMS.md → spec/ - Move regulatory.md, strategy.md → research/ - Move clan-test-suite.clan → test-sandbox/ - Rename design_handoff_clan_logo/ → design/ - Add MPL 2.0 license header to all 26 code files
Made changes to work with Windows
Two-part fix: - Rust: skip <script> blocks in auto_inject_adf_ids so IDs are never baked into JS template literals (root cause of all cells in a column sharing the same data-adf-id and updating together) - Bridge: add injectMissingIds() running every 300ms to assign IDs to JS-rendered elements at runtime, keeping dynamic tables editable; re-run activateEditing() each tick to wire up newly-tagged elements Also adds tag boundary check to find_closing_tag so </th does not match </thead> and corrupt table structure on header cell edits.
Fix column replication bug in CLAN Viewer
Two-part fix: - Rust: skip <script> blocks in auto_inject_adf_ids so IDs are never baked into JS template literals (root cause of all cells in a column sharing the same data-adf-id and updating together) - Bridge: add injectMissingIds() running every 300ms to assign IDs to JS-rendered elements at runtime, keeping dynamic tables editable; re-run activateEditing() each tick to wire up newly-tagged elements Also adds tag boundary check to find_closing_tag so </th does not match </thead> and corrupt table structure on header cell edits.
- Fix highlight not clearing on second edit-mode deactivation: originals were captured after blue styles applied; now saved before any change - Add DOM snapshot endpoint (/snapshot): bridge captures fully-rendered HTML (including JS-generated rows) 600ms after page load and writes it as human/index.html, giving all dynamic elements stable IDs on reopen - Add strip_scripts() to clean bridge/data scripts from snapshot - Revert iframe reload after patch save — reloading was overwriting the user's edit with the unpatched template for JS-rendered documents - Remove redundant double-save from handlePatch (protocol handler saves)
Updated TODO list with completed tasks and added new items for app packaging, repository hygiene, and token optimizations.
- Cargo.toml: add description/keywords/categories to [workspace.package] (#26) - clan-sdk, clan-cli: inherit keywords/categories from workspace (#26) - promote lol_html to [workspace.dependencies] (#28) - add .github/ISSUE_TEMPLATE/bug_report.md (#36) - add .github/ISSUE_TEMPLATE/feature_request.md (#37) - add .github/PULL_REQUEST_TEMPLATE.md (#38)
- clan-cli: agent-help reports env!(CARGO_PKG_VERSION) not hardcoded v0.13 (#17) - pack::strip_scripts: lowercase once, search offsets — no per-iteration alloc (#13) - pack::strip_on_handlers: copy quoted attr values verbatim so '>' inside a quoted value can't bypass on* handler stripping; +6 regression tests (#16) - add crates/clan-sdk/README.md for crates.io (#27) - add CHANGELOG.md with v1.0.0 entry (#35)
…#11, #12) - has_entry now checks the ZIP central directory only, never decompressing the entry (regression test corrupts entry data and asserts existence still answers true while reads fail CRC). - New ClanFile::read_all_entries() reads every entry in one ZipArchive pass; pack(), repack_with_entry() and apply_patch_and_repack() now use it instead of N+1 per-entry archive instantiations.
… patch-html misses (#14, #15, #21) - patch_decision now swaps only agent/decision-chain.yaml via repack_with_entry — no full schema validation just to append, and no spurious fields_changed listing every data key. - pack_html context handoff is passed into pack() as an extra entry via PackOptions.extra_entries, so the archive is built once instead of being cloned and rebuilt three times. - apply_html_patch now counts selector matches and errors when nothing matched (or the selector fails to compile) instead of silently returning the document unchanged. All three land with regression tests.
, #10, #19, #20) - clan://patch handling extracted into handle_patch_request, which saves exactly once and returns the informational clan-patch-saved payload; regression test counts saves per request. The React listener stays a no-op on that event. - open_clan no longer re-reads the file after ClanFile::open; the redundant LoadedClan.raw_bytes field is gone (the ClanFile already owns the bytes), removing an extra full-archive clone on every save. - resolve_bindings is byte-indexed (str::find) — no Vec<char> ~4x allocation over the document. - auto_inject_adf_ids is a single-pass scanner over all ten editable tag types instead of ten full document scans; ids remain stable, script blocks stay untouched, and ASCII lowercasing keeps offsets safe. - do_snapshot uses read_all_entries (one ZipArchive pass).
) All write commands now share the --output flag. The positional output path still works with a deprecation warning; passing both forms is rejected. Adds end-to-end CLI tests (create/pack-html/patch-html), including coverage for the new loud patch-html selector failure (#21).
- Output schema is injected as TOON when — and only when — the encoding is provably lossless: json_to_toon_verified() encodes, decodes with a strict verification parser, and compares against the original JSON; any ambiguity (numeric-looking strings, multiline text, heterogeneous object arrays, separator-bearing keys) falls back to raw JSON. The validation contract (AgentContext.output_schema_json) stays raw JSON byte-for-byte. Covered by round-trip, fallback, determinism, and jsonschema validation-equivalence tests. - New InjectOptions.skip_guide + 'clan read agent --skip-guide' replaces the ~800-token guide body with a one-line note carrying the guide's sha256 digest, so sequenced agents skip re-reading while still detecting version changes. - Decision-chain TOON injection prunes fields_changed noise: empty lists always, non-empty lists for entries older than the 5 newest. The stored decision-chain.yaml is untouched (asserted byte-for-byte).
- TestResult.clan: full-suite run (14 tests) with corrected H-H1 (rep4 5/8 fidelity + false-provenance finding) and H-H2 blocked (crossover unproven; resume-on-dirty-state polluted the measure). - run-claim-specific.workflow.js: B-FORKMERGE/B-UNGUIDED/B-META/L-H3. - heavy workflow: measure step uses node measure-heavy.mjs (no pwsh on mac).
- Add Highlights block + Campaign 3 (full TESTBOOK heavy run). - Feature fork/merge, metamorphosis, teachability, cold-resume wins. - Flag synthesis-hop ratio NOT ROBUST (0.487x -H -> 1.047x -I). - Add provenance-integrity finding (rep4 5/8 + false-provenance) and non-idempotent-append caveat; crossover unproven even at heavy scale. - Test counts 165 -> 186 (banner, scorecard, Status).
All test-sandbox receipts, artifacts, and run outputs from Campaign 3 (5 reps × 2 arms, ~258 real subagents).
Feat/combined windows msi
The mac/linux release jobs failed compiling tauri-utils 2.9.2 with E0119 (conflicting From<HourBase> impls) because, with no committed lockfile, CI re-resolved and pulled the freshly published `time` 0.3.48, which trips a rustc coherence bug in tauri-utils. Reproduced locally: time 0.3.48 fails, 0.3.47 builds (same rustc 1.96.0). Commit Cargo.lock so every platform builds the exact, verified dependency set (time 0.3.47, tauri 2.11.2) — the same lock the working Windows MSI was built from. Lockfiles are ignored for crates.io consumers of clan-sdk, so this only affects local/CI builds of this workspace. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrites the README around the core truth: CLAN's properties (provenance, parallel safety, human view, cold resume) are structural — delivered by the format's design, not by a runtime. Adds the 5-things handoff hook, explicit model/framework/environment-agnostic positioning, and a "design not runtime" section. Scorecard and honest losses unchanged.
Adds "What everything else leaves out" — three paragraphs that implicitly position CLAN against orchestration frameworks, agent protocols, and token optimization tools without naming any of them. Followed by a comparison table across 11 dimensions. No competitor is called out by name; the gaps describe themselves.
Tauri serves custom protocols as <scheme>://localhost on macOS, iOS and Linux, and only as http://<scheme>.localhost on Windows (WebView2). The platform check keyed on userAgent 'Mac', so Linux fell through to the Windows form and the document <iframe> pointed at a non-existent http://clan.localhost host — leaving the main pane blank while the React sidebar (no custom scheme) rendered fine. Gate on 'Windows' instead, in both the iframe src and the injected EDIT_BRIDGE script. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The released AppImage bundles an older WebKitGTK whose DMABUF / accelerated-compositing path fails on modern Mesa/Wayland (blank web content, and a libwayland mismatch can abort with EGL_BAD_PARAMETER before the window appears; the AppImage build also strips its bundled libwayland). Force the software path on Linux unless the user overrides it. No-op on a current system WebKitGTK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fix/linux viewer document render
…path clan-app is a member of the root cargo workspace, so tauri writes the AppImage to <repo>/target/release/bundle/appimage, not app/src-tauri/target. The strip step looked in the latter, found nothing, and exit-0'd — silently shipping unpatched AppImages (v1.1.6/v1.1.7 still bundled libwayland and crashed with EGL_BAD_PARAMETER). Locate the AppImage wherever it lands and fail the job if it is missing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(ci): strip libwayland from the AppImage at the correct workspace …
Test/run 2026 06 12 i
The conformance harness (test-sandbox/pipeline/conformance.mjs) is invoked by .github/workflows/ci.yml; the 'Removed the Tests' commit deleted it along with the benchmark artifacts, which would break the CI conformance job. The script is self-contained (Node built-ins + the clan binary, temp workdir), so only this one file is needed — not the benchmark dump. Verified locally: 26/26 passed, 0 hard failures. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.