Releases: LOUST-PRO/LinkMarks
Releases · LOUST-PRO/LinkMarks
Release list
LinkMarks v1.0.1: hardening round 1
LinkMarks v1.0.1 — hardening round 1
Additive release. No breaking changes vs v1.0.0.
Highlights
- Tracking-param blocklist: 6 → 21 entries with documented sources
(fbclid,gclid,gbraid,wbraid,msclkid,dclid,yclid,
twclid,li_fat_id,igshid,ttclid,ref,ref_src,ref_url,
source,spm,scm,_hsenc,_hsmi,mkt_tok;utm_*and
mc_*as prefix match). - Per-domain preservation: new
canonical_configmodule with
ALWAYS_FUNCTIONALlist andCanonicalConfig::is_preserved. Operators
can override the blocklist per domain via~/.config/linkmarks/config.toml.
Seeconfig.toml.examplefor the YouTube / Vimeo / GitHub / Twitter-X /
Amazon recipes. - SQLite hardening: new
storagemodule applies 5 pragmas at every
open():journal_mode=WAL,busy_timeout=5000,synchronous=NORMAL,
foreign_keys=ON,temp_store=MEMORY. Concurrent-reader + single-writer
pattern with bounded lock contention.
Documentation
3 ADRs in MADR format document the design rationale:
- ADR 0002 — URL Canonicalization — the ruleset, the blocklist sources, the per-domain config schema, and 4 considered options.
- ADR 0003 — SQLite Hardening — per-pragma rationale, crash-safety tradeoff with
synchronous=NORMAL, and 4 considered options. - ADR 0004 — CRDT Tombstone Compaction — server-side per-client ack protocol for Fase 3, with grace period + snapshot retention + audit log. Proposed; implementation is Fase 3 work.
Validation
- 65/65 tests pass (was 58 in v1.0.0; +4 canonical + +3 storage).
cargo clippy --all-targets -- -D warnings→ 0 warnings.cargo fmt --check→ clean.cargo build --release→ OK, binary ≈ 2.5 MB.
Commits (4 ahead of main at v1.0.0)
98d0d19 docs: config.toml.example with per-domain preservation rules
a460b36 docs(decisions): ADR 0002/0003/0004 — canonical, sqlite, crdt tombstones
4757e8c feat(core): SQLite WAL + busy_timeout storage helper
fab59d0 feat(core): expand tracking-param blocklist + per-domain preservation rules
Compatibility
All new APIs are additive. Existing v1.0.0 callers of canonicalize(),
is_tracking(), and the bridge crates continue to work unchanged. The
storage module is opt-in: callers that don't yet use it are unaffected.
Full Changelog
See CHANGELOG.md and the v1.0.0...v1.0.1 comparison.