Commit Graph
1472 Commits
Author SHA1 Message Date
Andras Bacsai 609cb4190e fix(health-checks): sanitize and validate CMD healthcheck commands
- Add regex validation to restrict allowed characters (alphanumeric, spaces, and specific safe symbols)
- Enforce maximum 1000 character limit on healthcheck commands
- Strip newlines and carriage returns to prevent command injection
- Change input field from textarea to text input in UI
- Add warning callout about prohibited shell operators
- Add comprehensive validation tests for both valid and malicious command patterns
2026-02-25 11:28:33 +01:00
Aditya TripathiandGitHub 036f565785 Merge branch 'next' into feat/healthcheck-cmd 2026-02-24 22:22:02 +05:30
Andras Bacsai 6cacd2f0ff chore: prepare for PR 2026-02-23 14:17:15 +01:00
Aditya TripathiandGitHub 04283a03a0 Merge branch 'next' into feat/healthcheck-cmd 2026-02-21 06:54:29 +05:30
peaklabs-dev 807cb4349d feat(ui): use 2 column layout 2026-02-04 17:17:51 +01:00
peaklabs-dev 4dc1ae8bf5 feat(ui): add official postgres 18 support
- add postgres 18 support
- add pgvector 18 support
- add postgres 16 as well as it is still widely used
2026-02-04 00:32:30 +01:00
MailoandGitHub 3a60561a34 fix(ui): horizontal overflow on application and service headings (#7970) 2026-01-19 19:27:19 +01:00
peaklabs-dev 7aa41675ab fix(ui): modal issues
- tooltips can not extend outside the modal causing a scrollbar to appear
- modals are to wide
- remove unused minWidth and maxWidth props
2026-01-19 18:19:35 +01:00
Andras Bacsai 95091e918f fix: optimize queries and caching for projects and environments 2026-01-16 11:51:26 +01:00
Aditya TripathiandGitHub 33d5879160 Merge branch 'next' into feat/healthcheck-cmd 2026-01-15 16:37:54 +05:30
ShadowArcanistandGitHub 728396f410 fix(ui): improve volume mount warning for compose applications (#7947) 2026-01-13 20:40:00 +01:00
Dominic SchmidandGitHub d4957ff3d1 feat(ui): improve sidebar menu items styling (#7928) 2026-01-12 23:09:56 +01:00
AlexzvnandGitHub a5537119b9 fix(ui): empty network destinations when cloning a resource (#7309) 2026-01-06 14:14:56 +01:00
peaklabs-dev 86ffef2df5 feat(ui): add port mapping format to helper and fix typo 2026-01-05 21:39:39 +01:00
Aleksander LisandGitHub 7c075551ff fix(log): preserve leading whitespace in logs (#7879) 2026-01-05 21:32:34 +01:00
571bbe235d feat(ui): make git repository dropdown searchable (#7064)
Co-authored-by: 🏔️ Peak <122374094+peaklabs-dev@users.noreply.github.com>
2026-01-04 19:28:15 +01:00
ShadowArcanistandGitHub cc3e39db1f feat(ui): show server name on resource card (#7417) 2026-01-04 17:19:01 +01:00
Andras Bacsai 796bb3a19d feat: Refactor service database management and backup functionalities
- Introduced a new sidebar component for service database navigation.
- Updated routes for database import and backup functionalities.
- Refactored the database import view to improve clarity and maintainability.
- Consolidated service application and database views into a more cohesive structure.
- Removed deprecated service application view and integrated its functionalities into the service index.
- Enhanced user experience with modal confirmations for critical actions.
- Improved code readability and organization across various components.
2026-01-02 16:29:48 +01:00
Andras Bacsai 360a82ec5d Merge branch 'next' into feat/servicedatabase-restore 2026-01-02 13:45:15 +01:00
Andras BacsaiandGitHub b448b08058 fix: prevent metric charts from freezing on page navigation (#7848) 2026-01-02 13:13:45 +01:00
Andras BacsaiandClaude Haiku 4.5 a8aa452475 fix: prevent metric charts from freezing when navigating with wire:navigate
Wraps inline chart initialization scripts in IIFEs to create local scope for variables. This prevents "Identifier has already been declared" errors when Livewire's SPA navigation re-executes scripts, allowing smooth navigation between metrics pages without page refresh.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-02 12:36:17 +01:00
Andras BacsaiandGitHub 006e787e2a feat(logs): Add loading indicator to download all logs buttons (#7847) 2026-01-02 12:05:14 +01:00
Andras BacsaiandGitHub 4d4254b591 claude fix test (#7825) 2026-01-02 12:04:23 +01:00
Andras BacsaiandClaude Haiku 4.5 a980fd460a feat(logs): Add loading indicator to download all logs buttons
Add visual feedback when downloading all logs in both container and deployment log views. Users now see an animated spinner and "Downloading..." text, preventing multiple concurrent downloads and improving UX during long operations.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-02 12:04:17 +01:00
Andras Bacsai 770ce2d327 Refactor application general settings view for improved readability and maintainability
- Adjusted indentation and formatting for better code clarity.
- Simplified conditional statements and removed unnecessary null checks.
- Enhanced user interface elements for Docker Compose and Dockerfile configurations.
- Improved handling of deployment commands and network settings.
- Updated helper texts for better user guidance.
2025-12-31 11:44:08 +01:00
Claude bbb2aa9ad4 feat(logs): Add dropdown to download displayed or all logs
Users can now choose between downloading only the currently displayed
logs or fetching and downloading all available logs from the container.

Changes:
- Add downloadAllLogs() method that fetches all logs without limit
- Replace download button with dropdown menu
- Options: "Download displayed logs" and "Download all logs"

Addresses #7803
2025-12-29 17:59:23 +00:00
Claude b484c0cc25 fix(logs): Remove hardcoded 2000 line display limit
The log viewer was artificially limiting display to 2000 lines
regardless of user's requested amount. Users could request 10k, 40k,
or 50k lines but only 2000 were ever shown.

Changes:
- Remove the hardcoded $maxDisplayLines = 2000 limit in the view
- Add MAX_LOG_LINES constant (50,000) in GetLogs component
- Enforce maximum limit in backend to prevent extremely large requests
- Update input field with max attribute and tooltip

Fixes #7803
2025-12-29 17:52:35 +00:00
b9ea89d528 fix(ui): make build pack UI reactivity work properly (#7780)
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-27 14:38:12 +01:00
Aditya Tripathi 1ef6351701 feat: require health check command for 'cmd' type with backend validation and frontend update 2025-12-25 21:03:49 +00:00
Aditya Tripathi 342e8e765d feat: add command healthcheck type 2025-12-25 08:11:11 +00:00
ShadowArcanist 1d1290c076 fix(ui): broken hyperlink to sentinel page on application metrics page 2025-12-23 18:46:07 +01:00
Andras BacsaiandClaude Opus 4.5 9fdb799663 Shorten timestamp display format in runtime logs
Changed from '2025-Dec-18 11:39:13.685710' to '2025-Dec-18 11:39:13'.
Microseconds are still used in wire:key for uniqueness.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 12:50:30 +01:00
Andras BacsaiandClaude Opus 4.5 deb79cf050 Add loading overlay to runtime logs to prevent flicker during refresh
Shows a subtle loading indicator over the logs container during refresh
or when enabling streaming. This masks any brief visual glitches from
Livewire's DOM morphing when log content changes significantly.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 12:46:52 +01:00
Andras BacsaiandClaude Opus 4.5 334fd2500f Fix color highlighting not applying on initial runtime logs load
Added morph.added hook to apply color highlighting when logs are first
loaded. The morph.updated hook only fires on subsequent updates, not
on initial DOM insertion.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 12:43:42 +01:00
Andras BacsaiandClaude Opus 4.5 8a4303cc02 Add decodeHtml helper to runtime logs for consistent HTML entity handling
Applies the same fix from deployment logs to runtime logs (GetLogs component).
Prevents HTML entities like &quot; from appearing when search highlighting
is applied to logs containing special characters.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 12:42:42 +01:00
Andras BacsaiandClaude Haiku 4.5 7bb14d1d9c Remove morph.updating hook that blocked log updates during text selection
The hook was preventing new logs from appearing when text was selected.
The hasActiveLogSelection() check in highlightText() is sufficient.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-18 12:40:14 +01:00
Andras BacsaiandClaude Haiku 4.5 9493398b58 Fix deployment logs flickering and HTML entity encoding
- Remove per-line x-effect directives that re-evaluated for every log line during polling
- Replace with efficient applySearch() function that updates logs once after Livewire morph
- Remove unnecessary caching mechanisms (renderTrigger, decodeCache, matchCountCache)
- Remove double HTML encoding of log lines (e() + Blade escaping)
- Add decodeHtml() helper to properly decode HTML entities from data attributes
- Use morph.updated hook instead of commit hook for efficient DOM updates

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-18 12:30:26 +01:00
Andras BacsaiandGitHub 27f2e32fbf Improve logging view performance to prevent browser freezing (#7682) 2025-12-18 08:50:04 +01:00
Andras BacsaiandClaude Opus 4.5 acd7106f93 Refactor log view to eliminate flickering during refresh
- Use atomic update pattern in backend: collect logs into temp variable
  before replacing outputs (prevents empty state flash)
- Remove per-line x-effect directives that caused 4000+ reactive
  evaluations on every update
- Replace inline Alpine.js class bindings with CSS utility classes
- Use single $watch and morph.updated hook instead of renderTrigger
- Remove HTML entity decode cache (no longer needed)
- Fix search highlight padding that caused text shifting

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 08:46:39 +01:00
Andras BacsaiandClaude Opus 4.5 20e4783528 Fix inconsistent match counting in log search
Use dataset.logContent instead of textContent for counting search
matches in getMatchCount(). This aligns the counting logic with
matchesSearch() which uses the same data attribute for filtering
visibility, ensuring the displayed match count accurately reflects
the number of visible/hidden lines.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 08:30:30 +01:00
Claude 40b1b1319f Improve logging view performance to prevent browser freezing
- Use CSS content-visibility: auto for lazy rendering of off-screen log lines
- Replace setInterval auto-scroll with requestAnimationFrame for smoother scrolling
- Cache HTML entity decoding to avoid repeated DOMParser calls (up to 5000 entries)
- Cache match count calculations to prevent repeated DOM queries
- Debounce search input (300ms) in deployment logs view
- Debounce Livewire render updates (100ms) to batch rapid changes
- Add log-line utility class with content-visibility optimization
- Add log-highlight utility class for search result highlighting

These changes address browser freezing when viewing deployment logs with
3500+ lines (GitHub issue #7668). The content-visibility CSS property lets
the browser skip rendering of off-screen content, significantly reducing
initial render time and memory usage.

Fixes #7668
2025-12-18 06:14:42 +00:00
Andras BacsaiandGitHub 7f29a46186 feat: Add copy logs button to deployment and runtime logs (#7676) 2025-12-17 20:57:44 +01:00
Andras BacsaiandClaude Haiku 4.5 6f2a33f859 feat: Add copy logs button to deployment and runtime logs
Add copy-to-clipboard functionality for both deployment logs and runtime container logs with success notification. Fixed event dispatch to use Livewire.dispatch() for proper toast notification handling. Reorganized copy and download buttons to appear consecutively in runtime logs toolbar.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-17 20:54:22 +01:00
Andras BacsaiandClaude Haiku 4.5 94acfd79aa Disable wire:navigate for logs views
Logs views should not use Livewire navigation, similar to terminal views.
This ensures full page loads when navigating to logs instead of SPA-like transitions.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-17 18:13:18 +01:00
Andras BacsaiandGitHub 96f2e81191 feat: copy resource logs with PII/secret sanitization (#7648) 2025-12-17 16:05:13 +01:00
Andras BacsaiandClaude Opus 4.5 28cd582d63 Fix wireNavigate on external links and url()->previous()
Remove wireNavigate() from:
- External links (docs, GitHub) - can't be handled by Livewire SPA
- url()->previous() in all error pages - dynamic URL can't prefetch
- Links with target="_blank" - conflicts with wire:navigate semantics

Keep wireNavigate() on internal Dashboard links in error pages.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 13:25:27 +01:00
Andras BacsaiandClaude Haiku 4.5 691f118440 Add wireNavigate to resource list cards on environment page
Add wire:navigate.hover to application, database, and service cards on the environment resource index page for SPA navigation.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-17 12:18:07 +01:00
Andras BacsaiandClaude Haiku 4.5 e709e2c131 Add toggleable wire:navigate SPA navigation with prefetching
Implement instance-wide SPA navigation toggle that enables smooth page transitions with prefetching on hover. Excludes terminal links which require full page lifecycle for WebSocket connections. Adds defensive checks to global-search component for SPA navigation compatibility.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-17 12:09:13 +01:00
Andras Bacsai 254b0a15e3 Fix dropdown positioning by adjusting offsets for scrollable containers 2025-12-16 15:01:53 +01:00
Andras Bacsai 0e84218cfd Enhance environment and resource dropdowns with improved timeout handling and positioning 2025-12-16 14:50:36 +01:00