Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Could not find file '/tmp/golangci-lint-action-problem-matchers.json' #4695

Closed
5 tasks done
d-honeybadger opened this issue May 3, 2024 · 21 comments · Fixed by #4700
Closed
5 tasks done

Could not find file '/tmp/golangci-lint-action-problem-matchers.json' #4695

d-honeybadger opened this issue May 3, 2024 · 21 comments · Fixed by #4700
Assignees
Labels
bug Something isn't working github_actions PR that update Github_actions code

Comments

@d-honeybadger
Copy link

d-honeybadger commented May 3, 2024

Welcome

Description of the problem

In the 1.58.0 release, github-actions output print fails w/ the following error: (GHA logs)

Error: Unable to process command '::add-matcher::/tmp/golangci-lint-action-problem-matchers.json' successfully.
Error: Could not find file '/tmp/golangci-lint-action-problem-matchers.json'

The same linting action is working fine w/ golangci-lint v1.57

Version of golangci-lint

$ golangci-lint --version
golangci-lint has version 1.58.0 built with go1.22.2 from 28b3813c on 2024-05-03T18:05:38Z

Configuration

--out-format=github-actions --path-prefix=src/core/kpp-api --config=../../.golangci.yml --timeout=10m
linters:
  enable:
    - bodyclose
    - containedctx
    - decorder
    - depguard
    - dogsled
    - dupword
    - errcheck
    - errchkjson
    - errname
    - errorlint
    - exhaustive
    - goconst
    - gocritic
    - gofmt
    - goimports
    - gomodguard
    - gosec
    - gosimple
    - govet
    - maintidx
    - makezero
    - misspell
    - musttag
    - nakedret
    - nilerr
    - nilnil
    - noctx
    - nolintlint
    - nosprintfhostport
    - revive
    - thelper
    - typecheck
    - unconvert
    - unused
    - usestdlibvars
    - whitespace
issues:
  include:
    - EXC0012 # EXC0012 revive: Annoying issue about not having a comment. The rare codebase has such comments
  exclude-rules:
    - path: '(.+)_test\.go'
      linters:
        # table-driven tests have growing lists of test cases
        # which trigger maintidx's "too complex" verdict
        - maintidx
linters-settings:
  depguard:
    rules:
      main:
        allow:
          - $gostd
          - bits.linode.com
          - helm.sh
          - k8s.io
          - sigs.k8s.io
          - dario.cat/mergo
          - filippo.io/age
          - github.com/aws/aws-sdk-go
          - github.com/gin-gonic/gin
          - github.com/gin-contrib/logger
          - github.com/go-logr
          - github.com/hashicorp
          - github.com/helm/helm/pkg/engine
          - github.com/linode
          - github.com/rs/zerolog
          - github.com/spf13
          - github.com/stretchr/testify/assert
          - github.com/go-git/go-billy/v5/osfs
          - github.com/go-git/go-git/v5
          - github.com/ianschenck/envflag
          - github.com/gin-contrib/logger
          - github.com/gin-contrib/graceful
          - github.com/swaggo
          - github.com/google
          - github.com/akamai/AkamaiOPEN-edgegrid-golang/v7
          - github.com/apex/log
          - github.com/crossplane/crossplane-runtime
          - github.com/prometheus/client_golang/prometheus
          - github.com/prometheus/common/expfmt
          - github.com/fsnotify/fsnotify
  revive:
    rules:
      - name: exported
        arguments: ["checkPrivateReceivers", "disableStutteringCheck"]

Go environment

$ go version && go env
go version go1.21.5 linux/amd64
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/tmp/tmp.g37yoMdf3y/gocache'
GOENV='/github/home/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/tmp/tmp.g37yoMdf3y/gomodcache'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/github/home/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/__t/go/1.21.5/x64'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/__t/go/1.21.5/x64/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.21.5'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='0'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'

Verbose output of running

