2
0
Commit Graph

20606 Commits

Author SHA1 Message Date
64b4a9ceed Update pages.go
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m46s
Build and Release / Unit Tests (push) Successful in 6m10s
Build and Release / Lint (push) Successful in 6m20s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m18s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m2s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m41s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 7m10s
Build and Release / Build Binary (linux/arm64) (push) Failing after 11m42s
2026-03-07 11:34:16 -05:00
727ae54f91 feat(pages): add blog post detail and list views to landing pages
Some checks failed
Build and Release / Create Release (push) Successful in 1s
Build and Release / Unit Tests (push) Successful in 3m22s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m29s
Build and Release / Lint (push) Failing after 5m48s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Enable blog functionality on custom domains with dedicated views:
- Blog post detail page with markdown rendering
- Paginated blog list view
- Shared context setup for consistent navigation/footer
- Route handling for /blog and /blog/:id paths
- Template updates across all landing page themes
2026-03-07 11:24:56 -05:00
238f0974d8 feat(pages): add blog section support to landing page templates
Add blog section configuration and rendering to landing pages. Includes:
- New BlogSectionConfig with headline, max posts, and excerpt options
- Logo source selection (URL, repo avatar, or org avatar)
- Recent blog posts display with featured images
- Navigation links to blog section
- Absolute repo URLs for custom domain support
2026-03-07 10:34:51 -05:00
b7d8fcc719 fix(i18n): correct sinhala translation encoding
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m16s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m20s
Build and Release / Lint (push) Successful in 5m59s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m10s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m11s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m0s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 6m17s
Build and Release / Build Binary (linux/arm64) (push) Failing after 13m0s
2026-03-06 19:37:14 -05:00
bf59c1cd5f feat(mcp): add list_issues and get_issue tools
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m17s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m32s
Build and Release / Lint (push) Successful in 6m37s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Failing after 46s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been cancelled
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binary (linux/arm64) (push) Has been cancelled
Implement MCP tools for querying repository issues. list_issues supports pagination and state filtering (open/closed/all), while get_issue retrieves detailed information including body content and comments for a specific issue.
2026-03-06 19:24:59 -05:00
6dff66b5ba chore(i18n): add translations for footer and releases settings
Some checks failed
Build and Release / Create Release (push) Successful in 1s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m53s
Build and Release / Unit Tests (push) Successful in 6m22s
Build and Release / Lint (push) Successful in 6m32s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Failing after 9h0m4s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Failing after 1m52s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 1m42s
Build and Release / Build Binary (linux/arm64) (push) Failing after 1m22s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Failing after 49s
Add translations for new footer configuration options (powered by, licenses, API links) and public releases feature across 28 locales.
2026-03-06 19:02:17 -05:00
734dd895bb feat(pages): add public releases option for landing pages
Allow private repositories to enable public release downloads on their landing pages. When enabled, unauthenticated users can download release attachments without accessing the repository. Adds download sections to all landing page templates with styling.
2026-03-06 18:04:35 -05:00
6ceb4f0ad4 fix: formatting
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 3m59s
Build and Release / Lint (push) Successful in 4m10s
Build and Release / Unit Tests (push) Successful in 4m35s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m13s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m22s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m10s
Build and Release / Build Binary (linux/arm64) (push) Failing after 8m31s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 10m4s
2026-03-06 17:19:31 -05:00
eca22df63a feat(admin): add configurable footer links for licenses and api
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m44s
Build and Release / Lint (push) Failing after 5m50s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Build and Release / Unit Tests (push) Successful in 6m4s
Add theme configuration options to control visibility of Licenses and API links in the footer. Also add authentication token to vault version API requests in build workflow to prevent rate limiting issues.
2026-03-06 17:04:32 -05:00
5f2420d353 feat(admin): add configurable footer powered by message
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m47s
Build and Release / Unit Tests (push) Successful in 6m10s
Build and Release / Lint (push) Successful in 6m17s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Failing after 37s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Failing after 8h59m46s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Failing after 1m12s
Build and Release / Build Binary (linux/arm64) (push) Failing after 1m19s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been cancelled
Move ShowFooterPoweredBy from static setting to dynamic theme configuration, allowing admins to toggle the "Powered by GitCaddy Server" footer message through the admin panel without restarting the server.
2026-03-06 16:40:41 -05:00
b5db61c34c fix(ci): use release token for checkout to access private repos
All checks were successful
Build and Release / Create Release (push) Has been skipped
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m51s
Build and Release / Unit Tests (push) Successful in 6m8s
Build and Release / Lint (push) Successful in 6m16s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Add RELEASE_TOKEN to all checkout actions to enable access to private dependencies during CI builds. Fixes authentication issues when cloning vault and other private repositories.
2026-03-04 21:30:59 -05:00
c59a0f746e feat(packages): split package list into public and private sections
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m49s
Build and Release / Unit Tests (push) Successful in 6m13s
Build and Release / Lint (push) Successful in 6m21s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m19s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h3m57s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m10s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 6m18s
Build and Release / Build Binary (linux/arm64) (push) Failing after 9m50s
Separate packages into PublicPackages and PrivatePackages arrays for template rendering. Add CanWritePackages flag to determine if viewer has permission to publish packages (admin, owner, or org team member with write access). Revert anonymous user 404 redirect to show proper error page.
2026-03-04 20:21:14 -05:00
438a41cd78 feat(web): redirect anonymous users to homepage on 404
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Successful in 3m21s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m32s
Build and Release / Lint (push) Successful in 6m7s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binary (linux/arm64) (push) Has been cancelled
Improve UX for unauthenticated visitors by redirecting them to the homepage instead of showing a 404 page. Authenticated users still see the standard 404 error page.
2026-03-04 09:34:47 -05:00
8cf6c08841 fix(org): handle anonymous users in repo count filtering
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m58s
Build and Release / Unit Tests (push) Successful in 6m12s
Build and Release / Lint (push) Successful in 6m21s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m23s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h3m51s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 8m1s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 12m57s
Build and Release / Build Binary (linux/arm64) (push) Has been cancelled
Set Private flag based on whether actor is present. When actor is nil (anonymous), Private must be false so SearchRepositoryCondition correctly filters to public repos only. Fixes repo count visibility for unauthenticated users.
2026-03-04 09:13:55 -05:00
112130747c fix(org): filter org repo count by user permissions
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m52s
Build and Release / Unit Tests (push) Successful in 6m14s
Build and Release / Lint (push) Successful in 6m23s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m25s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h6m17s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 7m20s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 9m33s
Build and Release / Build Binary (linux/arm64) (push) Failing after 10m35s
Pass actor/doer to GetOrgOverviewStats to filter repository count based on user access rights. Replace CountRepositories with SearchRepository to respect permission checks. Prevents users from seeing total count of repos they cannot access.
2026-03-04 08:25:15 -05:00
23b6860378 Update build.yml
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m54s
Build and Release / Unit Tests (push) Successful in 6m9s
Build and Release / Lint (push) Successful in 6m28s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m14s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h3m54s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 9m11s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 12m32s
Build and Release / Build Binary (linux/arm64) (push) Successful in 28m38s
2026-03-04 01:55:47 -05:00
aeaea13ab7 Update build.yml
Some checks failed
Build and Release / Unit Tests (push) Failing after 1m48s
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 3m20s
Build and Release / Lint (push) Successful in 4m53s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m48s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binary (linux/arm64) (push) Has been cancelled
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been cancelled
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been cancelled
2026-03-04 01:41:57 -05:00
bd4d53d0f8 chore(ci): revert go version and remove mod tidy steps
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Failing after 31s
Build and Release / Lint (push) Failing after 1m3s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Build and Release / Integration Tests (PostgreSQL) (push) Has been cancelled
Revert to Go 1.25.0 with local toolchain. Remove unnecessary 'go mod tidy' steps from build workflow as dependencies should already be committed.
2026-03-04 01:30:32 -05:00
34a2c8faf0 chore(ci): downgrade go to 1.25.5 and enable auto toolchain
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Failing after 31s
Build and Release / Lint (push) Failing after 1m5s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Integration Tests (PostgreSQL) (push) Failing after 1m7s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Change GOTOOLCHAIN from local to auto to allow automatic Go version upgrades when required by go.mod. Downgrade base version from 1.25.7 to 1.25.5.
2026-03-04 01:17:54 -05:00
79353f4756 chore(ci): update go version to 1.25.7
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Failing after 39s
Build and Release / Lint (push) Failing after 1m37s
Build and Release / Integration Tests (PostgreSQL) (push) Failing after 1m37s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
2026-03-04 01:11:56 -05:00
5bda6de937 refactor(secretscan): use internal json module instead of stdlib
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Failing after 31s
Build and Release / Lint (push) Failing after 55s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Integration Tests (PostgreSQL) (push) Failing after 56s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
2026-03-04 01:03:31 -05:00
dd84db7608 feat(secretscan): support .gitsecrets-ignore file for false positives
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Failing after 50s
Build and Release / Lint (push) Failing after 1m17s
Build and Release / Integration Tests (PostgreSQL) (push) Failing after 1m16s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Parse .gitsecrets-ignore file from commits to filter out known false positives during secret scanning. Matches entries by SHA-256 content hash (truncated to 16 chars) and pattern ID. Update push rejection message to guide users toward GitSecrets addon for managing ignored detections.
2026-03-04 00:58:13 -05:00
14232eec68 fix(actions): ignore label scheme suffix in runner matching
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 6m6s
Build and Release / Unit Tests (push) Successful in 6m27s
Build and Release / Lint (push) Successful in 7m10s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m1s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m48s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m52s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m38s
Build and Release / Build Binary (linux/arm64) (push) Successful in 9m40s
Update runner label matching to strip ":scheme" suffixes (e.g., ":host", ":docker") before comparison. This allows runners with "germany-linux:host" to match jobs with "runs-on: germany-linux" and vice versa.

