Skip to content

Releases: SatuSkyCloud/1ctl

v0.5.1

13 Jan 02:16

Choose a tag to compare

Changelog

  • c6f3504 fix: handle errcheck for resource exhausted error parsing
  • fd0fdd8 docs: add release notes for v0.5.1
  • 2da8de8 feat: add resource exhausted error handling and tier info display
  • d758bd6 fix(context): handle empty context file in saveContext
  • 71fbaa9 fix(ci): skip binary test for cross-compiled builds
  • 615d73a fix: resolve sec scan warnings and add Windows test compat
  • 960b497 fix: resolve gosec warnings and update CI lint tooling

Version 0.5.1 (13-01-2026)

✨ New Features

  • Resource Exhausted Error Handling: Enhanced error handling for resource quota exceeded scenarios

    • Beautiful formatted error display showing current tier limits
    • Clear guidance on which resources are exhausted (CPU, Memory, Pods, etc.)
    • Automatic tier upgrade suggestions when applicable
    • Support for displaying next tier limits and requirements
  • Tier Info Display: Added tier information to credits commands

    • credits balance now shows current tier and limits
    • Display of highest achieved tier (peak tier)
    • Credits required to reach next tier
    • Current resource limits per tier

🔧 Technical Improvements

  • Resource Error Utilities: New internal/utils/resource_error.go module

    • ParseResourceExhaustedError() - Parse API error responses for resource exhaustion
    • FormatResourceExhaustedError() - Beautiful CLI formatting for resource errors
    • Comprehensive test coverage with resource_error_test.go
  • Deploy Command Enhancement: Improved error handling during deployment

    • Detects resource exhausted errors from API
    • Displays actionable upgrade guidance
    • Shows current vs required resources
  • Credits API Integration: Enhanced credits balance endpoint integration

    • Added TierInfo struct with tier details
    • Support for tier limits display
    • Upgrade path information

v0.5.0

09 Jan 10:09

Choose a tag to compare

Changelog

  • 4727341 chore(v0.5.0): feature sync and pipeline fixes

Version 0.5.0 (09-01-2026)

✨ New Features

  • Credits & Billing Management: Complete billing and credits integration

    • credits balance - View organization credit balance
    • credits transactions - View transaction history
    • credits usage - View machine usage and costs
    • credits topup - Initiate credit top-up via Stripe
    • credits invoices - Manage invoices (list, get, download PDF, generate)
  • Storage Management (S3): Full S3-compatible object storage support

    • storage list/get/create/delete - Manage storage configurations
    • storage buckets - Bucket management operations
    • storage files/upload/download - File operations
    • storage presign - Generate presigned URLs
    • storage usage - View storage usage statistics
  • Logs Command: Deployment log viewing and streaming

    • logs --deployment-id - View stored deployment logs
    • logs --follow - Stream logs in real-time (WebSocket)
    • logs --stats - View log statistics
    • logs --tail - Limit number of lines
  • GitHub Integration: Complete GitHub OAuth and repository management

    • github status - Check GitHub connection status
    • github connect/disconnect - Manage GitHub account connection
    • github repos - List, sync, and get repository details
    • github installation - Manage GitHub App installation
  • Notifications: In-app notification management

    • notifications list - List notifications with filtering
    • notifications count - Get unread notification count
    • notifications read - Mark notifications as read
    • notifications delete - Delete notifications
  • Marketplace: Browse and deploy pre-configured applications

    • marketplace list - Browse available apps
    • marketplace get - Get app details
    • marketplace deploy - Deploy marketplace apps (WordPress, Immich, N8N, etc.)
  • User Profile Management: Personal account management

    • user me - View current user profile
    • user update - Update profile (name, email)
    • user password - Change password (interactive)
    • user permissions - View role and permissions
    • user sessions revoke - Revoke all sessions
  • API Token Management: Manage API tokens programmatically

    • token list - List all API tokens
    • token create - Create new tokens with expiry
    • token get - Get token details
    • token enable/disable - Toggle token state
    • token delete - Delete tokens
  • Audit Logs: View organization audit trails

    • audit list - List audit logs with filtering
    • audit get - Get audit log details
    • audit export - Export logs to JSON/CSV
  • Talos Configuration: Talos Linux machine configuration

    • talos generate - Generate Talos configuration
    • talos apply - Apply configuration to machines
    • talos history - View configuration history
    • talos network - View machine network info
  • Admin Operations: Super-admin management tools

    • admin usage - Manage machine usage records
    • admin credits - Add/refund organization credits
    • admin namespaces - List all Kubernetes namespaces
    • admin cluster-roles - List cluster roles
    • admin cleanup - Cleanup resources by label

