summaryrefslogtreecommitdiff
path: root/documents/CHANGELOG.org
blob: 6135f40e225b261e75f6208f61d934c6b8709d7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
#+TODO: TASK | DONE

* Release Timeline

Next uses [[https://semver.org/][Semantic Versioning]].  In short, given a version number
MAJOR.MINOR.PATCH, we increment the:
- MAJOR version when we make incompatible API changes,
- MINOR version when we add functionality in a backwards-compatible manner, and
- PATCH version when we make backwards-compatible bug fixes.

** TASK 1.3.0
*** TASK VI Emulation Layer
+ Add a VI Emulation layer to support VIM like keybindings and
  functionality
*** TASK Ad Blocking Support
+ Add support for content blocking using the WebKit API
*** TASK Fix search/occur implementation
*** TASK Add download support
** DONE 1.2.0
*** DONE Add RELOAD-CURRENT-BUFFER command and bind it to C-r
*** DONE Add NEXT-VERSION command
It reports the commit hash if it was not built on a tag version.
*** DONE Add cookie support
GTK implementation has per-buffer cookie support.
*** DONE Report page load status to echo area
*** DONE Add COPY-TITLE command and bind it to M-w
*** DONE Add COPY-ANCHOR-URL command and bind it to C-x C-w
*** DONE Add COPY-URL command and bind it to C-w
*** DONE Add PASTE command to minibuffer and bind it to C-v and C-y
*** DONE Add common movement commands to minibuffer
For instance ~cursor-forwards-word~ is bound to =M-f= by default.
*** DONE Add "echo area" to display status messaages
*** DONE Set window title dynamically
*** DONE Embed/Replace build dependencies in the Cocoa port
It now builds out of the box, with no need for external libraries.
*** DONE Add commandline arguments to the Cocoa platform port
*** DONE Report user configuration errors
*** DONE Save platform logs to /tmp/next-$USER/
** DONE 1.1.0
*** DONE Overhaul start-up and exit processes
*** DONE Add --init-file command line parameter
*** DONE Fix a number of issues with GTK-WebKit
*** DONE Enhance logging with GTK-WebKit
See /tmp/next-webkit-gtk.log by default.
Debug message can be included by exporting the =G_MESSAGES_DEBUG=all=
environement variable.
*** DONE Add recipe for Guix
*** DONE Scroll selection in minibuffer
** DONE 1.0.0
CLOSED: [2018-11-28 Wed 18:10]
*** DONE GNU/Linux Frontend
CLOSED: [2018-11-28 Wed 18:10]
- Create frontend that renders the new Next GUI
*** DONE MacOS Frontend
CLOSED: [2018-11-28 Wed 18:10]
- Create frontend that renders the new Next GUI
*** DONE Lisp Core Remote Backend
CLOSED: [2018-11-28 Wed 18:10]
- Create abstract interface for controlling frontends.
- Interface must be asynchronous
- Interface should be connection agnostic, should support BSD style
  sockets for first iteration, and Unix domain sockets for second
  iteration
** DONE 0.08
CLOSED: [2018-03-02 Fri 14:21]
*** DONE Execute Extended Command
CLOSED: [2018-03-01 Thu 21:33]
Allow the user to run M-x to execute any extended command.
*** DONE Hydra Functionality
CLOSED: [2018-03-02 Fri 14:21]
- Implement functionality similar to the famous [[https://github.com/abo-abo/hydra][Hydra package]] by Oleh
  Krehel
*** DONE Add Hook System
CLOSED: [2018-02-05 Mon 23:49]
- Model Hook system similar to the Emacs style hooks
  (https://www.gnu.org/software/emacs/manual/html_node/emacs/Hooks.html)
*** DONE Add ability to inspect commands
CLOSED: [2018-02-05 Mon 18:34]
*** DONE Continuation Passing Style Input
CLOSED: [2018-02-02 Fri 01:18]
- Allow user to use a (input* ()) type binding in which they can
  prompt the user for input rather than the current style which
  involves setting the input handling as part of the lambda registered
  in the keybinding
- Convert existing functions to use continuation passing style input
*** DONE Define-Command
CLOSED: [2018-01-18 Thu 12:55]
- Implement define-command macro with overhaul for how keybindings are
  set/handled in functions
- Convert all user invokable functions to use define-command
*** DONE Support XDG Configuration
CLOSED: [2018-01-15 Mon 00:06]
- Based on the spec here:
  https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
** DONE 0.07
CLOSED: [2018-01-02 Tue 16:06]
*** DONE GTK Port
CLOSED: [2018-01-02 Tue 16:06]
- Create GNU/Linux GTK Port
** DONE 0.06
CLOSED: [2017-12-17 Sun 01:13]
*** DONE Fix Compilation
CLOSED: [2017-12-17 Sun 01:13]
- Compilation loading of Quicklisp should check both ~/.quicklisp as
  well as ~/quicklisp and load whichever it finds first
*** DONE User Customization Example
CLOSED: [2017-12-17 Sun 01:10]
- Create an example in the Documents directory that details the
  creation of a simple mode, and a way of customizing Next
*** DONE Jump to Heading
CLOSED: [2017-12-16 Sat 00:49]
- Implement something akin to ijump which allows you to jump to any
  heading on a given page represented by H1 H2 H3 tag etc
*** DONE Search within Buffer
CLOSED: [2017-12-14 Thu 22:15]
- Add ability to search within the buffer
*** DONE Add Search Function
CLOSED: [2017-12-11 Mon 18:10]
- Minibuffer should allow searching via a search engine
*** DONE Buffer contains list of modes
CLOSED: [2017-12-11 Mon 00:26]
- The buffer should contain a list of all of the modes that have been
  applied to it, so that no memory is lost when switching modes
*** DONE Add Slime Support
CLOSED: [2017-12-10 Sun 01:55]
- Add slime support to the compiled version of Next
*** DONE Reload Init Function
CLOSED: [2017-12-07 Thu 15:48]
- Allow function to reload init
*** DONE Add Help System
CLOSED: [2017-12-07 Thu 13:07]
- Add basic help system that can be extended
- Add the ability to look up global variables
*** DONE Extend Bookmark Support
CLOSED: [2017-12-06 Wed 14:13]
- Allow user to manually enter the bookmark URL into the minibuffer
  directly
- Allow the user to create a bookmark from a link-hint anchor
** DONE 0.05
CLOSED: [2017-11-26 Sun 20:03]
*** DONE Minibuffer selection
CLOSED: [2017-11-26 Sun 00:43]
- Should be able to move up and down through candidates using C-n and
  C-p
- Minibuffer should return actual object in question instead of doing
  strange magic with strings
*** DONE Minibuffer set text
CLOSED: [2017-11-23 Thu 14:59]
- Allow the setting of the Minibuffer text
- Setup the automatic clearing of the Minibuffer previous text
*** DONE Add Link Hints
CLOSED: [2017-11-23 Thu 00:29]
- user should be able to navigate all links entirely by keyboard
- user should be able to open link hints in a new buffer with focus
- user should be able to open link hints in a new buffer without focus
*** DONE Fix keybindings within repl
CLOSED: [2017-11-24 Fri 16:37]
- Allow keybinding invocation within repl overriding ccl cocoa IDE
*** DONE History
CLOSED: [2017-11-26 Sun 17:59]
- History will be stored in a DB (possibly sqlite)
**** DONE History is searchable
CLOSED: [2017-11-26 Sun 17:59]
- History has a query language that can be used to look for different
  things (e.g. date, include exclude regex, etc)
- Because history is stored in sqlite DB, user can create queries
  against their history
**** DONE Set-url history suggestion
CLOSED: [2017-11-26 Sun 20:03]
- History should be suggested by set-url
- Minibuffer input should be able to handle different use cases for
  different input methods
**** DONE Update Manual
CLOSED: [2017-11-26 Sun 20:03]
- Update manual with latest capabilities and changes to codebase
** DONE 0.04
CLOSED: [2017-11-20 Mon 17:57]
*** DONE Isolate backend QT Code
CLOSED: [2017-10-23 Mon 01:23]
- Break apart QT code into separate file
- Remove all top-level side effects
- Modularize GUI backend
**** DONE Write Cocoa backend
CLOSED: [2017-10-15 Tue 13:45]
- Use CCL Cocoa Library to use native WebKit backend
*** DONE Bookmarks
CLOSED: [2017-10-10 Tue 01:06]
- Bookmarks will be stored in a DB (possibly sqlite) with information
  about them, they'll be navigable via a completion buffer
** DONE 0.03
CLOSED: [2017-10-05 Thu 23:50]
*** DONE Write Manual Base
CLOSED: [2017-09-24 Sun 15:38]
- Write basic information and configuration within the manual as a
  "users" guide
*** DONE Improve in Code Documentation & Architecture
CLOSED: [2017-09-24 Sun 18:57]
- Create much clearer picture of how everything functions together,
  make cleaner architecture diagrams showing how everything links
  together
- Document all functions
*** DONE OSX Compilation
CLOSED: [2017-10-05 Thu 23:45]
- Modify make.lisp script to create a binary that grabs all of the
  dependencies and creates a executable that can be deployed on OSX
- Use `macdeployqt` to copy the core qt libraries to
  `Next.app/Contents/Frameworks`
- Use `otool -L Next.app/Contents/MacOS/next` to find the linked
  frameworks that are not located in `Next.app/Contents/Frameworks`,
  manually copy them to `Next.app/Contents/Frameworks`
- Use install_name_tool to update the now copied frameworks in
  `Next.app/Contents/Frameworks`
- For more info please see: http://doc.qt.io/qt-5/osx-deployment.html
*** DONE Kill Buffer
CLOSED: [2017-10-05 Thu 23:48]
- Add function to kill buffer, bind to C-k
** DONE 0.02
CLOSED: [2017-09-21 Thu 00:15]
*** DONE History Tree Mode
CLOSED: [2017-09-20 Wed 22:42]
- Create a mode that allows traversal of the tree created in the
  history of a document-mode buffer
*** DONE Cancel Within Minibuffer mode
CLOSED: [2017-09-17 Sun 14:53]
*** DONE Within document-mode the history will be represented as a tree
CLOSED: [2017-09-14 Thu 01:17]
- forwards and backwards navigation creating new nodes and
traversals. This will allow for all points in history to be reachable,
and a future expansion designed to recreate the functionality offered
by undo-tree: https://www.emacswiki.org/emacs/UndoTree
**** DONE Ability to navigate forward and backward in history
CLOSED: [2017-09-20 Wed 19:32]
- using the key binding M-f, and M-b for forward and backward
  respectively
- should only work if there is one child
**** DONE Forward navigation with more than one child prompts mini-buffer selection
CLOSED: [2017-09-21 Thu 00:15]
- If a user tries to navigate forward but there is more than one
  possible destination available, show the possibilities as an
  auto-completable list in the minibuffer
*** DONE CLOS
CLOSED: [2017-09-13 Wed 18:09]
- Convert struct usage to CLOS
*** DONE Scrolling
CLOSED: [2017-09-12 Tue 19:04]
- The ability to scroll up and down within a document
  - using C-n to scroll down
  - using C-p to scroll up
** DONE 0.01
CLOSED: [2017-09-09 Tue 19:05]
This version describes the minimum usability as a basic browser, with
the following features:

- Implementation of document-mode, the major-mode that all modes extend
- Ability to set key bindings for major modes
- Ability to browse and change buffers using C-x b

*** Definitions
Buffer: All documents are contained in an object type called a
buffer. As an example, a document on the web located at
http://www.url.com can be contained in a buffer with a similar name. A
buffer is composed of all elements (text, bitmaps, etc) necessary to
render a single document.

Mode-map: A keyboard hot-key to function mapping.

Minibuffer: A special buffer dedicated to interacting with Next
commands in progress. This buffer appears at the bottom of the screen
and is collapsed when not in use.

Major-mode: A major mode is defined as the primary mode of interacting
with a particular buffer. A mode defines a set of key bindings, hooks
for actions, and presentation details for a given view. At any given
time, there may only be one major mode for a buffer. All major modes
are composed of entirely lower case alpha with dashes used as a
separator. Every major mode has a keyboard mapping that follows this
pattern: document-mode, will have a mode map called document-mode-map.

Minor-mode: A minor mode is a secondary mode of modifying a buffer's
behavior and content. There can be an infinite amount of minor modes
applied to a given buffer. All minor modes are composed of entirely
lower case alpha with dashes used as a separator.

*** DONE Major mode: document-mode
CLOSED: [2017-08-28 Mon 00:29]
All major modes inherit from document mode. Document mode provides the
basic framework for mapping global commands and defining general
behavior.

Document-mode will be the basic major mode for opening documents on
the web. document-mode will extend document-mode, and thus will
inherit all of its key bindings. If there is a conflict of key
bindings, the lowest scope key binding will be prioritized. As a
concrete example, all bindings defined in a minor mode will override
any defined in document-mode. In the first release, document-mode will
support the following key bindings and features:

For the first release, document-mode must have:

**** DONE Ability to open a new html document with the key binding C-l
CLOSED: [2017-08-14 Mon 11:31]
Opening of new pages in the same buffer can be invoked by the key
binding C-l. This key binding will open up the Minibuffer and prompt
the user to enter the url which they would like to visit.
**** DONE Ability to open new buffers with the key-binding M-l
CLOSED: [2017-08-28 Mon 00:28]
Opening of new buffers by invoking M-l will open the Minibuffer.
Within the Minibuffer, the user will be presented with a prompt in
which they can enter in the url they would like to visit in a new
buffer.

- May possibly switch implementation to "hide" rather than "close"
  widgets, possibly using a widget pool as well for memory performance

*** DONE Ability to set Key bindings
CLOSED: [2017-08-12 Sat 16:34]
The following syntax should be used to set a key binding:

(define-key x-mode-map (key "C-h") 'function)

    Where x-mode-map is a keymap relating to a mode (major or minor).

    Where 'function is a function that is passed to define-key to
    trigger a function upon a key press.

(key "C-h") defines that the keyboard sequence Control + h is
represented. For the keyboard syntax, the following keys are
described:

- S = super key (windows/command key)
- C = control key
- M = meta key (alt key)

A chain of key bindings may be set in the following manner:

(key "C-x C-s") will denote the following key presses, Ctrl + x, followed
by Ctrl + s immediately thereafter.

Upon the definition of a "chained" keyboard binding, any elements
in the chain may not be used individually. For example, binding
"C-x C-s", will prohibit the binding of "C-x" by itself. This is
because there would be ambiguity in regards to which key binding
is intended to be invoked.

*** DONE Ability to browse and change buffers
CLOSED: [2017-09-05 Tue 00:58]
The user will be able to invoke the key binding C-x b to bring up
a menu in the Minibuffer in which they will be able to select a new buffer
to bring to focus.
**** DONE Minibuffer Completion
CLOSED: [2017-09-10 Sun 01:42]
Switch buffer should demonstrate an example of minibuffer completion
candidates
*** DONE Compilation OSX
CLOSED: [2017-09-04 Mon 00:09]
- One "click" build system for deployment on OSX
- Organization of build systems into lisp files, no shell scripts