Changelog
Every release of controlroom, newest first, from its CHANGELOG.md — what changed and the pull request it came from.
1.0.5
Patch Changes
- #1160
0b381a0Thanks @ofri-peretz! - Export./package.json.require('<package>/package.json')threwERR_PACKAGE_PATH_NOT_EXPORTED, which broke tools that read a dependency's manifest that way: bundlers, license scanners and version checks. - Updated dependencies [
0b381a0]:- caique@1.4.4
- closeout@1.1.5
- flagstaff@1.7.2
- linegauge@1.1.3
- paratext@1.0.9
- roundel@1.1.3
1.0.4
Patch Changes
-
#1156
05d1942Thanks @ofri-peretz! - A pane taller than its rectangle scrolls. Before this,fitkept a pane's first rows and dropped the rest, and no key could reach them. The focused pane now moves with↑/↓, PgUp/PgDn and Home/End, bound in the default keymap asscroll.up,scroll.down,scroll.pageUp,scroll.pageDown,scroll.topandscroll.bottomand listed byhints(). A pane at its bottom follows new lines like a log tail. Scrolled up, it stays where it was put, and its last row says how many lines are below (↓ 180). A resize re-clamps the position. Its position is reducer state,ScreenState.scroll, andreduce(state, action, extents)takes the pane heights that the newextents()measures.A tall pane on a live screen now opens at its last rows, where before it showed its first rows. Those rows were unreachable before, so nothing that worked stops working, but a long static text in a short pane now opens at its end until someone presses Home.
Off a terminal nothing changes: a pipe, CI, a screen reader and an agent still get every line of every pane.
composewithlive: falsenow prints every line too, so a screen that closes inline leaves every line in the scrollback, not just the page it was on.
1.0.3
Patch Changes
- #1130
c05c86eThanks @ofri-peretz! - Every drop-in subpath now type-checks undermoduleResolution: node10, and undermodule: commonjswith no resolution set, which is TypeScript's default there.import … from 'burgee/commander'used to fail with TS2307 in such a project, althoughrequire()of the same specifier worked. Each package now declarestypesand atypesVersionsmap, derived fromexports, with one key per typed subpath pointing at the fileexportsalready names.exportsis unchanged, sonode16,nodenextandbundlerread exactly what they read before.controlroom/ink's declarations no longer name the untypedreact-reconciler, which was TS7016 for consumers withskipLibCheck: false. - Updated dependencies [
c05c86e]:- caique@1.4.2
- closeout@1.1.4
- flagstaff@1.7.1
- linegauge@1.1.2
- paratext@1.0.8
- roundel@1.1.2
1.0.2
Patch Changes
- #1045
c4fd9a3Thanks @ofri-peretz! - The family plugin schema (schema.json, identical in every plugin host) now describeslocales, burgee's locale-pack key. A plugin carryinglocalesvalidates against the shared schema as it does againstburgee/locale-pack-schema.json, which lists every message id. This package reads nothing new, and a plugin carryinglocalesregisters here as before. - Updated dependencies [
c4fd9a3,c4fd9a3,b45f141]:- caique@1.1.0
- closeout@1.1.2
- flagstaff@1.4.0
- linegauge@1.1.1
- paratext@1.0.6
- roundel@1.1.1
1.0.1
Patch Changes
-
#1011
1968eb4Thanks @ofri-peretz! - The README quick start runs as written. On npm it was broken for flagstaff (rtundefined) and linegauge (styledundefined), controlroom's imported flagstaff without installing it, and paratext's printed nothing. No code changed;readme-quick-start-locknow runs every package's quick start. -
#1022
ecb0a00Thanks @ofri-peretz! - The tarball no longer carries declaration files that noexportsentry reaches. TypeScript could never open them, because a deep import is refused byexports. Every entry's types are unchanged. The ten packages drop 71 files and 118,312 bytes between them, burgee 35 files and 76,504 bytes, which takes its tarball from 251,814 to 225,278 bytes gzipped. -
Updated dependencies [
1357061,49d8e94,bfe4ab8,45a70be,1968eb4,65afee5,bcc438a,ecb0a00]:- flagstaff@1.3.0
- caique@1.0.5
- linegauge@1.1.0
- paratext@1.0.5
- roundel@1.1.0
- closeout@1.1.1
1.0.0
Major Changes
- #947
a5c3282Thanks @ofri-peretz! - controlroom is 1.0. Its entries.,./ink,./plugin,./schema.jsonand thecontrolroombin are now a semver contract, andcontrolroom/inkis ink 8.0.0's API at that major: 1304 / 1304 on ink 8's own suite and 102 / 102 on @inkjs/ui 2.0.0's, level with real ink on both, with 100% coverage and every spec row built. Nothing changed in the code; the major ends the hold D-20261007-caique-controlroom-1-0-evidence placed on the cut, re-measured in D-20261009-controlroom-1-0.
0.3.5
Patch Changes
- #938
9babb6dThanks @ofri-peretz! - npm description and README: the description says what the package does, then its dependency fact in one of two wordings ("Zero dependencies." or "No dependency outside the burgee family."), then its drop-in paths. The README's family section states how the family is built — the leaves, one-way dependencies, nothing from outside the family, trusted publishing with provenance — and its table column is "Migrates from". No API, compatibility grade or benchmark changes. - Updated dependencies [
9babb6d]:- caique@1.0.4
- closeout@1.0.4
- flagstaff@1.2.5
- linegauge@1.0.8
- paratext@1.0.4
- roundel@1.0.4
0.3.4
Patch Changes
- #917
735f0f6Thanks @ofri-peretz! - README: the opening paragraph says what the package does first. The drop-in path follows it as one line, naming the incumbent andnpx burgee migrate, and every compatibility row and benchmark is unchanged. - Updated dependencies [
735f0f6]:- caique@1.0.3
- closeout@1.0.3
- flagstaff@1.2.4
- linegauge@1.0.7
- paratext@1.0.3
- roundel@1.0.3
0.3.3
Patch Changes
- #897
f29f159Thanks @ofri-peretz! - controlroom has its own docs site at https://controlroom.interlace.tools: its README's Docs line, itshomepage, and every family table now link there. - Updated dependencies [
f29f159]:- caique@1.0.2
- closeout@1.0.2
- flagstaff@1.2.3
- linegauge@1.0.6
- paratext@1.0.2
- roundel@1.0.2
0.3.2
Patch Changes
-
#892
82292afThanks @ofri-peretz! - The root entry's doc comment, which TypeScript shows on hover and the API reference prints, no longer says the package is reserved and exports one constant. It names what the entry exports:open()and its runtime, the layout arithmetic, the tab, focus and collapse reducer with its hint line, and the compositor, with ink's API atcontrolroom/inkand plugins atcontrolroom/plugin.statusis still'reserved', kept so a program that read it still loads. -
#895
e641aa3Thanks @ofri-peretz! - README: the Plugins example now default-exports its plugin, socontrolroom checkaccepts it, and registers flagstaff'slog-tailbeforeopen(), which threw for a pane drawn with an unregistered component. -
Updated dependencies [
d33ae03]:- caique@1.0.1
0.3.1
Patch Changes
-
#848
6ae533eThanks @ofri-peretz! - The familyschema.jsondescribes what five values look like.contractis1, and burgee refuses a plugin that declares none. A caique widget'sstatic(spec)gets{ kind, message, ...sample.done }. A seniorityranksits between the built-in layers at flag 0, environment 10, config file 20,package.json30 and default 40. A burgee hook'sfilteris{ command: RegExp }, now withcommandrequired, so the schema and the host refuse the same filters. -
#857
d80b2d0Thanks @ofri-peretz! - The familyschema.jsoncloses a bellpull resolver'swhenwithadditionalProperties: false, so the schema and bellpull's own validation refuse the same unknown keys. -
Updated dependencies [
446a691,d80b2d0,6ae533e,d80b2d0,fd8e659,6ae533e]:- caique@1.0.0
- closeout@1.0.1
- flagstaff@1.2.2
- linegauge@1.0.5
- paratext@1.0.1
- roundel@1.0.1
0.3.0
Minor Changes
- #839
7694faaThanks @ofri-peretz! -controlroom/inkis ink 8.0.0's API, graded 1304 / 1304 by ink 8's own suite (control 1303 / 1304). New:usePaste,useAnimation,useBoxMetrics,useWindowSize,suspendTerminalandwaitUntilRenderFlushonuseApp, thealternateScreenandinteractiveoptions,wrap="hard", and the yoga props ink 8 sets —maxWidth/maxHeight,aspectRatio,top/right/bottom/left,position: static,alignContent. Where ink 8 changed ink 6's answer, the drop-in follows ink 8: the kitty keyboard answer is read off the input stream, Delete is no longer read as Backspace, and a non-interactive debug run ends with a newline.
0.2.1
Patch Changes
- Updated dependencies [
1945d65,1945d65,9ebef65,1945d65]:- closeout@1.0.0
- paratext@1.0.0
- roundel@1.0.0
- caique@0.7.2
- flagstaff@1.2.1
0.2.0
Minor Changes
-
#816
5230016Thanks @ofri-peretz! - controlroom hosts an input line inside a screen (R20):open(rt, { input: { editor, pane, onSubmit } })routes keys to caique's line editor while its pane has focus and lets unused keys fall through to the keymap; outside a terminal, entries come from piped stdin, never a wait. closeout gainsbracketedPaste()incloseout/cursor, paired with its restore like the alternate screen. -
#816
5230016Thanks @ofri-peretz! -controlroom/inknegotiates the kitty keyboard protocol as ink does: pushed at once withkittyKeyboard: { mode: 'enabled' }, and inautomode only once a known terminal answers the query, with every other byte handed back to stdin and the pop written at unmount. ink's own suite now passes 584 / 584. paratext'scsispells the protocol's three sequences (kittyKeyboardPush,kittyKeyboardPop,kittyKeyboardQuery). -
#816
5230016Thanks @ofri-peretz! - controlroom is no longer a reservation: the screen (open(), inline or in the alternate screen, with static and NDJSON projections), the layout and tab state, andcontrolroom/inkship. The package is held to the family's 100% coverage thresholds. -
#816
5230016Thanks @ofri-peretz! - controlroom hosts plugins (R10):keymapsandpanesregister throughcontrolroom/plugin'sregister()against the family schema, a screen takes either by name, andcontrolroom check <plugin-file>reports what a plugin contributes. The family schema every host ships gains thekeymapsandpanesdefinitions.
Patch Changes
-
#815
28cb9a5Thanks @ofri-peretz! - controlroom's README documents the line that runs packages written for ink oncontrolroom/inkunchanged —"ink": "file:./ink", a two-file package that re-exports the drop-in — and why a barenpm:alias cannot: it names a package, not a subpath.ink-spinner,ink-text-inputandink-select-inputrun that way, as published, inexamples/ink-ecosystem, andexamples/chat-cli-inkis the chat boilerplate written for Ink and run on the drop-in.The benchmarks measure controlroom's weight gates against ink 6.8.0 on React 19.3.0, each at ≤ 1.0×: the drop-in with React and the reconciler bundled against ink with React (W1, 0.745), the same two installed, in bytes and in packages (W2, 0.378 and 0.238), the native root against ink alone (W3, 0.048), and importing each entry point against importing ink and React (W4, 0.289 and 0.144). A B4 side may now be several imports, with externals, and counted whole when its peers load under top-level await.
-
Updated dependencies [
a47209b,5230016,5230016,5230016]:- caique@0.7.1
- closeout@0.7.0
- paratext@0.9.0
- flagstaff@1.1.1
- linegauge@1.0.4
- roundel@0.6.3
0.1.0
Minor Changes
-
#809
4f45dbfThanks @ofri-peretz! -controlroom/ink: a drop-in forink6.8 —render,renderToString,Box,Text,Static,Transform,Newline,Spacer, every ink hook andmeasureElement— rendered by the program's own React through React's own reconciler (React 18 and 19), and laid out by a TypeScript port of yoga's flexbox for the props ink exposes, with no yoga.reactandreact-reconcilerare optional peers: installed alone, the subpath refuses on first import withE_PEER_MISSINGandnpm install react react-reconcileras itsfix, and the package root never loads either. Graded by ink's own suite at 576 of 584 cases and by@inkjs/ui's at 103 / 103, with'ink'resolved to the drop-in.compat-oracle resolves a target's optional peers from the suite's own tree (
Host.peers) and can serve a gated file's internal import from the target's own module (Host.targetInternals); both ink rows now gradecontrolroom/ink.burgee migratereportsink→controlroom/inkas a graded drop-in path that is not level yet, and does not rewrite it.