Skip to content
CAI
Software that uses CAICheck a score

storytold/effectcraft

55.6

Adequate · 7 November 2026

403.1k

lines of production code

Rust

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Behavioural changes

1 commit (0 fixes) modifying (repo-wide)

A change to existing behaviour in (repo-wide) — 1 commit, 4 files: “Never crash: deny panic lints in the already-clean crates and apps”. Also in this area: 2 commits (0 fixes) modifying (repo-wide).

crates/geom · low confidence · unverified

1 commit (0 fixes) modifying assets, crates/text, crates/time

A change to existing behaviour in assets, crates/text, crates/time — 1 commit, 22 files: “M0.1–M0.7: workspace, time/geom/color/keyframe/project/raster/path/text/effects/render crates”.

assets · medium confidence · unverified

1 commit (0 fixes) modifying assets, crates/text, crates/time

A change to existing behaviour in assets, crates/text, crates/time — 1 commit, 22 files: “M0.1–M0.7: workspace, time/geom/color/keyframe/project/raster/path/text/effects/render crates”. Also in this area: 1 commit (1 fix) fixing crates/time; 35 commits (0 fixes) modifying crates/engine.

crates/time · medium confidence · unverified

1 commit (0 fixes) modifying crates/engine/src/viewer, crates/ui-egui/src/display\_gpu