$ golangci-lint cache clean
$ golangci-lint run -v
Running [/github/home/golangci-lint-1.58.0-linux-amd64/golangci-lint run --out-format=github-actions --path-prefix=src/core/kpp-api --config=${GITHUB_WORKSPACE}/src/.golangci.yml --timeout=10m --verbose] in [/__w/kpp-services/kpp-services/src/core/kpp-api] ...
  Error: Unable to process command '::add-matcher::/tmp/golangci-lint-action-problem-matchers.json' successfully.
  Error: Could not find file '/tmp/golangci-lint-action-problem-matchers.json'.
  
  level=info msg="[config_reader] Used config file ../../.golangci.yml"
  level=info msg="[lintersdb] Active 37 linters: [bodyclose containedctx decorder depguard dogsled dupword errcheck errchkjson errname errorlint exhaustive goconst gocritic gofmt goimports gomodguard gosec gosimple govet ineffassign maintidx makezero misspell musttag nakedret nilerr nilnil noctx nolintlint nosprintfhostport revive staticcheck thelper unconvert unused usestdlibvars whitespace]"
  level=info msg="[loader] Go packages loading at mode 575 (files|imports|name|exports_file|deps|types_sizes|compiled_files) took 39.4366455[31](https://bits.linode.com/CNS/kpp-services/actions/runs/263033/job/705302?pr=519#step:7:33)s"
  level=info msg="[runner/filename_unadjuster] Pre-built 0 adjustments in 9.265609ms"
  level=info msg="[linters_context/goanalysis] analyzers took 1m38.335811263s with top 10 stages: buildir: 1m16.889408652s, exhaustive: 3.512448189s, inspect: 3.473982183s, fact_deprecated: 2.290792748s, nilness: 2.204405153s, ctrlflow: 2.04248517s, printf: 1.796923649s, fact_purity: 1.476338989s, typedness: 796.471927ms, SA5012: 717.462302ms"
  level=info msg="[runner] Issues before processing: 19, after processing: 0"
  level=info msg="[runner] Processors filtering stat (out/in): cgo: 19/19, filename_unadjuster: 19/19, skip_dirs: 19/19, identifier_marker: 19/19, exclude-rules: 0/19, invalid_issue: 19/19, path_prettifier: 19/19, skip_files: 19/19, autogenerated_exclude: 19/19, exclude: 19/19"
  level=info msg="[runner] processing took 2.[32](https://bits.linode.com/CNS/kpp-services/actions/runs/263033/job/705302?pr=519#step:7:34)4684ms with stages: exclude-rules: 943.336µs, identifier_marker: 766.101µs, path_prettifier: 295.378µs, autogenerated_exclude: 187.176µs, skip_dirs: 80.122µs, filename_unadjuster: 36.801µs, cgo: 8.59µs, invalid_issue: 2.58µs, max_same_issues: 800ns, nolint: 780ns, uniq_by_line: 550ns, skip_files: 480ns, fixer: [35](https://bits.linode.com/CNS/kpp-services/actions/runs/263033/job/705302?pr=519#step:7:37)0ns, exclude: 260ns, sort_results: 220ns, diff: 190ns, severity-rules: 190ns, max_from_linter: 180ns, path_prefixer: 180ns, source_code: 150ns, path_shortener: 140ns, max_per_file_from_linter: 130ns"
  level=info msg="[runner] linters took 18.751607084s with stages: goanalysis_metalinter: 18.748486136s"
  level=info msg="File cache stats: 20 entries of total size 264.7KiB"
  level=info msg="Memory: 573 samples, avg is 358.4MB, max is 1583.7MB"
  level=info msg="Execution took 58.205542098s"
  
  golangci-lint found no issues
  Ran golangci-lint in 58474ms

A minimal reproducible example or link to a public repository

The issue isn't about any specific linting rule :shr

Validation

  • Yes, I've included all information above (version, config, etc.).
@d-honeybadger d-honeybadger added the bug Something isn't working label May 3, 2024
Copy link

boring-cyborg bot commented May 3, 2024

Hey, thank you for opening your first Issue ! 🙂 If you would like to contribute we have a guide for contributors.

@d-honeybadger d-honeybadger changed the title Github output problem-matchers.json disappears in 1.58 Github output problem-matchers.json disappears in v1.58.0 May 3, 2024
@ldez ldez self-assigned this May 3, 2024
@ldez
Copy link
Member

ldez commented May 3, 2024

Hello,

/tmp/golangci-lint-action-problem-matchers.json is a new element of v1.58, this file didn't exist before.

The file is created by the golangci-lint (only for the specific GitHub action format) before the print and the file is never removed.

I'll investigate, but if anyone has the same problem on the public repository, I'm interested in a link to your CI.

@ldez ldez added the github_actions PR that update Github_actions code label May 3, 2024
@ldez
Copy link
Member

ldez commented May 3, 2024

@d-honeybadger can I have your GHA workflow file?

@ldez ldez added the feedback required Requires additional feedback label May 3, 2024
@ldez ldez changed the title Github output problem-matchers.json disappears in v1.58.0 Could not find file '/tmp/golangci-lint-action-problem-matchers.json' May 3, 2024
@sfc-gh-raram
Copy link

I'm also experiencing this same issue. Curious to see what the issue is.

@ldez
Copy link
Member

ldez commented May 6, 2024

If you are facing the same problem, the best way to contribute is to provide the following information:

  • a link to a public repository
  • a workflow file
  • everything that describes precisely your environment

@kranurag7
Copy link

kranurag7 commented May 6, 2024

adding my workflow if it helps in reproducing this error.

Workflow file: https://github.com/syself/cluster-api-provider-hetzner/blob/d5283ddad87bd2046ab4e48f28f9dbf73f5301f2/.github/workflows/pr-lint.yml

Job: https://github.com/syself/cluster-api-provider-hetzner/actions/runs/8950020631/job/24614442431

PR introducing update to 1.58.0: syself/cluster-api-provider-hetzner#1288

We use renovate to update golangci-lint and above PR introduced the change and CI reported the error mentioned above.

No rush, please take your time fixing this.
Thank you for all the work you do.

@ldez
Copy link
Member

ldez commented May 6, 2024

You are not using the GitHub Action but the Docker image or the binary.
I think it's a bad idea to use --out-format=github-actions in this context.

https://github.com/syself/cluster-api-provider-hetzner/blob/d5283ddad87bd2046ab4e48f28f9dbf73f5301f2/Makefile#L689-L700

@kranurag7
Copy link

Yes, we want to use the same thing locally and in CI that's why we run the workflow inside a container. I'll look into updating the output format.

@ldez
Copy link
Member

ldez commented May 6, 2024

github-actions format has a lot of limitations (ex: max 10 annotations), I think the default output format (i.e. colored-line-number) will be better in your context.

In all cases, thank you for providing a reproducible context ❤️

@d-honeybadger
Copy link
Author

d-honeybadger commented May 6, 2024

Sorry for the delay @ldez
It's on enterprize GHA (fwiw this could be part of the issue 🤷 ), so here's the workflow file snippet:

name: Lint, test, build - reusable

