LocalAI/.github
Richard Palethorpe 4443250756
chore: add golangci-lint with new-from-merge-base baseline (#9603)
* chore: add golangci-lint with new-from-merge-base baseline

Configure golangci-lint v2 with the standard linter set (errcheck, govet,
ineffassign, unused) plus forbidigo, which enforces the Ginkgo/Gomega-only
test convention from .agents/coding-style.md by rejecting stdlib testing
calls (t.Errorf, t.Fatalf, t.Run, ...). staticcheck is disabled — the
codebase has many pre-existing QF-style suggestions not worth gating on.

issues.new-from-merge-base = master makes the lint job a gate for new
issues only; the ~1300 pre-existing baseline stays visible via
'make lint-all' for incremental cleanup. CI runs 'make lint'.

Backends needing C/C++ headers we don't install in the lint runner are
excluded via a deny list in the Makefile (backend/go/{piper,silero-vad,
llm}, cmd/launcher). Discovery still flows through 'go list ./...', so
new packages are scanned automatically.

To make backend/go/{sam3-cpp,stablediffusion-ggml,whisper} typecheckable,
move their .cpp/.h sources into cpp/ subdirs (matching qwen3-tts-cpp /
acestep-cpp). Without this 'go list' rejects the package because Go does
not allow .cpp alongside .go without cgo.

Fix two real bugs found by lint in tests/integration/ (run only via
'make test-stores', not default CI): a stale zerolog reference left over
from the slog migration (c37785b7) and an unused 'os' import.

Assisted-by: Claude Code:Opus 4.7 (1M) [Bash] [Read] [Edit] [Write]
Signed-off-by: Richard Palethorpe <io@richiejp.com>

* ci(lint): generate proto sources and fetch full history

The lint job was failing for two reasons:

- pkg/grpc/proto/*.go is generated, not checked in. Several packages
  import it, so without 'make protogen-go' typecheck fails project-wide
  with "no required module provides package github.com/mudler/LocalAI/
  pkg/grpc/proto".

- golangci-lint's new-from-merge-base needs to git-merge-base the PR
  against master, but actions/checkout's default shallow clone doesn't
  fetch master. fetch-depth: 0 brings full history; the config now
  references origin/master (the remote-tracking branch that survives
  the shallow checkout) instead of bare master (which doesn't exist
  locally after checkout).

Assisted-by: Claude Code:Opus 4.7 (1M) [Bash] [Read] [Edit] [Write]
Signed-off-by: Richard Palethorpe <io@richiejp.com>

* ci(lint): stub react-ui/dist for go:embed glob

core/http/app.go has //go:embed react-ui/dist/*. The glob must match at
least one non-hidden entry or typecheck fails the whole core/http
package. We don't need the real React bundle to lint Go code, so just
touch an empty index.html to satisfy the embed.

Assisted-by: Claude Code:Opus 4.7 (1M) [Bash] [Read] [Edit] [Write]
Signed-off-by: Richard Palethorpe <io@richiejp.com>

---------

Signed-off-by: Richard Palethorpe <io@richiejp.com>
2026-04-28 22:07:44 +02:00
..
ci fix: roll out bluemonday Sanitize more widely (#3794) 2024-10-12 09:45:47 +02:00
gallery-agent fix(ci): switch gallery-agent to sigs.k8s.io/yaml (#9397) 2026-04-17 10:10:42 +02:00
ISSUE_TEMPLATE docs/examples: enhancements (#1572) 2024-01-18 19:41:08 +01:00
workflows chore: add golangci-lint with new-from-merge-base baseline (#9603) 2026-04-28 22:07:44 +02:00
bump_deps.sh feat: do not bundle llama-cpp anymore (#5790) 2025-07-18 13:24:12 +02:00
bump_docs.sh fix: github bump_docs.sh regex to drop emoji and other text (#2180) 2024-04-29 03:55:29 +00:00
check_and_update.py fix(ci): fixup checksum scanning pipeline (#3631) 2024-09-23 10:56:10 +02:00
checksum_checker.sh fix(ci): fixup correct path for check_and_update.py (#2777) 2024-07-11 23:05:43 +02:00
dependabot.yml feat: Add backend gallery (#5607) 2025-06-15 14:56:52 +02:00
FUNDING.yml Create FUNDING.yml (#725) 2023-07-09 13:39:00 +02:00
labeler.yml chore(ci): update labels 2025-02-13 09:58:19 +01:00
PULL_REQUEST_TEMPLATE.md feat(vllm): Allow to set quantization (#1094) 2023-09-22 15:52:38 +02:00
release.yml feat(p2p): Federation and AI swarms (#2723) 2024-07-08 22:04:06 +02:00
stale.yml feat: add PR template and stale configuration (#316) 2023-05-20 09:10:20 +02:00