The format is based on Keep a Changelog
- #83 Fixed scrolling bug when window created with specific constructor. (merged PR from @PAzureOP)
- (This is fixed already in 7.x alpha released, hotfix to support 6.x users.)
- #72 Fix critical bug : Embedded CrLf cause window isolation to break.
- Form Write now supports fields as well as properties.
Konsole.Platform.Windows.HighSpeedWriter
(native windows driver) now included and no longer an external package.
- new
IConsole
interfaces for simpler abstractions, see new contract docs [here]
- #40 WriteLine conflicts with String.Format, support string containing {0} {json} tokens.
- #41 If a
Write
ends exactly on the last column, then the cursor is not advanced to the next line.
- Printing objects with nullable fields now prints "Null" for any nullable fields.
- #39 Add double to NumericTypes in FieldReader.
- #43 Form.Write(null) throws exception, new Form().Write(null); should not throw exception. Instead it should write "Null"
WhenOpeningInlineShould_open_window_at_current_cursorTop()
: OpenBox (inline) when supplying only a width and a height was not opening the new inline window at the current cursor position.
WhenOpeningInlineShould_open_window_at_current_cursorTop()
: OpenBox (inline) when supplying only a width and a height was not opening the new inline window at the current cursor position.
Window.OpenBox
: Open a styled floating or inline window with a lined box border with a title. Styling allows for setting foreground and background color of the Line, Title, and body, as well as the line thickness, single or double. Returns a window instance representing the window inside the box. The returned instance is threadsafe.- #39 Add double to NumericTypes in FieldReader.
- when not supplying the x,y start position for a window, the window was supposed to be created inline, instead the window was being created at 0, 0. Fixed, now it's created at the starting Y position and left = 0.
Window.Open
now returns a threadsafe window. (ConcurrentWindow
wrapping the newly created window) All static constructors now return threadsafe windows.
- fixed nuget tags
new ConcurrentWriter()
now returns a thread safe concurrent writer that continues writing to the current console as if it were the console. Previously the concurrentwriter required a window instance. That still exists but you can now create aConcurrentWriter
without needing to first create a window. This allows for thread safe writing to the console without needing a window. See the new section in the readme underThreading
for more information and for examples.
- when rendering a window 3 lines tall the second row line char is incorrect.
┌──── headline ────┐ ┌──── headline ────┐
─ content here ─ => │ content here |
└──────────────────┘ └──────────────────┘
myWindow.SplitTopBottom()
- : Split the current window Top and bottom and return a tuple. Default to use a single middle line, instead of the older double. (Was missing from previous release)
stackoverflow
bug when calling SplitColumns.
myWindow.SplitLeftRight()
: Split the current window left and right and return a tuple. Default to use a single middle line, instead of the older double.
void Fill(IConsole con) => {
con.WriteLine("one");
con.WriteLine("two");
con.WriteLine("three");
con.WriteLine("four");
}
(var left, var right) = win.SplitLeftRight("left", "right");
Fill(left);
Fill(right);
// gives you ...
┌ left ─┬─ right ┐
│two │two │
│three │three │
│four │four │
└───────┴────────┘
- more tests and small stabilisations.
- full .NET core release! (Konsole is a .NET standard 2.0 package) and (Konsole.Platform.Windows is a .NET framework 4.6.1 package)
- package is built and tested on both Ubuntu and Windows on Github using github actions for devops. (see dotnetcore.yml)
- #32 : speed, speed, speed! (speed improvements)
- Window.DoCommand made static
- #33 : add "Disable screen resizing".Available as new method
.LockConsoleResizing()
onWindow
.
- upgrade devops builds to use new Github pipelines, convert to new .net core project format and use dotnet test? possibly include this as key 4.0 update.
- Added SplitRows with wildcard support for creating any shape UI, using rows and columns.
- Move Konsole Layouts and Konsole Forms to main Konsole namespace, so that it's available out of the box and more discoverable, so that users can use SplitLeft, SplitRight, SplitTop, SplitBottom.
- Moved drawing into main Konsole Namespace.
- #28 : fix crash after resize (rough Proof of concept without tests, manual testing only due to complications of testing window resizing, and want to get a patch out quickly)
- #26 : fix bug where ProgressBar and ProgressBarSlim would report incorrect percentage (out by 1%) for some values.
- #18 : Nested floating windows dont scroll properly.
- New attributes,
AbsoluteX
andAbsoluteY
toIConsole
so that you can know the absolute position of a window, in addition to it's relative position to it's parent. - Added nested window demo code to the sample project.
- had a problem uploading package to nuget, so created a new release to see if I can get past it with a fresh upload. (previous upload was hanging at 17 hours, doh!)
- Correct version number.
##[3.1.0]
- deleted. (the Konsole.dll was given the incorrect version number.)
- Fixed serious bug write and write-line when scrolling results in first Write's text being lost #12
- Accidentally included
Konsole 0.0.2
as a dependancy in the [3.0.1] packages. Removed that.
- quite a lot, leaving this blank-ish and will update shortly.
- highlight changes
- threadsafe progressbars and windows, with tests for thread-safe-ness.
- new class
ConcurrentWriter
to handle thread sychnonisation.
- More or less, added menus, lots of breaking changes of signatures (cleanups to make easier to understand)
- Highlight change is a new slimline itemless
ProgressBar
with option to revert to old behavior. - New draft
Menu
with option to have menu items that run as background tasks. (useful for writing simple client-server demo projects with client and server each outputting to different windows.)
- Menus
- ProgressBarSlim
Window.TopHalf()
Window.BottomHalf()
Window.OpenInline(console, height)
: opens a new window 'inline' full width of the console, 'height' rows tall, and moves the cursor to below the window. SeeWindow.OpenInlineShould
test.MockKeyboard
: Mock keyboard for queueing up keystrokes. Includes Autoreply. Use to simulate user input during unit tests.IReadKeys
: for console input.Menu
withMenuItem
: for rendering menus and capturing user input, seeKonsole.Sample.Program
for examples.- Threadsafe windows. Windows opened with
Window.Open
andWindow.OpenInline
are now threadsafe. Specifically you can now reliably create multiple output windows, and have seperate threads e.g.Task.Run
threads for each window. SeeKonsole.Tests
Slow\WindowConcurrencyTests`. - new Test project
Konsole.Tests.Slow
for slow running tests. Specifically concurrency tests, that take a few seconds each. 3 to 5 seconds on my dev laptop.
- Can set
ProgressBar.Max
after creating a progressbar, and UX will be updated.
- fix
ProgressBar
constructor not threadsafe. ProgressBar.Refresh
withnull
text throws exception.
- new readonly property
ProgressBar.Y
: Current Console Y position. - new readonly property
ProgressBar.Line1
: Current Line1 Text. - new readonly property
ProgressBar.Line2
: Current Line2 text. - Update Sample paral
(l)
el test, to use fake directories and fake file names. TestData.MakeFileNames
: generate random (unique) file names.public static string[] MakeFileNames(int howMany = 4200, params string[] extensions)
TestData.MakeNames
now supports option to generate names without special characters.TestData.MakeObjectNames
: New test data method to generate believable random object namespublic static string[] MakeObjectNames(int howMany = 4200, string format = "{0}{1}")
New core Window
functionality, plus big class renames, main interface IConsole
has changed from 1.0
and 2.0
.
-
refactor all constructors, move
IConsole
parameter to 1st param. -
rename
Form.Show
toForm.Write
(form is written at current cursor position, and position is updated) -
change
IConsole
WindowWidth
from amethod
to aproperty
. -
rename
Console
toWindow
-
rename
ConsoleWriter
toWriter
-
rename
.LinesText
toBufferWritten
-
rename
HilighterBuffer
toBufferHilighted
-
rename
.Buffer
toBufferWrittenString
-
rename
.TrimmedLines
to.BufferWrittenTrimmed
-
rename 'echo' to (isMockConsole and invert) or, override behavior and remove altogether from Window.
-
Cell
class gets extra property,Background
-
Cell
property rename.Color
to.Foreground
-
BufferedWriter
methods standardised..Buffer
string[]
Get the entire buffer (all the lines) regardless of whether they have been written to or not, untrimmed..BufferString
string
Get the entire buffer (all the lines) regardless of whether they have been written to or not, untrimmed, as a singlecrln
concatenated string..BufferWritten
string[]
Get the entire buffer . Only the lines that have been written to, from topmost to bottommost, untrimmed..BufferWrittenTrimmed
string[]
Get the entire buffer . Only the lines that have been written to, from topmost to bottommost, Trimmed..BufferWrittenString
string
Get the entire buffer for all lines written to, as a singlecrln
concatenated string..BufferHilighted
string[]
returns an 'approve-able' text buffer where each character is represented by 2 characters with one of of them representing the background color of the buffer.
- new
Window
class, with significant functionality, ... allowing users to print to windows sections of the screen, including either clipped or scrolling of output when out exceeds window.
var client = new Window(0, 0, 40, 10);
var server = new Window(41, 0, 40, 10);
server.WriteLine("Server started, listening on 'tcp://*:10001'.");
...
client.WriteLine("enter commands, exit to quit");
...
- more demos, and demos now more useful for learning how
Konsole
works. SeeKonsole.Sample
project. - refactored demos to seperate demo classes, seperating functionality being demoed.
- Faster window printing. was printing character by character, very ...VEERY SLOW!) not good enough!
BackgroundColor
added toIConsole
- new method
BufferString
- new property
Cell this[int x, int y]
onBufferedWriter
(allows for interrogating fore and background colour at X,Y position on a buffered writer.)
- fix bug , printing off screen was crashing.
- removed quite a bit of duplication in the unit test code.
- fix : Window sometimes not printing
ForegroundColor
correctly. - fix clear issues. Demo program not clearing properly.
- fix bug with
PrintAt
,Write
andWriteLine
with text that overflows, causing crash. - fix bug when calling clear on bufferedWriter and crashing. (was not resetting Y position.)
- fix bug, calling
refresh
on progress bar changing cursor position. - fix bug, Write (not WriteLine) causes progress bar to print from last X position and overflows.
- fix bug with
ProgressBar
not moving cursor down two lines to givepb
space to display.
- new very simple TestData
Konsole.Testing.TestData
class to help when building and prototyping console utilities and applications. - renamed MockConsole to TestConsole. (It's not a mock, it's a real active class with important behavior to help build testable code.)
- Split IConsole into IWriteLine and IConsole to allow for being more specific about your dependancies, .i.e. what exactly your class depend on when you state you require a IWriteLine as a dependancy, tells you a lot more than 'I Need access to the console'. (Most classes often simply need acess to write a few bits and bobs to the console, in which case I expect that IWriteLine will be the most commonly used interface.)
- oops, sposed to be CamelCase, not pascalCase, i.e. captalise class names in
name.page.ts
, so thatyo gf:i2 test-apple
generatesclass TestApplePage
- Support page names with hyphens, convert the name into camelcase so that the generated
{pagename}Page
class is valid. e.g.my-games
becomesclass myGamesPage
instead ofclass my-gamesPage
.
- fix incorrect documentation stating that the default command is
yo gf i2 {pagename}
that doesnt work. Correct syntax requires colon i.e.yo gf:i2 {pagename}
- first useful generator,
yo gf i2 {pagename}
that generates the 1 folder + 3 files.