Add releases
Build and Test a3270 / Build Android APK (push) Successful in 4m22s
Release a3270 / Build & Publish Release (push) Successful in 6m42s

This commit is contained in:
2026-08-20 19:27:55 -04:00
parent 4b3bf1bfce
commit c0b0ae3b74
6 changed files with 327 additions and 80 deletions
+82 -29
View File
@@ -1,33 +1,64 @@
# a3270
An Android TN3270 terminal emulator based on `lib3270j` / `j3270`, built with Jetpack Compose and ported using AI.
[![Build & Test](https://git.hugfreevikings.wtf/rudi/a3270/actions/workflows/build.yaml/badge.svg)](https://git.hugfreevikings.wtf/rudi/a3270/actions)
[![Latest Release](https://git.hugfreevikings.wtf/rudi/a3270/badges/release.svg)](https://git.hugfreevikings.wtf/rudi/a3270/releases)
[![Android](https://img.shields.io/badge/Android-API%2024%2B%20%7C%20Compose-green.svg)](https://developer.android.com)
[![License](https://img.shields.io/badge/License-MIT%20%2F%20BSD-green.svg)](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 PF1PF24, PA1PA3, 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