Previously, exact label match was required, causing runners with scheme-qualified labels to fail matching jobs without schemes.
2026-02-15 12:36:06 -05:00
56cf9d1833 feat(api): implement v2 workflow status and failure endpoints
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 7m27s
Build and Release / Unit Tests (push) Successful in 7m45s
Build and Release / Lint (push) Successful in 7m58s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m7s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m35s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h6m42s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m49s
Build and Release / Build Binary (linux/arm64) (push) Failing after 2m57s
Adds v2 API endpoints for optimized workflow status queries. Implements /workflows/status to fetch latest run per workflow in single query using MAX(id) grouping. Adds /runs/{id}/failure-log endpoint returning structured failure data with job details, failed steps, log tails (last 200 lines), and workflow YAML content. Reduces client-side API calls and processing overhead.
2026-02-14 11:54:55 -05:00
de7d6a719e feat(plugins): implement protocol version negotiation in server
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 6m51s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 7m6s
Build and Release / Lint (push) Successful in 7m42s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m9s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m31s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m54s
Build and Release / Build Binary (linux/arm64) (push) Successful in 9m40s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m9s
Complete protocol versioning implementation on the server side, enabling forward-compatible plugin protocol evolution.

Server Changes:
- Send ProtocolVersion = 1 in InitializeRequest
- Store plugin's reported protocol version in ManagedPlugin
- Treat version 0 (pre-versioning plugins) as version 1
- Add SupportsProtocol() method to check before calling version-gated RPCs
- Log plugin's protocol version during initialization

