anchor.diff:      );
     }
   }
  +
  +enum AlbumAction {
  +  queueLast,
  +  queueNext,
  +}
  +
  +_albumContextMenu(dto.Directory directory, Color? color) => PopupMenuButton<AlbumAction>(
  +      // Manually specify child because default IconButton comes with an excessive minimum size of 48x48
  +      child: Icon(Icons.adaptive.more, color: color),
  +      onSelected: (AlbumAction result) async {
  +        final Playlist playlist = getIt<Playlist>();
  +        final polaris.Client client = getIt<polaris.Client>();
  +        // TODO show some kind of UI while this is in progress (+ confirm)
  +        final List<dto.Song> songs = await client.flatten(directory.path);
  +        switch (result) {
  +          case AlbumAction.queueLast:
  +            playlist.queueLast(songs);
  +            break;
  +          case AlbumAction.queueNext:
  +            playlist.queueNext(songs);
  +            break;
  +          default:
  +            break;
  +        }
  +      },
  +      itemBuilder: (BuildContext context) => const <PopupMenuEntry<AlbumAction>>[
  +        PopupMenuItem<AlbumAction>(
  +          value: AlbumAction.queueLast,
  +          child: Text(queueLast),
  +        ),
  +        PopupMenuItem<AlbumAction>(
  +          value: AlbumAction.queueNext,
  +          child: Text(queueNext),
  +        ),
  +      ],
  +    );
  
positive.code:         return AlbumDetails(album);
        },
        closedBuilder: (context, action) {
          return Align(
            alignment: Alignment.topCenter,
            child: Material(
  
negative.code: }
  
  class Album extends StatelessWidget {
    final dto.Directory album;
    final TextStyle titleStyle;
    final TextStyle artistStyle;
    final StrutStyle titleStrutStyle;
  