Juniper Canopy: Filigreed Flounder #33
pcalnon
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Juniper Canopy v0.21.0-alpha Release Notes
Release Date: 2026-01-09
Version: 0.21.0-alpha
Codename: Phase 3 Wave 1 & 2 - HDF5 Snapshot Capabilities
Overview
This release completes Phase 3 Wave 1 and Wave 2 of the Juniper Canopy development roadmap, delivering comprehensive HDF5 snapshot management capabilities and visualization enhancements. Users can now create, restore, and track the history of training state snapshots, as well as view network topology in 3D and save/load custom metric layouts.
Phase 3 Features Summary
What's New
HDF5 Snapshot Management (P3-1, P3-2, P3-3)
Create New Snapshot (P3-1)
cascor_integrationPOST /api/v1/snapshots(returns 201 Created)Restore from Existing Snapshot (P3-2)
cascor_integrationPOST /api/v1/snapshots/{snapshot_id}/restoreSnapshot History (P3-3)
GET /api/v1/snapshots/historyVisualization Enhancements (P3-4, P3-5)
Metrics Save/Load Buttons (P3-4)
conf/layouts/directory3D Interactive Topology View (P3-5)
Bug Fixes
UnboundLocalError in open_restore_modal callback (v0.21.0)
Problem:
jsonimport was insidecontextlib.suppressblock but referenced in thewithstatement, causingUnboundLocalError.Solution: Moved
import jsonbefore thewith contextlib.suppress(...)statement.Files:
src/frontend/components/hdf5_snapshots_panel.py(lines 893-896)Missing contextlib import (v0.21.0)
Problem:
contextlib.suppresswas used butcontextlibwas not imported.Solution: Added
import contextlibto module imports.Improvements
Callback Testing Pattern
Introduced a new pattern for testing Dash callbacks by exposing them via
_cb_*attributes. This enables direct unit testing without requiring a running Dash server. Pattern applied to:HDF5SnapshotsPanel(8 callbacks exposed)AboutPanel(2 callbacks exposed)Test Coverage
Test Suite
API Changes
New Endpoints
POST/api/v1/snapshotsPOST/api/v1/snapshots/{snapshot_id}/restoreGET/api/v1/snapshots/historyResponse Codes
POST /api/v1/snapshots:
201 Created- Snapshot created successfully500 Internal Server Error- Creation failedPOST /api/v1/snapshots/{id}/restore:
200 OK- Restored successfully404 Not Found- Snapshot not found409 Conflict- Training is running (must pause/stop first)500 Internal Server Error- Restore failedGET /api/v1/snapshots/history:
200 OK- Returns history array (default limit: 50 entries)Upgrade Notes
This is a backward-compatible release. No migration steps required. All new endpoints are additive.
Known Issues
None. All Phase 3 Wave 1 and Wave 2 features have been implemented and verified.
What's Next
Phase 3 Wave 3 development will focus on:
Coverage Goals
main.pycurrently at 79%, target 95%Contributors
Version History
Links
This discussion was created from the release Juniper Canopy: Filigreed Flounder.
Beta Was this translation helpful? Give feedback.
All reactions