Generated Code:
- Regenerate plugin.pb.go with protocol_version fields
- Add getter methods for new fields

Documentation:
- Add Protocol Versioning section to PLUGINS.md
- Explain version negotiation flow
- Document when plugins need to update vs. when they don't
- Add version history table (currently only v1)
- Update all example code to return protocol_version = 1

Benefits:
- Server can safely add new RPCs in future versions without breaking old plugins
- Plugins can detect newer servers and opt into advanced features
- Zero-value (0) provides backwards compatibility with pre-versioning plugins
- Clear upgrade path documented for plugin developers

This completes the protocol versioning feature started in the previous commit.
2026-02-13 02:18:20 -05:00
e932582f54 docs(plugins): add comprehensive plugin development guide
Add PLUGINS.md with complete documentation for building external GitCaddy plugins using the gRPC-based plugin protocol.

Documentation includes:
- Protocol overview and service definition
- Lifecycle diagram (Initialize → HealthCheck → OnEvent/HandleHTTP → Shutdown)
- Complete message reference for all 6 RPC methods
- Plugin manifest specification (routes, events, permissions, license tiers)
- Health monitoring and auto-restart behavior
- Configuration guide for external vs managed mode
- Transport details (h2c/HTTP2, gRPC wire format)
- Full working examples in Go, C#, and Python
- Debugging tips and common issues

