Add releases
This commit is contained in:
@@ -1,33 +1,64 @@
|
||||
# a3270
|
||||
|
||||
An Android TN3270 terminal emulator based on `lib3270j` / `j3270`, built with Jetpack Compose and ported using AI.
|
||||
[](https://git.hugfreevikings.wtf/rudi/a3270/actions)
|
||||
[](https://git.hugfreevikings.wtf/rudi/a3270/releases)
|
||||
[](https://developer.android.com)
|
||||
[](LICENSE)
|
||||
|
||||
## Repositories
|
||||
An **x3270-aligned IBM 3270 mainframe terminal emulator for Android**, written in Kotlin using **Jetpack Compose** and powered by the `lib3270j` protocol engine from [j3270](https://git.hugfreevikings.wtf/rudi/j3270). Designed for mobile access to IBM z/OS, z/VM, CMS, and TSO systems over TN3270 and TN3270E.
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Repositories
|
||||
|
||||
- **a3270 (Android App)**: https://git.hugfreevikings.wtf/rudi/a3270
|
||||
- **j3270 (Desktop App & `lib3270j` Core Library)**: https://git.hugfreevikings.wtf/rudi/j3270
|
||||
|
||||
`a3270` relies on the shared 3270 protocol library (`lib3270j`) provided by the `j3270` repository.
|
||||
|
||||
## CI/CD & Automated Builds
|
||||
---
|
||||
|
||||
Automated CI/CD is configured using Gitea Actions (`.gitea/workflows/build.yml`). On every push to `main` or pull request, the workflow automatically:
|
||||
1. Clones `a3270` and `j3270` (`lib3270j`).
|
||||
2. Configures JDK 21 and the Android SDK.
|
||||
3. Builds the debug APK (`a3270-debug.apk`).
|
||||
4. Uploads the resulting APK as a downloadable workflow artifact (`a3270-debug`).
|
||||
## 🚀 Quick Download & Install
|
||||
|
||||
You can download pre-built APKs directly from the **Actions** tab of the repository on Gitea.
|
||||
### Latest Standalone APK
|
||||
You can download ready-to-install Android APKs directly from releases or CI builds:
|
||||
|
||||
## Prerequisites
|
||||
- **[Download Latest Tagged Release (`a3270.apk`)](https://git.hugfreevikings.wtf/rudi/a3270/releases)**
|
||||
- **[Latest Nightly CI Artifacts](https://git.hugfreevikings.wtf/rudi/a3270/actions)** (Download under the latest successful workflow run)
|
||||
|
||||
### Installing `a3270`
|
||||
To install the APK on a connected Android device or emulator via `adb`:
|
||||
|
||||
```bash
|
||||
adb install -r a3270.apk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✨ Features
|
||||
|
||||
- **Modern Jetpack Compose UI**: Responsive, touch-optimized 3270 terminal screen rendering.
|
||||
- **TN3270 & TN3270E Protocol Support**: RFC 2355 compliant state machine, negotiation, Device-Type query, and SSL/TLS encryption via `lib3270j`.
|
||||
- **On-Screen Function Key Bar**: Quick-access touch bar for PF1–PF24, PA1–PA3, Enter, Clear, Reset, and Attn keys.
|
||||
- **IND$FILE File Transfer**: Full mobile UI for **CUT** and **DFT (DDM)** high-speed structured field file transfers with ASCII/binary translation, CRLF handling, and recfm/lrecl formatting for TSO, VM/CMS, and CICS.
|
||||
- **OIA Status Line**: Real-time Operator Information Area displaying connection state, keyboard lock, insert mode, cursor row/col, and LU name.
|
||||
- **Host Profile Storage**: Save and manage multiple mainframe connection profiles with custom ports, models, and SSL/TLS options.
|
||||
- **Background Session Persistence**: Android foreground service keeps your terminal session alive when multitasking.
|
||||
- **Terminal Models**:
|
||||
- Model 2 (24x80)
|
||||
- Model 3 (32x80)
|
||||
- Model 4 (43x80)
|
||||
- Model 5 (27x132)
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Building from Source
|
||||
|
||||
### Prerequisites
|
||||
- **Java Development Kit (JDK)**: JDK 17 or JDK 21
|
||||
- **Android SDK**: Android SDK with API 34 platforms and build-tools installed (`ANDROID_HOME` or `ANDROID_SDK_ROOT` set)
|
||||
|
||||
## Setup & Building
|
||||
- **Android SDK**: API 34 platforms and build-tools (`ANDROID_HOME` or `ANDROID_SDK_ROOT` set)
|
||||
|
||||
### 1. Clone Repositories Side-by-Side
|
||||
|
||||
For the easiest setup, clone both `j3270` and `a3270` into the same parent folder:
|
||||
|
||||
```bash
|
||||
@@ -46,15 +77,12 @@ cd a3270
|
||||
> ```
|
||||
|
||||
### 2. Build the Debug APK
|
||||
|
||||
You can build using the helper script:
|
||||
|
||||
Using the helper script:
|
||||
```bash
|
||||
./build.sh
|
||||
```
|
||||
|
||||
Or directly with Gradle Wrapper:
|
||||
|
||||
Or using Gradle Wrapper directly:
|
||||
```bash
|
||||
./gradlew assembleDebug
|
||||
```
|
||||
@@ -64,25 +92,50 @@ The compiled APK will be generated at:
|
||||
build/outputs/apk/debug/a3270-debug.apk
|
||||
```
|
||||
|
||||
## Deployment / Installation
|
||||
---
|
||||
|
||||
To install the debug APK onto a connected Android device or emulator via `adb`:
|
||||
## 🏷️ How to Tag & Publish (Beta) Releases
|
||||
|
||||
Releases can be published automatically to Gitea via Git tags:
|
||||
|
||||
```bash
|
||||
adb install -r build/outputs/apk/debug/a3270-debug.apk
|
||||
# 1. Create a version tag (stable or beta)
|
||||
git tag -a v0.1.0-beta.1 -m "Release v0.1.0-beta.1"
|
||||
|
||||
# Or a stable release:
|
||||
git tag -a v0.1.0 -m "Release v0.1.0"
|
||||
|
||||
# 2. Push the tag to Gitea
|
||||
git push origin v0.1.0-beta.1
|
||||
```
|
||||
|
||||
## Contributing
|
||||
Pushing any `v*` tag triggers the automated release workflow (`.gitea/workflows/release.yaml`), which:
|
||||
1. Automatically detects pre-releases (tags containing `beta`, `alpha`, `rc`, `pre`, `preview`, or `dev`) and marks them as **Pre-release** on Gitea.
|
||||
2. Builds the APK and packages it.
|
||||
3. Publishes a new Gitea Release with `a3270.apk` attached automatically.
|
||||
|
||||
Contributions are welcome!
|
||||
---
|
||||
|
||||
## 🔍 Topics & Discoverability
|
||||
|
||||
Suggested keywords/topics for repository indexing:
|
||||
`tn3270` · `tn3270e` · `ibm-3270` · `mainframe` · `terminal-emulator` · `android` · `android-app` · `jetpack-compose` · `kotlin` · `x3270` · `j3270` · `ind-file` · `file-transfer` · `ebcdic` · `z-vm` · `z-os` · `cms` · `tso` · `cics`
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
Contributions are welcome! Please feel free to open a bug report or feature request via the Gitea issue tracker.
|
||||
|
||||
I have contributed no code to this project, it was entirely written by LLMs with my guidance only.
|
||||
|
||||
## Acknowledgements
|
||||
---
|
||||
|
||||
- [j3270](https://git.hugfreevikings.wtf/rudi/j3270)
|
||||
- [x3270](https://x3270.miraheze.org/wiki/Main_Page)
|
||||
## 📜 Acknowledgements
|
||||
|
||||
- [j3270](https://git.hugfreevikings.wtf/rudi/j3270) — Desktop emulator and `lib3270j` protocol engine
|
||||
- [x3270](https://x3270.miraheze.org/wiki/Main_Page) — Reference C implementation and protocol specifications
|
||||
- [Antigravity](https://antigravity.google)
|
||||
- Claude Opus 4.6
|
||||
- Gemini 3.1 Pro (High)
|
||||
- Gemini 3.7 Flash (High)
|
||||
- Gemini 3.1 Pro
|
||||
- Gemini 3.7 Flash
|
||||
|
||||
Reference in New Issue
Block a user