https://github.com/xero/text0wnz
ππ€πͺπ§ ππ§π€π¬π¨ππ§ ππ¨ π©ππ πππ£π«ππ¨. Draw, edit, and collaborate on ANSI, ASCII, NFO, and XBIN art in a retro text art editor rebooted for the modern web. Offline-first or connect for real-time sessions. Crafted for both keyboard-centric artists and creators using a mouse or touch - on any device.
https://github.com/xero/text0wnz
ansi art ascii ascii-art collaborative editor graphic-design-software graphics-editor nfo offline-first progressive-web-app scene server text-art text-mode textart txt website xbin
Last synced: about 14 hours ago
JSON representation
ππ€πͺπ§ ππ§π€π¬π¨ππ§ ππ¨ π©ππ πππ£π«ππ¨. Draw, edit, and collaborate on ANSI, ASCII, NFO, and XBIN art in a retro text art editor rebooted for the modern web. Offline-first or connect for real-time sessions. Crafted for both keyboard-centric artists and creators using a mouse or touch - on any device.
- Host: GitHub
- URL: https://github.com/xero/text0wnz
- Owner: xero
- License: mit
- Created: 2023-07-07T15:15:44.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-05-03T05:35:24.000Z (about 2 months ago)
- Last Synced: 2026-05-03T06:34:00.152Z (about 2 months ago)
- Topics: ansi, art, ascii, ascii-art, collaborative, editor, graphic-design-software, graphics-editor, nfo, offline-first, progressive-web-app, scene, server, text-art, text-mode, textart, txt, website, xbin
- Language: JavaScript
- Homepage: https://text.0w.nz
- Size: 5.89 MB
- Stars: 117
- Watchers: 2
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
- awesome-textmode - text0wnz
README
# teXt0wnz
> ### _Your browser is the canvas_
A retro text art editor rebooted for the modern web. Draw, edit, and collaborate on ANSI, ASCII, NFO, and XBIN files. Offline-first with auto-save/restore via local storage, plus an optional self-hosted server component enabling real-time, multi-user sessions. Crafted for keyboard-centric artists and creators using mouse or touch, _on any device_. Built with modern tools and automated testing for a seamless experience for text artists and developers.

