Fix package reference
[nikiroo-utils.git] / docs / worklog.md
CommitLineData
55d2b2c2
KL
1Jexer Work Log
2==============
3
42873e30
KL
4August 7, 2017
5
6Had trouble sleeping, what with a bunch of imaginative thoughts for
7this release. jexer.backend will be the ultimate destination for
8jexer.session and most of jexer.io. TerminalReader will be the
9interface for keyboard and mouse events. cmScreenConnected and
10cmScreenDisconnected will be new events to represent a screen
11appearing/disappearing, and MultiBackend will be a new backend
12multiplexer that goes full XRandR. Several new demos demonstrating
13multi-screen support will be coming along.
14
15August 6, 2017
16
17Time to clean up more API, particularly between Backend and Screen.
18Both of these will be interfaces soon, so that one could easily
19subclass JComponent and implement both Screen and Backend. The
20original code evolved out of Qodem, where screen.c and input.c were
21two different things leading to ECMA48Screen and ECMA48Terminal, but
22now there is really no need to keep them separate. It also
23complicates the constructors, as these are basically friend classes
24that have used package private access to get around their artificial
25separation.
26
27When I get this done it should be a lot easier to do any of:
28
29* Pass a JFrame or JComponent to SwingBackend and have it add itself,
30 like any other Swing widget.
31
32* Construct a SwingBackend and add it to any regular JComponent.
33
34* Have multiple TApplications running inside the same Swing
35 application, including having actions affect each other. (Will also
36 need to ensure that TWidgets/TWindows are not in different
37 TApplication collections.)
38
39* Build a Backend/Screen multiplexer, so that one could have a ECMA48
40 TApplication listening on a port and a local Swing monitor for it.
41
42* Build a Backend/Screen manager, so that one could have multiple
43 ECMA48 screens acting as a single large screen (e.g. XRandR).
44
45Now I need to decide which package will collect Backend, SessionInfo,
46and Screen. jexer.io has some java.io stuff, so it stays anyway.
47
2fef9c6e
KL
48July 28, 2017
49
50Got very busy with my meatspace life, now getting a chance to come
51back around.
52
53I gave up on TEditor knowing about graphemes, instead pulling back to
54simple Cells. This will be better anyway in the long run, as getting
55grapheme support in Screen someday will also get it for me in TEditor
56for free. But it does mean that TEditor will chew through much more
57RAM than it needs to for a text file. Performance optimization will
58come someday. But this means I can also go back to gcj, because I
59really like its warnings about unused imports.
60
61I've got a POM stubbed in, and created an account over at sonatype.
62If it isn't too hard, I will try to get 0.0.5 released into the maven
63universe. But that is still a bit away, I need TEditor running with
64syntax highlighting first.
65
66July 17, 2017
67
68Focus-follows-mouse is in, as is NOCLOSEBOX.
69
8c236a98
KL
70July 15, 2017
71
72I think I have cleaned up most of the window show/hide/activate mess
73in TApplication. Demo4 has some cool interactions between a
74background TDesktop and several foreground TWindows, which helped
75expose bugs.
76
77July 9, 2017
78
79While working on TWindow.hide/show I decided that I am sick of
80TApplication's active window handling. TApplication makes lots of
81assumptions, things are too fragile between modal and not, and one
82cannot easily say window.activate(). So I will also be changing that
83too. ... Code is still a bit of a mess, but hooks are in place at
84least for show/hide/activate.
85
86July 8, 2017
87
88Qodem 1.0.0 released last month, I had a vacation, and a Jexer user
89(nikiroo) started opening up pull requests. :-) So back unto the
90breach we go!
91
92TButton is now animated so that there is some feedback when selected
93via keyboard. StringJustifier was written which permits TText's to
94have left/centered/right and full justification. TDesktop is now in
95too which can act as a permanent max-sized window without borders.
96
97Next up is Viewport, an interface to collect scrollbar API, and then a
98cleaner API for scrollable widgets and windows. After that is more
99window API: hide/show/maximize/restore, and unclosable windows. I am
100cherry-picking bits from @nikiroo's PRs, which will likely break them
101before it fixes things, but I will find some way to get Niki credited
102with those pieces.
103
e685a47d
KL
104March 21, 2017
105
106I am starting to gear up for making Jexer a serious project now. I've
107created its SourceForge project, linked it back to GitHub, have most
108of its web page set up (looks like Qodem's), and released 0.0.4. And
109then this morning saw an out-of-bounds exception if you kill the main
110demo window. Glad I marked it Alpha on SourceForge...
111
112Yesterday I was digging around the other Turbo Vision derived projects
113while populating the about page, and made a sad/happy-ish realization:
114Embarcadero could probably get all of them shut down if it really
115wanted to, including Free Vision. I uncovered some hidden history in
116Free Vision, such that it appears that Graphics Vision had some
117licensed Borland code in it, so there might be enough mud in the air
118that Free Vision could be shut down the same way RHTVision was. But
119even worse is the SCOTUS ruling on Oracle vs Google: if APIs are
120copyrighted (regardless of their thoughts on fair use), then any
121software that matches the API of a proprietary project might find
122itself subject to an infringement case. So that too could shut down
123the other API-compatible TV clones.
124
125Fortunately, Jexer (and D-TUI) is completely new, and has no API
126compatibility with Turbo Vision. Jexer could be a new root to a whole
127generation of TUI applications.
128
a7986f7b
KL
129March 18, 2017
130
131TStatusBar is working, as is "smart" window placement. Overall this
132is looking quite nice. Found a lot of other small paper cut items and
133fixed them. It looks absolutely gorgeous on Mac now.
134
135Tomorrow I will get to the public wifi and get this uploaded.
136
137Time to call this 0.0.4 now though. We are up to 32,123 lines of
138code.
139
55d2b2c2
KL
140March 17, 2017
141
142Jexer is coming back to active development status. I had a lot of
143other projects ahead of it in the queue, mostly Qodem but also Jermit
144and of course lots of actual day job work keeping me too tired for
145afterhours stuff. But here we are now, and I want to get Jexer to its
1461.0.0 release before the end of 2018. After that it will be a
147critical bit of function for IWP and NIB, if I ever get those going.
148I need to re-organize the demo app a bit so that it fits within 80x25,
149and then get to TStatusBar.
150
151A status bar will be an optional part of TWindow. If it exists, then
152it will be drawn last by TApplication and get events routed to it from
153TWindow's event handlers. This will have the nice effect that the
154status bar can change depending on which window is active, without any
155real extra work on TApplication's part.
156
157Putting together a proper TODO now, with release and regression
158checklists. I think I will see if jexer is available at SourceForge,
159and if so grab it. Perhaps I can put together some good Turbo Vision
160resources too. At the very least direct people to the Borland-derived
161C++ releases and Free Vision.
162