EN /HU | Belépés

Változásnapló

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 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: 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).
  • 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).
  • Témák adatként: Theme::PRESETS, Theme.fetch(name), fagyasztott témák, az ismeretlen szerep hibát dob (Rajzolás).
  • Ú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).
  • 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).

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).

  • 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).
  • 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).
  • 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).

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.

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).
  • 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).
  • 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).
  • 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).
  • A Widgets::Panel#layout a kereten belüli területet adja a gyerekeinek (Widgetek).

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, minden verzió az 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).
  • 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 és Doorok.
  • A Flow app lépése a Builder#run-on át futtatja az applicationt, így ott is működnek a doorjai (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).
  • Az ask ... validate: Procot vagy Methodot is elfogad; a falsy válasz ugyanúgy bukik, mint a :non_empty (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).
  • 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).
  • 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, Telnet, session és 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.
  • 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).
  • A session.line kiadja a hívó socketjét egy doornak, amely továbbadja a vonalat (Telnet, session és 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.

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.
    • 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.
  • 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).
  • 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.
  • 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).

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.
  • 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.
  • 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). 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.

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.
  • 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.
  • 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).
  • 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.

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.
  • 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.
  • 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).
  • 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).

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.

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.

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 és Widgetek.
  • 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).

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 és Rajzolás.
  • 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).
  • 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).

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 és 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