Releases: bitbybit-dev/bitbybit
1.0.0-rc.1
STEP Assembly Support
Overview
This release focuses on STEP assembly support - a complete toolkit for loading, creating, inspecting, and exporting multi-part CAD assemblies in the browser. You can now work with professional engineering files that contain multiple components, part hierarchies, and color information, all without leaving your web application.
New Features
Assembly Module (occt.assembly)
A new module for working with STEP assembly documents. It's split into two sub-modules:
Manager (occt.assembly.manager)
Build and export assembly documents:
createPart- Define a part with a shape, name, and optional colorcreateAssemblyNode- Create a container node for grouping partscreateInstanceNode- Place a part at a specific position with translation, rotation, and scalecreatePartUpdate- Update an existing part's shape, name, or colorcombineStructure- Combine parts and nodes into a complete assembly structurebuildAssemblyDocument- Build the XCAF document from a structure definitionloadStepToDoc- Load a STEP file into an OCCT document (supports STEP-Z compression)setLabelColor- Change a label's color in an existing documentsetLabelName- Rename a label in an existing documentexportDocumentToStep- Export to STEP format with optional gzip compressionexportDocumentToGltf- Export to GLTF/GLB format for web viewing
Query (occt.assembly.query)
Inspect and extract data from assembly documents:
getDocumentParts- List all parts and assemblies in a documentgetAssemblyHierarchy- Get the full hierarchy tree with all nodesgetShapeFromLabel- Extract a specific shape by its label (e.g.,0:1:1:3)getLabelColor- Get a label's RGBA color valuesgetLabelTransform- Get an instance's position, rotation, and scalegetLabelInfo- Get detailed metadata about a label (type, flags, children)
IO Enhancements (occt.io)
New methods for STEP-to-GLTF conversion:
convertStepToGltf- Convert STEP files to GLTF/GLB format in a single call. Uses OCCT's native RWGltf_CafWriter for maximum performance with full preservation of hierarchy, names, colors, and transforms.convertStepToGltfAdvanced- Same conversion with fine-grained control over STEP reading options, mesh generation settings, and GLTF export options. Use this for performance tuning.parseStepToJson- Parse a STEP file and return the assembly structure as JSON without full geometry processing. Nice way to inspect what's in a file.
Color Preservation
Standard STEP exports lose color information. This release uses OCCT's XCAF (Extended CAD Application Framework) to embed colors into assembly structures. When you export a colored model from Bitbybit and open it in FreeCAD, the colors are preserved.
Visual Programming Support
All new methods are available as Rete and Blockly components too. The hierarchy preview component shows the assembly tree and lets you click on any item to see its label.
Use Cases
- Load STEP assemblies from CAD software and display them in the browser
- Parse assembly hierarchies to understand part structure and relationships
- Extract individual parts for selective visualization or customization
- Build parametric assemblies from scratch with algorithmic geometry
- Export to GLTF for web viewers, games, or AR applications
- Export to STEP with colors preserved for downstream CAD work
- Create product configurators that generate professional CAD files
Memory Considerations
Large assemblies require significant memory. The standard 32-bit build supports up to 2GB. For complex models, use the 64-bit version which supports up to 16GB.
Documentation
Blog Post
Tutorials
- Introduction to Assemblies - Understand assembly concepts
- Convert STEP to GLTF - Export for web viewing
- Parse Assembly Structure - Navigate and extract parts
- Build and Export Assemblies - Create from scratch
- Export Shapes with Color - Preserve colors in exports
1.0.0-rc.0
🎉 Bitbybit v1.0.0 - Release Candidate 0
It is great to announce version 1.0.0 Release Candidate 0.
After almost 100 releases in the 0.x.x range, version 1.0.0 is finally coming to life.
Although OpenCascade.js was ahead of its time, its development has stalled and it is no longer actively supported by its authors. As a result, v1.0.0 removes the dependency on the OCC.js layer and rebuilds the Bitbybit core directly on top of the OCCT C++ library, while keeping the existing API almost entirely intact.
The majority of existing projects are expected to continue working with v1.0.0. For specific migration details, refer to the sections below.
OCCT at the Core
In addition to the migration to native OCCT, OCCT 8.0.0 Release Candidate 3 has been adopted, which has proven to be highly stable during testing.
- All unit tests pass
- Both open-source and proprietary commercial projects developed for B2B customers continue to function without any apparent loss of functionality or stability
- Noticeable improvements in performance and reliability of CAD operations have been observed
What’s New?
- OCCT 8.0.0 Release Candidate 3 core
- New OCCT build architectures:
- 32-bit
- 64-bit
- 64-bit multi-threaded
- Custom OCCT bindings built and optimized specifically for Bitbybit.dev
- NPX-based scaffolding now allows selection between:
- PlayCanvas, Three.js, and Babylon.js
- OCCT architecture variants:
32 | 64 | 64-mt
- New runners
- New spiral algorithms:
createTaperedHelixWirecreateHelixWireByTurnscreateFlatSpiralWire
- New OCCT solid type: torus
- New Bitbybit CDN
(migrated away from JSDelivr for practical and reliability reasons) - BabylonJS v8.46.2
- PlayCanvas v2.15.1
Breaking Changes
- Edge indexing is now zero-based
Indexing previously started at 1, which was an early design decision. All projects must be updated accordingly during migration. - Projects using OCCT algorithms via:
occt-worker, or- game engine–specific NPM packages
are unlikely to encounter additional API changes.
- Projects using the
@bitbybit-dev/occtlayer directly and interacting with WASM builds will encounter significant API changes.
Usage via the official exported API functions is strongly recommended, as this is the only surface guaranteed to remain stable across future versions.
0.21.1
We now support command for fast bitbybit app scaffolding:
npx @bitbybit-dev/create-app my-awesome-projectWhat’s new in this release
- AI prompt context files for each supported game engine
- Significantly simplified application initialization
- Worker files and kernel initialization functions are no longer required
- Each game engine now includes a default scene initialization to simplify CAD app startup
- Added llms.txt to the documentation
- Expanded documentation with new pages, blog posts, and dedicated sections for npx and AI
What's Changed
- added page dedicated to live unit test coverage by @matas-bitbybit-dev in #110
- Develop by @matas-bitbybit-dev in #111
- v0.21.1 by @matas-bitbybit-dev in #112
Full Changelog: v0.21.0...v0.21.1
0.21.0
Announcing PlayCanvas Integration 🎉
We're excited to announce that PlayCanvas has joined the family of supported Bitbybit game engines! PlayCanvas is now officially supported alongside Three.js and Babylon.js, giving you more flexibility in choosing the right engine for your 3D CAD applications.
Learn more: Visit our PlayCanvas support blog post
New Features & Improvements
PlayCanvas Support
- Draw OCCT, Manifold, JSCAD shapes with faces and edges in PlayCanvas
- Orbit camera implementation for PlayCanvas
- Full integration with Bitbybit CAD shapes such as points, lines, polylines, curves as PlayCanvas entities
Rendering Enhancements
- Face direction visualization: When drawing OCCT, Manifold, and JSCAD shapes in all engines, faces are now rendered on the negative side by default with blue color for better visibility. This helps identify positive vs. negative face orientation, which is crucial for OpenCascade geometry construction. Can be disabled via the
drawTwoSidedproperty in drawing options. - Arrow rendering: Added arrow rendering option for polylines across all game engines, useful for visualizing edge and wire direction in OCCT.
- Multi-color support: Introduced multi-color rendering for polylines and points.
- Optimized point rendering: Point rendering is now significantly more efficient across all engines, utilizing thin instances technique.
- Verb surface rendering: Fixed rendering issues for Verb surfaces on all engines.
Materials & Textures
- Cross-engine materials: New generic API for creating textures and PBR materials that work consistently across all game engines. Materials created in Babylon.js visual programming editors can now be exported to PlayCanvas with matching appearance.
- Note: While parameters and colors are set identically, final rendering may vary slightly due to engine-specific rendering pipelines.
Gaussian Splatting (3DGS)
- Scale in place: Implemented
scaleInPlacemethod as the recommended approach for scaling Gaussian Splatting meshes. The old scale method flips geometry on the Y-axis and is now not considered best practice. Reference - Shadow support: Added
transparencyShadowproperty to directional and point lights. When enabled, 3DGS Gaussian Splat meshes now generate shadows.
Manifold Kernel
- Cross-sections: Added ability to create cross-sections from lists of points in the Manifold kernel.
Documentation
Comprehensive runner documentation is now available for all supported engines:
What's Changed
- v0.21.0 by @matas-bitbybit-dev in #108
- Documentation adjustments for PlayCanvas integration, additional exaples, fixes, stackblitz script updates by @matas-bitbybit-dev in #109
Full Changelog: v0.20.14...v0.21.0
0.20.14
New
bitbybit.csv - now you can create and parse CSV files
- parseToArray - Parses CSV text to a 2D array of strings (rows and columns).
- parseToJson - Parses CSV text to an array of JSON objects using headers.
- parseToJsonWithHeaders - Parses CSV text to JSON using custom headers (ignores CSV headers if present).
- queryColumn - Queries CSV data by column/header name and returns all values in that column.
- queryRowsByValue - Queries CSV data and filters rows where a column matches a value.
- arrayToCsv - Converts a 2D array to CSV text.
- jsonToCsv - Converts an array of JSON objects to CSV text.
- jsonToCsvAuto - Converts an array of JSON objects to CSV text using object keys as headers.
- getHeaders - the headers from a CSV file.
- getRowCount - Gets the number of rows in a CSV file (excluding headers if specified).
- getColumnCount - Gets the number of columns in a CSV file.
bitbybit.math
- roundAndRemoveTrailingZeros - Rounds a number to specified decimal places and removes trailing zeros.
- clamp - Constrains a value between a minimum and maximum value.
- lerp - Linear interpolation between two values using parameter t (0 to 1).
- inverseLerp - Calculates the interpolation parameter t for a value between start and end (reverse of lerp).
- smoothstep - Hermite interpolation with smooth acceleration and deceleration (smoother than linear lerp).
- sign - Returns the sign of a number: -1 for negative, 0 for zero, 1 for positive.
- fract - Returns the fractional part of a number (removes integer part, keeps decimals).
- wrap - Wraps a number within a specified range (creates repeating cycle).
- pingPong - Creates a ping-pong (back-and-forth) effect that bounces a value between 0 and length.
- moveTowards - Moves a value toward a target by a maximum delta amount (never overshooting).
bitbybit.list
- getFirstItem - Gets the first item from the list.
- getLastItem - Gets the last item from the list.
- shuffle - Randomly rearranges all items in the list (using Fisher-Yates algorithm).
- includes - Checks whether the list contains a specific item.
- findIndex - Finds the position (index) of the first occurrence of an item in the list.
- removeFirstItem - Removes the first item from the list.
- removeLastItem - Removes the last item from the list.
- removeItemAtIndexFromEnd - Removes an item counting from the end of the list (index 0 = last item, 1 = second-to-last, etc.).
- removeDuplicates - Removes duplicate items from the list using strict equality comparison (works with any type).
- concatenate - Combines multiple lists into a single list by joining them end-to-end.
- interleave - Combines multiple lists by alternating elements from each list (first from list1, first from list2, second from list1, etc.).
bitbybit.text
- A lot of new methods that expose basic string behaviour and regex functionality
Other Improvements
- added possibility to remove trailing zeros from occt dimension values
- new asset handling methods
Bug fixes
- Fixed a bug where wire would be split incorrectly by using collection of points. Described here: #80
Manifold kernel
- general update to manifold-3d v3.3.2
Learn Docs
- improved homepage of https://learn.bitbybit.dev
- Additional festive decorations tutorials
BabylonJS
- updated to v8.42.0
ThreeJS
- updated to v0.182.0
Unit Tests
- Many new unit tests that improve overall coverage were written.
- OCCT Coverage Report https://tests.bitbybit.dev/occt/
- Base Coverage Report https://tests.bitbybit.dev/base/
- ThreeJS Coverage Report https://tests.bitbybit.dev/threejs/
What's Changed
- v0.20.13 by @info-bitbybit-dev in #105
- v0.20.13 by @matas-bitbybit-dev in #106
- v0.20.14 by @info-bitbybit-dev in #107
Full Changelog: v0.20.12...v0.20.14
0.20.13
- shadow refresh rate option added to directional and point lights in babylonjs algorithms
- horizontal and vertical flips implemented for dimension labels in occt
- rotation angle implemented to pin with label occt dimension
- label override with expressions are now supported in occt dimensions
- update to babylonjs v8.39.2
What's Changed
- v0.20.12 by @matas-bitbybit-dev in #104
Full Changelog: v0.20.11...v0.20.13
0.20.12
- DXF R12 Support
- Arrowheads in dimensions
- Fixed some issues with solid primitives due to extrusion directions
- Base layer Global CDN Provider for cases where users must switch to different CDN during downtime. Or when they want to host required Bitbybit assets on their own infrastructure.
- A lot of new tutorials for 3D Bits app and Viewer Editor in the docs
What's Changed
- v0.20.12 by @matas-bitbybit-dev in #104
Full Changelog: v0.20.11...v0.20.12
0.20.11
What's Changed
- DXF arc bulge fixed by @matas-bitbybit-dev in #102
Full Changelog: v0.20.10...v0.20.11
0.20.10
- New beam profiles for occt wires, faces and solids.
- Updates to caching
- Babylonjs v8.34.0
What's Changed
- v0.20.10 by @matas-bitbybit-dev in #101
Full Changelog: v0.20.9...v0.20.10
0.20.9
What's Changed
- DXF Generator, updates to points of interest and dimensions by @info-bitbybit-dev in #100
Full Changelog: v0.20.8...v0.20.9