Repository navigation
Prepare the stable release 0.1.0 - #2
Merged
Merged
Conversation
The package icon was a copy of the IOViewer icon. The artwork is drawn in the style of the other IOExtend repositories: "IO" in cyan as in IOViewer, "Scene" in emerald. The README shows the banner and the NuGet and release badges.
The contract and the CreateOptions documentation said that an explicit null always reads as a missing member. The reader does that only for text, lists, objects and nullable members; a null for a number, an id, an enum, a math value, a date-time or a property value is rejected. The text now says so, and a test pins the rejection for SceneJson.Read and for the options of SceneJson. The contract said that a geometry of an unknown topology is not checked for counts, but Validate skips only vertex-count and index-count: index-range, normal-count and uv-count apply to every topology. The text and the comment now say so, and a test pins it. No code changes.
The contract and the XML documentation now state rules that were left open or only implied: - A triangle's front is the side from which its vertices run counter-clockwise, normals point to the front, and an instance transform with a negative determinant reverses the winding (the glTF rule). - A PlannedStart or PlannedEnd at its default 0001-01-01T00:00:00+00:00 means "not given", and a consumer leaves such a task out of time-based views. - Date-times are written with an offset; SceneJson reads a value without one in the local time zone of the machine. - SceneModel.Producer is the package id and the NuGet version without build metadata, separated by one space. - An instance colour replaces the material colour, also as the factor of the material's texture. - A lookup by key takes the first property with the key in the first set that has it. - SceneJson writes and reads JSON nested at most 128 levels deep, which holds 62 levels of tasks. - RgbaColor.Rf, Gf and Bf are still sRGB-encoded. docs/keys.md registers the namespaces revit: and ifc: with the first releases of their producers, and says that shared, project and family parameters have no key yet. Tests pin the date-time encoding and the nesting limits. No code changes.
The first stable release. The API, the file format (kind ioscene, format 1) and the validation codes are those of 0.1.0-preview.2; from now on a patch only adds and every other change waits for 0.2.0. README, docs/contract.md and SECURITY.md no longer describe a preview. The install command has no --prerelease, the README gives the right reason for NU5104 with the range [0.1.0, 0.2.0-0), and says that packages outside IOExtend are supported from IOScene 1.0. CONTRIBUTING uses tags that can still be released as examples.
nuget.org renders package readmes with raw HTML turned off, so the HTML banner would show as escaped markup on the package page. A Markdown image renders on both GitHub and nuget.org.
"Only adds" ruled out a bug fix or a security fix in a 0.1.x patch, which contradicted the security policy's own next sentence. A patch adds or fixes, and a breaking change, as contract section 5 defines it, waits for 0.2.0.
Match README and SECURITY.md: a 0.1.x patch may fix as well as add, and only a breaking change waits for 0.2.0.
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.
What changes and why
Prepares the first stable release, 0.1.0. The code is the same as
0.1.0-preview.2, which IfcIO.Scene, RvtIO.Scene and IOViewer were built and tested against: only texts, comments, XML docs, tests and the artwork change.Version0.1.0; a## [0.1.0]section above the preview.2 one; README status "stable (0.1)", install without--prerelease, the NU5104 advice with its real cause (the0.2.0-0upper bound), and one line that packages outside IOExtend are supported from 1.0; the contract status line; SECURITY.md; CONTRIBUTING example tags. The patch rule reads "a patch adds or fixes; a breaking change waits for 0.2.0", in the contract (section 5) as well.nullreads as the default for text, lists,SceneTexture.Data, objects and?members; for a number, an enum, a math value, a date-time or a property valueSceneJson.Readrejects it withInvalidDataException(throughCreateOptionsthe serializer'sJsonException);Validate()skips onlyvertex-countandindex-count;index-range,normal-countanduv-countapply to every topology.PlannedStart/PlannedEndat the default0001-01-01T00:00:00+00:00means "not given", and a consumer leaves such a task out of time-based views;SceneModel.Produceris<package id> <NuGet version>; an instance colour also replaces the material colour as the texture factor; a key lookup takes the first property of the first set that has it; JSON nests at most 128 levels (62 levels of tasks);RgbaColor.Rf/Gf/Bfare still sRGB.docs/keys.md:revit:andifc:are registered, their formats fixed from the first releases of RvtIO.Scene 0.4.0 and IfcIO.Scene 0.11.0; shared, project and family parameters have no key yet.Deferred to 0.1.1, with package validation against 0.1.0 (plan step C3): two
SceneJson.CreateOptionsedge cases found in the audit (a wrapped exception on runtimes without dynamic code, and a holder'sIJsonOnDeserializedcallback that is not called).Checks
dotnet build IOScene.slnx -c Release: 0 warnings, 0 errors.dotnet test: 236/236 on net8.0 and net10.0 (225 before, 11 new tests pin the texts above).git diff 3d2c6cd..prepare-0.1.0 -- src: only///and//lines change in the library source (plusicon.png).lib/net8.0andlib/net10.0/IOScene.dllequal those of the published preview.2; the DLLs differ only in the PE timestamp, MVID, PDB id and checksum and the informational version. The packed README renders through nuget.org's Markdown pipeline (raw HTML disabled) with the banner as an image.release.yml, run on this CHANGELOG withv0.1.0, extracts the 0.1.0 section only.release.ymlunder pwsh 7 (not installed here; checked with Windows PowerShell 5.1 and a C# copy).Notes
main. Then tagv0.1.0on the merge commit;release.ymlpublishes the package.[0.1.0, 0.2.0-0)and release (plan steps C1 and C2).