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