🔄 Enhanced Commands

  • Organization Command Enhancements
    • org list - List all user organizations
    • org create - Create new organizations
    • org delete - Delete organizations
    • org team list - List team members
    • org team add - Add team members with role
    • org team role - Update member roles
    • org team remove - Remove team members
    • Enhanced org switch with --org-name support

🔧 Technical Improvements

  • Backend Route Expansion: Added 70+ new CLI routes to backend

    • Full DI pattern implementation for CLI controllers
    • Split controllers for better separation of concerns
    • Enhanced authentication middleware
  • API Client Architecture: Modular API client files

    • api/credits.go - Credits and billing operations
    • api/storage.go - S3 storage operations
    • api/logs.go - Log operations
    • api/github.go - GitHub integration
    • api/notifications.go - Notification operations
    • api/marketplace.go - Marketplace operations
    • api/audit.go - Audit log operations
    • api/talos.go - Talos configuration
    • api/admin.go - Admin operations
    • api/user.go - User profile operations
    • api/token.go - API token operations
    • api/org.go - Organization and team management
  • Command Structure: 11 new command files with consistent patterns

    • Beautiful output formatting with status lines, headers, dividers
    • Comprehensive error handling
    • Flag validation and help text

📚 Documentation

  • Updated README.md with all new commands and examples
  • Added usage examples for:
    • Credits & billing operations
    • Storage management
    • Log streaming
    • GitHub integration
    • Marketplace deployment
    • Team management
    • API token management
    • Admin operations

📋 New Commands Summary

Category Commands Added
Credits 9 subcommands
Storage 12 subcommands
Logs 1 command with 4 flags
GitHub 10 subcommands
Notifications 5 subcommands
Marketplace 3 subcommands
User 5 subcommands
Token 6 subcommands
Audit 3 subcommands
Talos 4 subcommands
Admin 8 subcommands
Org (enhanced) 7 new subcommands

v0.4.0

18 Dec 08:34

Choose a tag to compare

Changelog

  • d45bad9 chore(v0.4.0): multi-cluster integration

Version 0.4.0 (18-12-2025)

✨ New Features

  • Multi-Cluster Deployment: Deploy applications across multiple Kubernetes clusters for high availability
    • New --multicluster flag to enable multi-cluster replication
    • New --multicluster-mode flag to choose deployment strategy:
      • active-active: Both clusters serve traffic simultaneously with geo-routing (ideal for stateless apps)
      • active-passive: Primary serves traffic, secondary is standby with automatic failover (ideal for stateful apps)
    • New --backup-schedule flag to configure backup frequency: hourly, daily, weekly
    • New --backup-retention flag to configure backup retention: 24h, 72h, 168h, 720h

🔄 API Enhancements

  • MulticlusterConfig Model: Added new configuration model for multi-cluster deployments

    • Enabled: Toggle multi-cluster replication
    • Mode: Active-Active or Active-Passive deployment strategy
    • BackupEnabled: Enable Velero backups for data protection
    • BackupSchedule: Cron-based backup scheduling
    • BackupRetention: Duration-based backup retention
    • FailoverEnabled: Automatic failover on primary cluster failure
    • RestoreOnFailover: Automatic restore from backup on failover
  • Deployment Model Update: Extended Deployment struct with MulticlusterConfig field

