changelog

{data.repo.split('/')[1]} released v0.1.22 in samifouad/cqx

Full Changelog: v0.1.21...v0.1.22

v0.1.22
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.21 in samifouad/cqx

Full Changelog: v0.1.20...v0.1.21

v0.1.21
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.20 in samifouad/cqx

Full Changelog: v0.1.19...v0.1.20

v0.1.20
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.19 in samifouad/cqx

Full Changelog: v0.1.18...v0.1.19

v0.1.19
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.18 in samifouad/cqx

Full Changelog: v0.1.17...v0.1.18

v0.1.18
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.17 in samifouad/cqx

Full Changelog: v0.1.16...v0.1.17

v0.1.17
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.16 in samifouad/cqx

Two fields the rule card needs, and the second frontend will need more.

language on every rule. Written down from the first frontend rather than assumed and retrofitted from the second. It prefixes the rule's name everywhere it is shown — [rust/discarded-check] — and names its page in the documentation. Not patchable: a rule's language is a fact about the rule, not a setting.

item on every finding — the function, method or impl it sits inside, so a reader can zoom out to the thing that is wrong rather than the line it happens to be on. The span was already in the graph: a symbol is joined to whatever contains it by a Contains edge, and that edge's evidence is the symbol's own extent. The innermost one wins, so a call inside a closure inside a method reads as the method.

It is answered in one pass over every finding rather than at each of the twenty places one is made — a rule that forgot to ask would be a rule whose card quietly offers one zoom fewer than the others.

Scoring cqx with itself: 16 of 18 findings carry an item, and the two that do not are about whole files.

Human test

  • cqx score --facts <f> --json — every rule has "language": "rust", and findings on a line carry item.
  • A report on https://cqx.bio shows a third zoom button beside line and file, named after the enclosing function.
v0.1.16
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.15 in samifouad/cqx

What's Changed

  • Ask cqx.bio to rebuild when a release lands by @samifouad in #40

Full Changelog: v0.1.14...v0.1.15

v0.1.15
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.14 in samifouad/cqx

What's Changed

  • Six rules that read the new facts, and the precision to keep them by @samifouad in #38

Full Changelog: v0.1.13...v0.1.14

v0.1.14
Sep 19, 2026

{data.repo.split('/')[1]} released v0.1.13 in samifouad/cqx

What's Changed

Full Changelog: v0.1.12...v0.1.13

v0.1.13
Sep 18, 2026