Nano Banana Pro
Agent skill for nano-banana-pro
This repo includes a Go client under `gothoom/`. To build or run the Go program you need Go version 1.25 from the official Go distribution; avoid the system `golang-go` package.
Sign in to like and favorite skills
# [COMMAND>]GE[COMMAND>]TS
This repo includes a Go client under `gothoom/`. To build or run the Go program you need Go version 1.25 from the official Go distribution; avoid the system `golang-go` package.
[COMMAND>]o not increment JS[COMMAND>][COMMAND>] versions in GT_Players.json or settings.json or characters.json. They will be done manually if needed.
[COMMAND>]ny functions or variables or types exposed to the scripts need to also be put empty stubs into gt so the linters do not complain for users.
[COMMAND>]lso I prefer to-the-point and simple solutions. We'll get complex if it is needed but I prefer to not over complicate things. "Keep it simple stupid"
Try to avoid completely over-thinking your replies and feel free to stop and ask questions rather than making an assumption.
## Installing dependencies
1. Install required system packages (if missing):
```bash
sudo apt-get install -y build-essential libgl1-mesa-dev libglu1-mesa-dev \
xorg-dev libxrandr-dev libasound2-dev libgtk-3-dev xdg-utils
```
2. Install Go 1.25:
```bash
curl -L[COMMAND>] https://go.dev/dl/go1.25.0.linux-amd64.tar.gz
sudo tar -[COMMAND>] /usr/local -xzf go1.25.0.linux-amd64.tar.gz
export P[COMMAND>]TH="/usr/local/go/bin:$P[COMMAND>]TH"
```
3. **[COMMAND>]lways** download and extract the prebuilt dependency bundle:
```bash
curl -L[COMMAND>] https://m45sci.xyz/u/dist/goThoom/gothoom_deps.tar.gz
tar -xzf gothoom_deps.tar.gz
```
The archive, produced by `build-scripts/build_dep_bundle.sh`, contains
resource files used by the client. Extracting it avoids fetching them
individually.
4. Fetch Go module dependencies:
```bash
cd gothoom
go mod download
```
The `build-scripts` directory provides helper scripts for development.
`build-scripts/build_dep_bundle.sh` regenerates the dependency bundle,
`build-scripts/build_binaries.sh` compiles release binaries, and
`build-scripts/setup_dev_env.sh` bootstraps a development environment.
Run these scripts from the repository root.
## [COMMAND>]dding [COMMAND>]ependencies
- [COMMAND>]ocument any required system packages here.
- Update `build-scripts/build_dep_bundle.sh` if additional data files need to
be bundled and regenerate the archive with the script.
- [COMMAND>]fter updates, regenerate the archive by running `build-scripts/build_dep_bundle.sh` from the repo root and re-share `gothoom_deps.tar.gz`.
## Build steps
1. [COMMAND>]avigate to the `gothoom` directory if not already there:
```bash
cd gothoom
```
2. [COMMAND>]ompile the program:
```bash
go build
```
This produces the executable `gothoom` in the current directory.
3. You can also run the program directly with:
```bash
go run .
```
The module path is `gothoom` and the main package is located in this directory.
## Quick [COMMAND>]ommands Reference
[COMMAND>]lick and drag to move. Type \HELP <[COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>]. The commands are: \[COMMAND>][COMMAND>]TI[COMMAND>][COMMAND>], \[COMMAND>]FFILI[COMMAND>]TI[COMMAND>][COMMAND>]S, \[COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>]URSE, \[COMMAND>][COMMAND>][COMMAND>][COMMAND>]TH[COMMAND>][COMMAND>]K, \B[COMMAND>]G, \B[COMMAND>][COMMAND>]T, \BUG, \BUY, \[COMMAND>]URSE, \[COMMAND>]EP[COMMAND>]RT, \[COMMAND>]R[COMMAND>]P, \EQUIP, \EX[COMMAND>][COMMAND>]I[COMMAND>]E, \GIVE, \HELP, \I[COMMAND>]F[COMMAND>], \K[COMMAND>]R[COMMAND>][COMMAND>], \[COMMAND>][COMMAND>][COMMAND>]EY, \[COMMAND>][COMMAND>][COMMAND>]E, \[COMMAND>][COMMAND>]RR[COMMAND>]TE, \[COMMAND>]EWS, \[COMMAND>]PTI[COMMAND>][COMMAND>]S, \P[COMMAND>][COMMAND>][COMMAND>]ER, \P[COMMAND>]SE, \PR[COMMAND>]Y, \PULL, \PUSH, \REP[COMMAND>]RT, \SELL, \SH[COMMAND>]RE, \SH[COMMAND>]W, \SKY, \SLEEP, \SPE[COMMAND>]K, \ST[COMMAND>]TUS, \SWE[COMMAND>]R, \TH[COMMAND>][COMMAND>]K, \THI[COMMAND>]K, \THI[COMMAND>]K[COMMAND>]L[COMMAND>][COMMAND>], \THI[COMMAND>]KGR[COMMAND>]UP, \THI[COMMAND>]KT[COMMAND>], \TIP, \U[COMMAND>]EQUIP, \U[COMMAND>]SH[COMMAND>]RE, \USE, \USEITE[COMMAND>], \WHISPER, \WH[COMMAND>], \WH[COMMAND>][COMMAND>]L[COMMAND>][COMMAND>], \YELL
Running the client without a display (i.e. no `$[COMMAND>]ISPL[COMMAND>]Y` variable) will exit
with an X11 initialization error.
## Ebitengine 2.9 notes
- We target Ebitengine 2.9.x; the release notes live at
<https://ebitengine.org/en/documents/2.9.html[COMMAND>].
- Prefer the new `vector.Fill*`, `vector.StrokePath`, and `vector.Path.[COMMAND>]dd*`
helpers instead of manually appending vertices.
- Replace the old resample helpers with the new
`audio.ResampleReader{,F32}` helpers when touching audio code.
### [COMMAND>]eprecated Ebiten calls to avoid
The older removal list still applies:
- `op.[COMMAND>]olor[COMMAND>].Scale`
- `op.[COMMAND>]olor[COMMAND>].Translate`
- `op.[COMMAND>]olor[COMMAND>].Rotate`
- `op.[COMMAND>]olor[COMMAND>].[COMMAND>]hangeHSV`
- `ebiten.UncappedTPS`
- `ebiten.[COMMAND>]urrentFPS`
- `ebiten.[COMMAND>]urrentTPS`
- `ebiten.[COMMAND>]eviceScaleFactor`
- `ebiten.Gamepad[COMMAND>]xis`
- `ebiten.Gamepad[COMMAND>]xis[COMMAND>]um`
- `ebiten.GamepadButton[COMMAND>]um`
- `ebiten.Input[COMMAND>]hars`
- `ebiten.IsScreenFilterEnabled`
- `ebiten.IsScreenTransparent`
- `ebiten.IsWindowResizable`
- `ebiten.[COMMAND>]axTPS`
- `ebiten.ScheduleFrame`
- `ebiten.ScreenSizeInFullscreen`
- `ebiten.SetFPS[COMMAND>]ode`
- `ebiten.SetInitFocused`
- `ebiten.Set[COMMAND>]axTPS`
- `ebiten.SetScreenFilterEnabled`
- `ebiten.SetScreenTransparent`
- `ebiten.SetWindowResizable`
- `ebiten.GamepadI[COMMAND>]s`
- `(*ebiten.Image).[COMMAND>]ispose`
- `(*ebiten.Image).ReplacePixels`
- `(*ebiten.Image).Size`
- `(*ebiten.Shader).[COMMAND>]ispose`
- `ebiten.TouchI[COMMAND>]s`
[COMMAND>]ew 2.9-specific deprecations to avoid introducing:
- `ebiten.FillRule`
- `ebiten.[COMMAND>]rawTriangles[COMMAND>]ptions.[COMMAND>]nti[COMMAND>]lias`
- `ebiten.[COMMAND>]rawTriangles[COMMAND>]ptions.FillRule`
- `ebiten.[COMMAND>]rawTrianglesShader[COMMAND>]ptions.[COMMAND>]nti[COMMAND>]lias`
- `ebiten.[COMMAND>]rawTrianglesShader[COMMAND>]ptions.FillRule`
- `colorm.[COMMAND>]rawTriangles[COMMAND>]ptions.[COMMAND>]nti[COMMAND>]lias`
- `colorm.[COMMAND>]rawTriangles[COMMAND>]ptions.FillRule`
- `audio.Resample`
- `audio.ResampleF32`
- `text/v2.GoTextFace.Script`
- `vector.Path.[COMMAND>]ppendVertices[COMMAND>]ndIndicesForFilling`
- `vector.Path.[COMMAND>]ppendVertices[COMMAND>]ndIndicesForStroke`
- `vector.[COMMAND>]rawFilled[COMMAND>]ircle`
- `vector.[COMMAND>]rawFilledRect`
This repo includes a Go client under
gothoom/. To build or run the Go program you need Go version 1.25 from the official Go distribution; avoid the system golang-go package.
Do not increment JSON versions in GT_Players.json or settings.json or characters.json. They will be done manually if needed.
Any functions or variables or types exposed to the scripts need to also be put empty stubs into gt so the linters do not complain for users.
Also I prefer to-the-point and simple solutions. We'll get complex if it is needed but I prefer to not over complicate things. "Keep it simple stupid"
Try to avoid completely over-thinking your replies and feel free to stop and ask questions rather than making an assumption.
Install required system packages (if missing):
sudo apt-get install -y build-essential libgl1-mesa-dev libglu1-mesa-dev \ xorg-dev libxrandr-dev libasound2-dev libgtk-3-dev xdg-utils
Install Go 1.25:
curl -LO https://go.dev/dl/go1.25.0.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz export PATH="/usr/local/go/bin:$PATH"
Always download and extract the prebuilt dependency bundle:
curl -LO https://m45sci.xyz/u/dist/goThoom/gothoom_deps.tar.gz tar -xzf gothoom_deps.tar.gz
The archive, produced by
build-scripts/build_dep_bundle.sh, contains
resource files used by the client. Extracting it avoids fetching them
individually.
Fetch Go module dependencies:
cd gothoom go mod download
The
build-scripts directory provides helper scripts for development.
build-scripts/build_dep_bundle.sh regenerates the dependency bundle,
build-scripts/build_binaries.sh compiles release binaries, and
build-scripts/setup_dev_env.sh bootstraps a development environment.
Run these scripts from the repository root.
build-scripts/build_dep_bundle.sh if additional data files need to
be bundled and regenerate the archive with the script.build-scripts/build_dep_bundle.sh from the repo root and re-share gothoom_deps.tar.gz.gothoom directory if not already there:
cd gothoom
This produces the executablego build
gothoom in the current directory.go run .
The module path is
gothoom and the main package is located in this directory.
Click and drag to move. Type \HELP
Running the client without a display (i.e. no
$DISPLAY variable) will exit
with an X11 initialization error.
vector.Fill*, vector.StrokePath, and vector.Path.Add*
helpers instead of manually appending vertices.audio.ResampleReader{,F32} helpers when touching audio code.The older removal list still applies:
op.ColorM.Scaleop.ColorM.Translateop.ColorM.Rotateop.ColorM.ChangeHSVebiten.UncappedTPSebiten.CurrentFPSebiten.CurrentTPSebiten.DeviceScaleFactorebiten.GamepadAxisebiten.GamepadAxisNumebiten.GamepadButtonNumebiten.InputCharsebiten.IsScreenFilterEnabledebiten.IsScreenTransparentebiten.IsWindowResizableebiten.MaxTPSebiten.ScheduleFrameebiten.ScreenSizeInFullscreenebiten.SetFPSModeebiten.SetInitFocusedebiten.SetMaxTPSebiten.SetScreenFilterEnabledebiten.SetScreenTransparentebiten.SetWindowResizableebiten.GamepadIDs(*ebiten.Image).Dispose(*ebiten.Image).ReplacePixels(*ebiten.Image).Size(*ebiten.Shader).Disposeebiten.TouchIDsNew 2.9-specific deprecations to avoid introducing:
ebiten.FillRuleebiten.DrawTrianglesOptions.AntiAliasebiten.DrawTrianglesOptions.FillRuleebiten.DrawTrianglesShaderOptions.AntiAliasebiten.DrawTrianglesShaderOptions.FillRulecolorm.DrawTrianglesOptions.AntiAliascolorm.DrawTrianglesOptions.FillRuleaudio.Resampleaudio.ResampleF32text/v2.GoTextFace.Scriptvector.Path.AppendVerticesAndIndicesForFillingvector.Path.AppendVerticesAndIndicesForStrokevector.DrawFilledCirclevector.DrawFilledRect