### Draw in your browser now!
| Domain | Status |
|:------------------------------------|:---------------------------------------------------|
| **https://text.0w.nz** | The main domain. Collab server may be available |
| **https://xero.github.io/text0wnz** | Github Pages version of the site. No collab server |
[](https://github.com/xero/text0wnz/blob/main/LICENSE)
[](https://github.com/xero/teXt0wnz/releases/latest)
[](https://github.com/xero/teXt0wnz/)
[](https://github.com/xero/text0wnz/graphs/commit-activity)
[](https://github.com/xero/text0wnz/commits/main/)
[](https://github.com/xero/teXt0wnz/blob/main/OSSMETADATA)
[](https://github.com/xero/teXt0wnz/actions/workflows/test-suite.yml?query=branch%3Amain)
[](https://github.com/xero/text0wnz/deployments)
[](https://github.com/xero/text0wnz/wiki)
[](https://validator.schema.org/#url=https%3A%2F%2Fraw.githubusercontent.com%2Fxero%2FteXt0wnz%2Frefs%2Fheads%2Fmain%2Fsrc%2Findex.html)
[](https://pagespeed.web.dev/analysis/https-text-0w-nz/eo49m2s0eo?hl=en-US&form_factor=desktop)
[](https://bun.com)
[](https://github.com/xero/teXt0wnz/blob/main/eslint.config.js)
[](https://github.com/xero/teXt0wnz/blob/main/.prettierrc)
[](https://16colo.rs)
[](https://asciiarena.se)
> ### ,-'2_,-'2_,-'2_,-'2_,-'2_,-'2_,-'2_,-'2_,-'2_,-'2_,-'2_,-'2_
>
> # Table o' Contents
>
> - [Features](#features)
> - [File Types](#supported-file-types)
> - [Browser Support](#browser-support)
> - [Documentation](#documentation)
> - [Drawing & Editing Tools](#drawing--editing-tools)
> - [Key-bindings & Mouse/Touch Controls](#key-bindings--mousetouch-controls)
> - [Tips & Workflow](#tips--workflow)
> - [Build & Development](#build--development)
> - [Collaborative Server](#collaborative-server)
> - [Docker Containerization](#docker-containerization)
> - [Testing Suite](#testing-suite)
> - [Troubleshooting](#troubleshooting)
> - [Project History](#project-history)
> - [License & Greetz](#license--greetz)
>
> ### "7_/"7_/"7_/"7_/"7_/"7_/"7_/"7_/"7_/"7_/"7_/"7_/"7_/"7_/"
## Features
- **Web-based text art drawing, also works offline as a PWA**
- No install required!
- But easily [installed as a Progressive Web Application](docs/install-pwa.md) to your device
- **Comprehensive keyboard shortcuts and mouse controls**
- Draw using the keyboard, mouse, or touch screen
- **Classic and modern fonts**
- Over 100 fonts from IBM PCs, Amiga, C64, and many more vintage/custom
- **Full suite of drawing tools:**
- Keyboard, freehand brushes, fills, shapes, selection, and mirror mode
- **Advanced color management**
- 16-color ANSI, iCE colors, real-time preview, color conflict resolution
- Custom XBIN color palette support and selection
- **Supported file types:**
- Import: ANSI, BIN, XBIN, NFO, DIZ, UTF-8 TXT
- Export: all of the above and PNG
- **Multi-platform file opening**
- Desktop: OS "Open with" integration (Chrome/Edge)
- Android: Share sheet integration
- iPad+iOS: Enhanced file picker
- Drag-and-drop support for everyone!
- **Canvas operations:**
- Undo/redo, canvas resizing, font selection, and full SAUCE metadata support
- **Editor options:**
- Canvas zoom, light/dark mode, and grid overlay
- **Auto Save/Restore**
- Editor Setting saved to local storage for a consistent drawing sessions
- Artwork and undo history saved to IndexedDB as you draw, auto-reloads when the app is opened
- Optimized binary data storage packing for efficient canvas persistence
- **Collaborative server mode**
- For real-time multi-user editing
- Optional and opt-in by users. See: [Privacy](docs/privacy.md)
- **Build tools:**
- Bun, Vite, PostCSS
- **Automated tests:**
- Playwright, Vitest, Testing Library
- **Robust linting and formatting:**
- Eslint and Prettier
## Supported File Types
| Extension | Description | Import | Export | [Sauce](docs/sauce-format.md) |
|:----------------|:---------------------------------------|:-----|:-----|:-----|
| **`.ans`** | ANSI art | ββββ | ββββ | ββββ |
| **`.utf8.ans`** | UTF-8 ANSI for modern terminals | ββββ | ββββ | |
| **`.bin`** | DOS-era binary format | ββββ | ββββ | ββββ |
| **`.xb`** | [XBIN](docs/xb-format.md) format | ββββ | ββββ | ββββ |
| **`.nfo`** | Scene release format | ββββ | ββββ | ββββ |
| **`.diz`** | FILE_ID.DIZ archive metadata files | ββββ | | ββββ |
| **`.txt`** | ASCII or other plain text | ββββ | ββββ | |
| **`.png`** | Artwork rendered as an image | | ββββ | |
## Browser Support
| Browser | Chrome | Firefox | Safari | Edge | Opera | iOS | iPadOS | Android |
|:------------------|:-------|:--------|:--------|:-------|:-------|:--------|:-------|:--------|
| Last Updated
[2025-11-20](https://github.com/Fyrd/caniuse) |
|
|
|
|
|
|
|
|
| **Supported** | 95.0+ | 93.0+ | 15.0+ | 95.0+ | 81.0+ | 15.0+ | 15.0+ | 95.0+ |
| **Latest Dev** | Canary | Nightly | Preview | Dev | - | - | - | - |
| _**Unsupported**_ | < 94.x | < 92.x | < 14.x | < 94.x | < 80.x | < 14.x | < 14.x | < 94.x |
## Documentation
> The **[docs](docs/)** folder contains raw markdown documentation files
>
> The **[wiki](https://github.com/xero/text0wnz/wiki)** renders these files into easier to read webpages
**Application Guides**
- **[Editor Manual](docs/manual.md) - Visual guide to the Frontend application** [**β΅**](https://github.com/xero/text0wnz/wiki/manual)
- [Key bindings](docs/manual.md#key-bindings-summary) - Hot keys reference guide [**β΅**](https://github.com/xero/text0wnz/wiki/manual#key-bindings-summary)
- [Collaboration Server](docs/collaboration-server.md) - Backend real-time collaboration server [**β΅**](https://github.com/xero/text0wnz/wiki/collaboration-server)
- [Architecture](docs/architecture.md) - System architecture and design overview [**β΅**](https://github.com/xero/text0wnz/wiki/architecture)
- [PWA Install](docs/install-pwa.md) - Guide to app installing and OS integration for multiple platforms [**β΅**](https://github.com/xero/text0wnz/wiki/install-pwa)
- [Privacy Policy](docs/privacy.md) - Privacy and data handling policy [**β΅**](https://github.com/xero/text0wnz/wiki/privacy)
- [Security Policy](docs/security.md) - Vulnerability reporting & threat modeling [**β΅**](https://github.com/xero/text0wnz/wiki/security)
**Development Guides**
- [Project Structure](docs/project-structure.md) - File and module organization guide [**β΅**](https://github.com/xero/text0wnz/wiki/project-structure)
- [Building and Developing](docs/building-and-developing.md) - Development workflow and build process [**β΅**](https://github.com/xero/text0wnz/wiki/building-and-developing)
- [Testing](docs/testing.md) - Triple headed testing guide (unit, dom, & e2e) [**β΅**](https://github.com/xero/text0wnz/wiki/testing)
- [CI/CD Pipeline](docs/cicd.md) - Continuous integration and deployment [**β΅**](https://github.com/xero/text0wnz/wiki/cicd)
- [WebServer Configuration](docs/webserver-configuration.md) - WebServer setup and configuration [**β΅**](https://github.com/xero/text0wnz/wiki/webserver-configuration)
- [Docker](docs/docker.md) - Container deployment guide [**β΅**](https://github.com/xero/text0wnz/wiki/docker)
- [Other Tools](docs/other-tools.md) - Additional development and deployment tools [**β΅**](https://github.com/xero/text0wnz/wiki/other-tools)
**Technical Specifications**
- [SAUCE Format](docs/sauce-format.md) - SAUCE metadata format specification [**β΅**](https://github.com/xero/text0wnz/wiki/sauce-format)
- [XBin Format](docs/xb-format.md) - XBin file format specification [**β΅**](https://github.com/xero/text0wnz/wiki/xb-format)
**Supplemental**
- [Fonts](docs/fonts.md) - Complete font reference and previews [**β΅**](https://github.com/xero/text0wnz/wiki/fonts)
- [Logos](docs/logos.md) - ASCII art logos for the project [**β΅**](https://github.com/xero/text0wnz/wiki/logos)
- [Examples](docs/examples/) - Sample artwork to view and edit
- ANSI artwork by [xeR0](https://16colo.rs/artist/xero)
- XBin artwork by [Hellbeard](https://16colo.rs/artist/hellbeard)
> [!NOTE]
> **` β΅ `** links to the wiki version of a document
## Drawing & Editing Tools
| Tool Name | Description |
|:-----------------------|:-------------------------------------------------------------------------------|
| **Keyboard Mode** | Type characters onto the canvas, using full keyboard navigation |
| **Half Block Brush** | Draw half-blocks with the mouse or touchscreen, pressure-sensitive |
| **Shading Brush** | Draw shading blocks with the mouse or touchscreen, 'reduce mode' with shift |
| **Character Brush** | Draw any ASCII/extended character in the font using a mouse, includes a picker |
| **Fill Tool** | Flood fill for color/text, smart attribute handling |
| **Colorizer** | Paint colors only, hold alt for background colors |
| **Line Tool** | Draw straight lines, with color conflict resolution |
| **Square/Circle Tool** | Draw rectangles/circles/ellipses, outline or filled, with a real-time preview |
| **Selection Tool** | Select, move, copy, flip, manipulate rectangular areas |
| **Sample Tool** | Color picker for quick selection from artwork |
## Key Bindings & Mouse/Touch Controls
**Main Tool Shortcuts:**
| Key | Tool/Action |
|:----|:-----------------------|
| `k` | Keyboard Mode |
| `f` | Freestyle (half-block) |
| `b` | Character Brush |
| `n` | Fill Tool |
| `a` | Attribute Brush |
| `g` | Grid Toggle |
| `i` | iCE Colors Toggle |
| `m` | Mirror Mode |
**Color & Character:**
| Key | Action |
|:-----------|:-----------------------------------|
| `d` | Reset colors to default |
| `q` | Swap foreground/background |
| `0`β`7` | Select basic color |
| `F1`β`F12` | Insert block/character (see below) |
**File & Canvas:**
| Combo | Action |
|:----------------------------------------- |:---------------------------|
| `ctrl z` / `ctrl y` | Undo / Redo |
| `ctrl x`/`ctrl c`/`ctrl v`/`ctrl shift v` | Cut/Copy/Paste/SystemPaste |
| `ctrl delete` | Delete selection |
**Navigation (Keyboard Mode):**
| Key | Action |
|:-------------------------|:------------------------|
| `arrow keys` | Move cursor |
| `home` | Start of current row |
| `end` | End of current row |
| `page up` / `page down` | Move by viewport screen |
| `cmd left` / `cmd right` | Start/end of row |
**Advanced Editing (alt + key):**
| Combo | Action |
|:--------------------------------|:---------------------|
| `alt up` / `alt down` | Insert/Delete row |
| `alt right` / `alt left` | Insert/Delete column |
| `alt e` / `alt shift e` | Erase row/col |
| `alt home` / `alt end` | Erase to start/end |
| `alt page up` / `alt page down` | Erase to top/bottom |
**Selection Operations:**
| Key | Action |
|:----------|:---------------|
| `[` / `]` | Flip selection |
| `m` | Move mode |
**Selection Navigation:**
| Key | Action |
|:-------------------------|:----------------------------------|
| `arrow keys` | Move selection area by one cell |
| `shift arrow keys` | Expand/shrink selection |
| `home` / `end` | Expand selection to row start/end |
| `page up` / `page down` | Move selection by screen height |
| `cmd left` / `cmd right` | Expand selection to row start/end |
> [!IMPORTANT]
>
> In **Move Mode**: `arrow keys`, `page up`, `page down` move the _selected content_ in the same ways the default actions move the _selection area_.
**Function Keys (`F1`β`F12`):** Quick character insert from CP437 font (blocks, symbols, shapes, and more).
**The Classic CP437 ANSI block shortcuts**
| Key | Character | Description |
|:------|:----------|:-------------------|
| `F1` | `β` | Light shade block |
| `F2` | `β` | Medium shade block |
| `F3` | `β` | Dark shade block |
| `F4` | `β` | Full block |
| `F5` | `β` | Upper half block |
| `F6` | `β` | Lower half block |
| `F7` | `β` | Left half block |
| `F8` | `β` | Right half block |
| `F9` | `β ` | Small solid square [**_β‘_**](https://16colo.rs/artist/alla%20xul) |
| `F10` | `β` | Circle |
| `F11` | `β’` | Bullet |
| `F12` | `NULL` | Blank/transparent |
**Cycling character sets:**
Use the toolbar buttons or shortcuts `ctrl [`, `ctrl ]` to cycle predefined sets (blocks, box-drawing, symbols, accents, etc).
### Mouse / Touch Controls
- **Click/Touch:** Draw
- **Drag:** Draw/Select/Shape
- **Alt Click:** Sample Color/Alternative Draw
> [!TIP]
> See: [docs/manual.md](docs/manual.md) for more info.
## Tips & Workflow
1. Start with Keyboard Mode for layout
2. Use Grid for alignment
3. Freestyle for shading/art
4. Character Brush for textures
5. Fill Tool for color blocks
6. Selection Tool for moving/copying
7. Save often (Ctrl+S)
8. F-keys for quick block chars
9. Alt+Click to sample colors
10. Undo/Redo freely (up to 1000 ops)
> [!NOTE]
> See the curated collection of [ANSi Tutorials](https://github.com/xero/ansi-art-tutorials/blob/main/README.md) for tips on drawing styles.
## Build & Development
**Requirements:**
- bun (recommended over npm)
- node.js (v22.19+)
**Quick Start:**
Install [bun](https://bun.com):
```sh
# From an existing npm installation:
npm i -g bun
# For UNIX systems like Linux, MacOS, and Open/FreeBSD:
curl -fsSL https://bun.sh/install | bash
# For Windows:
powershell -c "irm bun.sh/install.ps1 | iex"
```
Install dependencies, build, and serve the app:
```sh
bun i # or npm install
bun bake # or npm run bake
bun www # or npm run www
```
> [!NOTE]
> See: [docs/building-and-developing](docs/building-and-developing.md) for more info
**Scripts:**
| Script | Purpose |
|:-------------------|:-------------------------------------|
| `bake` | Build for production (Vite) |
| `server` | Start collaboration server |
| `www` | Serve the `/dist` folder for testing |
| `fix` | Auto-fix lint and format |
| `lint:check/fix` | Lint checking/fixing |
| `format:check/fix` | Formatting check/fix |
| `test:unit` | Run unit tests (Vitest) |
| `test:e2e` | Run end to end tests (Playwright) |
| `test:install` | Install playwright browsers |
> [!TIP]
> See: [package.json](package.json) for full commands definitions
**Build Process:**
- Uses Vite + plugins for static copy, sitemap, PWA/offline support
- Output: `dist/`
- Files are hashed for cache busting (e.g., `editor-[hash].js`, `stylez-[hash].css`)
- Customizable options via `.env` variables:
- `VITE_DOMAIN='https://text.0w.nz'`
- `VITE_UI_DIR='ui/'`
- `VITE_WORKER_FILE='websocket.js'`
> [!IMPORTANT]
> **`VITE_DOMAIN`** is _only_ used for robots.txt and sitemap.xml generation, **all app urls are relative**
**Build Output Structure:**
```
dist/
βββ index.html # Main entry point
βββ site.webmanifest # PWA manifest
βββ service.js # Service worker (injectManifest strategy)
βββ robots.txt # Search engine directives
βββ sitemap.xml # SEO Site map
βββ humans.txt # Credits
βββ favicon.ico # Application icon
βββ ansi/ # ANSI art tutorials (ANS files, PNG previews)
βββ ui/ # UI assets
βββ stylez-[hash].css # Minified CSS
βββ icons-[hash].svg # Icon sprite
βββ topazplus_1200.woff2 # Interface font (Amiga style)
βββ fonts/ # Bitmap fonts (PNG format)
βββ img/ # PWA Images and app icons
βββ js/ # JavaScript bundles
βββ editor-[hash].js # Main application entry point
βββ core-[hash].js # Core modules (state, storage, compression)
βββ canvas-[hash].js # Canvas rendering with lazy font loading
βββ tools-[hash].js # Drawing tools
βββ fileops-[hash].js # File operations
βββ network-[hash].js # Collaboration
βββ palette-[hash].js # Color palette
βββ websocket.js # Web Worker (not hashed)
```
**Code Standards & Style**
- **HTML 5**: Semantic tagging
- **CSS 4**: Modern nesting
- **ES6 JavaScript**: Vanilla & framework free
- Sources use all `lowercase` or `camelCase` names
## Collaborative Server
Enable real-time multi-user editing with the built-in server.
**Features:**
- Canvas/chat persistence
- SSL/HTTP support
- Custom session names, save intervals
- Minimal overhead for real-time editing
**Starting the server:**
```sh
bun server [port] [options]
# or
node src/js/server/main.js
```
> [!TIP]
> The server starts on port **`1337`** by default. _so elite_
**Command-Line Options**
| Option | Description | Default |
|:-----------------------|:-------------------------------------------------|:-------------------|
| `[port]` | Port to run the server on | `1337` |
| `--ssl` | Enable SSL (requires certificates in `ssl-dir`) | _Disabled_ |
| `--ssl-dir ` | SSL certificate directory | `/etc/ssl/private` |
| `--save-interval ` | Auto-save interval in minutes | `30` (minutes) |
| `--session-name ` | Session file prefix (for state and chat backups) | `joint` |
| `--debug` | Enable verbose logging | `false` |
| `--help` | Show help message and usage examples | - |
> [!NOTE]
> See: [docs/collaboration-server](docs/collaboration-server) for more info.
## Docker Containerization
**text0wnz** is fully containerized, offering a streamlined deployment experience across different environments and architectures. Our containerization approach focuses on several key areas:
- Multi-Stage Build Architecture
- Security Hardening
- Performance Optimization
- Service Orchestration
### Registry Support
Prebuilt images are available in **linux/amd64** & **linux/arm64** flavors from multiple repositories:
**[DockerHub](https://hub.docker.com/r/xerostyle/text0wnz):**
```sh
docker pull xerostyle/text0wnz:latest
```
**[GitHub Container Registry](https://github.com/xero/text0wnz/pkgs/container/text0wnz):**
```sh
docker pull ghcr.io/xero/text0wnz:latest
```
### Building Locally
To build the container locally, you'll need [Docker](https://docs.docker.com/get-docker/) with [Buildx](https://docs.docker.com/buildx/working-with-buildx/) support:
```sh
# Standard build for your local architecture
docker buildx build -t text0wnz:latest .
# Multi-architecture build (requires buildx setup)
docker buildx create --name mybuilder --use
docker buildx build --platform linux/amd64,linux/arm64 -t yourname/text0wnz:latest --push .
```
### Running in Development Mode
Development mode provides hot-reloading and detailed logging for an optimized development experience:
```sh
docker run \
--cap-add=NET_BIND_SERVICE \
-e NODE_ENV=development \
-p 80:80 \
text0wnz:latest
```
The editor client will be available at http://localhost with WebSocket collaboration features enabled.
### Running in Production Mode
For production deployments, use this configuration with your domain and a secure session key:
```sh
docker run \
--cap-add=NET_BIND_SERVICE \
-e DOMAIN=your.cool.domain.tld \
-e SESSION_KEY=secure-production-key \
-e NODE_ENV=production \
-p 80:80 -p 443:443 \
text0wnz:latest
```
This setup enables:
- Automatic HTTPS via Caddy's built-in certificate management
- Production-optimized performance settings
- Stricter security headers and content policies
> [!NOTE]
> See: [docs/docker](docs/docker.md) for more info and advanced setup examples.
## Testing Suite
**Triple-Headed:**
- **Vitest:** Unit/integration
- **Testing Library:** DOM/component
- **Playwright:** E2E/browser
> [!TIP]
> View the latest [unit coverage report](https://xero.github.io/text0wnz/tests/) & [e2e testing report](https://xero.github.io/text0wnz/tests/e2e/)
```sh
bun test:unit # Run unit tests
bun test:e2e # Run end2end tests
```
All tests run automatically in [CI/CD](https://github.com/xero/text0wnz/tree/main/.github/workflows).
> [!NOTE]
> See: [docs/testing](docs/testing.md) for more info on unit test frameworks and tools.
>
> See: [CI/CD Pipeline documentation](docs/cicd.md) for details on the automated testing, building, and deployment process.
## Troubleshooting
**Common Issues:**
**Client**
- Build fails: Check Node.js version, reinstall deps
- e2e tests fail: Check you have the playwright browsers installed (`bun test:install`)
- Client can't connect to server: Check server, proxy, firewall settings
- WebSocket drops: Validate webServer headers, note trailing slash in proxy_pass
**Still stuck?**
[Review the wiki](https://github.com/xero/text0wnz/wiki) then [open an issue](https://github.com/xero/teXt0wnz/issues) with error logs and platform details.
**Server:**
- Port in use: Change server port or stop other process
- SSL fails: Check cert/key files and permissions
- Session not saving: Check write permissions, save interval
- Permissions: Confirm systemd user access
- Wrong port: Sync client/server configs
> [!TIP]
> - Use a process manager (systemd, forever) for the server
> - Lower save interval for busy sessions
> - Use SSL in production (Let's Encrypt via Certbot, ACME-nginx, etc)
> - WebSocket debugging: browser dev tools
> - Restore session: rename backups in the **`sessions`** folder
> - Run using the **`--debug`** flag and review logs for details
>
> See: [docs/trouble_shooting](docs/webserver-configuration.md#troubleshooting) for more help.
## Project History
The story of this project traces back to 2018, when AndyH joined [Blocktronics](https://16colo.rs/group/blocktronics)βthe legendary masters of the ANSI art scene. During his early days there, he created the original βansiedit,β laying the groundwork for this application. However, his focus soon shifted to developing a desktop-only editor, which evolved into Moebius.
Around that time, xeR0 (then a member of [Impure!ASCii](https://16colo.rs/group/impure) and a devoted PabloDraw user) joined Blocktronics shortly after ansieditβs release. xeR0 played the role of testing and debugging the app alongside Andy as he learned the dark arts of the blocks.
Fast forward a decade: xeR0 found himself sad he was still unable to use the new MoebiusXBIN fork to create text art on his iPad. With Andyβs blessing, xeR0 decided to revive the projectβreimagining it from the ground up as a modern Progressive Web App. New features like optimized off-screen canvas', dirty pixel rendering, local storage sync, were added. But without Andy's core math this project would not be possible.
## License & Greetz

Mad love & respect to β [Andy Herbert^67](http://github.com/andyherbert) - [Moebius](https://github.com/blocktronics/moebius) β [grmmxi^imp!](https://glyphdrawing.club/) - [MoebiusXBIN](https://github.com/hlotvonen/moebiusXBIN/) β [Curtis Wensley](https://github.com/cwensley) - [PabloDraw](https://github.com/cwensley/pablodraw) β [Skull Leader^ACiD](https://defacto2.net/p/skull-leader) - [ACiDDRAW](https://www.acid.org/apps/apps.html) β & the art scene!
---
All files and scripts in this repo are released [MIT](https://github.com/xero/teXt0wnz/blob/main/LICENSE) / [kopimi](https://kopimi.com)! In the spirit of _freedom of information_, I encourage you to fork, modify, change, share, or do whatever you like with this project! `^c^v`