on:
  workflow_call:
    # inputs here, shouldn't be relevant

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  lint:
    runs-on: self-hosted
    container: debian:bullseye-slim
    steps:
      - uses: actions/checkout@v3
      # Default GOCACHE/GOMODCACHE paths are in ${HOME} which is mounted from
      # host and may contain partially written fragments (e.g a module with some files missing)
      # if the mount snapshot is taken at the time of installing packages/building
      - name: Set Go Cache Paths
        run: |
          CACHE_DIR=$(mktemp -d)
          mkdir ${CACHE_DIR}/gocache
          mkdir ${CACHE_DIR}/gomodcache
          echo "GOCACHE=${CACHE_DIR}/gocache" >> ${GITHUB_ENV}
          echo "GOMODCACHE=${CACHE_DIR}/gomodcache" >> ${GITHUB_ENV}
      - uses: actions/setup-go@v4
        with:
          go-version-file: 'src/go.mod'
          cache: true
          cache-dependency-path: 'src/go.sum'
        # Go stamps binaries with version control (read: git) info,
        # and when the git repo is messed up, the build fails.
        # This also affects linting.
        # And git repo is currently messed up when running checkout within a container:
        # https://github.com/actions/checkout/issues/1169
      - name: Fix for https://github.com/actions/checkout/issues/1169
        run: |
          apt update && apt install -y git ca-certificates
          git config --system --add safe.directory $(pwd)
      - name: Lint
        uses: actions/golangci-lint@v3
        with:
          working-directory: ${{ inputs.path }}
          args: --config=${GITHUB_WORKSPACE}/src/.golangci.yml --timeout=10m

# more jobs here, but the workflow fails even with those other jobs skipped

@d-honeybadger
Copy link
Author

The error is intermittent btw, though I get more failures than successes

@ldez
Copy link
Member

ldez commented May 6, 2024

can you try to update actions/golangci-lint@v3 to actions/golangci-lint@v5?

Note: I recommend updating:

  • actions/checkout@v3 to actions/checkout@v4
  • actions/setup-go@v4 to actions/setup-go@v5

@vcabbage
Copy link

vcabbage commented May 6, 2024

In our case the error happened because we run commands inside a Docker container inside the runner (ie, executing docker run ... in the runner). Since /tmp wasn't mounted in the container the matchers JSON file wasn't visible to the runner. I realize this is unusual, though we do have our reasons. We've worked around this by mounting /tmp into the container.

It would be helpful to to be able to explicitly specify the path the file is written to so we don't have to mount all of /tmp or assume that the file will always be /tmp/golangci-lint-action-problem-matchers.json.

@d-honeybadger
Copy link
Author

can you try to update actions/golangci-lint@v3 to actions/golangci-lint@v5?

Didn't help unfortunately

@d-honeybadger
Copy link
Author

d-honeybadger commented May 6, 2024

Here's the container setup btw

/usr/bin/docker create --name c6df9175981f4befaa7b629a8fc34ac0_debianbullseyeslim_e9979d --label 90e3d9 --workdir /__w/kpp-services/kpp-services --network github_network_361e39776d24465b946a473126b88bee  -e "HOME=/github/home" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/opt/actions-runner/_work":"/__w" -v "/opt/actions-runner/externals":"/__e":ro -v "/opt/actions-runner/_work/_temp":"/__w/_temp" -v "/opt/actions-runner/_work/_actions":"/__w/_actions" -v "/opt/hostedtoolcache":"/__t" -v "/opt/actions-runner/_work/_temp/_github_home":"/github/home" -v "/opt/actions-runner/_work/_temp/_github_workflow":"/github/workflow" --entrypoint "tail" debian:bullseye-slim "-f" "/dev/null"

I've had an issue w/ shared go cache directories inside $HOME, where unrelated actions would interfere w/ each other, but from what I can tell so far /tmp isn't shared across containers 🤔

@ldez
Copy link
Member

ldez commented May 6, 2024

I don't really know how a self-hosted containerized agent works, but if it uses instances by step it's a problem.

The documentation about problem matchers is weak and it's difficult to know when the file is used by the CI.

You can try to enable the debug logging: https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md#file-property-getting-dropped


As a temporary workaround, you can disable annotations: https://github.com/golangci/golangci-lint-action?tab=readme-ov-file#annotations.

Another possibility is to create the file /tmp/golangci-lint-action-problem-matchers.json with the following content:

{"problemMatcher":[{"owner":"golangci-lint-action","severity":"error","pattern":[{"regexp":"^([^\\s]+)\\s+([^:]+):(\\d+):(?:(\\d+):)?\\s+(.+)$","file":2,"line":3,"column":4,"severity":1,"message":5}]}]}

Do you really use annotations? If yes can you explain why exactly? (It's to better understand the usage of annotations)

Same question for @vcabbage

@d-honeybadger
Copy link
Author

d-honeybadger commented May 6, 2024

The container is per-job, so checkout, setup-go, and linting all run in the same one.
Is the problem matchers file created by golangci-lint itself?

Do you really use annotations? If yes can you explain why exactly?

Annotations in github are handy just cause it's faster than opening up job logs and finding all the linting errors by filename and line.

Thanks for the workaround suggestions! So far I just set the version to 1.57 but going to poke around more in the github runner to get to the bottom of this later, will report if I find anything.
Unless you beat me with #4699 😄 in which case will be a happy user of the "old" github-actions format

@ldez
Copy link
Member

ldez commented May 6, 2024

Is the problem matchers file created by golangci-lint itself?

The problem is the container: the file is created inside the container but the GitHub Action system doesn't have access to this file (because it's not on the file system)

@ldez
Copy link
Member

ldez commented May 6, 2024

