---
title: Változásnapló
url: 'https://wiki.teletypegames.org/hu/engines/rubbs/changelog'
markdown: 'https://wiki.teletypegames.org/hu/engines/rubbs/changelog.md'
lang: hu
date: '2026-10-29'
description: 'A rubbs verziótörténete a legújabbal kezdve, az engines/rubbs git-történetéből és a bbs.gemspec verzióemeléseiből. Minden bejegyzés arra a kézikönyv-oldalra mutat, amely az adott funkciót leírja. A boardok taggel vagy git-revízióval rögzítik a rubbs-t a Gemfile.lock-jukban; az alábbi verzió a gems…'
taxonomy:
  tag:
    - reference
---

# Változásnapló

> A [rubbs](https://wiki.teletypegames.org/hu/engines/rubbs) verziótörténete a legújabbal kezdve, az `engines/rubbs` git-történetéből és a `bbs.gemspec` verzióemeléseiből. Minden bejegyzés arra a kézikönyv-oldalra mutat, amely az adott funkciót leírja. A boardok taggel vagy git-revízióval rögzítik a rubbs-t a `Gemfile.lock`-jukban; az alábbi verzió a gemspec `s.version` értéke az adott commitnál.

| Verzió | Dátum | Egy sorban |
|---|---|---|
| 1.1.0 | 2026-11-02 | `Editor`/`Screen#edit` `autosave:` másodperc és blokk (alapból kikapcsolva, a tétlenségi korlátot maga tartja); a `Selector` `item_exits:` és a `Screen#pick` `item_commands:` a kijelölt elemre hat |
| 1.0.0 | 2026-11-02 | A nagytakarítás: a TUI, a `BBS::Color`, a használatlan widgetek és Flow-lépések kikerültek; egy paletta, egy Selector, `say(…, color:)`, `edit`, `BBS.log`, `BBS.background`, `BBS::Wikipedia`, a gateway csak nyilvános címet hív |
| 0.34.0 | 2026-11-02 | `Gateway.new(translate: true)`: egy C64 ASCII/ANSI boardot is felhívhat |
| 0.33.0 | 2026-11-01 | Megerősítés (címenkénti korlát, vezérlőkarakter-mentes szöveg, korlátos telnet, korlátos AI-hívások), `BBS::SQLite` és rá épülve a `BBS::Store`, `BBS::HTTP`, `Cache`, `RateLimit`, `Text`, `Address` |
| 0.32.0 | 2026-11-01 | A `BBS::Selector` `fill:` megtartja a menü magasságát, ha kevesebb a tétel |
| 0.31.0 | 2026-11-01 | `BBS::Gateway::Report` minden hívásról, `connect_timeout:` |
| 0.30.0 | 2026-11-01 | [Rajzok és grafikus képernyők](https://wiki.teletypegames.org/hu/engines/rubbs/art): `Petscii::Canvas`, `Art`, `Petscii::CanvasMenu`, `Widgets::Scene`, `Season`, `art-preview` |
| 0.20.0 | 2026-10-29 | `Terminal.flow(petscii:)` a `c64:` helyett, az arc neve `:petscii` |
| 0.19.0 | 2026-10-28 | működik a `config.theme`, az `on_idle`, a sessionönkénti `idle_seconds` és a `Panel` elrendezése |
| 0.18.2 | 2026-10-28 | Teljes RDoc, tag-alapú kiadás, API-referencia a wikin |
| 0.18.1 | 2026-10-28 | (csak tag; az RDoc-feltöltése elbukott, lásd 0.18.2) |
| 0.18.0 | 2026-10-28 | `BBS_MAX_SESSIONS`, naplósor az elutasított hívóról |
| 0.17.1 | 2026-10-27 | A kézikönyv írása közben talált hibák javítása |
| 0.17.0 | 2026-10-27 | `BBS::Gateway`: telnet-gateway door egy másik boardhoz |
| 0.16.1 | 2026-10-27 | a `Terminal.flow` csak `config.mouse` mellett kapcsolja be az egeret |
| 0.16.0 | 2026-10-27 | `BBS::Terminal`: a modern-vagy-C64 kérdés |
| 0.15.0 | 2026-10-25 | PETSCII: Commodore 64 a vonalon |
| 0.14.0 | 2026-10-22 | Váltható ablakok |
| 0.13.0 | 2026-10-22 | `on_tick`, `on_door`, rejtett státuszsor-hintek |
| 0.12.0 | 2026-10-22 | Ablakok mozgatása és méretezése |
| 0.11.0 | 2026-10-22 | `AnsiArt.view` |
| 0.10.0 | 2026-10-22 | Teljes képernyőre tehető ablakok |
| 0.9.0 | 2026-10-22 | ZMODEM-letöltés, `with_line`; audit |
| 0.8.0 | 2026-10-21 | AI: tények, visszaesés, deflect |
| 0.7.0 | 2026-10-21 | Flow-doorok, a flow saját képernyői, SAUCE |
| 0.6.0 | 2026-10-20 | `BBS::Door` |
| 0.5.0 | 2026-10-20 | `BBS::AI` |
| 0.4.0 | 2026-05-12 | Az Application-réteg (és minden 2026-10-20-ig) |
| 0.3.0 | 2026-05-11 | TUI-oldalnavigáció |
| 0.2.0 | 2026-05-11 | Oldalalapú TUI DSL |
| 0.1.0 | 2026-04-28 | Flow, Telnet, Store, az Impostor BBS-ből kiemelve |

# 1.0.0 — 2026-11-02

A nagytakarítás: mindenre egyetlen út. A legtöbb boardnak csak három dolgon kell változtatnia (az első három alább); a repó `UPGRADING.md`-je minden eltávolított vagy átnevezett API-t felsorol a helyettesítőjével és egy greppel, amely megtalálja.

- **A `Petscii::Screen#say` és `#rule` kulcsszóként kapja a színt**: `say(text, color: GN)`, `rule(color: DG)`.
- **A `Screen#editor` megszűnt**: helyette `edit(title:, max:)`, amely `nil`-t ad, ha a hívó kilép. **A `Petscii::Screen::MENU` megszűnt**: a `BBS::Selector::COLORS` az alapértelmezés.
- **A gateway csak nyilvános címet hív**: az a board, amely a szomszédait tárcsázza (`host.docker.internal`, egy konténer), `public_only: false`-t ad meg; az elutasított hívás `BBS::Gateway::Refused`-dal végződik ([Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors)).
- **Kikerült**: a `BBS::TUI` és a Flow `tui` lépése, a `BBS::Color`, a `ProgressBar`, `Spinner`, `HBox`, `VBox`, `Panel` és `AnsiArt` widget (helyette `Art` + `Widgets::Scene`), a `set`, `line`, `section`, `rows`, `table`, `wait_enter`, `fetch`, `pick`, `body`, `output`, `os` Flow-lépés (helyette `call`), a színekről elnevezett Flow-stílusok, a `Menubar#add_menu`, a nyilvános `Terminal.choose` (helyette `Terminal.flow`), a `Petscii::Screen.plain` (`BBS::Petscii.plain`), a `Dialogs.wrap` (`FrameBuffer.wrap_ansi`).
- **Mindenből egy**: egy paletta (`BBS::Ansi`; a `Petscii::Colors` ennek C64-es nevei), egy kurzoros menü (a Flow `menu`-je most `BBS::Selector`), egy sortörés, egy PETSCII-jeltábla, egy telnet-értelmező (`BBS::Telnet::Parser`). A Flow-lépések objektumok; egy `call` blokk runnere tudja a `context`-et, az `ask`-ot, a `select`-et és a `line`-t ([Flow](https://wiki.teletypegames.org/hu/engines/rubbs/flow)).
- **Témák adatként**: `Theme::PRESETS`, `Theme.fetch(name)`, fagyasztott témák, az ismeretlen szerep hibát dob ([Rajzolás](https://wiki.teletypegames.org/hu/engines/rubbs/drawing)).
- **Új**: `BBS.log` és `config.log_tag` (a könyvtár minden naplósora a board nevével kezdődik), `BBS.background` (háttérszál újrapróbálással), `BBS::Wikipedia`, `RateLimit.allow_all?`, `room?`/`record` és SQLite-ban tárolt számlálók, `Text.line`, `HTTP.get(to: io)` és `HTTP::TooLarge`, `Cache#refresh`, az importkor félretett hibás CSV-sorok, `Store#open!`, és a hibaszabály: a repository dob, a service dönt ([Adat és hálózat](https://wiki.teletypegames.org/hu/engines/rubbs/data-and-network)).
- A `Text.clean(keep_newlines: false)` a sorvégből szóközt csinál ahelyett, hogy összeragasztaná a szavakat; a `Telnet#settle` a sessiont vagy `nil`-t ad vissza.

# 0.34.0 — 2026-11-02

- **`BBS::Gateway.new(translate: true)`**: egy Commodore 64 ASCII- és ANSI-terminálokra készült boardot is felhívhat; a board szövege PETSCII-ként ér hozzá, a billentyűi pedig úgy jutnak a boardhoz, ahogy egy ANSI-terminál küldené őket ([Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors)).

# 0.33.0 — 2026-11-01

Megerősítés, és az építőelemek, amelyeket eddig minden tartalmas board maga írt meg ([Adat és hálózat](https://wiki.teletypegames.org/hu/engines/rubbs/data-and-network)).

- **Korlátok**: `max_sessions_per_ip` (6) nyilvános címenként; a NAWS legfeljebb 255×100; a bevitel és a frame buffer nem tart vezérlőkaraktert; egy szövegmező legfeljebb 64 KiB; a gateway alegyeztetései és a ZMODEM újrakezdései korlátosak; a SIGTERM úgy állítja le a szervert, mint a Ctrl-C.
- **AI**: hívásonként határidő (120 s) és válaszkorlát, egyszerre legfeljebb `ai_concurrency` (2) kérés, `BBS::AI::Busy` és a persona tartalékválasza, ha a modell foglalt ([AI-karakterek](https://wiki.teletypegames.org/hu/engines/rubbs/ai)).
- **`BBS::SQLite`** migrációkkal, és **rá épülve a `BBS::Store`**: a `.csv` útvonal a mellette lévő `.sqlite3`-at jelenti, a régi CSV egyszer beimportálódik ([Telnet és a store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).
- **`BBS::HTTP`**, **`BBS::Cache`**, **`BBS::RateLimit`**, **`BBS::Text`**, **`BBS::Address`**. Ruby 3.2 vagy újabb kell; a `sqlite3` függőség lett.

# 0.32.0 — 2026-11-01

- A **`BBS::Selector`** `fill:`-lel megtartja a magasságát, ha a tételek kevesebb sort foglalnak, így az állapotsor a képernyő alján marad.

# 0.31.0 — 2026-11-01

- A **`BBS::Gateway`** a blokkjának átadja a hívás `Report`-ját (sikerült-e, a hiba, a cím, a kapcsolódás ideje, a kapott bájtok, ki bontott), és elfogadja a `connect_timeout:`-ot ([Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors)).

# 0.30.0 — 2026-11-01

A TTG Klubház külsejének közös építőkövei: szövegként rajzolt képek mindkét arcra. Minden új; semmi meglévő nem változik. (A 0.20.0 és a 0.30.0 közti verziók az `engines/rubbs` git-történetében vannak.)

- **`BBS::Petscii::Canvas`**: a C64 képernyője cellákként a nagybetűs/grafikus készletben, nyers PETSCII ki (teljes kép, szakaszok, foltok, `update`), a TTG Gate BBS-ből ideköltöztetve, ugyanazokkal a bájtokkal; a `feed` tesztekhez visszajátssza a PETSCII-t.
- **`BBS::Art`**: rajzok YAML-ben (karakterek, színek, reverse, cp437-hátterek, hotspotok, rétegek), ki ANSI-ra, FrameBufferre vagy Canvasra, a cellát megnevező hibákkal.
- **`BBS::Petscii::CanvasMenu`**: a `BBS::Selector` Canvasra rajzolva, a megváltozott cellák foltjaival, üresjárati hookkal az animációhoz.
- **`BBS::Widgets::Scene`**, **`BBS::Season`** és az **`art-preview`** eszköz. Lásd [Rajzok és grafikus képernyők](https://wiki.teletypegames.org/hu/engines/rubbs/art).

# 0.20.0 — 2026-10-29

A PETSCII-arc a vonal nyelvéről kapja a nevét, nem egy gépről, amelyik beszéli. Ez minden kétarcú board hívását eltöri; a mieink vele együtt változtak.

- A **`BBS::Terminal.flow(title:, modern:, petscii:)`** a PETSCII-arc Flow-ját a `petscii:` kulcson kapja (eddig `c64:`), a **`Terminal.guess` / `Terminal.choose`** pedig `:modern`-t vagy `:petscii`-t ad (eddig `:c64`); a `Terminal::FACES` kulcsai ugyanezek ([Commodore](https://wiki.teletypegames.org/hu/engines/rubbs/commodore)).
- A boardok ugyanezt a nevet követik: az arcaik `UI::Modern` és `UI::Petscii` (`lib/ui/petscii`), az Impostor flow-ja `Impostor::Modern` / `Impostor::Petscii`.

# 0.19.0 — 2026-10-28

Négy dolog, ami le volt írva, de nem csinált semmit, most működik. Egyik boardunk sem használta őket, így egyiknek sem változik a viselkedése.

- A **`config.theme`** minden olyan Application témája, amelynek nincs saját `theme` hívása, és az alap nélküli `theme do … end` blokk kiindulópontja ([Első lépések](https://wiki.teletypegames.org/hu/engines/rubbs/getting-started)).
- Az **`on_idle { … }`** akkor fut, amikor a hívó eléri a tétlenségi limitet; `:keep` esetén vonalban marad, egyébként bont a vonal ([Application](https://wiki.teletypegames.org/hu/engines/rubbs/application)).
- A **`Session#idle_seconds`** az a limit, amit az Application-hurok és a TUI olvas, és az állítása a socket timeoutját is átírja: egy hívó több időt kaphat ([Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).
- A **`Widgets::Panel#layout`** a kereten belüli területet adja a gyerekeinek ([Widgetek](https://wiki.teletypegames.org/hu/engines/rubbs/widgets)).

# 0.18.2 — 2026-10-28

- **A teljes API dokumentálva van** a forrásban (`rdoc -C lib`: 100%), és az RDoc a wikin van: [API-referencia](https://wiki.teletypegames.org/rdoc/bbs/latest/), minden verzió az [RDoc](https://wiki.teletypegames.org/hu/development/rdoc) oldalon. A CI 100% alatt elbukik, és a repó `CLAUDE.md`-je szabállyá teszi.
- **A kiadás mostantól tag**: `vX.Y.Z`, a gemspec verziójával egyezően; a korábbi verziók utólag kaptak taget (`v0.1.0` … `v0.18.0`).
- A kóddal ellentmondó kommentek most azt írják, amit a kód csinál: az `AnsiArt` opciói (`fill_parent`, nem `width`) és a SAUCE levágása (az első `\x1A`-tól minden), az öt téma-preset, és három beállítás, amit egyelőre semmi sem olvas: `Config#theme`, `Application.new(on_idle:)` és `Session#idle_seconds`.
- A 0.18.1 kódja ugyanez; a tag-pipeline-ja nem tudta telepíteni az RDoc-ot a slim image-en, így a 0.18.2 az első kiadott referencia.

# 0.18.0 — 2026-10-28

- A **`max_sessions`** környezeti változóból is állítható: `BBS_MAX_SESSIONS` (alapból 100), így a telepítés a konténer memóriájához méretezheti a board kódjának módosítása nélkül ([Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).
- A korlát miatt elutasított hívóról naplósor készül: `BBS busy: N callers on, turned one away`.

# 0.17.1 — 2026-10-27

Javítások, amelyek a kézikönyv írása közben kerültek elő.

- **Az `open_door` bármelyik kezelőből működik**: maga állítja le az eseményciklust, így egy window-gomb (`Info`, `Form`, `MasterDetail`-actionök) vagy egy `MasterDetail` `on_activate` utána írt `stop!` nélkül is kilép a dooron át. Az **`Application#line_lost?`** jelzi, ha a futás azért ért véget, mert a vonal megszűnt (bontás, idle-limit); ilyenkor a `Builder#run` nem nyit doort, korábban a bontás előtt épp kiválasztott door megnyílt. Lásd [Application](https://wiki.teletypegames.org/hu/engines/rubbs/application) és [Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors).
- A Flow **`app` lépése** a `Builder#run`-on át futtatja az applicationt, így ott is működnek a doorjai ([Flow](https://wiki.teletypegames.org/hu/engines/rubbs/flow)).
- A blokk nélküli **`theme :name`** az adott presetet veszi (korábban magát a Symbolt tárolta, és az első újrarajzolás elszállt), az argumentum nélküli `theme` pedig az eddig beállított témát adja vissza, nem állítja vissza ([Rajzolás és témák](https://wiki.teletypegames.org/hu/engines/rubbs/drawing)).
- Az **`ask ... validate:`** Procot vagy Methodot is elfogad; a falsy válasz ugyanúgy bukik, mint a `:non_empty` ([Flow](https://wiki.teletypegames.org/hu/engines/rubbs/flow)).
- Egy menüpont **`enabled:`**-je lehet lambda, amelyet a menü minden rajzolásakor és használatakor megkérdez az applicationön; a választ a `Menubar::MenuItem#enabled?` adja ([Application](https://wiki.teletypegames.org/hu/engines/rubbs/application)).
- A **`Store#upsert`** frissítéskor is figyelmen kívül hagyja a fejlécben nem szereplő mezőket; korábban extra oszlopként a sor végére írta őket ([Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).
- **`Session#resize!(cols, rows)`**: a gateway a hívó átméretezését ennek a boardnak a sessionjébe is beírja, így az átkelés után a board már az új méretet ismeri ([Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors), [Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).
- A README Gemfile-sora a git.teletypegames.org-ra mutat.

# 0.17.0 — 2026-10-27

- **`BBS::Gateway.new(host:, port:, name:)`**: door egy másik telnetes boardhoz, a régi BBS-ek telnet gatewayje. A hívó vonala változatlanul átmegy arra a boardra, és visszajön, amikor az bont, így egy board a kódja futtatása nélkül kínálhat egy másikat. Lásd [Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors).
- A másik board felé a gateway a telnetkliens: válaszol az egyeztetésre, jelenti a hívó ablakméretét, és továbbadja az átméretezéseket. A PETSCII-vonal nem jelent semmit, így a túloldali kétarcú board C64-nek veszi a hívót ([Commodore 64](https://wiki.teletypegames.org/hu/engines/rubbs/commodore)).
- A **`session.line`** kiadja a hívó socketjét egy doornak, amely továbbadja a vonalat ([Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).
- A hívó oldala `shutdown`-nal ébreszti a másik oldalt, sosem `close`-zal: egy `IO#close` közben megölt szál nyitva hagyja a leírót.

A Teletype BBS ezen át éri el az Alexandria BBS-t és a Feediát.

# 0.16 — 2026-10-27

## 0.16.1

- A `Terminal.flow` modern választás után csak akkor hívja az `enable_mouse`-t, ha a boardon be van kapcsolva a `config.mouse`. Korábban egy egér nélküli kétarcú board (Impostor BBS) modern hívónál is bekapcsolta a jelentést. Lásd [Commodore 64](https://wiki.teletypegames.org/hu/engines/rubbs/commodore).

## 0.16.0

- **`BBS::Terminal`**: a modern és C64-es arcú boardok első kérdése, a gembe költöztetve abból a három boardból, amelyek mindegyike saját példányt hordozott belőle. Lásd [Commodore 64](https://wiki.teletypegames.org/hu/engines/rubbs/commodore). 
    - A `Terminal.guess(session)` a telnet-válaszokból tippel: 40 oszlopnál szélesebb ablak modern, a 40 oszlop vagy a hiányzó ablakméret C64.
    - A `Terminal.choose(session, title:)` sima ASCII nagybetűkkel kérdez, és megnevezi a protokollokat: `1 - MODERN (ANSI/XTERM, 256 COLORS)`, `2 - COMMODORE 64 (PETSCII, 40 COLUMNS)`. Egy billentyű kijelöl, a RETURN véglegesít (a WikiProxy bevitele), és 60 másodperc csend után a választás vagy a tipp érvényes.
    - A `Terminal.flow(title:, modern:, c64:)` kérdez, átkapcsolja a vonalat (`petscii!` vagy egérjelentés), és lefuttatja a választott arc Flow-ját.

A Teletype BBS, az Impostor BBS, a TTG WIKI BBS, az Alexandria BBS és a Feedia használja.

# 0.15 — 2026-10-25

- **PETSCII**: a `session.petscii!` C64-esre állítja a sessiont: 40×25, kisbetűs karakterkészlet, nincs egér. Lásd [Commodore 64](https://wiki.teletypegames.org/hu/engines/rubbs/commodore).
- Ezután minden kiírt szöveg a `BBS::Petscii::Encoder`-en megy át, így a board továbbra is UTF-8-at ír ANSI-színekkel és kurzormozgással: a betűk PETSCII-módra cserélődnek, a keretrajzoló és blokk-karakterek a C64 karaktereivé, az ANSI-színek a C64 színeivé válnak, a CR LF egy RETURN, és a pontosan 40 karakteres sor után nem jön üres sor.
- A `readkey` és a `readline` a C64 billentyűit olvassa; a RUN/STOP és a `←` `:escape`.
- A **`session.settle(timeout:)`** megvárja a telnet-válaszokat és eldobja az előre begépelt bemenetet, így a board kérdés előtt tippelhet a terminálra ([Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).
- A **`config.mouse_on_connect`** (alapból `true`) hagyja, hogy a flow később kapcsolja be az egérjelentést, egy olyan kérdés után, amely előtt a C64 nem láthat escape-szekvenciát.

# 0.14 — 2026-10-22

- **Váltható ablakok**, Turbo Vision-módra: az egyszerre nyitott ablakok az utolsó használat sorrendjében takarják egymást. Az aktív mögötti ablakra kattintva az előre jön, az F6 / Shift-F6 lépteti őket, az Alt-1 … Alt-9 a keretükön látható szám alapján választ. Az aktív ablak dupla keretes. Lásd [Ablakok](https://wiki.teletypegames.org/hu/engines/rubbs/windows).
- A modális ablakok (a `Dialogs`) elöl maradnak, amíg be nem zárják őket; a `BBS::Windows` típusok már nem modálisak.
- Az F6 csak akkor mozgat ablakot, ha egyetlen ablak van nyitva; a Ctrl-F5 mindig.
- Kódból az `app.raise_window`, a `cycle_windows` és a `switchable_windows` teszi ugyanezt ([Application](https://wiki.teletypegames.org/hu/engines/rubbs/application)).

# 0.13 — 2026-10-22

- Az Application DSL **`on_tick { … }`**-ja másodpercenként lefut, amíg a hívó nem nyom semmit (óra az állapotsoron). Az **`on_door { |door, context| … }`** közvetlenül azelőtt fut, hogy a vonal egy doorhoz kerül. Lásd [Application](https://wiki.teletypegames.org/hu/engines/rubbs/application).
- A **`status_hint(key, label, hidden: true)`** úgy köt be egy billentyűt, hogy nem foglal helyet az állapotsoron.
- Javítások: a `Dialogs.input` mezőjében az Enter megnyomja az OK-t; a kivételt dobó door visszaviszi a hívót a boardra, ahelyett hogy bontaná a hívást; a Markdown-listaelem alatti behúzott sor folytatja az elemet.

# 0.12 — 2026-10-22

- **Ablakok mozgatása és méretezése**: a nem nagyított ablak mozgatható, az átméretezhető fajta méretezhető. Egérrel a címsort vagy a jobb alsó sarkot (`┘`) kell húzni; billentyűzetről a Ctrl-F5 vagy az F6 indítja, a nyilak mozgatnak, a Shift+nyilak méreteznek, a Tab vált, az Enter vagy az Esc befejezi. A `movable: false` kikapcsolja; kódból a `move_to(x, y, w, h)`. Lásd [Ablakok](https://wiki.teletypegames.org/hu/engines/rubbs/windows).
- Az egérjelentés mostantól xterm 1002 (mozgás lenyomott gombbal), így megérkeznek a húzások.
- **A telnet-olvasó visszaadja az xterm módosítóit**: `:shift_up`, `:ctrl_f5`, `:alt_home`, `:ctrl_shift_right` ([Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)). Egy ablak a senki által el nem vett módosított nyilat sima billentyűként adja tovább a widgetjének.

# 0.11 — 2026-10-22

- **`AnsiArt.view(session, lines, title:)`**: kép a teljes képernyőn, középre igazítva, a képernyőnél magasabbat a nyilakkal, a PgUp/PgDn-nel és a Home/End-del lehet görgetni; állapotsor a címmel; bármely más billentyű visszalép. Egy `Application#with_line` blokkon belül fut. Lásd [Widgetek](https://wiki.teletypegames.org/hu/engines/rubbs/widgets).

# 0.10 — 2026-10-22

- **Teljes képernyőre tehető ablakok**: a `maximizable: true` (a window DSL-ben `w.maximizable true`) zoom gombot ad az ablaknak: a `[↑]` kitölti az asztalt a menüsor és az állapotsor között, a `[↕]` visszaállítja; ugyanezt teszi az F5, az Alt-Enter és a dupla kattintás a címsoron. Alapból ki van kapcsolva. Lásd [Ablakok](https://wiki.teletypegames.org/hu/engines/rubbs/windows).
- A bármekkora méretben elrendezhető ablakok `resizable?`-t mondanak, és megvalósítják a `normal_rect`-et és a `place(x, y, w, h)`-t: a `MasterDetail`, a `Stream`, a `Form` és a görgethető `Info` ilyen. A `Stream`, a `Form` és az `Info` mostantól követi a terminál átméretezését.
- `Application#desktop_rect`; az `ESC CR` `:alt_enter`-ként olvasódik.

# 0.9 — 2026-10-22

- **ZMODEM-letöltés**: a `BBS::Zmodem.send_files` fájlokat küld a hívó termináljára (SyncTERM, NetRunner, Qodem, telnet mögötti `rz`, zmodem.js egy webes terminálban). A vezérlőkarakterek ZDLE-escape-pel, a 0xFF duplázott telnet-IAC-ként megy. Lásd [Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors).
- Az **`Application#with_line { |session| … }`** átadja a nyers vonalat egy blokknak, és utána újrarajzol; a `Telnet#read_raw_byte` olvas neki.
- A `MasterDetail` kap `on_activate`-et (Enter egy elemen) és `replace_items`-et, így egy ablak helyben böngészhet mappákat ([Ablakok](https://wiki.teletypegames.org/hu/engines/rubbs/windows)).
- Az egész gem auditja, többek között: 
    - a NAWS korlátos (egyetlen 65535×65535-ös jelentés minden renderelésnél gigabájtokat foglaltatott), az alegyeztetések és a sorok hossza is;
    - a socketek az idle-korlátot kapják olvasási/írási időkorlátnak, a kapcsolatok száma korlátos (`max_sessions`), az `EMFILE` már nem pörgeti az accept-ciklust;
    - a `readline` UTF-8-at ad, a Backspace egy teljes karaktert töröl, a `readkey` UTF-8 karaktereket olvas;
    - a CR LF egy Enter, a magányos Esc nem vár a következő billentyűre, az SS3-nyilak és az X10-egérjelentések nem szivárognak ki billentyűként;
    - az Esc és a funkcióbillentyűk átjutnak a `TextInput`-on; a gombok gyorsbillentyűi működnek; az `on_close` egyszer fut le;
    - a keskeny terminál, a görgő az ablak szélén, egy handler vagy egy FakeOS-parancs kivétele már nem bontja a hívást.

A korlátokról lásd [Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store).

# 0.8 — 2026-10-21

- **`Chat#reply(text, ctx, facts:, fallback:)`**: a tények egy kérés erejéig a system promptba kerülnek, a `fallback` pedig a persona beégetett válaszát helyettesíti, ha a modell hiányzik vagy hibázik. A persona **`deflect`** szabályaira a kód válaszol, mielőtt a modellt megkérdezné. Lásd [AI](https://wiki.teletypegames.org/hu/engines/rubbs/ai).
- A `TextInput#value=` az új érték végére teszi a kurzort: a `Stream` ablakba gépelt második sor korábban `IndexError`-t dobott és bontotta a hívást.

# 0.7 — 2026-10-21

- **Flow-doorok**: a door lehet egy `BBS::Flow` is. A hívó contextjének egy másolatán fut, és ENTER-t kér, mielőtt visszaadja a vonalat. Lásd [Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors).
- A **`Flow.define(screens_dir:)`** a flow mellett tartja az ERB-képernyőit, így egy gemben szállított flow bármelyik boardon kirajzolódik; a `FlowRunner` `context:`-et kap a flow contextjének előtöltéséhez ([Flow](https://wiki.teletypegames.org/hu/engines/rubbs/flow)).
- **FakeOS `base` szín**: minden reset ehhez tér vissza, és a `cls` ezzel tölti ki a képernyőt, így a színes háttér (egy C64 kékje) megmarad a promptok és az új sorok alatt is.
- Az **`AnsiArt.sauce(path)`** beolvassa egy art-fájl SAUCE-rekordját ([Widgetek](https://wiki.teletypegames.org/hu/engines/rubbs/widgets)).

# 0.6 — 2026-10-20

- **`BBS::Door`**: a vonal átadása egy programnak és visszavétele. `door :name, program, label:`-lel deklarálható, egy menüben a `doors` sorolja fel, bármelyik handlerből az `open_door` nyitja meg. A `Builder#run` lefuttatja azt a doort, amelyen át a hívó elhagyta az alkalmazást, majd ugyanazzal a contexttel újraépíti az alkalmazást. A program egy FakeOS-definíció vagy egy `callable(session, context)`. Lásd [Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors).

# 0.5 — 2026-10-20

- **`BBS::AI`**: karakterek, akikkel a hívó beszélgethet. YAML-fájlból olvasott persona (system prompt, példakörök, kérésbeállítások, beégetett válaszok), streamelő kliens bármilyen OpenAI-kompatibilis chat-végponthoz, a rövid előzményt a hívó contextjében tartó, a beégetett válaszokra visszaeső chat, és egy typewriter, amely a streamelt választ szavanként tördelve írja egy FakeOS-konzolra. Lásd [AI](https://wiki.teletypegames.org/hu/engines/rubbs/ai).

# 0.4 — 2026-05-12

A **0.4.0** hozta a harmadik réteget, a widget frameworköt (a „new framework” commit):

- **`BBS::Application`** eseményciklussal, `Event`, `FocusManager`, menüsor, állapotsor, `Dialogs`, `Window`, `Container` és a widgetek (`Label`, `Button`, `TextInput`, `TextArea`, `Checkbox`, `ListBox`, `ScrollView`, `ProgressBar`, `Spinner`). Lásd [Application](https://wiki.teletypegames.org/hu/engines/rubbs/application) és [Widgetek](https://wiki.teletypegames.org/hu/engines/rubbs/widgets).
- **`BBS::Theme`** presetek; xterm-egérjelentés (1000 + SGR 1006) és a billentyűdekóder a telnet-olvasóban.
- A `BBS::Store` megkapta a memóriabeli cache-t és a Mutexet: az új sorok hozzáfűződnek, a frissítések újraírják a fájlt ([Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)).

A verzió 2026-10-20-ig 0.4.0 maradt, miközben ezek bekerültek:

- 2026-05-12 – 05-13: `Widgets::AnsiArt` (CP437-es art), a téma-DSL és újabb presetek, a Markdown-renderelő, a kész ablaktípusok (`Info`, `Form`, `MasterDetail`, `Stream`, `ButtonBar`) és a window DSL (`window :name, type:`). Lásd [Ablakok](https://wiki.teletypegames.org/hu/engines/rubbs/windows) és [Rajzolás](https://wiki.teletypegames.org/hu/engines/rubbs/drawing).
- 2026-06-05: GFM-táblázatok a Markdownban; görgős görgetés a `ScrollView`-ban. **`BBS::FakeOS`**, karakteres OS-szimulátor konfigurációként ([Doorok](https://wiki.teletypegames.org/hu/engines/rubbs/doors)).
- 2026-06-11: a nyitott ablakok a terminál átméretezésekor újrarendeződnek.
- 2026-08-17: CI-ellenőrzés; 2026-09-09: MIT-licenc.
- 2026-10-16: a `Store` túléli az érvénytelen UTF-8-at a CSV-ben, és írás előtt megtisztítja az értékeket.
- 2026-10-19: a kliens bontása eldobott sessionként kerül a logba, nem hibaként.
- 2026-10-20: `readline(mask:)` jelszavakhoz, és a `naws_reported?`.

# 0.3 — 2026-05-11

- `nav` DSL a `TUI::Page`-ben; a `helpers` hívásokon át gyűlik. (Az 1.0.0-ban kikerült.)

# 0.2 — 2026-05-11

- **Az oldalalapú TUI DSL** (`BBS::TUI.define`, oldalak, router), az aznap bekerült TUI-futtatóra építve, NAWS-alapú terminálméret-egyeztetéssel és az azt követő méretekkel. (Az 1.0.0-ban kikerült.)
- 2026-05-12-én követte a kettős pufferelt, delta-renderelésű `FrameBuffer` ([Rajzolás](https://wiki.teletypegames.org/hu/engines/rubbs/drawing)).

# 0.1 — 2026-04-28

- **Az első verzió**, az Impostor BBS `gems/bbs`-éből kiemelve: `BBS::Flow` és `FlowRunner` (screen, banner, ask, say, menu, persist, …), ERB-képernyők (`Renderer`), `Banner`, `BBS::Store`, a szálanként kiszolgáló `Server`, a `Session` és a telnet-réteg. Lásd [Első lépések](https://wiki.teletypegames.org/hu/engines/rubbs/getting-started) és [Flow](https://wiki.teletypegames.org/hu/engines/rubbs/flow).
- 2026-04-28 – 04-30, még 0.1.0-ként: a `call` lépés és a `config.on_session_end`; a Flow `line`, `section`, `text`, `rows`, `table`, `wait_enter`, `fetch`, `pick`, `body`, `output` primitívjei; `BBS::Color` a `c()` segédfüggvénnyel.

# Lásd még

- [rubbs](https://wiki.teletypegames.org/hu/engines/rubbs) — az áttekintés
- [Első lépések](https://wiki.teletypegames.org/hu/engines/rubbs/getting-started)
- [Commodore 64](https://wiki.teletypegames.org/hu/engines/rubbs/commodore)
- [Telnet, session és store](https://wiki.teletypegames.org/hu/engines/rubbs/telnet-and-store)
- [Adat és hálózat](https://wiki.teletypegames.org/hu/engines/rubbs/data-and-network)

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [RuBBS](https://wiki.teletypegames.org/hu/engines/rubbs.md)
- Previous: [Rajzok és grafikus képernyők](https://wiki.teletypegames.org/hu/engines/rubbs/art.md)
- Next: [Commodore 64](https://wiki.teletypegames.org/hu/engines/rubbs/commodore.md)
