Skip to content

feat: sponsorship panel#1117

Merged
Xe merged 21 commits intomainfrom
Xe/panel
Feb 7, 2026
Merged

feat: sponsorship panel#1117
Xe merged 21 commits intomainfrom
Xe/panel

Conversation

@Xe
Copy link
Owner

@Xe Xe commented Feb 7, 2026

A small panel at https://sponsors.xeiaso.net that allows sponsors to manage benefits of sponsorship including:

  • Discord invites
  • Logo upload requests
  • Inviting people to the BotStopper repo

Assisted-by: GLM 4.7 via Claude Code

Xe added 11 commits February 6, 2026 23:36
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Assisted-by: GLM 4.7 via Claude Code (agent teams)
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
This is a simple sponsor panel service implementing the spec in
the docs folder. This is the simplest possible thing that could work
and should be Good Enough:tm:.

Assisted-by: GLM 4.7 via Claude Code
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Assisted-by: GLM 4.7 via Claude Code
Signed-off-by: Xe Iaso <me@xeiaso.net>
@Xe Xe self-assigned this Feb 7, 2026
Xe added 6 commits February 7, 2026 19:05
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new sponsor-panel service (served at sponsors.xeiaso.net) to let GitHub sponsors manage benefits (Discord invite, logo submission, and team invites), alongside a small internal web/htmx static package + extensions and the required build/deploy plumbing.

Changes:

  • Introduce the sponsor-panel Go service with GitHub OAuth + dashboard + HTMX endpoints for invites/logo submissions.
  • Add an embedded web/htmx package (htmx core + extensions) and Tailwind-based styling pipeline for the sponsor-panel UI.
  • Add container build + Kubernetes manifests + CI/bake wiring for deploying sponsor-panel.

Reviewed changes

Copilot reviewed 60 out of 64 changed files in this pull request and generated 18 comments.

