Files
zeekayandHanzo Dev 3ea73962ff rebrand: complete white-label leak sweep of Hanzo-served surfaces
Finishes the residual pass: the bulk of served leaks remained (28 locale
files, most templates, all raster/source assets, Chinese READMEs). Imports,
identifiers, and wire contracts are left intact.

- locale: 28 files, all "Gitea" -> "Hanzo Git"; docs/blog/about.gitea.* +
  gitea.com/.io + go-gitea help URLs -> docs.hanzo.ai / git.hanzo.ai /
  github.com/hanzoai/git (keys with lowercase "gitea" preserved)
- templates: footer, swagger UI title + generated OpenAPI specs (stale
  gitea.dev x-go-package -> github.com/hanzoai/git), webhook usernames,
  OAuth-source labels, package/help doc links, example org/team identifiers
- Go served defaults: RSS feed author/description, git commit user.name +
  fallback email, WWW-Authenticate realms (OAuth2/packages/container),
  500/error pages, MS Teams card, built-in OAuth provider label, CLI --help,
  SSH + push-rejection messages, startup/index/redis/doctor logs, test-mail
  subject + X-Mailer
- config: app.example.ini APP_NAME default
- assets: source assets/*.svg, gitea.svg, gitea-gitea sprite, and all PNGs
  (logo/favicon/apple-touch/avatar_default) regenerated as the committed
  black-tile Hanzo mark; --color-logo #609926 -> monochrome; favicon-status
  test realigned to the new mark (viewBox 64)
- README.zh-tw + README.zh-cn rewritten as Hanzo Git
- render field CommitParticipant.GiteaUser -> User

Preserved (imports / identifiers / external contracts): code.gitea.io,
module github.com/hanzoai/git, gitea.dev/sdk dep, X-Gitea-* webhook + email
headers, WWW-Authenticate realm="Gitea" in git-HTTP (Git Credential Manager
OAuth2 detection), GitServiceType "Gitea" migration-source name, theme id
gitea-auto, .gitea-* classes / svg symbol ids, Go/JS identifiers, "The Gitea
Authors" copyright headers, outbound User-Agent headers.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-22 17:44:02 -07:00

120 lines
4.5 KiB
Handlebars

{{if eq .PackageDescriptor.Package.Type "container"}}
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.installation"}}</h4>
<div class="ui attached segment">
<div class="ui form">
<div class="field">
<label>{{svg "octicon-terminal"}} {{ctx.Locale.Tr "packages.container.pull"}}</label>
{{if eq .PackageDescriptor.Metadata.Type "helm"}}
<div class="markup"><pre class="code-block"><code>helm pull oci://{{.PackageRegistryHost}}/{{.PackageDescriptor.Owner.LowerName}}/{{.PackageDescriptor.Package.LowerName}} --version {{.PackageDescriptor.Version.LowerVersion}}</code></pre></div>
{{else}}
{{$separator := ":"}}
{{if not .PackageDescriptor.Metadata.IsTagged}}
{{$separator = "@"}}
{{end}}
<div class="markup"><pre class="code-block"><code>docker pull {{.PackageRegistryHost}}/{{.PackageDescriptor.Owner.LowerName}}/{{.PackageDescriptor.Package.LowerName}}{{$separator}}{{.PackageDescriptor.Version.LowerVersion}}</code></pre></div>
{{end}}
</div>
<div class="field">
<label>{{svg "octicon-code"}} {{ctx.Locale.Tr "packages.container.digest"}}</label>
<div class="markup">
<div class="code-block-container code-overflow-scroll">
<pre class="code-block"><code>
{{- range .PackageDescriptor.Files -}}
{{- if eq .File.LowerName "manifest.json" -}}
{{- .Properties.GetByName "container.digest" -}}{{"\n"}}
{{- end -}}
{{- end -}}
</code></pre>
</div>
</div>
</div>
<div class="field">
<label>{{ctx.Locale.Tr "packages.registry.documentation" "Container" "https://docs.hanzo.ai/usage/packages/container/"}}</label>
</div>
</div>
</div>
{{if .PackageDescriptor.Metadata.Manifests}}
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.container.images"}}</h4>
<div class="ui attached segment">
<table class="ui very basic compact table">
<thead>
<tr>
<th>{{ctx.Locale.Tr "packages.container.digest"}}</th>
<th>{{ctx.Locale.Tr "packages.container.multi_arch"}}</th>
<th>{{ctx.Locale.Tr "admin.packages.size"}}</th>
</tr>
</thead>
<tbody>
{{range .PackageDescriptor.Metadata.Manifests}}
{{/* "unknown/unknown" is attestation-manifest, so we should skip it */}}
{{if ne .Platform "unknown/unknown"}}
<tr>
<td>
<a class="tw-font-mono" href="{{$.PackageDescriptor.PackageWebLink}}/{{$.PackageDescriptor.Version.LowerVersion}}/{{PathEscape .Digest}}">
{{StringUtils.TrimPrefix .Digest "sha256:" | ShortSha}}
</a>
</td>
<td>{{.Platform}}</td>
<td>{{FileSize .Size}}</td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
</div>
{{end}}
{{if .PackageDescriptor.Metadata.Description}}
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.about"}}</h4>
<div class="ui attached segment">
{{.PackageDescriptor.Metadata.Description}}
</div>
{{end}}
{{/* a container manifest may contain sub manifests, so here we try to display some information of the sub manifest,
not perfect, just better than before */}}
{{$imageMetadata := .ContainerImageMetadata}}
{{if $imageMetadata.ImageLayers}}
<h4 class="ui top attached header flex-text-block">
{{ctx.Locale.Tr "packages.container.layers"}}
{{/* only show the platform if the image metadata is not the package's, which means that it is a sub manifest */}}
{{if ne .ContainerImageMetadata .PackageDescriptor.Metadata}}
<span class="tw-text-base flex-text-inline" title="{{ctx.Locale.Tr "packages.container.details.platform"}}">
({{svg "octicon-cpu" 12}} {{.ContainerImageMetadata.Platform}})
</span>
{{end}}
</h4>
<div class="ui attached segment tw-break-anywhere">
<table class="ui very basic compact table tw-font-mono">
<tbody>
{{range $imageMetadata.ImageLayers}}
<tr>
<td>{{.}}</td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{end}}
{{if $imageMetadata.Labels}}
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.container.labels"}}</h4>
<div class="ui attached segment">
<table class="ui very basic compact table tw-font-mono">
<thead>
<tr>
<th>{{ctx.Locale.Tr "packages.container.labels.key"}}</th>
<th>{{ctx.Locale.Tr "packages.container.labels.value"}}</th>
</tr>
</thead>
<tbody>
{{range $key, $value := $imageMetadata.Labels}}
<tr>
<td class="tw-align-top">{{$key}}</td>
<td class="tw-break-anywhere">{{$value}}</td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{end}}
{{end}}