🔧 Technical Improvements

  • Orchestrator Enhancement: Updated deployment orchestration to build and send multi-cluster configuration

    • Automatic cron schedule conversion from friendly names (hourly/daily/weekly)
    • Smart defaults: Active-passive mode automatically enables backup, failover, and restore-on-failover
    • Seamless integration with existing deployment workflow
  • DeploymentOptions Update: Added multi-cluster fields to deployment options struct

    • MulticlusterEnabled: Enable/disable multi-cluster
    • MulticlusterMode: Deployment strategy selection
    • BackupSchedule: User-friendly schedule selection
    • BackupRetention: Retention duration

📚 New Command Usage

# Deploy with multi-cluster enabled (active-passive with daily backups, 7-day retention)
1ctl deploy --cpu 100m --memory 256Mi --multicluster

# Deploy with active-active mode (geo-routing, no backups)
1ctl deploy --cpu 100m --memory 256Mi --multicluster --multicluster-mode active-active

# Deploy with custom backup configuration
1ctl deploy --cpu 100m --memory 256Mi --multicluster \
  --multicluster-mode active-passive \
  --backup-schedule hourly \
  --backup-retention 72h

# Full example with all options
1ctl deploy --cpu 500m --memory 1Gi \
  --machine my-machine-1 --machine my-machine-2 \
  --env DATABASE_URL=postgres://... \
  --multicluster \
  --multicluster-mode active-passive \
  --backup-schedule daily \
  --backup-retention 168h

📋 Multi-Cluster Configuration Reference

Flag Default Description
--multicluster false Enable multi-cluster deployment
--multicluster-mode active-passive Deployment strategy
--backup-schedule daily Backup frequency (hourly/daily/weekly)
--backup-retention 168h Backup retention period

Backup Schedule Mapping

Schedule Cron Expression Description
hourly 0 * * * * Every hour
daily 0 0 * * * Daily at midnight UTC
weekly 0 18 * * 6 Weekly (Sunday 2 AM MYT)

Retention Options

Value Duration Use Case
24h 1 Day Quick recovery, minimal storage
72h 3 Days Short-term retention
168h 7 Days Recommended for most apps
720h 30 Days Long-term retention

🔒 Security

  • Multi-cluster configuration securely transmitted via existing API authentication
  • Backup and failover operations handled by operator with proper RBAC
  • Cloudflare Load Balancer hostname auto-generated by backend

v0.3.0

30 Sep 03:27

Choose a tag to compare

Changelog

  • ce6d940 chore(v0.3.0): add multi-organization support with context management and CLI commands

✨ New Features

  • Multi-Organization Support: Full support for users belonging to multiple organizations
    • New org current command to view current organization context
    • New org switch command to switch between organizations
    • Enhanced auth status command to display organization ID and namespace
    • Organization context automatically saved and restored across sessions

🔄 API Enhancements

  • Multi-Tenant Authentication: Updated authentication flow to support multi-tenant backend

    • Login now returns and stores complete organization information (ID, name, namespace)
    • Token validation includes organization context
    • All API calls properly scoped to user's current organization
    • Fixed /api-tokens/list endpoint to include organization ID parameter
  • Backend Compatibility: Updated all endpoints to work with multi-tenant backend

    • Fixed TokenValidate model types (UUID → string) to match backend response
    • Added GetUserProfile API function for retrieving user organization details
    • Simplified login flow to use backend-provided organization data
    • Updated issuer endpoint to use upsert pattern (/issuers/upsert)

