2
0
Commit Graph

5120 Commits

Author SHA1 Message Date
fe5b504b97 feat(api): add v2 API endpoints for landing page configuration
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 8m24s
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
Build and Release / Unit Tests (push) Successful in 8m43s
Add comprehensive REST API for managing landing page configuration programmatically. Includes GET /repos/{owner}/{repo}/pages/config to retrieve full config, PUT to replace entire config, PATCH to update specific sections. Supports all config sections: brand, hero, stats, features, pricing, blog, gallery, comparison, etc. Adds UpdatePagesConfigOption and related structs for API payloads. Includes error codes for pages validation. Enables headless/automated landing page management.
2026-03-17 00:52:18 -04:00
cdf47b5ecd feat(pages): add comparison table section to landing pages
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m51s
Build and Release / Lint (push) Failing after 8m33s
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 / Unit Tests (push) Successful in 8m46s
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 configurable comparison matrix section for feature comparisons. Supports 3 columns (e.g., your product vs competitors, or pricing tiers) with optional highlight column. Features can be organized into groups. Each cell accepts "true" for checkmark, "false" for X, or custom text. Includes settings UI with up to 10 groups and 20 features per group. Renders in all 9 page templates with responsive table styling.
2026-03-16 23:05:10 -04:00
f3eba7dd34 feat(pages): add 5 new landing page templates
Add Documentation First, Developer Tool, Visual Showcase, CLI Terminal, and Architecture Deep Dive templates. Brings total templates to 9. Each template has unique design language and target audience: Documentation First for docs-heavy projects, Developer Tool for technical products, Visual Showcase for design/media projects, CLI Terminal for command-line tools, Architecture Deep Dive for technical deep-dives. Updates template display names for clarity.
2026-03-16 22:18:53 -04:00
433214fb91 feat(pages): add app store links to downloads section
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m56s
Build and Release / Unit Tests (push) Successful in 8m52s
Build and Release / Lint (push) Successful in 9m21s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Failing after 1s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Failing after 1s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 4m54s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m27s
Build and Release / Build Binary (linux/arm64) (push) Failing after 13m25s
Add GooglePlayID and AppStoreID config fields to display app store download buttons on landing pages. Shows "App Stores" section with Google Play and/or App Store badges when IDs are configured. Useful for mobile apps distributed via stores instead of direct downloads. Includes branded SVG icons for both stores. Applies to all four page templates.
2026-03-16 02:04:33 -04:00
5e165b97be feat(pages): add option to hide mobile releases from landing page
Add HideMobileReleases config option to hide Android and iOS releases from the downloads section on landing pages. Useful when mobile apps are distributed via app stores rather than direct downloads. Adds checkbox in Content settings and conditional rendering in all four page templates.
2026-03-16 01:22:52 -04:00
c7b5a2af19 feat(socialcard): use display names and custom branding on social cards
Replace GitCaddy logo with custom brand name (from Owner Display Name setting) when set. Use user/org display names instead of usernames in repo full name. Use DisplayTitle instead of repo name when available. Adds drawBrandOrLogo helper to render either custom text or default logo. Improves branding consistency with pages landing page settings.
2026-03-16 01:12:04 -04:00
679810687f feat(pages): add gallery section to landing page templates
Add configurable gallery section that displays images from repository's .gallery folder on landing pages. Includes settings for enabled/disabled, headline, subheadline, max images (default 6), and grid columns (default 3). Reads captions from gallery.json metadata. Implements gallery rendering in all four page templates (bold-marketing, minimalist-docs, open-source-hero, saas-conversion). Integrates with existing gallery management feature.
2026-03-15 22:54:11 -04:00
fc86952bf4 feat(pages): add logo and favicon upload to pages brand settings
Add ability to upload logo and favicon images directly instead of only using URLs. Images stored in repo-avatars storage with hash-based filenames (max 5 MB, JPG/PNG/WebP/GIF). Uploaded images take priority over URL fields. Includes upload/delete endpoints for both logo and favicon, UI with previews, and ResolvedLogoURL/ResolvedFaviconURL helper methods. Updates base_head template to use resolved favicon URL.
2026-03-15 22:45:29 -04:00
79a0c2683e feat(pages): add hero image upload to pages settings
Add ability to upload hero images directly instead of only using URLs. Images are stored in repo-avatars storage with hash-based filenames (max 5 MB, JPG/PNG/WebP/GIF). Uploaded images take priority over URL field. Includes upload and delete endpoints, UI with preview, and ResolvedImageURL helper method. Improves UX by eliminating need for external image hosting.
2026-03-15 22:39:52 -04:00
6007a19bed feat(pages): add support for 11 additional social platforms
Expand social link platform support from 5 to 16 platforms. Adds: Bluesky, Facebook, Instagram, Mastodon, Reddit, RSS, Substack, Threads, TikTok, and Twitch. Updates footer settings UI and all page templates (bold-marketing, minimalist-docs, open-source-hero, saas-conversion) with appropriate Octicon mappings for each platform.
2026-03-15 22:28:18 -04:00
56fd71ad6b feat(pages): add option to use media kit social card for OG image
Add checkbox in pages SEO settings to use the repository's Media Kit social preview as the Open Graph image instead of a custom URL. When enabled, shows preview of the social card and uses /social-preview endpoint. Adds og:title, og:description, og:image, and twitter:card meta tags to pages base template. Improves social sharing integration with existing Media Kit feature.
2026-03-15 22:08:31 -04:00
5788123e00 feat(pages): add multi-language support for landing pages
Implement internationalization system for landing pages:
- Database model for storing language-specific translations
- Language configuration with default and enabled languages
- Language switcher in navigation across all templates
- Translation management UI in settings
- Support for 15 languages including English, Spanish, German, French, Japanese, Chinese
- Auto-detection and manual language selection
- AI-powered translation generation capability
2026-03-07 13:09:46 -05:00
3a8bdd936c feat(pages): add A/B testing framework for landing pages
Implement comprehensive A/B testing system for landing page optimization:
- Database models for experiments, variants, and events
- AI-powered variant generation and analysis
- Visitor tracking with conversion metrics
- Experiment lifecycle management (draft/active/paused/completed)
- Email notifications for experiment results
- Cron job for automated experiment monitoring
- UI for viewing experiment results and statistics
2026-03-07 12:39:42 -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
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
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
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
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
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
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
36f5d77c9f feat(wishlist): add wishlist feature for feature requests
Some checks failed
Build and Release / Lint (push) Failing after 5m36s
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 / Integration Tests (PostgreSQL) (push) Successful in 2m37s
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Successful in 3m39s
Implements comprehensive wishlist/feature request system for repositories. Includes categories with colors, voting system, importance ratings (1-5 stars), status tracking (open/planned/in-progress/completed/declined), threaded comments with reactions, and release linking. Adds v2 API endpoints for CRUD operations. Includes repository settings toggle, header tab, and full UI templates for list/view/create. Supports vote counts, importance averages, and comment reactions.
2026-02-02 15:15:56 -05:00
2ba1596b02 feat(blog): add subscription-only content gating
Adds SubscriptionOnly flag to blog posts to restrict full content access to active subscribers. Shows teaser/preview for non-subscribers with subscribe CTA. Integrates with repository subscription system when monetization is enabled. Updates v2 API structs and editor UI with subscription toggle. Admins and repo writers bypass the gate.
2026-02-02 13:22:01 -05:00
6bc3693cef feat(blog): add series support and v2 API endpoints
Adds blog series field to group related posts together. Implements v2 API endpoints for listing, creating, updating, and deleting blog posts with proper error codes. Adds series filtering to explore page and sitemap support with pagination. Includes BlogPostV2 structs with author/repo references, HTML URLs, and content rendering. Updates editor UI with series input field.
2026-02-02 13:04:30 -05:00
ddf87daa42 feat(blog): add standalone blog view and top nav option
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 4m41s
Build and Release / Lint (push) Successful in 4m56s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m49s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m28s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 6m39s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 8m53s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m25s
Adds standalone blog post view at /blog/:id with full content rendering, comments, reactions, and OpenGraph metadata. Implements optional "Blogs" link in site header navigation (configurable in admin settings). Enforces repository access permissions on standalone view. Loads repo owners for avatar fallback on explore page. Includes SEO-friendly URLs and social media sharing support.
2026-02-02 00:19:17 -05:00
e13cfc6c27 style(config): fix indentation alignment for EnableBlogs field
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m23s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m3s
Build and Release / Lint (push) Successful in 5m15s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m58s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h5m25s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 7m21s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 8m30s
Build and Release / Build Binary (linux/arm64) (push) Successful in 9m6s
2026-02-01 17:08:18 -05:00
f933dfc2f3 feat(blog): add repository blog functionality
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m24s
Build and Release / Lint (push) Failing after 5m11s
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 / Integration Tests (PostgreSQL) (push) Successful in 5m18s
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
Adds comprehensive blog post system for repositories with draft/public/published status, featured images, tags, and subscriptions. Includes database models, migrations, CRUD operations, email notifications, explore page, and full UI templates for creating, editing, and viewing blog posts.
2026-02-01 16:59:04 -05:00
0259eed592 feat(ui): add option to hide Explore button from navbar
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Lint (push) Successful in 4m36s
Build and Release / Unit Tests (push) Successful in 3m8s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 3m33s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m22s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m35s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 7m58s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 11m51s
Build and Release / Build Binary (linux/arm64) (push) Successful in 9m34s
- Add theme.hide_explore_button configuration option
- Add admin UI toggle in Site Administration > Configuration > Theme
- Conditionally hide Explore button from header navigation when enabled
- Separate from hide_explore_users (which only hides the Users tab)
- Useful for private instances that don't want to expose the Explore feature
2026-02-01 10:59:43 -05:00
d1f20f6b46 feat(ci): add repository subscription monetization system
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m10s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m13s
Build and Release / Lint (push) Successful in 5m25s
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 8h5m42s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 7m30s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 7m55s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m36s
Implement complete subscription monetization system for repositories with Stripe and PayPal integration. Includes:
- Database models and migrations for monetization settings, subscription products, and user subscriptions
- Payment provider abstraction layer with Stripe and PayPal implementations
- Admin UI for configuring payment providers and viewing subscriptions
- Repository settings UI for managing subscription products and tiers
- Subscription checkout flow and webhook handlers for payment events
- Access control to gate repository code behind active subscriptions
2026-01-31 13:37:07 -05:00
e4aea692a5 fix(socialcard): reposition unsplash attribution with shadow
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m42s
Build and Release / Lint (push) Successful in 5m33s
Build and Release / Unit Tests (push) Successful in 5m53s
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 8h4m35s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 7m18s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 7m31s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m59s
Moves Unsplash photo attribution from centered below repo name to lower-left corner of the image area. Adds text shadow for better readability over photos.
2026-01-31 10:03:53 -05:00
b1b308d766 feat(repo): add cross-promotion feature for repositories
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m44s
Build and Release / Lint (push) Successful in 5m27s
Build and Release / Unit Tests (push) Successful in 5m39s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m58s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h4m56s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 6m27s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 8m19s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m25s
Add ability for repository owners to cross-promote up to 6 related repositories in the sidebar. Create repo_cross_promote table with migration v344 to store source-target relationships with display order. Add settings UI for managing promoted repos with drag-and-drop reordering. Display promoted repos in home sidebar with repository cards. Include locale strings and routing for cross-promotion management.
2026-01-31 08:36:23 -05:00
d3aa4508e7 feat(socialcard): add unsplash integration and improve image cards
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m36s
Build and Release / Lint (push) Successful in 5m19s
Build and Release / Unit Tests (push) Successful in 5m24s
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 9h4m44s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 8m5s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 8m29s
Build and Release / Build Binary (linux/arm64) (push) Has been cancelled
Add Unsplash API integration documentation to README with setup instructions. Adjust image card gradient scrim to cover bottom 50% with increased opacity (240) for better text readability. Set correct OpenGraph image dimensions (1080x1350) for portrait card formats. Improve Unsplash selection UX with status messages and page reload after successful image download.
2026-01-31 00:39:46 -05:00
3c98948218 fix(socialcard): improve typography and avatar rendering
All checks were successful
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m42s
Build and Release / Create Release (push) Successful in 0s
Build and Release / Lint (push) Successful in 5m31s
Build and Release / Unit Tests (push) Successful in 5m54s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m13s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 8m3s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 9m4s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h16m37s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m54s
Adjust font sizes and line heights for better text layout in preset cards (64px title, 28px desc). Create separate portrait font faces with 56px title for portrait formats. Fix avatar rendering to use proper alpha compositing for transparent images. Change delete image endpoint from DELETE to POST method and add author attribution overlay to Unsplash photo thumbnails.
2026-01-30 23:52:32 -05:00
7c1595859e refactor(socialcard): redesign card layouts and add portrait format
All checks were successful
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 2m46s
Build and Release / Create Release (push) Successful in 0s
Build and Release / Lint (push) Successful in 5m22s
Build and Release / Unit Tests (push) Successful in 5m35s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m7s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h4m40s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 8m6s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 8m50s
Build and Release / Build Binary (linux/arm64) (push) Successful in 8m27s
Redesign preset card layout with left accent stripe, centered avatar, and vertically centered text blocks. Add portrait format (1080x1350) for solid and image styles with split layout. Improve text wrapping and truncation logic. Update solid card to support background image in bottom half with solid color top section.
2026-01-30 23:23:38 -05:00
e8f910f140 feat(socialcard): add custom color and background image support
Some checks failed
Build and Release / Integration Tests (PostgreSQL) (push) Has been cancelled
Build and Release / Create Release (push) Has been cancelled
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binaries (amd64, linux, linux-latest) (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
Build and Release / Unit Tests (push) Has been cancelled
Build and Release / Lint (push) Has been cancelled
Adds new social card customization options including solid color backgrounds and custom background images with Unsplash integration. Introduces new database fields for storing color, background image URL, and Unsplash attribution. Adds media kit settings page for repository-level social card configuration.
2026-01-30 22:33:23 -05:00
57f913b92b feat(ci): add dynamic social card generation for repositories
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 5m16s
Build and Release / Lint (push) Successful in 5m28s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m9s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 4m16s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 4m54s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m28s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m8s
Implement Open Graph social card image generation with customizable themes. Cards are dynamically rendered with repository name, description, owner avatar, and GitCaddy branding.

Features:
- Three built-in themes: dark (default), light, and colorful
- 1200x630px cards optimized for social media platforms
- Avatar fetching with caching and fallback to default
- Text wrapping and truncation for long descriptions
- Repository settings UI for theme selection
- Migration to add social_card_theme column

Technical implementation:
- Uses golang.org/x/image for rendering with Inter font family
- Singleton renderer pattern for font reuse
- Endpoint: /:owner/:repo/socialcard.png
- Integrates with Open Graph meta tags in head template

Add Inter font files (Regular and Bold) and GitCaddy logo asset.
2026-01-30 00:54:58 -05:00
7844b8d2a4 feat(api): add hidden folders management endpoints to v2 API
Implements three new endpoints for managing repository hidden folders:
- GET /repos/{owner}/{repo}/hidden-folders - list all hidden folders
- PUT /repos/{owner}/{repo}/hidden-folders - add a hidden folder
- DELETE /repos/{owner}/{repo}/hidden-folders - remove a hidden folder

All write operations require repository admin permissions.
2026-01-27 14:02:48 -05:00
43adbaeffe feat(actions): add stuck job rescue mechanism
Some checks failed
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binaries (amd64, linux, linux-latest) (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
Build and Release / Integration Tests (PostgreSQL) (push) Has been cancelled
Build and Release / Create Release (push) Has been cancelled
Build and Release / Unit Tests (push) Has been cancelled
Build and Release / Lint (push) Has been cancelled
Introduce a cron task that rescues waiting jobs stuck due to version-sync issues by bumping the task version for affected scopes. Also bump version after each successful job pick to ensure runners re-poll for remaining waiting jobs. Configurable via STUCK_JOB_TIMEOUT (default: 5 minutes).
2026-01-27 09:00:36 -05:00
3ea1760f69 feat(explore): add packages explore page
Implements public package discovery page in the Explore menu. Shows public and global packages with pagination, filtering by type, and search. Adds admin setting to enable/disable the packages tab. Updates package search to support PublicOrGlobal filter for showing packages that are either public OR global. Includes new locale strings and templates.
2026-01-24 15:31:04 -05:00
f97554b008 test: fix Windows compatibility issues in test suite
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 5m20s
Build and Release / Lint (push) Successful in 5m26s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 2m57s
Build and Release / Build Binary (linux/arm64) (push) Has been cancelled
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
Skip LevelDB tests on Windows due to file locking and timeout issues. Adjust timer assertions to account for Windows timer resolution. Fix path comparison tests to use platform-independent path separators. Add missing file close in dumper test.
2026-01-22 18:59:06 -05:00
015318aa0a feat(plugins): add PluginRouter interface for route registration
Some checks failed
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been cancelled
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been cancelled
Build and Release / Build Binary (linux/arm64) (push) Has been cancelled
Build and Release / Lint (push) Has been cancelled
Build and Release / Unit Tests (push) Has been cancelled
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been cancelled
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been cancelled
Build and Release / Create Release (push) Has been cancelled
Build and Release / Integration Tests (PostgreSQL) (push) Has been cancelled
Introduce PluginRouter interface to standardize plugin route registration and replace the previous 'any' type approach. Add WebRouterAdapter to wrap web.Router and handle path prefixes correctly. This provides a cleaner, type-safe API for plugins to register routes without needing to know about the underlying router implementation.
2026-01-21 10:35:56 -05:00
264365523a Fix flaky TestEntriesCustomSort test
Some checks failed
Build and Release / Create Release (push) Has been skipped
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
Build and Release / Integration Tests (PostgreSQL) (push) Has been cancelled
Build and Release / Lint (push) Has been cancelled
Build and Release / Unit Tests (push) Has been cancelled
The test was using rand.Shuffle and asserting the result was different
from the original order. This is inherently flaky as there's a small
chance the shuffle produces the same order.

Changed to use a deterministic reversed order instead.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 23:56:47 -05:00
d5bda0495a fix(lint): resolve all formatting and nolint issues
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 3m5s
Build and Release / Unit Tests (push) Successful in 5m22s
Build and Release / Lint (push) Successful in 5m27s
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 9h5m17s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 11m24s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 11m48s
Build and Release / Build Binary (linux/arm64) (push) Failing after 2m37s
- Fix gofumpt extra-rules: combine repeated types in function signature
- Fix gofmt formatting in setting/ai.go and web.go
- Add explanations to nolint:dupl directives as required by nolintlint

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 19:01:48 -05:00
293714ed0b fix: resolve lint errors in AI modules
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Failing after 52s
Build and Release / Integration Tests (PostgreSQL) (push) Failing after 1m21s
Build and Release / Lint (push) Failing after 1m53s
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 fmt.Errorf with errors.New for static error messages
- Use modules/json instead of encoding/json (depguard)
- Add nolint:dupl for intentionally similar API handlers
- Explicitly ignore Session.Set return values (errcheck)
- Apply gofmt formatting

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 18:11:10 -05:00
d352b138d7 feat(i18n): add organization license settings and AI template helpers
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Integration Tests (PostgreSQL) (push) Failing after 1m46s
Build and Release / Unit Tests (push) Successful in 3m14s
Build and Release / Lint (push) Failing after 3m39s
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 organization-level license management with new settings page and locale strings across all languages. Add AI feature detection helpers (IsAIEnabled, IsAICodeReviewEnabled, IsAIIssueTriageEnabled) to template functions. Add license scanning functionality to repository settings.
2026-01-19 17:19:32 -05:00