Show a summary per file
File Description
web/htmx/websocket.js Adds HTMX WebSocket extension implementation
web/htmx/remove-me.js Adds HTMX “remove-me” extension
web/htmx/path-params.js Adds HTMX path-parameter substitution extension
web/htmx/htmx_templ.go Generated templ output for HTMX script inclusion
web/htmx/htmx.templ templ component to include htmx.js + extensions
web/htmx/htmx.go Embed+mount HTMX static JS on a mux
web/htmx/headers.go Cache-control helper for static files
web/htmx/event-header.js Adds HTMX request “Triggering-Event” header extension
pb/xesite.twirp.go Regenerated Twirp client/server glue formatting
pb/xesite.pb.go Regenerated protobuf output/version bump
pb/external/protofeed/protofeed.pb.go Regenerated protobuf output/version bump
pb/external/mimi/announce/mimi-announce.twirp.go Regenerated Twirp glue formatting
pb/external/mimi/announce/mimi-announce.pb.go Regenerated protobuf output/version bump
pb/external/mi/mi.twirp.go Regenerated Twirp glue formatting
pb/external/mi/mi.pb.go Regenerated protobuf output/version bump
package.json Adds Tailwind dependencies + sponsor-panel dev script
manifest/sponsor-panel/service.yaml Service for sponsor-panel
manifest/sponsor-panel/kustomization.yaml Kustomize resources for sponsor-panel
manifest/sponsor-panel/ingress.yaml Ingress for sponsors.xeiaso.net
manifest/sponsor-panel/deployment.yaml Deployment for sponsor-panel
manifest/sponsor-panel/database.yaml (Currently commented out in kustomization) CNPG cluster
manifest/sponsor-panel/1password.yaml OnePasswordItem for sponsor-panel secrets
internal/adminpb/internal.twirp.go Regenerated Twirp glue formatting
internal/adminpb/internal.pb.go Regenerated protobuf output/version bump
go.mod Adds templ/go-github/pgx/sessions deps + tool block
docker/sponsor-panel.Dockerfile Build image for sponsor-panel (includes go generate)
docker-bake.hcl Adds sponsor-panel build target
cmd/sponsor-panel/templates/oautherror_templ.go Generated templ output (OAuth error page)
cmd/sponsor-panel/templates/oautherror.templ OAuth error UI
cmd/sponsor-panel/templates/login_templ.go Generated templ output (login page)
cmd/sponsor-panel/templates/login.templ Login page UI
cmd/sponsor-panel/templates/helpers.go Template helper for money formatting
cmd/sponsor-panel/templates/formsuccess_templ.go Generated templ output (success fragments)
cmd/sponsor-panel/templates/formsuccess.templ Success fragments UI
cmd/sponsor-panel/templates/formresult_templ.go Generated templ output (success/error fragment)
cmd/sponsor-panel/templates/formresult.templ Generic success/error fragment UI
cmd/sponsor-panel/templates/dashboard_templ.go Generated templ output (dashboard + cards)
cmd/sponsor-panel/templates/dashboard.templ Dashboard UI + cards
cmd/sponsor-panel/templates/base_templ.go Generated templ output (base layout)
cmd/sponsor-panel/templates/base.templ Base layout (loads CSS + HTMX)
cmd/sponsor-panel/tailwind.config.js Tailwind configuration for sponsor-panel
cmd/sponsor-panel/styles.css Tailwind entrypoint + font imports
cmd/sponsor-panel/static/favicon.ico Sponsor-panel favicon
cmd/sponsor-panel/static/css/.gitignore Ignore generated CSS output
cmd/sponsor-panel/oauth.go OAuth flow + sponsorship checks + session mgmt
cmd/sponsor-panel/models.go DB models + sponsorship tier check helpers
cmd/sponsor-panel/migrations.go Inline SQL schema migration
cmd/sponsor-panel/main.go Sponsor-panel server bootstrap + routes
cmd/sponsor-panel/handlers.go HTMX endpoints for team invite + logo submission
cmd/sponsor-panel/generate.go go:generate Tailwind build + templ generation
cmd/sponsor-panel/docs/UX_FLOWS.md UX spec document
cmd/sponsor-panel/docs/SPEC.md Technical spec document
cmd/sponsor-panel/docs/README.md Executive summary doc
cmd/sponsor-panel/dashboard.go Login/dashboard page handlers
cmd/sponsor-panel/CLAUDE.md Agent pointer file
cmd/sponsor-panel/AGENTS.md Agent/build/run notes
.github/workflows/earthly.yml CI runner change + publish sponsor-panel image tag
.claude/skills/templ-syntax/SKILL.md Internal agent skill doc
.claude/skills/templ-http/SKILL.md Internal agent skill doc
.claude/skills/templ-htmx/SKILL.md Internal agent skill doc
.claude/skills/templ-components/SKILL.md Internal agent skill doc

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +143 to +156
// Get uploaded file
file, header, err := r.FormFile("logo")
if err != nil {
slog.Error("logoHandler: failed to get logo file", "err", err)
renderError(w, "Logo file required", http.StatusBadRequest)
return
}
defer file.Close()

slog.Debug("logoHandler: received logo file",
"user_id", user.ID,
"company", companyName,
"filename", header.Filename,
"size", header.Size)
Copy link

Copilot AI Feb 7, 2026

Choose a reason for hiding this comment

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

The uploaded logo file is never uploaded anywhere (not attached to the created GitHub issue, not stored in DB/object storage, and not included in the issue body). As written, this silently discards the sponsor’s logo while reporting success. Either implement actual storage/upload (e.g., S3 or commit to a repo) or change the form to collect a URL/attachment instructions instead of a file upload.

Copilot uses AI. Check for mistakes.
Xe added 4 commits February 7, 2026 19:42
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Signed-off-by: Xe Iaso <me@xeiaso.net>
@Xe Xe merged commit 8cd83af into main Feb 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant