Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -740,7 +740,7 @@ jobs:
df -h
- name: Build FreeBSD
id: build-freebsd
uses: vmactions/freebsd-vm@v1.4.1
uses: vmactions/freebsd-vm@v1.4.2
with:
usesh: true
mem: 8192
Expand Down
13 changes: 12 additions & 1 deletion dist/macos/macgstcopy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ fi

mkdir -p "${bundledir}/Contents/PlugIns/gio-modules" || exit 1
mkdir -p "${bundledir}/Contents/PlugIns/gstreamer" || exit 1
mkdir -p "${bundledir}/Contents/Frameworks" || exit 1

if [ -e "${GIO_EXTRA_MODULES}/libgiognutls.so" ]; then
cp -v -f "${GIO_EXTRA_MODULES}/libgiognutls.so" "${bundledir}/Contents/PlugIns/gio-modules/" || exit 1
Expand Down Expand Up @@ -91,6 +92,8 @@ libgstid3demux
libgstid3tag
libgstisomp4
libgstlame
# Needed for WebM/Matroska containers that often wrap Opus streams.
libgstmatroska
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Matroska isn't currently built, it needs to be enabled in https://github.com/strawberrymusicplayer/strawberry-macos-dependencies/
how did you test this?

libgstmpegpsdemux
libgstmpegpsmux
libgstmpegtsdemux
Expand Down Expand Up @@ -138,12 +141,20 @@ for gst_plugin in $gst_plugins; do
fi
done

# libgstmatroska depends on libgstriff, which is not always pulled automatically.
Copy link
Copy Markdown
Member

@jonaski jonaski Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then we need to investigate why, this seems like a workaround, isn't libgstriff-1.0.0.dylib linked?

gst_library_path=$(dirname "${GST_PLUGIN_PATH}")
if [ -e "${gst_library_path}/libgstriff-1.0.0.dylib" ]; then
cp -v -f "${gst_library_path}/libgstriff-1.0.0.dylib" "${bundledir}/Contents/Frameworks/" || exit 1
install_name_tool -id "@rpath/libgstriff-1.0.0.dylib" "${bundledir}/Contents/Frameworks/libgstriff-1.0.0.dylib"
else
echo "Warning: Missing ${gst_library_path}/libgstriff-1.0.0.dylib."
fi

# libsoup is dynamically loaded by gstreamer, so it needs to be copied.
if [ "${LIBSOUP_LIBRARY_PATH}" = "" ]; then
echo "Warning: Set the LIBSOUP_LIBRARY_PATH environment variable for copying libsoup."
else
if [ -e "${LIBSOUP_LIBRARY_PATH}" ]; then
mkdir -p "${bundledir}/Contents/Frameworks" || exit 1
cp -v -f "${LIBSOUP_LIBRARY_PATH}" "${bundledir}/Contents/Frameworks/" || exit 1
install_name_tool -id "@rpath/$(basename ${LIBSOUP_LIBRARY_PATH})" "${bundledir}/Contents/Frameworks/$(basename ${LIBSOUP_LIBRARY_PATH})"
else
Expand Down
16 changes: 15 additions & 1 deletion src/dialogs/trackselectiondialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ TrackSelectionDialog::TrackSelectionDialog(const SharedPtr<TagReaderClient> tagr

// Setup dialog window
ui_->setupUi(this);
// Preserve line breaks from backend diagnostics.
ui_->error_details->setTextFormat(Qt::PlainText);

QObject::connect(ui_->song_list, &QListWidget::currentRowChanged, this, &TrackSelectionDialog::UpdateStack);
QObject::connect(ui_->results, &QTreeWidget::currentItemChanged, this, &TrackSelectionDialog::ResultSelected);
Expand Down Expand Up @@ -144,7 +146,7 @@ void TrackSelectionDialog::FetchTagProgress(const Song &original_song, const QSt

}

void TrackSelectionDialog::FetchTagFinished(const Song &original_song, const SongList &songs_guessed) {
void TrackSelectionDialog::FetchTagFinished(const Song &original_song, const SongList &songs_guessed, const QString &error) {

// Find the item with this filename
int row = -1;
Expand All @@ -162,6 +164,7 @@ void TrackSelectionDialog::FetchTagFinished(const Song &original_song, const Son

// Add the results to the list
data_[row].pending_ = false;
data_[row].error_string_ = error.trimmed();
data_[row].results_ = songs_guessed;

// If it's the current item, update the display
Expand All @@ -185,8 +188,19 @@ void TrackSelectionDialog::UpdateStack() {
}
if (tag_data.results_.isEmpty()) {
ui_->stack->setCurrentWidget(ui_->error_page);
// Show backend diagnostics to make tag fetch failures actionable for users.
QString error_details = tag_data.error_string_;
if (error_details.isEmpty()) {
error_details = tr("No additional diagnostic information is available.");
}
ui_->error_details_title->setVisible(true);
ui_->error_details->setVisible(true);
ui_->error_details->setText(error_details);
return;
}
ui_->error_details_title->setVisible(false);
ui_->error_details->setVisible(false);
ui_->error_details->clear();
ui_->stack->setCurrentWidget(ui_->results_page);

// Clear tree widget
Expand Down
4 changes: 3 additions & 1 deletion src/dialogs/trackselectiondialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class TrackSelectionDialog : public QDialog {

public Q_SLOTS:
void FetchTagProgress(const Song &original_song, const QString &progress);
void FetchTagFinished(const Song &original_song, const SongList &songs_guessed);
void FetchTagFinished(const Song &original_song, const SongList &songs_guessed, const QString &error = QString());

// QDialog
void accept() override;
Expand All @@ -78,6 +78,8 @@ class TrackSelectionDialog : public QDialog {
Song original_song_;
bool pending_;
QString progress_string_;
// Carries technical diagnostics returned by TagFetcher for the error page.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't think we need too many comments like this, since no other variables are commented.

QString error_string_;
SongList results_;
int selected_result_;
};
Expand Down
35 changes: 35 additions & 0 deletions src/dialogs/trackselectiondialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,41 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="error_details_title">
<property name="text">
<string>Technical details</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="visible">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">QLabel { font-weight: bold; }</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="error_details">
<property name="text">
<string></string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByMouse</set>
</property>
<property name="visible">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
Expand Down
Loading