diff --git a/lib/music_library/records.ex b/lib/music_library/records.ex
index 1c347a13..602ffd8e 100644
--- a/lib/music_library/records.ex
+++ b/lib/music_library/records.ex
@@ -83,6 +83,13 @@ defmodule MusicLibrary.Records do
{:desc, r.inserted_at},
order_alphabetically()
])
+
+ :release ->
+ initial_search
+ |> order_by([r], [
+ {:desc, r.release_date},
+ order_alphabetically()
+ ])
end
Enum.reduce(parsed_query, search_with_order, fn
diff --git a/lib/music_library_web/live/collection_live/index.ex b/lib/music_library_web/live/collection_live/index.ex
index 7f7ae3e9..ebdb435e 100644
--- a/lib/music_library_web/live/collection_live/index.ex
+++ b/lib/music_library_web/live/collection_live/index.ex
@@ -184,6 +184,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
defp parse_order("alphabetical"), do: :alphabetical
defp parse_order("purchase"), do: :purchase
+ defp parse_order("release"), do: :release
defp order_path(record_list_params, order) do
qs =
diff --git a/lib/music_library_web/live/collection_live/index.html.heex b/lib/music_library_web/live/collection_live/index.html.heex
index d8ddd1af..fb7a2c7a 100644
--- a/lib/music_library_web/live/collection_live/index.html.heex
+++ b/lib/music_library_web/live/collection_live/index.html.heex
@@ -51,6 +51,16 @@
<.icon name="hero-user-solid" class="icon" aria-hidden="true" data-slot="icon" />
{gettext("A->Z")}
+ <.button
+ patch={order_path(@record_list_params, :release)}
+ size="sm"
+ class={[
+ @record_list_params.order == :release && "bg-zinc-100! dark:bg-zinc-700!"
+ ]}
+ >
+ <.icon name="hero-calendar-days" class="icon" aria-hidden="true" data-slot="icon" />
+ {gettext("Release")}
+
<.button_group>
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index a1e9c729..561aac07 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -1641,3 +1641,8 @@ msgstr[1] ""
#, elixir-autogen, elixir-format
msgid "Never"
msgstr ""
+
+#: lib/music_library_web/live/collection_live/index.html.heex
+#, elixir-autogen, elixir-format
+msgid "Release"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index 6ae19934..9566f27e 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -1641,3 +1641,8 @@ msgstr[1] ""
#, elixir-autogen, elixir-format
msgid "Never"
msgstr ""
+
+#: lib/music_library_web/live/collection_live/index.html.heex
+#, elixir-autogen, elixir-format, fuzzy
+msgid "Release"
+msgstr ""