🔧 Technical Improvements

  • Enhanced Context Management: Improved CLI context storage

    • Added CurrentOrgID and CurrentOrgName fields to context
    • New helper functions: GetCurrentOrgID(), SetCurrentOrgID(), GetCurrentOrgName(), SetCurrentOrgName()
    • New combined setter: SetCurrentOrganization() for atomic updates
    • Maintains backward compatibility with existing context files
  • Improved Organization Visibility: Better user experience for multi-org environments

    • Auth status now shows: Email, Organization, Organization ID, Namespace, Token expiry
    • Deploy command properly uses current organization context by default
    • --organization flag allows deploying to specific organization/namespace
  • Comprehensive Test Coverage: Added tests for all new features

    • 3 new test cases for organization context operations
    • 3 new test cases for org command structure
    • All tests passing with 100% coverage of new code
    • Updated existing tests to accommodate new fields

🛠️ Breaking Changes

  • TokenValidate Model Changes: ID fields changed from uuid.UUID to string type
    • Affects: UserID, TokenID, OrganizationID
    • Added new fields: Token, Namespace, Message
    • Ensures compatibility with backend multi-tenant implementation

📚 New Commands

# View current organization
1ctl org current

# Switch to different organization
1ctl org switch --org-id <organization-id>

# Enhanced auth status
1ctl auth status

🔒 Security

  • All operations properly scoped to user's organization
  • Context file maintains secure 0600 permissions
  • Organization switching validates user access

v0.2.3

08 Aug 13:50

Choose a tag to compare

Changelog

  • c417533 fix: goreleaser ldflags to use correct module path

v0.2.2

08 Aug 02:04

Choose a tag to compare

Changelog

  • 3f0da70 chore (v0.2.2): add dedicated Docker upload service for large image support

✨ New Features

  • Enhanced Docker Image Upload: Added support for large Docker image uploads (>500MB and <8GB)

🔄 API Enhancements

  • Docker Upload Infrastructure: Migrated Docker image uploads to dedicated service
    • Previous: /docker/images/upload endpoint on main API
    • New: Direct upload to specialized Docker upload service
    • Optimized for handling large binary transfers
    • Supports file sizes from 500MB to 8GB

v0.2.1

20 Jun 07:58

Choose a tag to compare

Changelog

  • 8dbc6ce chore: v0.2.1 - Fixed ingress domain management issues, enhanced ingress API with new retrieval function, improved deployment orchestration for better domain handling, and streamlined ingress upsert operations for consistency and error handling.

🐛 Bug Fixes

  • Fixed ingress domain management: Resolved issue where ingress upsert operations were generating new domains instead of reusing existing ones
    • Enhanced upsertIngress function to check for existing ingresses by deployment ID before creating new ones
    • Added proper existing domain name reuse logic to prevent unnecessary domain generation
    • Fixed Kubernetes error "ingress not found" by properly identifying and updating existing ingress resources
    • Improved ingress update flow to use existing domain names and preserve ingress IDs
    • Fixed ingress upsert response parsing to correctly handle backend's string response containing only the ingress ID

🔧 Technical Improvements

  • Enhanced Ingress API: Added GetIngressByDeploymentID function to retrieve existing ingresses

    • Leverages existing backend route /ingresses/deploymentId/:deploymentId
    • Enables proper lookup of existing ingress resources during deployment updates
    • Simplifies client-side logic by leveraging backend's existing upsert capabilities
  • Improved Deployment Orchestration: Enhanced ingress handling in deployment process

    • Better separation between new ingress creation and existing ingress updates
    • Consistent domain name handling across deployment scenarios
    • Improved logging and error messaging for ingress operations
    • Returns domain name from backend response to ensure consistency

🔄 API Enhancements

  • Ingress Management: Streamlined ingress upsert operations to work seamlessly with backend logic
    • Client now properly leverages backend's existing ingress detection by namespace and app label
    • Reduced client-side complexity by relying on backend's robust upsert implementation
    • Enhanced error handling and response processing for ingress operations
    • Updated UpsertIngress to correctly unmarshal string ingress ID response from backend

v0.2.0

19 Jun 01:39

Choose a tag to compare

