Commit graph

13294 commits

Author SHA1 Message Date
Andras Bacsai
856b7f3c8f chore: Add .workspaces to .gitignore
This change adds the .workspaces directory to the .gitignore file. This directory is used by the Yarn workspaces feature and should not be committed to the repository.
2025-11-01 13:32:32 +01:00
Andras Bacsai
237246acee fix: Remove duplicate custom_labels from config hash calculation
The `custom_labels` attribute was being concatenated twice into the configuration hash calculation within the `isConfigurationChanged` method. This commit removes the redundant inclusion to ensure accurate configuration change detection.
2025-11-01 13:28:56 +01:00
Andras Bacsai
1f158b9b35 fix: Improve custom_network_aliases handling and testing
The `is_array` check for `custom_network_aliases_array` was too strict and could lead to issues when the value was an empty string or null. This commit changes the check to `!empty()` for more robust handling.

Additionally, the unit tests for `custom_network_aliases` have been refactored to directly use the `Application::isConfigurationChanged()` method. This provides a more accurate and integrated test of the configuration change detection logic, rather than relying on a manual hash calculatio
2025-11-01 13:24:05 +01:00
Andras Bacsai
9a664865ee refactor: Improve handling of custom network aliases
The custom_network_aliases attribute in the Application model was being cast to an array directly. This commit refactors the attribute to provide both a string representation (for compatibility with older configurations and hashing) and an array representation for internal use. This ensures that network aliases are correctly parsed and utilized, preventing potential issues during deployment and configuration updates.
2025-11-01 13:13:14 +01:00
Andras Bacsai
c34e5c803b fix: Convert network aliases to string for display
The `custom_network_aliases` field was being displayed as an array, which caused rendering issues. This change converts the array to a comma-separated string when syncing from the model to ensure it's displayed correctly in the UI.
2025-11-01 12:30:15 +01:00
Andras Bacsai
c6ae6a6cd9
Merge pull request #7053 from coollabsio/andrasbacsai/update-service-versions
Add artisan command to update service Docker image versions
2025-10-30 09:40:58 +01:00
Andras Bacsai
ea649d2a85 Add artisan command to update service Docker image versions
This command queries Docker registries (Docker Hub, GHCR, Quay, Codeberg) to find and update Docker image versions in service template files.

Features:
- Automatically updates 'latest' tags to semantic versions using digest matching
- Supports multiple version formats: semantic (1.2.3), date-based (2025.10.20), RELEASE timestamps
- Prefers shorter version tags (1.8 over 1.8.1) when both available
- In-memory caching to avoid duplicate API queries for same images
- Detects and reports services with available major version updates
- Preserves YAML formatting and comments
- Supports dry-run mode for preview

