
tea/gui is the graphical app complement to [`tea/cli`].
Under the hood tea/gui installs and manages your packages with [`tea/cli`]
while exposing additional functionality, features and informational touches
that complement and expand upon the nature of package management.
To install the gui, visit: and download the latest
version. The gui auto-updates itself.
# Contributing to `tea/gui`
If you have suggestions or ideas, start a [discussion]. If we agree, we’ll
move it to an issue. Bug fixes straight to pull request or issue please!
## Anatomy
tea/gui is a Svelte Electon app. The electron “backend” can be found in
`modules/desktop`, the Svelte “frontend” in `modules/ui`. The following
technologies are used:
- [svelte](https://svelte.dev/)
- [tailwind](https://tailwindcss.com/)
- [fontastic](https://fontastic.me)
- [electron](http://electronjs.org)
# Hacking on `tea/gui`
```sh
xc setup # only required once
xc build # only required if you modify the backend
xc dev # opens the app in dev mode
```
> Make sure to run `xc prettier` before submitting pull-requests.
# Tasks
The following can be run with [`xc`], eg. `xc build`.
## Setup
Setup ensures that required configuration placeholder files are present and installs dependencies.
```sh
if [ ! -e modules/desktop/electron/config.json ]; then
echo '{}' > modules/desktop/electron/config.json
fi
if [ ! -e modules/desktop/.env ]; then
cp modules/desktop/.env.example modules/desktop/.env
fi
pnpm install
pnpm run -r prepare
```
## Build
```sh
pnpm install
pnpm build:desktop
```
## Dev
```sh
pnpm install
pnpm dev
```
## Prettier
```sh
pnpm run --reporter append-only -r format
```
## Dist
```sh
pnpm install
pnpm --filter tea exec pnpm predist
pnpm --filter tea exec pnpm dist
```
## Check
Runs the typescript compiler and linter.
```sh
pnpm run -r check
pnpm run -r lint
```
## Bump
Inputs: PRIORITY
```sh
if ! git diff-index --quiet HEAD --; then
echo "error: dirty working tree" >&2
exit 1
fi
if [ "$(git rev-parse --abbrev-ref HEAD)" != "main" ]; then
echo "error: requires main branch" >&2
exit 1
fi
V=$(git describe --tags --abbrev=0 --match "v[0-9]*.[0-9]*.[0-9]*")
V=$(tea semverator bump $V $PRIORITY)
if ! grep -F "\"version\": \"$V\",$" modules/desktop/package.json; then
sed -i.bak -e "s/\"version\": .*,$/\"version\": \"$V\",/" modules/desktop/package.json
rm modules/desktop/package.json.bak
git add modules/desktop/package.json
git commit -m "bump $V" --gpg-sign
fi
git push origin main
tea gh release create "v$V"
```
# Dependencies
[`tea/cli`] will automagically make these available to your environment.
| Project | Version |
|-----------------------------------|-----------|
| nodejs.org | =18.15.0 |
| pnpm.io | =7.18.2 |
| xcfile.dev | >=0.0.110 |
| python.org | ^3.10 |
[`tea/cli`]: https://github.com/teaxyz/cli
[`xc`]: https://xcfile.dev
[discussion]: https://github.com/orgs/teaxyz/discussions