68a8a00aba74859466e71cda42fe67712e61824c
[elpher.git] / ISSUES.org
1 #+TITLE: Development notes/ideas
2 #+TODO: OPEN | CLOSED INVALID
3
4 * Enhancements
5
6 ** OPEN Allow multiple elpher buffers
7
8    Shouldn't be too hard, just need elpher-current-node to be
9 buffer-local and allow various buffer-switching procedures to
10 do something sensible.
11    
12 ** OPEN Remove "redraw" command
13 This is only necessary for returning from displaying the raw
14 server response.  If I can provide a better way of doing that
15 then we can get rid of redraw entirely.
16
17 ** OPEN Replace support for user-specified starting pages
18 This used to be available, but was removed during a refactor.
19
20 ** OPEN Allow for grouping of bookmarks
21 To support this I'd like to add a bookmark page specific
22 set of keybindings.  Currently all bindings available on
23 the bookmark page are available everywhere else.  But
24 expanding and collapsing bookmark groups sounds like it
25 might need more specific bindings.
26
27 ** OPEN Implement Gemini support [88%]
28    
29 Here is the checklist of features required before release:
30 - [X] basic genimi transactions
31 - [ ] gemini transactions requiring client certificates
32 - [X] gemini input handling
33 - [X] gemini map files (text/gemini)
34 - [X] Support for plain text responses (text/*)
35 - [X] Support for image responses (text/image)
36 - [X] Support for mime-specified character encodeing
37 - [X] Saving responses to disk
38 - [X] Viewing raw responses
39   
40 The last few will be made infinitely easier if we factor the
41 gopher "getter" code differently.
42
43 * Bugs
44
45 ** OPEN History loops <2019-11-08 Fri>
46
47 Occasionally elpher gets stuck in a "history loop" where a
48 node is its own grandparent.  Obviously this sucks, as history
49 is elpher's main mechanism for making gopherspace exploration
50 painless.
51
52 I suspect the problem is in either ~elpher-visit-node~ or
53 ~elpher-visit-parent~.
54
55 * Completed improvements
56   
57 ** CLOSED Turn on lexical scoping
58
59    A branch exists for this, but there are some compilation kinks
60 to iron out.
61
62   
63 ** CLOSED Implement support for telnet entries
64
65 Similar to http entries, telnet entries will be handled by code
66 external to elpher. However it seems I made http entry handling a
67 special case, and I don't want another!  So the only option is to
68 bring both http and telnet entries back into the fold by representing
69 them both as standard nodes and having the grunt work done by getter
70 functions.
71
72 ** CLOSED Allow users to access selected and current node details.
73    
74 ** CLOSED Implement bookmark system
75
76   Currently the bookmark page replaces the current page, and it
77   does so silently (i.e. it doesn't become part of the link hierarchy).
78   I think this is a mistake, as it results in confusing behaviour when
79   traversing the link hierarchy after visiting one of the bookmarked links.
80
81   Instead, I think I should
82   1. Make the bookmark page part of the hierarchy, and
83   2. Reinstate the visited node hash table to avoid excess link hierarchy pollution.
84
85   In order to accomplish 1. it will be necessary to make the bookmark page renderer
86   a proper getter function, and one that never caches the contents of the buffer.
87
88   Actually, I might have to think about that a bit more.  I don't know
89   how to answer the question of what the best thing to do with node
90   parent links when using a cached node in place of a new node.  (Maybe
91   I always update node.parent unless parent is already an ancestor of
92   node?)
93
94   
95 ** CLOSED Support character encoding diversity
96
97 ** CLOSED Make URLs the basic address type.
98 Currently I waste a lot of effort converting between
99 URL and non-URL representations.  This is unnecessary, and
100 actually makes lots of things uglier.
101
102 For example, the bookmarks file contains addresses in Elpher's
103 internal representation, whereas I expect users would prefer
104 it contain URLs.
105
106 So the idea would be for (elpher-node-address node) to be
107 a either a string or a symbol, with symbols used for "special"
108 pages (bookmarks, start page, etc).  The getter functions
109 `elpher-address-selector' etc will still do what they currently
110 do, but will process the URL to do it.
111
112 This also means that non-gopher URLs will be explicitly represented
113 as such: no more abusing the "h" type for these.
114
115 * Closed issues
116
117 ** CLOSED Org mode faces are not present in recent emacs versions
118 Even 26.1 doesn't seem to have these.  This means that, for many
119 users, elpher doesn't show any difference between any of the
120 item types.  Not a major problem at all, but the faces we inherit
121 from should definitely be ones which have been present for much
122 longer.  Perhaps the font lock mode faces are the way to go after
123 all.
124
125 Update: changed all default faces to inherit from font-lock and basic faces.
126
127 ** CLOSED URL-centric addressing breaks bookmark file compatibility
128    
129 Need a way to allow people to rescue their old bookmark files
130 following this update.