Also updates README.md to reference the plugin guide and removes outdated Chinese translations (zh-cn, zh-tw) that were not being maintained.

This provides plugin developers with everything needed to build and deploy external services that integrate with GitCaddy's plugin framework.
2026-02-13 01:54:25 -05:00
174d18db22 refactor(plugins): migrate external plugin manager to grpc/connect
Replace manual HTTP/JSON RPC implementation with generated gRPC/Connect client, providing type-safe plugin communication.

Code Generation:
- Generate plugin.pb.go and pluginv1connect/plugin.connect.go from plugin.proto
- Add generate-plugin-proto Makefile target
- Delete hand-written types.go (replaced by generated code)

ExternalPluginManager Refactoring:
- Replace httpClient with pluginv1connect.PluginServiceClient
- Use h2c (cleartext HTTP/2) transport for gRPC without TLS
- Replace all manual callRPC/callRPCWithContext calls with typed Connect methods
- Remove JSON serialization/deserialization code
- Simplify error handling with native gRPC status codes

Benefits:
- Type safety: compile-time verification of request/response types
- Protocol compatibility: standard gRPC wire format
- Reduced code: ~100 lines of manual RPC code removed
- Better errors: structured gRPC status codes instead of string parsing
- Matches existing Actions runner pattern (Connect RPC over HTTP/2)

This completes the plugin framework migration to production-grade RPC transport.
2026-02-13 01:45:29 -05:00
f42c6c39f9 feat(ai-service): complete ai production readiness tasks
All checks were successful
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Successful in 6m49s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 7m6s
Build and Release / Lint (push) Successful in 7m15s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Implement critical production readiness features for AI integration: per-request provider config, admin dashboard, workflow inspection, and plugin framework foundation.

Per-Request Provider Config:
- Add ProviderConfig struct to all AI request types
- Update queue to resolve provider/model/API key from cascade (repo > org > system)
- Pass resolved config to AI sidecar on every request
- Fixes multi-tenant issue where all orgs shared sidecar's hardcoded config

Admin AI Dashboard:
- Add /admin/ai page with sidecar health status
- Display global operation stats (total, 24h, success/fail/escalated counts)
- Show operations by tier, top 5 repos, token usage
- Recent operations table with repo, operation, status, duration
- Add GetGlobalOperationStats model method

Workflow Inspection:
- Add InspectWorkflow client method and types
- Implement workflow-inspect queue handler
- Add notifier trigger on workflow file push
- Analyzes YAML for syntax errors, security issues, best practices
- Returns structured issues with line numbers and suggested fixes

Plugin Framework (Phase 5 Foundation):
- Add external plugin config loading from app.ini
- Define ExternalPlugin interface and manager
- Add plugin.proto contract (Initialize, Shutdown, HealthCheck, OnEvent, HandleHTTP)
- Implement health monitoring with auto-restart for managed plugins
- Add event routing to subscribed plugins
- HTTP proxy support for plugin-served routes