Changelog

  • 6781c2d chore: v0.2.0 - Simplified command structure by removing 'create' subcommands for deploy, service, and ingress; introduced upsert endpoints for idempotent operations; enhanced Dockerfile validation; improved user experience with streamlined CLI commands and comprehensive test updates.

✨ Enhanced Command Structure

  • Simplified Deploy Command: Removed deploy create subcommand and moved deployment flags directly to main deploy command

    • New usage: 1ctl deploy --cpu 100m --memory 20Mi --env HELLO=BYE --env SAY=WHAT
    • Subcommands list, get, and status remain available
    • Enhanced validation with clear error messages for required flags
  • Simplified Service Command: Removed service create subcommand and moved service flags directly to main service command

    • New usage: 1ctl service --deployment-id=123 --name=myservice --port=8080 --namespace=myorg
    • Subcommands list and delete remain available
    • Required flags: --deployment-id, --name, --port
  • Simplified Ingress Command: Removed ingress create subcommand and moved ingress flags directly to main ingress command

    • New usage: 1ctl ingress --deployment-id=123 --service-id=456 --app-label=myapp --namespace=myorg --domain=example.com
    • Subcommands list and delete remain available
    • Required flags: --deployment-id, --domain, --app-label, --namespace

🔄 API Enhancements

  • Upsert Endpoints Migration: Updated all resource creation to use upsert endpoints for idempotent operations

    • Deployment: POST /deployments/upsert/:namespace/:appLabel (namespace = organization, appLabel = app name)
    • Service: POST /services/upsert/:namespace/:serviceName (namespace = organization, serviceName = app name)
    • Ingress: POST /ingresses/upsert/:namespace/:appLabel (namespace = organization, appLabel = app name)
  • API Client Improvements: Replaced create functions with upsert functions

    • CreateDeploymentUpsertDeployment
    • CreateServiceUpsertService
    • CreateIngressUpsertIngress
    • Maintained same payload structure for backward compatibility

🔧 Technical Improvements

  • Enhanced User Experience: Streamlined command syntax eliminates unnecessary subcommand nesting

    • Direct flag access from main commands improves CLI ergonomics
    • Consistent command patterns across deploy, service, and ingress resources
    • Maintained backward compatibility for list/delete subcommands
  • Comprehensive Test Updates: Updated all test suites to reflect new command structure

    • Mock API functions updated to use upsert patterns
    • Integration tests migrated to new endpoint structure
    • Command tests updated with new handler functions
    • Maintained test coverage across all functionality
  • Shell Completion Updates: Updated all shell completion scripts for new command structure

    • Bash: Removed obsolete "create" subcommands, updated flag completions
    • Zsh: Enhanced completion with new command patterns
    • Fish: Updated subcommand and flag completion logic
    • PowerShell: Removed deprecated creation commands from completions
  • Deployment Orchestrator: Updated orchestration logic to use upsert operations

    • Service creation now uses UpsertService for idempotent operations
    • Ingress creation now uses UpsertIngress for consistent updates
    • Dependency handling updated with new upsert patterns
    • Improved error messages with operation context
  • Enhanced Image Upload Reliability: Added retry mechanism for Docker image uploads

    • Automatic retry up to 3 attempts on upload failures
    • Exponential backoff strategy (2, 4, 8 seconds between retries)
    • Clear progress indication and error reporting for each attempt
    • Improved resilience against temporary network issues or server errors
  • Enhanced Docker Validation: Significantly improved Dockerfile validation to support modern Docker features

    • Multistage Build Support: Now properly validates FROM image AS stage_name syntax
    • Line Continuation Handling: Fixed parsing of multi-line commands using backslash (\) continuations
    • Enhanced Image Name Validation: Updated regex patterns to support registry URLs, namespaces, and case-insensitive matching
    • COPY --from Syntax: Added proper validation for COPY --from=stage_name commands in multistage builds
    • Stage Name Validation: Validates stage names allow alphanumeric characters, underscores, and hyphens
    • Comprehensive Test Coverage: Added extensive test cases for all multistage build scenarios

