All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- CSC FastAPI Backend: 0.5.0.0
- CSC React Frontend: 0.5.0.0
- CSC Grasshopper Interface: 0.5.0.0
- Identity/snapshot catalog:
component_identities+ versionedcomponent_snapshots; passport and CRUD per identity/snapshot - Inline reinforcement bars:
geometry.reinforcements[]({spec, diameter, points}) - Snapshot point-cloud PLY upload routes and photo slot routes
POST /utility/compute-snapshot-orientation(PCA frame from box geometry)- Public components:
is_publicflag; optional-auth read for all snapshots when public (migrate_add_is_public_field.py) - Admin users API:
GET /users,PATCH /users/{user_id} /ghinterface/router: version, download, src, xml, userobject- Snapshot delete route; ETag on all-identities list
- Radial signature applies to every component type, not just extrusion
panels. Outlines are taken from the highest-resolution geometry available,
in order mesh (
detailed.ply>reduced.ply> inline) > point cloud (0.ply> inline preview) > extrusion profile. Meshes and clouds are sectioned through the PCA centre plane; panels still rest-align the resulting silhouette GET /identities/map: 2D component map from descriptors (PCA first paint, UMAP preferred). Bases: concatenated radial-signature distances, or concatenated scalar scores (box/sphere/line/planescore). Components missing the chosen basis are omitted; response reports displayed/total coverage. Default scope layouts are served fromcomponent_map_cache(source=auto|cache|live); UMAP is precomputed by cronmain_component_map.py: cron/worker that writes PCA+UMAP layouts intocomponent_map_cachefor the Component Map pagemain_descriptors_simple.py --recomputewalks every snapshot one at a time and overwrites every applicable descriptor (optional--limit N)/ghinterface/src*and/ghinterface/userobject*accept achannelquery param (GitHub branch; defaultmain) soCSC_Updatecan follow a hardcodedUPDATE_CHANNEL/ghinterface/source/UserObject fetches use/git/blobswhen a GitHub token is set, anddownload_url(raw) without one, with fallback between the two. 503s now include the underlying GitHub error (timeout, connect, HTTP status) instead of a generic "service unavailable"- GH XML sync clones the public repo without a GitHub token
GITHUB_CSC_GH_TOKENis optional (higher GitHub API rate limits only); FastAPI starts and/ghinterface/works against the public repo without it
- Add Component Wizard (identity + snapshot creation; orientation on submit)
- Multi-snapshot detail/history UI; updated admin validation queue
- Admin user management at
/admin/users - Public component viewing without login;
is_publictoggle on edit page - Reinforcement visualization in component viewer
- Component Map at
/components/map(nav under Browse Components): loads cached UMAP/PCA layouts fromGET /identities/map, with pan/zoom canvas and displayed/total coverage messaging - GH interface docs:
ListIdentitySnapshots,FetchAllSnapshots,FetchSnapshot,CreateReinforcement,PassportToD2P
- Identity/snapshot components:
CreateComponentIdentity,CreateComponentSnapshot,AddComponentIdentity,AddComponentSnapshot CSC_ListIdentitySnapshots,CSC_FetchAllSnapshots,CSC_FetchSnapshotCSC_CreateReinforcement; reinforcement inputs on create/add; pipe baking inCSC_BakeComponents- Session identity/snapshot catalog cache (v0.5)
CSC_Update: hardcodedUPDATE_CHANNEL(defaultmain) selects the GitHub branch to pull sources and UserObjects from; the name must match the remote branch exactly
- Descriptors, previewgen, and geometry maintenance use snapshot model
- Designs schema aligned with identity references
- Radial signature outline extraction prefers on-disk
detailed.ply(thenreduced.ply) over the inline mesh, and the full point-cloud PLY over the inline preview. An extrusion profile is only used when no mesh or cloud is available - The
{identity, snapshots[]}read model is now called a passport:ComposeIdentityResponse→ComponentPassport. The route pathsGET /identities/{id}/composeandGET /schema/catalog-composeare unchanged, so released UserObjects keep working
- Catalog UI adapted to identity/snapshot passport spec
- Design detail actions use client session; proxy allows anonymous public GETs
- Sidebar layout compacter; Next.js/npm updated
- Generated type
ComposeIdentityResponse→ComponentPassport; the GH interface docs say "passport" instead of "compose JSON" throughout
- Fetch/create components updated for identity/snapshot API
CSC_Updateuses/ghinterface/paths- "Compose JSON" is now a passport everywhere in the interface:
ComposeToD2P→PassportToD2P, theFetchAllSnapshots/FetchSnapshotoutput pinComposeData→Passport, and theCSC_Sessionhelpers (cached_get_compose→cached_get_passport,compose_json_string→passport_json_string). All UserObjects must be updated together
- README refreshed for 0.5; deploy scripts (
csc_deploy_*_v05.sh); descriptor cron--dry-run
- Legacy monolithic component routes/models
downloadsandghupdatesrouters (→/ghinterface/)
- Legacy usrobject sources for dropped components
- Radial signature mesh sectioning no longer fails on open scanned surfaces
(e.g. rubble
detailed.ply) whose faces are coplanar with the PCA centre plane: the vertex silhouette is used when that single cut misses. Offset and percentile cut heights are not retried, so outlines stay comparable across PCA-aligned geometry - Open-mesh centre-plane cuts (gappy or not-star-convex loops, e.g. Scanned Rubble 30) wrap the intersection points in a convex hull so every radial ray hits; a watertight simple section that already contains its centroid is kept
- Version detection only accepts real declarations (
Version: <number>), so prose like "version-0 snapshot" in a component description no longer parses as version0(affectedCSC_AddComponentIdentity) /ghinterface/src_namesreads source files concurrently and caches parsed versions per blob sha instead of fetching every file serially on each call/ghinterface/routes reuse a short-lived directory listing cache, so anCSC_Updateinstall run no longer re-lists the repo once per file
- GH interface cards used the wrong Grasshopper names
FetchComposeAllSnapshots/FetchComposeSnapshot(and output pinComposeJSON); they now matchFetchAllSnapshots/FetchSnapshotwithPassport, including screenshots
CSC_UpdateandCSC_ExportScriptsAndSource: same version-declaration fix as the backend, so all three parsers agree on a component's versionCSC_Update: source files without a parseable version are skipped instead of aborting the whole update checkCSC_Update: components with no source on the server (renamed or removed, e.g.CreateComponent) are now reported as a warning instead of being skipped silently while the UserObjects update anywayCSC_Update: longer request timeouts for source/UserObject downloads
- CSC FastAPI Backend: 0.4.7.0
- CSC React Frontend: 0.4.7.0
- CSC Grasshopper Interface: 0.4.5.6
- Sorting enhancements for component lists: Added support for additional sort keys (
name,bbx.0,bbx.1,bbx.2) and introducedsortorder=asc|deschandling for both regular and archived shallow component listing endpoints. Added archive-side sort key validation against the shared allowed-key list.
- Browse/archive table sorting UX: Implemented clickable table-header sorting with URL-synced
sortkey+sortorder, active sort indicators, per-column toggle between ascending/descending, and explicit reset-sort control. - Filter panel improvements: Renamed filter section to Filters & Settings, added page-size control (
size) inside the filter panel, and kept it URL-synced with pagination/search state. - Filter input UX: Switched material and component type filters from free-text inputs to dropdown selectors populated from backend unique-value endpoints (including archive endpoints).
- Component detail mobile action UX: Replaced native browser confirmation popups for archive/restore/delete actions with in-app dialog confirmations for better mobile reliability and consistency.
- Validation dashboard delete UX: Replaced native delete confirmation popup with in-app dialog in admin validation page.
- Browse page direct-ID entry UX: Refined direct component-ID navigation field styling and prominence with a compact, more discoverable inline callout.
- CSC FastAPI Backend: 0.4.6.0
- CSC React Frontend: 0.4.6.0
- CSC Grasshopper Interface: 0.4.5.3
- Component metadata edit endpoint: Added
PATCH /components/{component_id}(admin-only) to update simple component metadata. Accepts a partialComponentMetadataUpdatepayload coveringname,type,material,dataset,complexity,fragment,assembly,color(RGB), andlocation(lat/lon). Structural and derived fields (geometry, bbx, frames, descriptors, processes, attributes, marker points,reserved,validated) are intentionally excluded;lastmodifiedis refreshed automatically on successful update. - Component ID validation for transmission:
POST /component_id_transmissionnow rejects IDs that already exist in the catalog (status: component_id_exists) to prevent reusing existing component IDs.
- Admin component metadata editor: New route
/components/[component_id]/editwith a dedicatedComponentEditFormUI for admins. Provides inputs for name, type (dropdown), material (with suggestions from/materials), dataset (with suggestions from/datasets), complexity, fragment/assembly flags, RGB color (color picker + R/G/B inputs), and geographic location (lat/lon). Only changed fields are sent in thePATCHrequest; non-admin or unauthenticated users are redirected. - Edit Metadata button in component detail card: Added an "Edit Metadata" button to the admin action area on the component detail page that links to the new edit route (hidden for archived components).
- FetchTransmittedID component: Added
DDU_CSC_FetchTransmittedID.pyto retrieve the currently pending transmitted ID using the sharedCSC_Sessionauth state.
- Transmission router naming: Renamed API module from
ghtransmit.pytoidtransmission.pyand updated router registration/tag toidtransmission(no backwards-compat alias).
- Automatic consume after AddComponent success:
DDU_CSC_AddComponent.pynow consumes/component_id_transmission/consumeimmediately after successful component creation (201) in a non-fatal way.
- Transmission UX robustness: Improved
409handling for ID transmission to support both overwrite conflict payloads andcomponent_id_existspayloads without breaking UI flow. - Immediate ID availability feedback: Added pre-transmit ID availability checks after scan/manual input in
ComponentIdTransmitter, including disabled transmit while checking/when ID already exists. - Navigation and wording clarity:
- Grouped Components menu into Explore, Capture, and Insights sections.
- Renamed Identify Component to Scan & Identify.
- Renamed Find Component workflow to Locate by ID across route, page, component names, and links (
/findcomponent->/locate-by-id).
- Page guidance improvements: Added colored info boxes with explicit
Purpose / Input / Resultbullets onScan & Identify,Locate by ID, andTransmit ID, including spacing/wording refinements for consistency and clarity.
- GH Interface credits: Added credits for Alessandro Garruto in
gh-interfacecomponent tips forCSC_FindLargestFlatSideandCSC_MaxInscribedQuad.
- CSC FastAPI Backend: 0.4.4.0
- CSC React Frontend: 0.4.4.0
- CSC Grasshopper Interface: 0.4.5.3
- Component ID Transmission Router: New router
ghtransmit.pyexposing authenticated endpoints for transmitting a scanned component ID from the web frontend to Grasshopper:GET /component_id_transmission- fetch the current pending transmission for the authenticated user.POST /component_id_transmission- store a pending transmission withforce_overwriteflag. Returns409 conflictif a different pending ID already exists and the user has not confirmed overwrite.DELETE /component_id_transmission- clear the pending transmission.POST /component_id_transmission/consume- remove the pending transmission after the component has been successfully added to the database (supports matchingcomponent_idto avoid consuming newer scans).
- Mongo Collection Wiring: Registered
component_id_transmissioncollection on the app during startup. One document per user (natural key_id = user_id).
- Transmit ID to Grasshopper Page: New page at
/transmit-idwith a QR scanner and manual input for transmitting a scanned component ID to Grasshopper. Shows the current pending ID, allows clearing it, and handles overwrite confirmation via a modal dialog when a different pending ID already exists. ComponentIdTransmitterComponent: New reusable client component encapsulating the full scan/transmit/overwrite UX.- App Menu Entry: Added "Transmit ID to GH" entry under the Components section of the app menu.
- Versions: Bumped backend and frontend to
0.4.4.0to reflect the new Grasshopper ID transmission feature.
- CSC FastAPI Backend: 0.4.2.0
- CSC React Frontend: 0.4.3.3
- CSC Grasshopper Interface: 0.4.5.3
- Environment Variables: Updated FastAPI and shell scripts to use env vars
- CSC FastAPI Backend: 0.4.1.0
- CSC React Frontend: 0.4.3.3
- CSC Grasshopper Interface: 0.4.5.3
- Project Name: Renamed the whole project to "Catalog" instead of "Catalogue" because it was just a shit choice in the beginning :´)
- CSC FastAPI Backend: 0.4.1.0
- CSC React Frontend: 0.4.3.3
- CSC Grasshopper Interface: 0.4.5.0
- CreateComponent: Added optional Name input field
- DisassembleComponent: Added Name output field
- CSC FastAPI Backend: 0.4.1.0
- CSC React Frontend: 0.4.3.3
- CSC Grasshopper Interface: 0.4.3.0
- Add Archive Router: Add router and routes to handle component archiving instead of hard deletion
- Add Archive Feature and Page: Add UI features and pages to support archiving of components.
- CSC FastAPI Backend: 0.4.0.4
- CSC React Frontend: 0.4.3.2
- CSC Grasshopper Interface: 0.4.3.0
- QR Code Scanner: Try to fix error verbosity during frame errors (no qr code detected)
- CSC FastAPI Backend: 0.4.0.4
- CSC React Frontend: 0.4.3.1
- CSC Grasshopper Interface: 0.4.3.0
- GH Interface Page: Fixed mobile layout of "Copy GH XML" Buttons
- CSC FastAPI Backend: 0.4.0.4
- CSC React Frontend: 0.4.3.0
- CSC Grasshopper Interface: 0.4.3.0
- FetchGeometry: Update populating of outputs to avoid double geometries as well as putting everything in one tree branch
- All Components: Got rid of everything basedpyright-related
- CSC FastAPI Backend: 0.4.0.4
- CSC React Frontend: 0.4.3.0
- CSC Grasshopper Interface: 0.4.2.0
- Update to NextJS 16: Upgrade to NextJS 16.0.5 using codemod.
- CSC FastAPI Backend: 0.4.0.4
- CSC React Frontend: 0.4.0.5
- CSC Grasshopper Interface: 0.4.2.0
- Added direct UUID lookup: On the browse page you can now enter a UUID directly and go to its detail page
- CSC FastAPI Backend: 0.4.0.4
- CSC React Frontend: 0.4.0.4
- CSC Grasshopper Interface: 0.4.2.0
- Added Analytics route: Analytics route for retrieving database stats.
- Added Analytics page: Analytics page for displaying database stats.
- Added New GH Components: Added new GH Components to gh interface page.
- Added FindLargestFlatSide Component: Finds largest flat side and the corresponding plane in a Mesh.
- Added FindMaximumQuadrilateral Component: Finds largest quadrilateral polygon inside a boundary polyline.
- CSC FastAPI Backend: 0.4.0.3
- CSC React Frontend: 0.4.0.3
- CSC Grasshopper Interface: 0.4.1.0
- GH XML Sync: Automated sync script (
ghxml_sync.sh) to mirror pasteable XML files from private GitHub repository using sparse checkout - GH XML API Routes: New authenticated endpoints
/ghupdates/xml_namesand/ghupdates/xml/{name}to serve cached XML files - Config Integration: Added
gh_xml_cache_dirconfiguration support, loaded fromdbconfig.jsonand available viaapp.gh_xml_cache_dir - Cron Job Configuration: Added cron job configuration file for automatic XML sync every 30 minutes
- Copy-to-Clipboard for GH Components: Added copy buttons on all Grasshopper component cards to copy XML directly to clipboard
- CSC_Update Component Documentation: Added component card for CSC_Update in Session Components section
- Getting Started Enhancements: Added "NEW! Automatic Updater" card with copy functionality and "Find out more" link
- GH Updates Router: Enhanced to read XML cache directory from app state instead of hardcoded paths
- Config Template: Updated
dbconfig.template.jsonto includegh_xml_cache_dirfield
- GH Interface Page: Enhanced component cards with copy-to-clipboard functionality and improved visual feedback
- Copy Button UX: Replaced alert-based feedback with visual state indicators (Check icon and "Copied!" text)
- README: Added Grasshopper XML Sync CronJob setup instructions including configuration, testing, and cron job setup steps
- CSC FastAPI Backend: 0.4.0.1
- CSC React Frontend: 0.4.0.2
- CSC Grasshopper Interface: 0.4.0.0
- QR Code Scanning: Modularized QR Code Scanner
- CSC FastAPI Backend: 0.4.0.0
- CSC React Frontend: 0.4.0.1
- CSC Grasshopper Interface: 0.4.0.0
- Descriptor Computation: Fixed Timestamps, added timestamp utility to use in all routes
- BackgroundMesh: Fixed cutoff at bottom on Sign-In, Register and Home pages
- CSC FastAPI Backend: 0.4.0.0
- CSC React Frontend: 0.4.0.0
- CSC Grasshopper Interface: 0.4.0.0
- Descriptor Computation: Sphere score based on DCT approach
- Geometry Maintenance: Automated maintenance script and cronjob configuration
- Utility Routes: Descriptor output log checking endpoint
- Email Service: Enhanced email service integration
- BackgroundMesh: Animated mesh on some pages as background with scale factor control
- Theme Toggle: Switch between light, dark, and system
- Favicons: Updated favicon set for all platforms
- Architecture Charts: Mermaid diagrams for documentation
- ComputeTSNE: T-SNE computation component for dimensionality reduction
- GetDescriptor: Descriptor extraction component
- CreateUUID: UUID generation component
- Enhanced Parameter Descriptions: Better input parameter documentation
- PCA Frame: Ensure right-handedness of PCA frame transformations
- Environment Configuration: Updated environment specifications
- Input Placeholders: Improved registration form placeholders
- Next.js: Updated to latest 15.x version
- Next Auth: Updated authentication system
- Design Viewer: Refactored design and component viewer interfaces
- Assembly Behavior: Changed assembly behavior
- Component Updates: Small fixes across components
- Dev Files: Updated development files
- User Object Re-export: Re-exported user objects with updates
- CSC FastAPI Backend: 0.3.1.0
- CSC React Frontend: 0.3.1.1
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.2.0.1
- Cookie Notice: Added a cookie notice banner that informs users about the use of technically necessary cookies only. Users can accept or dismiss the notice, and their choice is remembered in local storage.
- Cookie Settings Page: Introduced a "Cookie Settings" section in the settings page, allowing users to review cookie usage and re-display the cookie notice if desired.
- Session Handling Update: Improved session state management .
- CSC FastAPI Backend: 0.3.1.0
- CSC React Frontend: 0.3.1.0
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.2.0.1
- Binary Geometry Caching: Implemented high-performance binary caching for geometry data using Rhino's JSON serialization
- JSON Mesh Serialization: Added support for serializing Rhino meshes to JSON with full user data preservation
- Enhanced Error Handling: Improved error handling for mesh reconstruction and geometry processing
- Cache Validation: Added comprehensive validation for cached geometry data before use
- Cache Storage Format: Migrated from OBJ text files to pickled JSON strings for maximum performance
- Mesh Processing: Optimized mesh duplication and transformation for cached geometry baking
- Error Recovery: Enhanced error recovery to continue processing when individual meshes fail
- Debug Output: Cleaned up excessive debug logging while preserving important status messages
- BakeComponents Error: Fixed "does not exist in ObjectTable" error when baking cached geometry
- Mesh Reconstruction: Fixed issues with reconstructing meshes from JSON when some meshes fail
- Cache Validation: Fixed validation logic to properly handle empty or invalid cached data
- Cross-Component Imports: Removed circular import dependencies between Grasshopper components
- Uses
Rhino.Geometry.Mesh.ToJSON()withSerializationOptionsfor full data preservation - Stores pickled JSON strings instead of raw mesh objects for pickle compatibility
- Implements
Rhino.Geometry.Mesh.FromJSON()for mesh reconstruction - Maintains ETag compatibility with existing caching system
- Eliminated OBJ parsing overhead for cached geometry
- Reduced file I/O operations through binary storage
- Improved mesh processing with bulk operations
- Enhanced error handling prevents cascade failures
- CSC FastAPI Backend: 0.3.1.0
- CSC React Frontend: 0.3.1.0
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.2.0.0
- Geometry ETag Support: Added ETag generation and conditional request support for geometry endpoints
- HTTP Caching Headers: Added Cache-Control headers for improved geometry file caching
- Conditional Requests: Support for If-None-Match headers with 304 Not Modified responses
- File-based ETags: ETag generation based on file modification time and size for reliable cache validation
- Geometry ETag Caching: Enhanced ComponentViewer with ETag-based conditional requests for geometry files
- Smart Cache Validation: Automatic cache validation using ETag headers to avoid unnecessary re-downloads
- Improved Performance: Reduced bandwidth usage and faster loading for cached geometry files
- Geometry Endpoints: Enhanced
/components/{id}/geometry_detailedand/components/{id}/geometry_reducedwith ETag support - Backward Compatibility: All changes are additive and maintain full backward compatibility with existing clients
- Component Validation UI: Updated Validate button to only be active for unvalidated components
- Enhanced User Feedback: Dynamic button text and tooltips based on component validation status
- Geometry Cache Structure: Enhanced cache to store ETag metadata alongside geometry data
- CSC FastAPI Backend: 0.3.0.0 ✨
- CSC React Frontend: 0.3.0.0 ✨
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.2.0.0 ✨
- Multi-Mesh Support: Added
meshesfield toComponentGeometrymodel for supporting multiple meshes per component - Marker Points Field: Added
marker_pointsfield toComponentModelfor storing coordinate triplets - OBJ-Only Geometry: Updated geometry endpoints to support OBJ files with embedded vertex colors only
- Database Migration Scripts: Created comprehensive migration scripts for multi-mesh and field format updates
- Schema Validation: Enhanced component validation with proper field type checking and format validation
- Multi-Mesh Visualization: Complete support for displaying multiple meshes in ComponentViewer
- Vertex Color Support: Full support for
v X Y Z R G Bvertex colors in OBJ files with smart normalization - Mesh Visibility Controls: Individual checkbox controls to show/hide specific meshes in primitive mode
- Manual OBJ Parsing: Custom OBJ parser for reliable vertex color extraction and face triangulation
- Smart Color Normalization: Automatic detection and conversion of 0-255 to 0-1 color ranges
- Consistent Geometry Display: Unified positioning and scaling across primitive, reduced, and detailed modes
- Multi-Mesh Input Support: All components now accept
List[Rhino.Geometry.GeometryBase]for single or multiple meshes - OBJ File Generation: Enhanced OBJ export with proper object declarations (
o object_0,o object_1, etc.) - Vertex Color Embedding: Automatic embedding of vertex colors in OBJ files using
v X Y Z R G Bformat - PCA Assembly Processing: New method for computing PCA on entire multi-mesh assemblies with proper centering
- Coordinate System Mapping: Correct Rhino (X,Y,Z) to OBJ (X,Z,-Y) coordinate transformation
- Multi-Mesh Baking: Support for baking multiple meshes as grouped components with individual metadata
- Enhanced SyncWithRhinoDoc: Groups multiple meshes by component ID instead of treating as separate components
- Marker Points Migration:
migrate_marker_points_and_multi_mesh.py- Adds marker_points field and converts single-mesh to multi-mesh format - Fragment Boolean Migration:
migrate_fragment_boolean.py- Ensures fragment field is properly typed as boolean - Color Format Migration:
migrate_color_format.py- Converts color fields to proper[R, G, B]integer format - OBJ File Migration:
convert_obj_files.py- Processes existing OBJ files to remove MTL references and standardize format
- Geometry Endpoints: Updated to serve OBJ files only, removed MTL and texture file support
- API Validation: Enhanced validation for multi-mesh components and proper field format checking
- Deprecated Endpoints: Material and texture serving endpoints now return 404 with informative messages
- Component Model: Added validation to ensure
meshandmeshesfields are not both present
- ComponentViewer Architecture: Complete rewrite for multi-mesh support with consistent rendering pipeline
- Geometry Loading: Replaced OBJLoader with custom parser for reliable vertex color handling
- Material System: Switched to
MeshBasicMaterialfor proper vertex color display without lighting requirements - Bounds Integration: Fixed primitive geometry positioning to work correctly with
Boundscomponent - Performance Optimization: Improved geometry caching and memory management for large multi-mesh components
- CreateComponent: Updated to handle both single and multiple mesh inputs with unified processing pipeline
- FetchGeometry: Enhanced to parse multi-object OBJ files and return lists of geometry objects
- DisassembleComponent: Added support for creating multiple
Rhino.Geometry.Meshobjects frommeshesfield - BakeComponents: Updated to bake multiple meshes with proper grouping and metadata
- AddComponent: Simplified to handle OBJ-only uploads with proper file validation
- SyncWithRhinoDoc: Refactored to group meshes by component ID for proper component management
- Unified Data Model: Consistent handling of single and multiple meshes across all components
- Backward Compatibility: Existing single-mesh components continue to work seamlessly
- Forward Compatibility: New multi-mesh format supports future enhancements
- Data Integrity: Comprehensive validation ensures proper component structure
- Smart Scaling: Consistent scaling and positioning across all geometry modes
- Coordinate Systems: Proper mapping between Rhino and OBJ coordinate systems
- Face Triangulation: Automatic conversion of quads and N-gons to triangles for rendering
- Vertex Color Handling: Robust parsing and normalization of vertex colors in various formats
- Memory Management: Proper cleanup and caching of geometry objects
- Error Handling: Comprehensive error handling with informative user feedback
- Type Safety: Eliminated all TypeScript
anytypes with proper interfaces - Code Quality: Resolved all linting errors and improved maintainability
- Database Safety: All migration scripts include comprehensive validation and rollback capabilities
- File System Migration: Automated conversion of existing OBJ files to new format
- Schema Validation: Post-migration verification ensures data integrity
- Documentation: Comprehensive documentation for all migration processes
- Material/Texture Endpoints:
get_component_material_detailed,get_component_material_reduced, andget_component_texturenow return 404 - Geometry Upload:
add_reduced_geometryandadd_detailed_geometrynow only accept OBJ files
- Input Parameters: All geometry inputs now expect
List[Rhino.Geometry.GeometryBase]instead of single objects - OBJ File Format: Generated OBJ files now use object declarations and embedded vertex colors only
- Database Migration: Run
migrate_marker_points_and_multi_mesh.pyto update existing components - File System Migration: Run
convert_obj_files.pyto update existing OBJ files - Frontend Update: No manual migration required - automatically handles both old and new formats
- Grasshopper Update: Update all components to new versions for multi-mesh support
- CSC FastAPI Backend: 0.2.9.0 ✨
- CSC React Frontend: 0.2.4.0 ✨
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.1.2.0 ✨
- ETag-based Caching System: Implemented comprehensive caching solution with ETag support for conditional requests
- Component Schema Caching: Added schema endpoint with ETag support for offline component creation
- Cache-Control Headers: Added proper HTTP caching headers for better performance
- ETag Generation Utilities: Created utility functions for generating ETags from component data and timestamps
- Local Cache Management: Implemented
_ComponentCacheclass for local storage with thread safety and TTL support - Cache Integration: All fetch components now use intelligent caching with ETag validation
- Schema-driven Component Creation:
CreateComponentnow uses cached/fetched schema instead of hardcoded data - Status Output: Added detailed status messages via dedicated output parameter for better user feedback
- Cache Control Parameters: Added
DisableCacheandClearCacheinputs to SignIn component
- API Endpoints: Enhanced
/components,/components/{id}, and/schema/componentwith ETag support - Conditional Requests: Implemented 304 Not Modified responses for unchanged resources
- Component Model: Added optional
etagfield to ComponentModel for cache validation - Backward Compatibility: All changes are additive and maintain full backward compatibility
- Authentication Core: Enhanced
_AuthCorewithcached_getmethod for intelligent caching - Component Data Creation: Completely rewrote
build_component_data_from_schemato use actual schema - Dynamic Schema Usage: Components now build data structures dynamically from fetched schema
- Improved Error Handling: Enhanced validation and error messages throughout all components
- Hybrid ETag Generation: Combines
lastmodifiedtimestamp with key component fields for robust cache validation - Cross-platform Caching: Supports Windows (
%APPDATA%) and macOS (~/Library/Application Support) cache locations - Single Components Cache + Metadata Cache: Efficient storage strategy avoiding data duplication
- Thread Safety: Implemented proper locking mechanisms for concurrent cache access
- Schema Validation: Dynamic component data creation ensures strict adherence to data model
- Performance Optimization: Reduced bandwidth usage through intelligent caching and conditional requests
- CSC FastAPI Backend: 0.2.8.0 ✨
- CSC React Frontend: 0.2.3.0 ✨
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.1.1.0 ✨
- Enhanced Component Management: Improved component creation and management workflows
- Better Error Handling: Enhanced error messages and user feedback across all components
- Version Bump: Updated to version 0.2.8.0 for new release cycle
- API Stability: Maintained backward compatibility while preparing for future enhancements
- Version Bump: Updated to version 0.2.3.0 for new release cycle
- UI Improvements: Enhanced user interface components and interactions
- Version Standardization: All components now use consistent version numbering
- Component Updates: Refreshed component versions for better tracking and maintenance
- Version Management: Improved version tracking across all project components
- Release Coordination: Better synchronization between backend, frontend, and Grasshopper interface
- Documentation: Updated changelog with comprehensive version information
- CSC FastAPI Backend: 0.2.5.0 ✨
- CSC React Frontend: 0.2.2.0 ✨
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.1.0.0
- Component Reservation System Integration: Complete frontend integration for the component reservation system
- User Dashboard: New dashboard page accessible from user menu with quick stats and navigation
- Reserved Components Page: Dedicated page showing all components reserved by the logged-in user
- Reservation Management: Users can reserve and release components directly from component detail pages
- Enhanced Component Overview: Added "Reserved" column showing reservation status and username
- Improved Navigation: Added dashboard link to AppMenu with organized section headlines
- Reservation Buttons: "Reserve Component" and "Release Component" buttons on component detail cards
- Username Display: Shows human-readable usernames instead of UUIDs for reserved components
- Smart UI States: Dynamic button text and states based on reservation status
- Quick Actions: Release components directly from the reserved components overview table
- Type Safety: Eliminated all TypeScript
anytypes with proper interfaces - React Hooks: Fixed useEffect dependency warnings with useCallback
- Code Quality: Resolved all linting errors and improved code maintainability
- Responsive Design: Enhanced mobile and desktop layouts for reservation management
- Component Reservation System: New API routes for managing component reservations
- Reserve Component Endpoint:
POST /reserve/{component_id}allows users to reserve components - List Reserved Components Endpoint:
GET /reserve/{user_identifier}lists all components reserved by a user - Release Component Endpoint:
DELETE /reserve/{component_id}allows users to release their reservations - User Identification Support: Reservation endpoints accept both UUID and username for user identification
- PCA Frame Property: Added
pca_frameproperty to component model for future PCA transformation support - Reserved Property: Added
reservedproperty to component model to track component reservations
- Component Model Enhancement: Extended
ComponentModelwithpca_frameandreservedproperties - Migration Script: Created
migrate_add_pca_frame_and_reserved.pyto update existing components - Backward Compatibility: All new properties are optional and don't affect existing functionality
- Component Overview Table: Added new "Reserved" column with reservation status and username information
- User Menu: Enhanced UserItem component with dashboard navigation link
- AppMenu Organization: Added section headlines ("Main" and "Other") for better navigation structure
- Component Detail Cards: Added reservation management buttons alongside existing "Find Component" button
- Component Model: Updated
ComponentModelandUpdateComponentModelwith new reservation fields - API Router: Added new reservation router (
reserve.py) to handle component reservation operations - Security: Implemented proper authorization - users can only manage their own reservations unless admin
- Data Enrichment: Enhanced component endpoints to include
reserved_by_usernamefor better user experience
- Reservation Logic: Robust reservation system with conflict detection and proper error handling
- Database Operations: Efficient MongoDB operations for reservation management
- API Design: RESTful API design following FastAPI best practices
- Error Handling: Comprehensive error responses with appropriate HTTP status codes
- Security: Role-based access control for reservation management
- Frontend-Backend Integration: Seamless integration between reservation API and frontend components
- CSC FastAPI Backend: 0.2.4.0 ✨
- CSC React Frontend: 0.2.1.0 ✨
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.1.0.0
- Dual Date Format Support: Enhanced
formatTimestampfunction to handle both old and new date formats - Migration Compatibility: Frontend now works seamlessly with both legacy
DDMMYY-HHMMSSand new ISOYYYY-MM-DDTHH:MM:SSZformats - Error Resilience: Improved error handling prevents crashes from unknown date formats
- Bounding Box Format Migration: Script to convert from
[[minX, minY, minZ], [maxX, maxY, maxZ]]to[X, Y, Z](maximum extents) - Date Format Migration: Script to convert dates from
DDMMYY-HHMMSSto proper ISO format - Comprehensive Migration: Handles both bounding box and date format updates in a single operation
- Date Display Consistency: All timestamps now display in uniform
YYYY.MM.DD HH:MM:SSformat regardless of source format - Backward Compatibility: Existing functionality preserved while adding support for new ISO date format
- Enhanced User Experience: Filter menu now collapsed by default for better space management
- Improved Component Display: Increased ID button width for better component ID visibility
- Bounding Box Format: Updated from coordinate pairs to maximum extents for better performance and clarity
- Date Format Standardization: All dates now stored in ISO 8601 format for better compatibility and sorting
- Migration Safety: Preserves original creation dates while updating modification timestamps
- Robust Date Parsing: Intelligent format detection with graceful fallbacks
- Migration Scripts: Comprehensive database migration tools with verification capabilities
- Frontend Resilience: Enhanced error handling prevents application crashes from data format issues
- Code Quality: Improved defensive programming and error logging throughout the system
- CSC FastAPI Backend: 0.2.3.0 ✨
- CSC React Frontend: 0.2.0.9
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.1.0.0
- Enhanced Component Filtering: Added comprehensive filtering capabilities to component API routes
- Complexity Filtering: New
complexityparameter to filter components by complexity level (0-3) - Fragment Status Filtering: New
fragmentparameter to filter components by fragment status - Bounding Box Dimension Filtering: New range-based filters for component dimensions:
bbx_min_x,bbx_min_y,bbx_min_z: Minimum X, Y, Z valuesbbx_max_x,bbx_max_y,bbx_max_z: Maximum X, Y, Z values
- Improved API Documentation: All query parameters now include descriptive documentation for better developer experience
- API Parameter Structure: Updated all filter parameters to use FastAPI's
Querywith descriptive documentation - Consistent Filtering: All three component routes (
/componentcount,/shallowcomponents,/components) now support the same comprehensive filtering options - Enhanced OpenAPI Schema: Better parameter documentation will improve the generated API documentation and Swagger UI
- Backward Compatibility: All existing functionality preserved - new filters are optional and don't affect current API usage
- MongoDB Query Optimization: Efficient bounding box filtering using MongoDB's
$gteand$lteoperators - Parameter Validation: Proper type hints and validation for all new filter parameters
- Code Consistency: Unified filtering logic across all component routes for maintainability
- Professional API Standards: Following FastAPI best practices for parameter documentation and validation
- CSC FastAPI Backend: 0.2.2.0
- CSC React Frontend: 0.2.0.9
- CSC Sheetscan Module: 0.0.1.11
- CSC Grasshopper Interface: 0.1.0.0 ✨
- Centralized Authentication System: Implemented
AuthCoreclass for JWT token management across all components - Sticky Storage Integration: Components now share authentication state via Grasshopper's sticky storage
- Comprehensive Error Handling: Added runtime messages (Remark, Warning, Error) for better user feedback
- Color Fallback System: Enhanced mesh color handling with component color fallbacks and default gray
- Parameter Documentation: Added tooltips for all input/output parameters across all components
- Consistent Coding Standards: Unified import organization, pyright suppressions, and code structure
- CSC_SignIn: Complete authentication implementation with JWT token management
- CSC_FetchAllComponents: Updated to use centralized AuthCore pattern
- CSC_FetchComponents: Enhanced with AuthCore integration and improved error handling
- CSC_DisassembleComponent: Added descriptors output and comprehensive geometry processing
- CSC_BakeComponents: Enhanced with color fallbacks and improved user feedback
- Authentication Flow: Replaced scattered authentication logic with centralized AuthCore system
- Component Architecture: Standardized all components with consistent
__init__,_add*methods, and error handling - Mesh Color Handling: Implemented three-tier color fallback system (mesh colors → component color → default gray)
- Output Format: Descriptors now output as JSON strings for consistency with other components
- Error Recovery: All components now provide graceful error handling with clear user feedback
- Code Quality: Applied consistent pyright suppressions, import organization, and coding standards
- CSC_SignIn: Added username tracking, refresh functionality, and comprehensive API error handling
- CSC_FetchAllComponents: Enhanced with proper authentication validation and runtime messaging
- CSC_FetchComponents: Improved individual component fetching with better error handling
- CSC_DisassembleComponent: Added descriptors output and enhanced geometry processing robustness
- CSC_BakeComponents: Improved baking process with better status tracking and error handling
- Memory Management: Eliminated code duplication through centralized authentication
- User Experience: Consistent feedback across all components via multiple message channels
- Robustness: Enhanced error handling prevents crashes and provides clear user guidance
- Maintainability: Standardized code structure makes future updates easier and more consistent
- Student Experience: Professional-grade components with clear error messages and status updates
- Enhanced authentication system with comprehensive error handling and user feedback
- Added Register button alongside Sign In button in UserItem component for non-authenticated users
- Added security notice on registration page warning users to use unique passwords
- Added cross-links between sign in and register pages for better user navigation
- Improved sign in form error handling with specific error messages for different failure types
- Updated sign in and register pages to stick to top on mobile/narrow screens instead of centering
- Enhanced register page styling to match sign in page using consistent Card components
- Improved form validation with client-side checks and better error positioning
- Sign in form now properly displays error messages on authentication failures
- Register page layout now properly contains all elements within the form container
- Consistent styling between authentication pages for better user experience
- Responsive layout issues when dynamically resizing window width
- Layout not properly adapting when switching between mobile and desktop viewports
- Sidebar visibility and positioning on resize events
- Component detail page responsive behavior when resizing from wide to narrow
- Fixed layout overflow issues caused by fixed minimum widths
- Component detail page width constraints - now properly adapts to viewport when resizing
- Fixed Card components expanding beyond container width on resize
- Component detail page now properly constrains width to viewport (no more right-side overflow)
- Improved responsive behavior with proper resize event listeners
- Sidebar now dynamically shows/hides based on screen size
- Header and mobile menu properly adapt to viewport changes
- Layout structure changed from CSS Grid to Flexbox for better responsive behavior
- Added proper cleanup of resize event listeners
- Component detail page now uses flexible layout instead of fixed minimum widths
- Changed breakpoint from
md:tolg:for better mobile experience - Improved text sizing and button layout for different screen sizes
- Component detail page layout changed from CSS Grid to Flexbox for better width control
- Added explicit width constraints and overflow handling to Card components
- Simplified component detail page width handling to match working overview page approach
- Enhanced ThemeToggle with hover effects - moon icon now uses accent color on hover
- Dynamic screen size detection in Sidebar, Header, AppMenu, and ComponentDetailCard components
- Automatic mobile menu closing when resizing to desktop
- Proper z-index management for overlapping elements
- Responsive text sizing for ComponentViewer overlay UI
- Break-word handling for long component IDs
- Strict width constraints and overflow handling for component detail page
- Restructured frontend components folder organization:
src/frontend/components/layout/- Layout components (Header, Sidebar, Footer)src/frontend/components/auth/- Authentication components (UserItem, SignInForm)src/frontend/components/components/- Component-specific componentssrc/frontend/components/common/- Shared/common components (ThemeToggle, models)
- Updated all import statements to use correct absolute paths (
@/components/ui/...) - Fixed broken UI component imports after folder restructuring
- CSC FastAPI Backend: 0.2.2.0
- CSC React Frontend: 0.2.0.5
- CSC Sheetscan Module: 0.0.1.11
- Added responsive mobile navigation with burger menu
- Added mobile UserItem display in header
- Improved header design with better typography and spacing
- Redesigned header for better mobile and desktop experience
- Implemented collapsible mobile navigation menu
- Moved theme toggle to header for better accessibility
- Added smooth animations for mobile menu transitions
- Mobile menu automatically closes after navigation
- CSC FastAPI Backend: 0.2.2.0
- CSC React Frontend: 0.2.0.4
- CSC Sheetscan Module: 0.0.1.11
- Fixed sidebar menu hover behavior - buttons no longer stay "selected" after hovering
- Replaced Command components with proper navigation items for better UX
- Maintained card-like visual appearance while fixing persistent selection states
- CSC FastAPI Backend: 0.2.2.0
- CSC React Frontend: 0.2.0.3
- CSC Sheetscan Module: 0.0.1.11
- Fixed missing role field in user registration API - now automatically sets role to 'user' for new registrations
- Fixed Access card visibility on home page - now hidden when user is logged in
- CSC FastAPI Backend: 0.2.1.0
- CSC React Frontend: 0.2.0.2
- CSC Sheetscan Module: 0.0.1.11
- Changed routes to adapt to new preview image fetch method
- Ensure that prod builds locally without errors
- CSC FastAPI Backend: 0.2.2.0
- CSC React Frontend: 0.2.0.1
- CSC Sheetscan Module: 0.0.1.11
- Add preview image route
- CSC FastAPI Backend: 0.2.1.0
- CSC React Frontend: 0.2.0.1
- CSC Sheetscan Module: 0.0.1.11
- Now builds in production mode
- CSC FastAPI Backend: 0.2.1.0
- CSC React Frontend: 0.2.0.0
- CSC Sheetscan Module: 0.0.1.11
- First stable version with new and revamped backend
- Completely revamped NextJS app using NextJS 15, builds in development mode
- Production build still failing
- CSC FastAPI Backend: 0.1.0.12
- CSC React Frontend: 0.1.4.18
- CSC Sheetscan Module: 0.0.1.11
- Added BoundingBox display option
- Modified ComponentViewer interface to be an overlay on top of the 3d canvas
- CSC FastAPI Backend: 0.1.0.12
- CSC React Frontend: 0.1.4.17
- CSC Sheetscan Module: 0.0.1.11
- Modified componentcount route to work with a filter query (we will need this for correct pagination in frontend)
- Reoriented all Rubble meshes according to PCA
- Recomputed primitive geometry with 300 faces
- Updated database, component geometry, component previews
- CSC FastAPI Backend: 0.1.0.10
- CSC React Frontend: 0.1.4.16
- CSC Sheetscan Module: 0.0.1.11
- Added material filter to components and shallowcomponents route
- Added functionality to filter for materials and component types
- CSC FastAPI Backend: 0.1.0.9
- CSC React Frontend: 0.1.4.15
- CSC Sheetscan Module: 0.0.1.11
- Added routes to fetch detailed geometry, reduced mesh geometry, material and textures
- Updated detailed and reduced geometry routing to fetch geometry using backend API
- CSC FastAPI Backend: 0.1.0.8
- CSC React Frontend: 0.1.4.14
- CSC Sheetscan Module: 0.0.1.11
- Fixed Tailwinds
- CSC FastAPI Backend: 0.1.0.8
- CSC React Frontend: 0.1.4.13
- CSC Sheetscan Module: 0.0.1.11
- Updated ComponentDetail display
- CSC FastAPI Backend: 0.1.0.8
- CSC React Frontend: 0.1.4.12
- CSC Sheetscan Module: 0.0.1.11
- Removed Materialthickness
- Removed Materialthickness and adapted everything to use BBX extents
- CSC FastAPI Backend: 0.1.0.7
- CSC React Frontend: 0.1.4.11
- CSC Sheetscan Module: 0.0.1.11
- Updated ComponentViewer component to be able to display more detailed meshes on request
- CSC FastAPI Backend: 0.1.0.7
- CSC React Frontend: 0.1.4.10
- CSC Sheetscan Module: 0.0.1.11
- Modified component spec to enable SAS rubble imports
- Modified Component Model and implementation to reflect changes in component spec
- CSC FastAPI Backend: 0.1.0.6
- CSC React Frontend: 0.1.4.9
- CSC Sheetscan Module: 0.0.1.11
- Added possibility to pre-set reference id in
frontend/components/ComponentLookup.tsx - Added possibility to pre-set reference id in
frontend/app/findcomponent/page.tsx - Added link to find component with pre-set reference id in
frontend/components/ComponentSheet.tsx - Added link to find component with pre-set reference id in
frontend/app/components/[component_id]/page.tsx
- CSC FastAPI Backend: 0.1.0.6
- CSC React Frontend: 0.1.4.8
- CSC Sheetscan Module: 0.0.1.11
- Corrected docstring of single component fetch route
- Added
components/[component_id]API route to retrieve single component data - Added working ComponentDetailPage (
frontend/app/components/[component_id]/page.tsx) - Modified
ComponentSheetto link to component details page
- CSC FastAPI Backend: 0.1.0.5
- CSC React Frontend: 0.1.4.7
- CSC Sheetscan Module: 0.0.1.11
- Added proper imprint
- Fixed npm vulns
- CSC FastAPI Backend: 0.1.0.5
- CSC React Frontend: 0.1.4.6
- CSC Sheetscan Module: 0.0.1.11
- Changed Component model to reflect current location as attribute
- Extended DataTable for Components with location attribute
- Extended BaseModel & SheetModel with location
- CSC FastAPI Backend: 0.1.0.4
- CSC React Frontend: 0.1.4.5
- CSC Sheetscan Module: 0.0.1.10
- Extended DataTable for Components
- CSC FastAPI Backend: 0.1.0.4
- CSC React Frontend: 0.1.4.4
- CSC Sheetscan Module: 0.0.1.10
- Fixed color definition in ComponentModel in
models.py
- Adapted table layout for component overview
- CSC FastAPI Backend: 0.1.0.3
- CSC React Frontend: 0.1.4.3
- CSC Sheetscan Module: 0.0.1.10
- Added preview generation routine
- Moved database connection functions to
utilitymodule
- CSC FastAPI Backend: 0.1.0.2
- CSC React Frontend: 0.1.4.3
- CSC Sheetscan Module: 0.0.1.10
- Add
ComponentViewerSkeleton.tsxto display loading message during geometry load.
- Fix linting in all components.
- Change Sidebar width to
250px
- CSC FastAPI Backend: 0.1.0.2
- CSC React Frontend: 0.1.4.2
- CSC Sheetscan Module: 0.0.1.10
- Added lazy loading of components
- Added
fetch-components-shallowroute to API - Added
fetch-component-geometryroute to API
- Added API endpoints for retrieving component geometry and shallow components without geometry
- Components in the overview are now retrieved shallow, e.g. without geometry.
- Geometry is loaded on click during opening of the Component Detail Sheet.
- CSC FastAPI Backend: 0.1.0.1
- CSC React Frontend: 0.1.4.2
- CSC Sheetscan Module: 0.0.1.10
- Reformatted layout to incorporate Footer.
- Started reformatting of Component Overview DataTable
- Added Credits Page
app/credits/page.tsx - Added Footer Component
components/Footer.tsx - Added Function
copyright_datetolib/utils.ts
- CSC FastAPI Backend: 0.1.0.1
- CSC React Frontend: 0.1.4.1
- CSC Sheetscan Module: 0.0.1.10
- Updated
ComponentModelinmodels.py - Fixed response models in
routers.py
- Fixed timestamp printing in console
- Added
timestamp_stringfunction tolib/utils.ts
- CSC FastAPI Backend: 0.1.0.0
- CSC React Frontend: 0.1.4.0
- CSC Sheetscan Module: 0.0.1.10
- Fixed Caching (hopefully)
- Initiated
CHANGELOG.md