Commit graph

264 commits

Author SHA1 Message Date
Leroy Hopson
9b6bb0a9e9
Perform GDScript format checks using pre-commit 2024-03-29 19:42:38 +13:00
dependabot[bot]
dfc0969133
chore(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 19:42:31 +13:00
dependabot[bot]
f59ff2efbb
chore(deps): bump jpribyl/action-docker-layer-caching
Bumps [jpribyl/action-docker-layer-caching](https://github.com/jpribyl/action-docker-layer-caching) from 0.1.0 to 0.1.1.
- [Release notes](https://github.com/jpribyl/action-docker-layer-caching/releases)
- [Commits](https://github.com/jpribyl/action-docker-layer-caching/compare/v0.1.0...v0.1.1)

---
updated-dependencies:
- dependency-name: jpribyl/action-docker-layer-caching
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 19:42:16 +13:00
dependabot[bot]
4a0a3d542b
chore(deps): bump actions/cache from 3 to 4
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 19:42:09 +13:00
dependabot[bot]
5990329000
chore(deps): bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 19:42:00 +13:00
dependabot[bot]
b158a53d90
chore(deps): bump nick-fields/retry from 2 to 3
Bumps [nick-fields/retry](https://github.com/nick-fields/retry) from 2 to 3.
- [Release notes](https://github.com/nick-fields/retry/releases)
- [Changelog](https://github.com/nick-fields/retry/blob/master/.releaserc.js)
- [Commits](https://github.com/nick-fields/retry/compare/v2...v3)

---
updated-dependencies:
- dependency-name: nick-fields/retry
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 19:41:52 +13:00
dependabot[bot]
b00bd10edc
chore(deps): bump jwlawson/actions-setup-cmake from 1 to 2
Bumps [jwlawson/actions-setup-cmake](https://github.com/jwlawson/actions-setup-cmake) from 1 to 2.
- [Release notes](https://github.com/jwlawson/actions-setup-cmake/releases)
- [Commits](https://github.com/jwlawson/actions-setup-cmake/compare/v1...v2)

---
updated-dependencies:
- dependency-name: jwlawson/actions-setup-cmake
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 19:41:44 +13:00
dependabot[bot]
2e716ac3a0
chore(deps): bump actions/setup-node from 3 to 4
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 19:41:36 +13:00
Leroy Hopson
e8650c5bc2
Add pre-commit config and auto-format files 2024-03-29 19:41:26 +13:00
Leroy Hopson
6ce0e6d01c
Add dependabot config 2024-03-29 19:39:31 +13:00
Leroy Hopson
1626c2dd90
Update gdtoolkit to version 3.5.0 2024-03-29 19:39:26 +13:00
Leroy Hopson
8e81e66ad3
Use non-specific version of CMake on macOS
Although this results in a warning of multiple matches due to the
existence of 3.23.2-macos-universal.dmg and 3.23.2-macos10.10-universal.dmg
the setup-cmake action doesn't work if we try to specify a more specific
version.
2024-03-29 19:39:02 +13:00
Leroy Hopson
1d0c61214a
Update workflow to address warnings
- Upgrades actions using Node.js 12 to versions using Node.js 16.
- Updates deprecated set-output command.
- Specifies more specific version of CMake on macOS runner.
2024-03-29 19:38:55 +13:00
Leroy Hopson
76e2b8375e
Pin GitHub-hosted runner versions
- ubuntu-latest -> ubuntu-22.04
- macos-latest -> macos-12
- windows-latest -> windows-2022
2024-03-29 19:38:49 +13:00
Leroy Hopson
b50e9f207f
Use non-pinned major versions of actions 2024-03-29 19:38:42 +13:00
Leroy Hopson
5273ccf05b
Statically link libstdc++
Otherwise binaries build on GitHub Actions fail to load on NixOS as
dynamically linked libstdc++ cannot be found.
2024-03-29 19:38:33 +13:00
Leroy Hopson
5e89dbd4ea
Retry import and export commands 2024-03-29 19:38:27 +13:00
Leroy Hopson
5222392598
Use load() rather than preload() for terminal icon
Allows the plugin to load even if resources have not been imported yet.
For example, if someone has opened a project with the plugin for the
first time. Otherwise, the plugin will fail to load and be disable in
the `project.godot` file.
2024-03-29 19:38:21 +13:00
Leroy Hopson
fae6317eb7
Use default export templates for HTML5
Changes Emscripten SDK version to match that used to compile the default export
templates used by Godot 3.5 (in this case 3.1.14 as can be seen here:
https://github.com/godotengine/build-containers/blob/3.5/Dockerfile.javascript).

This means we no longer need to compile custom export templates when
exporting HTML5 for Godot 3.5. Exports from other Godot versions may
requiring compiling the GDNative library with a different version of the
Emscripten SDK.

- Changes renderer from GLES3 -> GLES2 and reduces MSAA level to better
  support HTML5 export.
- Updates GitHub Action to export HTML5 and upload as a build artifact.
- Adds Cypress test to smoke test HTML5 export.
2024-03-29 19:36:44 +13:00
Leroy Hopson
b31861f171
Double max test attempts 2024-03-29 19:35:23 +13:00
Leroy Hopson
2b3d4533c4
Change exit action for HTML5
Previously HTML5 exports would reload the page on exit. This commit
changes the behaviour to go back to the previous page (if any) or close
the tab and/or window if there is no previous page.
2024-03-29 19:35:14 +13:00
Leroy Hopson
f8ab8ddd61
Update GDScript Toolkit 2024-03-29 19:34:01 +13:00
Leroy Hopson
f4db2d9c2e
Change target Godot version to v3.5-stable
Upgrade setup-godot action from v1 -> v2 which changes default Godot
version from 3.4 -> 3.5.
2024-03-29 19:19:08 +13:00
Leroy Hopson
7e65be4cf9
Fix typo in deprecated color name 2022-08-26 12:23:39 +12:00
Leroy Hopson
4f24f2bd37
Bump version to 2.2.0 2022-08-26 10:02:09 +12:00
Leroy Hopson
524c0e51c6
Update CHANGELOG 2022-08-26 10:01:30 +12:00
Leroy Hopson
95b66115c4
Update/deprecate theme item names
Updates theme names to be compatible with Godot 3.5 (no spaces),
consistent with other Godot theme item names (snake_case), and
match the color names listed on the
[ANSI escape code wikipedia page](https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit).

Deprecates the old names and warns users to change them.
2022-08-26 09:28:38 +12:00
Leroy Hopson
aee3efd8de
Update 3.4.x target version to 3.4.5 2022-08-25 12:37:41 +12:00
Leroy Hopson
b22343a05f
Retry tests
Tests sometimes fail on Ubuntu due to a race condition with the pulse
audio process and on macOS due to timing issues. These tests usually
pass on subsequent runs, so use the retry action to retry them in a
single run.
2022-08-24 09:54:14 +12:00
Leroy Hopson
1485a502ab
Use non-pinned version of setup-godot
Using the major version of the setup-godot action without specifying
minor and patch versions will allow us to start using the newest minor
and patch releases as soon as they are made available on the GitHub
marketplace.
2022-08-24 09:54:14 +12:00
Leroy Hopson
0fcc95c825
Remove space in project name: Godot Xterm -> GodotXterm 2022-08-23 14:49:36 +12:00
Leroy Hopson
6a6adb7294
Update CHANGELOG 2022-08-23 14:45:02 +12:00
Leroy Hopson
d45ea7a3cd
Update libtsm to not erase screen on palette change
Fixes #57.
Fixes #58.
2022-08-22 22:56:50 +12:00
Leroy Hopson
07f76f2956
Don't clone submodules for non build jobs
Submodules are only required for building the GDNative library or export
templates, otherwise we download the pre-built ones so don't need the
submodules.
2022-08-22 22:56:08 +12:00
Leroy Hopson
1110219cf7
Only restore submodules on exact match
Only restore git submodules if we have an exact match, otherwise we will
restore outdated submodules over newer ones, then save the outdated
version with the exact match after.
2022-08-22 22:56:02 +12:00
Leroy Hopson
344c04f9d8
Move terminal bell tests from unit -> integration
The bell tests rely on timers and yields, so are too slow to run as part
of the unit test suite.
2022-08-22 10:05:41 +12:00
Leroy Hopson
41525959e1
Deprecate undocumented get_master() method
This method was never officially documented and used only as a workaround for
issue #53. It also returns an instance of the undocumented and scruffily
implemented Pipe class that I would prefer to keep internal.

Now that #53 has been fixed, this method can be removed from the unofficial
public API, but deprecate it just in case. If someone was using it then it
is still possible (although not supported) to access the `_pipe` property of
`_pty_native`.
2022-08-22 10:05:41 +12:00
Leroy Hopson
6cd5facb98
Deprecate the cols and rows properties of Terminal
As cols and rows are read only (i.e. automatically determined by rect
and font size) there is no need for the properties to be exposed.
Instead, users can get the calculated cols and rows using the get_cols()
and get_rows() methods.
2022-08-22 10:05:36 +12:00
Leroy Hopson
f49410838c
Drop support for Godot 3.3.x 2022-08-22 10:02:50 +12:00
Leroy Hopson
c6e99ff5c2
Show plugin version on HTML5 demo
Shows the plugin version in addons/godot_xterm/plugin.cfg on the main
screen of the HTML5 demo.
2022-08-19 12:55:04 +12:00
Leroy Hopson
c02b869e2c
Update demo URL 2022-08-19 11:56:08 +12:00
Leroy Hopson
6e9cd130a7
Bump version to 2.1.1 2022-08-15 17:12:36 +12:00
Leroy Hopson
d1153dcaa4
Update CHANGELOG 2022-08-15 17:09:29 +12:00
Leroy Hopson
9ed6750b83
Fix unicode errors
Changes `write()` method of native pipe and terminal to accept a
PoolByteArray rather than String. This means that `get_string_from_utf8()`
is no longer called on data coming from PTY and being sent to Terminal.

The terminal state machine already has a UTF8 parser which maintains
its state across calls to `write()`. This means that we can write half
the bytes of a single unicode character in one call and the remaining half
in the next call and the state machine will parse it correctly.

On the other hand, the `get_string_from_utf8()` method of Godot's
PoolByteArray requires that the array contains completely valid UTF8,
otherwise we get errors such as "Unicode error: invalid skip".

The data coming from PTY can be arbitrarily split in the middle of a
unicode character meaning that we will sometimes get errors when calling
`get_string_from_utf8()` on it. This is more likely to occur when there
is a large amount of output (i.e. it's more likely to be split). In other
cases, the data might intentionally contain invalid unicode such as when
printing binary files or random data (e.g. `cat /bin/sh`, `cat /dev/random`).

We avoid these errors by passing the PoolByteArray data directly to the terminal
state machine.

In addition to fixing unicode errors, this commit:
- Prevents repeated calls to pipes `_read_cb()` method that would block Godot
  and result in a crash with the message "ERROR: All memory pool allocations
  are in use" that resulted from writing data to an ever-increasing number of
  PoolByteArrays before any of them could be freed. This could be triggered by
  running the `cat /dev/urandom` command after making the change to `write()`
  mentioned above.
- Prevents memory leaks by freeing libuv buffers after they have been copied
  to PoolByteArrays.

Fixes #55.
2022-08-15 17:09:29 +12:00
Leroy Hopson
054c7c9ad4
Ensure initial PTY size matches Terminal (if any)
If a PTY has a terminal_path set to a valid Terminal, then ensure that
the initial cols and rows of PTY match the cols and rows of the Terminal
when calling fork() or open(), otherwise PTY will output wrong-sized
data for the Terminal until resized.

Fixes #56.
2022-08-15 17:09:25 +12:00
Leroy Hopson
00a34a9177
Add missing links to terminal docs 2022-08-15 10:08:55 +12:00
Leroy Hopson
c3b2e1d5fa
Add VSCode debug launch configuration for main scene 2022-08-14 21:13:24 +12:00
Leroy Hopson
d27b0c57ce
Remove typo in docs 2022-08-14 21:13:18 +12:00
Leroy Hopson
d967fe6327
Fix relative links to PTY and Terminal diagrams 2022-08-10 23:51:40 +12:00
Leroy Hopson
6f89edc14e
Move documentation from wiki to main repo
Makes it easier to keep documentation up to date and can deploy with
GitHub pages.

README.md moved to docs/README.md and is shared with GitHub Pages home
page.
2022-08-10 23:13:05 +12:00