After digging more around problem matchers and the annotations system, I think that having "annotations format" (old or new) inside golangci-lint was not a good idea.

The majority of GitHub Actions uses an internal system to handle that instead of relying on the GitHub format produced by a binary.

For example, the actions/setup-go uses problem matchers: https://github.com/actions/setup-go/blob/main/matchers.json
This is only inside the GHA and not inside Go 😸, and I think it's the right approach.

I'm thinking of deprecating github-actions format and parsing the output inside the official GitHub action for golangci-lint.

@ldez
Copy link
Member

ldez commented May 6, 2024

To share some thoughts: in fact, the format github-actions is useless because (based on tests on GitHub Actions) the CI can handle that without this specific format.
The format colored-line-number is automatically parsed by GitHub, and based on that it creates the annotations.

@ldez ldez removed the feedback required Requires additional feedback label May 6, 2024
@ldez
Copy link
Member

ldez commented May 6, 2024

I know why the colored-line-number is already handled by GitHub Actions: it's because the output match with problem matchers of actions/setup-go.

If I disable the problem matchers of Go (echo "::remove-matcher owner=go::") the annotations disappear.

I will:

I still think that the github-actions format is useless, problem matchers are the official solution to play with annotations, so the format will be deprecated inside golangci-lint.

In conclusion:

@ldez ldez closed this as completed in #4700 May 7, 2024
gregtyler added a commit to ministryofjustice/opg-data-lpa-store that referenced this issue May 7, 2024
Based on [golangci/golangci-lint#4695](golangci/golangci-lint#4695), `colored-line-number` is a better formatter than `github-actions`
gregtyler added a commit to ministryofjustice/opg-data-lpa-store that referenced this issue May 7, 2024
* [SECURITY] Renovate Update Security Alerts [SECURITY]

* Remove go-lint cache

It's serving old cache files to newer versions of go-lint

* Change formatter for go-lint

Based on [golangci/golangci-lint#4695](golangci/golangci-lint#4695), `colored-line-number` is a better formatter than `github-actions`

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Greg Tyler <gregtyler@users.noreply.github.com>
felipemarinho97 added a commit to felipemarinho97/navidrome that referenced this issue Aug 7, 2024
* Bump golang.org/x/sync from 0.6.0 to 0.7.0

Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.6.0 to 0.7.0.
- [Commits](golang/sync@v0.6.0...v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump github.com/onsi/gomega from 1.31.1 to 1.32.0

Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.31.1 to 1.32.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](onsi/gomega@v1.31.1...v1.32.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix DiscTitle OpenSubsonic compatibility. Closes navidrome#2929

* Bump github.com/onsi/ginkgo/v2 from 2.15.0 to 2.17.1

Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.15.0 to 2.17.1.
- [Release notes](https://github.com/onsi/ginkgo/releases)
- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)
- [Commits](onsi/ginkgo@v2.15.0...v2.17.1)

---
updated-dependencies:
- dependency-name: github.com/onsi/ginkgo/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump github.com/pressly/goose/v3 from 3.18.0 to 3.19.2

Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.18.0 to 3.19.2.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](pressly/goose@v3.18.0...v3.19.2)

---
updated-dependencies:
- dependency-name: github.com/pressly/goose/v3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update Go to 1.22.2 and TagLib to 2.0.1 (navidrome#2946)

* Bump github.com/pelletier/go-toml/v2 from 2.1.1 to 2.2.0

Bumps [github.com/pelletier/go-toml/v2](https://github.com/pelletier/go-toml) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/pelletier/go-toml/releases)
- [Changelog](https://github.com/pelletier/go-toml/blob/v2/.goreleaser.yaml)
- [Commits](pelletier/go-toml@v2.1.1...v2.2.0)

---
updated-dependencies:
- dependency-name: github.com/pelletier/go-toml/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump github.com/go-chi/jwtauth/v5 from 5.3.0 to 5.3.1

Bumps [github.com/go-chi/jwtauth/v5](https://github.com/go-chi/jwtauth) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/go-chi/jwtauth/releases)
- [Commits](go-chi/jwtauth@v5.3.0...v5.3.1)

---
updated-dependencies:
- dependency-name: github.com/go-chi/jwtauth/v5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix function name in comment (navidrome#2947)

Signed-off-by: looklose <shishuaiqun@yeah.net>

* Fix a few mistakes in the French translation (navidrome#2872)

Co-authored-by: Deluan Quintão <deluan@navidrome.org>

* Ignore formatting diffs when checking for POEditor changes

* Fix some typos in comments (navidrome#2949)

Signed-off-by: oftenoccur <ezc5@sina.com>

* Add make target to build docker image

* Bump follow-redirects from 1.15.4 to 1.15.6 in /ui (navidrome#2911)

Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](follow-redirects/follow-redirects@v1.15.4...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump @testing-library/jest-dom from 6.2.0 to 6.4.2 in /ui (navidrome#2845)

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.2.0 to 6.4.2.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](testing-library/jest-dom@v6.2.0...v6.4.2)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump prettier from 3.2.2 to 3.2.5 in /ui (navidrome#2844)

Bumps [prettier](https://github.com/prettier/prettier) from 3.2.2 to 3.2.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.2.2...3.2.5)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove deprecation warning about `notify`

* Fix jukebox mode under Windows (navidrome#2774)

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Use named pipe for socket path under windows during mpv playback, change function name, unexport function

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Fix typo

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Early return for Close on Windows

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Update import and run prettier

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Update function name

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Create track_close files for both platforms and move MpvTrack Close into new file

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Create SocketName function for both platforms, restore name of TempFileName

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Add missing params to SocketName on windows

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* Unexport SocketName, use socketName in NewTrack

---------

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* Bump github.com/pelletier/go-toml/v2 from 2.2.0 to 2.2.1 (navidrome#2956)

Bumps [github.com/pelletier/go-toml/v2](https://github.com/pelletier/go-toml) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/pelletier/go-toml/releases)
- [Changelog](https://github.com/pelletier/go-toml/blob/v2/.goreleaser.yaml)
- [Commits](pelletier/go-toml@v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: github.com/pelletier/go-toml/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump react-icons from 5.0.1 to 5.1.0 in /ui (navidrome#2957)

Bumps [react-icons](https://github.com/react-icons/react-icons) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/react-icons/react-icons/releases)
- [Commits](react-icons/react-icons@v5.0.1...v5.1.0)

---
updated-dependencies:
- dependency-name: react-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Externalize MPV command template (navidrome#2948)

* externalise MPVTemplate

* Remove unnecessary comment

---------

Co-authored-by: Deluan <deluan@navidrome.org>

* Bump golang.org/x/net from 0.21.0 to 0.23.0 (navidrome#2962)

Bumps [golang.org/x/net](https://github.com/golang/net) from 0.21.0 to 0.23.0.
- [Commits](golang/net@v0.21.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix issue in navidrome#2767 (comment)

* Block regular users from changing their own playlists ownership

* Allow comments in the NSP file.

See comment navidrome#1417 (comment)

* Fix typo

* Include MPV in release Docker image. Refers to navidrome#2910

* Bump github.com/onsi/gomega from 1.32.0 to 1.33.0 (navidrome#2968)

Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.32.0 to 1.33.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](onsi/gomega@v1.32.0...v1.33.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Handling long playlist comments (navidrome#2973)

Closes navidrome#1737

* wrapping playlist comment in a <Collapse> element

* Extract common collapsible logic into a component

---------

Co-authored-by: Deluan <deluan@navidrome.org>

* Use the RealIP middleware also behind a reverse proxy (navidrome#2858)

* Use the RealIP middleware only behind a reverse proxy

* Fix proxy ip source in tests

* Fix test for PR#2087

The PR did not update the test after changing the behavior, but the test still
passed because another condition was preventing the user from being created in
the test.

* Use RealIP even without a trusted reverse proxy

* Use own type for context key

* Fix casing to follow go's conventions

* Do not apply RealIP middleware twice

* Fix IP source in logs

The most interesting data point in the log message is the proxy's IP, but
having the client IP too can help identify integration issues.

* Fix scrobble error spam in the logs.

Relates to navidrome#2831 and navidrome#2975

* Add OpenSubsonic channelCount

* Fix typo in comment (navidrome#2974)

* Bump github.com/pressly/goose/v3 from 3.19.2 to 3.20.0

* Bump Go dependencies (navidrome#2976)

* Fix build

* Bump dependencies

* Bump github.com/spf13/viper from 1.15.0 to 1.18.2

* Add support for Reverse Proxy auth in Subsonic endpoints  (navidrome#2558)

* feat(subsonic): Add support for Reverse Proxy auth - navidrome#2557

Signed-off-by: Jeremiah Menétrey <superjun1@gmail.com>

* Small refactoring

---------

Signed-off-by: Jeremiah Menétrey <superjun1@gmail.com>
Co-authored-by: Deluan Quintão <deluan@navidrome.org>

* Add AlbumPlayCountMode config option (navidrome#2803)

Closes navidrome#1032

* feat(album_repository.go): add kodi-style album playcount option - navidrome#1032

Signed-off-by: Victor van der Veen <vvdveen@gmail.com>

* fix format issue and remove reference to kodi (now normalized)

Signed-off-by: Victor van der Veen <vvdveen@gmail.com>

* reduced complexity but added rounding

Signed-off-by: Victor van der Veen <vvdveen@gmail.com>

* Use constants for AlbumPlayCountMode values

---------

Signed-off-by: Victor van der Veen <vvdveen@gmail.com>
Co-authored-by: Deluan <deluan@navidrome.org>

* Add tests for AlbumPlayCountMode

* Add tests for AlbumPlayCountMode, change the calc to match the request from navidrome#1032

* Remove AlbumPlayCountMode from command line options

* Load mime_types from external file

* Refactor DB Album mapping to model.Album

* Refactor loadGenres, remove duplication

* Use signal.NotifyContext

* Fix signaler on Windows

* Fix int types in OpenSubsonic responses.

Refer to https://support.symfonium.app/t/symfonium-sync-crashes-when-tpos-is-not-an-int/4204

* Fix AlbumPlayCountMode. Closes navidrome#2984

* Fix PlaylistTracks's loadAllGenres. Fix navidrome#2988

* Bump Go dependencies

* Sort repeated lyrics that may be out of order (navidrome#2989)

With synchronized lyrics with repeated text, there is not a guarantee that the repeat is in order (e.g. `[00:00.00][00:10.00] a\n[00:05.00]b`).
This change will post-process lyrics with repeated timestamps in one line to ensure that it is always sorted.

* Fix typo

* Add `HTTPSecurityHeaders.CustomFrameOptionsValue` option.

Requested in navidrome#248 (comment)

* Fix CollapsibleComment in PlaylistDetails. Closes navidrome#2992

* Pin golangci-lint-action version as a workaround to fix the pipeline.

See golangci/golangci-lint#4695

* Improves golangci-lint configuration and workflow (navidrome#3004)

* chore: the default Go version is based on the go.mod

* chore: use linter configuration instead of exclude-rules

* chore: update workflow

* Persist adjusted volume (navidrome#2997)

Co-authored-by: Deluan Quintão <deluan@navidrome.org>

* Guard against missing active track (navidrome#2996)

Co-authored-by: Deluan Quintão <deluan@navidrome.org>

* Bump Go dependencies

* Limit access to Jukebox for admins only (configurable).

Closes navidrome#2849

* Fix ambiguous column when sorting media_files by created_at.

Fix navidrome#3006

* Change default transcodings to a proper typed struct

* Fix migration package name mismatch

* Make dependency injection more consistent

* Terminate all MPV instances when stopping Navidrome (navidrome#3008)

* Terminate all mpv instances when stopping Navidrome

* Exit trackSwitcher goroutine when terminating

* Remove potential race condition when starting the Playback device

* Fix lint error

* Removed unused and unneeded vars/functions

* Use device short name in log

* Small refactor

* Small nitpick

* Make start functions more uniform

* Make sorting lists by name/title case-insensitive (navidrome#2993)

* Make sort by order_* fields case-insensitive.

* Sort internet radios by name case-insensitive

* Clean up runNavidrome function

* Remove unused code

* Simplify normalized AlbumPlayCountMode calc

* fix: languageName for Persian (navidrome#3011)

"انگلیسی" is "English"

* Update Go to 1.22.3

* Fix M3U mimetype on Debian Bullseye

* Replace sync.WaitGroup with more appropriate errgroup.Group

* Bump actions/stale and dessant/lock-threads versions

* Bump actions/github-script to v7

* Add Catppuccin Macchiato Theme (navidrome#3014)

* Added Catppuccin Macchiato theme

* fixed index.js formatting

* Do not panic if when updatePlaylist is called with a non-existent ID.

Fix navidrome#2876

* Read sampleRate from audio files

* Add sampleRate to the DB

* Add samplingRate to OpenSubsonic responses

* Fix "Add download link to PR" workflow

* Refactor merge.FS

* Refactor cache.HTTPClient

* Uses Unix milliseconds support from standard Go lib

* Refactor random functions

* Simplify random.Int64 usage with generics

* Remove duplicated test

* Revert "Add download link to PR" workflow

* Change dsf mime-type to audio/x-dsf.

Fix navidrome#3021

* Update Go to 1.22.3

* Refactor to use more Go 1.22 features

* Rename MediaFolder to Library

* Store MusicFolder as a library in DB

* Associate main entities with library

* Fix race condition

* fix bug in jukebox: property unavailable (navidrome#3024)

* fix bug in jukebox: property unavailable

* fix lint error

* Fix memory leak in CachedGenreRepository (navidrome#3031)

that the scanner was run, the ttlcache was also created each time.
This caused (under testing with 166 genres in the database) the
memory consumed by navidrome to 101.18MB over approx 3 days; 96%
of which is in instances of this cache. Swapping to a singleton
has reduced this to down to ~ 2.6MB

Co-authored-by: Rob Emery <git@mintsoft.net>

* Improve resizeImage code readability

* Simplify image format detection code

* Simplify resources.FS

* Refactor random.WeightedChooser, unsing generics

* Fix lint error

* Always run docker steps (navidrome#3034)

* Fix docker publishing for PRs

* Revert "Fix docker publishing for PRs"

This reverts commit 15c9a0d.

* Revert "Always run docker steps (navidrome#3034)"

This reverts commit 5d41165.

* Deterministic pagination in random albums sort (navidrome#1841)

* Deterministic pagination in random albums sort

* Reseed on first random page

* Add unit tests

* Use rand in Subsonic API

* Use different seeds per user on SEEDEDRAND() SQLite3 function

* Small refactor

* Fix id mismatch

* Add seeded random to media_file (subsonic endpoint `getRandomSongs`)

* Refactor

* Remove unneeded import

---------

Co-authored-by: Deluan <deluan@navidrome.org>

* Add missing Test function

* Make first WebUI random page stick

* Update caniuse-lite

* Fix 32 bits builds

* Fix G404 gosec lint error

* Update Ukrainian translations (navidrome#3029)

Co-authored-by: deluan <331353+deluan@users.noreply.github.com>

* Show number of results from a query in the logs

* Bump github.com/matoous/go-nanoid/v2 from 2.0.0 to 2.1.0 (navidrome#3038)

Bumps [github.com/matoous/go-nanoid/v2](https://github.com/matoous/go-nanoid) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/matoous/go-nanoid/releases)
- [Commits](matoous/go-nanoid@v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: github.com/matoous/go-nanoid/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Optimize SQLite3 access. Mainly separate read access from write access.

Based on tips from https://archive.is/Xfjh6#selection-257.0-278.0

* Replace panics with log.Fatals

* Fix XML marshaling of OpenSubsonic structured lyrics (navidrome#3041)

* Revert isDBInitialized

* Fix image stuttering (navidrome#3035)

* Fix image stuttering.

* Fix docker publishing for PRs

* Write tests for new square parameter.

* Simplify code for createImage.

---------

Co-authored-by: Deluan Quintão <deluan@navidrome.org>

* Small optimization in MediaFiles.ToAlbum()

* Bump github.com/onsi/ginkgo/v2 from 2.17.3 to 2.19.0 (navidrome#3054)

Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.17.3 to 2.19.0.
- [Release notes](https://github.com/onsi/ginkgo/releases)
- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)
- [Commits](onsi/ginkgo@v2.17.3...v2.19.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/ginkgo/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Simplify dbx wrapper

* Bump github.com/spf13/viper from 1.18.2 to 1.19.0 (navidrome#3068)

Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.18.2 to 1.19.0.
- [Release notes](https://github.com/spf13/viper/releases)
- [Commits](spf13/viper@v1.18.2...v1.19.0)

---
updated-dependencies:
- dependency-name: github.com/spf13/viper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump prettier from 3.2.5 to 3.3.0 in /ui (navidrome#3069)

Bumps [prettier](https://github.com/prettier/prettier) from 3.2.5 to 3.3.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.2.5...3.3.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix tests expectations

* Refactor string utilities into its own package `str`

* Small refactoring

* Replace gg.If with cmp.Or

* Initialize Index Groups regex just once

* More micro-optimizations

* Small refactoring

* Fix race condition in external metadata retrieval

* Increase artist image url sizes.

See https://support.symfonium.app/t/artist-picture-less-compressed/4447

* Change resized image cache key

* Add R128_{TRACK,ALBUM}_GAIN support to the scanner (navidrome#3072)

* Add R128 gain tags support to the scanner

* Add R128 test to metadata_internal_test.go

* Pass explicit tag names to getGainValue function

* Don't expose `fullText` data in the Native API

* Bump prettier from 3.3.0 to 3.3.1 in /ui

Bumps [prettier](https://github.com/prettier/prettier) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.3.0...3.3.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Do not use lastFM api key and secret to determine if LastFM.Enabled should be set.

* Increase artist image url sizes.

See https://support.symfonium.app/t/artist-picture-less-compressed/4447

* Bump uuid from 9.0.1 to 10.0.0 in /ui

Bumps [uuid](https://github.com/uuidjs/uuid) from 9.0.1 to 10.0.0.
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](uuidjs/uuid@v9.0.1...v10.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump react-icons from 5.1.0 to 5.2.1 in /ui

Bumps [react-icons](https://github.com/react-icons/react-icons) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/react-icons/react-icons/releases)
- [Commits](react-icons/react-icons@v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: react-icons
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump golang.org/x/image from 0.16.0 to 0.17.0

Bumps [golang.org/x/image](https://github.com/golang/image) from 0.16.0 to 0.17.0.
- [Commits](golang/image@v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/image
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump clsx from 2.1.0 to 2.1.1 in /ui

Bumps [clsx](https://github.com/lukeed/clsx) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/lukeed/clsx/releases)
- [Commits](lukeed/clsx@v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: clsx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump ejs from 3.1.9 to 3.1.10 in /ui

Bumps [ejs](https://github.com/mde/ejs) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](mde/ejs@v3.1.9...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump @testing-library/jest-dom from 6.4.2 to 6.4.5 in /ui

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.4.2 to 6.4.5.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](testing-library/jest-dom@v6.4.2...v6.4.5)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump github.com/prometheus/client_golang from 1.19.0 to 1.19.1

Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.19.0 to 1.19.1.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](prometheus/client_golang@v1.19.0...v1.19.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix album/media file random sort (navidrome#3089)

* Add http headers to trace log

* Wrap ttlcache in our own SimpleCache implementation

* Also use SimpleCache in cache.HTTPClient

* Upgrade to ttlcache/v3

* Evict expired items from SimpleCache

* Don't panic on PostScan errors. Fix navidrome#3118

* Bump golang.org/x/image from 0.17.0 to 0.18.0 (navidrome#3119)

Bumps [golang.org/x/image](https://github.com/golang/image) from 0.17.0 to 0.18.0.
- [Commits](golang/image@v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: golang.org/x/image
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github.com/lestrrat-go/jwx/v2 from 2.0.21 to 2.1.0 (navidrome#3113)

Bumps [github.com/lestrrat-go/jwx/v2](https://github.com/lestrrat-go/jwx) from 2.0.21 to 2.1.0.
- [Release notes](https://github.com/lestrrat-go/jwx/releases)
- [Changelog](https://github.com/lestrrat-go/jwx/blob/develop/v2/Changes)
- [Commits](lestrrat-go/jwx@v2.0.21...v2.1.0)

---
updated-dependencies:
- dependency-name: github.com/lestrrat-go/jwx/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github.com/go-chi/chi/v5 from 5.0.12 to 5.0.14 (navidrome#3115)

Bumps [github.com/go-chi/chi/v5](https://github.com/go-chi/chi) from 5.0.12 to 5.0.14.
- [Release notes](https://github.com/go-chi/chi/releases)
- [Changelog](https://github.com/go-chi/chi/blob/master/CHANGELOG.md)
- [Commits](go-chi/chi@v5.0.12...v5.0.14)

---
updated-dependencies:
- dependency-name: github.com/go-chi/chi/v5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github.com/pressly/goose/v3 from 3.20.0 to 3.21.1 (navidrome#3114)

Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.20.0 to 3.21.1.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](pressly/goose@v3.20.0...v3.21.1)

---
updated-dependencies:
- dependency-name: github.com/pressly/goose/v3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump prettier from 3.3.1 to 3.3.2 in /ui (navidrome#3097)

Bumps [prettier](https://github.com/prettier/prettier) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump @testing-library/jest-dom from 6.4.5 to 6.4.6 in /ui (navidrome#3096)

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.4.5 to 6.4.6.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](testing-library/jest-dom@v6.4.5...v6.4.6)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump braces from 3.0.2 to 3.0.3 in /ui (navidrome#3085)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github.com/spf13/cobra from 1.8.0 to 1.8.1 (navidrome#3095)

Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](spf13/cobra@v1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: github.com/spf13/cobra
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove unnecessary annotation table primary key

* Add Nuclear Theme (navidrome#3098)

* fix background color for nord theme (navidrome#3124)

* Bump github.com/go-chi/chi/v5 from 5.0.14 to 5.1.0 (navidrome#3126)

Bumps [github.com/go-chi/chi/v5](https://github.com/go-chi/chi) from 5.0.14 to 5.1.0.
- [Release notes](https://github.com/go-chi/chi/releases)
- [Changelog](https://github.com/go-chi/chi/blob/master/CHANGELOG.md)
- [Commits](go-chi/chi@v5.0.14...v5.1.0)

---
updated-dependencies:
- dependency-name: github.com/go-chi/chi/v5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github.com/unrolled/secure from 1.14.0 to 1.15.0 (navidrome#3127)

Bumps [github.com/unrolled/secure](https://github.com/unrolled/secure) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/unrolled/secure/releases)
- [Commits](unrolled/secure@v1.14.0...v1.15.0)

---
updated-dependencies:
- dependency-name: github.com/unrolled/secure
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix album sorting in Artist page

* Remove unnecessary Fragment component.

* Add Auto-Import toggle switch to playlists list view.

* Fix race condition

* Bump github.com/go-chi/httprate from 0.9.0 to 0.10.0 (navidrome#3160)

Bumps [github.com/go-chi/httprate](https://github.com/go-chi/httprate) from 0.9.0 to 0.10.0.
- [Commits](go-chi/httprate@v0.9.0...v0.10.0)

---
updated-dependencies:
- dependency-name: github.com/go-chi/httprate
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add Hungarian language (navidrome#3157)

* Use SHA256 in Gravatar URLs

* Fix "Cannot read properties of undefined". Closes navidrome#3070

* Bump github.com/microcosm-cc/bluemonday from 1.0.26 to 1.0.27 (navidrome#3141)

Bumps [github.com/microcosm-cc/bluemonday](https://github.com/microcosm-cc/bluemonday) from 1.0.26 to 1.0.27.
- [Release notes](https://github.com/microcosm-cc/bluemonday/releases)
- [Commits](microcosm-cc/bluemonday@v1.0.26...v1.0.27)

---
updated-dependencies:
- dependency-name: github.com/microcosm-cc/bluemonday
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github.com/onsi/gomega from 1.33.1 to 1.34.0 (navidrome#3176)

Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.33.1 to 1.34.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](onsi/gomega@v1.33.1...v1.34.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Use userId in player, other fixes (navidrome#3182)

* [bugfix] player: use userId, other fixes

This PR primarily resolves navidrome#1928 by switching the foreign key of `player` from `user.user_name` to `user.id`.
There are also a few other fixes/changes:

- For some bizarre reason, `ip_address` is never returned from `read`/`get`. Change the field to `ip`, which works. Somehow
- Update `players_test.go` mock to also check for user agent, replicating the actual code
- Update `player_repository.go` `isPermitted` to check user id. I don't know how this worked before...
- tests!
- a few places referred to `typ`, when it is really `userAgent`. Change the field names

* baseRequest -> selectPlayer

* remove comment

* update migration, make all of persistence foreign key enabled

* maybe don't forget to save the file first

* Use same key for replaygain's preAmp (navidrome#3184)

Resolves navidrome#2933. To prevent this from happening again, make the localstorage keys consts for set/get

* Fix Player filter

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: looklose <shishuaiqun@yeah.net>
Signed-off-by: oftenoccur <ezc5@sina.com>
Signed-off-by: apkatsikas <apkatsikas@gmail.com>
Signed-off-by: Jeremiah Menétrey <superjun1@gmail.com>
Signed-off-by: Victor van der Veen <vvdveen@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Deluan <deluan@navidrome.org>
Co-authored-by: looklose <166388131+looklose@users.noreply.github.com>
Co-authored-by: Cyrille <2franix@users.noreply.github.com>
Co-authored-by: oftenoccur <166520808+oftenoccur@users.noreply.github.com>
Co-authored-by: Andrew Katsikas <apkatsikas@gmail.com>
Co-authored-by: Jonathan <jonathan.vogt@allcloud.io>
Co-authored-by: Tim <TimHiller@live.de>
Co-authored-by: crazygolem <crazygolem@users.noreply.github.com>
Co-authored-by: Anna Smith <155628741+socialsister@users.noreply.github.com>
Co-authored-by: vvdveen <vvdveen@gmail.com>
Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
Co-authored-by: Matthias Schmidt <matthias.schmidt@gmail.com>
Co-authored-by: Valeri Sokolov <ulfurinn@ulfurinn.net>
Co-authored-by: edthu <127602296+edthu@users.noreply.github.com>
Co-authored-by: Fynn Petersen-Frey <10599762+fyfrey@users.noreply.github.com>
Co-authored-by: Rob Emery <mintsoft@users.noreply.github.com>
Co-authored-by: Rob Emery <git@mintsoft.net>
Co-authored-by: Guilherme Souza <32180229+gqgs@users.noreply.github.com>
Co-authored-by: deluan <331353+deluan@users.noreply.github.com>
Co-authored-by: Drew Weymouth <dweymouth@users.noreply.github.com>
Co-authored-by: Caio Cotts <caio@cotts.com.br>
Co-authored-by: kartikynwa <kartik.ynwa@gmail.com>
Co-authored-by: gruneforth <114325145+gruneforth@users.noreply.github.com>
Co-authored-by: Caio Cotts <caio@hyperion.lan>
Co-authored-by: Soderes <kennex@protonmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working github_actions PR that update Github_actions code
Projects
None yet
5 participants