🛠️ Breaking Changes

  • Command Structure: Removed create subcommands from deploy, service, and ingress commands
    • Old: 1ctl deploy create --cpu 100m --memory 20Mi
    • New: 1ctl deploy --cpu 100m --memory 20Mi
    • Old: 1ctl service create --deployment-id=123 --name=myservice --port=8080
    • New: 1ctl service --deployment-id=123 --name=myservice --port=8080
    • Old: 1ctl ingress create --deployment-id=123 --domain=example.com
    • New: 1ctl ingress --deployment-id=123 --domain=example.com --app-label=myapp --namespace=myorg

v0.1.8

17 Jun 08:48

Choose a tag to compare

Changelog

  • e76351c chore: v0.1.8 - Introduced machine marketplace discovery with enhanced filtering options, updated machine model with new fields and metrics, improved hostname mapping, and added API function for fetching available machines.

✨ New Features

  • Machine Marketplace Discovery: Added machine available command to browse and filter available machines for rent
    • Comprehensive filtering options: --region, --zone, --min-cpu, --min-memory, --gpu, --recommended, --pricing-tier
    • Enhanced display with pricing information, performance metrics, and recommendation indicators
    • Real-time availability status and resource specifications

🔧 Technical Improvements

  • Updated Machine Model: Synchronized frontend Machine model with enhanced backend structure

    • Changed MachineID from uuid.UUID to string type
    • Added new fields: ID, Status, LastHealthCheck, Recommended, ResourceScore
    • Added performance metrics: CPUUsagePercent, MemoryUsagePercent, StorageUsagePercent, NetworkUsageGbps
    • Added hardware features: HasGPU, HasHDD, HasNVME, NodeType
    • Added pricing information: PricingTier, HourlyCost
    • Added reliability metrics: UptimePercent, ResponseTimeMs, NetworkMetricsType
  • Enhanced Hostname Mapping: Updated deployment logic to use machine IDs instead of machine names

    • Both manual machine selection (--machine flag) and automatic selection now use machine IDs
    • Improved deduplication logic based on unique machine IDs
    • Ensures consistent backend integration with machine ID-based deployments
  • Improved Machine Information Display: Enhanced machine listing with additional useful information

    • Added Status, Node Type, Pricing Tier, and Hourly Cost to machine details
    • Added conditional display of Resource Score and Uptime percentage
    • Separate optimized display format for available machines marketplace

🛠️ API Enhancements

  • Added GetAvailableMachines() API function for fetching monetized machines
  • Updated MachineIDs struct to use string array instead of UUID array

v0.1.7

12 Jun 01:27

Choose a tag to compare

Changelog

  • 759fffe chore: v0.1.7
  • 94b0eb5 chore: update installation instructions in README for automated version retrieval
  • 4d6d484 chore: v0.1.6 & update GitHub Actions workflow for SatuSky deployment
  • eec41cb chore: v0.1.5

🐛 Bug Fixes

  • Fixed hostname deduplication for monetized machines: When multiple machines share the same hostname (e.g., "1"), the system now properly preserves the original hostname instead of incrementing it (e.g., "1" stays "1" instead of becoming "2")
    • Added hostname deduplication logic for owner's machines in automatic selection
    • Added hostname deduplication logic for manually specified machines via --machine flag
    • Ensures consistent hostname behavior across both user-owned and monetized machine deployments

🔧 Technical Improvements

  • Enhanced versioning system: Fixed automatic version detection in build process
    • Updated Taskfile.yml to automatically detect version from Git tags instead of using hardcoded default
    • Added task version command to easily check current version information
    • Version now correctly reflects Git state with format like v0.1.6-3-g94b0eb5 for commits ahead of tags
    • Improved build-time version injection with commit hash and build date