Add releases
Build and Test j3270 / Build JAR & Run Tests (push) Successful in 1m1s

This commit is contained in:
2026-08-20 19:19:05 -04:00
parent ba93745639
commit ac59ae1232
3 changed files with 263 additions and 15 deletions
+95 -15
View File
@@ -1,30 +1,110 @@
# j3270
An x3270 based emulator ported to Java using AI
[![Build & Test](https://git.hugfreevikings.wtf/rudi/j3270/actions/workflows/build.yaml/badge.svg)](https://git.hugfreevikings.wtf/rudi/j3270/actions)
[![Latest Release](https://git.hugfreevikings.wtf/rudi/j3270/badges/release.svg)](https://git.hugfreevikings.wtf/rudi/j3270/releases)
[![Java](https://img.shields.io/badge/Java-11%20%7C%2017%20%7C%2021-blue.svg)](https://adoptium.net)
[![License](https://img.shields.io/badge/License-MIT%20%2F%20BSD-green.svg)](LICENSE)
An **x3270-aligned IBM 3270 mainframe terminal emulator** written in pure Java. Designed for high compatibility with IBM z/OS, z/VM, CMS, and TSO systems over TN3270 and TN3270E.
## Deployment
---
To build your own jar you can read or use run.sh
## 🚀 Quick Download & Run
### Latest Standalone JAR
You can download the ready-to-run executable JAR directly from the releases or CI builds:
- **[Download Latest Tagged Release (`j3270.jar`)](https://git.hugfreevikings.wtf/rudi/j3270/releases)**
- **[Latest Nightly CI Artifacts](https://git.hugfreevikings.wtf/rudi/j3270/actions)** (Download under the latest successful workflow run)
### Running `j3270`
Requires **Java 11 or higher** (Java 11, 17, 21+):
```bash
./run.sh
# Launch interactive GUI
java -jar j3270.jar
# Launch with custom configuration file
java -jar j3270.jar -c config.ini
# Launch directly from source runner
./run.sh
```
Or from the jar [with optional config]
---
## ✨ Features
- **TN3270 & TN3270E Protocol Support**: RFC 2355 compliant state machine, negotiation, Device-Type query, and SSL/TLS encryption.
- **IND$FILE File Transfer**: Full support for both **CUT** and **DFT (DDM)** high-speed structured field transfers with ASCII/binary translation, CRLF handling, and recfm/lrecl formatting for TSO, VM/CMS, and CICS.
- **z/VM & Line-Mode Support**: Proper SSCP-LU and unformatted line handling (`CP TERM CONMODE 3270` supported).
- **APL & Graphic Escape**: Comprehensive box-drawing and math symbol character rendering.
- **Terminal Models**:
- Model 2 (24x80)
- Model 3 (32x80)
- Model 4 (43x80)
- Model 5 (27x132)
- **Zero-Dependency Core**: Modular architecture separated into:
- `lib3270j`: Reusable Java 3270 protocol, data stream parser, charset translation, and telnet state machine.
- `j3270`: Desktop Swing user interface and session management.
---
## 🛠️ Building from Source
### Standalone Build (No Gradle Required)
The project includes self-contained, portable build scripts:
```bash
java -jar j3270.jar [-c config.ini]
# Build executable JAR in 2 seconds:
sh ./build_all.sh
# Run all 25 automated unit tests in ~130ms:
sh ./test_all.sh
```
## Contributing
The resulting standalone JAR is created at `build/j3270.jar`.
Contributions are welcome!
### Gradle Build (Optional)
```bash
./gradlew build
./gradlew test
```
I have contributed no code to this project, it was entirely written by LLMs with my guidance only.
---
## Acknowledgements
## 🏷️ How to Tag & Publish Releases
- [x3270](https://x3270.miraheze.org/wiki/Main_Page)
- [Antigravity](https://antigravity.google)
- Claude Opus 4.6
- Gemini 3.1 Pro (High)
Releases can be published automatically to Gitea via Git tags:
```bash
# 1. Create a version tag
git tag -a v0.1.0 -m "Release v0.1.0"
# 2. Push the tag to Gitea
git push origin v0.1.0
```
Pushing any `v*` tag triggers the automated release workflow (`.gitea/workflows/release.yaml`), which runs tests, builds the JAR, and publishes a new Gitea Release with `j3270.jar` attached automatically.
---
## 🔍 Topics & Discoverability
Suggested keywords/topics for repository indexing:
`tn3270` · `tn3270e` · `ibm-3270` · `mainframe` · `terminal-emulator` · `x3270` · `ind-file` · `file-transfer` · `ebcdic` · `z-vm` · `z-os` · `cms` · `tso` · `cics` · `java` · `desktop-app`
---
## 🤝 Contributing
Contributions and issue reports are welcome! Please feel free to open a bug report or feature request via the Gitea issue tracker.
---
## 📜 Acknowledgements
- [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