Skip to content

Dev#22

Merged
nullStack65 merged 17 commits intoreleasesfrom
dev
Jan 11, 2026
Merged

Dev#22
nullStack65 merged 17 commits intoreleasesfrom
dev

Conversation

@nullStack65
Copy link
Owner

No description provided.

Your Name and others added 16 commits January 10, 2026 06:14
CI improvements:
- Add pip caching via setup-python cache option
- Upload test artifacts (STLs) on integration test failures
- Artifact retention: 7 days

Dependency management:
- Add Dependabot for pip and GitHub Actions updates
- Weekly schedule, grouped minor/patch updates

PyPI package improvements:
- Add keywords for discoverability
- Add classifier: Typing :: Typed
- Add project URLs: Documentation, Issues, Changelog
- Add py.typed markers for PEP 561 compliance

Security:
- Add SECURITY.md with vulnerability reporting guidelines
BREAKING CHANGE: This marks the start of v2.0 development cycle.
Future releases will include breaking changes:
- Unified CLI replacing separate entry points
- Spec-driven configuration from YAML files
- No backwards compatibility with 1.x CLI

Added:
- TODO.md: Comprehensive roadmap covering:
  - Spec-driven configuration (specs/*.yml)
  - Unified CLI (microfinity <subcommand>)
  - Debug tooling (SVG export, mesh diff, slice viewer)
  - Developer experience improvements
  - New box types and features
  - Documentation improvements
  - Future: tolerance test baseplates, additional micro-divisions

- specs/README.md: Documentation for upcoming spec files

Removed:
- REFACTOR_TODO.md: Superseded by TODO.md (all items completed)

Version bump: 1.2.0 -> 2.0.0
- Add specs/gridfinity_v1.yml with canonical Gridfinity dimensions
- Add specs/microfinity.yml with microfinity-specific extensions
- Add microfinity/core/spec.py YAML loader with typed access
- Add unified CLI (microfinity box/baseplate/meshcut/info)
- Update Makefile with test-*, lint, format, typecheck targets
- Add pyyaml dependency for spec loading

BREAKING CHANGE: New unified CLI replaces legacy entry points.
Legacy commands (microfinity-box, etc.) still work but deprecated.
- GitHub Pages website with 3D STL viewer
- MakerWorld page with examples and docs
- Reddit r/gridfinity launch post plan
- X/Twitter outreach strategy
- README overhaul checklist
- Community setup (Discussions, templates, etc.)
- Spec files and loader (3 items)
- Unified CLI (7 items)
- Makefile improvements (12 items)
BREAKING CHANGE: All constants now loaded from specs/gridfinity_v1.yml.
No more hardcoded values in constants.py - single source of truth.
- Add version/name properties to GridfinitySpec and MicrofinitySpec
- Show spec versions in 'microfinity info' command
- Display key spec values (pitch, height unit, supported divisions)
- Validate all spec values are within expected ranges at load time
- Add _validate_range helper for range checking
- Validate grid, bin, foot, holes, and meshcutter sections
- Warn but don't fail if validation fails (allows loading anyway)
- Document micro-grid divisions extension
- Document foot profile geometry differences
- Document stacking lip simplifications
- Document tolerance adjustments
- Add validation information
- Add contributing guidelines for spec corrections
- microfinity debug analyze: mesh diagnostics (vertices, faces, volume, issues)
- microfinity debug slice: SVG cross-section at specified Z height
- microfinity debug compare: compare two meshes (dimensions, volume diff)
- microfinity debug footprint: extract 2D footprint as SVG
- Add test_mesh_validation.py with watertight, dimension, topology tests
- Add test_cli_e2e.py with info, help, debug analyze/slice/compare tests
- Update golden baselines for baseplates after spec changes
- Fix debug slice SVG export to use polygon-based generation
- Mark P1 Test Infrastructure items as complete
When converting models with solid floors in the foot region (like the
ESP32 holder), the replace-base pipeline now automatically detects and
preserves the floor by adding a deck slab.

Detection algorithm:
- Samples multiple Z depths (2.0, 3.0, 4.0mm below z_join) in foot region
- Compares band coverage against reference footprint polygon
- Triggers deck if coverage > 90% and hole fraction < 15%

Deck generation:
- Creates solid slab from guard/collar polygon exterior (drops interior holes)
- Positioned at z_join with overlaps for clean boolean union
- Default thickness: 0.8mm (configurable via --deck-thickness)

CLI options:
- --deck auto|always|never (default: auto)
- --deck-thickness <mm> (default: 0.8)

Files modified:
- meshcutter/core/replace_base.py: Add deck detection and generation
- meshcutter/core/foot_cutter.py: Pass deck params to pipeline
- meshcutter/cli/meshcut.py: Add CLI arguments

Fixes floor disappearing on solid-base Gridfinity models.
microfinity:
- microfinity.core.constants -> microfinity.spec.constants
- microfinity.core.base -> microfinity.parts.base
- microfinity.core.helpers -> microfinity.cq.helpers
- microfinity.core.export -> microfinity.cq.export
- microfinity.core.spec -> microfinity.spec.loader

meshcutter:
- meshcutter.core.* -> meshcutter.{pipeline,cutter,detection,mesh}.*
- meshcutter.core.constants -> meshcutter.constants
- meshcutter.core.replace_base -> meshcutter.pipeline.replace_base
- meshcutter.core.detection -> meshcutter.detection.footprint
- meshcutter.core.boolean -> meshcutter.mesh.boolean

Also:
- Delete legacy microfinity/scripts/ CLI entry points
- Move tests into package directories
- Consolidate shared CadQuery utilities in microfinity.cq
- Update CI workflow to use new test locations:
  - microfinity/tests/ for microfinity tests
  - meshcutter/tests/ for meshcutter tests
- Fix hardcoded version check in test_cli_e2e.py to use regex pattern
@nullStack65 nullStack65 merged commit 44ff707 into releases Jan 11, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant