diff --git a/README.md b/README.md index 92ef8be..a077c56 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ I like to think of it as a new kind of progress bar for Python, since it has amo This is a major breakthrough in `alive-progress`!
I took 1 year developing it, and I'm very proud of what I've accomplished \o/ -- now there's complete support for Emojis 🤩 and exotic Unicode chars in general, which required MAJOR refactoring deep within the project, giving rise to what I called **Cells Architecture** => now all internal components use and generate streams of cells instead of chars, and correctly interprets grapheme clusters — it has enabled to render complex multi-chars symbols as if they were one, thus making them work on any spinners, bars, texts, borders, backgrounds, everything!!! there's even support for wide chars, which are represented with any number of chars, including one, but take two spaces on screen!! pretty advanced stuff 🤓 +- now there's complete support for Emojis 🤩 and exotic Unicode chars in general, which required MAJOR refactoring deep within the project, giving rise to what I called "**Cell Architecture**" => now all internal components use and generate streams of cells instead of chars, and correctly interprets grapheme clusters — it has enabled to render complex multi-chars symbols as if they were one, thus making them work on any spinners, bars, texts, borders, backgrounds, everything!!! there's even support for wide chars, which are represented with any number of chars, including one, but take two spaces on screen!! pretty advanced stuff 🤓 - new super cool spinner compiler and runner, which generates complete animations ahead-of-time, and play these ready-to-go animations seamlessly, with no overhead at all! 🚀 - the spinner compiler also includes advanced extra commands to generate and modify animations, like reshape, replace, transpose, or randomize the animation cycles! - new powerful and polished `.check()` tools, that compile and beautifully render all frames from all animation cycles of spinners and bars! they can even include complete frame data, internal codepoints and even their animations! 👏 @@ -357,6 +357,17 @@ But how can you see these effects? Does the effect you created look good? Or is It's awesome, if I say so myself, isn't it? And a very complex piece of software I'm proud of, [take a look at its code](alive_progress/animations/spinner_compiler.py) if you're curious. +The `check` tool is much more powerful! For instance, you can see the codepoints of the frames!!! And maybe have a glimpse of why this version was so so very hard and complex to make... + +![alive-progress check tool](img/alive-spinner-check-codepoints.png) + +In red you see the grapheme clusters, that occupy one or two "logical positions", regardless of their actual sizes... These are the "Cells" of the new _Cell Architecture_... +
Look how awesome an Emoji Flag is represented: + +![alive-progress check tool](img/alive-spinner-check-codepoints-flag.png) + +The flag seems to move so smoothly because it uses "half-characters"! Since it is a wide char, `alive-progress` knows it will be rendered with "two visible chars", and the animations consider this, but compose with spaces, which occupy only one. When one uses mixed backgrounds, the situation is much more complex... + #### Factories The types of factories I've created are: @@ -615,7 +626,7 @@ The `alive_progress` framework starting from version 2.0 does not support Python ## Changelog highlights (complete [here](CHANGELOG.md)): -- 2.0.0: new system-wide Cells Architecture with grapheme clusters support; super cool spinner compiler and runner; `.check()` tools in both spinners and bars; bars and spinners engines revamp; new animation modes in alongside and sequential spinners; new builtin spinners, bars and themes; dynamic showtime with themes, scroll protection and filter patterns; improved logging for files; several new configuration options for customizing appearance; new iterator adapter `alive_it`; uses `time.perf_counter()` high resolution clock; requires python 3.6+ (and officially supports python 3.9 and 3.10) +- 2.0.0: new system-wide Cell Architecture with grapheme clusters support; super cool spinner compiler and runner; `.check()` tools in both spinners and bars; bars and spinners engines revamp; new animation modes in alongside and sequential spinners; new builtin spinners, bars and themes; dynamic showtime with themes, scroll protection and filter patterns; improved logging for files; several new configuration options for customizing appearance; new iterator adapter `alive_it`; uses `time.perf_counter()` high resolution clock; requires python 3.6+ (and officially supports python 3.9 and 3.10) - 1.6.2: new `bar.current()` method; newlines get printed on vanilla Python REPL; bar is truncated to 80 chars on Windows. - 1.6.1: fix logging support for python 3.6 and lower; support logging for file; support for wide unicode chars, which use 2 columns but have length 1 - 1.6.0: soft wrapping support; hiding cursor support; python logging support; exponential smoothing of ETA time series; proper bar title, always visible; enhanced times representation; new `bar.text()` method, to set situational messages at any time, without incrementing position (deprecates 'text' parameter in `bar()`); performance optimizations diff --git a/img/alive-spinner-check-codepoints-flag.png b/img/alive-spinner-check-codepoints-flag.png new file mode 100644 index 0000000..217d19e Binary files /dev/null and b/img/alive-spinner-check-codepoints-flag.png differ diff --git a/img/alive-spinner-check-codepoints.png b/img/alive-spinner-check-codepoints.png new file mode 100644 index 0000000..4a78ed0 Binary files /dev/null and b/img/alive-spinner-check-codepoints.png differ diff --git a/img/alive-spinner-check.png b/img/alive-spinner-check.png index b1700dc..92086ee 100644 Binary files a/img/alive-spinner-check.png and b/img/alive-spinner-check.png differ