Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,34 @@ and the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.htm

## [Unreleased]

## [0.1.0] - 2026-11-13

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 this release a patch adds or fixes; a breaking change waits for 0.2.0 (`docs/contract.md`,
section 5). A package that depends on IOScene references `[0.1.0, 0.2.0-0)`.

### Changed
- README, `docs/contract.md` and SECURITY.md describe a stable package, and the install command has no
`--prerelease`.
- `docs/contract.md` and the XML documentation state these rules; the code is unchanged:
- An explicit `null` reads as the default for text other than `Kind`, lists, objects and members marked `?`.
`SceneJson.Read` rejects a `null` for a number, an enum, a math value, a date-time or a property value
with `InvalidDataException`.
- `Validate()` does not check `vertex-count` and `index-count` for a topology it does not know; `index-range`,
`normal-count` and `uv-count` apply to every topology.
- A triangle's front is the side from which its vertices run counter-clockwise, and normals point to the front. 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"; a consumer leaves
such a task out of time-based views.
- Date-times are written with an offset; a value without one is read in the local time zone.
- `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.
- `docs/keys.md`: the namespaces `revit:` and `ifc:` are registered; their formats are fixed from the first releases
of `RvtIO.Scene` and `IfcIO.Scene`. Shared, project and family parameters have no key yet.
- The package has its own icon instead of a copy of the IOViewer icon.

## [0.1.0-preview.2] - 2026-11-12

First published preview of the scene contract. Names and members may still change before 0.1.0.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ Write commit messages in the imperative mood, for example,

## Releases

Push a tag matching the package version, such as `v0.1.0` or `v0.1.0-preview.1`, to run `release.yml`.
Push a tag matching the package version, such as `v0.1.1` or `v0.2.0-preview.1`, to run `release.yml`.
The workflow builds and tests the solution, publishes the NuGet package through Trusted Publishing and then attaches
the package, symbols, binaries, source and checksums to a GitHub release, which is marked as a prerelease when the tag
contains a hyphen. The release notes are the section of `CHANGELOG.md` for the version: in the release commit, rename
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</PropertyGroup>

<PropertyGroup>
<Version>0.1.0-preview.2</Version>
<Version>0.1.0</Version>
<Authors>mahach666</Authors>
<Copyright>Copyright (c) 2026 mahach666</Copyright>
<Product>IOScene</Product>
Expand Down
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
![IOScene](https://raw.githubusercontent.com/IOExtend/IOScene/main/docs/images/ioscene-banner.png)

# IOScene

[![NuGet](https://img.shields.io/nuget/v/IOScene?style=flat-square&color=10B981&logo=nuget)](https://www.nuget.org/packages/IOScene)
[![Release](https://img.shields.io/github/v/release/IOExtend/IOScene?style=flat-square&color=10B981)](https://github.com/IOExtend/IOScene/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT)
[![Platform](https://img.shields.io/badge/.NET-8.0%20%7C%2010.0-512BD4?style=flat-square&logo=dotnet)](https://dotnet.microsoft.com/)

Expand All @@ -10,8 +14,9 @@ it from there. The package is pure managed .NET (8 and 10) and has no dependenci

Built clean-room under the [IOExtend](https://github.com/IOExtend) organization.

**Status: preview.** The model is specified in [docs/contract.md][contract]; names and members may still change
before 0.1.0.
**Status: stable (0.1).** The model is specified in [docs/contract.md][contract] and changes only as its section 5
describes: a 0.1.x patch adds or fixes, and a breaking change waits for 0.2.0. Packages outside IOExtend are
supported from IOScene 1.0; until then the supported route is a scene file.

## What is in a scene

Expand All @@ -31,7 +36,7 @@ from a scene.
## Install

```sh
dotnet add package IOScene --prerelease
dotnet add package IOScene
```

A package that depends on IOScene references one 0.x line, because a 0.x minor release may break the API and a patch
Expand All @@ -42,8 +47,8 @@ line:
<PackageReference Include="IOScene" Version="[0.1.0, 0.2.0-0)" />
```

During the preview the lower bound is the preview: `[0.1.0-preview.2, 0.2.0-0)`. `dotnet pack` reports NU5104 for a
stable package with such a range; add `<NoWarn>$(NoWarn);NU5104</NoWarn>` to the referencing project.
`dotnet pack` of a stable package reports NU5104 for this range, because its upper bound `0.2.0-0` is a prerelease
version; add `<NoWarn>$(NoWarn);NU5104</NoWarn>` to the referencing project.

## Quick start

Expand Down
3 changes: 2 additions & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

## Supported versions

IOScene is in preview (0.x). Security fixes are made on the latest release only.
IOScene is at 0.x: a patch release adds or fixes, and only a minor release may break. Security fixes are made on the
latest release only.

## Reporting a vulnerability

Expand Down
Loading
Loading