https://github.com/movingblocks/teranui
Terasology's New User Interface
https://github.com/movingblocks/teranui
terasology ui
Last synced: 4 months ago
JSON representation
Terasology's New User Interface
- Host: GitHub
- URL: https://github.com/movingblocks/teranui
- Owner: MovingBlocks
- License: apache-2.0
- Created: 2016-03-06T17:29:41.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2024-07-29T06:12:52.000Z (over 1 year ago)
- Last Synced: 2025-10-24T09:58:40.120Z (4 months ago)
- Topics: terasology, ui
- Language: Java
- Homepage: https://terasology.org/TeraNUI/
- Size: 2.62 MB
- Stars: 4
- Watchers: 19
- Forks: 10
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TeraNUI
**TeraNUI** (Terasology's New UI Framework) is a canvas based UI framework.
Its major features are:
- Canvas providing primitive draw operations for UI, including "drawing" interaction regions.
- Skins providing display information, handled through the canvas operations.
- UIWidget system for encapsulating drawing logic into objects
- Skin asset providing the ability to define skins
- UI asset providing the ability to define widget layouts
- Data binding support
Learn more about TeraNUI and how to use it here:
👉 [JavaDoc] ▪ [Guide] ▪ [Tutorial] 👈
## 🤓 Development
We welcome contributions to this UI library, be it bug fixes or new features. Feel free to fork this project and open a
PR with your changes. You can start right away by using the Gitpod online workspace:
[](https://gitpod.io/#https://github.com/MovingBlocks/TeraNUI)
In Terasology, you can test easily locally until you're ready for a snapshot or release. To do so, you'll need to re-embed TeraNUI into Terasology as source which has priority over any binary version. You can get the TeraNUI library as source into your local Terasology workspace as follows:
```sh
groovyw lib get TeraNUI
```
This will place the TeraNUI source code into `/libs/TeraNUI`. Please note, that you may need to reload/refresh your gradle workspace in Intellij IDEA.
## 🤖 Maintenance
The main development of TeraNUI happens on the `master` branch, a strong main branch that always has the latest version
of the code.
With TeraNUI v3 we can support both versions of [gestalt] in a single release (v5 and v7, respectively).
We keep _release branches_ for TeraNUI's major versions.
Note that new features will only be implemented for the latest version on `master`.
The following table shows release branches and known projects using them.
| Branch | Version | gestalt | Projects |
| -------------- |:-------:|:-------:| -------- |
| `master` | v3.x | \* | [Terasology] 4.4+, [DestinationSol] |
| `release/v2.x` | v2.x | v7 | [DestinationSol] |
| `release/v1.x` | v1.x | v5 | [Terasology] prior to 4.4.0 |
We may port back changes made to the main line of the code to release branches by _cherry picking_ them to the respective branches.
In addition to release branches we may prepare _preview branches_ for upcoming and/or experimental features.
Only `-SNAPSHOT` versions may be released from preview branches.
It is the responsibility of the preview branch maintainers to keep the preview branches up-to-date with main development.
| Branch | Version | gestalt | Projects |
| -------------- |:-------------:|:-------:| ------------------------------------ |
| `preview/v4.x` | v4.x-SNAPSHOT | \* | [DestinationSol] experimental branch |
## 🚀 Release Management
A _release_ denotes that an artifact for the associated commit is available for consumption. Our
[Jenkins CI/CD pipeline][jenkins] automatically builds and publishes releases for the main `master` branch and release
branches prefixed with `release/v{{major-version}}.x`. The artifact is published to our [Artifactory] under the version specified
in [`build.gradle`](./build.gradle).
> âš **Note:** Whether an artifact should be published as release or snapshot is determined by whether or not there is a
> `-SNAPSHOT` in the version. Publishing will fail in case publishing the same non-snapshot version is attempted
> again.
The exact build steps for this library are defined in the [Jenkinsfile](./Jenkinsfile).
🗄 [**Snapshots**][artifactory-nui-snapshot] ▪ [**Releases**][artifactory-nui-release]
### Release Process
As releases are automatically triggered from `master` and `release/v{{major-version}}.x` the required steps to make a
non-snapshot release for any version is as follows:
1. **Decide on release version** â–ª Which branch to publish, under which version?
_The version number MUST be a higher SemVer than the current version of the branch to release.
The version bump SHOULD follow SemVer specifications, e.g., increase the major version for breaking changes, or do
a patch release for bug fixes._
1. **Make the release commit** â–ª Trigger a release via [Jenkins]
_Update the version in [build.gradle](./build.gradle) and remove the `-SNAPSHOT` suffix. Commit the change with the
following message and push it:_
> `release: version {{version}}`
_Until we have automatic tagging or a tag-based release process it is recommended to manually
[create and push an annotated tag][git-tag] for the respective version on `master`. For a library release v1.2.3
the tag process is:_
```sh
git tag -a v1.2.3 -m "Release version 1.2.3"
git push --tags
```
1. **Prepare for next release** â–ª Bump to next snapshot version
_Finally, we have to increase the version number to be able to get pre-release `-SNAPSHOT` builds for subsequent
commits. Therefore, the version number MUST be a higher SemVer than the version just released. This will typically
be a minor version bump. To do this, just update the version in [build.gradle](./build.gradle), commit the
change with the following message and push it:_
> `chore: prepare next snapshot for {{version}}`
## License
This library is licensed under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.html).
[artifactory]: https://artifactory.terasology.io/
[artifactory-nui-snapshot]: https://artifactory.terasology.io/ui/repos/tree/General/libs-snapshot-local/org/terasology/nui
[artifactory-nui-release]: https://artifactory.terasology.io/ui/repos/tree/General/libs-release-local/org/terasology/nui
[destinationsol]: https://github.com/MovingBlocks/DestinationSol
[gestalt]: https://github.com/MovingBlocks/gestalt
[git-tag]: https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-tag
[guide]: https://terasology.org/TeraNUI
[javadoc]: https://jenkins.terasology.io/job/Libraries/job/TeraNUI/job/master/javadoc/overview-summary.html
[jenkins]: https://jenkins.terasology.io/job/Libraries/job/TeraNUI/
[terasology]: https://github.com/MovingBlocks/Terasology
[tutorial]: https://github.com/Terasology/TutorialNUI/wiki