Repository navigation
v2.26
New Features
- Collapsible worlds sections in admin UI: Split worlds table into "Active Worlds" and "Offline Worlds" sections
- Active Worlds shows all non-stopped worlds (running, starting, stopping, updating, etc.)
- Offline Worlds shows only stopped worlds
- Click section headers to toggle collapse/expand
- User preferences saved in cookies for session persistence
- Worlds automatically move between sections when status changes
- Real-time section count updates via AJAX polling
- Scrollable world tables: Both Active and Offline sections now have scrollable containers (375px max height)
- Offline worlds sorted by last updated: Most recently updated worlds appear first
- Dynamic world creation: New worlds are automatically added to tables via AJAX without page refresh
- GitHub and Discord links: Added social icons to bottom left footer with version number
- Real-time world status in public UI: World cards now update within seconds when worlds go online/offline
- Uses pgrep-based process detection for instant status updates
- Both initial page load and AJAX polling use real-time detection
- Memory shows "pending..." while waiting for cron to report actual usage
- Removed Citizens field from world cards
UI Improvements
- Added visual separation between table header and collapsible sections with accent borders
- Section count badges (green for active, gray for offline)
- Smooth chevron rotation animation on collapse/expand
- Global violet scrollbar styling across entire site
- Fixed column widths for consistent table alignment between sections
- Moved version number to footer next to social links
Bug Fixes
- Fixed steamcmd installation failures for cloned worlds
- Added retry logic (up to 5 attempts) when steamcmd fails
- Clean Steam directories between retries to avoid stale state
- Verify valheim_server.x86_64 exists after installation
- Abort world update and set failed status if Valheim install fails
- Fixes issue where cloned worlds would have mods but no game binary
- Fixed ~1 minute delay in public UI world status updates
- Now detects world online/offline state in real-time via process detection
- No longer depends on minute-based cron job for status updates
- Fixed worlds showing online on initial page load when actually offline
- Initial page render now uses same real-time process detection as AJAX
Technical Details
- Cookie-based preference storage (1 year expiration)
- Dynamic DOM manipulation for world movement between sections
- Maintains compatibility with existing AJAX polling and live updates
- API now returns dateUpdated for proper offline world sorting
- New getMyWorldsStatus API endpoint for public UI polling
- isWorldRunning() helper uses pgrep with character class trick to avoid self-matching
Screenshots