A change to existing behaviour in crates/engine/src/viewer, crates/ui-egui/src/display\_gpu — 1 commit, 2 files: “Viewer exposure on the full float range of 32 bpc frames (\#2937)” (refs \#2937).

_crates/engine/src/viewer, crates/ui-egui/src/display\gpu · medium confidence · unverified

1 commit (0 fixes) modifying extensions

A change to existing behaviour in extensions — 1 commit, 2 files: “Plug-ins: Ease Presets moves out of core into a bundled ScriptUI panel”. Also in this area: 2 commits (0 fixes) modifying extensions.

examples/plugins/posterize-bands, extensions, nix · medium confidence · unverified

161 commits (4 fixes) modifying (repo-wide)

A change to existing behaviour in (repo-wide) — 161 commits (4 fixs), 17 files: “M13.1: ScriptUI frontend (dialogs, palettes, dockable panels), script menus, example plug-in, docs”; “M4.13: motion blur of collapsed precomps and of animated shape / text content”; “fix(linux): enable font-free Wayland window controls”; and 158 more (refs \#932, \#291, \#1886, \#617, \#204, …).

(repo-wide) · low confidence · unverified

2 commits (0 fixes) modifying crates/text/src/layout

A change to existing behaviour in crates/text/src/layout — 2 commits, 1 file: “refactor(text): move src/layout.rs tests to src/layout/tests.rs”; “style: cargo fmt on the moved files”.

crates/text/src/layout · medium confidence · unverified

2 commits (0 fixes) modifying crates/ui-egui/src/panels/viewer\_text

A change to existing behaviour in crates/ui-egui/src/panels/viewer\_text — 2 commits, 1 file: “refactor(ui-egui): move src/panels/viewer\_text.rs tests to src/panels/viewer\_text/tests.rs”; “style: cargo fmt on the moved files”.

_crates/ui-egui/src/panels/viewer\text · medium confidence · unverified

3 commits (0 fixes) modifying apps/effectcraft, crates/automation

A change to existing behaviour in apps/effectcraft, crates/automation — 3 commits, 3 files: “G8: Plug-in Library: install, preview and update community WebAssembly effects (\#2524)”; “Plug-ins: external effect helpers (safe, out-of-process native effects) + plug-in API 2 (\#889)”; “Effect ▸ Install Effect Plug-in… and plug-in bundles (wasm + ScriptUI panel in one go) (\#2749)” (refs \#2524, \#889, \#2749). Also in this area: 1 commit (0 fixes) modifying crates/automation; 7 commits (1 fix) modifying crates/effects; 1 commit (1 fix) fixing crates/automation; 2 commits (2 fixes) fixing crates/automation.

crates/automation/src · low confidence · unverified

45 commits (5 fixes) modifying crates/ui-egui/src/panels

A change to existing behaviour in crates/ui-egui/src/panels — 45 commits (5 fixs), 34 files: “Viewer: 3D layer outlines and the axis gizmo clip at the camera instead of drawing long lines (\#572)”; “Let pan and zoom work while 3D Camera Tracker points are shown (\#505)”; “Viewer: Ctrl/Cmd draws a shape from its centre, as in After Effects (\#443 follow-up)”; and 42 more (refs \#572, \#505, \#443, \#351, \#633, …). Also in this area: 3 commits (1 fix) modifying crates/ui-egui/src/i18n.

crates/ui-egui/src/i18n · medium confidence · unverified

5 commits (1 fix) modifying crates/vp9enc

A change to existing behaviour in crates/vp9enc — 5 commits (1 fix), 7 files: “vp9enc: probability delta table, linear bool-encoder carry, clamp oversized frames (part of \#2416)”; “vp9enc: fixed-size SAD kernels and a revisit cache in the motion search (\#2413)”; “vp9enc: vectorised phase-plane filters and a predict fast path (part of \#2411)”; and 2 more (refs \#2416, \#2413, \#2411, \#2414, \#2412). Also in this area: 1 commit (0 fixes) modifying crates/vp9enc; 2 commits (0 fixes) modifying crates/vp9enc.

(repo-wide) · low confidence · unverified

6 commits (0 fixes) modifying crates/gpu

A change to existing behaviour in crates/gpu — 6 commits, 31 files: “M13.29: GPU effects part D (particles and remaining fallbacks)”; “M13.23: Shatter wireframe views and Foam's texture / map extras fall back via gpu\_supported (no readback attempt)”; “M13.28: GPU pixel ports (fx\_pixel2): CC Cross/Radial/Vector Blur, Reduce Interlace Flicker, CC Composite, Color Link, Cineon, HDR Compander/Highlight Compression, Grow Bounds, CC Overbrights, CC Block Load, CC Burn Film, CC Glass/Plastic, CC HexTile, CC Mr. Smoothie, Inner/Outer Key, CC Simple Wire Removal, Basic 3D”; and 3 more. Also in this area: 6 commits (1 fix) modifying crates/gpu/src; 1 commit (0 fixes) modifying crates/effects, crates/gpu, crates/raster; 1 commit (1 fix) fixing crates/gpu, crates/raster, crates/render.

(repo-wide) · low confidence · unverified

6 commits (0 fixes) modifying crates/render

A change to existing behaviour in crates/render — 6 commits, 17 files: “M0.6: content bounds helpers for viewer handles”; “M0.9–M0.10: egui frontend (AE-style panels, viewer, timeline, effect controls, dialogs), desktop app with control channel, host wiring; cargo fmt”; “Re-export color/geom from engine; kurbo\_path helper”; and 3 more. Also in this area: 1 commit (1 fix) fixing crates/path; 1 commit (0 fixes) modifying crates/path, crates/raster.

crates/path · low confidence · unverified

7 commits (0 fixes) modifying crates/effects

A change to existing behaviour in crates/effects — 7 commits, 10 files: “Effects: Fractal and Turbulent Noise stay inside the layer's alpha (\#939)”; “Cryptomatte: the rank planes are resolved once per evaluation and the GPU path reduces them on all cores, instead of formatting and looking up channel names for every pixel in a single-threaded loop (\#473)”; “Effects: CC Particle World / Systems II replace their layer with the particles”; and 4 more (refs \#939, \#473, \#702, \#1063). Also in this area: 7 commits (1 fix) modifying crates/render; 3 commits (3 fixes) fixing crates/raster; 1 commit (1 fix) fixing crates/gpu, crates/raster, crates/render; 1 commit (0 fixes) modifying crates/effects, crates/gpu, crates/raster.

crates/gpu/src/tests, crates/plugin, crates/raster · low confidence · unverified

72 commits (2 fixes) modifying crates/engine

A change to existing behaviour in crates/engine — 72 commits (2 fixs), 164 files: “M13.1: ScriptUI frontend (dialogs, palettes, dockable panels), script menus, example plug-in, docs”; “M7.7: merge fixes (Exposure param path, remaining stubs list, effects doc)”; “M13.7: Save Frame As Photoshop Layers / ProEXR, Watch Folder, Vanishing Point (disabled), Create Nulls From Paths, VR Comp Editor, Help tutorials”; and 69 more. Also in this area: 1 commit (0 fixes) modifying crates/keyframe; 1 commit (1 fix) fixing crates/keyframe; 4 commits (1 fix) modifying crates/keyframe.

(repo-wide) · low confidence · unverified

Fixes

3 commits (2 fixes) fixing crates/expr

A fix in crates/expr — 3 commits (2 fixs), 5 files: “fix(expr): bound runtime parser and native recursion depth (\#2124, \#2125)”; “fix(expr): JSON.stringify key lists report cycles; document stack guard coverage (\#2124, \#2125)”; “test(expr): deep-nesting tests assert the guard's own error (\#2124, \#2125)” (refs \#2124, \#2125). Also in this area: 2 commits adding/updating tests in crates/expr/src/tests; 3 commits (0 fixes) modifying crates/expr; 2 commits (1 fix) modifying crates/expr.

crates/expr/src/tests, examples · low confidence · unverified

Test coverage

1 commit adding/updating tests in crates/text; 12 commits adding/updating tests in crates/ui-egui/tests; 2 commits adding/updating tests in apps/effectcraft-web/tests/it.

Written by cca.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 56.

Lenses

  • Code Health 35
  • Architecture 93
  • Maturity 86
  • Readiness 73
  • Security 70
  • Event Sourcing 100
  • Performance 70

Changes since last survey

  • 300 commits — 280 feature/other, 20 fixes

By area

  • (repo) — 97 commits
  • crates/ui-egui — 61 commits
  • crates/engine — 28 commits
  • crates/effects — 22 commits
  • (root) — 11 commits
  • crates/export — 10 commits
  • crates/gpu — 9 commits
  • crates/render — 8 commits
  • crates/media — 7 commits
  • crates/aep — 6 commits
  • apps/effectcraft-cli — 3 commits
  • apps/effectcraft-web — 3 commits
  • contributors/people.toml — 3 commits
  • crates/expr — 3 commits
  • crates/interchange — 3 commits
  • crates/lottie — 3 commits
  • crates/path — 3 commits
  • crates/pdf — 3 commits
  • .github/workflows — 2 commits
  • crates/automation — 2 commits

Notable commits

  • fix: Batch fixes: rustfmt, is_multiple_of in the Vegas test, drop a Swedish row #2718 retired
  • fix: Fix #2803: Timewarp plays an animated Speed as a rate
  • fix: Fix #2823: Propagate boxes SAM 2 around the matte shown on the stroked frame (#2826)
  • fix: Fix #2904: a second layer or a copy of v-b1.mp4 is v-b1.mp4 2, not v-b1.mp 2
  • fix: Fix #2907: say that text animator indexes count from 1
  • fix: Fix #2917: material.set names the Material Options a layer doesn't have
  • fix: Fix #2919: Match Grain takes no sample box beside transparent pixels
  • fix: GPU: build effect kernels on first use, each family from a module of its own (fixes #1590) (#1705)
  • fix: GPU: size the memory cap from the card's video memory on Linux (fixes #1487) (#1706)
  • fix: Merge current main into fix/gnome-window-decorations
  • fix: Merge pull request #1598 from danielmigueltejedor/fix/gnome-window-decorations
  • fix: Merge pull request #2916 from vangel76/fix/exr-scene-linear-output
  • fix: Merge pull request #3091 from ZIDAN44/fix/1826-marker-bin-double-click
  • fix: Merge remote-tracking branch 'upstream/main' into fix/exr-scene-linear-output
  • fix: Merge upstream/main into fix/exr-scene-linear-output
  • fix: fix(flatpak): install NOTICE only once
  • fix: fix(packaging): remove duplicate font and Hayro notices
  • fix: fix(path): Wiggle Paths no longer overflows on an absurd speed, time or phase
  • fix: fix(prefs): when recovering from a bad value, try only the settings' own pages one by one (#3010)
  • fix: gpu: memory back-pressure for frames in flight (fixes OOM at 3–4 frames in flight) (#1550)
  • …and 280 more

Written by cca.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

storytold/effectcraft was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 7 November 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 519769299f6390e62b778d469422497577799ea2 — the exact code this score is about.
  • Scored under rubric-2026.11.2 — the same rubric and the same method as every other entry in this index.
  • Measured by Canine Code Analyzer (cca.canine.dev) using cca measure-2026.11.3+preprod-5f8314471808.