From 18b2e8a8d4a613789f3f0148288b3ee62fbcd57b Mon Sep 17 00:00:00 2001 From: cage Date: Thu, 18 May 2023 15:38:34 +0200 Subject: [PATCH] - updated version number; - updated documentation; - [GUI] fixed again the mouse pointer's shape when moving in the gemtext window: sometimes got stuck in the 'hand2' shape. --- ChangeLog | 1119 ++++++++++++++++++++++++++++++- NEWS.org | 4 + README.org | 8 + README.txt | 12 + configure | 20 +- configure.ac | 2 +- doc/tinmop.man | 14 +- doc/tinmop.org | 10 +- src/gui/client/main-window.lisp | 5 + tinmop.asd | 2 +- 10 files changed, 1155 insertions(+), 41 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec9def6..2dfddd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,31 +1,1108 @@ +2023-05-17 cage + + * etc/default-theme.conf, + * etc/gui.conf, + * etc/shared.conf, + * src/gui/client/client-configuration.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp: + + - [GUI] added configuration directive to emphasize text wrappend in + asterisk. + - [GUI] used the graphical debugger. + +2023-05-16 cage + + * data/icons/fmw_two-pictures.png, + * etc/gui.conf, + * src/gemini-viewer.lisp, + * src/gui/client/client-configuration.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/search-frame.lisp, + * src/package.lisp: + + - [gui] used IRI's fragment as regex search. + - [GUI] added configurable text selection color in gemtext window. + - [GUI] added missing icon. + +2023-05-15 cage + + * etc/gui.conf, + * src/gui/client/main-window.lisp, + * src/software-configuration.lisp: + + - fixed configuration parser to allow empty strings; + - [GUI] drafted a theme. + +2023-05-14 cage + + * etc/gui.conf, + * src/gui/client/bookmark-window.lisp, + * src/gui/client/client-configuration.lisp, + * src/gui/client/internal-paths.lisp, + * src/gui/client/main-window.lisp, + * src/gui/server/main-window-server-side.lisp, + * src/gui/server/public-api-gemini-tour-links.lisp, + * src/package.lisp: + + - [GUI] reinitialized IR of gemtext before opening a new IRI. + - [GUI] prevented reinitializing the IR of gemtext if not in status + 'streaming'. + - [GUI] added more keybindigs related to link tour. + - [GUI] prevented adding the same link to tour more than once. + - [GUI] removed menu shortcuts; + - [GUI] unfocus autocomplete entry when an url has been chosen; + - [GUI] unfocus gemtext window when a link has been clicked. + - [GUI] added horizontal padding for gemtext widget. + - [GUI] added more keybindings; + - [GUI] parsed keybindings. + - [GUI] added bookmark keybinding. + - [GUI] fixed bookmarking URL. + - [GUI] added show bookmarks command. + - [GUI] remove focus form autocomplete entry when opening bookmarks + page. + +2023-05-13 cage + + * Makefile.am, + * Makefile.in, + * etc/gui.conf, + * po/it.po, + * po/tinmop.pot, + * src/gui/client/client-configuration.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/stream-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/misc-utils.lisp, + * src/package.lisp: + + - [GUI] completed inilining of image one by one. + - [GUI] added visual hint that the process of inlining an image is in + progress. + - [GUI] added command to inline all images in a page. + - added all the icons to Makefile.am. + - updated italian translation. + - [GUI] started with configurable keybindings. + - [GUI] added more keybindings; + - [GUI] pass focus to the entry when the search frame is shown. + +2023-05-12 cage + + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/gui/server/public-api.lisp: + + - [GUI] started adding feature to inline bitmaps. + - [GUI] fixed regression: restored 'go up' command. + - [GUI] fixed inlining bitmap position. + - [GUI] show 'inline' menu item only for links to supported files. + - [GUI] saved visited links in the history kept in the database. + +2023-05-08 cage + + * src/gui/client/main-window.lisp, + * src/iri-parser.lisp, + * src/package.lisp: + + - added 'iri:iri='; + - jumping to the corresponding feature when typing in the adderss bar + a special iri (e.g. 'about:bookmark'). + +2023-05-07 cage + + * data/icons/fmw_rss-add.png, + * data/icons/fmw_rss-delete.png, + * src/constants.lisp, + * src/db.lisp, + * src/gui/client/gemlog-window.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/internal-paths.lisp, + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-gemlog.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp: + + - [GUI] added button to subscribe (and unsubscribe) to a gemlog. + - [GUI] updated address bar when loading a gemlog feed. + +2023-05-06 cage + + * src/db.lisp, + * src/gui/client/gemlog-window.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/stream-window.lisp, + * src/gui/server/public-api-gemini-gemlog.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp, + * src/program-events.lisp, + * tinmop.asd: + + - [GUI] added widget for gemlogs showing and unsubscribing. + - [GUI] fixed link text tag limits + +2023-05-03 cage + + * src/gui/client/certificates-window.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/search-frame.lisp: + + - [GUI] chaged code to match the new nodgui API related to both modal + and non-modal toplevel; + - [GUI] fixed callback to make visible the next matched text in a + gemtext search. + - [GUI] fixed checkbutton for case matching search in gemntext. + +2023-04-15 cage + + * src/constants.lisp, + * src/gui/client/menu-command.lisp, + * src/package.lisp: + + - [GUI] improved help window. + +2023-04-14 cage + + * Makefile.am, + * Makefile.in, + * data/icons/fmw_dice.png, + * po/POTFILES.in, + * po/it.po, + * po/tinmop.pot, + * src/gemini/client.lisp, + * src/gui/client/bookmark-window.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/tour-window.lisp, + * src/gui/server/public-api-gemini-tour-links.lisp, + * src/hooks.lisp, + * src/package.lisp: + + - [GUI] added commands to shuffle the tour. + - updated italian translation. + - updated Makefile.am to include the new icons. + - [GUI] printed information when streaming is started or finished; + - [GUI] increased width of bookmark window. + - removed debug code + - [GUI] increased size of tour management window. + +2023-04-13 cage + + * data/icons/fmw_bullet-go.png, + * data/icons/fmw_bus-go.png, + * data/icons/fmw_bus.png, + * src/gui/client/icons.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/stream-window.lisp, + * src/gui/client/tour-window.lisp, + * src/gui/server/public-api-gemini-tour-links.lisp, + * src/package.lisp, + * tinmop.asd: + + - [GUI] added basic functionalities of link tour. + - [GUI] added contextual menu command for opening link in background. + - [GUI] added command for copying and bookmarking a link from the + contextual menu. + +2023-04-12 cage + + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-tour-links.lisp, + * src/gui/server/public-api.lisp: + + - [GUI] added contextual menu for links; + - [GUI] added command to add a link to the tour. + +2023-04-10 cage + + * data/icons/fmw_arrow-down.png, + * data/icons/fmw_arrow-up.png, + * data/icons/fmw_cross.png, + * data/icons/fmw_document-edit.png, + * po/it.po, + * src/gui/client/bookmark-window.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/search-frame.lisp, + * src/package.lisp, + * tinmop.asd: + + - [GUI] improved visuals of bookmark managing window; + - [GUI] fixed italian translation; + - [GUI] added document edit icon. + - [GUI] added searching regex in gemtext window. + - [GUI] fixed order of tags when searching gemtext; + - [GUI] prevented crash when searching an empty gemtext widget. + - [GUI] added commands to toggle search frame. + - [GUI] added a better icon for search frame closing button. + +2023-04-09 cage + + * data/icons/fmw_star-blue.png, + * data/icons/fmw_star-yellow.png, + * po/POTFILES.in, + * po/it.po, + * po/tinmop.pot, + * src/constants.lisp, + * src/db.lisp, + * src/gui/client/bookmark-window.lisp, + * src/gui/client/certificates-window.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/internal-paths.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/stream-window.lisp, + * src/gui/server/public-api-gemini-bookmark.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp, + * tinmop.asd: + + - [GUI] added command to bookmark and delete a gemini address. + - [GUI] prevented closing bookmark window if validation failed when + adding a bookmark. + - [GUI] added code to render the bookmarks page. + - [GUI] refactored code related to the internal IRIs. + - [GUI] added window to manage bookmarks (only deletion so far); + - updated italian translation. + - [GUI] added window to modify bookmark entry. + +2023-04-07 cage + + * src/complete.lisp, + * src/constants.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp: + + - [GUI] moved toolbar's buttons to the left side. + - [GUI] ensured the address bar is updated whan a link has been + clicked. + - allowed complete local path even when using file scheme ('file://'). + +2023-04-06 cage + + * Makefile.am, + * Makefile.in, + * src/gui/client/main-window.lisp, + * src/gui/server/main-window-server-side.lisp, + * src/gui/server/public-api.lisp, + * src/iri-parser.lisp, + * src/package.lisp, + * src/ui-goodies.lisp: + + - [GUI] added command for the 'go up iri' button. + - updated Makefile.am to aloww to find the new icon files. + - [GUI] fixed messed up callbacks for 'up' and 'back' buttons. + +2023-04-05 cage + + * src/gemini-viewer-metadata.lisp, + * src/gui/client/main-window.lisp: + + - [GUI] added command for the 'back' button; + - [RPC] fixed function to get the IRI loaded before the latest one; + - [GUI] refactored some code about main window's callbacks; + - [GUI] highlighted TOC entries when the mouse pointer is over the + widget. + +2023-04-03 cage + + * src/gui/client/main-window.lisp: + + - [GUI] implemented reload iri button command. + +2023-04-02 cage + + * data/icons/{fmw_page-accept.png => fmw_document-accept.png}, + * src/gui/client/constants.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/stream-window.lisp, + * src/package.lisp: + + - [GUI] added command to reload a gemini stream from the streams + window. + +2023-03-29 cage + + * data/icons/fmw_page-accept.png, + * data/icons/fmw_page.png, + * src/gui/client/certificates-window.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/json-rpc-communication.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/stream-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp, + * tinmop.asd: + + - [GUI] added stream window (list the streams and delete them). + +2023-03-25 cage + + * data/icons/fmw_document-add.png, + * data/icons/fmw_document-delete.png, + * data/icons/fmw_folder.png, + * src/gui/client/certificates-window.lisp, + * src/gui/client/icons.lisp, + * src/package.lisp: + + - [GUI] improved certificates window; + - added midding icons file. + - [GUI] added a better default directory when chosing a certificate + file for import. + - [GUI] increased width of entries in import certificates dialog + window. + +2023-03-24 cage + + * src/gui/client/certificates-window.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/json-rpc-communication.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/server/public-api-gemini-certificates.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp, + * src/program-events.lisp: + + - [GUI] added button to delete and import gemini gertificates. + - [GUI] improved certificates window; + - removed useless code. + +2023-03-21 cage + + * src/gui/client/certificates-window.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/server/public-api-gemini-certificates.lisp, + * src/package.lisp, + * tinmop.asd: + + - [GUI] added menu command to shows certificates. + +2023-03-19 cage + + * etc/gui.conf, + * src/gui/client/client-configuration.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp, + * src/software-configuration.lisp: + + - [GUI] removed deadlock when rendering gemtext and the TOC. + - [GUI] made the TOC's resize its width to fits the TOC items width. + - [GUI] added configuration directive for TOC width limits; + - [GUI] refactored TOC rendering code; + - [GUI] clear TOC widget from legacy items befor rendering the new + TOC. + - [GUI] implemented TOC callback (scroll to header when clicking on + the corresponding TOC item. + +2023-03-18 cage + + * etc/gui.conf, + * src/gui/client/client-configuration.lisp, + * src/gui/client/main-window.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp, + * src/software-configuration.lisp: + + - [GUI] started with TOC rendering. + +2023-03-17 cage + + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp: + + - [GUI] fixed test for checking if a stream is exhausted; + - [RPC] force a maximum width for the TOC entry. + +2023-03-16 cage + + * src/gemini-viewer.lisp, + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp: + + - [GUI] prevented wrapping of preformatted lines. + - [GUI] prevented error when loading twice a non-text resource (e.g. + loading twice the same URL pointing to a bitmao image.). + - [gemini] added missing arguments when creating an instance of + 'gemini-others-data-stream'. + +2023-03-15 cage + + * etc/shared.conf, + * src/gemini-viewer.lisp, + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp: + + - [GUI] fixed discarding rendering of lines coming from a stopped + stream; + - [GUI] added downloading and opening of non text data. + - [GUI] refactored a test. + - [GUI] added downloading of data with text/* MIME type (but not + gemini); + - [GUI] refactored rendering of simple text data; + - [GUI] removed debugging form. + +2023-03-14 cage + + * src/gui/client/main-window.lisp, + * src/gui/client/os-utils.lisp: + + - [GUI] instructed the client to open local file using external + software. + +2023-03-12 cage + + * etc/gui.conf, + * src/gemini/client.lisp, + * src/gemini/gemini-parser.lisp, + * src/gemini/package.lisp, + * src/gui/client/client-configuration.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp: + + - [gemini] returned the meta header to user when a protocol error + occurred. + - [GUI] added code to deal with query input (status 10 and 11). + - [GUI] fixed leaking lines parameter when rendering preformatted + text; + - [gemini] added a missing newline character in + 'geminize-preformatted'; + - [GUI] parsed standard colors for gemini window's text; + - [GUI] rendered the gemini protocol rerror responses to the + gemtext + window instead of poppinu out a dialog window. + +2023-03-11 cage + + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/package.lisp, + * src/program-events.lisp: + + - [RPC] bubbled-up error when using wait results cuncurrent events. + - [RPC] resignalled TOFU error to client in a structured form to let + the user deal with it; + - [GUI] improved protocol error messages. + - [GUI] prevent rendering of lines in the queue when corresponding + stream has been canceled; + - [GUI] print an error when opening a non existent local path. + - [GUI] fixed test for discarding canceled stream lines left in the + queue; + - [GUI] setted the font for the rendered gemtext from the one choosen + in the configuration file. + +2023-03-08 cage + + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp: + + - [RPC] fixed 'code' argument of 'make-gemini-response' (passed a + struct but an integer was expected instead); + - [GUI] implemented redirect; + - [GUI] implemented opening of local directory. + - [GUI] hide candidates when loading an url. + +2023-03-06 cage + + * src/constants.lisp, + * src/gemini/gemini-parser.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/os-utils.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/gui/server/public-api.lisp, + * src/package.lisp, + * tinmop.asd: + + - [GUI] made link working for local files and gemtext files over + gemini protocol. + +2023-03-03 cage + + * src/gemini/gemini-parser.lisp, + * src/gui/client/main-window.lisp: + + - [GUI] transformed relative IRI to absolute in the rendered gemtext; + [GUI] printed IRI on the info-bar when moving cursor over links in the + rendered gemtext. + +2023-03-02 cage + + * src/complete.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp: + + - removed wrong assumption that input is a simple string when + completing expanding the tilde as home of the user. + - [GUI] allowed expanding of local paths in the address bar; + - refactored callback related to opening address. + +2023-02-28 cage + + * src/gui/client/main-window.lisp: + + - [GUI] removed inefficent code to render the gemtext; + - added dummy function as link callback. + +2023-02-27 cage + + * etc/gui.conf: + + - [GUI] added GUI configuration file. + +2023-02-26 cage + + * Makefile.am, + * Makefile.in, + * configure, + * configure.ac, + * src/api-client.lisp, + * src/config.lisp.in.in, + * src/gui/client/client-configuration.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp: + + - [GUI] added correct wrapping for gemtext widget. + - [GUI] ensured the rendering of the gemtext respects the directives + in the configuration file (font, color, justification, etc). + - added package URL to the authorized client. + +2023-02-25 cage + + * src/gemini/client.lisp, + * src/gemini/package.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp: + + - [GUI] started a news thread where getting gemini stream's data. + - [GUI] added theming to gemtext. + - [GUI] rendered links; + - [GUI] started with focus on the address text entry. + +2023-02-24 cage + + * etc/init.lisp, + * src/gemini-subscription-window.lisp: + + - rearranged columns of gemlog subscriptions. + - fixed typos in init file. + +2023-02-22 cage + + * src/gui/client/gui-goodies.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp: + + - added functions to set meesages on the info-bar. + +2023-02-21 cage + + * Makefile.am, + * Makefile.in, + * src/gui/client/client-configuration.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/main-window.lisp, + * src/main.lisp, + * src/package.lisp, + * tinmop.asd: + + - added 'etc/gui.conf' to the file to be distributed; + - [GUI] added gemtext window; + - [GUI] fixed loading of GUI specific configuration file; + - [GUI] completed parsing of configuration values (e.g. color names + are converted to corresponding TK color codes). + +2023-02-19 cage + + * po/POTFILES.in, + * po/it.po, + * po/tinmop.pot, + * src/gemini/client.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/program-events.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/main.lisp, + * src/package.lisp, + * tinmop.asd: + + - [RPC] moved request enqueue macros to the GUI loop package; + - [GUI] ensured the gui events loop thread is terminated before + quitting the server and the program. + - [gemini] improved format control for protocol error messages; + - [GUI] logged RPC request error instead of opening a dialog message + when in debug mode; + - [GUI] added a draft of callback for opening a gemini address. + - [RPC] learnt that (error "string" arg1 arg2 ... argn), is similar to + (error (format nil "string" arg1 arg2 ... argn)) so (error (format + nil "~a" "~c")) is equal to (error "~c"); => format error (missing + argument for format string)! + - [GUI] bound the wish interpreter handle to a special variable so + that the gui event loop can reference it and call, without errors, + nodgui functions. + - [GUI] removed useless information (for users) when showing errors + (RPC errors contained the whole request as sexp). + - [GUI] removed warning about missing variable + 'gui-goodies:*gui-server*' in file containing the gui event loop. + - [RPC] added iri for failed stream when signalling an error. + - [i18n] updated translatable files; + - [i18n] updated italian translation. + +2023-02-18 cage + + * data/icons/fmw_uparrow.png, + * src/filesystem-utils.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/main-window.lisp, + * src/package.lisp, + * src/zip-info.lisp: + + - converted namestring to pathname in a couple of functions. + - [GUI] added 'up' button. + - [GUI] bound return event for the address bar to a dummy function. + - [GUI] tracked slot name changing in nodgui. + +2023-02-17 cage + + * src/constants.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/main.lisp, + * src/package.lisp: + + - [GUI] used the new autocomplete widget of nodgui. + - made 'about' help window, modal. + - prevented connecting to a pleroma instance when loading a script in + gemini exclusive mode. + - prevented connecting to a pleroma instance when running the TUI in + gemini exclusive mode. + +2023-02-14 cage + + * src/ui-goodies.lisp: + + - [kami] prevented landing on the debugger if communicating with + a kami + server fails. + +2023-02-12 cage + + * src/gui/client/main-window.lisp, + * src/gui/server/public-api-gemini-stream.lisp: + + - [RPC] added indices of matching chars in string that complete the + IRI in 'complete-net-address' + This data would be useful to highlight parts of the string that + matches the criteria to complete the user suggestions (typed on the + address text entry). + +2023-02-11 cage + + * src/api-client.lisp, + * src/windows.lisp: + + - fixed default callback in input dialog. + - input dialog reurn :canceled if the user pressed the 'cancel' + button; + - fixed an infinite loop when the user chose to cancel saving the URI + to autorize the client. + - flush the socket buffer to ensure the successful autorization + message is delivered to the browser. + +2023-02-10 cage + + * src/gui/client/main-window.lisp, + * src/gui/server/json-rpc-communication.lisp, + * src/gui/server/public-api.lisp: + + - [RPC] fixed server stopping; + - [GUI] notify RPC errors to the user using the GUI. + +2023-02-09 cage + + * src/gemini-viewer.lisp, + * src/gui/client/json-rpc-communication.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/server/json-rpc-communication.lisp, + * src/gui/server/public-api.lisp, + * src/json-rpc2.lisp, + * src/main.lisp, + * src/package.lisp, + * src/program-events.lisp, + * src/tests/program-events-tests.lisp: + + - [GUI] started connecting JSON API with GUI; + - [RPC] reworked 'slurp-gemini-stream' to use events queue; + - [GUI] fixed dispatching of events + - [GUI] added address autocomplete; + - added optional argument to specify pushing function in: + 'program-events:push-function-and-wait-results'. + +2023-02-08 cage + + * Makefile.am, + * Makefile.in, + * src/gui/client/constants.lisp, + * src/gui/client/gui-goodies.lisp, + * src/gui/client/icons.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/client/validation.lisp, + * src/package.lisp, + * tinmop.asd: + + - added some functions to build the GUI. + +2023-02-05 cage + + * LICENSES.org, + * Makefile.am, + * Makefile.in, + * data/icons/fmw_back.png, + * data/icons/fmw_go.png, + * data/icons/fmw_open_tour.png, + * data/icons/fmw_refresh.png, + * data/icons/search.png, + * data/icons/{search.png => fmw_search.png}, + * src/gui/client/icons.lisp, + * src/gui/client/json-rpc-communication.lisp, + * src/gui/client/main-window.lisp, + * src/gui/client/menu-command.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/gui/server/public-api.lisp, + * src/json-rpc2.lisp, + * src/main.lisp, + * src/modules.lisp, + * src/package.lisp, + * tinmop.asd, + * {modules => data/modules}/delete-by-regex.lisp, + * {modules => data/modules}/expand-abbrev-command-window.lisp, + * {modules => data/modules}/next-previous-open.lisp, + * {modules => data/modules}/rewrite-message-urls.lisp, + * {modules => data/modules}/share-gemini-link.lisp, + * {scripts => data/scripts}/delete-old-posts.lisp, + * {scripts => data/scripts}/export-gemini-subscriptions.lisp, + * {scripts => data/scripts}/fetch-post-tree.lisp, + * {scripts => data/scripts}/gemget.lisp, + * {scripts => data/scripts}/generate-gemlog.lisp, + * {scripts => data/scripts}/get-following.lisp, + * {scripts => data/scripts}/import-following.lisp, + * {scripts => data/scripts}/import-gemini-subscriptions.lisp, + * {scripts => data/scripts}/welcome-bot.lisp: + + - [GUI] added a bit of scaffolding for the interface; + - [GUI/RPC] added method to start and retrieve a gemini stream's + data. + - instruct makefile to copy modules, script and icons in differents + subdirectory when installing the package. + - [GUI] added a few icons. + +2023-02-04 cage + + * src/json-rpc2.lisp: + + - [JSON-RPC] added the request (that triggered the error) to the data + field of an error response. + +2023-02-02 cage + + * po/it.po, + * po/tinmop.pot, + * src/gui/client/program-events.lisp, + * src/package.lisp, + * src/program-events.lisp, + * src/tests/program-events-tests.lisp, + * src/ui-goodies.lisp, + * src/windows.lisp: + + - updated italian translation; + - added message to inform about the downloading of notifications. + - made the event-queue optionally blocking (block the caller thread if + empty). + - added parent window to the dialog. + +2023-02-01 cage + + + Merge branch 'master' into add-gemini-gui + 2023-01-30 cage - * quick_quicklisp.sh.in, - * src/package.lisp, - * src/program-events.lisp, - * src/windows.lisp: + * ChangeLog, + * NEWS.org, + * po/it.po, + * po/tinmop.pot, + * quick_quicklisp.sh.in, + * src/package.lisp, + * src/program-events.lisp, + * src/windows.lisp: - - used the brand new dialog window made available from croatoan. - - updated croatoan revision to fetch during installation. + - used the brand new dialog window made available from croatoan. + - updated croatoan revision to fetch during installation. + - updated changelog. + - updated NEWS.org. + - updated italian translation. + +2023-01-15 cage + + * src/box.lisp, + * src/gui/client/json-rpc-communication.lisp, + * src/gui/client/program-events.lisp, + * src/gui/server/json-rpc-communication.lisp, + * src/gui/server/public-api-gemini-certificates.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/gui/server/public-api-structs.lisp, + * src/gui/server/public-api.lisp, + * src/message-window.lisp, + * src/package.lisp, + * src/program-events.lisp, + * src/tests/program-events-tests.lisp, + * tinmop.asd: + + - [RPC] added API for generate the TOC from a gemtext; + - removed duplicated code (used the class 'box:box' instead of struct + 'json-rpc-communication:box). + - [GUI] added client events loop. + - added missing file; + - [RPC] splitted the package json-rpc-munication in two files: one in + server directory and the other in the client directory. + +2023-01-13 cage + + * src/gemini-viewer.lisp, + * src/gui/client/client-configuration.lisp, + * src/gui/server/json-rpc-communication.lisp, + * src/gui/server/public-api-gemini-certificates.lisp, + * src/gui/server/public-api-gemini-stream.lisp, + * src/gui/server/public-api-gemini-tour-links.lisp, + * src/gui/server/public-api-structs.lisp, + * src/gui/server/public-api.lisp, + * src/json-rpc2.lisp, + * src/package.lisp, + * src/tests/json-rpc2-tests.lisp, + * tinmop.asd: + + - added missing parens. + Merge branch 'master' into add-gemini-gui + - [JSON-RPC] fixed tests (the error object returns the field 'data' + now). + - [RPC] added function to close server; + - [JSON-RPC] allowed API to signal a custom 'jsonrpc-error'. + - [JSON-RPC] fixed macro for signal error. + - [RPC] fixed encoding of certificates. + - [RPC] refactored public API in multiple files. + - [RPC] moved struct 'box'. + - [GUI] added procedures to get client configuration. + - [gemini] used function 'maybe-notify'. 2023-01-12 cage - * configure, - * configure.ac, - * src/gemini-viewer.lisp, - * src/os-utils.lisp, - * src/package.lisp, - * src/ui-goodies.lisp, - * tinmop.asd: + * configure, + * configure.ac, + * src/gemini-viewer.lisp, + * src/gui/server/json-rpc-communication.lisp, + * src/gui/server/main-window-server-side.lisp, + * src/gui/server/public-api.lisp, + * src/os-utils.lisp, + * src/package.lisp, + * src/ui-goodies.lisp, + * tinmop.asd: - - made the program respect the `open' configuration directive for when - downloading MINE type "text/*" - Before this patch, the software tried to open all the text MIME type - in the main window regardless any setting in the configuration file - that imposed to use a program to open a file based on a regular - expression (e.g. `open "^((gemini://)|(\\.)|(/)).+txt$" with "vi"', - did not worked). - - increased version number. + - [RPC] added functions for managing tour links and clients + certificates. + - made the program respect the `open' configuration directive for when + downloading MINE type "text/*" + Before this patch, the software tried to open all the text MIME type + in the main window regardless any setting in the configuration file + that imposed to use a program to open a file based on a regular + expression (e.g. `open "^((gemini://)|(\\.)|(/)).+txt$" with "vi"', + did not worked). + Merge branch 'master' into add-gemini-gui + - increased version number. + +2023-01-11 cage + + * etc/shared.conf, + * src/gemini-viewer.lisp, + * src/gui/server/main-window-server-side.lisp, + * src/main.lisp, + * src/message-window.lisp, + * src/misc-utils.lisp, + * src/package.lisp, + * src/text-utils.lisp, + * tinmop.asd: + + - removed resetting of gemini parser status when downloading a text + encoded, but non-gemini, file; + - [rpc] added tour links slot for gemni window (server); + - added loading configuration file for GUI (RPC client) at start; + - refactored metadata slot thei is now used by a TUI window and the + server side gemini window; + - added optional string bag parameter to 'text-utils:trim-blanks'. + +2023-01-08 cage + + * po/POTFILES.in, + * po/it.po, + * po/tinmop.pot: + + -updated italian translation and list of files that contains striin + that can be translated. + +2023-01-06 cage + + * modules/share-gemini-link.lisp, + * src/gemini-viewer-metadata.lisp, + * src/gemini/client.lisp, + * src/gui/json-rpc-communication.lisp, + * src/gui/main-window-server-side.lisp, + * src/gui/public-api.lisp, + * src/gui/{ => server}/json-rpc-communication.lisp, + * src/gui/{ => server}/main-window-server-side.lisp, + * src/gui/{ => server}/public-api.lisp, + * src/json-rpc2.lisp, + * src/message-window.lisp, + * src/package.lisp, + * src/program-events.lisp, + * src/tests/jsonrpc2-tests.lisp, + * src/tests/{jsonrpc2-tests.lisp => json-rpc2-tests.lisp}, + * src/ui-goodies.lisp, + * tinmop.asd: + + - log gemini and json, debug messages even if *features* does not + contains :debug-mode; + - [RPC] fixed 'gemini-stream-info'; + - [RPC] added 'gemini-stream-parsed-line-slice'; + - [RPC] added error handling for 'gemini-stream-parsed-line'; + - [JSON-RPC] fixed encoding of error responses. + - renamed test file. + - [JSONRPC] included actual ID to the error response when possible. + - [JSONRPC] used a custom error when a called function fails for some + reason. + - [JSONRPC] added optional data field to error response. + - [RPC] removed parsed lines from object returned by the function + 'gemini-stream-info', there are more specialized functions to get + those; + - [RPC] added 'gemini-all-stream-info'. + - [RPC] added representation of the main gemini window in the server; + - [RPC] added two IRI's history manipulation functions. + - [GUI] moved server side GUI to a proper component and directory. + - fixed missing function argument in module. + +2023-01-02 cage + + * src/program-events.lisp: + + - prevented crash when printing a notification after deletion. + +2023-01-01 cage + + * etc/init.lisp, + * src/api-client.lisp, + * src/gemini/gemini-parser.lisp, + * src/gui/public-api.lisp, + * src/json-rpc2.lisp, + * src/package.lisp, + * src/program-events.lisp, + * src/tests/gemini-parser-tests.lisp, + * src/ui-goodies.lisp: + + - added a new command 'delete-notifications'; + - retrofitted 'add-metadata-to-parsed-gemini-lines' into the main + gemini parser; + - fixed json generation of parsed lines in 'gemini-stream-info'. + - [rpc] fixed error handling. + - [rpc] added 'gemini-stream-parsed-line'. + - [rpc] fixed error responses, tests passed again. + - [rpc] returned an error if a gemini stream can not be foud in + 'gemini-stream-info'. + +2022-12-30 cage + + * src/gemini/gemini-parser.lisp, + * src/gemini/package.lisp, + * src/gui/json-rpc-communication.lisp, + * src/gui/public-api.lisp, + * src/json-rpc2.lisp, + * src/package.lisp, + * src/tests/gemini-parser-tests.lisp: + + - added parameter 'initialize-parser' (default to nil), to reset + parser state in 'sexp->text-rows'; + - added 'add-metadata-to-parsed-gemini-lines' + This function will add attributes (like ':header-group-id') to the + sexp representation of a gemini stream (structure: (tag + ((attribute-key attribute value)...) text line) ) + - [JSON-RPC API] added a couple of public API function. + - added 'list-id' as metadata for gemini list; + - added unit tests for gemini parser. + +2022-12-29 cage + + * src/db-utils.lisp, + * src/gemini-viewer.lisp, + * src/gemini/client.lisp, + * src/gemini/gemini-parser.lisp, + * src/gemini/subscription.lisp, + * src/program-events.lisp, + * tinmop.asd: + + - added a couple of debug flags to make logging more fine-tuned. + - added slot 'parsed-lines' to gemini-viewer:gemini-stream, + moreover used this slots when downloading a gemini stream + This changes means that the parsing of gemini stream is no more done + in program events but during the downloading thread. + See, for example the changes in: + 'gemini-viewer:make-gemini-download-event' + - added a parameter to prevent notification when downloading a gemini + stream + see 'gemini-viewer:request-stream-gemini-document-thread'; + - added a more human friendly constants for each gemini status code + (e.g. +success+ for code 20). + - as the gemini parser has status added a parameter + ('initialize-parser') to + 'gemini-parser:parse-gemini-file' (default to nil, do not initialize); + - initialize the gemini parser when needed. + - moved macro definition on top of the file. + +2022-12-28 cage + + * src/gemini/client.lisp, + * src/gemini/package.lisp: + + - [gemini] added better names for status code of a gemini response + (e.g. '+20+' -> '+success+'). + +2022-12-27 cage + + * src/gui/json-rpc-communication.lisp, + * src/json-rpc2.lisp, + * src/main.lisp, + * src/tests/jsonrpc2-tests.lisp, + * tinmop.asd: + + - [gui] added an actual funcion for API; + - [jsonrpc] added more information when an internal error occurred; + - added 'main:rpc-server-init'. 2022-12-26 cage diff --git a/NEWS.org b/NEWS.org index 0965ed9..c23fd72 100644 --- a/NEWS.org +++ b/NEWS.org @@ -1,3 +1,7 @@ +* 2023-05-17 version 0.9.9.141 + - New feature + added A GUI for the gemini protocol. + * 2023-01-30 version 0.9.9.141 - Bugfix diff --git a/README.org b/README.org index 83746cb..8c80cbe 100644 --- a/README.org +++ b/README.org @@ -50,6 +50,7 @@ - xdg-open; - openssl; - unzip (command line utitlity to decompress zip file); + - TK wish interpreter; - your favourite editor (default: nano). + optional recommended programs: @@ -105,6 +106,13 @@ # apt-get install libssl-dev #+END_SRC +** Foreign (TCL language) library + - tkimg + + #+BEGIN_SRC sh + # apt-get install libtk-img + #+END_SRC + * Install ** Using guix diff --git a/README.txt b/README.txt index 82a4f58..c0a2942 100644 --- a/README.txt +++ b/README.txt @@ -13,6 +13,7 @@ Table of Contents .. 1. Programs .. 2. Lisp Libraries .. 3. Foreign (C language) library +.. 4. Foreign (TCL language) library 4. Install .. 1. Using guix .. 2. From source @@ -92,6 +93,7 @@ Table of Contents • xdg-open; • openssl; • unzip (command line utitlity to decompress zip file); + • TK wish interpreter; • your favourite editor (default: nano). ⁃ optional recommended programs: @@ -153,6 +155,16 @@ Table of Contents └──── +3.4 Foreign (TCL language) library +────────────────────────────────── + + • tkimg + + ┌──── + │ # apt-get install libtk-img + └──── + + 4 Install ═════════ diff --git a/configure b/configure index 10ac00e..ea14be2 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for tinmop 0.9.9.141. +# Generated by GNU Autoconf 2.71 for tinmop 0.9.9.1414. # # Report bugs to . # @@ -611,8 +611,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='tinmop' PACKAGE_TARNAME='tinmop' -PACKAGE_VERSION='0.9.9.141' -PACKAGE_STRING='tinmop 0.9.9.141' +PACKAGE_VERSION='0.9.9.1414' +PACKAGE_STRING='tinmop 0.9.9.1414' PACKAGE_BUGREPORT='https://notabug.org/cage/tinmop/' PACKAGE_URL='https://www.autistici.org/interzona/tinmop.html' @@ -1317,7 +1317,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures tinmop 0.9.9.141 to adapt to many kinds of systems. +\`configure' configures tinmop 0.9.9.1414 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1388,7 +1388,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of tinmop 0.9.9.141:";; + short | recursive ) echo "Configuration of tinmop 0.9.9.1414:";; esac cat <<\_ACEOF @@ -1493,7 +1493,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -tinmop configure 0.9.9.141 +tinmop configure 0.9.9.1414 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1697,7 +1697,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by tinmop $as_me 0.9.9.141, which was +It was created by tinmop $as_me 0.9.9.1414, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -2959,7 +2959,7 @@ fi # Define the identity of the package. PACKAGE='tinmop' - VERSION='0.9.9.141' + VERSION='0.9.9.1414' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -8387,7 +8387,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by tinmop $as_me 0.9.9.141, which was +This file was extended by tinmop $as_me 0.9.9.1414, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8447,7 +8447,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -tinmop config.status 0.9.9.141 +tinmop config.status 0.9.9.1414 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index fdf9b3e..6cfc883 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ dnl You should have received a copy of the GNU General Public License dnl along with this program. dnl If not, see [[http://www.gnu.org/licenses/][http://www.gnu.org/licenses/]]. -AC_INIT([tinmop],[0.9.9.141],[https://notabug.org/cage/tinmop/],[tinmop],[https://www.autistici.org/interzona/tinmop.html]) +AC_INIT([tinmop],[0.9.9.1414],[https://notabug.org/cage/tinmop/],[tinmop],[https://www.autistici.org/interzona/tinmop.html]) AM_INIT_AUTOMAKE([-Wall foreign]) diff --git a/doc/tinmop.man b/doc/tinmop.man index dca5746..77623d4 100644 --- a/doc/tinmop.man +++ b/doc/tinmop.man @@ -20,7 +20,6 @@ information about this topic can be found on the following websites: .IP \(em 4 \fIhttps://docs.joinmastodon.org/\fP . - .PP Tinmop proposes an extensible terminal interface to connect with Pleroma social network, the gemini and gopher protocol @@ -76,14 +75,21 @@ Start using this timeline \fB-u, --update-timeline \fP Update the selected timeline .TP +\fB-U, --gemini-gui-client-only \fP +Start the program as A gemini GUI client +.TP +\fB-S, --gemini-gui-server-only \fP +Start as gemini gui server only +.TP \fB-v, --version \fP Print program version and exit .SH "Usage" .PP -Users of Tinmop supposed to interact with the social network -using a terminal interface (TUI), The terminal screen layout is -sketched below: +Users of Tinmop supposed to interact with the social network using a +terminal interface (TUI, but starting with version 0.9.9.1414 a GUI +for gemini is available), The terminal screen layout is sketched +below: .RS .nf diff --git a/doc/tinmop.org b/doc/tinmop.org index 9b1dca4..5ed7704 100644 --- a/doc/tinmop.org +++ b/doc/tinmop.org @@ -17,7 +17,6 @@ - [[https://pleroma.social/]] ; - [[https://docs.joinmastodon.org/]] . - Tinmop proposes an extensible terminal interface to connect with Pleroma social network, the gemini and gopher protocol @@ -48,13 +47,16 @@ + -h, --help :: print program help and exit + -t, --timeline TIMELINE-NAME :: Start using this timeline + -u, --update-timeline :: Update the selected timeline + + -U, --gemini-gui-client-only :: Start the program as A gemini GUI client + + -S, --gemini-gui-server-only :: Start as gemini gui server only + -v, --version :: Print program version and exit * Usage - Users of Tinmop supposed to interact with the social network - using a terminal interface (TUI), The terminal screen layout is - sketched below: + Users of Tinmop supposed to interact with the social network using a + terminal interface (TUI, but starting with version 0.9.9.1414 a GUI + for gemini is available), The terminal screen layout is sketched + below: #+NAME: screen-layout #+BEGIN_SRC text diff --git a/src/gui/client/main-window.lisp b/src/gui/client/main-window.lisp index abcd0d2..3cdb47c 100644 --- a/src/gui/client/main-window.lisp +++ b/src/gui/client/main-window.lisp @@ -1061,6 +1061,11 @@ (gui:bind toc-listbox #$<>$ (toc-callback-clsr main-window)) + (gui:bind gemtext-widget + #$$ + (lambda (e) + (declare (ignore e)) + (gui:configure-mouse-pointer gemtext-widget (gui:find-cursor :xterm)))) (setf (gui:command go-button) (open-iri-clsr main-window t)) (setf (gui:command reload-button) (reload-iri-clsr main-window)) (setf (gui:command back-button) (back-iri-clsr main-window)) diff --git a/tinmop.asd b/tinmop.asd index f39243f..26355c1 100644 --- a/tinmop.asd +++ b/tinmop.asd @@ -18,7 +18,7 @@ (defsystem :tinmop :author "cage" :license "GPLv3" - :version "0.9.9.141" + :version "0.9.9.1414" :pathname "src" :serial t :bug-tracker "https://notabug.org/cage/tinmop/issues"