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

Release 0.33.0 #10636

Draft
wants to merge 61 commits into
base: release
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
c5586d5
chore: bump master to 0.33.0-dev
lidel Oct 30, 2024
1ca0ae0
fix(autotls): store certificates at the location from the repo path (…
aschmahmann Oct 30, 2024
d4ae7fa
chore: update deps (#10569)
aschmahmann Nov 4, 2024
14ec550
chore(github): update bug-report.yml
lidel Nov 4, 2024
e17dc21
chore: go-ipfs-cmds@v0.14.0 (#10571)
lidel Nov 5, 2024
4009ad3
chore: stop using go-homedir (#10568)
gammazero Nov 5, 2024
1512ec5
chore: boxo v0.24.3 and p2p-forge v0.0.2 (#10572)
lidel Nov 7, 2024
5d2f536
feat: ipfs-webui v4.4.0 (#10574)
lidel Nov 7, 2024
71048b7
chore(ci): adjust timeout in docker job
lidel Nov 7, 2024
e80e821
fix: go-libp2p-kad-dht v0.28.0 (#10578)
lidel Nov 13, 2024
9b3b191
Merge branch 'master' into merge-release-v0.32.0
lidel Nov 14, 2024
7ca1063
chore: changelog for 0.33
lidel Nov 14, 2024
8351cf9
Merge pull request #10579 from ipfs/merge-release-v0.32.0
lidel Nov 14, 2024
720663d
docs: update RELEASE_CHECKLIST.md (#10564)
lidel Nov 14, 2024
83b06f1
fix: go-libp2p-kad-dht v0.28.1 (#10581)
lidel Nov 15, 2024
c292203
fix(ci): timeout and retry docker smoke test
lidel Nov 15, 2024
d924428
Merge branch 'master' into merge-release-v0.32.1
lidel Nov 15, 2024
f5b8555
Merge pull request #10585 from ipfs/merge-release-v0.32.1
lidel Nov 15, 2024
3a1b8ee
refactor: update to boxo without goprocess (#10567)
gammazero Nov 19, 2024
d506003
Typos Update config.md (#10591)
0xbryer Nov 19, 2024
d1f6541
fix: increase provider sample size (#10589)
lidel Nov 25, 2024
0bd0edc
feat(bootstrap): add JS-based va1.bootstrap.libp2p.io (#10575)
lidel Nov 25, 2024
ef58568
fix some typos in docs (#10598)
gammazero Nov 25, 2024
37c5060
Update to boxo with refactored providerQueryManager. (#10595)
hsanjuan Nov 26, 2024
fb58b0a
tests/cli: fix flapping tests (#10600)
hsanjuan Nov 26, 2024
466f72f
docs: typos (#10602)
hsanjuan Nov 26, 2024
23ef1d7
fix: go-libp2p v0.37.2 (#10603)
lidel Nov 26, 2024
3b2c269
chore: p2p-forge/client v0.1.0 (#10605)
lidel Nov 27, 2024
02995d5
tests(cli/harness): use unused Verbose flag to pipe daemon outputs (#…
hsanjuan Nov 27, 2024
9433105
docs(changelog/v0.33): bitswap reprovide changes (#10604)
hsanjuan Nov 27, 2024
fa769f7
chore(deps): bump codecov/codecov-action from 4.6.0 to 5.0.7 (#10597)
dependabot[bot] Nov 27, 2024
778a418
refactor(rcmgr): use default libp2p rcmgr metrics (#9947)
marten-seemann Nov 27, 2024
8654538
chore: fix broken url in comment (#10606)
hishope Nov 29, 2024
53e793a
fix: ipfs-webui v4.4.1 (#10608)
lidel Dec 3, 2024
224d6a3
refactor(cmds): do not return errors embedded in result type (#10527)
gammazero Dec 3, 2024
433444b
fix(cmds/add): disallow --wrap with --to-files (#10612)
hsanjuan Dec 3, 2024
19dc712
chore: boxo v0.25.0 (#10619)
gammazero Dec 9, 2024
642e58e
chore: use errors.New to replace fmt.Errorf with no parameters (#10617)
ChengenH Dec 10, 2024
c797fbc
chore(deps): bump codecov/codecov-action from 5.0.7 to 5.1.1 (#10620)
dependabot[bot] Dec 13, 2024
53af049
deps: update nopfs
hsanjuan Dec 13, 2024
b42eb5a
Update deps (#10624)
gammazero Dec 13, 2024
09d5789
mod tidy examples
gammazero Dec 13, 2024
335a278
Merge branch 'master' into update-nopfs
gammazero Dec 13, 2024
07b8742
Merge pull request #10625 from ipfs/update-nopfs
hsanjuan Dec 13, 2024
898f024
[skip changelog] pinmfs: mitigate slow mfs writes when it triggers (#…
hsanjuan Dec 17, 2024
7c49860
Upgrade to Boxo v0.26.0 (#10631)
gammazero Dec 19, 2024
ecb2558
cmd/files: flush parent folders (#10630)
hsanjuan Dec 19, 2024
519ae27
feat: expose BlockKeyCacheSize and enable WriteThrough datastore opti…
hsanjuan Dec 19, 2024
295fd96
docs: clarify Swarm.ResourceMgr.MaxMemory (#10622)
lidel Dec 19, 2024
4e91ea3
Minor spelling and wording changes (#10634)
gammazero Dec 20, 2024
f2c1905
feat(flatfs): default to sync=false (#10632)
lidel Dec 20, 2024
397c346
feat(libp2p): shared TCP listeners and AutoTLS.AutoWSS (#10565)
aschmahmann Dec 20, 2024
9282f08
fix: ipfs-webui v4.4.2 (#10635)
lidel Dec 20, 2024
1b5aa0b
chore: 0.33.0-rc1
lidel Dec 20, 2024
5379200
collection of typo fixes (#10647)
gammazero Dec 30, 2024
258c5e4
Add example of setting array to config command help
gammazero Jan 2, 2025
5e1bacc
fix/gateway: escape directory redirect url (#10649)
gammazero Jan 4, 2025
a0c57cb
chore: fix typos and comment formatting (#10653)
gammazero Jan 7, 2025
9386fdc
fix(cli): support HTTPS in ipfs --api (#10659)
lidel Jan 10, 2025
89c6e7e
chore: p2p-forge v0.2.2 + go-libp2p-kad-dht v0.28.2 (#10663)
lidel Jan 13, 2025
6aa7d99
fix(dns): update default DNSLink resolvers (#10655)
lidel Jan 14, 2025
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
3 changes: 2 additions & 1 deletion .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ body:
label: Installation method
description: Please select your installation method
options:
- dist.ipfs.tech or ipfs-update
- docker image
- ipfs-desktop
- ipfs-update or dist.ipfs.tech
- third-party binary
- built from source
- type: textarea
Expand Down
16 changes: 12 additions & 4 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
if: github.repository == 'ipfs/kubo' || github.event_name == 'workflow_dispatch'
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
timeout-minutes: 90
timeout-minutes: 15
env:
IMAGE_NAME: ipfs/kubo
LEGACY_IMAGE_NAME: ipfs/go-ipfs
Expand Down Expand Up @@ -110,9 +110,17 @@ jobs:

# We test all the images on amd64 host here. This uses QEMU to emulate
# the other platforms.
- run: docker run --rm $IMAGE_NAME:linux-amd64 --version
- run: docker run --rm $IMAGE_NAME:linux-arm-v7 --version
- run: docker run --rm $IMAGE_NAME:linux-arm64-v8 --version
# NOTE: --version should finish instantly, but sometimes
# it hangs on github CI (could be qemu issue), so we retry to remove false negatives
- name: Smoke-test linux-amd64
run: for i in {1..3}; do timeout 15s docker run --rm $IMAGE_NAME:linux-amd64 version --all && break || [ $i = 3 ] && exit 1; done
timeout-minutes: 1
- name: Smoke-test linux-arm-v7
run: for i in {1..3}; do timeout 15s docker run --rm $IMAGE_NAME:linux-arm-v7 version --all && break || [ $i = 3 ] && exit 1; done
timeout-minutes: 1
- name: Smoke-test linux-arm64-v8
run: for i in {1..3}; do timeout 15s docker run --rm $IMAGE_NAME:linux-arm64-v8 version --all && break || [ $i = 3 ] && exit 1; done
timeout-minutes: 1

# This will only push the previously built images.
- if: github.event_name != 'workflow_dispatch' || github.event.inputs.push == 'true'
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/gateway-conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
steps:
# 1. Download the gateway-conformance fixtures
- name: Download gateway-conformance fixtures
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.6
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.7
with:
output: fixtures

Expand Down Expand Up @@ -94,7 +94,7 @@ jobs:

# 6. Run the gateway-conformance tests
- name: Run gateway-conformance tests
uses: ipfs/gateway-conformance/.github/actions/test@v0.6
uses: ipfs/gateway-conformance/.github/actions/test@v0.7
with:
gateway-url: http://127.0.0.1:8080
subdomain-url: http://localhost:8080
Expand Down Expand Up @@ -128,7 +128,7 @@ jobs:
steps:
# 1. Download the gateway-conformance fixtures
- name: Download gateway-conformance fixtures
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.6
uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.7
with:
output: fixtures

Expand Down Expand Up @@ -201,7 +201,7 @@ jobs:

# 9. Run the gateway-conformance tests over libp2p
- name: Run gateway-conformance tests over libp2p
uses: ipfs/gateway-conformance/.github/actions/test@v0.6
uses: ipfs/gateway-conformance/.github/actions/test@v0.7
with:
gateway-url: http://127.0.0.1:8092
args: --specs "trustless-gateway,-trustless-ipns-gateway" -skip 'TestGatewayCar/GET_response_for_application/vnd.ipld.car/Header_Content-Length'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gotest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
make -j "$PARALLEL" test/unit/gotest.junit.xml &&
[[ ! $(jq -s -c 'map(select(.Action == "fail")) | .[]' test/unit/gotest.json) ]]
- name: Upload coverage to Codecov
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1
if: failure() || success()
with:
name: unittests
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/sharness.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
sharness-test:
if: github.repository == 'ipfs/kubo' || github.event_name == 'workflow_dispatch'
runs-on: ${{ fromJSON(github.repository == 'ipfs/kubo' && '["self-hosted", "linux", "x64", "4xlarge"]' || '"ubuntu-latest"') }}
timeout-minutes: 20
timeout-minutes: ${{ github.repository == 'ipfs/kubo' && 15 || 60 }}
defaults:
run:
shell: bash
Expand Down Expand Up @@ -55,7 +55,7 @@ jobs:
# increasing parallelism beyond 10 doesn't speed up the tests much
PARALLEL: ${{ github.repository == 'ipfs/kubo' && 10 || 3 }}
- name: Upload coverage report
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1
if: failure() || success()
with:
name: sharness
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Kubo Changelogs

- [v0.33](docs/changelogs/v0.33.md)
- [v0.32](docs/changelogs/v0.32.md)
- [v0.31](docs/changelogs/v0.31.md)
- [v0.30](docs/changelogs/v0.30.md)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ You can also install it through the Solus software center.

#### Guix

[Community Package for go-ipfs](https://packages.guix.gnu.org/packages/go-ipfs/0.11.0/) is no out-of-date.
[Community Package for go-ipfs](https://packages.guix.gnu.org/packages/go-ipfs/0.11.0/) is now out-of-date.

#### Snap

Expand Down
64 changes: 25 additions & 39 deletions client/rpc/pin.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,59 +62,45 @@ type pinLsObject struct {
Type string
}

func (api *PinAPI) Ls(ctx context.Context, opts ...caopts.PinLsOption) (<-chan iface.Pin, error) {
func (api *PinAPI) Ls(ctx context.Context, pins chan<- iface.Pin, opts ...caopts.PinLsOption) error {
defer close(pins)

options, err := caopts.PinLsOptions(opts...)
if err != nil {
return nil, err
return err
}

res, err := api.core().Request("pin/ls").
Option("type", options.Type).
Option("stream", true).
Send(ctx)
if err != nil {
return nil, err
return err
}

pins := make(chan iface.Pin)
go func(ch chan<- iface.Pin) {
defer res.Output.Close()
defer close(ch)

dec := json.NewDecoder(res.Output)
var out pinLsObject
for {
switch err := dec.Decode(&out); err {
case nil:
case io.EOF:
return
default:
select {
case ch <- pin{err: err}:
return
case <-ctx.Done():
return
}
defer res.Output.Close()

dec := json.NewDecoder(res.Output)
var out pinLsObject
for {
err := dec.Decode(&out)
if err != nil {
if err != io.EOF {
return err
}
return nil
}

c, err := cid.Parse(out.Cid)
if err != nil {
select {
case ch <- pin{err: err}:
return
case <-ctx.Done():
return
}
}
c, err := cid.Parse(out.Cid)
if err != nil {
return err
}

select {
case ch <- pin{typ: out.Type, name: out.Name, path: path.FromCid(c)}:
case <-ctx.Done():
return
}
select {
case pins <- pin{typ: out.Type, name: out.Name, path: path.FromCid(c)}:
case <-ctx.Done():
return ctx.Err()
}
}(pins)
return pins, nil
}
}

// IsPinned returns whether or not the given cid is pinned
Expand Down
116 changes: 48 additions & 68 deletions client/rpc/unixfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,12 @@ type lsOutput struct {
Objects []lsObject
}

func (api *UnixfsAPI) Ls(ctx context.Context, p path.Path, opts ...caopts.UnixfsLsOption) (<-chan iface.DirEntry, error) {
func (api *UnixfsAPI) Ls(ctx context.Context, p path.Path, out chan<- iface.DirEntry, opts ...caopts.UnixfsLsOption) error {
defer close(out)

options, err := caopts.UnixfsLsOptions(opts...)
if err != nil {
return nil, err
return err
}

resp, err := api.core().Request("ls", p.String()).
Expand All @@ -156,86 +158,64 @@ func (api *UnixfsAPI) Ls(ctx context.Context, p path.Path, opts ...caopts.Unixfs
Option("stream", true).
Send(ctx)
if err != nil {
return nil, err
return err
}
if resp.Error != nil {
return nil, resp.Error
return err
}
defer resp.Close()

dec := json.NewDecoder(resp.Output)
out := make(chan iface.DirEntry)

go func() {
defer resp.Close()
defer close(out)

for {
var link lsOutput
if err := dec.Decode(&link); err != nil {
if err == io.EOF {
return
}
select {
case out <- iface.DirEntry{Err: err}:
case <-ctx.Done():
}
return
}

if len(link.Objects) != 1 {
select {
case out <- iface.DirEntry{Err: errors.New("unexpected Objects len")}:
case <-ctx.Done():
}
return
for {
var link lsOutput
if err = dec.Decode(&link); err != nil {
if err != io.EOF {
return err
}
return nil
}

if len(link.Objects[0].Links) != 1 {
select {
case out <- iface.DirEntry{Err: errors.New("unexpected Links len")}:
case <-ctx.Done():
}
return
}
if len(link.Objects) != 1 {
return errors.New("unexpected Objects len")
}

l0 := link.Objects[0].Links[0]
if len(link.Objects[0].Links) != 1 {
return errors.New("unexpected Links len")
}

c, err := cid.Decode(l0.Hash)
if err != nil {
select {
case out <- iface.DirEntry{Err: err}:
case <-ctx.Done():
}
return
}
l0 := link.Objects[0].Links[0]

var ftype iface.FileType
switch l0.Type {
case unixfs.TRaw, unixfs.TFile:
ftype = iface.TFile
case unixfs.THAMTShard, unixfs.TDirectory, unixfs.TMetadata:
ftype = iface.TDirectory
case unixfs.TSymlink:
ftype = iface.TSymlink
}
c, err := cid.Decode(l0.Hash)
if err != nil {
return err
}

select {
case out <- iface.DirEntry{
Name: l0.Name,
Cid: c,
Size: l0.Size,
Type: ftype,
Target: l0.Target,

Mode: l0.Mode,
ModTime: l0.ModTime,
}:
case <-ctx.Done():
}
var ftype iface.FileType
switch l0.Type {
case unixfs.TRaw, unixfs.TFile:
ftype = iface.TFile
case unixfs.THAMTShard, unixfs.TDirectory, unixfs.TMetadata:
ftype = iface.TDirectory
case unixfs.TSymlink:
ftype = iface.TSymlink
}
}()

return out, nil
select {
case out <- iface.DirEntry{
Name: l0.Name,
Cid: c,
Size: l0.Size,
Type: ftype,
Target: l0.Target,

Mode: l0.Mode,
ModTime: l0.ModTime,
}:
case <-ctx.Done():
return ctx.Err()
}
}
}

func (api *UnixfsAPI) core() *HttpApi {
Expand Down
Loading
Loading