Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/pages/licenses/devpod.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,8 @@ Some packages may only be included on certain architectures or operating systems
- [github.com/spf13/pflag](https://pkg.go.dev/github.com/spf13/pflag) ([BSD-3-Clause](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/spf13/pflag/LICENSE))
- [github.com/stoewer/go-strcase](https://pkg.go.dev/github.com/stoewer/go-strcase) ([MIT](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/stoewer/go-strcase/LICENSE))
- [github.com/takama/daemon](https://pkg.go.dev/github.com/takama/daemon) ([MIT](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/takama/daemon/LICENSE))
- [github.com/tailscale/hujson](https://pkg.go.dev/github.com/tailscale/hujson) ([BSD-3-Clause](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/tailscale/hujson/LICENSE))
- [github.com/tcnksm/go-gitconfig](https://pkg.go.dev/github.com/tcnksm/go-gitconfig) ([MIT](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/tcnksm/go-gitconfig/LICENSE))
- [github.com/tidwall/jsonc](https://pkg.go.dev/github.com/tidwall/jsonc) ([MIT](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/tidwall/jsonc/LICENSE))
- [github.com/tonistiigi/fsutil](https://pkg.go.dev/github.com/tonistiigi/fsutil) ([MIT](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/tonistiigi/fsutil/LICENSE))
- [github.com/tonistiigi/go-csvvalue](https://pkg.go.dev/github.com/tonistiigi/go-csvvalue) ([MIT](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/tonistiigi/go-csvvalue/LICENSE))
- [github.com/tonistiigi/units](https://pkg.go.dev/github.com/tonistiigi/units) ([MIT](https://github.com/skevetter/devpod/blob/HEAD/vendor/github.com/tonistiigi/units/LICENSE))
Expand Down
3 changes: 1 addition & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ require (
github.com/spf13/cobra v1.10.2
github.com/spf13/pflag v1.0.10
github.com/stretchr/testify v1.11.1
github.com/tailscale/hujson v0.0.0-20221223112325-20486734a56a
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the latest commits on tailscale/hujson to see if there are newer versions
gh api repos/tailscale/hujson/commits --jq '.[0:5] | .[] | "\(.sha[0:12]) \(.commit.committer.date) \(.commit.message | split("\n")[0])"'

Repository: skevetter/devpod

Length of output: 220


🌐 Web query:

tailscale hujson releases latest commits 2024

💡 Result:

  • GitHub releases: tailscale/hujson has no releases published on GitHub. [1]
  • Latest commit in 2024: The repo shows one commit in 2024, on Oct 10, 2024: 29efb4a — “Add Value.All method to iterate over all values (#35)”. [2]
  • Go module versions (proxy-visible): Go Packages lists only two pseudo-versions for the module:
    • v0.0.0-20260302212456-ecc657c15afd (Mar 2, 2026)
    • v0.0.0-20210909182915-05264adefaff (Sep 9, 2021) [3]

Sources: [1] [2] [3]


🌐 Web query:

tailscale/hujson github repository

💡 Result:

The GitHub repository is:

https://github.com/tailscale/hujson

It’s the Go implementation of HuJSON (“JSON for Humans”), used by Tailscale for policy/ACL files. [1]

Source:
[1] (pkg.go.dev)

Citations:


Update hujson to a more recent version.

The dependency swap from github.com/tidwall/jsonc to github.com/tailscale/hujson is correct. However, the pinned version v0.0.0-20221223112325-20486734a56a (December 2022) is significantly outdated. The Go module proxy shows a much newer pseudo-version available: v0.0.0-20260302212456-ecc657c15afd (March 2026), with continued development activity as recently as October 2024. Update to the latest commit.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@go.mod` at line 60, The go.mod currently pins github.com/tailscale/hujson to
an old pseudo-version (github.com/tailscale/hujson
v0.0.0-20221223112325-20486734a56a); update that require line to the newer
pseudo-version (e.g., v0.0.0-20260302212456-ecc657c15afd) by running `go get
github.com/tailscale/hujson@latest` or replacing the version in the require
statement and then run `go mod tidy` to ensure module graph is updated; ensure
the updated module line referencing github.com/tailscale/hujson is the only
change and run tests/build to verify compatibility.

github.com/takama/daemon v1.0.0
github.com/tidwall/jsonc v0.3.3
github.com/tonistiigi/fsutil v0.0.0-20251211185533-a2aa163d723f
github.com/u-root/u-root v0.16.0
go.uber.org/atomic v1.11.0
Expand Down Expand Up @@ -272,7 +272,6 @@ require (
github.com/tailscale/certstore v0.1.1-0.20231202035212-d3fa0460f47e // indirect
github.com/tailscale/go-winio v0.0.0-20231025203758-c4f33415bf55 // indirect
github.com/tailscale/goupnp v1.0.1-0.20210804011211-c64d0f06ea05 // indirect
github.com/tailscale/hujson v0.0.0-20221223112325-20486734a56a // indirect
github.com/tailscale/peercred v0.0.0-20250107143737-35a0c7bd7edc // indirect
github.com/tailscale/web-client-prebuilt v0.0.0-20250124233751-d4cd19a26976 // indirect
github.com/tailscale/wireguard-go v0.0.0-20250716170648-1d0488a3d7da // indirect
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -716,8 +716,6 @@ github.com/tc-hib/winres v0.2.1 h1:YDE0FiP0VmtRaDn7+aaChp1KiF4owBiJa5l964l5ujA=
github.com/tc-hib/winres v0.2.1/go.mod h1:C/JaNhH3KBvhNKVbvdlDWkbMDO9H4fKKDaN7/07SSuk=
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/jsonc v0.3.3 h1:RVQqL3xFfDkKKXIDsrBiVQiEpBtxoKbmMXONb2H/y2w=
github.com/tidwall/jsonc v0.3.3/go.mod h1:dw+3CIxqHi+t8eFSpzzMlcVYxKp08UP5CD8/uSFCyJE=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
Expand Down
14 changes: 11 additions & 3 deletions pkg/devcontainer/config/parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"unicode/utf8"

doublestar "github.com/bmatcuk/doublestar/v4"
"github.com/tidwall/jsonc"
"github.com/tailscale/hujson"
)

const DEVCONTAINER_FEATURE_FILE_NAME = "devcontainer-feature.json"
Expand All @@ -34,7 +34,11 @@ func ParseDevContainerFeature(folder string) (*FeatureConfig, error) {
}

featureConfig := &FeatureConfig{}
err = json.Unmarshal(jsonc.ToJSON(data), featureConfig)
normalized, err := hujson.Standardize(data)
if err != nil {
return nil, fmt.Errorf("parse jsonc: %w", err)
}
err = json.Unmarshal(normalized, featureConfig)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -82,7 +86,11 @@ func ParseDevContainerJSONFile(jsonFilePath string) (*DevContainerConfig, error)
}

devContainer := &DevContainerConfig{}
err = json.Unmarshal(jsonc.ToJSON(bytes), devContainer)
normalized, err := hujson.Standardize(bytes)
if err != nil {
return nil, fmt.Errorf("parse jsonc: %w", err)
}
err = json.Unmarshal(normalized, devContainer)
if err != nil {
return nil, err
}
Expand Down
Loading