Harden generation pipeline, fix family placement, add CI and tests - #1
Merged
Conversation
Bug fixes - Family placement: regenerate the document after activating the family symbol (a common cause of Family (.rfa) placement failures), guard against a missing/unresolvable symbol, and always clean up the temp .rfa file even when placement throws. Robustness - MeshyApiService: null-safe response parsing with clearer errors, DRY GET/POST helpers, a 5-minute download timeout, a minimum poll interval, and an API-key argument check. - Thread the cancellation token through task creation and model download so cancellation works across the whole pipeline, not just polling. - Omit empty texture_prompt from refine requests. UX - Add a working Cancel button (the cancellation plumbing existed but was unreachable from the UI) and guard the generate handlers against re-entrancy, wiring up the previously unused _isGenerating field. Project quality - Add a CI workflow that builds all three Revit configurations on Windows and runs unit tests on every push and pull request. - Add xUnit tests for the (Revit-free) OBJ parser; the test project links the parser sources so it stays cross-platform. - Add .editorconfig, ignore CI packaging/test artifacts. - README: fix the clone URL, document cancellation, add a security note for the plaintext API key, known limitations, and a testing section. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EidhhLZEGQ2JxyGTAkNGvo
QROST
marked this pull request as ready for review
June 22, 2026 05:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A "perfection" pass over the Meshy Revit plugin: fixes real correctness bugs, hardens the API/generation pipeline, closes a UX gap, and adds the project infrastructure (CI + tests) that was missing. No local .NET toolchain is available in this environment, so the new CI workflow doubles as build validation for these changes.
Bug fixes
doc.Regenerate()afterFamilySymbol.Activate()— a well-known requirement beforeNewFamilyInstance, and a common cause of placement failures. Also guard against a missing/unresolvable symbol and always clean up the temp.rfa(even when placement throws).Robustness
MeshyApiService: null-safe response parsing with clearer error messages, DRYGET/POSThelpers, a 5-minute download timeout, a minimum poll interval, and an API-key argument check.texture_promptis omitted from refine requests.UX
CancellationTokenSource) already existed but was unreachable from the UI. Generate handlers are also guarded against re-entrancy (wiring up the previously-dead_isGeneratingfield).Project quality
.github/workflows/ci.yml): builds all three Revit configurations (Release-R2024/2025/2026) on Windows and runs unit tests on every push/PR.tests/MeshyRevit.Tests). The parser and mesh model types have no Revit/WPF dependency, so the test project links those sources directly and targets plainnet8.0— it runs cross-platform on CI..editorconfig, ignore CI packaging/test artifacts.Notes / honest limitations documented
Testing
🤖 Generated with Claude Code
Generated by Claude Code