              (straight--output "%s..." ,task-car-sym))
            (progn
              ,@body)
-         (when (and ,task-cdr-sym (not noninteractive))
-           (message "%s...done" ,task-cdr-sym))))))
+         (when ,task-cdr-sym
+           (straight--output "%s...done" ,task-cdr-sym))))))
 
 (defun straight--progress-begin (message)
   "Display a MESSAGE indicating ongoing progress.
 The MESSAGE is postpended with \"...\" and then passed to
 `message'. See also `straight--with-progress' and
 `straight--progress-end'."
-  (message "%s..." message))
+  (straight--output "%s..." message))
 
 (defun straight--progress-end (message)
   "Display a MESSAGE indicating completed progress.
 The MESSAGE is postpended with \"...done\" and then passed to
 `message'. See also `straight--with-progress' and
 `straight--progress-begin'."
-  (message "%s...done" message))
+  (straight--output "%s...done" message))
 
 (defvar straight--echo-area-dirty nil
   "Non-nil if a progress message has been wiped from the echo area.

                   (eq use-symlinks straight-use-symlinks))
            ;; If anything is wrong, abort and use the default values.
            (when malformed
              (message "Rebuilding all packages due to malformed build cache"))
            (setq needs-immediate-save t)
            (error "Malformed or outdated build cache"))
          ;; Otherwise, we can load from disk.

             (with-temp-buffer
               (insert-file-contents-literally link-record)
               (buffer-string)))
          (straight--output
           "Broken symlink, you are not editing the real file"))))))

(define-minor-mode straight-symlink-emulation-mode
  "Minor mode for emulating symlinks in the software layer.
