- Add options/seed/error_patterns.json with default upload error patterns
- Add models/ai/seed.go with SeedErrorPatternsIfEmpty function
- Call seed on startup after models.Init if error_pattern table is empty
- Seeds 10 common error patterns for uploads, .NET, etc.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add GET /api/v2/upload/instructions for AI-friendly upload guidance
- Add POST /api/v2/repos/{owner}/{repo}/releases/{id}/assets with retry hints
- Add GET/DELETE for release assets via v2 API
- Include recommended curl flags for large file uploads (HTTP/1.1, keepalive, timeouts)
- Enhanced error responses with specific error codes and hints
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix lint errors in AI learning MCP tools (interface{} -> any, append pattern)
- Update OAuth realm names from Gitea to GitCaddy
- Update User-Agent strings to GitCaddy
- Update default git user.name, mailer X-Mailer header
- Update API docs descriptions
- Update template comments and swagger descriptions
- Keep Gitea attribution in footer and as OAuth provider option
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ErrorPattern and WorkflowTelemetry models for storing solutions
- Add 5 new MCP tools: get_error_patterns, report_error_solution,
report_solution_success, get_compatibility_matrix, diagnose_job_failure
- Error pattern regex extraction for NETSDK, XA, MSB, npm, go, cargo errors
- AIs can now query known solutions and report new ones
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix GetPagesConfigByRepoID to return ErrPagesConfigNotExist instead of (nil, nil)
- Add HideExploreUsers to admin config handler map
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add HelpURL to config handler so it can be saved from admin UI
- Hide Projects tab for non-members when no projects exist
- Hide Packages tab for non-members
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove repo_service import from services/context/repo.go (caused import cycle)
- Inline HasWiki check using gitrepo.IsRepositoryExist
- Fix type assertion for Repo in org/home.go (any -> *repo_model.Repository)
- Add missing {{end}} in org/home.tmpl template
- Update licenses.txt with MarketAlly header
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update swagger/ui.tmpl to use Scalar instead of swagger-ui
- Add version selector bar to v1 and v2 API docs
- Update theme colors to green (#609926) in light/dark themes
- Add MarketAlly header to licenses.txt generation
- Fix Hide Explore Users functionality
- Fix org home visibility for private repos and empty states
- Fix wiki/packages visibility for non-members
- Add promotional format for pinned orgs on homepage
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix gofmt formatting in modules/pages/config.go
- Fix gofmt formatting in routers/web/repo/setting/pages.go
- Modernize for loops to use range over int (Go 1.22+)
- Use strings.SplitSeq for efficient iteration (Go 1.24+)
🤖 Generated with Claude Code
- Add full UI-based landing page configuration (Brand, Hero, Content, Social, Pricing, Footer, Theme)
- Replace old templates with new designs: open-source-hero, minimalist-docs, saas-conversion, bold-marketing
- Add pricing section support to all landing page templates
- Add social links with icons to footer across all templates
- Fix footer copyright to use configured value from settings
- Add copyright symbol button in Footer & CTA settings
- Fix ThemeStruct missing HideExploreUsers and HelpURL fields
- Replace Gitea logo with GitCaddy icon in navbar, favicon, and assets
- Add testimonials array with random selection to templates
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rebrand:
- Binary renamed to gitcaddy-server
- Default AppName: GitCaddy
- New favicon and homepage logo
- Updated licenses.txt with MarketAlly copyright
- Footer: Powered by GitCaddy Server (Based on Gitea)
Homepage:
- Title: GitCaddy
- Tagline: Steeped in your workflow
- AI-Native Platform, Deploy Anywhere, Lightning Fast, Open Source
New Features:
- Explore Organizations tile cards display option
- Pinned repos show DisplayTitle if set
Fixes:
- Pages renamed to Landing Page in settings
Environment Variables (backward compatible):
- GITCADDY__ prefix (GITEA__ still supported)
- GITCADDY_WORK_DIR, GITCADDY_CUSTOM
- Add repository display title field shown in header and explore listings
- Add license settings page with predefined license types
- Auto-create LICENSE.md when license type is selected
- Show license in repo sidebar with link to LICENSE.md
- Add API header link option in theme settings
- Default explore/organizations sort to alphabetical
- Show org DisplayName only in /explore/organizations
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add customizable homepage title and tagline via admin theme settings
- Add ability for site admins to pin organizations to homepage
- Add pinned organization display format option (condensed/regular)
- Hide promotional text when pinned organizations are displayed
- Add database migration for is_homepage_pinned column
- Add custom site icon support for favicon and navbar
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add RawMessage type alias to modules/json and use it in MCP handler.
The custom RawMessage type was not implementing json.Unmarshaler,
causing parse errors when receiving MCP tool calls with params object.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- New files: Copyright 2026 MarketAlly
- Modified files: Copyright YYYY The Gitea Authors and MarketAlly
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace loop with slices.Contains in runners.go
- Replace HasSuffix+TrimSuffix with CutSuffix in web.go
- Rename UserPinnedRepo to PinnedRepo (stuttering fix)
- Rename capsJson to capsJSON (naming convention)
- Use errors.New for simple error strings in mcp.go
- Add actions module import for log reading
- Get task from job.TaskID
- Read logs using actions.ReadLogs for each step
- Return structured step logs with line content
- Handle expired logs and unstarted jobs gracefully
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Adds /api/v2/mcp endpoint implementing the Model Context Protocol (MCP)
for AI tool integration. Available tools:
- list_runners: List all runners with status and capabilities
- get_runner: Get detailed runner information
- list_workflow_runs: List workflow runs for a repository
- get_workflow_run: Get workflow run details with all jobs
- get_job_logs: Get logs from a specific job
- list_releases: List releases for a repository
- get_release: Get release details with all assets
This enables AI assistants to directly query Gitea Actions
state without web scraping.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add RunnersStatusJSON endpoint for bulk runner status queries
- Update runner_list.tmpl with JavaScript polling every 30 seconds
- Auto-refresh status, version, and last online time
- Display relative time as plain text (e.g., 5 minutes ago)
🤖 Generated with Claude Code
Runner Declare was overwriting agent_labels set by admin in the UI
every time the runner reported (~60s). Now labels are only managed
via the admin UI, not overwritten by the runner config.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add DistroInfo struct to parse Linux distribution from capabilities
- Add runner label management endpoints (add/remove/use-suggested)
- Update runner edit UI with:
- Clickable labels with X to remove
- Suggested labels with + to add individually
- Use All Suggested Labels button
- Buttons moved to full-width row below columns
- Suggested labels derived from OS and distro (linux, linux-latest, debian, debian-latest, etc)
🤖 Generated with Claude Code
- Add BandwidthTestRequestedAt field to ActionRunner model
- Update to actions-proto-go v0.5.7 with RequestBandwidthTest field
- Add RunnerRequestBandwidthTest handler and route
- Update FetchTask to check and return bandwidth test request flag
- Add Check Now button to runner capabilities panel
- Add locale strings for bandwidth test feature
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update FetchTask handler to store capabilities_json from request
- Use GitCaddy actions-proto-go v0.5.6 with CapabilitiesJson field
- Capabilities include disk space, tools, docker, and limitations
- Rename Activity to Stats in sidebar with better flex layout
- Add repo avatars/icons to pinned repos (Featured Projects)
- Add Recent Activity section showing 10 most recently updated repos
- Show repo description, language, and time since update
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move public members section to right sidebar for non-members
- Members see internal members + teams in sidebar
- Non-members see public members in sidebar
- Fix Activity stats formatting with 2x2 grid in sidebar
- Remove duplicate public members section from main content
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename OrgOverviewStats fields to match template expectations
- Add TotalStars field to show aggregate star count
- Add CountOrgRepoStars function to repo model
- Fix API struct and handler to use new field names
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ShowHeatmapOnProfile field to user model
- Add checkbox in user settings under privacy section
- Display heatmap on profile overview page when enabled
- Users can now show their contribution activity on their profile
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add UserPinnedRepo model for pinning repos to user profiles
- Add Pin dropdown in repo header with options for profile/org
- Add pin/unpin routes and handlers
- Update user profile to show pinned repos with nice cards
- User overview tab always visible (like org overview)
- Shows empty state with instructions when no pinned repos
- Limit of 6 pinned repos per user
- Org members can pin repos to organization
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Overview tab now always visible for organizations
- Added nice empty state for pinned repos with setup instructions
- Added empty state for public members section
- Added empty state for profile README with create button
- Added organization activity stats section
- Overview is now the default tab (not repositories)
- Added 10 new locale strings for empty states
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Custom domains configured in Pages settings now route directly
to the repository landing page, in addition to subdomain routing.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update subdomain parser to use {repo}-{owner}.{domain} format
- Add middleware to intercept Pages subdomain requests
- Generate default config when Pages enabled but no .gitea/landing.yaml
- Pages are public landing pages (accessible even for private repos)
🤖 Generated with Claude Code
- Add checkbox to mark SSL as handled externally (e.g., Cloudflare)
- Add Activate SSL button for verified domains with pending SSL
- Add SSLExternal option to API
- Useful when using CDN/reverse proxy that handles SSL certificates
- Remove omitempty from nested struct fields in PagesConfigResponse
- Remove unused ctx parameter from findUpdateAsset and convertToAPIRelease
- Simplify nil check for release.Attachments (len() handles nil)
- Use strings.EqualFold instead of strings.ToUpper for case-insensitive comparison
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add public_landing option to allow private repos to have public landing pages
- Add public_releases option to allow private repos to serve releases publicly
- Add /api/v2/repos/{owner}/{repo}/releases/update endpoint for Electron/Squirrel compatible app updates
- Add /api/v2/repos/{owner}/{repo}/pages/config and /content endpoints
- Add repoAssignmentWithPublicAccess middleware to bypass auth for public landing/releases
- Update README with documentation for new features
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>