https://github.com/putdotio/taizn
A tiny CLI companion for interacting with Tizen ecosystem.
https://github.com/putdotio/taizn
Last synced: about 1 month ago
JSON representation
A tiny CLI companion for interacting with Tizen ecosystem.
- Host: GitHub
- URL: https://github.com/putdotio/taizn
- Owner: putdotio
- License: mit
- Created: 2026-05-10T15:17:15.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-10T19:50:33.000Z (about 1 month ago)
- Last Synced: 2026-05-10T21:06:31.403Z (about 1 month ago)
- Language: TypeScript
- Homepage:
- Size: 77.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
## Install
```bash
pnpm add -D @putdotio/taizn
```
Install the Tizen command-line tools and make sure `tizen` and `sdb` work
locally.
## Usage
Create `taizn.json` in the app directory, keep `.taizn/` ignored, then run:
```bash
pnpm exec taizn check
pnpm exec taizn package
pnpm exec taizn install
pnpm exec taizn run
```
Project files:
- `taizn.json`: app build, widget, signing, and variant config
- `.taizn/.env`: optional local secrets read by Node
- `.taizn/certificates/`: optional local author/distributor certs for `taizn profile`
- `.taizn/remote.json`: optional paired Samsung TV remote token
- `.taizn/build/`: generated package staging and output
## Commands
```bash
taizn check
taizn check --json
taizn apps
taizn apps put
taizn apps --json put
taizn launch GinifYRGmZ.putio
taizn prove GinifYRGmZ.putio
taizn prove --json GinifYRGmZ.putio
taizn profile
taizn package
taizn install
taizn run
taizn tv doctor
taizn tv doctor --json
taizn tv doctor --connect --json
taizn tv info
taizn tv info --json
taizn tv pair
taizn tv press KEY_ENTER
taizn tv press --json KEY_ENTER
taizn tv press --delay-ms 250 KEY_HOME KEY_DOWN KEY_ENTER
taizn --version
```
`check` verifies the configured Tizen CLI and `sdb`, then prints connected
targets without requiring `taizn.json`. Add `--json` to emit the configured
tool paths and connected targets for agents and scripts. `apps` lists installed
applications on the target, with an optional query filter. Add `--json` to emit
a structured inventory for agents and scripts. `launch` starts an already-installed
application by exact application ID, exact name, or a unique query. `prove`
checks the installed app inventory, launches the matched app, and prints a
compact proof transcript. Add `--json` when an agent or script needs structured
proof output. `profile` imports
`.taizn/certificates/author.p12` and
`.taizn/certificates/distributor.p12` into a Tizen security profile.
`package` builds and signs a `.wgt`. `install` packages and sideloads it.
`run` launches the configured variant application on the target. `tv` commands use
Samsung's websocket remote-control API to inspect a TV,
diagnose remote-control readiness, pair for a remote token, and send remote-control
key presses. Add `--json` to `tv doctor` for structured host/token/connection
diagnostics, to `tv info` for a structured TV capability snapshot, or to
`tv press` for a structured key-sequence receipt. See
[Samsung TV Remote](./docs/TV_REMOTE.md) for pairing, environment, and limits.
`tv press` accepts one key or a sequence of keys.
## Environment
Copy [.env.example](./.env.example) into `.taizn/.env` or export values in the
shell:
```bash
TAIZN_CERT_PASSWORD=...
TAIZN_DIST_PASSWORD=...
TAIZN_VARIANT=development
TAIZN_TARGET=:26101
TAIZN_TIZEN_CLI=~/tizen-studio/tools/ide/bin/tizen
TAIZN_SDB=~/tizen-studio/tools/sdb
TAIZN_TV_HOST=
TAIZN_TV_INFO_PORT=8001
TAIZN_TV_NAME=taizn
TAIZN_TV_PORT=8002
TAIZN_TV_PROTOCOL=wss
TAIZN_TV_TIMEOUT_MS=30000
TAIZN_TV_TOKEN=
```
`taizn tv` uses `TAIZN_TV_HOST`, or the host part of `TAIZN_TARGET` when no TV
host is set. `TAIZN_TV_INFO_PORT` controls the HTTP metadata endpoint; the
remote-control websocket still uses `TAIZN_TV_PORT`. `taizn tv pair` writes the
paired remote token to `.taizn/remote.json`; keep `.taizn/` ignored.
## Config
```json
{
"build": {
"command": ["pnpm", "build"],
"output": "dist",
"requiredFiles": ["main.css", "main.js"]
},
"signing": {
"certificateDir": ".taizn/certificates",
"profile": "my-tizen-profile"
},
"widget": {
"configXml": "platforms/tizen/config.xml",
"excludeFiles": ["js/main.js.map", "css/main.css.map"],
"indexHtml": "platforms/tizen/index.html",
"injectWebapis": true,
"rewriteAssetUrls": false,
"variants": {
"development": {
"applicationId": "ExampleDev.app",
"bundleName": "example-dev",
"icon": "platforms/tizen/icons/dev.png",
"name": "Example Dev",
"packageId": "ExampleDev"
},
"production": {
"applicationId": "Example.app",
"bundleName": "example",
"excludeFiles": ["js/main.js.LICENSE.txt"],
"icon": "platforms/tizen/icon.png",
"indexHtml": "platforms/tizen/hosted.html",
"injectWebapis": true,
"name": "Example",
"packageId": "Example",
"rewriteAssetUrls": false
}
}
}
}
```
Variant `indexHtml`, `injectWebapis`, and `rewriteAssetUrls` values override
the top-level `widget` values. Variant `excludeFiles` values are added to
top-level `widget.excludeFiles`. Use them when development packages should
bundle local app assets but production packages should load hosted asset URLs.
## Docs
- [Contributing](./CONTRIBUTING.md)
- [Distribution](./docs/DISTRIBUTION.md)
- [Samsung TV Remote](./docs/TV_REMOTE.md)
- [Security](./SECURITY.md)
## Repo Internals
- [Agent guide](./AGENTS.md)
- Effect source for local API research lives in ignored `.repos/effect`; dependency installs bootstrap it outside CI.
## Contributing
See [Contributing](./CONTRIBUTING.md) for setup, checks, and pull request flow.
## License
[MIT](./LICENSE)