This completes Tasks 1-4 from the production readiness plan and establishes the foundation for managed plugin lifecycle.
2026-02-13 01:16:58 -05:00
813e3bcbb4 docs(nuget): expand ai features documentation
Some checks failed
Build and Release / Create Release (push) Successful in 1s
Build and Release / Unit Tests (push) Successful in 6m48s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 6m59s
Build and Release / Lint (push) Successful in 7m18s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m17s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m14s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m41s
Build and Release / Build Binary (linux/arm64) (push) Failing after 6m9s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Failing after 8h4m30s
Significantly expand the AI features section of the README with comprehensive configuration and usage documentation.

New content includes:
- Detailed explanation of Tier 1 (light operations) vs Tier 2 (agent mode)
- Complete app.ini configuration reference with all AI settings
- Step-by-step setup guide (system → org → repo → runner)
- Configuration cascade explanation (repo > org > system)
- Built-in safety features (bot user, loop prevention, rate limits, escalation)
- Automatic operation triggers table
- Manual API trigger examples
- Operation history and audit log access
- Escalation workflow documentation
- V2 API configuration section

This provides users with everything needed to deploy and configure the AI features, from initial setup through advanced agent mode configuration.
2026-02-12 09:38:12 -05:00
14338d8fd4 refactor(ai): consolidate ai operation types and reduce duplication
All checks were successful
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Successful in 7m11s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 7m21s
Build and Release / Lint (push) Successful in 7m32s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Refactor AI service layer to reduce code duplication and improve consistency.

Changes:
- Rename AIOperationRequest to OperationRequest for consistency
- Extract shared logic for issue-targeted operations (respond, triage) into triggerIssueAIOp helper
- Standardize field alignment in struct definitions
- Remove redundant error handling patterns

This reduces the API operations file by ~40 lines while maintaining identical functionality.
2026-02-12 00:55:52 -05:00
c9f6c4e7d2 feat(ui): add ai settings web interface for repos and orgs
Add comprehensive web UI for configuring AI features at repository and organization levels, completing the activation workflow for AI operations.

Repository AI Settings (repo/settings/ai):
- Enable/disable AI unit for the repository
- Toggle Tier 1 operations (auto-respond, auto-review, auto-triage, workflow inspection)
- Configure Tier 2 agent mode with trigger labels and runtime limits
- Set escalation rules (label, team assignment)
- Override provider/model preferences
- Add custom instructions for different operation types

Organization AI Settings (org/settings/ai):
- Configure org-level AI provider and model
- Set encrypted API key (with masked display)
- Define rate limits (max operations per hour)
- Whitelist allowed operations
- Enable/disable agent mode for org repositories

Both interfaces include proper permission checks, form validation, and cascade resolution display (showing inherited vs. overridden values). Adds navigation entries to settings sidebars and full i18n support.
2026-02-12 00:48:18 -05:00
eb1a5d497e feat(api): add ai operations and settings api endpoints
Add comprehensive API v2 endpoints for managing AI operations and repository-level AI settings.

AI Operations endpoints:
- GET /repos/{owner}/{repo}/ai/operations - List AI operation logs
- GET /repos/{owner}/{repo}/ai/operations/{id} - Get specific operation details
- POST /repos/{owner}/{repo}/ai/operations/trigger - Manually trigger AI operations
- GET /repos/{owner}/{repo}/ai/stats - Get AI usage statistics

AI Settings endpoints:
- GET /repos/{owner}/{repo}/ai/settings - Get repository AI configuration
- PATCH /repos/{owner}/{repo}/ai/settings - Update AI settings (admin only)

