{"id":19215841,"url":"https://github.com/movingblocks/teranui","last_synced_at":"2025-10-24T09:58:43.081Z","repository":{"id":41850157,"uuid":"53267163","full_name":"MovingBlocks/TeraNUI","owner":"MovingBlocks","description":"Terasology's New User Interface","archived":false,"fork":false,"pushed_at":"2024-07-29T06:12:52.000Z","size":2744,"stargazers_count":4,"open_issues_count":12,"forks_count":10,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-10-24T09:58:40.120Z","etag":null,"topics":["terasology","ui"],"latest_commit_sha":null,"homepage":"https://terasology.org/TeraNUI/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MovingBlocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-03-06T17:29:41.000Z","updated_at":"2023-07-05T22:51:12.000Z","dependencies_parsed_at":"2025-04-22T01:48:06.976Z","dependency_job_id":null,"html_url":"https://github.com/MovingBlocks/TeraNUI","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/MovingBlocks/TeraNUI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MovingBlocks%2FTeraNUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MovingBlocks%2FTeraNUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MovingBlocks%2FTeraNUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MovingBlocks%2FTeraNUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MovingBlocks","download_url":"https://codeload.github.com/MovingBlocks/TeraNUI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MovingBlocks%2FTeraNUI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280776478,"owners_count":26388950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["terasology","ui"],"created_at":"2024-11-09T14:14:57.909Z","updated_at":"2025-10-24T09:58:43.054Z","avatar_url":"https://github.com/MovingBlocks.png","language":"Java","readme":"# TeraNUI\n\n**TeraNUI** (Terasology's New UI Framework) is a canvas based UI framework.\n\nIts major features are:\n\n- Canvas providing primitive draw operations for UI, including \"drawing\" interaction regions.\n- Skins providing display information, handled through the canvas operations.\n- UIWidget system for encapsulating drawing logic into objects\n- Skin asset providing the ability to define skins\n- UI asset providing the ability to define widget layouts\n- Data binding support\n\nLearn more about TeraNUI and how to use it here:\n\n👉 [JavaDoc] ▪ [Guide] ▪ [Tutorial] 👈\n\n## 🤓 Development\n\nWe welcome contributions to this UI library, be it bug fixes or new features. Feel free to fork this project and open a \nPR with your changes. You can start right away by using the Gitpod online workspace:\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/MovingBlocks/TeraNUI)\n\nIn 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:\n\n```sh\ngroovyw lib get TeraNUI\n```\n\nThis will place the TeraNUI source code into `/libs/TeraNUI`. Please note, that you may need to reload/refresh your gradle workspace in Intellij IDEA.\n\n## 🤖 Maintenance\n\nThe main development of TeraNUI happens on the `master` branch, a strong main branch that always has the latest version\nof the code. \nWith TeraNUI v3 we can support both versions of [gestalt] in a single release (v5 and v7, respectively).\n\nWe keep _release branches_ for TeraNUI's major versions.\nNote that new features will only be implemented for the latest version on `master`.\nThe following table shows release branches and known projects using them.\n \n\n| Branch         | Version | gestalt | Projects |\n| -------------- |:-------:|:-------:| -------- |\n| `master`       | v3.x    | \\*      | [Terasology] 4.4+, [DestinationSol] |\n| `release/v2.x` | v2.x    | v7      | [DestinationSol] |\n| `release/v1.x` | v1.x    | v5      | [Terasology] prior to 4.4.0 |\n\nWe may port back changes made to the main line of the code to release branches by _cherry picking_ them to the respective branches.\n\nIn addition to release branches we may prepare _preview branches_ for upcoming and/or experimental features.\nOnly `-SNAPSHOT` versions may be released from preview branches.\nIt is the responsibility of the preview branch maintainers to keep the preview branches up-to-date with main development.\n\n| Branch         | Version       | gestalt | Projects                             |\n| -------------- |:-------------:|:-------:| ------------------------------------ |\n| `preview/v4.x` | v4.x-SNAPSHOT | \\*      | [DestinationSol] experimental branch |\n\n## 🚀 Release Management\n\nA _release_ denotes that an artifact for the associated commit is available for consumption. Our\n[Jenkins CI/CD pipeline][jenkins] automatically builds and publishes releases for the main `master` branch and release\nbranches prefixed with `release/v{{major-version}}.x`. The artifact is published to our [Artifactory] under the version specified\nin [`build.gradle`](./build.gradle).\n\n\u003e ⚠ **Note:** Whether an artifact should be published as release or snapshot is determined by whether or not there is a\n\u003e `-SNAPSHOT` in the version. Publishing will fail in case publishing the same non-snapshot version is attempted\n\u003e again.\n\nThe exact build steps for this library are defined in the [Jenkinsfile](./Jenkinsfile).\n\n🗄 [**Snapshots**][artifactory-nui-snapshot] ▪ [**Releases**][artifactory-nui-release]\n\n### Release Process\n\nAs releases are automatically triggered from `master` and `release/v{{major-version}}.x` the required steps to make a \nnon-snapshot release for any version is as follows:\n\n1. **Decide on release version** ▪ Which branch to publish, under which version?\n\n    _The version number MUST be a higher SemVer than the current version of the branch to release.\n     The version bump SHOULD follow SemVer specifications, e.g., increase the major version for breaking changes, or do\n     a patch release for bug fixes._\n \n1. **Make the release commit** ▪ Trigger a release via [Jenkins]\n\n    _Update the version in [build.gradle](./build.gradle) and remove the `-SNAPSHOT` suffix. Commit the change with the\n     following message and push it:_\n\n    \u003e `release: version {{version}}`\n\n    _Until we have automatic tagging or a tag-based release process it is recommended to manually\n     [create and push an annotated tag][git-tag] for the respective version on `master`. For a library release v1.2.3\n     the tag process is:_\n    \n    ```sh\n    git tag -a v1.2.3 -m \"Release version 1.2.3\"\n    git push --tags\n    ```\n    \n1. **Prepare for next release** ▪ Bump to next snapshot version\n\n    _Finally, we have to increase the version number to be able to get pre-release `-SNAPSHOT` builds for subsequent \n     commits. Therefore, the version number MUST be a higher SemVer than the version just released. This will typically\n     be a minor version bump. To do this, just update the version in [build.gradle](./build.gradle), commit the \n     change with the following message and push it:_\n    \n    \u003e `chore: prepare next snapshot for {{version}}`\n\n## License\n\nThis library is licensed under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.html).\n\n\u003c!-- References --\u003e\n[artifactory]: https://artifactory.terasology.io/\n[artifactory-nui-snapshot]: https://artifactory.terasology.io/ui/repos/tree/General/libs-snapshot-local/org/terasology/nui\n[artifactory-nui-release]: https://artifactory.terasology.io/ui/repos/tree/General/libs-release-local/org/terasology/nui\n[destinationsol]: https://github.com/MovingBlocks/DestinationSol\n[gestalt]: https://github.com/MovingBlocks/gestalt\n[git-tag]: https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-tag\n[guide]: https://terasology.org/TeraNUI\n[javadoc]: https://jenkins.terasology.io/job/Libraries/job/TeraNUI/job/master/javadoc/overview-summary.html\n[jenkins]: https://jenkins.terasology.io/job/Libraries/job/TeraNUI/\n[terasology]: https://github.com/MovingBlocks/Terasology\n[tutorial]: https://github.com/Terasology/TutorialNUI/wiki\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmovingblocks%2Fteranui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmovingblocks%2Fteranui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmovingblocks%2Fteranui/lists"}