Usage:
  php artisan services:update-versions [--dry-run] [--service=name]

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 08:29:11 +01:00
Andras Bacsai
9f8661fe10
Merge pull request #7051 from ShadowArcanist/patch-12
chore(service): update Beszel to 0.15.2 version
2025-10-30 08:17:39 +01:00
Andras Bacsai
4252ae2a89
Merge pull request #7050 from ShadowArcanist/patch-11
fix(service): activepieces database failing to start (Closes #7027)
2025-10-30 08:17:11 +01:00
Andras Bacsai
2a8fbb3f6e feat: add token validation functionality for Hetzner and DigitalOcean providers 2025-10-29 23:21:38 +01:00
Andras Bacsai
c95e297f39 fix: update boarding flow logic to complete onboarding when server is created 2025-10-29 23:06:39 +01:00
ShadowArcanist
94006ea0e0
Updated Beszel one click service to 0.15.2 version
Updated Beszel and Beszel-Agent images to version 0.15.2.
2025-10-30 03:08:19 +05:30
ShadowArcanist
32cd8df4e4
Fixed activepieces one click service failing to start
Updated Docker images for activepieces, postgres, and redis to specific versions.
2025-10-30 02:36:58 +05:30
Andras Bacsai
5ed0b44bd0
Merge pull request #7048 from ShadowArcanist/shadow/fix-privatekey-deletion-on-githubaap-delete
Fix GitHub App deleting private key in use by other resources
2025-10-29 20:54:16 +01:00
ShadowArcanist
97e734e5ea fixed github app deleting private key when it is used by other resources 2025-10-30 01:16:59 +05:30
Andras Bacsai
25183d7c71 fix: remove unnecessary step attribute from maximum storage input fields 2025-10-29 20:43:32 +01:00
Andras Bacsai
54a4fa7eee fix: change SMTP port input type to number for better validation 2025-10-29 20:40:16 +01:00
Andras Bacsai
6fc5b01edc chore: update version numbers to 4.0.0-beta.439 and 4.0.0-beta.440 2025-10-29 20:38:48 +01:00
Andras Bacsai
ae9f348458 rate limit test 2025-10-28 15:18:28 +01:00
Andras Bacsai
6d6f3e9de7
Merge pull request #6944 from coollabsio/dependabot/npm_and_yarn/vite-6.4.1
build(deps-dev): bump vite from 6.3.6 to 6.4.1
2025-10-28 12:48:33 +01:00
Andras Bacsai
65c2b917db
Merge pull request #7039 from coollabsio/andrasbacsai/fix-login-rate-limit-bypass
fix: prevent login rate limit bypass via spoofed headers
2025-10-28 12:16:34 +01:00
Andras Bacsai
65e5b2ecdb fix: correct login rate limiter key format to include IP address 2025-10-28 10:32:19 +01:00
Andras Bacsai
20ac018620
Merge pull request #6979 from ShadowArcanist/shadow/-appwrite-healthchecks
feat(service): appwrite added healthchecks
2025-10-28 10:31:05 +01:00
Andras Bacsai
28e343d458
Merge pull request #7016 from majcek210/patch-3
Update & rename the pterodactly template
2025-10-28 10:30:51 +01:00
Andras Bacsai
81529e9274
Merge pull request #6976 from majcek210/v4.x
Fix and update the "pterodactly with wings" template.
2025-10-28 10:30:34 +01:00
Andras Bacsai
4df3134cec
Merge pull request #6973 from ShadowArcanist/patch-9
fix(service): seafile cannot upload files due to network errors
2025-10-28 10:30:07 +01:00
Andras Bacsai
342abc967c
Merge pull request #6971 from lamongabriel/plane
Update Plane version to v1.0.0
2025-10-28 10:29:47 +01:00
Andras Bacsai
0fdfc18440
Merge pull request #6530 from yipfram/fix/evolution-api-slogan
feat: update Evolution API slogan to better reflect its capabilities
2025-10-28 10:29:07 +01:00
Andras Bacsai
f300ba0118 fix: prevent login rate limit bypass via spoofed headers
The login and forgot-password rate limiters were vulnerable to bypass
by manipulating the X-Forwarded-For header. Attackers could rotate
this header value to circumvent the 5 attempts per minute limit.

Changed both rate limiters to use server('REMOTE_ADDR') instead of
ip() to prevent header spoofing. REMOTE_ADDR gives the actual
connecting IP before proxy headers are processed.

Also added comprehensive unit tests to verify the fix.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 09:47:13 +01:00
Andras Bacsai
4c29e8ceb3
Merge pull request #7012 from coollabsio/andrasbacsai/debian-13-docker-support
Add repository-based Docker installation fallbacks for Debian 13 and other major distros
2025-10-28 09:35:24 +01:00
Andras Bacsai
84b0ec1e94
Update app/Actions/Server/InstallDocker.php
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-10-28 09:31:32 +01:00
Andras Bacsai
221ed6283d
Delete funding.json 2025-10-28 08:41:38 +01:00
Andras Bacsai
0f59672942
Merge pull request #7038 from coollabsio/andrasbacsai/add-funding-json
feat: add funding.json for standardized funding information
2025-10-28 08:23:40 +01:00
Andras Bacsai
86fe583247
Merge pull request #7021 from coollabsio/andrasbacsai/fix-oauth-client-id-error
UI/UX improvements
2025-10-28 08:22:39 +01:00
Andras Bacsai
08ddc914d5 feat: add funding information for Coollabs including sponsorship plans and channels 2025-10-28 08:22:17 +01:00
Andras Bacsai
b1a68df65c fix: add null checks and validation to OAuth bulk update method
- Add null check before updating OAuth settings to prevent calling methods on null
- Apply couldBeEnabled() validation for all settings in bulk update (not just instant save)
- Disable OAuth providers that fail validation and collect error messages
- Surface all validation errors to the user instead of silently failing
- Update oauth_settings_map with fresh data after saving each setting

This ensures bulk updates follow the same validation logic as instant-save paths
and prevents bypassing model validation by directly calling update.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 17:04:33 +01:00
Andras Bacsai
8a3dc19d19 Update app/Livewire/SettingsOauth.php
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-10-27 17:03:19 +01:00
Andras Bacsai
f0db097a90 fix: clean up formatting and remove unnecessary key binding in stack form component 2025-10-27 17:03:19 +01:00
Andras Bacsai
974a8bdf64 fix: add wire:ignore directive to modal component for improved functionality 2025-10-27 17:03:19 +01:00
Andras Bacsai
28fc3feab0 fix: remove wire:ignore from modal and add wire:key to EditCompose component
- Remove wire:ignore from modal-input.blade.php wrapper to allow child Livewire components to be properly tracked
- Add unique wire:key to EditCompose component for proper identification when teleported
- Fixes 'Unable to call component method' error when saving compose files

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 17:03:19 +01:00
Andras Bacsai
1ab4b9aa31 refactor: simplify project data retrieval and enhance OAuth settings handling 2025-10-27 17:03:19 +01:00
Andras Bacsai
385af3143b fix: optimize caching in Dockerfile and GitHub Actions workflow 2025-10-27 16:59:41 +01:00
Andras Bacsai
cc070f2ee6 refactor: streamline Docker build process with matrix strategy for multi-architecture support 2025-10-27 16:51:42 +01:00
Andras Bacsai
a3a5694d10
Merge pull request #7029 from coollabsio/andrasbacsai/fix-mongodb-public-proto
fix(database): prevent malformed URLs when server IP is empty
2025-10-27 16:14:48 +01:00
Andras Bacsai
7ca3ce59fd
Merge pull request #7032 from coollabsio/andrasbacsai/update-sponsor-dade2
Update sponsor link from Darweb to Dade2
2025-10-27 16:04:56 +01:00
Andras Bacsai
c724654a0d fix: update sponsor link from Darweb to Dade2 in README 2025-10-27 16:02:05 +01:00
Andras Bacsai
dd002ba85d
Merge pull request #7015 from zackify/feature/fix-booleans
Fix api call booleans not being respected
2025-10-27 15:57:32 +01:00
Andras Bacsai
2265570964
Merge pull request #7030 from coollabsio/andrasbacsai/compose-editor-empty
Fix: Monaco editor empty for docker compose applications
2025-10-27 12:51:06 +01:00
Andras Bacsai
261dc39f02 fix: Monaco editor empty for docker compose applications
This commit fixes two related issues preventing the Monaco editor from displaying Docker Compose file content:

1. Data Sync Issue:
   - After loadComposeFile() fetches the compose content from Git and updates the database model, the Livewire component properties were never synced
   - Monaco editor binds to component properties via wire:model, so it remained empty
   - Fixed by calling syncFromModel() after refresh() in loadComposeFile() method

2. Script Duplication Issue:
   - Multiple Monaco editors on the same page (compose files, dockerfile, labels) caused race condition
   - Each instance tried to inject the Monaco loader script simultaneously
   - Resulted in "SyntaxError: Identifier '_amdLoaderGlobal' has already been declared"
   - Fixed by adding a global flag to prevent duplicate script injection

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 12:48:20 +01:00
Andras Bacsai
4cc668253e fix(database): prevent malformed URLs when server IP is empty
Add defensive null/empty checks in externalDbUrl() for all standalone database models to prevent "invalid proto:" errors when server IP is not available.

**Problem:**
When `$this->destination->server->getIp` returns null or empty string, database URLs become malformed (e.g., `mongodb://user:pass@:27017` with empty host), causing "invalid proto:" validation errors.

**Solution:**
Added early return with null check in externalDbUrl() method for all 8 database types:
- Check if server IP is empty before building URL
- Return null instead of generating malformed URL
- Maintains graceful degradation - UI handles null URLs appropriately

**Defense in Depth:**
While mount() guard (from commit 74c70b431) prevents most cases, this adds an additional safety layer for edge cases:
- Race conditions during server updates
- State changes between mount and URL access
- Direct model access bypassing Livewire lifecycle

**Affected Models:**
- StandaloneMongodb
- StandalonePostgresql
- StandaloneMysql
- StandaloneMariadb
- StandaloneClickhouse
- StandaloneRedis
- StandaloneKeydb
- StandaloneDragonfly

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 11:46:24 +01:00