A slight OT, but since I've been working on it for the past weeks for dayjob, I 
wrote a local first, very simple, Forgejo client library for now [0]. It has no 
UI but I assume writing one for ncurses or gtk would be doable.

I hope one day it will be complete enough to make a cli client for codeberg.

Cheers,

giacomo

[0]: https://codeberg.org/fishinthecalculator/giorgio

Il 28 luglio 2026 02:58:41 CEST, Maxim Cournoyer <[email protected]> ha 
scritto:
>Hi Simon,
>
>I won't rehash your points, it seems our experience has a lot in common.
>
>I'd just like to point the better (still far from perfect) Forgejo
>client I've used so far, emacs-forgejo.  Contrary to emacs-fj, it keeps
>a local sqlite database of all the issues, and you can hopefully (I
>haven't tried) consult them offline, in a tabular view (no pesky pages!)
>similar to what could be done with Debbugs.  Unfortunately, the author
>(Thanos) recently decided against using Forgejo (and switched to Nix),
>so the tool is currently abandoned :-/.
>
>Anyway, you may want to try it; it's still packaged in Guix for
>now. It's at least useful to browse issues and configured via
>bug-reference; below is, I think, the relevant configurations (it's a
>dump, probably there's too many things there, but hopefully you find
>something useful):
>
>--8<---------------cut here---------------start------------->8---
>>
>;;; Forgejo & Codeberg
>
>;;; fj.el
>(require 'fj)
>(setopt fj-user "apteryx")
>
>;;; Visual-fill-column.
>(require 'visual-fill-column)
>(add-hook 'visual-line-mode-hook #'visual-fill-column-for-vline)
>
>;;; Emacs-forgejo.
>(require 'forgejo)
>(add-hook 'forgejo-watch-hooks #'forgejo-alert-notify)
>(setopt forgejo-buffer-setup-functions
>              (list (lambda (buffer)
>                      (unless (derived-mode-p 'tabulated-list-mode)
>                        (visual-line-mode t))))
>              forgejo-watch-rules '(("*")))
>
>>
>;;; Bug-reference, Debbugs & friends.
>(require 'bug-reference)
>(add-hook 'erc-mode-hook #'bug-reference-mode)
>(add-hook 'gnus-mode-hook #'bug-reference-mode)
>(add-hook 'gnus-summary-mode-hook #'bug-reference-mode)
>(add-hook 'gnus-article-mode-hook #'bug-reference-mode)
>(add-hook 'magit-revision-mode #'bug-reference-mode)
>(add-hook 'prog-mode-hook #'bug-reference-prog-mode)
>
>(let* ((bug-regexp (rx (seq (?? "bug")
>                            (group (seq (? "guix/guix") (or "#" "!"))
>                                   (group (one-or-more digit))))))
>       (make-url-format (lambda (org repo)
>                          (lambda ()
>                            (let ((matched-text (match-string 0))
>                                  (number (match-string 2)))
>                              (if (string-search "bug#" matched-text)
>                                  (concat "https://issues.guix.gnu.org/"; 
> number)
>                                (format "https://codeberg.org/%s/%s/issues/%s";
>                                        org repo number))))))
>       (guix-url-format (funcall make-url-format "guix" "guix"))
>       (guile-url-format (funcall make-url-format "guile" "guile")))
>  ;; For ERC.
>  (add-to-list 'bug-reference-setup-from-irc-alist
>               (list "#guix" "Libera.Chat" bug-regexp guix-url-format)
>               (list "#guile" "Libera.Chat" bug-regexp guile-url-format))
>  ;; For Gnus.
>  (add-to-list 'bug-reference-setup-from-mail-alist
>               (list (rx "guixotic.coop") ;catch-all
>                     nil bug-regexp guix-url-format))
>  (add-to-list 'bug-reference-setup-from-mail-alist
>               (list (rx (seq "lists." (* anything) "guile"))
>                     nil bug-regexp guile-url-format)))
>
>(require 'debbugs)
>(require 'debbugs-browse)
>(add-hook 'bug-reference-mode-hook #'debbugs-browse-mode)
>(add-hook 'bug-reference-prog-mode-hook #'debbugs-browse-mode)
>(add-hook 'log-view-mode-hook #'debbugs-browse-mode) ;for vc-chage-log
>(add-hook 'bug-reference-mode-hook #'forgejo-browse-mode)
>(add-hook 'bug-reference-prog-mode-hook #'forgejo-browse-mode)
>(add-hook 'log-view-mode-hook #'forgejo-browse-mode) ;for vc-chage-log
>
>
>;; The following allows Emacs Debbugs user to open the issue directly within
>;; Emacs.
>(setq debbugs-browse-url-regexp
>      (rx "http" (zero-or-one "s") "://"
>          (or "debbugs" "issues.guix" "bugs")
>          ".gnu.org" (one-or-more "/")
>          (group (zero-or-one "cgi/bugreport.cgi?bug="))
>          (group-n 3 (one-or-more digit))))
>
>;; Reduce the number of prompts with 'M-x debbugs-gnu'.
>(setq debbugs-gnu-default-packages '("guix" "guix-patches"))
>
>;; Show feature requests.
>(setq debbugs-gnu-default-severities
> '("serious" "important" "normal" "minor" "wishlist"))
>--8<---------------cut here---------------end--------------->8---
>
>The review comments being made near-useless after force-pushing has
>occurred at least twice, invalidating some of my time-intensive
>reviews. Is there a Forgejo issue tracking that problem already?
>
>-- 
>Thanks,
>Maxim
>

Reply via email to