Apply go fix ./... analysers (Go 1.26) across backend and examples:
- interface{} → any (type alias, no behaviour change)
- for i := 0; i < N; i++ → for range N / for i := range N
- slices.Contains / slices.ContainsFunc replacing manual loops
- strings.SplitSeq replacing strings.Split in range (avoids allocation)
- strings.CutPrefix replacing HasPrefix+TrimPrefix
- min() replacing manual if/else
- fmt.Appendf replacing []byte(fmt.Sprintf(...))
- strings.Builder replacing string += concatenation
- wg.Go(func(){}) replacing wg.Add(1)/go/wg.Done() pattern
- removed redundant ii := i loop variable copies (unnecessary since Go 1.22)
omitempty on struct-typed JSON fields: go fix removed omitempty from
struct-typed fields (time.Time, PostInfo, UserDetailEntry) because
encoding/json's omitempty never applied to struct types — it was always
a no-op. Kept as bare tags (no omitzero replacement) to preserve the
existing serialisation behaviour.
sample store implementation
memory_store illustrates how to make a custom storage plugin for remark42.
In order to run remark42 with memory_store copy provided compose-dev-memstore.yml to the root directory and run:
docker compose -f compose-dev-memstore.yml builddocker compose -f compose-dev-memstore.yml up
As usual, demo site will run on http://127.0.0.1:8080/web/
note: in order to work with the latest (current) version of master go.mod uses replacement directive for the backend package. In real-life usage replace github.com/umputun/remark42/backend => ../../ should not be used.