Releases: flippelt/Immersive-Terminal-for-RPGs
Release list
Immersive Terminal for RPGs v1.8.1
Immersive Terminal for RPGs v1.8.0
Host de referência: compose, schema e skins vivem no rpgterm-engine. Este repo só carrega os demos e renderiza o terminal.
Engine / contrato
src/themes/index.jssó faz glob. Front-matter, VFS, i18n e o merge da skin saíram daqui — o host chamacomposeTheme/composeCustomScenariodorpgterm-engine@0.2.0.- JSON Schema compartilhado (
rpgterm-engine/schemae…/schema/frontmatter). O CI valida cadascenario.jsonde demo e o front-matter dos arquivos. Bundle colado/compartilhado também é validado antes de montar. - Skins novas não se adicionam neste repo — PR no engine.
Qualidade
- Smoke do
Terminal.jsx: login,ls/cat, crack no DC (igual passa), decrypt Esc + reabrir. - Docs alinhados: CONTRIBUTING, SECURITY, wiki (Architecture / Authoring-Themes / Home).
package.jsonagora acompanha a tag (1.8.0).
Já na main desde o v1.7.0 (primeira tag a cobrir)
- Preview ao vivo via
postMessage(rpgterm:load) — o scenario-forge empurra campanha sem limite de URL. - Fotos de arquivo abrem numa janela companheira no desktop.
- Consumo do
rpgterm-enginepelo npm (depois extração do motor local). - Fix do ThemeSwitcher em modo GM (tela preta).
- Gate de
npm auditsó em deps de produção.
Install / demo
Immersive Terminal for RPGs v1.7.0
"Feelin' Lucky? ;)" — a one-shot d20 roll the player can pull right before tackling the decrypt minigame, for a chance at burned attempts or revealed letters. Feature suggested by Pedro Fuster.
✨ Features
decryptluck roll. When the cipher minigame opens, a small popup sits above the wordle: type a number 1–20, hit Enter, and the d20 decides whether you walk in with an edge or a handicap.- Roll 1 — critical fail. Smiley
;_;with red jitter; 2 attempts burned as ✗ phantom rows at the top of the grid. - Rolls 2–9 — 1 attempt burned.
- Rolls 10–14 — 1 letter of the target word revealed in a hint row above the grid.
- Rolls 15–19 — 2 letters revealed.
- Natural 20 —
\o/with green burst; 3 letters revealed.
- Roll 1 — critical fail. Smiley
- One shot per file, persisted across cancels. Open, roll, press Esc, re-run
decrypton the same file — the popup stays gone AND the roll's effect (burned rows or revealed letters) is restored exactly as you left it. Cancelling without rolling or guessing keeps your shot available for next time. - Skip without using the slot: just start typing your guess in the wordle. Submitting any guess auto-dismisses the popup without burning the luck roll's consequences.
- GM opt-out per file. Add
decryptLuck: falseto a file's front-matter to hide the popup entirely on that file — useful for hard-mode challenges where you don't want a bailout. - Reduced-motion respected. All luck animations (jitter, pulse, burst) are gated by
prefers-reduced-motion. - Bilingual. Full English + Brazilian Portuguese translations for the title, label, result messages, and the "REVEALED" caption.
🔧 Under the hood
- New components:
WordleLuckPopup.jsxand integration intoDecryptGame.jsx. - New engine helpers in
engine/wordle.js:rollLuck(n)(pure tier resolver) andpickRevealPositions(len, count, taken, rand)(deterministic with an injectable RNG, so tests pin the picks). DecryptGameacceptsinitialLostByLuckandinitialRevealedprops seeded from Terminal's per-pathluckEffectsmap, so the roll's outcome survives unmount/remount cycles.- 36 new tests covering:
rollLucktier boundaries (including the 15-overlap resolution),pickRevealPositionsselection + pool exhaustion, the luck popup's autofocus / digit-only input / shake-on-invalid / hold-then-commit timing, the integration paths (roll, skip-via-guess, cancel-without-interaction), and the effect-persistence props (restored burned rows + restored hint row from initial state). 209 automated tests total (up from 176); lint + build clean.
🐛 Fix tagging along
- Fallout
directive_06.mdnow hascrackDC: 14—crackcorrectly opens the roll dialog instead of falling straight through to the brute-force bar. (Audit found this was the only tracked locked file in the project missing its DC.)
Credits
Luck roll idea + spec: Pedro Fuster. Thanks Pedro!
Immersive Terminal for RPGs v1.6.0
Popup overhaul — help, success and failure flows all move out of the scrollback into purpose-built popups, with theme-aware scrollbar and a few audit-driven cleanups.
✨ Features
helpopens a movable cheat-sheet popup. On desktop: drag the header to move, drag the bottom-right corner to resize, the prompt stays interactive behind it. On mobile: centered modal with backdrop. Both close via the × button, Esc, or backdrop click.- Per-scenario aliases in
help. The cheat sheet reads each scenario'saliasesmap and shows the themed verbs under the canonical command —(also: auspex, scrutinize)undercheckin Warhammer,auditin IBM,scan/probein Cyberpunk/Blade Runner, and so on. Players learn the scenario's verbs without leaving the popup. crack/unlockauto-open the cat popup on success. The freshly unlocked file appears in the viewer the moment the brute-force progress bar finishes — no need to typecat <file>after.- Failure popup for
crack/unlock/decrypt. Hardened-file crack, wrong key, failed crack roll, and decrypt-minigame loss now surface as a quick acknowledge dialog (× / Esc / OK / backdrop). The tracer time penalty waits for the popup to close — no more losing trace seconds while still reading the message. - Help popup scrollbar matches the active theme. Long extra-help sections use the same thin track +
var(--muted)thumb as the main terminal — green on most themes, amber on IBM, etc. - ThemeSwitcher labels now translate. "System", "Language", and the GM-mode "enable/disable for players" tooltips were the last hardcoded English strings; they now route through the i18n layer.
🐛 Fixes
- Mobile progress bar no longer overflows the viewport.
.modal--progresswas holding a 420px min-width even when the parent modal dropped to 92vw; the inner bar can now scroll horizontally if its fixed-cell rendering exceeds the available space. - X button on the help popup actually closes it now. The header's
setPointerCapturewas rerouting pointerup off the button. Fixed (#85) — stops pointerdown propagation on the button and guards the header handler with a target check. - Lancer pt-br lexicon. The franchise term Lance (squad/unit) was being mistranslated as Portuguese lança (spear). Restored to Lancer across all four occurrences in the Horizon Lance scenario. The wh40k Imperial Creed line "ponta da Sua lança" (literal weapon metaphor) is intentionally untouched.
🔧 Under the hood
- New components:
HelpPopup,FailurePopup. - New hooks:
useEscapeKey(extracted fromFileViewer/IceAlert),useIsMobile(matches the existing 640px breakpoint). commands.jsadopts directive lines (helpview,failure) for Terminal to intercept — same pattern as the existingfileview. Failure directives carrytracerTrip+historyLinesso Terminal can defer those side effects to popup dismissal.- Coverage gaps from the test audit: added
DecryptGame.onLose,Tracer.onComplete, and a fullPrompt.test.jsxcovering history nav, Tab completion, and Ctrl+L. - 176 automated tests (up from 154); lint + build all green.
Immersive Terminal for RPGs v1.5.1
Patch release — mobile fix for the cipher minigame.
🐛 Fixes
- Decrypt minigame now works on mobile (#82). The old window-level keyboard listener never fired on phones because mobile soft keyboards only emit input events when a focusable
<input>is active. The minigame now drives off a hidden, autofocused input — the soft keyboard pops up on open, and tapping anywhere in the modal re-opens it after dismissal.font-size: 16pxon the capture input prevents iOS's auto-zoom on focus.
All 154 tests pass; lint and build clean.
Immersive Terminal for RPGs v1.5.0
Bilingual release: the whole experience now speaks English and Brazilian Portuguese, plus cinematic file/decrypt popups and a stack upgrade.
✨ Features
- Bilingual (EN / PT-BR) — full UI + all 8 scenarios and themes translated to Portuguese. Toggle language in the bottom-left control; commands stay identical in both languages. GMs can localize their own scenarios (per-language
i18nblock + parallelfiles.<lang>/tree) — see CONTRIBUTING. - Cinematic
cat— files open in a scrollable CRT popup with an × close button (also Esc / backdrop). - Decrypt cinematic — solving the cipher minigame plays a DECRYPTING progress bar → ACCESS GRANTED → auto-typed key → file viewer.
- Self-destruct — red voxel detonation flooding the screen, then CRT power-off + reboot.
- GM decrypt controls — per-file
decryptAttempts(default 6, hard floor 4); varied word pools (lengths 4–9, ≥25 six-letter words). - Tab-completion now covers themed command aliases (
auspex,audit,scan,probe, …) and their file arguments.
🐛 Fixes
- Crack/decrypt progress-bar alignment (visible in the IBM theme's font).
- Decrypt-win progress popup now always shows.
🔧 Under the hood
- Upgraded to React 19, Vite 8, Vitest 4 —
npm auditclean (0 vulnerabilities). - 150 automated tests; lint + build + demo build all green.
Immersive Terminal for RPGs v1.4.0
Prop de terminal CRT imersivo para mesas de RPG — 8 sistemas. O zip contém só os arquivos necessários para rodar localmente (código + fontes), sem node_modules/build. Referência completa na Wiki.
✨ Novidades / What's new (desde v1.3.1)
unlock / decrypt — o fluxo de arquivos trancados virou dois verbos:
unlock <file> [key]— desbloqueia com a senha (o "decrypt" clássico). · Password unlock.decrypt <file>— minigame de cifra estilo Wordle pra descobrir a chave; ao vencer, recupera a senha, abre o arquivo e evade o tracer. · Wordle-style cipher minigame.- Disponibilidade: arquivos nocrack têm
decryptpor padrão; crackeáveis optam comdecryptGame: true;decryptGame: falsedesliga (chave vem de fora). Sem decrypt → mensagem de encriptação alta demais. · Availability rule. - Palavra-alvo fixa (
decryptWord), aleatória (decryptWords) ou de uma lista padrão — escolhida por arquivo e visível nogmsheet.decryptAttempts(padrão 6). · Per-file target word, shown in gmsheet.
Inclui engine puro wordle.js + testes (112 no total) e a UI DecryptGame.
🇧🇷 Rodar localmente
Requer Node 22+.
cd Immersive-Terminal-for-RPGs
npm install
npm run devAbra http://localhost:5173. Build estático: npm run build.
🇬🇧 Run locally
Requires Node 22+.
cd Immersive-Terminal-for-RPGs
npm install
npm run devOpen http://localhost:5173. Static build: npm run build.
MIT © 2026 Felipe Lippelt · unofficial fan content (see README).
Immersive Terminal for RPGs v1.3.1
Prop de terminal CRT imersivo para mesas de RPG — 8 sistemas (Alien, Lancer, Blade Runner, WH40K Cogitator + Dataslate, Fallout, Cyberpunk RED, IBM 5151).
O zip abaixo contém só os arquivos necessários para rodar localmente (código-fonte + fontes), sem node_modules nem build. Inclui os dois READMEs (PT/EN). Referência completa na Wiki.
✨ Polimento do tracer / What's new (desde v1.3.0)
decrypttambém evade o tracer — entrar com a senha certa num arquivo vigiado encerra o trace (igual a um crack bem-sucedido). · Successful decrypt evades the tracer too.- Som no clímax "FOUND YOU" — glitch + whine de monitor desligando (Web Audio, sem assets;
caught.sound: falsesilencia). · Caught-climax SFX. - Vinheta ambiente — brilho vermelho pulsante nas bordas enquanto o trace corre. · Ambient red vignette while tracing.
gmsheetmostra a config de vigilância por arquivo (checkDC, janela do tracer). · gmsheet surfaces surveillance config.- Testes — matemática do tracer extraída pra módulo puro testável; 99 testes no total. · Extracted pure tracer math + tests.
🇧🇷 Rodar localmente
Requer Node 22+.
cd Immersive-Terminal-for-RPGs
npm install
npm run devAbra http://localhost:5173. Site estático: npm run build (saída em dist/).
🇬🇧 Run locally
Requires Node 22+.
cd Immersive-Terminal-for-RPGs
npm install
npm run devOpen http://localhost:5173. Static build: npm run build (output in dist/).
MIT © 2026 Felipe Lippelt · unofficial fan content (see README).
Immersive Terminal for RPGs v1.3.0
Prop de terminal CRT imersivo para mesas de RPG — 8 sistemas (Alien, Lancer, Blade Runner, WH40K Cogitator + Dataslate, Fallout, Cyberpunk RED, IBM 5151).
O zip abaixo contém só os arquivos necessários para rodar localmente (código-fonte + fontes), sem node_modules nem build. Inclui os dois READMEs (PT/EN). Referência completa na Wiki.
✨ Novidades / What's new (desde v1.2.0)
Sistema de rastreamento + recon (tracer & check):
- Tracer por arquivo — só arquivos com
tracer: trueativam o rastreador; encerra ao crackear com sucesso (evaded). · Per-file opt-in tracer; stops on a successful crack. - Dificuldade configurável —
startAfter(falhas antes de armar) e overrides por arquivo (tracerSeconds/Penalty/StartAfter/NocrackSeconds). · GM grace + per-file difficulty overrides. check(recon) — escaneia trava/força-bruta/vigilância; opcional com rolagem (checkDC): precisa/ambígua/falha, e "scan mente" (checkMisleadsOnFail). Aliases temáticos (audit,auspex,scan). · Recon scan command with optional difficulty + themed aliases.- Trace rápido em arquivos blindados (nocrack) e alerta ICE de re-scan (avisa e gasta a graça do tracer). · Nocrack fast-trace + repeat-scan ICE alert.
- Clímax "FOUND YOU" (Cyberpunk) — popups, tela final, efeito de monitor desligando e reboot. · "FOUND YOU" caught climax with CRT power-off.
- Tracer temático em Blade Runner, IBM, WH40K e Dataslate. · Themed tracer across more scenarios.
Outros: Pages agora hospeda apenas a demo (/demo/); o site completo vai pro Netlify. · Pages hosts only the demo now.
🇧🇷 Rodar localmente
Requer Node 22+.
cd Immersive-Terminal-for-RPGs
npm install
npm run devAbra http://localhost:5173. Site estático: npm run build (saída em dist/).
🇬🇧 Run locally
Requires Node 22+.
cd Immersive-Terminal-for-RPGs
npm install
npm run devOpen http://localhost:5173. Static build: npm run build (output in dist/).
MIT © 2026 Felipe Lippelt · unofficial fan content (see README).
Immersive Terminal for RPGs v1.2.0
Prop de terminal CRT imersivo para mesas de RPG — 8 sistemas (Alien, Lancer, Blade Runner, WH40K Cogitator + Dataslate, Fallout, Cyberpunk RED, IBM 5151).
O zip abaixo contém só os arquivos necessários para rodar localmente (código-fonte + fontes), sem node_modules nem build. Inclui os dois READMEs (PT/EN). A referência completa está na Wiki.
✨ Novidades / What's new (desde v1.1.0)
- Link compartilhável de cenário —
sharescenarioembute o cenário custom inteiro na URL (?scenario64=) e copia pra área de transferência; sem hospedar JSON, sem CORS. · Shareable scenario links. - Offline / PWA — instala como app e roda sem internet na mesa depois da primeira visita (service worker + manifest). · Installable + offline support.
- Testes de componente — 11 novos testes de UI (Terminal/modals/Tracer) com React Testing Library; 75 testes no total. · Component/UI tests.
🇧🇷 Rodar localmente
Requer Node 22+.
# 1. baixe e extraia o zip, entre na pasta
cd Immersive-Terminal-for-RPGs
# 2. instale as dependências
npm install
# 3. rode o servidor de desenvolvimento
npm run devAbra http://localhost:5173. Para gerar o site estático: npm run build (saída em dist/).
🇬🇧 Run locally
Requires Node 22+.
# 1. download and extract the zip, enter the folder
cd Immersive-Terminal-for-RPGs
# 2. install dependencies
npm install
# 3. start the dev server
npm run devOpen http://localhost:5173. To produce the static site: npm run build (output in dist/).
MIT © 2026 Felipe Lippelt · unofficial fan content (see README).