mirror of
https://github.com/stellarshenson/stellars-jupyterhub-ds.git
synced 2026-03-08 06:00:29 +00:00
Delta release notes covering changes from v3.0.14 to v3.2.11: - Configuration-agnostic volume management with optional descriptions - Admin notification broadcast system - Privileged user docker.sock access control - Documentation following modus primaris style - Technical improvements and upgrade notes Following modus primaris: concise, factual, organized sections.
3.8 KiB
3.8 KiB
Release v3.2.11
Major Features
Configuration-Agnostic Volume Management
- Volume list dynamically generated from
DOCKER_SPAWNER_VOLUMESconfiguration - Optional
VOLUME_DESCRIPTIONSdict for user-friendly volume descriptions - UI automatically adapts if volumes renamed, added, or removed in config
- Template uses Jinja2 loop with conditional description display
- Handler validates against
USER_VOLUME_SUFFIXESfrom config
Admin Notification Broadcast
- Broadcast notifications to all active JupyterLab servers via
/hub/notifications - Six notification types: default, info, success, warning, error, in-progress
- 140-character message limit with live counter
- Concurrent delivery using
asyncio.gather()with 5-second timeout per server - Temporary API tokens (5-minute expiry) for authentication
- Requires
jupyterlab_notifications_extensionon spawned servers
Privileged User Access Control
- Group-based docker.sock access via
docker-privilegedbuilt-in group - Pre-spawn hook conditionally mounts
/var/run/docker.sockbased on group membership - Built-in group protection (auto-recreates if deleted)
- Managed through JupyterHub admin panel at
/hub/admin
Technical Improvements
Configuration
jupyterhub_config.pyprotected from import errors withif c is not None:guardsDOCKER_SPAWNER_VOLUMESdefined as module-level constant (importable by handlers)get_user_volume_suffixes()extracts volume suffixes from configUSER_VOLUME_SUFFIXEScalculated and exposed to templates
Handlers
ManageVolumesHandlervalidates against configured volumes (not hardcoded)BroadcastNotificationHandlersends to/jupyterlab-notifications-extension/ingestNotificationsPageHandlerrenders broadcast form- One-line logging per server: username, message preview, type, outcome
Templates
- Dynamic volume checkbox generation from
user_volume_suffixes - Conditional description display from
volume_descriptions - Bootstrap 5 modal syntax throughout
- RequireJS wrapped JavaScript with CSRF protection
Documentation
Modus Primaris Style
- README reorganized: features first, screenshots, then architecture
- Simplified notification description (verbose → concise)
- Simplified architecture diagram labels
- Features as bullet points at top
New Documentation
doc/notifications.md(35 lines) - notification system implementationdoc/ui-template-customization.md(58 lines) - template extension patternsdoc/docker-socket-permissions.md(66 lines) - socket access control
Screenshots
screenshot-home.png- user control panel with restart and volume managementscreenshot-send-notification.png- admin notification broadcast interfacescreenshot-volumes.png- volume management modalscreenshot-volumes-modal.png- volume selection checkboxes
Version History
- v3.2.11: Configuration-agnostic volume management, optional descriptions
- v3.2.0: Admin notification broadcast system
- v3.1.2: Privileged user docker.sock access control
- v3.0.23: Production readiness, CI/CD, architecture cleanup
- v3.0.14: User self-service capabilities (restart, volume management)
Upgrade Notes
No breaking changes. Configuration backward compatible.
Optional: Add VOLUME_DESCRIPTIONS dict to jupyterhub_config.py for user-friendly volume descriptions in UI:
VOLUME_DESCRIPTIONS = {
'home': 'User home directory files, configurations',
'workspace': 'Project files, notebooks, code',
'cache': 'Temporary files, pip cache, conda cache'
}
Optional: Install jupyterlab_notifications_extension on spawned servers to enable admin notification broadcast.
Existing deployments adopt new features upon container rebuild and restart.
From: v3.0.14_cuda-12.9.1_jh-5.4.2 To: v3.2.11_cuda-12.9.1_jh-5.4.2 Date: 2025-11-09