fix(nav): stop labelling the mixed media feed "Shorts"

Two different destinations in the bottom-bar picker showed the same
"Shorts" label with different icons and different content:

- Main > NavBarItem.VIDEO (Route.Video, VideoFeedFilter) is the combined
  media feed: NIP-68 pictures, NIP-94 file headers and every NIP-71 video
  kind (normal, horizontal, vertical, short), scoped by the "stories"
  follow list. This is the one that also shows images.
- Feeds > NavBarItem.SHORTS (Route.Shorts, ShortsFeedFilter) is vertical
  video only (kinds 22 and 34236), scoped by the "shorts" follow list.

Relabel the first one "Media", which is accurate for its contents and
doesn't collide with the neighbouring Pictures / Videos / Shorts feed
entries. The FAB on that screen was described as "New Shorts: images or
videos" for the same reason, so it becomes "New Media: image or video".

Both are new string keys rather than edits in place: all 47 locales had
translated the old keys as "Shorts", and those translations would be
wrong for the new meaning. Crowdin drops the retired keys on its next
sync and the label falls back to English until retranslated.

The NavBarItem enum constants are serialized into user settings by name,
so VIDEO keeps its name — only the display label changes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ya9C9GkvkRHLRqrPCAa4WA
This commit is contained in:
Claude
2026-08-31 20:41:48 +00:00
parent 826fc826db
commit d6d5a72e49
3 changed files with 12 additions and 5 deletions
@@ -119,10 +119,13 @@ val NavBarCatalog: Map<NavBarItem, NavBarItemDef> =
icon = MaterialSymbols.Mail, icon = MaterialSymbols.Mail,
resolveRoute = { Route.Message }, resolveRoute = { Route.Message },
), ),
// The combined media feed (VideoFeedFilter): pictures, NIP-94 files and every NIP-71
// video kind. Deliberately *not* labelled "Shorts" — NavBarItem.SHORTS below is the
// vertical-video-only feed, and the two used to share that label.
NavBarItem.VIDEO to NavBarItem.VIDEO to
NavBarItemDef( NavBarItemDef(
id = NavBarItem.VIDEO, id = NavBarItem.VIDEO,
labelRes = R.string.route_video, labelRes = R.string.route_media,
icon = MaterialSymbols.Subscriptions, icon = MaterialSymbols.Subscriptions,
resolveRoute = { Route.Video() }, resolveRoute = { Route.Video() },
), ),
@@ -315,6 +318,8 @@ val NavBarCatalog: Map<NavBarItem, NavBarItemDef> =
icon = MaterialSymbols.AutoMirrored.FormatListBulleted, icon = MaterialSymbols.AutoMirrored.FormatListBulleted,
resolveRoute = { Route.CalendarCollections }, resolveRoute = { Route.CalendarCollections },
), ),
// Vertical/short video only (ShortsFeedFilter: kinds 22 + 34236). The broader
// picture-and-video feed is NavBarItem.VIDEO ("Media") above.
NavBarItem.SHORTS to NavBarItem.SHORTS to
NavBarItemDef( NavBarItemDef(
id = NavBarItem.SHORTS, id = NavBarItem.SHORTS,
@@ -225,7 +225,7 @@ fun NewVideoFeedButton(
) { ) {
Icon( Icon(
symbol = MaterialSymbols.Close, symbol = MaterialSymbols.Close,
contentDescription = stringRes(id = R.string.new_short), contentDescription = stringRes(id = R.string.new_media),
modifier = Size26Modifier, modifier = Size26Modifier,
tint = MaterialTheme.colorScheme.onPrimary, tint = MaterialTheme.colorScheme.onPrimary,
) )
@@ -238,7 +238,7 @@ fun NewVideoFeedButton(
) { ) {
Icon( Icon(
painter = painterRes(R.drawable.ic_compose, 5), painter = painterRes(R.drawable.ic_compose, 5),
contentDescription = stringRes(id = R.string.new_short), contentDescription = stringRes(id = R.string.new_media),
modifier = Size26Modifier, modifier = Size26Modifier,
tint = MaterialTheme.colorScheme.onPrimary, tint = MaterialTheme.colorScheme.onPrimary,
) )
+4 -2
View File
@@ -3201,7 +3201,9 @@
<string name="route_discover">Discover</string> <string name="route_discover">Discover</string>
<string name="route_messages">Messages</string> <string name="route_messages">Messages</string>
<string name="route_notifications">Notifications</string> <string name="route_notifications">Notifications</string>
<string name="route_video">Shorts</string> <!-- Label for the mixed media feed: pictures + every NIP-71 video kind + NIP-94 files.
Distinct from the "shorts" string, which labels the vertical/short-video-only feed. -->
<string name="route_media">Media</string>
<string name="route_calendars">Calendars</string> <string name="route_calendars">Calendars</string>
<string name="route_calendar_collections">Calendar lists</string> <string name="route_calendar_collections">Calendar lists</string>
<string name="route_chess">Chess</string> <string name="route_chess">Chess</string>
@@ -3474,7 +3476,7 @@
<string name="route_import_follows">Import Follows</string> <string name="route_import_follows">Import Follows</string>
<string name="new_post">New Post</string> <string name="new_post">New Post</string>
<string name="new_short">New Shorts: images or videos</string> <string name="new_media">New Media: image or video</string>
<string name="new_community_note">New Community Note</string> <string name="new_community_note">New Community Note</string>
<string name="new_product">New Product</string> <string name="new_product">New Product</string>
<string name="new_long_form_post">New Article</string> <string name="new_long_form_post">New Article</string>