Settings include Tier 1 operations (auto-respond, auto-review), Tier 2 agent mode, escalation rules, provider/model preferences, and custom instructions. All endpoints validate AI unit enablement and permissions.
2026-02-12 00:03:04 -05:00
8ad6664b92 feat(ai): add ai service layer with agent and queue system
Implement core AI service infrastructure including agent operations, escalation handling, and asynchronous queue processing.

New services:
- Agent service: Handles Tier 2 AI operations with action runner integration
- Queue service: Asynchronous processing of AI operations with retry logic
- Escalation service: Routes complex issues to staff with configurable rules
- Notifier service: Sends notifications for AI operation results

Additional changes:
- Add GitCaddy AI system user (ID: -3) for bot operations
- Add AIConfig to repository units
- Add AI-specific error codes (rate limiting, service errors, etc.)
- Extend AI client with GenerateIssueResponse method
- Add AISettingsV2 struct for repository-level AI configuration

The queue system enables non-blocking AI operations with proper error handling and rate limiting.
2026-02-12 00:02:49 -05:00
26793bf898 feat(ai): add ai operation logging and org settings models
Add database models and infrastructure for AI operation tracking and organization-level AI configuration.

OperationLog model tracks all AI operations for auditing, including:
- Operation type, tier, and trigger event
- Token usage (input/output)
- Status tracking (pending, success, failed, escalated)
- Performance metrics (duration)
- Rate limiting support via CountRecentOperations

OrgAISettings model stores per-organization AI configuration:
- Provider and model selection
- Encrypted API key storage
- Rate limits (max operations per hour)
- Allowed operations whitelist
- Agent mode permissions

Also adds AI unit type to repository units for enabling/disabling AI features per repo.
2026-02-11 23:46:57 -05:00
7102167351 feat(repo): add public app integration toggle for repositories
All checks were successful
Build and Release / Create Release (push) Successful in 1s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 7m21s
Build and Release / Unit Tests (push) Successful in 7m26s
Build and Release / Lint (push) Successful in 7m47s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m12s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h5m1s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m1s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 7m14s
Build and Release / Build Binary (linux/arm64) (push) Successful in 9m17s
Add repository setting to control anonymous access to app integration endpoints (issue submission, update checks). When enabled (default), the desktop app can access these endpoints without authentication. When disabled, vault token authentication is required.

This provides granular control over app integration access, allowing repository owners to enforce full authentication on sensitive repositories while maintaining ease of use for public/limited repos.

