Errors inside condition-case-unless-debug do not trigger the debugger when the
--debug-init startup option is set (and debug-on-error is not additionally and
explicitly set to a non-nil value).
This can be reproduced, for example, by adding the following to init.el:
(condition-case-unless-debug nil
(error "error")
(error
(message "error caught")))
and restarting Emacs with --debug-init. In Emacs 29 this enters the debugger
(as expected), while in Emacs 30 the message "error caught" is displayed.
On a related note, the Emacs Lisp reference manual still says the following: "[...]
use the option ‘--debug-init’. This binds debug-on-error to t while loading the
init file, [...]".
(https://www.gnu.org/software/emacs/manual/html_node/elisp/Error-Debugging.html#Error-Debugging)
AFAICT this is no longer correct since the implementation uses handler-bind instead.
(Originally reported in https://github.com/syl20bnr/spacemacs/issues/16871
and https://github.com/syl20bnr/spacemacs/issues/16619#issuecomment-2708510954.)
Best,
Ferdinand