All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning. See SEMVER.md for what constitutes a breaking change in beamterm.
- (renderer) Add missing doc comments to wasm.rs
- (core,renderer) Re-export 3rd party crates and document stability policy
- (deps-dev) Bump jsdom from 27.4.0 to 29.0.0 in /js (#106)
- (deps-dev) Bump esbuild in /js in the minor-and-patch group (#105)
- (deps-dev) Bump jsdom (#112)
- (core) Correct DirtyRegions draining for terminals exceeding 65536 cells
- (core) Reduce visibility of internal types
- (errors) Add
Fromimpls for cross-crate error types (#110) - (unicode) Extract
beamterm-unicodecrate for shared emoji/width utils
- Set MSRV to 1.90.0
- Add
includeallow-lists to all published Cargo.toml files - (clippy) Resolve new clippy warnings across all crates
- [breaking] Remove deprecations (#111)
- Release beamterm {{version}}
- (rasterizer) Add beamterm-rasterizer for glyph rasterization on native targets
- (core) Add feature-gated native dynamic font atlas and rasterizer (#101)
- (dynamic-atlas) Increase wide glyph slots to 2048, doubling capacity (#107)
- Add
#[must_use]to builder methods and GPU resources
- (core) Add a simple terminal-emulator example
- (deps) Bump cosmic-text from 0.16.0 to 0.18.2
- (deps) Bump actions/upload-artifact from 6 to 7 (#97)
- (deps) Bump criterion from 0.5.1 to 0.8.2 (#109)
- (rasterizer) Avoid rasterizing glyphs already evicted (#108)
- (core) Eliminate RefCell usage in core
- Make
FontAtlasData,LineDecorationandGlyphfields private - [breaking] Replace bare tuples with
CellSizeandTerminalSize - Replace emojis crate with optimized implementation
- (atlas-cli) Replace cosmic-text with beamterm-rasterizer
- (atlas-cli) Restructure CLI with generate and inspect subcommands
- (atlas-cli) Remove verify-atlas binary in favor of inspect subcommand
- Add Clone to Error enums
- Release beamterm {{version}}
- Add
#[non_exhaustive]to public enums - (deps) Bump glow from 0.16.0 to 0.17.0 (#100)
- (deps) Bump winit from 0.30.12 to 0.30.13 (#98)
- (core) Re-export
FontAtlasDeserializationError - (mouse) Read coordinates from live grid state instead of cached TerminalMetrics
- (core) Chunked dirty tracking for cell buffer uploads
- Reduce public API surface
- (atlas) Make
Atlasa sealed trait
- Release beamterm {{version}}
- (core) Abstract GL backend with glow for OpenGL 3.3 + WebGL2
- (example) Add native OpenGL 3.3 example with glutin/winit in core
- (core) Add
TerminalGrid::set_bg_alpha() - (core) Add
TerminalGrid::renderQoL method that wrap prepare/draw/cleanup
- (core) Add
native-terminalexample - (core) Add
game-consoleexample showing a rotating cube behind a terminal - (deps) Bump clap from 4.5.58 to 4.5.60 (#96)
- (renderer)
TerminalGrid::cleanup()now unbinds the shader program - (core)
TerminalGrid::cell_data_mutnow setscells_pending_flush = true - (atlas)
Serializer::write_stringnow rejects strings exceeding 255 bytes. - (renderer) Prevent zero-sized terminal grids
- (atlas) Correct off-by-one in texture layer count calculation
- (core) Enforce Copy bound on GPU buffer upload functions
- (renderer) Replace web_sys WebGL2 calls with glow
- (atlas) [breaking] Propagate atlas flush errors instead of panicking
- (atlas) Convert panics to Result errors in atlas deserialization and glyph limits
- (wasm)
BeamtermRendererdelegates toTerminal, no more duplicated logic
- (tools) Remove neglected
font-previewtool - Release beamterm {{version}}
- (terminal) Detect url with
Terminal::find_url_at()(#87) - (mouse) Extend mouse events with
Click,MouseEnterandMouseLeave(#88)
- (js) Add opengl context loss/recovery button to atlas replacement example
- (deps) Bump clap from 4.5.54 to 4.5.56 (#90)
- (deps) Bump bitflags from 2.10.0 to 2.11.0 (#94)
- (deps) Bump clap from 4.5.56 to 4.5.58 (#93)
- (js) Recovery from opengl context loss was missing
- (atlas) Correct emoji classification for text-presentation-by-default glyphs
- (atlas) Expand emoji set for default atlas
- Release beamterm 0.15.0
- (renderer) Add
auto_resize_canvas_cssoption toTerminalBuilder(#85)
- Release beamterm 0.14.0
- (atlas) Runtime font atlas replacement (#73)
- (mouse) Modifier key requirements for text selection (#74)
- (renderer) Automatic device pixel ratio scaling for HiDPI displays (#83)
- (deps) Bump serde_json from 1.0.148 to 1.0.149 (#77)
- (deps) Bump lru from 0.16.2 to 0.16.3 (#76)
- (deps) Bump miniz_oxide from 0.8.9 to 0.9.0 (#75)
- (deps) Bump thiserror from 2.0.17 to 2.0.18 (#80)
- (deps) Bump colored from 3.0.0 to 3.1.1 (#81)
- (dynamic-atlas) Use atlas glyph ID for space instead of ASCII code
- (wasm) Handle zero-width characters in batch.text() (#79)
- (dynamic-atlas) Use dynamic batch size to prevent glyph clipping at large font sizes (#78)
- Release beamterm 0.13.0
- (atlas) Detect and report fallback font usage during atlas generation
- (selection) Auto-clear mouse selection when content changes (#68)
- (examples) Add performance metrics display to canvas_waves
- (static-atlas) Add
--debug-space-patternoption for pixel-perfect validation - (dynamic-atlas) Add
Terminal::builder().debug_dynamic_font_atlas()to validate pixel-perfect rendering
- (deps) Bump clap from 4.5.53 to 4.5.54 (#65)
- (deps) Bump cosmic-text from 0.14.2 to 0.16.0 (#64)
- (verify-atlas) Update for vertical layout and double-width glyphs
- (dynamic-atlas) Clip glyph rasterization to prevent pixel bleed
- (dynamic-atlas) Account for underline/strikethrough flags
- (dynamic-atlas) Handle ASCII characters in
get_symbol()(#70)
- Release beamterm 0.12.0
- (atlas) Add
DynamicFontAtlasfor on-demand glyph rasterization with LRU cache (#63)
- (deps-dev) Bump the minor-and-patch group across 1 directory with 2 updates (#62)
- (deps) Bump serde_json from 1.0.146 to 1.0.148 (#61)
- Release beamterm 0.11.0
- (verify-atlas) Atlas path is now a required argument
- (renderer) Automatic recovery from opengl context loss
- (deps) Bump actions/upload-artifact from 5 to 6 (#56)
- (deps-dev) Bump jsdom in /js in the minor-and-patch group (#55)
- (deps) Bump tracing from 0.1.43 to 0.1.44 (#58)
- (deps) Bump serde_json from 1.0.145 to 1.0.146 (#59)
- (renderer) Fix green tint in chrome-based browsers due to ANGLE uint bit operation bugs (AMD/Qualcomm)
- (renderer) Fix vertical banding artifacts in chrome-based browsers due to ANGLE mediump precision issues
- Release beamterm 0.10.0
- (atlas) Fullwidth glyph support (#49)
- (atlas) Change texture layout from 32x1 horizontal to 1x32 vertical
- (examples) Npm security hardening
- (deps) Bump tracing-appender from 0.2.3 to 0.2.4 (#50)
- (deps) Bump emojis from 0.7.2 to 0.8.0 (#39)
- (deps) Bump clap from 4.5.48 to 4.5.53 (#47)
- (deps) Bump actions/checkout from 5 to 6 (#48)
- (deps) Bump tracing from 0.1.41 to 0.1.43 (#51)
- (deps) Bump actions/setup-node from 5 to 6 (#41)
- (deps) Bump actions/upload-artifact from 4 to 5 (#42)
- (deps) Bump tracing-subscriber from 0.3.20 to 0.3.22 (#52)
- (deps-dev) Bump the minor-and-patch group in /js with 2 updates (#53)
- (deps-dev) Bump jsdom from 23.2.0 to 27.2.0 in /js (#54)
- (canvas_waves) Add profiling demo from from ratzilla
- Release beamterm 0.9.0
- (renderer) Double-width emoji support (#37)
- (atlas) Add emoji font selection via
--emoji-font
- (deps) Bump serde from 1.0.219 to 1.0.226 (#34)
- (deps) Bump clap from 4.5.46 to 4.5.48 (#33)
- (deps) Bump serde_json from 1.0.143 to 1.0.145 (#32)
- (deps) Bump actions/github-script from 7 to 8 (#30)
- (deps) Bump actions/setup-node from 4 to 5 (#29)
- (atlas) Glyph mismatch from truncated conversion
- (font) Hack 14.94pt 11x18 with Noto Color Emoji
- Release beamterm 0.8.0
- (atlas) Double glyph capacity from 512 to 1024 glyphs per font style (#27)
- (atlas) Add
--check-missingoption to CLI
- (font) Hack 14.94pt, 11x18px
- Release beamterm 0.7.0
- (renderer) Add
TerminalBuilder::enable_debug_api. When enabled, a debug API will be available atwindow.__beamterm_debug. - (atlas) Font size automatically resized to better fill the cell
- (atlas) Nudge line decoration positions to half-pixel boundaries
- (mouse) Handle cursor leaving terminal during selection
- (atlas) Fix font face using system defaults instead of user-selected fonts
- (atlas) More glyphs
- (font) Hack 16.6pt (12x20)
- Release beamterm 0.6.0
- (renderer) Add
TerminalGrid::cell_data_mutandCellDynamicmutators - (renderer) Expose
TerminalMouseHandlerpublic API for external mouse handling
- (renderer) The
mousemodule is now pub and not re-exported from the root
- Release beamterm 0.5.0
- (renderer) Add Terminal::update_cells_by_position
- (js) Batch::flush, as it now automatic
- (fragment shader) Remove all division ops and change to multiplication
- Release beamterm 0.4.0
- (renderer) Add Terminal API with builder pattern (#11)
- (renderer) Add linear and block-based copy selection (#12)
- (renderer) Remove faulty debug_assert from CellDynamic::new
- Release beamterm 0.3.0
- (js-api) Basic JS API locked behind "js-api" feature
- (renderer) Add TerminalGrid::base_glyph_id(&str)
- (renderer) Add experimental JS support
- (js) Add webpack example
- (js) Add vite+typescript example
- (github-pages) Deploy webpack and vite examples
- (api-demo) Add JS API demo
- (shader) Propagate LineEffects from
FontAtlasDatato fragment shader - (atlas) Skip control characters during generation
- (README) Add link to live demos
- (renderer) Replace bit ops in
CellDynamicwithto_le_bytes()
- Start using git-cliff
- Add developer-facing build.zsh and supporting scripts
- (renderer) Omit local main.rs/index.html from published files
- (emoji) Embed ~200 more emoji into the atlas
- Release beamterm 0.2.0
- Release beamterm 0.1.1
generated by git-cliff