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