mirror of https://codeberg.org/cage/tinmop/
Compare commits
4 Commits
8f4eed668d
...
c94c754441
Author | SHA1 | Date |
---|---|---|
cage | c94c754441 | |
cage | 82b22a0828 | |
cage | 810c331a95 | |
cage | 8fd5bcc603 |
179
ChangeLog
179
ChangeLog
|
@ -1,20 +1,171 @@
|
|||
2024-04-07 cage
|
||||
|
||||
* configure.ac,
|
||||
* tinmop.asd:
|
||||
|
||||
- tagging as rc1.
|
||||
|
||||
2024-04-06 cage
|
||||
|
||||
* doc/tinmop.man,
|
||||
* doc/tinmop.org,
|
||||
* src/command-line.lisp,
|
||||
* src/program-events.lisp,
|
||||
* src/ui-goodies.lisp:
|
||||
|
||||
- updated manpage.
|
||||
- added short command line option to specify fediverse account (-F).
|
||||
- [TUI] removed a recursive locking.
|
||||
|
||||
2024-04-04 cage
|
||||
|
||||
* etc/init.lisp,
|
||||
* src/package.lisp,
|
||||
* src/ui-goodies.lisp:
|
||||
|
||||
- added new command: 'thread-go-to-parent-post'.
|
||||
- fixed command: 'thread-go-to-parent-post'.
|
||||
|
||||
2024-03-31 cage
|
||||
|
||||
* etc/init.lisp,
|
||||
* po/de.po,
|
||||
* po/es.po,
|
||||
* po/fr.po,
|
||||
* po/it.po,
|
||||
* po/pl.po,
|
||||
* po/tinmop.pot,
|
||||
* src/program-events.lisp,
|
||||
* src/scheduled-events.lisp:
|
||||
|
||||
- changed key for fediverse account switching.
|
||||
- added notification when fetching announcements.
|
||||
- fixed line wrapping of announcements window.
|
||||
- updated italian translations.
|
||||
- prevented crash when exceeding the character limit in a post.
|
||||
|
||||
2024-03-30 cage
|
||||
|
||||
* etc/init.lisp,
|
||||
* po/de.po,
|
||||
* po/es.po,
|
||||
* po/fr.po,
|
||||
* po/it.po,
|
||||
* po/pl.po,
|
||||
* po/tinmop.pot,
|
||||
* src/command-line.lisp,
|
||||
* src/complete.lisp,
|
||||
* src/constants.lisp,
|
||||
* src/main.lisp,
|
||||
* src/package.lisp,
|
||||
* src/software-configuration.lisp,
|
||||
* src/ui-goodies.lisp:
|
||||
|
||||
- prevented trying to authorize a fediverse client when no fediverse
|
||||
credentials has beed added to the configuration file.
|
||||
- added command to switch fediverse account at runtime;
|
||||
- removed hardcoded string constants.
|
||||
- updated italian translations.
|
||||
|
||||
2024-03-29 cage
|
||||
|
||||
* doc/tinmop.man,
|
||||
* doc/tinmop.org,
|
||||
* etc/init.lisp,
|
||||
* src/command-line.lisp,
|
||||
* src/db-utils.lisp,
|
||||
* src/main.lisp,
|
||||
* src/package.lisp,
|
||||
* src/ui-goodies.lisp:
|
||||
|
||||
- [TUI] added new command: 'thread-delete-subtree';
|
||||
- removed legacy function.
|
||||
- updated documentation.
|
||||
- [fediverse] added command line switch to choose to use a specific
|
||||
fediverse account (if specified in the configuration file);
|
||||
- [TUI] anticipated the showing of the welcome script to appears
|
||||
before the fediverse account authorization.
|
||||
|
||||
2024-03-24 cage
|
||||
|
||||
* po/it.po,
|
||||
* src/constants.lisp,
|
||||
* src/main.lisp,
|
||||
* src/package.lisp,
|
||||
* src/software-configuration.lisp:
|
||||
|
||||
- updated italian translation.
|
||||
- reverted regression that prevented GUI to starts.
|
||||
- instructed the program to generate a default database file name
|
||||
when no valid user and server name has been found in the configuration
|
||||
file.
|
||||
|
||||
2024-03-20 cage
|
||||
|
||||
* src/command-line.lisp:
|
||||
|
||||
- added short options to bash complations.
|
||||
|
||||
2024-03-19 cage
|
||||
|
||||
* Makefile.am,
|
||||
* Makefile.in,
|
||||
* configure,
|
||||
* configure.ac,
|
||||
* data/completion/tinmop:
|
||||
|
||||
- used autotools to install bash completion script.
|
||||
- removed shebang from completion script, was wrong anyway.
|
||||
|
||||
2024-03-18 cage
|
||||
|
||||
* README.org,
|
||||
* lisp-dependencies,
|
||||
* src/command-line.lisp:
|
||||
|
||||
- updated README to mention that also libjpegturbo and TK must be
|
||||
installed;
|
||||
- [draft] added a function for bash completion.
|
||||
|
||||
2024-03-17 cage
|
||||
|
||||
* src/api-client.lisp,
|
||||
* src/constants.lisp,
|
||||
* src/db-utils.lisp,
|
||||
* src/gui/client/client-configuration.lisp,
|
||||
* src/main.lisp,
|
||||
* src/package.lisp,
|
||||
* src/resources-utils.lisp,
|
||||
* src/software-configuration.lisp,
|
||||
* src/thread-window.lisp:
|
||||
|
||||
- [fediverse] allowed to specify more than one account in the
|
||||
configuration file, each couple of directive 'username' and 'server'
|
||||
an be specified more that once.
|
||||
- [TUI] added a check for configuration file to ensure equal number of
|
||||
usernames and server name are specified.
|
||||
- [TUI] fixed checks of configuration file.
|
||||
- [fediverse] moved from a single database for a single account to a
|
||||
databases for each account.
|
||||
|
||||
2024-03-12 cage
|
||||
|
||||
* ChangeLog,
|
||||
* NEWS.org,
|
||||
* data/scripts/generate-gemlog.lisp,
|
||||
* po/de.po,
|
||||
* po/es.po,
|
||||
* po/fr.po,
|
||||
* po/it.po,
|
||||
* po/pl.po,
|
||||
* po/tinmop.pot,
|
||||
* src/message-rendering-utils.lisp:
|
||||
* ChangeLog,
|
||||
* NEWS.org,
|
||||
* data/scripts/generate-gemlog.lisp,
|
||||
* po/de.po,
|
||||
* po/es.po,
|
||||
* po/fr.po,
|
||||
* po/it.po,
|
||||
* po/pl.po,
|
||||
* po/tinmop.pot,
|
||||
* src/message-rendering-utils.lisp:
|
||||
|
||||
- prevented the poll's results to be printed before expiration.
|
||||
- [script] added the option to submit the feed to and antenna
|
||||
instance, when generating a gemlog;
|
||||
- updated changelog.
|
||||
- prevented the poll's results to be printed before expiration.
|
||||
- [script] added the option to submit the feed to and antenna
|
||||
instance, when generating a gemlog;
|
||||
- updated gemlog.
|
||||
- updated Changelog.
|
||||
|
||||
2024-03-03 cage
|
||||
|
||||
|
|
17
NEWS.org
17
NEWS.org
|
@ -1,3 +1,18 @@
|
|||
* 2024-xx-xx version 0.9.9.1414213562
|
||||
- new features
|
||||
- [fediverse] Multi account supported. Users can specify the account to use on the command line or switching at runtime.
|
||||
- [TUI] added new commands:
|
||||
- thread-go-to-parent-post
|
||||
- thread-delete-subtree
|
||||
- added a bash completion script
|
||||
- prevented the poll's results to be printed before expiration
|
||||
- [script] added the option to submit the feed to and antenna instance, when generating a gemlog;
|
||||
- Bugfix
|
||||
- [TUI] fixed checks of configuration file
|
||||
- updated README to mention that also libjpegturbo and TK must be installed;
|
||||
- [GUI] fixed managing of gemini responses when a titan request was performed (TOFU errors, TLS certificate password etc.)
|
||||
- [TUI] fixed line wrapping of announcements window.
|
||||
|
||||
* 2024-03-02 version 0.9.9.141421356
|
||||
- new features
|
||||
- [GUI] added contextual menu to copy gemlogs links or mark all their posts as already read;
|
||||
|
@ -11,7 +26,7 @@
|
|||
- [TUI] added command to download a post's attachment ignoring the cached value (if such entry in the cache exists);
|
||||
- [TUI] prevented results of non expired polls to be printed.
|
||||
- Bugfix
|
||||
- [GUI] fixed inlining og images;
|
||||
- [GUI] fixed inlining of images;
|
||||
- [GUI] fixed deletion of TLS client certificates;
|
||||
- [TUI] [fediverse] fixed searching in reblogged statuses body, previously the search; procedure skipped the reblogged statuses.
|
||||
- [TUI] fixed backspace key when the software asks for an input string;
|
||||
|
|
|
@ -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.141421356.
|
||||
# Generated by GNU Autoconf 2.71 for tinmop 0.9.9.1414213562-rc1.
|
||||
#
|
||||
# Report bugs to <https://codeberg.org/cage/tinmop/>.
|
||||
#
|
||||
|
@ -611,8 +611,8 @@ MAKEFLAGS=
|
|||
# Identity of this package.
|
||||
PACKAGE_NAME='tinmop'
|
||||
PACKAGE_TARNAME='tinmop'
|
||||
PACKAGE_VERSION='0.9.9.141421356'
|
||||
PACKAGE_STRING='tinmop 0.9.9.141421356'
|
||||
PACKAGE_VERSION='0.9.9.1414213562-rc1'
|
||||
PACKAGE_STRING='tinmop 0.9.9.1414213562-rc1'
|
||||
PACKAGE_BUGREPORT='https://codeberg.org/cage/tinmop/'
|
||||
PACKAGE_URL='https://www.autistici.org/interzona/tinmop.html'
|
||||
|
||||
|
@ -1322,7 +1322,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.141421356 to adapt to many kinds of systems.
|
||||
\`configure' configures tinmop 0.9.9.1414213562-rc1 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
|
@ -1393,7 +1393,7 @@ fi
|
|||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of tinmop 0.9.9.141421356:";;
|
||||
short | recursive ) echo "Configuration of tinmop 0.9.9.1414213562-rc1:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
|
@ -1498,7 +1498,7 @@ fi
|
|||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
tinmop configure 0.9.9.141421356
|
||||
tinmop configure 0.9.9.1414213562-rc1
|
||||
generated by GNU Autoconf 2.71
|
||||
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
|
@ -1702,7 +1702,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.141421356, which was
|
||||
It was created by tinmop $as_me 0.9.9.1414213562-rc1, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
$ $0$ac_configure_args_raw
|
||||
|
@ -2964,7 +2964,7 @@ fi
|
|||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='tinmop'
|
||||
VERSION='0.9.9.141421356'
|
||||
VERSION='0.9.9.1414213562-rc1'
|
||||
|
||||
|
||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||
|
@ -8521,7 +8521,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.141421356, which was
|
||||
This file was extended by tinmop $as_me 0.9.9.1414213562-rc1, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
|
@ -8581,7 +8581,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.141421356
|
||||
tinmop config.status 0.9.9.1414213562-rc1
|
||||
configured by $0, generated by GNU Autoconf 2.71,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
|
|
@ -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.141421356],[https://codeberg.org/cage/tinmop/],[tinmop],[https://www.autistici.org/interzona/tinmop.html])
|
||||
AC_INIT([tinmop],[0.9.9.1414213562-rc1],[https://codeberg.org/cage/tinmop/],[tinmop],[https://www.autistici.org/interzona/tinmop.html])
|
||||
|
||||
AM_INIT_AUTOMAKE([-Wall foreign])
|
||||
|
||||
|
|
|
@ -23,15 +23,46 @@
|
|||
|
||||
(define-constant +maximum-event-priority+ -2 :test #'=)
|
||||
|
||||
(defparameter *id-lock* (make-lock))
|
||||
(defparameter *id-lock* (make-lock "id-event-lock"))
|
||||
|
||||
(defparameter *event-id* 0)
|
||||
|
||||
;; used only in batch mode from the command line
|
||||
(defparameter *process-events-immediately* nil
|
||||
"Used only in batch mode from the command line. Instead of pushing
|
||||
the event on a priority queue that will be picked by a thread
|
||||
process the event immediately")
|
||||
"Should be used only in batch mode from the command line (but i have
|
||||
broken this rule rule here and there!).
|
||||
|
||||
When non nil, instead of pushing the event on a priority queue that
|
||||
will be picked (and ran) by another thread, runs the event
|
||||
immediately. Be very careful when binding this variable to non nil
|
||||
value: no code when binding is true can call 'push-event'.
|
||||
|
||||
for example
|
||||
|
||||
(let ((*process-events-immediately* t))
|
||||
(push-event (make-instance 'function-event
|
||||
;;;;; vvvvvv !recursive locking!
|
||||
:payload (lambda () (push-event (make-instance 'an-event)))
|
||||
:priority ,priority)))
|
||||
will raise an error
|
||||
|
||||
instead:
|
||||
|
||||
;;;; vvvvv notice the value nil
|
||||
(let ((*process-events-immediately* nil))
|
||||
(push-event (make-instance 'function-event
|
||||
:payload (lambda () (push-event (make-instance 'an-event)))
|
||||
:priority ,priority)))
|
||||
|
||||
will not.
|
||||
|
||||
To clarify this is the implementation of 'push-event':
|
||||
|
||||
(defun push-event (event)
|
||||
(wrapped-in-lock (*events-queue*)
|
||||
(if *process-events-immediately*
|
||||
(process-event event)
|
||||
(push-element *events-queue* event))))")
|
||||
|
||||
(defparameter *stop-event-dispatching* nil)
|
||||
|
||||
|
@ -84,7 +115,8 @@
|
|||
(priority object)
|
||||
(notes object))))
|
||||
|
||||
(defgeneric process-event (object))
|
||||
(defgeneric process-event (object)
|
||||
(:documentation "Process a program event. NB: In the body of this method an event can not recursively push another event, this error can happens expcecially if *process-events-immediately* is bound to true."))
|
||||
|
||||
#+debug
|
||||
(defmethod process-event :before (object)
|
||||
|
@ -100,11 +132,11 @@
|
|||
|
||||
(defclass events-queue (priority-queue)
|
||||
((lock
|
||||
:initform (make-lock)
|
||||
:initform (make-lock "event-queue-lock")
|
||||
:initarg :lock
|
||||
:accessor lock)
|
||||
(blocking-lock
|
||||
:initform (make-lock)
|
||||
:initform (make-lock "event-blocking-queue-lock")
|
||||
:initarg :blocking-lock
|
||||
:accessor blocking-lock)
|
||||
(condition-variable
|
||||
|
@ -1251,10 +1283,14 @@
|
|||
keybindings:*gemini-message-keymap*)
|
||||
(gemini-viewer:maybe-initialize-metadata window)
|
||||
(refresh-gemini-message-window links page-data ir-text nil)
|
||||
(ui:open-gemini-toc)
|
||||
(ui:open-gemini-message-link-window :give-focus nil :enqueue t)
|
||||
(ui:focus-to-message-window)
|
||||
(windows:draw window)))))
|
||||
(let ((already-enqueued *process-events-immediately*))
|
||||
(if already-enqueued
|
||||
(process-event (make-instance 'gemini-toc-open))
|
||||
(ui:open-gemini-toc))
|
||||
(ui:open-gemini-message-link-window :give-focus nil
|
||||
:enqueue (not already-enqueued))
|
||||
(ui:focus-to-message-window)
|
||||
(windows:draw window))))))
|
||||
|
||||
(defclass gemini-request-event (program-event)
|
||||
((url
|
||||
|
|
|
@ -712,6 +712,9 @@ printed in the box column by column; in the example above the results are:
|
|||
(not (iri:absolute-url-p word))))
|
||||
words)))
|
||||
|
||||
(defmethod lines->uri ((object null))
|
||||
object)
|
||||
|
||||
(defun collect-links (text &optional (schemes '("http" "https" "ftp" "gemini" "gopher")))
|
||||
"Collect all hyperlinks in a text marked from a list of valid `schemes'"
|
||||
(flet ((build-re-scheme ()
|
||||
|
|
|
@ -195,13 +195,17 @@
|
|||
(let ((event (make-instance 'error-message-event
|
||||
:priority priority
|
||||
:payload message)))
|
||||
(push-event event)))
|
||||
(if *process-events-immediately*
|
||||
(process-event event)
|
||||
(push-event event))))
|
||||
|
||||
(defun info-message (message &optional (priority +standard-event-priority+))
|
||||
(let ((event (make-instance 'info-message-event
|
||||
:priority priority
|
||||
:payload message)))
|
||||
(push-event event)))
|
||||
(if *process-events-immediately*
|
||||
(process-event event)
|
||||
(push-event event))))
|
||||
|
||||
(defun confirm-file-overwrite-dialog-immediate (filepath)
|
||||
(let ((res (info-dialog-immediate (format nil
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
(defsystem :tinmop
|
||||
:author "cage"
|
||||
:license "GPLv3"
|
||||
:version "0.9.9.141421356"
|
||||
:version "0.9.9.1414213562-rc1"
|
||||
:pathname "src"
|
||||
:serial t
|
||||
:bug-tracker "https://codeberg.org/cage/tinmop/issues"
|
||||
|
|
Loading…
Reference in New Issue