diff --git a/CHANGELOG.md b/CHANGELOG.md index 6db45c277..450d2be65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,11 +33,13 @@ ## RELEASE.2026-11-09T00-00-00Z -Package version: `20261109000000.0.0`. Publication status and artifacts are -listed in [GitHub Releases](https://github.com/pgsty/silo/releases). This -section covers the changes after the published 20261026 source `c3ad836aed0d`. -Most fixes come from reports and patches by -[@botdeniska](https://github.com/botdeniska); see [CONTRIBUTORS.md](CONTRIBUTORS.md). +Package version: `20261109000000.0.0`; published from source `d998292387cc`. +Artifacts are listed in the [GitHub release](https://github.com/pgsty/silo/releases/tag/RELEASE.2026-11-09T00-00-00Z). +The coordinated [English release notes](https://silo.pgsty.com/blog/release/silo-20261109/) +and [Chinese release notes](https://silo.pgsty.com/zh/blog/release/silo-20261109/) +cover all components, upgrade guidance, and validation scope since the +published 20261026 source `c3ad836aed0d`. Most fixes come from reports and +patches by [@botdeniska](https://github.com/botdeniska); see [CONTRIBUTORS.md](CONTRIBUTORS.md). Lifecycle, multi-pool and tiering: @@ -52,7 +54,8 @@ Lifecycle, multi-pool and tiering: `retainVersions: 0`) on the expired key instead of the keys below it; a key with a tiered or Object Lock protected version is refused ([#297](https://github.com/pgsty/silo/issues/297)). -- Stop taking the free version of a deleted tiered version for a version +- Exclude the internal free-version marker of a deleted tiered version from + visible version history and lifecycle decisions ([#263](https://github.com/pgsty/silo/issues/263)), apply rules whose only action is `DelMarkerExpiration` ([#268](https://github.com/pgsty/silo/issues/268)), and report and account only the removals that happened diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 34a894632..e31110f15 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -165,8 +165,11 @@ license grant to SILO or upstream MinIO maintainers is required. ### How does Silo manage dependencies? -Silo uses Go modules. Preserve the compatibility module and import paths in -`go.mod`; downstream forks are selected with explicit `replace` directives. +Silo uses Go modules. Shared packages in `github.com/pgsty/silo-pkg/v3` are +required and imported directly under their own module path, upstream +`github.com/minio/minio-go/v7` is pinned to a verified commit, and Console +(`github.com/minio/console`) and MC (`github.com/minio/mc`) are selected with +explicit `replace` directives in `go.mod`. - Run `go get foo/bar` in the source folder to add the dependency to `go.mod` file. diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index bfcd23b26..cd2763a9b 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -2,7 +2,7 @@ -As of **2026-11-09**, **76 community contributors** are credited in SILO and related projects. The roll includes maintainers and every human issue / PR author, along with security reporters who have agreed to be acknowledged. +As of **2026-11-10**, **76 community contributors** are credited in SILO and related projects. The roll includes maintainers and every human issue / PR author, along with security reporters who have agreed to be acknowledged. Opening an issue or PR counts, whether open, closed, draft, or unmerged. Each account appears once. Merged PR authors come first, followed by other PR authors and reporters. Within each group, significant fixes, adopted proposals, and reports that led to fixes take priority, followed by first participation. Gold rings highlight significant contributions. @@ -49,7 +49,7 @@ When a proposal was incorporated through a later repair, its adoption is credite @nik0xFF @szopi00 @GhaziTriki -@haf +@haf @sun1024 @mosesdd @Xavier-777 @@ -91,7 +91,7 @@ When a proposal was incorporated through a later repair, its adoption is credite | Contributor | Contribution | Record | | :-- | :-- | :-- | -| [@Vonng](https://github.com/Vonng) | Maintains SILO, Console, mcli, shared packages, releases, and documentation | [pgsty/silo: Merged PRs (93)](https://github.com/pgsty/silo/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
PRs closed without merging: [pgsty/silo#155](https://github.com/pgsty/silo/pull/155), [pgsty/silo#195](https://github.com/pgsty/silo/pull/195)
[pgsty/silo: Closed issues (99)](https://github.com/pgsty/silo/issues?q=author%3AVonng+is%3Aissue+is%3Aclosed)
Open issues: [pgsty/silo#217](https://github.com/pgsty/silo/issues/217)
[pgsty/silo-console: Merged PRs (42)](https://github.com/pgsty/silo-console/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
[pgsty/silo-console: Closed issues (39)](https://github.com/pgsty/silo-console/issues?q=author%3AVonng+is%3Aissue+is%3Aclosed)
[pgsty/mc: Merged PRs (30)](https://github.com/pgsty/mc/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
[pgsty/mc: Closed issues (42)](https://github.com/pgsty/mc/issues?q=author%3AVonng+is%3Aissue+is%3Aclosed)
Merged PRs: [pgsty/silo-pkg#1](https://github.com/pgsty/silo-pkg/pull/1), [pgsty/silo-pkg#2](https://github.com/pgsty/silo-pkg/pull/2), [pgsty/silo-pkg#3](https://github.com/pgsty/silo-pkg/pull/3), [pgsty/silo-pkg#4](https://github.com/pgsty/silo-pkg/pull/4), [pgsty/silo-pkg#5](https://github.com/pgsty/silo-pkg/pull/5), [pgsty/silo-pkg#6](https://github.com/pgsty/silo-pkg/pull/6), [pgsty/silo-pkg#7](https://github.com/pgsty/silo-pkg/pull/7), [pgsty/silo-pkg#8](https://github.com/pgsty/silo-pkg/pull/8), [pgsty/silo-pkg#9](https://github.com/pgsty/silo-pkg/pull/9), [pgsty/silo-pkg#10](https://github.com/pgsty/silo-pkg/pull/10), [pgsty/silo-pkg#12](https://github.com/pgsty/silo-pkg/pull/12), [pgsty/silo-pkg#14](https://github.com/pgsty/silo-pkg/pull/14)
Closed issues: [pgsty/silo-pkg#13](https://github.com/pgsty/silo-pkg/issues/13)
Merged PRs: [pgsty/kes#1](https://github.com/pgsty/kes/pull/1)
[pgsty/silo.pgsty.com: Merged PRs (48)](https://github.com/pgsty/silo.pgsty.com/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
PRs closed without merging: [pgsty/silo.pgsty.com#36](https://github.com/pgsty/silo.pgsty.com/pull/36) | +| [@Vonng](https://github.com/Vonng) | Maintains SILO, Console, mcli, shared packages, releases, and documentation | [pgsty/silo: Merged PRs (95)](https://github.com/pgsty/silo/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
Open PRs: [pgsty/silo#329](https://github.com/pgsty/silo/pull/329)
PRs closed without merging: [pgsty/silo#155](https://github.com/pgsty/silo/pull/155), [pgsty/silo#195](https://github.com/pgsty/silo/pull/195)
[pgsty/silo: Closed issues (99)](https://github.com/pgsty/silo/issues?q=author%3AVonng+is%3Aissue+is%3Aclosed)
Open issues: [pgsty/silo#217](https://github.com/pgsty/silo/issues/217)
[pgsty/silo-console: Merged PRs (44)](https://github.com/pgsty/silo-console/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
[pgsty/silo-console: Closed issues (39)](https://github.com/pgsty/silo-console/issues?q=author%3AVonng+is%3Aissue+is%3Aclosed)
[pgsty/mc: Merged PRs (30)](https://github.com/pgsty/mc/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
[pgsty/mc: Closed issues (42)](https://github.com/pgsty/mc/issues?q=author%3AVonng+is%3Aissue+is%3Aclosed)
Merged PRs: [pgsty/silo-pkg#1](https://github.com/pgsty/silo-pkg/pull/1), [pgsty/silo-pkg#2](https://github.com/pgsty/silo-pkg/pull/2), [pgsty/silo-pkg#3](https://github.com/pgsty/silo-pkg/pull/3), [pgsty/silo-pkg#4](https://github.com/pgsty/silo-pkg/pull/4), [pgsty/silo-pkg#5](https://github.com/pgsty/silo-pkg/pull/5), [pgsty/silo-pkg#6](https://github.com/pgsty/silo-pkg/pull/6), [pgsty/silo-pkg#7](https://github.com/pgsty/silo-pkg/pull/7), [pgsty/silo-pkg#8](https://github.com/pgsty/silo-pkg/pull/8), [pgsty/silo-pkg#9](https://github.com/pgsty/silo-pkg/pull/9), [pgsty/silo-pkg#10](https://github.com/pgsty/silo-pkg/pull/10), [pgsty/silo-pkg#12](https://github.com/pgsty/silo-pkg/pull/12), [pgsty/silo-pkg#14](https://github.com/pgsty/silo-pkg/pull/14)
Closed issues: [pgsty/silo-pkg#13](https://github.com/pgsty/silo-pkg/issues/13)
Merged PRs: [pgsty/kes#1](https://github.com/pgsty/kes/pull/1)
[pgsty/silo.pgsty.com: Merged PRs (52)](https://github.com/pgsty/silo.pgsty.com/issues?q=author%3AVonng+is%3Apr+is%3Amerged)
PRs closed without merging: [pgsty/silo.pgsty.com#36](https://github.com/pgsty/silo.pgsty.com/pull/36) | | [@ZouhairCharef](https://github.com/ZouhairCharef) | Patched CVE-2026-34986 in go-jose | Merged PRs: [pgsty/silo#18](https://github.com/pgsty/silo/pull/18) | | [@mfredenhagen](https://github.com/mfredenhagen) | Patched CVE-2026-39883 in OpenTelemetry | Merged PRs: [pgsty/silo#19](https://github.com/pgsty/silo/pull/19) | | [@cbornet](https://github.com/cbornet) | Reported checksum and missing-bucket defects and aligned S3 checksum error messages | Merged PRs: [pgsty/silo#225](https://github.com/pgsty/silo/pull/225)
Closed issues: [pgsty/silo#31](https://github.com/pgsty/silo/issues/31), [pgsty/silo#32](https://github.com/pgsty/silo/issues/32), [pgsty/silo#107](https://github.com/pgsty/silo/issues/107), [pgsty/silo#226](https://github.com/pgsty/silo/issues/226) | @@ -99,7 +99,7 @@ When a proposal was incorporated through a later repair, its adoption is credite | [@ycjlin](https://github.com/ycjlin) | Fixed missing-bucket ListObjects semantics | Merged PRs: [pgsty/silo#37](https://github.com/pgsty/silo/pull/37) | | [@waterkip](https://github.com/waterkip) | Repointed documentation links to the SILO portal | Merged PRs: [pgsty/silo#41](https://github.com/pgsty/silo/pull/41) | | [@Dansyuqri](https://github.com/Dansyuqri) | Added ChecksumType to multipart completion responses | Merged PRs: [pgsty/silo#57](https://github.com/pgsty/silo/pull/57) | -| [@mrjavadseydi](https://github.com/mrjavadseydi) | Fixed bucket quota metrics and mcli alias regions; contributed access-frequency ILM and S3-compatible multipart listing proposals | Merged PRs: [pgsty/silo#60](https://github.com/pgsty/silo/pull/60), [pgsty/silo#132](https://github.com/pgsty/silo/pull/132), [pgsty/silo#198](https://github.com/pgsty/silo/pull/198), [pgsty/silo#221](https://github.com/pgsty/silo/pull/221)
Open PRs: [pgsty/silo#249](https://github.com/pgsty/silo/pull/249)
PRs closed without merging: [pgsty/silo#215](https://github.com/pgsty/silo/pull/215)
Merged PRs: [pgsty/mc#44](https://github.com/pgsty/mc/pull/44)
The access-frequency feature in [#60](https://github.com/pgsty/silo/pull/60) was merged and later removed. The multipart-listing contribution in [#198](https://github.com/pgsty/silo/pull/198) was merged after follow-up durability and cancellation repairs; it shipped in Server 20260916 with legacy as the default and strict as an opt-in. | +| [@mrjavadseydi](https://github.com/mrjavadseydi) | Fixed bucket quota metrics and mcli alias regions; contributed access-frequency ILM and S3-compatible multipart listing proposals | Merged PRs: [pgsty/silo#60](https://github.com/pgsty/silo/pull/60), [pgsty/silo#132](https://github.com/pgsty/silo/pull/132), [pgsty/silo#198](https://github.com/pgsty/silo/pull/198), [pgsty/silo#221](https://github.com/pgsty/silo/pull/221)
Open PRs: [pgsty/silo#249](https://github.com/pgsty/silo/pull/249)
PRs closed without merging: [pgsty/silo#215](https://github.com/pgsty/silo/pull/215)
Merged PRs: [pgsty/mc#44](https://github.com/pgsty/mc/pull/44)
The access-frequency feature in [#60](https://github.com/pgsty/silo/pull/60) was merged and later removed. The multipart-listing contribution in [#198](https://github.com/pgsty/silo/pull/198) was merged after follow-up durability and cancellation repairs; it shipped in Server 20260916 with legacy as the default and strict as an opt-in, and the strict opt-in was subsequently retired in Server 20261018. | | [@h5vx](https://github.com/h5vx) | Implemented per-bucket CORS configuration and enforcement | Merged PRs: [pgsty/silo#71](https://github.com/pgsty/silo/pull/71) | | [@nikitapogromsky](https://github.com/nikitapogromsky) | Fixed duplicate logger targets that broke Metrics V3 collection | Merged PRs: [pgsty/silo#151](https://github.com/pgsty/silo/pull/151)
Closed issues: [pgsty/silo#150](https://github.com/pgsty/silo/issues/150) | | [@julienlau](https://github.com/julienlau) | Fixed missing-commit-metadata error handling and stale metadata reuse; contributed replication reports and proposals | Merged PRs: [pgsty/silo#232](https://github.com/pgsty/silo/pull/232), [pgsty/silo#233](https://github.com/pgsty/silo/pull/233)
Open PRs: [pgsty/silo#240](https://github.com/pgsty/silo/pull/240), [pgsty/silo#241](https://github.com/pgsty/silo/pull/241)
PRs closed without merging: [pgsty/silo#184](https://github.com/pgsty/silo/pull/184)
Closed issues: [pgsty/silo#152](https://github.com/pgsty/silo/issues/152), [pgsty/silo#153](https://github.com/pgsty/silo/issues/153)
The original PR was not merged directly. Its purge-state and recovery analysis, proposed fix, tests, and documentation helped shape [#196](https://github.com/pgsty/silo/pull/196); see the [maintainer acknowledgement](https://github.com/pgsty/silo/pull/184#issuecomment-5689295222). | @@ -110,7 +110,7 @@ When a proposal was incorporated through a later repair, its adoption is credite | [@botdeniska](https://github.com/botdeniska) | Contributed multi-pool migration, deletion and lifecycle safety, conditional multipart checks, native restore reports and verification, LDAP login and storage cleanup fixes, replication checksum repairs, and faster policy evaluation | [pgsty/silo: Merged PRs (13)](https://github.com/pgsty/silo/issues?q=author%3Abotdeniska+is%3Apr+is%3Amerged)
Open PRs: [pgsty/silo#294](https://github.com/pgsty/silo/pull/294)
PRs closed without merging: [pgsty/silo#245](https://github.com/pgsty/silo/pull/245), [pgsty/silo#248](https://github.com/pgsty/silo/pull/248), [pgsty/silo#262](https://github.com/pgsty/silo/pull/262), [pgsty/silo#290](https://github.com/pgsty/silo/pull/290)
[pgsty/silo: Closed issues (15)](https://github.com/pgsty/silo/issues?q=author%3Abotdeniska+is%3Aissue+is%3Aclosed)
Open issues: [pgsty/silo#293](https://github.com/pgsty/silo/issues/293)
Merged PRs: [pgsty/silo-pkg#11](https://github.com/pgsty/silo-pkg/pull/11)
The migration repair from [#248](https://github.com/pgsty/silo/pull/248) was incorporated in [60c7179dd](https://github.com/pgsty/silo/commit/60c7179ddbfcbd41a1fe67707230f5b360a43020), retaining the original authorship and DCO. The mixed-EC listing proposal in [#262](https://github.com/pgsty/silo/pull/262) was superseded by [#267](https://github.com/pgsty/silo/pull/267). The author closed [#290](https://github.com/pgsty/silo/pull/290) after verifying the native-restore rework covered the reported defects. | | [@910patin](https://github.com/910patin) | Fixed long-DN LDAP login while preserving IAM revocation-record errors | Merged PRs: [pgsty/silo#250](https://github.com/pgsty/silo/pull/250) | | [@cyberbret](https://github.com/cyberbret) | Contributed on-demand folder and bucket usage scans and the optional persistent usage worker | Merged PRs: [pgsty/silo-console#70](https://github.com/pgsty/silo-console/pull/70)
PR [#70](https://github.com/pgsty/silo-console/pull/70) was integrated through [#79](https://github.com/pgsty/silo-console/pull/79), retaining the original commits and authorship. Usage scans and the optional worker shipped in [Console v2.6.0](https://github.com/pgsty/silo-console/releases/tag/v2.6.0). | -| [@EduardoAndradeMachado](https://github.com/EduardoAndradeMachado) | Contributed Brazilian Portuguese translations to Console and privately reported a security issue | Merged PRs: [pgsty/silo-console#83](https://github.com/pgsty/silo-console/pull/83)
Private security reporting is acknowledged with the reporter's agreement. | +| [@EduardoAndradeMachado](https://github.com/EduardoAndradeMachado) | Contributed Brazilian Portuguese translations to Console and privately reported a security issue | Merged PRs: [pgsty/silo-console#83](https://github.com/pgsty/silo-console/pull/83)
PR [#83](https://github.com/pgsty/silo-console/pull/83) was merged with its original authored commits; the later ten-language implementation uses shared static dictionaries. Private security reporting is acknowledged with the reporter's agreement. | ## Other pull-request authors @@ -141,7 +141,7 @@ When a proposal was incorporated through a later repair, its adoption is credite | [@nik0xFF](https://github.com/nik0xFF) | Reported a security issue privately by email | Dominik Klug is credited under his full name with his permission. | | [@szopi00](https://github.com/szopi00) | Reported the Object Lock GOVERNANCE retention authorization bypass | The report led to the Object Lock repairs in [#234](https://github.com/pgsty/silo/pull/234) and [#235](https://github.com/pgsty/silo/pull/235). | | [@GhaziTriki](https://github.com/GhaziTriki) | Investigated policy-query and Console slowdown and identified overlapping client mirror jobs | Closed issues: [pgsty/silo#251](https://github.com/pgsty/silo/issues/251)
Closed after the [reporter follow-up](https://github.com/pgsty/silo/issues/251#issuecomment-6417722845) traced the immediate cause to overlapping client mirror jobs; this incident did not establish a SILO version regression. | -| [@haf](https://github.com/haf) | Reported audit webhook delivery stopping on peer nodes after configuration reload | Closed issues: [pgsty/silo#259](https://github.com/pgsty/silo/issues/259)
The report led to webhook target lifetime and queue recovery repairs in [0fa4a8c50](https://github.com/pgsty/silo/commit/0fa4a8c503941d94c60045dc7a4dbff4d93fca34) and [f3e84d54a](https://github.com/pgsty/silo/commit/f3e84d54a9c869d8baf53bab02b8bc2c81bd1dfb). | +| [@haf](https://github.com/haf) | Reported audit and logger webhook delivery stopping on peer nodes after configuration reload | Closed issues: [pgsty/silo#259](https://github.com/pgsty/silo/issues/259)
The report led to webhook target lifetime and queue recovery repairs in [0fa4a8c50](https://github.com/pgsty/silo/commit/0fa4a8c503941d94c60045dc7a4dbff4d93fca34) and [f3e84d54a](https://github.com/pgsty/silo/commit/f3e84d54a9c869d8baf53bab02b8bc2c81bd1dfb). | | [@sun1024](https://github.com/sun1024) | Privately reported a security issue in SILO | Acknowledged with the reporter's agreement; private report details are not included here. | | [@mosesdd](https://github.com/mosesdd) | Requested a maintained Helm chart | Closed issues: [pgsty/silo#1](https://github.com/pgsty/silo/issues/1) | | [@Xavier-777](https://github.com/Xavier-777) | Reported Console lifecycle management and file preview gaps | Closed issues: [pgsty/silo#2](https://github.com/pgsty/silo/issues/2), [pgsty/silo#17](https://github.com/pgsty/silo/issues/17) | @@ -176,7 +176,7 @@ When a proposal was incorporated through a later repair, its adoption is credite | [@devTeam-AiReg](https://github.com/devTeam-AiReg) | Asked about availability of the release containing IAM security fixes | Closed issues: [pgsty/silo#247](https://github.com/pgsty/silo/issues/247) | | [@azataiot](https://github.com/azataiot) | Reported and analyzed high-latency Console health-report truncation during WebSocket close | Closed issues: [pgsty/silo-console#63](https://github.com/pgsty/silo-console/issues/63) | | [@siyahkut](https://github.com/siyahkut) | Requested Turkish language support | Open issues: [pgsty/silo#277](https://github.com/pgsty/silo/issues/277) | -| [@seumasdunlop](https://github.com/seumasdunlop) | Reported the outdated default server image tag in the Helm chart | Open issues: [pgsty/silo#296](https://github.com/pgsty/silo/issues/296) | +| [@seumasdunlop](https://github.com/seumasdunlop) | Reported the outdated default server image tag in the Helm chart | Closed issues: [pgsty/silo#296](https://github.com/pgsty/silo/issues/296)
Resolved in Helm chart 7.0.4 ([47275042f](https://github.com/pgsty/silo/commit/47275042fda34066a97914bf97e2f80ef44c77ae)). | ## Audit scope @@ -184,22 +184,24 @@ Counts below come from every page of the GitHub issue / PR records, across all s | Repository | Issues | Pull requests | Reviewed | | :-- | --: | --: | :-- | -| [pgsty/silo](https://github.com/pgsty/silo) | 171 | 151 | 2026-11-09 | -| [pgsty/silo-console](https://github.com/pgsty/silo-console) | 42 | 44 | 2026-11-09 | -| [pgsty/mc](https://github.com/pgsty/mc) | 45 | 32 | 2026-11-09 | -| [pgsty/silo-pkg](https://github.com/pgsty/silo-pkg) | 1 | 13 | 2026-11-09 | -| [pgsty/silo-go](https://github.com/pgsty/silo-go) | 0 | 0 | 2026-11-09 | -| [pgsty/kes](https://github.com/pgsty/kes) | 0 | 1 | 2026-11-09 | -| [pgsty/silo.pgsty.com](https://github.com/pgsty/silo.pgsty.com) | 1 | 50 | 2026-11-09 | -| [pgsty/minio-docs](https://github.com/pgsty/minio-docs) | 0 | 0 | 2026-11-09 | -| **Total** | **260** | **291** | | +| [pgsty/silo](https://github.com/pgsty/silo) | 171 | 154 | 2026-11-10 | +| [pgsty/silo-console](https://github.com/pgsty/silo-console) | 42 | 46 | 2026-11-10 | +| [pgsty/mc](https://github.com/pgsty/mc) | 45 | 32 | 2026-11-10 | +| [pgsty/silo-pkg](https://github.com/pgsty/silo-pkg) | 1 | 13 | 2026-11-10 | +| [pgsty/silo-go](https://github.com/pgsty/silo-go) | 0 | 0 | 2026-11-10 | +| [pgsty/kes](https://github.com/pgsty/kes) | 0 | 1 | 2026-11-10 | +| [pgsty/silo.pgsty.com](https://github.com/pgsty/silo.pgsty.com) | 1 | 54 | 2026-11-10 | +| [pgsty/minio-docs](https://github.com/pgsty/minio-docs) | 0 | 0 | 2026-11-10 | +| **Total** | **260** | **300** | | ## Maintainer record
@Vonng — complete issue / PR record -Merged PRs: [pgsty/silo#44](https://github.com/pgsty/silo/pull/44), [pgsty/silo#45](https://github.com/pgsty/silo/pull/45), [pgsty/silo#56](https://github.com/pgsty/silo/pull/56), [pgsty/silo#66](https://github.com/pgsty/silo/pull/66), [pgsty/silo#69](https://github.com/pgsty/silo/pull/69), [pgsty/silo#70](https://github.com/pgsty/silo/pull/70), [pgsty/silo#72](https://github.com/pgsty/silo/pull/72), [pgsty/silo#73](https://github.com/pgsty/silo/pull/73), [pgsty/silo#74](https://github.com/pgsty/silo/pull/74), [pgsty/silo#80](https://github.com/pgsty/silo/pull/80), [pgsty/silo#81](https://github.com/pgsty/silo/pull/81), [pgsty/silo#85](https://github.com/pgsty/silo/pull/85), [pgsty/silo#86](https://github.com/pgsty/silo/pull/86), [pgsty/silo#87](https://github.com/pgsty/silo/pull/87), [pgsty/silo#88](https://github.com/pgsty/silo/pull/88), [pgsty/silo#89](https://github.com/pgsty/silo/pull/89), [pgsty/silo#90](https://github.com/pgsty/silo/pull/90), [pgsty/silo#91](https://github.com/pgsty/silo/pull/91), [pgsty/silo#92](https://github.com/pgsty/silo/pull/92), [pgsty/silo#93](https://github.com/pgsty/silo/pull/93), [pgsty/silo#94](https://github.com/pgsty/silo/pull/94), [pgsty/silo#95](https://github.com/pgsty/silo/pull/95), [pgsty/silo#96](https://github.com/pgsty/silo/pull/96), [pgsty/silo#97](https://github.com/pgsty/silo/pull/97), [pgsty/silo#98](https://github.com/pgsty/silo/pull/98), [pgsty/silo#101](https://github.com/pgsty/silo/pull/101), [pgsty/silo#103](https://github.com/pgsty/silo/pull/103), [pgsty/silo#104](https://github.com/pgsty/silo/pull/104), [pgsty/silo#121](https://github.com/pgsty/silo/pull/121), [pgsty/silo#122](https://github.com/pgsty/silo/pull/122), [pgsty/silo#123](https://github.com/pgsty/silo/pull/123), [pgsty/silo#124](https://github.com/pgsty/silo/pull/124), [pgsty/silo#126](https://github.com/pgsty/silo/pull/126), [pgsty/silo#127](https://github.com/pgsty/silo/pull/127), [pgsty/silo#128](https://github.com/pgsty/silo/pull/128), [pgsty/silo#129](https://github.com/pgsty/silo/pull/129), [pgsty/silo#130](https://github.com/pgsty/silo/pull/130), [pgsty/silo#131](https://github.com/pgsty/silo/pull/131), [pgsty/silo#134](https://github.com/pgsty/silo/pull/134), [pgsty/silo#135](https://github.com/pgsty/silo/pull/135), [pgsty/silo#138](https://github.com/pgsty/silo/pull/138), [pgsty/silo#140](https://github.com/pgsty/silo/pull/140), [pgsty/silo#142](https://github.com/pgsty/silo/pull/142), [pgsty/silo#143](https://github.com/pgsty/silo/pull/143), [pgsty/silo#145](https://github.com/pgsty/silo/pull/145), [pgsty/silo#146](https://github.com/pgsty/silo/pull/146), [pgsty/silo#149](https://github.com/pgsty/silo/pull/149), [pgsty/silo#156](https://github.com/pgsty/silo/pull/156), [pgsty/silo#157](https://github.com/pgsty/silo/pull/157), [pgsty/silo#159](https://github.com/pgsty/silo/pull/159), [pgsty/silo#161](https://github.com/pgsty/silo/pull/161), [pgsty/silo#162](https://github.com/pgsty/silo/pull/162), [pgsty/silo#163](https://github.com/pgsty/silo/pull/163), [pgsty/silo#164](https://github.com/pgsty/silo/pull/164), [pgsty/silo#173](https://github.com/pgsty/silo/pull/173), [pgsty/silo#174](https://github.com/pgsty/silo/pull/174), [pgsty/silo#175](https://github.com/pgsty/silo/pull/175), [pgsty/silo#177](https://github.com/pgsty/silo/pull/177), [pgsty/silo#178](https://github.com/pgsty/silo/pull/178), [pgsty/silo#179](https://github.com/pgsty/silo/pull/179), [pgsty/silo#180](https://github.com/pgsty/silo/pull/180), [pgsty/silo#181](https://github.com/pgsty/silo/pull/181), [pgsty/silo#182](https://github.com/pgsty/silo/pull/182), [pgsty/silo#188](https://github.com/pgsty/silo/pull/188), [pgsty/silo#189](https://github.com/pgsty/silo/pull/189), [pgsty/silo#190](https://github.com/pgsty/silo/pull/190), [pgsty/silo#191](https://github.com/pgsty/silo/pull/191), [pgsty/silo#192](https://github.com/pgsty/silo/pull/192), [pgsty/silo#193](https://github.com/pgsty/silo/pull/193), [pgsty/silo#194](https://github.com/pgsty/silo/pull/194), [pgsty/silo#196](https://github.com/pgsty/silo/pull/196), [pgsty/silo#205](https://github.com/pgsty/silo/pull/205), [pgsty/silo#206](https://github.com/pgsty/silo/pull/206), [pgsty/silo#207](https://github.com/pgsty/silo/pull/207), [pgsty/silo#208](https://github.com/pgsty/silo/pull/208), [pgsty/silo#209](https://github.com/pgsty/silo/pull/209), [pgsty/silo#211](https://github.com/pgsty/silo/pull/211), [pgsty/silo#212](https://github.com/pgsty/silo/pull/212), [pgsty/silo#213](https://github.com/pgsty/silo/pull/213), [pgsty/silo#214](https://github.com/pgsty/silo/pull/214), [pgsty/silo#216](https://github.com/pgsty/silo/pull/216), [pgsty/silo#234](https://github.com/pgsty/silo/pull/234), [pgsty/silo#235](https://github.com/pgsty/silo/pull/235), [pgsty/silo#237](https://github.com/pgsty/silo/pull/237), [pgsty/silo#238](https://github.com/pgsty/silo/pull/238), [pgsty/silo#239](https://github.com/pgsty/silo/pull/239), [pgsty/silo#242](https://github.com/pgsty/silo/pull/242), [pgsty/silo#243](https://github.com/pgsty/silo/pull/243), [pgsty/silo#244](https://github.com/pgsty/silo/pull/244), [pgsty/silo#258](https://github.com/pgsty/silo/pull/258), [pgsty/silo#267](https://github.com/pgsty/silo/pull/267), [pgsty/silo#276](https://github.com/pgsty/silo/pull/276), [pgsty/silo#295](https://github.com/pgsty/silo/pull/295) +Merged PRs: [pgsty/silo#44](https://github.com/pgsty/silo/pull/44), [pgsty/silo#45](https://github.com/pgsty/silo/pull/45), [pgsty/silo#56](https://github.com/pgsty/silo/pull/56), [pgsty/silo#66](https://github.com/pgsty/silo/pull/66), [pgsty/silo#69](https://github.com/pgsty/silo/pull/69), [pgsty/silo#70](https://github.com/pgsty/silo/pull/70), [pgsty/silo#72](https://github.com/pgsty/silo/pull/72), [pgsty/silo#73](https://github.com/pgsty/silo/pull/73), [pgsty/silo#74](https://github.com/pgsty/silo/pull/74), [pgsty/silo#80](https://github.com/pgsty/silo/pull/80), [pgsty/silo#81](https://github.com/pgsty/silo/pull/81), [pgsty/silo#85](https://github.com/pgsty/silo/pull/85), [pgsty/silo#86](https://github.com/pgsty/silo/pull/86), [pgsty/silo#87](https://github.com/pgsty/silo/pull/87), [pgsty/silo#88](https://github.com/pgsty/silo/pull/88), [pgsty/silo#89](https://github.com/pgsty/silo/pull/89), [pgsty/silo#90](https://github.com/pgsty/silo/pull/90), [pgsty/silo#91](https://github.com/pgsty/silo/pull/91), [pgsty/silo#92](https://github.com/pgsty/silo/pull/92), [pgsty/silo#93](https://github.com/pgsty/silo/pull/93), [pgsty/silo#94](https://github.com/pgsty/silo/pull/94), [pgsty/silo#95](https://github.com/pgsty/silo/pull/95), [pgsty/silo#96](https://github.com/pgsty/silo/pull/96), [pgsty/silo#97](https://github.com/pgsty/silo/pull/97), [pgsty/silo#98](https://github.com/pgsty/silo/pull/98), [pgsty/silo#101](https://github.com/pgsty/silo/pull/101), [pgsty/silo#103](https://github.com/pgsty/silo/pull/103), [pgsty/silo#104](https://github.com/pgsty/silo/pull/104), [pgsty/silo#121](https://github.com/pgsty/silo/pull/121), [pgsty/silo#122](https://github.com/pgsty/silo/pull/122), [pgsty/silo#123](https://github.com/pgsty/silo/pull/123), [pgsty/silo#124](https://github.com/pgsty/silo/pull/124), [pgsty/silo#126](https://github.com/pgsty/silo/pull/126), [pgsty/silo#127](https://github.com/pgsty/silo/pull/127), [pgsty/silo#128](https://github.com/pgsty/silo/pull/128), [pgsty/silo#129](https://github.com/pgsty/silo/pull/129), [pgsty/silo#130](https://github.com/pgsty/silo/pull/130), [pgsty/silo#131](https://github.com/pgsty/silo/pull/131), [pgsty/silo#134](https://github.com/pgsty/silo/pull/134), [pgsty/silo#135](https://github.com/pgsty/silo/pull/135), [pgsty/silo#138](https://github.com/pgsty/silo/pull/138), [pgsty/silo#140](https://github.com/pgsty/silo/pull/140), [pgsty/silo#142](https://github.com/pgsty/silo/pull/142), [pgsty/silo#143](https://github.com/pgsty/silo/pull/143), [pgsty/silo#145](https://github.com/pgsty/silo/pull/145), [pgsty/silo#146](https://github.com/pgsty/silo/pull/146), [pgsty/silo#149](https://github.com/pgsty/silo/pull/149), [pgsty/silo#156](https://github.com/pgsty/silo/pull/156), [pgsty/silo#157](https://github.com/pgsty/silo/pull/157), [pgsty/silo#159](https://github.com/pgsty/silo/pull/159), [pgsty/silo#161](https://github.com/pgsty/silo/pull/161), [pgsty/silo#162](https://github.com/pgsty/silo/pull/162), [pgsty/silo#163](https://github.com/pgsty/silo/pull/163), [pgsty/silo#164](https://github.com/pgsty/silo/pull/164), [pgsty/silo#173](https://github.com/pgsty/silo/pull/173), [pgsty/silo#174](https://github.com/pgsty/silo/pull/174), [pgsty/silo#175](https://github.com/pgsty/silo/pull/175), [pgsty/silo#177](https://github.com/pgsty/silo/pull/177), [pgsty/silo#178](https://github.com/pgsty/silo/pull/178), [pgsty/silo#179](https://github.com/pgsty/silo/pull/179), [pgsty/silo#180](https://github.com/pgsty/silo/pull/180), [pgsty/silo#181](https://github.com/pgsty/silo/pull/181), [pgsty/silo#182](https://github.com/pgsty/silo/pull/182), [pgsty/silo#188](https://github.com/pgsty/silo/pull/188), [pgsty/silo#189](https://github.com/pgsty/silo/pull/189), [pgsty/silo#190](https://github.com/pgsty/silo/pull/190), [pgsty/silo#191](https://github.com/pgsty/silo/pull/191), [pgsty/silo#192](https://github.com/pgsty/silo/pull/192), [pgsty/silo#193](https://github.com/pgsty/silo/pull/193), [pgsty/silo#194](https://github.com/pgsty/silo/pull/194), [pgsty/silo#196](https://github.com/pgsty/silo/pull/196), [pgsty/silo#205](https://github.com/pgsty/silo/pull/205), [pgsty/silo#206](https://github.com/pgsty/silo/pull/206), [pgsty/silo#207](https://github.com/pgsty/silo/pull/207), [pgsty/silo#208](https://github.com/pgsty/silo/pull/208), [pgsty/silo#209](https://github.com/pgsty/silo/pull/209), [pgsty/silo#211](https://github.com/pgsty/silo/pull/211), [pgsty/silo#212](https://github.com/pgsty/silo/pull/212), [pgsty/silo#213](https://github.com/pgsty/silo/pull/213), [pgsty/silo#214](https://github.com/pgsty/silo/pull/214), [pgsty/silo#216](https://github.com/pgsty/silo/pull/216), [pgsty/silo#234](https://github.com/pgsty/silo/pull/234), [pgsty/silo#235](https://github.com/pgsty/silo/pull/235), [pgsty/silo#237](https://github.com/pgsty/silo/pull/237), [pgsty/silo#238](https://github.com/pgsty/silo/pull/238), [pgsty/silo#239](https://github.com/pgsty/silo/pull/239), [pgsty/silo#242](https://github.com/pgsty/silo/pull/242), [pgsty/silo#243](https://github.com/pgsty/silo/pull/243), [pgsty/silo#244](https://github.com/pgsty/silo/pull/244), [pgsty/silo#258](https://github.com/pgsty/silo/pull/258), [pgsty/silo#267](https://github.com/pgsty/silo/pull/267), [pgsty/silo#276](https://github.com/pgsty/silo/pull/276), [pgsty/silo#295](https://github.com/pgsty/silo/pull/295), [pgsty/silo#328](https://github.com/pgsty/silo/pull/328), [pgsty/silo#330](https://github.com/pgsty/silo/pull/330) + +Open PRs: [pgsty/silo#329](https://github.com/pgsty/silo/pull/329) PRs closed without merging: [pgsty/silo#155](https://github.com/pgsty/silo/pull/155), [pgsty/silo#195](https://github.com/pgsty/silo/pull/195) @@ -207,7 +209,7 @@ Closed issues: [pgsty/silo#22](https://github.com/pgsty/silo/issues/22), [pgsty/ Open issues: [pgsty/silo#217](https://github.com/pgsty/silo/issues/217) -Merged PRs: [pgsty/silo-console#9](https://github.com/pgsty/silo-console/pull/9), [pgsty/silo-console#10](https://github.com/pgsty/silo-console/pull/10), [pgsty/silo-console#11](https://github.com/pgsty/silo-console/pull/11), [pgsty/silo-console#38](https://github.com/pgsty/silo-console/pull/38), [pgsty/silo-console#39](https://github.com/pgsty/silo-console/pull/39), [pgsty/silo-console#40](https://github.com/pgsty/silo-console/pull/40), [pgsty/silo-console#41](https://github.com/pgsty/silo-console/pull/41), [pgsty/silo-console#42](https://github.com/pgsty/silo-console/pull/42), [pgsty/silo-console#43](https://github.com/pgsty/silo-console/pull/43), [pgsty/silo-console#44](https://github.com/pgsty/silo-console/pull/44), [pgsty/silo-console#45](https://github.com/pgsty/silo-console/pull/45), [pgsty/silo-console#46](https://github.com/pgsty/silo-console/pull/46), [pgsty/silo-console#47](https://github.com/pgsty/silo-console/pull/47), [pgsty/silo-console#48](https://github.com/pgsty/silo-console/pull/48), [pgsty/silo-console#49](https://github.com/pgsty/silo-console/pull/49), [pgsty/silo-console#50](https://github.com/pgsty/silo-console/pull/50), [pgsty/silo-console#51](https://github.com/pgsty/silo-console/pull/51), [pgsty/silo-console#53](https://github.com/pgsty/silo-console/pull/53), [pgsty/silo-console#54](https://github.com/pgsty/silo-console/pull/54), [pgsty/silo-console#55](https://github.com/pgsty/silo-console/pull/55), [pgsty/silo-console#56](https://github.com/pgsty/silo-console/pull/56), [pgsty/silo-console#57](https://github.com/pgsty/silo-console/pull/57), [pgsty/silo-console#58](https://github.com/pgsty/silo-console/pull/58), [pgsty/silo-console#59](https://github.com/pgsty/silo-console/pull/59), [pgsty/silo-console#60](https://github.com/pgsty/silo-console/pull/60), [pgsty/silo-console#61](https://github.com/pgsty/silo-console/pull/61), [pgsty/silo-console#62](https://github.com/pgsty/silo-console/pull/62), [pgsty/silo-console#64](https://github.com/pgsty/silo-console/pull/64), [pgsty/silo-console#65](https://github.com/pgsty/silo-console/pull/65), [pgsty/silo-console#66](https://github.com/pgsty/silo-console/pull/66), [pgsty/silo-console#67](https://github.com/pgsty/silo-console/pull/67), [pgsty/silo-console#68](https://github.com/pgsty/silo-console/pull/68), [pgsty/silo-console#69](https://github.com/pgsty/silo-console/pull/69), [pgsty/silo-console#71](https://github.com/pgsty/silo-console/pull/71), [pgsty/silo-console#74](https://github.com/pgsty/silo-console/pull/74), [pgsty/silo-console#79](https://github.com/pgsty/silo-console/pull/79), [pgsty/silo-console#80](https://github.com/pgsty/silo-console/pull/80), [pgsty/silo-console#81](https://github.com/pgsty/silo-console/pull/81), [pgsty/silo-console#82](https://github.com/pgsty/silo-console/pull/82), [pgsty/silo-console#84](https://github.com/pgsty/silo-console/pull/84), [pgsty/silo-console#85](https://github.com/pgsty/silo-console/pull/85), [pgsty/silo-console#86](https://github.com/pgsty/silo-console/pull/86) +Merged PRs: [pgsty/silo-console#9](https://github.com/pgsty/silo-console/pull/9), [pgsty/silo-console#10](https://github.com/pgsty/silo-console/pull/10), [pgsty/silo-console#11](https://github.com/pgsty/silo-console/pull/11), [pgsty/silo-console#38](https://github.com/pgsty/silo-console/pull/38), [pgsty/silo-console#39](https://github.com/pgsty/silo-console/pull/39), [pgsty/silo-console#40](https://github.com/pgsty/silo-console/pull/40), [pgsty/silo-console#41](https://github.com/pgsty/silo-console/pull/41), [pgsty/silo-console#42](https://github.com/pgsty/silo-console/pull/42), [pgsty/silo-console#43](https://github.com/pgsty/silo-console/pull/43), [pgsty/silo-console#44](https://github.com/pgsty/silo-console/pull/44), [pgsty/silo-console#45](https://github.com/pgsty/silo-console/pull/45), [pgsty/silo-console#46](https://github.com/pgsty/silo-console/pull/46), [pgsty/silo-console#47](https://github.com/pgsty/silo-console/pull/47), [pgsty/silo-console#48](https://github.com/pgsty/silo-console/pull/48), [pgsty/silo-console#49](https://github.com/pgsty/silo-console/pull/49), [pgsty/silo-console#50](https://github.com/pgsty/silo-console/pull/50), [pgsty/silo-console#51](https://github.com/pgsty/silo-console/pull/51), [pgsty/silo-console#53](https://github.com/pgsty/silo-console/pull/53), [pgsty/silo-console#54](https://github.com/pgsty/silo-console/pull/54), [pgsty/silo-console#55](https://github.com/pgsty/silo-console/pull/55), [pgsty/silo-console#56](https://github.com/pgsty/silo-console/pull/56), [pgsty/silo-console#57](https://github.com/pgsty/silo-console/pull/57), [pgsty/silo-console#58](https://github.com/pgsty/silo-console/pull/58), [pgsty/silo-console#59](https://github.com/pgsty/silo-console/pull/59), [pgsty/silo-console#60](https://github.com/pgsty/silo-console/pull/60), [pgsty/silo-console#61](https://github.com/pgsty/silo-console/pull/61), [pgsty/silo-console#62](https://github.com/pgsty/silo-console/pull/62), [pgsty/silo-console#64](https://github.com/pgsty/silo-console/pull/64), [pgsty/silo-console#65](https://github.com/pgsty/silo-console/pull/65), [pgsty/silo-console#66](https://github.com/pgsty/silo-console/pull/66), [pgsty/silo-console#67](https://github.com/pgsty/silo-console/pull/67), [pgsty/silo-console#68](https://github.com/pgsty/silo-console/pull/68), [pgsty/silo-console#69](https://github.com/pgsty/silo-console/pull/69), [pgsty/silo-console#71](https://github.com/pgsty/silo-console/pull/71), [pgsty/silo-console#74](https://github.com/pgsty/silo-console/pull/74), [pgsty/silo-console#79](https://github.com/pgsty/silo-console/pull/79), [pgsty/silo-console#80](https://github.com/pgsty/silo-console/pull/80), [pgsty/silo-console#81](https://github.com/pgsty/silo-console/pull/81), [pgsty/silo-console#82](https://github.com/pgsty/silo-console/pull/82), [pgsty/silo-console#84](https://github.com/pgsty/silo-console/pull/84), [pgsty/silo-console#85](https://github.com/pgsty/silo-console/pull/85), [pgsty/silo-console#86](https://github.com/pgsty/silo-console/pull/86), [pgsty/silo-console#87](https://github.com/pgsty/silo-console/pull/87), [pgsty/silo-console#88](https://github.com/pgsty/silo-console/pull/88) Closed issues: [pgsty/silo-console#1](https://github.com/pgsty/silo-console/issues/1), [pgsty/silo-console#2](https://github.com/pgsty/silo-console/issues/2), [pgsty/silo-console#3](https://github.com/pgsty/silo-console/issues/3), [pgsty/silo-console#4](https://github.com/pgsty/silo-console/issues/4), [pgsty/silo-console#5](https://github.com/pgsty/silo-console/issues/5), [pgsty/silo-console#6](https://github.com/pgsty/silo-console/issues/6), [pgsty/silo-console#7](https://github.com/pgsty/silo-console/issues/7), [pgsty/silo-console#8](https://github.com/pgsty/silo-console/issues/8), [pgsty/silo-console#12](https://github.com/pgsty/silo-console/issues/12), [pgsty/silo-console#13](https://github.com/pgsty/silo-console/issues/13), [pgsty/silo-console#14](https://github.com/pgsty/silo-console/issues/14), [pgsty/silo-console#15](https://github.com/pgsty/silo-console/issues/15), [pgsty/silo-console#16](https://github.com/pgsty/silo-console/issues/16), [pgsty/silo-console#17](https://github.com/pgsty/silo-console/issues/17), [pgsty/silo-console#18](https://github.com/pgsty/silo-console/issues/18), [pgsty/silo-console#19](https://github.com/pgsty/silo-console/issues/19), [pgsty/silo-console#20](https://github.com/pgsty/silo-console/issues/20), [pgsty/silo-console#21](https://github.com/pgsty/silo-console/issues/21), [pgsty/silo-console#22](https://github.com/pgsty/silo-console/issues/22), [pgsty/silo-console#23](https://github.com/pgsty/silo-console/issues/23), [pgsty/silo-console#24](https://github.com/pgsty/silo-console/issues/24), [pgsty/silo-console#25](https://github.com/pgsty/silo-console/issues/25), [pgsty/silo-console#26](https://github.com/pgsty/silo-console/issues/26), [pgsty/silo-console#27](https://github.com/pgsty/silo-console/issues/27), [pgsty/silo-console#28](https://github.com/pgsty/silo-console/issues/28), [pgsty/silo-console#29](https://github.com/pgsty/silo-console/issues/29), [pgsty/silo-console#30](https://github.com/pgsty/silo-console/issues/30), [pgsty/silo-console#31](https://github.com/pgsty/silo-console/issues/31), [pgsty/silo-console#32](https://github.com/pgsty/silo-console/issues/32), [pgsty/silo-console#33](https://github.com/pgsty/silo-console/issues/33), [pgsty/silo-console#34](https://github.com/pgsty/silo-console/issues/34), [pgsty/silo-console#35](https://github.com/pgsty/silo-console/issues/35), [pgsty/silo-console#36](https://github.com/pgsty/silo-console/issues/36), [pgsty/silo-console#37](https://github.com/pgsty/silo-console/issues/37), [pgsty/silo-console#73](https://github.com/pgsty/silo-console/issues/73), [pgsty/silo-console#75](https://github.com/pgsty/silo-console/issues/75), [pgsty/silo-console#76](https://github.com/pgsty/silo-console/issues/76), [pgsty/silo-console#77](https://github.com/pgsty/silo-console/issues/77), [pgsty/silo-console#78](https://github.com/pgsty/silo-console/issues/78) @@ -221,7 +223,7 @@ Closed issues: [pgsty/silo-pkg#13](https://github.com/pgsty/silo-pkg/issues/13) Merged PRs: [pgsty/kes#1](https://github.com/pgsty/kes/pull/1) -Merged PRs: [pgsty/silo.pgsty.com#2](https://github.com/pgsty/silo.pgsty.com/pull/2), [pgsty/silo.pgsty.com#3](https://github.com/pgsty/silo.pgsty.com/pull/3), [pgsty/silo.pgsty.com#5](https://github.com/pgsty/silo.pgsty.com/pull/5), [pgsty/silo.pgsty.com#6](https://github.com/pgsty/silo.pgsty.com/pull/6), [pgsty/silo.pgsty.com#7](https://github.com/pgsty/silo.pgsty.com/pull/7), [pgsty/silo.pgsty.com#8](https://github.com/pgsty/silo.pgsty.com/pull/8), [pgsty/silo.pgsty.com#9](https://github.com/pgsty/silo.pgsty.com/pull/9), [pgsty/silo.pgsty.com#10](https://github.com/pgsty/silo.pgsty.com/pull/10), [pgsty/silo.pgsty.com#11](https://github.com/pgsty/silo.pgsty.com/pull/11), [pgsty/silo.pgsty.com#13](https://github.com/pgsty/silo.pgsty.com/pull/13), [pgsty/silo.pgsty.com#14](https://github.com/pgsty/silo.pgsty.com/pull/14), [pgsty/silo.pgsty.com#15](https://github.com/pgsty/silo.pgsty.com/pull/15), [pgsty/silo.pgsty.com#16](https://github.com/pgsty/silo.pgsty.com/pull/16), [pgsty/silo.pgsty.com#17](https://github.com/pgsty/silo.pgsty.com/pull/17), [pgsty/silo.pgsty.com#19](https://github.com/pgsty/silo.pgsty.com/pull/19), [pgsty/silo.pgsty.com#20](https://github.com/pgsty/silo.pgsty.com/pull/20), [pgsty/silo.pgsty.com#21](https://github.com/pgsty/silo.pgsty.com/pull/21), [pgsty/silo.pgsty.com#22](https://github.com/pgsty/silo.pgsty.com/pull/22), [pgsty/silo.pgsty.com#23](https://github.com/pgsty/silo.pgsty.com/pull/23), [pgsty/silo.pgsty.com#24](https://github.com/pgsty/silo.pgsty.com/pull/24), [pgsty/silo.pgsty.com#25](https://github.com/pgsty/silo.pgsty.com/pull/25), [pgsty/silo.pgsty.com#26](https://github.com/pgsty/silo.pgsty.com/pull/26), [pgsty/silo.pgsty.com#27](https://github.com/pgsty/silo.pgsty.com/pull/27), [pgsty/silo.pgsty.com#28](https://github.com/pgsty/silo.pgsty.com/pull/28), [pgsty/silo.pgsty.com#29](https://github.com/pgsty/silo.pgsty.com/pull/29), [pgsty/silo.pgsty.com#30](https://github.com/pgsty/silo.pgsty.com/pull/30), [pgsty/silo.pgsty.com#31](https://github.com/pgsty/silo.pgsty.com/pull/31), [pgsty/silo.pgsty.com#32](https://github.com/pgsty/silo.pgsty.com/pull/32), [pgsty/silo.pgsty.com#33](https://github.com/pgsty/silo.pgsty.com/pull/33), [pgsty/silo.pgsty.com#34](https://github.com/pgsty/silo.pgsty.com/pull/34), [pgsty/silo.pgsty.com#35](https://github.com/pgsty/silo.pgsty.com/pull/35), [pgsty/silo.pgsty.com#37](https://github.com/pgsty/silo.pgsty.com/pull/37), [pgsty/silo.pgsty.com#38](https://github.com/pgsty/silo.pgsty.com/pull/38), [pgsty/silo.pgsty.com#39](https://github.com/pgsty/silo.pgsty.com/pull/39), [pgsty/silo.pgsty.com#40](https://github.com/pgsty/silo.pgsty.com/pull/40), [pgsty/silo.pgsty.com#41](https://github.com/pgsty/silo.pgsty.com/pull/41), [pgsty/silo.pgsty.com#42](https://github.com/pgsty/silo.pgsty.com/pull/42), [pgsty/silo.pgsty.com#43](https://github.com/pgsty/silo.pgsty.com/pull/43), [pgsty/silo.pgsty.com#44](https://github.com/pgsty/silo.pgsty.com/pull/44), [pgsty/silo.pgsty.com#45](https://github.com/pgsty/silo.pgsty.com/pull/45), [pgsty/silo.pgsty.com#46](https://github.com/pgsty/silo.pgsty.com/pull/46), [pgsty/silo.pgsty.com#47](https://github.com/pgsty/silo.pgsty.com/pull/47), [pgsty/silo.pgsty.com#48](https://github.com/pgsty/silo.pgsty.com/pull/48), [pgsty/silo.pgsty.com#49](https://github.com/pgsty/silo.pgsty.com/pull/49), [pgsty/silo.pgsty.com#50](https://github.com/pgsty/silo.pgsty.com/pull/50), [pgsty/silo.pgsty.com#51](https://github.com/pgsty/silo.pgsty.com/pull/51), [pgsty/silo.pgsty.com#52](https://github.com/pgsty/silo.pgsty.com/pull/52), [pgsty/silo.pgsty.com#53](https://github.com/pgsty/silo.pgsty.com/pull/53) +Merged PRs: [pgsty/silo.pgsty.com#2](https://github.com/pgsty/silo.pgsty.com/pull/2), [pgsty/silo.pgsty.com#3](https://github.com/pgsty/silo.pgsty.com/pull/3), [pgsty/silo.pgsty.com#5](https://github.com/pgsty/silo.pgsty.com/pull/5), [pgsty/silo.pgsty.com#6](https://github.com/pgsty/silo.pgsty.com/pull/6), [pgsty/silo.pgsty.com#7](https://github.com/pgsty/silo.pgsty.com/pull/7), [pgsty/silo.pgsty.com#8](https://github.com/pgsty/silo.pgsty.com/pull/8), [pgsty/silo.pgsty.com#9](https://github.com/pgsty/silo.pgsty.com/pull/9), [pgsty/silo.pgsty.com#10](https://github.com/pgsty/silo.pgsty.com/pull/10), [pgsty/silo.pgsty.com#11](https://github.com/pgsty/silo.pgsty.com/pull/11), [pgsty/silo.pgsty.com#13](https://github.com/pgsty/silo.pgsty.com/pull/13), [pgsty/silo.pgsty.com#14](https://github.com/pgsty/silo.pgsty.com/pull/14), [pgsty/silo.pgsty.com#15](https://github.com/pgsty/silo.pgsty.com/pull/15), [pgsty/silo.pgsty.com#16](https://github.com/pgsty/silo.pgsty.com/pull/16), [pgsty/silo.pgsty.com#17](https://github.com/pgsty/silo.pgsty.com/pull/17), [pgsty/silo.pgsty.com#19](https://github.com/pgsty/silo.pgsty.com/pull/19), [pgsty/silo.pgsty.com#20](https://github.com/pgsty/silo.pgsty.com/pull/20), [pgsty/silo.pgsty.com#21](https://github.com/pgsty/silo.pgsty.com/pull/21), [pgsty/silo.pgsty.com#22](https://github.com/pgsty/silo.pgsty.com/pull/22), [pgsty/silo.pgsty.com#23](https://github.com/pgsty/silo.pgsty.com/pull/23), [pgsty/silo.pgsty.com#24](https://github.com/pgsty/silo.pgsty.com/pull/24), [pgsty/silo.pgsty.com#25](https://github.com/pgsty/silo.pgsty.com/pull/25), [pgsty/silo.pgsty.com#26](https://github.com/pgsty/silo.pgsty.com/pull/26), [pgsty/silo.pgsty.com#27](https://github.com/pgsty/silo.pgsty.com/pull/27), [pgsty/silo.pgsty.com#28](https://github.com/pgsty/silo.pgsty.com/pull/28), [pgsty/silo.pgsty.com#29](https://github.com/pgsty/silo.pgsty.com/pull/29), [pgsty/silo.pgsty.com#30](https://github.com/pgsty/silo.pgsty.com/pull/30), [pgsty/silo.pgsty.com#31](https://github.com/pgsty/silo.pgsty.com/pull/31), [pgsty/silo.pgsty.com#32](https://github.com/pgsty/silo.pgsty.com/pull/32), [pgsty/silo.pgsty.com#33](https://github.com/pgsty/silo.pgsty.com/pull/33), [pgsty/silo.pgsty.com#34](https://github.com/pgsty/silo.pgsty.com/pull/34), [pgsty/silo.pgsty.com#35](https://github.com/pgsty/silo.pgsty.com/pull/35), [pgsty/silo.pgsty.com#37](https://github.com/pgsty/silo.pgsty.com/pull/37), [pgsty/silo.pgsty.com#38](https://github.com/pgsty/silo.pgsty.com/pull/38), [pgsty/silo.pgsty.com#39](https://github.com/pgsty/silo.pgsty.com/pull/39), [pgsty/silo.pgsty.com#40](https://github.com/pgsty/silo.pgsty.com/pull/40), [pgsty/silo.pgsty.com#41](https://github.com/pgsty/silo.pgsty.com/pull/41), [pgsty/silo.pgsty.com#42](https://github.com/pgsty/silo.pgsty.com/pull/42), [pgsty/silo.pgsty.com#43](https://github.com/pgsty/silo.pgsty.com/pull/43), [pgsty/silo.pgsty.com#44](https://github.com/pgsty/silo.pgsty.com/pull/44), [pgsty/silo.pgsty.com#45](https://github.com/pgsty/silo.pgsty.com/pull/45), [pgsty/silo.pgsty.com#46](https://github.com/pgsty/silo.pgsty.com/pull/46), [pgsty/silo.pgsty.com#47](https://github.com/pgsty/silo.pgsty.com/pull/47), [pgsty/silo.pgsty.com#48](https://github.com/pgsty/silo.pgsty.com/pull/48), [pgsty/silo.pgsty.com#49](https://github.com/pgsty/silo.pgsty.com/pull/49), [pgsty/silo.pgsty.com#50](https://github.com/pgsty/silo.pgsty.com/pull/50), [pgsty/silo.pgsty.com#51](https://github.com/pgsty/silo.pgsty.com/pull/51), [pgsty/silo.pgsty.com#52](https://github.com/pgsty/silo.pgsty.com/pull/52), [pgsty/silo.pgsty.com#53](https://github.com/pgsty/silo.pgsty.com/pull/53), [pgsty/silo.pgsty.com#54](https://github.com/pgsty/silo.pgsty.com/pull/54), [pgsty/silo.pgsty.com#55](https://github.com/pgsty/silo.pgsty.com/pull/55), [pgsty/silo.pgsty.com#56](https://github.com/pgsty/silo.pgsty.com/pull/56), [pgsty/silo.pgsty.com#57](https://github.com/pgsty/silo.pgsty.com/pull/57) PRs closed without merging: [pgsty/silo.pgsty.com#36](https://github.com/pgsty/silo.pgsty.com/pull/36) diff --git a/PULL_REQUESTS_ETIQUETTE.md b/PULL_REQUESTS_ETIQUETTE.md index 02dc5e31c..12647563a 100644 --- a/PULL_REQUESTS_ETIQUETTE.md +++ b/PULL_REQUESTS_ETIQUETTE.md @@ -42,7 +42,8 @@ PRs must flow smoothly through review to reach production. Large PRs should be s - Document testing steps in the PR summary if manual testing was performed. 4. **Before Submitting**: - - Run `make verify` to check formatting, linting, and tests. + - Sign off every commit under the Developer Certificate of Origin (`git commit -s`). + - Run `make verifiers` to check formatting, linting, code generation, and `rebrand-guard`. - Reference related issues (e.g., “Closes #1234”). - Notify team members via GitHub `@mentions` if urgent or complex. diff --git a/README.md b/README.md index 902b156ce..4867bfa78 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ PGSTY SILO keeps one maintained release line of the open-source MinIO server alive after upstream ended community distribution: builds, packages, multi-arch images, security fixes, and the full web console. Pigsty runs it in production as its PostgreSQL backup repository. -It follows one rule — **the product and its delivery surfaces are renamed; the protocol and your data are not.** Everything else lives on [silo.pgsty.com](https://silo.pgsty.com/). +It follows one rule: **the product and its delivery surfaces are renamed; the protocol and your data are not.** Full documentation is published at [silo.pgsty.com](https://silo.pgsty.com/). **Related:** [`pgsty/mc`](https://github.com/pgsty/mc) · [`pgsty/silo-console`](https://github.com/pgsty/silo-console) · [`pgsty/silo-pkg`](https://github.com/pgsty/silo-pkg) · [`pgsty/kes`](https://github.com/pgsty/kes) · [`pgsty/pigsty`](https://github.com/pgsty/pigsty) @@ -44,10 +44,10 @@ It follows one rule — **the product and its delivery surfaces are renamed; the Silo Console

-#### SILO 20261109 +### SILO 20261109 > [!WARNING] -> [SILO 20261109](https://github.com/pgsty/silo/releases/tag/RELEASE.2026-11-09T00-00-00Z) fixes bugs and security vulnerabilities. We strongly recommend scheduling an upgrade to reduce security risks. +> [SILO 20261109](https://github.com/pgsty/silo/releases/tag/RELEASE.2026-11-09T00-00-00Z) (`20261109000000.0.0`, source `d998292387cc`) fixes storage, lifecycle, native restore, Object Lock, batch authorization, and IAM defects, embedding Console `v2.7.0` with `mcli 20261109`, `silo-pkg v3.16.0`, and Go `1.27.3`. Review the [release notes and upgrade requirements](https://silo.pgsty.com/blog/release/silo-20261109/) before upgrading. > [!NOTE] > On 2026-08-06, `pgsty/minio` became `pgsty/silo`, and the default branch changed from `master` to `main`. The last MinIO-branded release is [`20260804`](https://github.com/pgsty/silo/releases/tag/RELEASE.2026-08-04T00-00-00Z) on the [`minio`](https://github.com/pgsty/silo/tree/minio) branch. @@ -86,7 +86,7 @@ docker exec silo mcli mb local/demo && docker exec silo mcli ls local | Kubernetes | Helm chart, see [Download & Install](https://silo.pgsty.com/download/) | | Source | `go build -o silo . && ./silo --version` | -Every release ships checksums, SPDX SBOMs, Sigstore-signed manifests, and GitHub build attestations. Installation methods and verification commands are documented at [Download & Install](https://silo.pgsty.com/download/); migrating from upstream MinIO — taking over an existing `minio.service` and its `/etc/default/minio`, and keeping data ownership stable with a `/etc/systemd/system/silo.service.d/10-legacy-user.conf` drop-in — is covered by the [migration guide](https://silo.pgsty.com/compatibility/migration/) and the [binary & service notes](https://silo.pgsty.com/compatibility/binary/). +Every release ships checksums, SPDX SBOMs, Sigstore-signed manifests, and GitHub build attestations. Installation methods and verification commands are documented at [Download & Install](https://silo.pgsty.com/download/). To migrate from upstream MinIO, take over `minio.service` and `/etc/default/minio`, and preserve data ownership with a `/etc/systemd/system/silo.service.d/10-legacy-user.conf` drop-in. See the [migration guide](https://silo.pgsty.com/compatibility/migration/) and [binary & service notes](https://silo.pgsty.com/compatibility/binary/). ## Compatibility @@ -98,7 +98,7 @@ Every divergence from upstream is listed in the code-verified [compatibility aud ### TLS and Go upgrades -Server 20260916 restored Go's default key exchange; Server 20261018 retains it with Go 1.27.2. +Server 20260916 restored Go's default key exchange; Server 20261109 retains it with Go 1.27.3. TLS key exchange follows Go's defaults across the S3 listener, node links, replication, identity providers, etcd, and external HTTP services. If an endpoint cannot accept ML-KEM, `GODEBUG=tlsmlkem=0` disables the default hybrid exchanges diff --git a/README_ZH.md b/README_ZH.md index aa3227566..9d470c8b5 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -36,7 +36,7 @@ 上游停止社区发行后,Silo 为开源 MinIO 服务端维护一条持续可用的版本线:构建、软件包、多架构镜像、安全修复与完整 Web 控制台。Pigsty 在生产环境中用它承载 PostgreSQL 备份存储。 -它只遵循一条原则:**改名的是产品与交付物,不是协议与你的数据。** 其余内容都在 [silo.pgsty.com](https://silo.pgsty.com/zh/)。 +它只遵循一条原则:**改名的是产品与交付物,不是协议与你的数据。** 完整文档发布在 [silo.pgsty.com](https://silo.pgsty.com/zh/)。 **相关项目:**[`pgsty/mc`](https://github.com/pgsty/mc) · [`pgsty/silo-console`](https://github.com/pgsty/silo-console) · [`pgsty/silo-pkg`](https://github.com/pgsty/silo-pkg) · [`pgsty/kes`](https://github.com/pgsty/kes) · [`pgsty/pigsty`](https://github.com/pgsty/pigsty) @@ -44,10 +44,10 @@ Silo 控制台

-#### SILO 20261109 +### SILO 20261109 > [!WARNING] -> [SILO 20261109](https://github.com/pgsty/silo/releases/tag/RELEASE.2026-11-09T00-00-00Z) 修复了缺陷与安全漏洞,强烈建议尽快安排升级,以降低安全风险。 +> [SILO 20261109](https://github.com/pgsty/silo/releases/tag/RELEASE.2026-11-09T00-00-00Z)(包版本 `20261109000000.0.0`,源码 `d998292387cc`)修复了多池生命周期、原生恢复、Object Lock、批处理授权与 IAM 等缺陷,内嵌 Console `v2.7.0` 并配套 `mcli 20261109`、`silo-pkg v3.16.0` 与 Go `1.27.3`。升级前请阅读[发布说明与升级要求](https://silo.pgsty.com/zh/blog/release/silo-20261109/)。 > [!NOTE] > 2026-08-06,`pgsty/minio` 更名为 `pgsty/silo`,默认分支由 `master` 改为 `main`。最后一个 MinIO 品牌发布是 [`minio`](https://github.com/pgsty/silo/tree/minio) 分支上的 [`20260804`](https://github.com/pgsty/silo/releases/tag/RELEASE.2026-08-04T00-00-00Z)。 @@ -98,9 +98,9 @@ Silo 保留 S3 与存储格式兼容性,包括既有 `MINIO_*` 环境变量、 ### TLS 与 Go 升级 -Server 20260916 已恢复 Go 默认密钥交换策略,20261018 在 Go 1.27.2 下保留该行为。 -`GODEBUG=tlsmlkem=0`、`tlssecpmlkem=0` 的适用范围、macOS 根证书来源变化, -以及 OIDC discovery 的诊断方法见 [Go 1.27 TLS 与 OIDC 指南](https://silo.pgsty.com/zh/blog/design/go127-tls-oidc-discovery/)。 +Server 20260916 恢复了 Go 默认密钥交换策略,Server 20261109 在 Go 1.27.3 下保留该行为。S3 监听端口、节点间连接、站点与桶复制、身份提供方、etcd 及外部 HTTP 服务均使用 Go 默认 TLS 密钥交换。若对端无法接受 ML-KEM,设置 `GODEBUG=tlsmlkem=0` 可在当前进程禁用默认混合密钥交换(证书校验保持开启);该选项不会禁用 ML-DSA 签名,也不能解决所有 TLS 连接重置问题,建议在升级不兼容对端后移除该临时配置。若仅新增的 SecP 混合组引发问题,可设置 `GODEBUG=tlssecpmlkem=0` 仅禁用这些组并保留 `X25519MLKEM768`。 + +在 Go 1.27 构建中,macOS 上设置 `SSL_CERT_FILE` 或 `SSL_CERT_DIR` 会以磁盘根证书和 Go 验证器替代系统钥匙串信任;陈旧或不完整的 CA 路径可能导致原先受信任的连接失败,清除继承的环境变量即可恢复钥匙串信任。配置的 `CAs` 目录中的显式证书仍会叠加加入所选根证书池。Go 1.27 二进制要求 macOS 13 或更高版本。详见 [Go 1.27 发行说明](https://go.dev/doc/go1.27)与 [Go 1.27 TLS 与 OIDC 发现指南](https://silo.pgsty.com/zh/blog/design/go127-tls-oidc-discovery/)。 ## 文档归属 diff --git a/SECURITY.md b/SECURITY.md index ba658a04c..90787a27d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -38,7 +38,7 @@ For vulnerabilities in this fork: 1. Follow the fork-specific expectations in [VULNERABILITY_REPORT.md](VULNERABILITY_REPORT.md). 2. Prefer this repository's [private GitHub security advisory](https://github.com/pgsty/silo/security/advisories/new) workflow. -3. If you cannot use GitHub private reporting, email [ron@pgsty.com](mailto:ron@pgsty.com) or rh@vonng.com +3. If you cannot use GitHub private reporting, email [ron@pgsty.com](mailto:ron@pgsty.com) or [rh@vonng.com](mailto:rh@vonng.com) directly. Do not publish vulnerability details or exploit code in public issues or pull requests. 4. If you confirm the issue also affects upstream `minio/minio`, report it upstream separately. diff --git a/docs/metrics/healthcheck/README.md b/docs/metrics/healthcheck/README.md index 88fb19136..716ce4ff1 100644 --- a/docs/metrics/healthcheck/README.md +++ b/docs/metrics/healthcheck/README.md @@ -1,6 +1,6 @@ # Silo Healthcheck -Silo server exposes three un-authenticated, healthcheck endpoints liveness probe and a cluster probe at `/minio/health/live` and `/minio/health/cluster` respectively. +Silo server exposes four unauthenticated healthcheck endpoints: `/minio/health/live`, `/minio/health/ready`, `/minio/health/cluster`, and `/minio/health/cluster/read`. ## Native CLI probe @@ -76,7 +76,7 @@ readinessProbe: The reply is '200 OK' if cluster has write quorum if not it returns '503 Service Unavailable'. ``` -curl http://silo1:9001/minio/health/cluster +curl http://silo1:9000/minio/health/cluster HTTP/1.1 503 Service Unavailable Accept-Ranges: bytes Content-Length: 0 @@ -94,7 +94,7 @@ Date: Tue, 21 Jul 2020 00:36:14 GMT The reply is '200 OK' if cluster has read quorum if not it returns '503 Service Unavailable'. ``` -curl http://silo1:9001/minio/health/cluster/read +curl http://silo1:9000/minio/health/cluster/read HTTP/1.1 503 Service Unavailable Accept-Ranges: bytes Content-Length: 0 @@ -112,7 +112,7 @@ Date: Tue, 21 Jul 2020 00:36:14 GMT You may query the cluster probe endpoint to check if the node which received the request can be taken down for maintenance, if the server replies back '412 Precondition Failed' this means you will lose HA. '200 OK' means you are okay to proceed. ``` -curl http://silo1:9001/minio/health/cluster?maintenance=true +curl http://silo1:9000/minio/health/cluster?maintenance=true HTTP/1.1 412 Precondition Failed Accept-Ranges: bytes Content-Length: 0