Changes include:
- New PublicAppIntegration boolean field on Repository model
- Database migration v365 to add the field (defaults to true)
- Repository settings UI to toggle the feature
- Updated checkVaultTokenForRepo to respect the setting
- Security enhancement: IssueStatusJSONEndpoint now only returns app-submitted issues to anonymous users
2026-02-11 20:32:23 -05:00
dcceabc713 feat(admin): add bulk delete for packages
All checks were successful
Build and Release / Unit Tests (push) Successful in 3m32s
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m50s
Build and Release / Lint (push) Successful in 4m55s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m5s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m32s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h4m55s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m23s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m23s
Adds bulk delete functionality to admin packages page, allowing deletion of multiple packages and all their versions at once. Includes confirmation dialog, success/warning flash messages showing count of deleted packages and versions, and proper error handling. Adds new locale strings for delete action, confirmation prompt, and result messages.
2026-02-09 00:22:35 -05:00
9bdd35284f chore(deps): bump gitcaddy-vault from v1.0.59 to v1.0.60
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m13s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m5s
Build and Release / Lint (push) Successful in 5m16s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m55s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m6s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m36s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m28s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m48s
2026-02-08 11:17:56 -05:00
33858109d5 chore(deps): bump gitcaddy-vault to v1.0.59
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m17s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m53s
Build and Release / Lint (push) Successful in 5m14s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m53s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m24s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m24s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m45s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m53s
2026-02-08 10:44:00 -05:00
b2adcdf969 feat(packages): add bulk visibility management for packages
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m12s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m8s
Build and Release / Lint (push) Successful in 5m19s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m11s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m38s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m9s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m29s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 10m38s
Add ability to bulk set packages as private or public in both admin and repository package views. Includes new bulk action buttons, visibility grouping in repository view, and corresponding backend handlers for processing visibility changes. Admin can manage all packages while repository owners can manage their own packages.
2026-02-07 15:02:16 -05:00
fb2d53ba7a refactor(ui): replace link-action with async methods for job reruns
All checks were successful
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Successful in 3m23s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m19s
Build and Release / Lint (push) Successful in 5m22s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Replace link-action class with proper async methods (rerunJob and rerunAll) for handling job and workflow reruns in RepoActionView. This provides better control over the rerun flow and ensures proper page reload after the POST request completes.
2026-02-07 14:22:29 -05:00
ae9cb010ab chore(deps): bump gitcaddy-vault from v1.0.57 to v1.0.58
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m24s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m58s
Build and Release / Lint (push) Successful in 5m11s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m59s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h4m22s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m44s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m14s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m14s
2026-02-07 02:17:39 -05:00
d42b629458 Update go.mod
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 3m36s
Build and Release / Lint (push) Successful in 3m50s
Build and Release / Unit Tests (push) Successful in 4m11s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m1s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m39s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m57s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m25s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m56s
2026-02-06 22:24:59 -05:00
68d4264f9e Update go.mod
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m20s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m49s
Build and Release / Lint (push) Successful in 4m56s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m56s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h4m43s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m46s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m32s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m17s
2026-02-06 21:51:21 -05:00
fb8124d8f1 chore(deps): bump gitcaddy-vault from v1.0.54 to v1.0.55
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m7s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m30s
Build and Release / Lint (push) Successful in 5m35s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m52s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m39s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 5m29s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 5m10s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m2s
2026-02-06 19:22:18 -05:00
a10dbda7ac feat(blog): add view count tracking to blog posts
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m22s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m10s
Build and Release / Lint (push) Successful in 4m54s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m0s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m43s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m39s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 7m46s
Build and Release / Build Binary (linux/arm64) (push) Successful in 9m6s
Adds view_count field to blog_post table with database migration. Implements atomic increment on post views in both standalone and repo blog routes. Displays view count with eye icon in post templates.
2026-02-04 17:11:52 -05:00
f6e54207dc chore(deps): bump gitcaddy-vault from v1.0.52 to v1.0.54
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m11s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m11s
Build and Release / Lint (push) Successful in 5m18s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m51s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m36s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 7m2s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 7m20s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m12s
2026-02-04 14:10:50 -05:00
5c9385f4a2 feat(vault): add user-facing warnings for key configuration issues
Adds dedicated error page and warnings for vault encryption key problems including missing configuration, fallback key usage, and decryption failures. Displays context-specific messages to help users understand and fix key configuration issues. Includes detection of crypto errors in vault operations and graceful error handling throughout the UI.
2026-02-04 13:54:54 -05:00
53d4c529a7 perf(blog): limit tag scan to 500 most recent posts
Improve GetExploreTopTags performance by limiting the tag aggregation scan to the 500 most recent published posts instead of scanning all posts. This reduces database load while still providing relevant trending tags.
2026-02-03 17:13:49 -05:00
e19874f4b3 fix(blog): improve blog metadata display formatting
Simplify blog header to show owner/repo format without redundant "Blog" label. Add fallback to CreatedUnix when PublishedUnix is not available for featured posts.
2026-02-03 15:21:39 -05:00
33898561db feat(blog): add subscription-only blog post detection and UI updates
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m20s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m54s
Build and Release / Lint (push) Successful in 5m7s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m1s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h4m41s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 8m37s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 8m40s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m53s
Add HasSubscriptionOnlyBlogPosts function to check if a repository has premium blog content. Update subscribe page to display different messaging when paid blogs are available. Redesign featured blog section with centered layout, larger images, and improved hover effects.
2026-02-03 10:26:28 -05:00