From 1579efa8c896591b46b1e5d4e9e5d4fe87d20df0 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Fri, 23 Jan 2026 12:02:42 +0100 Subject: [PATCH 1/6] Rename to sidebar again (fixes #6291) --- crates/api/api/src/community/tag.rs | 16 ++++++------- .../src/reports/community_report/create.rs | 3 ++- crates/api/api_crud/src/community/create.rs | 10 ++++---- crates/api/api_crud/src/community/update.rs | 10 ++++---- .../api_crud/src/multi_community/create.rs | 2 +- .../api_crud/src/multi_community/update.rs | 2 +- crates/api/api_crud/src/site/create.rs | 12 +++++----- crates/api/api_crud/src/site/update.rs | 12 +++++----- crates/api/routes_v3/src/convert.rs | 2 +- .../apub/activities/src/community/report.rs | 2 +- crates/apub/objects/src/objects/community.rs | 23 +++++++++---------- crates/apub/objects/src/objects/instance.rs | 17 +++++++------- .../objects/src/objects/multi_community.rs | 4 ++-- crates/apub/objects/src/protocol/tags.rs | 4 ++-- crates/apub/send/src/inboxes.rs | 6 ++--- crates/db_schema/src/impls/community.rs | 2 +- crates/db_schema/src/impls/tag.rs | 4 ++-- crates/db_schema/src/source/community.rs | 6 ++--- .../db_schema/src/source/multi_community.rs | 6 ++--- crates/db_schema/src/source/site.rs | 6 ++--- crates/db_schema/src/source/tag.rs | 6 ++--- crates/db_schema_file/src/schema.rs | 9 ++++---- crates/db_views/community/src/api.rs | 12 +++++----- crates/db_views/community/src/impls.rs | 2 +- crates/db_views/post/src/db_perf/mod.rs | 2 +- crates/db_views/post/src/test.rs | 4 ++-- crates/db_views/search_combined/src/impls.rs | 2 +- crates/db_views/site/src/api.rs | 4 ++-- crates/routes/src/feeds.rs | 2 +- crates/utils/src/utils/validation.rs | 2 +- .../down.sql | 9 ++++++++ .../up.sql | 10 ++++++++ 32 files changed, 116 insertions(+), 97 deletions(-) create mode 100644 migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql create mode 100644 migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql diff --git a/crates/api/api/src/community/tag.rs b/crates/api/api/src/community/tag.rs index 1238cc8d26..ca03da6dcb 100644 --- a/crates/api/api/src/community/tag.rs +++ b/crates/api/api/src/community/tag.rs @@ -40,9 +40,9 @@ pub async fn create_community_tag( check_community_mod_action(&local_user_view, &community, false, &mut context.pool()).await?; check_api_elements_count(community_view.post_tags.0.len())?; - if let Some(desc) = &data.description { - summary_length_check(desc)?; - check_slurs(desc, &slur_regex(&context).await?)?; + if let Some(summary) = &data.summary { + summary_length_check(summary)?; + check_slurs(summary, &slur_regex(&context).await?)?; } let ap_id = Url::parse(&format!("{}/tag/{}", community.ap_id, &data.name))?; @@ -51,7 +51,7 @@ pub async fn create_community_tag( let tag_form = TagInsertForm { name: data.name.clone(), display_name: data.display_name.clone(), - description: data.description.clone(), + summary: data.summary.clone(), community_id: data.community_id, ap_id: ap_id.into(), deleted: Some(false), @@ -78,15 +78,15 @@ pub async fn update_community_tag( // Verify that only mods can update tags check_community_mod_action(&local_user_view, &community, false, &mut context.pool()).await?; - if let Some(desc) = &data.description { - summary_length_check(desc)?; - check_slurs(desc, &slur_regex(&context).await?)?; + if let Some(summary) = &data.summary { + summary_length_check(summary)?; + check_slurs(summary, &slur_regex(&context).await?)?; } // Update the tag let tag_form = TagUpdateForm { display_name: diesel_string_update(data.display_name.as_deref()), - description: diesel_string_update(data.description.as_deref()), + summary: diesel_string_update(data.summary.as_deref()), updated_at: Some(Some(Utc::now())), ..Default::default() }; diff --git a/crates/api/api/src/reports/community_report/create.rs b/crates/api/api/src/reports/community_report/create.rs index 822f08e993..670a5de253 100644 --- a/crates/api/api/src/reports/community_report/create.rs +++ b/crates/api/api/src/reports/community_report/create.rs @@ -48,7 +48,8 @@ pub async fn create_community_report( original_community_summary: community.summary, original_community_icon: community.icon, original_community_name: community.name, - original_community_description: community.description, + // TODO: also rename this + original_community_description: community.sidebar, original_community_title: community.title, reason, }; diff --git a/crates/api/api_crud/src/community/create.rs b/crates/api/api_crud/src/community/create.rs index 049b872ad7..fa18a7f497 100644 --- a/crates/api/api_crud/src/community/create.rs +++ b/crates/api/api_crud/src/community/create.rs @@ -65,14 +65,14 @@ pub async fn create_community( let url_blocklist = get_url_blocklist(&context).await?; check_slurs(&data.name, &slur_regex)?; check_slurs(&data.title, &slur_regex)?; - let description = - process_markdown_opt(&data.description, &slur_regex, &url_blocklist, &context).await?; + let sidebar = + process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context).await?; let title = data.title.trim(); is_valid_display_name(title)?; // Ensure that the sidebar has fewer than the max num characters... - if let Some(description) = &description { - is_valid_body_field(description, false)?; + if let Some(sidebar) = &sidebar { + is_valid_body_field(sidebar, false)?; } let summary = data.summary.clone(); @@ -92,7 +92,7 @@ pub async fn create_community( let keypair = generate_actor_keypair()?; let community_form = CommunityInsertForm { - description, + sidebar, summary, nsfw: data.nsfw, ap_id: Some(community_ap_id.clone()), diff --git a/crates/api/api_crud/src/community/update.rs b/crates/api/api_crud/src/community/update.rs index a7e0c6dc9d..d3366d8a8a 100644 --- a/crates/api/api_crud/src/community/update.rs +++ b/crates/api/api_crud/src/community/update.rs @@ -49,14 +49,14 @@ pub async fn update_community( is_valid_display_name(title)?; } - let description = diesel_string_update( - process_markdown_opt(&data.description, &slur_regex, &url_blocklist, &context) + let sidebar = diesel_string_update( + process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context) .await? .as_deref(), ); - if let Some(Some(description)) = &description { - is_valid_body_field(description, false)?; + if let Some(Some(sidebar)) = &sidebar { + is_valid_body_field(sidebar, false)?; } let summary = diesel_string_update(data.summary.as_deref()); @@ -80,7 +80,7 @@ pub async fn update_community( let community_form = CommunityUpdateForm { title: data.title.clone(), - description, + sidebar, summary, nsfw: data.nsfw, posting_restricted_to_mods: data.posting_restricted_to_mods, diff --git a/crates/api/api_crud/src/multi_community/create.rs b/crates/api/api_crud/src/multi_community/create.rs index a4aa804b58..1047547ea7 100644 --- a/crates/api/api_crud/src/multi_community/create.rs +++ b/crates/api/api_crud/src/multi_community/create.rs @@ -40,7 +40,7 @@ pub async fn create_multi_community( let form = MultiCommunityInsertForm { title: data.title.clone(), - description: data.description.clone(), + summary: data.summary.clone(), ap_id: Some(ap_id), private_key: site_view.site.private_key, inbox_url: Some(site_view.site.inbox_url), diff --git a/crates/api/api_crud/src/multi_community/update.rs b/crates/api/api_crud/src/multi_community/update.rs index 5574466beb..fc05604bde 100644 --- a/crates/api/api_crud/src/multi_community/update.rs +++ b/crates/api/api_crud/src/multi_community/update.rs @@ -26,7 +26,7 @@ pub async fn update_multi_community( let form = MultiCommunityUpdateForm { title: diesel_string_update(data.title.as_deref()), - description: diesel_string_update(data.description.as_deref()), + summary: diesel_string_update(data.summary.as_deref()), deleted: data.deleted, updated_at: Some(Utc::now()), }; diff --git a/crates/api/api_crud/src/site/create.rs b/crates/api/api_crud/src/site/create.rs index 2368dc91e0..682321c6c0 100644 --- a/crates/api/api_crud/src/site/create.rs +++ b/crates/api/api_crud/src/site/create.rs @@ -57,12 +57,12 @@ pub async fn create_site( let slur_regex = slur_regex(&context).await?; let url_blocklist = get_url_blocklist(&context).await?; - let description = - process_markdown_opt(&data.description, &slur_regex, &url_blocklist, &context).await?; + let sidebar = + process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context).await?; let site_form = SiteUpdateForm { name: Some(data.name.clone()), - description: diesel_string_update(description.as_deref()), + sidebar: diesel_string_update(sidebar.as_deref()), summary: diesel_string_update(data.summary.as_deref()), ap_id: Some(ap_id), last_refreshed_at: Some(Utc::now()), @@ -166,8 +166,8 @@ fn validate_create_payload(local_site: &LocalSite, create_site: &CreateSite) -> site_default_post_listing_type_check(&create_site.default_post_listing_type)?; // Ensure that the sidebar has fewer than the max num characters... - if let Some(body) = &create_site.description { - is_valid_body_field(body, false)?; + if let Some(sidebar) = &create_site.sidebar { + is_valid_body_field(sidebar, false)?; } application_question_check( @@ -330,7 +330,7 @@ mod tests { }, &CreateSite { name: String::from("site_name"), - description: Some(String::new()), + sidebar: Some(String::new()), summary: Some(String::new()), application_question: Some(String::new()), private_instance: Some(false), diff --git a/crates/api/api_crud/src/site/update.rs b/crates/api/api_crud/src/site/update.rs index 89513acb51..37c69beffe 100644 --- a/crates/api/api_crud/src/site/update.rs +++ b/crates/api/api_crud/src/site/update.rs @@ -65,8 +65,8 @@ pub async fn update_site( let slur_regex = slur_regex(&context).await?; let url_blocklist = get_url_blocklist(&context).await?; - let description = diesel_string_update( - process_markdown_opt(&data.description, &slur_regex, &url_blocklist, &context) + let sidebar = diesel_string_update( + process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context) .await? .as_deref(), ); @@ -76,7 +76,7 @@ pub async fn update_site( let site_form = SiteUpdateForm { name: data.name.clone(), - description, + sidebar, summary: diesel_string_update(data.summary.as_deref()), content_warning: diesel_string_update(data.content_warning.as_deref()), updated_at: Some(Some(Utc::now())), @@ -213,8 +213,8 @@ fn validate_update_payload(local_site: &LocalSite, edit_site: &EditSite) -> Lemm site_default_post_listing_type_check(&edit_site.default_post_listing_type)?; // Ensure that the sidebar has fewer than the max num characters... - if let Some(body) = &edit_site.description { - is_valid_body_field(body, false)?; + if let Some(sidebar) = &edit_site.sidebar { + is_valid_body_field(sidebar, false)?; } application_question_check( @@ -351,7 +351,7 @@ mod tests { }, &EditSite { name: Some(String::from("site_name")), - description: Some(String::new()), + sidebar: Some(String::new()), summary: Some(String::new()), application_question: Some(String::new()), private_instance: Some(false), diff --git a/crates/api/routes_v3/src/convert.rs b/crates/api/routes_v3/src/convert.rs index e48a4db2e5..0d0b6e9fc0 100644 --- a/crates/api/routes_v3/src/convert.rs +++ b/crates/api/routes_v3/src/convert.rs @@ -572,7 +572,7 @@ pub(crate) fn convert_site(site: Site) -> SiteV3 { let Site { id, name, - description: sidebar, + sidebar, published_at, updated_at, icon, diff --git a/crates/apub/activities/src/community/report.rs b/crates/apub/activities/src/community/report.rs index 5c3d4566f9..c97ec240e4 100644 --- a/crates/apub/activities/src/community/report.rs +++ b/crates/apub/activities/src/community/report.rs @@ -140,7 +140,7 @@ impl Activity for Report { original_community_banner: community.banner.clone(), original_community_icon: community.icon.clone(), original_community_summary: community.summary.clone(), - original_community_description: community.description.clone(), + original_community_description: community.sidebar.clone(), }; CommunityReport::report(&mut context.pool(), &report_form).await?; } diff --git a/crates/apub/objects/src/objects/community.rs b/crates/apub/objects/src/objects/community.rs index 5fc92640b7..8b5eb5e6a5 100644 --- a/crates/apub/objects/src/objects/community.rs +++ b/crates/apub/objects/src/objects/community.rs @@ -48,7 +48,7 @@ use lemmy_utils::{ utils::{ markdown::markdown_to_html, slurs::{check_slurs, check_slurs_opt}, - validation::truncate_description, + validation::truncate_summary, }, }; use std::{ops::Deref, sync::OnceLock}; @@ -123,10 +123,10 @@ impl Object for ApubCommunity { id: self.id().clone().into(), preferred_username: self.name.clone(), name: Some(self.title.clone()), - content: self.summary.as_ref().map(|d| markdown_to_html(d)), - source: self.summary.clone().map(Source::new), - summary: self.description.clone(), - media_type: self.summary.as_ref().map(|_| MediaTypeHtml::Html), + summary: self.sidebar.as_ref().map(|d| markdown_to_html(d)), + source: self.sidebar.clone().map(Source::new), + content: self.summary.clone(), + media_type: self.sidebar.as_ref().map(|_| MediaTypeHtml::Html), icon: self.icon.clone().map(ImageObject::new), image: self.banner.clone().map(ImageObject::new), sensitive: Some(self.nsfw), @@ -179,10 +179,9 @@ impl Object for ApubCommunity { let slur_regex = slur_regex(context).await?; let url_blocklist = get_url_blocklist(context).await?; - let description = read_from_string_or_source_opt(&group.summary, &None, &group.source); - let description = - process_markdown_opt(&description, &slur_regex, &url_blocklist, context).await?; - let description = markdown_rewrite_remote_links_opt(description, context).await; + let sidebar = read_from_string_or_source_opt(&group.summary, &None, &group.source); + let sidebar = process_markdown_opt(&sidebar, &slur_regex, &url_blocklist, context).await?; + let sidebar = markdown_rewrite_remote_links_opt(sidebar, context).await; let icon = proxy_image_link_opt_apub(group.icon.clone().map(|i| i.url), context).await?; let banner = proxy_image_link_opt_apub(group.image.clone().map(|i| i.url), context).await?; let visibility = Some(community_visibility(&group)); @@ -203,9 +202,9 @@ impl Object for ApubCommunity { last_refreshed_at: Some(Utc::now()), icon, banner, - description, + sidebar, removed, - summary: group.content.clone().as_deref().map(truncate_description), + summary: group.content.clone().as_deref().map(truncate_summary), followers_url: group.followers.clone().clone().map(Into::into), inbox_url: Some( group @@ -308,7 +307,7 @@ pub(crate) mod tests { // Test the sidebar and description assert_eq!( - community.description.as_ref().map(std::string::String::len), + community.sidebar.as_ref().map(std::string::String::len), Some(63) ); assert_eq!( diff --git a/crates/apub/objects/src/objects/instance.rs b/crates/apub/objects/src/objects/instance.rs index b32bdcfbc5..a1e95b69e3 100644 --- a/crates/apub/objects/src/objects/instance.rs +++ b/crates/apub/objects/src/objects/instance.rs @@ -95,10 +95,10 @@ impl Object for ApubSite { id: self.id().clone().into(), name: self.name.clone(), preferred_username: Some(data.domain().to_string()), - content: self.description.as_ref().map(|d| markdown_to_html(d)), - source: self.description.clone().map(Source::new), - summary: self.summary.clone(), - media_type: self.description.as_ref().map(|_| MediaTypeHtml::Html), + summary: self.sidebar.as_ref().map(|d| markdown_to_html(d)), + source: self.sidebar.clone().map(Source::new), + content: self.summary.clone(), + media_type: self.sidebar.as_ref().map(|_| MediaTypeHtml::Html), icon: self.icon.clone().map(ImageObject::new), image: self.banner.clone().map(ImageObject::new), inbox: self.inbox_url.clone().into(), @@ -138,16 +138,15 @@ impl Object for ApubSite { let slur_regex = slur_regex(context).await?; let url_blocklist = get_url_blocklist(context).await?; - let description = read_from_string_or_source_opt(&apub.content, &None, &apub.source); - let description = - process_markdown_opt(&description, &slur_regex, &url_blocklist, context).await?; - let description = markdown_rewrite_remote_links_opt(description, context).await; + let sidebar = read_from_string_or_source_opt(&apub.content, &None, &apub.source); + let sidebar = process_markdown_opt(&sidebar, &slur_regex, &url_blocklist, context).await?; + let sidebar = markdown_rewrite_remote_links_opt(sidebar, context).await; let icon = proxy_image_link_opt_apub(apub.icon.map(|i| i.url), context).await?; let banner = proxy_image_link_opt_apub(apub.image.map(|i| i.url), context).await?; let site_form = SiteInsertForm { name: apub.name.clone(), - description, + sidebar, updated_at: apub.updated, icon, banner, diff --git a/crates/apub/objects/src/objects/multi_community.rs b/crates/apub/objects/src/objects/multi_community.rs index 4d2000090c..30c5baed54 100644 --- a/crates/apub/objects/src/objects/multi_community.rs +++ b/crates/apub/objects/src/objects/multi_community.rs @@ -90,7 +90,7 @@ impl Object for ApubMultiCommunity { following: self.following_url.clone().into(), name: self.name.clone(), summary: self.title.clone(), - content: self.description.clone(), + content: self.summary.clone(), attributed_to: creator.ap_id.into(), }) } @@ -120,7 +120,7 @@ impl Object for ApubMultiCommunity { ap_id: Some(json.id.into()), local: Some(false), title: json.summary, - description: json.content, + summary: json.content, public_key: json.public_key.public_key_pem, private_key: None, inbox_url: Some(json.inbox.into()), diff --git a/crates/apub/objects/src/protocol/tags.rs b/crates/apub/objects/src/protocol/tags.rs index b1c10ce34f..a96dc61d10 100644 --- a/crates/apub/objects/src/protocol/tags.rs +++ b/crates/apub/objects/src/protocol/tags.rs @@ -84,7 +84,7 @@ impl CommunityTag { id: tag.ap_id.into(), name: tag.display_name, preferred_username: tag.name, - content: tag.description, + content: tag.summary, } } @@ -93,7 +93,7 @@ impl CommunityTag { ap_id: self.id.clone().into(), name: self.preferred_username.clone(), display_name: self.name.clone(), - description: self.content.clone(), + summary: self.content.clone(), community_id, deleted: Some(false), } diff --git a/crates/apub/send/src/inboxes.rs b/crates/apub/send/src/inboxes.rs index 5f0390f91e..09593b5cc2 100644 --- a/crates/apub/send/src/inboxes.rs +++ b/crates/apub/send/src/inboxes.rs @@ -280,7 +280,7 @@ mod tests { let site = Site { id: SiteId(1), name: "Test Site".to_string(), - description: None, + sidebar: None, published_at: Utc::now(), updated_at: None, icon: None, @@ -403,7 +403,7 @@ mod tests { let site = Site { id: SiteId(1), name: "Test Site".to_string(), - description: None, + sidebar: None, published_at: Utc::now(), updated_at: None, icon: None, @@ -520,7 +520,7 @@ mod tests { let site = Site { id: SiteId(1), name: "Test Site".to_string(), - description: None, + sidebar: None, published_at: Utc::now(), updated_at: None, icon: None, diff --git a/crates/db_schema/src/impls/community.rs b/crates/db_schema/src/impls/community.rs index 832adf02df..fe5af57711 100644 --- a/crates/db_schema/src/impls/community.rs +++ b/crates/db_schema/src/impls/community.rs @@ -732,7 +732,7 @@ mod tests { id: inserted_community.id, name: "TIL".into(), title: "nada".to_owned(), - description: None, + sidebar: None, summary: None, nsfw: false, removed: false, diff --git a/crates/db_schema/src/impls/tag.rs b/crates/db_schema/src/impls/tag.rs index 26ee063116..3b5ddc83f0 100644 --- a/crates/db_schema/src/impls/tag.rs +++ b/crates/db_schema/src/impls/tag.rs @@ -84,7 +84,7 @@ impl Tag { display_name: None, community_id: t.community_id, deleted: Some(true), - description: None, + summary: None, }); forms.extend(delete_forms); @@ -97,7 +97,7 @@ impl Tag { .do_update() .set(( tag::display_name.eq(excluded(tag::display_name)), - tag::description.eq(excluded(tag::description)), + tag::summary.eq(excluded(tag::summary)), tag::deleted.eq(excluded(tag::deleted)), )) .execute(conn) diff --git a/crates/db_schema/src/source/community.rs b/crates/db_schema/src/source/community.rs index 3e4770c273..deccdd3b89 100644 --- a/crates/db_schema/src/source/community.rs +++ b/crates/db_schema/src/source/community.rs @@ -32,7 +32,7 @@ pub struct Community { /// A longer title, that can contain other characters, and doesn't have to be unique. pub title: String, /// A sidebar for the community in markdown. - pub description: Option, + pub sidebar: Option, /// Whether the community is removed by a mod. pub removed: bool, pub published_at: DateTime, @@ -106,7 +106,7 @@ pub struct CommunityInsertForm { pub title: String, pub public_key: String, #[new(default)] - pub description: Option, + pub sidebar: Option, #[new(default)] pub removed: Option, #[new(default)] @@ -152,7 +152,7 @@ pub struct CommunityInsertForm { #[cfg_attr(feature = "full", diesel(table_name = community))] pub struct CommunityUpdateForm { pub title: Option, - pub description: Option>, + pub sidebar: Option>, pub removed: Option, pub published_at: Option>, pub updated_at: Option>>, diff --git a/crates/db_schema/src/source/multi_community.rs b/crates/db_schema/src/source/multi_community.rs index e8771f2e20..131a737a20 100644 --- a/crates/db_schema/src/source/multi_community.rs +++ b/crates/db_schema/src/source/multi_community.rs @@ -33,7 +33,7 @@ pub struct MultiCommunity { pub instance_id: InstanceId, pub name: String, pub title: Option, - pub description: Option, + pub summary: Option, pub local: bool, pub deleted: bool, pub ap_id: DbUrl, @@ -69,7 +69,7 @@ pub struct MultiCommunityInsertForm { #[new(default)] pub title: Option, #[new(default)] - pub description: Option, + pub summary: Option, #[new(default)] pub last_refreshed_at: Option>, #[new(default)] @@ -85,7 +85,7 @@ pub struct MultiCommunityInsertForm { #[cfg_attr(feature = "full", diesel(table_name = multi_community))] pub struct MultiCommunityUpdateForm { pub title: Option>, - pub description: Option>, + pub summary: Option>, pub deleted: Option, pub updated_at: Option>, } diff --git a/crates/db_schema/src/source/site.rs b/crates/db_schema/src/source/site.rs index 35d81a7605..c8b39da045 100644 --- a/crates/db_schema/src/source/site.rs +++ b/crates/db_schema/src/source/site.rs @@ -20,7 +20,7 @@ pub struct Site { pub id: SiteId, pub name: String, /// A sidebar for the site in markdown. - pub description: Option, + pub sidebar: Option, pub published_at: DateTime, pub updated_at: Option>, /// An icon URL. @@ -52,7 +52,7 @@ pub struct SiteInsertForm { pub name: String, pub instance_id: InstanceId, #[new(default)] - pub description: Option, + pub sidebar: Option, #[new(default)] pub updated_at: Option>, #[new(default)] @@ -80,7 +80,7 @@ pub struct SiteInsertForm { #[cfg_attr(feature = "full", diesel(table_name = site))] pub struct SiteUpdateForm { pub name: Option, - pub description: Option>, + pub sidebar: Option>, pub updated_at: Option>>, // when you want to null out a column, you have to send Some(None)), since sending None means you // just don't want to update that column. diff --git a/crates/db_schema/src/source/tag.rs b/crates/db_schema/src/source/tag.rs index b8031f1c75..202771d94a 100644 --- a/crates/db_schema/src/source/tag.rs +++ b/crates/db_schema/src/source/tag.rs @@ -22,7 +22,7 @@ pub struct Tag { pub ap_id: DbUrl, pub name: String, pub display_name: Option, - pub description: Option, + pub summary: Option, /// The community that this tag belongs to pub community_id: CommunityId, pub published_at: DateTime, @@ -37,7 +37,7 @@ pub struct TagInsertForm { pub ap_id: DbUrl, pub name: String, pub display_name: Option, - pub description: Option, + pub summary: Option, pub community_id: CommunityId, pub deleted: Option, } @@ -47,7 +47,7 @@ pub struct TagInsertForm { #[cfg_attr(feature = "full", diesel(table_name = tag))] pub struct TagUpdateForm { pub display_name: Option>, - pub description: Option>, + pub summary: Option>, pub community_id: Option, pub published_at: Option>, pub updated_at: Option>>, diff --git a/crates/db_schema_file/src/schema.rs b/crates/db_schema_file/src/schema.rs index fd8709314e..b5c0d2430a 100644 --- a/crates/db_schema_file/src/schema.rs +++ b/crates/db_schema_file/src/schema.rs @@ -137,7 +137,7 @@ diesel::table! { name -> Varchar, #[max_length = 50] title -> Varchar, - description -> Nullable, + sidebar -> Nullable, removed -> Bool, published_at -> Timestamptz, updated_at -> Nullable, @@ -537,7 +537,7 @@ diesel::table! { #[max_length = 255] title -> Nullable, #[max_length = 255] - description -> Nullable, + summary -> Nullable, local -> Bool, deleted -> Bool, ap_id -> Text, @@ -906,7 +906,7 @@ diesel::table! { id -> Int4, #[max_length = 20] name -> Varchar, - description -> Nullable, + sidebar -> Nullable, published_at -> Timestamptz, updated_at -> Nullable, icon -> Nullable, @@ -940,7 +940,8 @@ diesel::table! { name -> Varchar, #[max_length = 255] display_name -> Nullable, - description -> Nullable, + #[max_length = 150] + summary -> Nullable, community_id -> Int4, published_at -> Timestamptz, updated_at -> Nullable, diff --git a/crates/db_views/community/src/api.rs b/crates/db_views/community/src/api.rs index 66b3b18edd..215939b63b 100644 --- a/crates/db_views/community/src/api.rs +++ b/crates/db_views/community/src/api.rs @@ -99,7 +99,7 @@ pub struct CreateCommunity { /// A longer title. pub title: String, /// A sidebar for the community in markdown. - pub description: Option, + pub sidebar: Option, /// A shorter, one line summary of your community. pub summary: Option, /// An icon URL. @@ -134,7 +134,7 @@ pub struct EditCommunity { /// A longer title. pub title: Option, /// A sidebar for the community in markdown. - pub description: Option, + pub sidebar: Option, /// A shorter, one line summary of your community. pub summary: Option, /// Whether its an NSFW community. @@ -251,7 +251,7 @@ pub struct TransferCommunity { pub struct CreateMultiCommunity { pub name: String, pub title: Option, - pub description: Option, + pub summary: Option, } #[derive(Debug, Serialize, Deserialize, Clone)] @@ -260,7 +260,7 @@ pub struct CreateMultiCommunity { pub struct UpdateMultiCommunity { pub id: MultiCommunityId, pub title: Option, - pub description: Option, + pub summary: Option, pub deleted: Option, } @@ -335,7 +335,7 @@ pub struct CreateCommunityTag { pub community_id: CommunityId, pub name: String, pub display_name: Option, - pub description: Option, + pub summary: Option, } #[skip_serializing_none] @@ -346,7 +346,7 @@ pub struct CreateCommunityTag { pub struct UpdateCommunityTag { pub tag_id: TagId, pub display_name: Option, - pub description: Option, + pub summary: Option, } #[skip_serializing_none] diff --git a/crates/db_views/community/src/impls.rs b/crates/db_views/community/src/impls.rs index 80e5e46c6a..4cafd40aff 100644 --- a/crates/db_views/community/src/impls.rs +++ b/crates/db_views/community/src/impls.rs @@ -431,7 +431,7 @@ mod tests { let site = Site { id: Default::default(), name: String::new(), - description: None, + sidebar: None, published_at: Default::default(), updated_at: None, icon: None, diff --git a/crates/db_views/post/src/db_perf/mod.rs b/crates/db_views/post/src/db_perf/mod.rs index 1bf4d9a67c..aabb16a94d 100644 --- a/crates/db_views/post/src/db_perf/mod.rs +++ b/crates/db_views/post/src/db_perf/mod.rs @@ -183,7 +183,7 @@ fn site() -> LemmyResult { Ok(Site { id: Default::default(), name: String::new(), - description: None, + sidebar: None, published_at: Default::default(), updated_at: None, icon: None, diff --git a/crates/db_views/post/src/test.rs b/crates/db_views/post/src/test.rs index e40aa5ac66..0e5ef528d7 100644 --- a/crates/db_views/post/src/test.rs +++ b/crates/db_views/post/src/test.rs @@ -173,7 +173,7 @@ impl Data { ap_id: Url::parse(&format!("{}/tags/test_tag1", community.ap_id))?.into(), name: "Test Tag 1".into(), display_name: None, - description: None, + summary: None, community_id: community.id, deleted: Some(false), }, @@ -185,7 +185,7 @@ impl Data { ap_id: Url::parse(&format!("{}/tags/test_tag2", community.ap_id))?.into(), name: "Test Tag 2".into(), display_name: None, - description: None, + summary: None, community_id: community.id, deleted: Some(false), }, diff --git a/crates/db_views/search_combined/src/impls.rs b/crates/db_views/search_combined/src/impls.rs index 515d493db9..16c3722b50 100644 --- a/crates/db_views/search_combined/src/impls.rs +++ b/crates/db_views/search_combined/src/impls.rs @@ -293,7 +293,7 @@ impl SearchCombinedQuery { let body_or_description_filter = is_post .and(post::body.ilike(searcher.clone())) .or(is_community.and(community::summary.ilike(searcher.clone()))) - .or(is_multi_community.and(multi_community::description.ilike(searcher.clone()))) + .or(is_multi_community.and(multi_community::summary.ilike(searcher.clone()))) .or(is_person.and(person::bio.ilike(searcher.clone()))); query.filter(name_or_title_filter.or(body_or_description_filter)) } diff --git a/crates/db_views/site/src/api.rs b/crates/db_views/site/src/api.rs index 4ee9dced2f..a56a850d26 100644 --- a/crates/db_views/site/src/api.rs +++ b/crates/db_views/site/src/api.rs @@ -109,7 +109,7 @@ pub struct CreateOAuthProvider { /// Creates a site. Should be done after first running lemmy. pub struct CreateSite { pub name: String, - pub description: Option, + pub sidebar: Option, pub summary: Option, pub community_creation_admin_only: Option, pub require_email_verification: Option, @@ -190,7 +190,7 @@ pub struct EditOAuthProvider { pub struct EditSite { pub name: Option, /// A sidebar for the site, in markdown. - pub description: Option, + pub sidebar: Option, /// A shorter, one line description of your site. pub summary: Option, /// Limits community creation to admins only. diff --git a/crates/routes/src/feeds.rs b/crates/routes/src/feeds.rs index c1cc1de630..e97223ad0f 100644 --- a/crates/routes/src/feeds.rs +++ b/crates/routes/src/feeds.rs @@ -261,7 +261,7 @@ async fn get_feed_multi_community( Ok(send_feed_response( title, link, - multi_community.description, + multi_community.summary, items, site_view, )) diff --git a/crates/utils/src/utils/validation.rs b/crates/utils/src/utils/validation.rs index 72e5c6b71f..5ee7a8fc2f 100644 --- a/crates/utils/src/utils/validation.rs +++ b/crates/utils/src/utils/validation.rs @@ -350,7 +350,7 @@ fn truncate_for_db(text: &str, len: usize) -> String { } } -pub fn truncate_description(text: &str) -> String { +pub fn truncate_summary(text: &str) -> String { truncate_for_db(text, SITE_SUMMARY_MAX_LENGTH) } diff --git a/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql new file mode 100644 index 0000000000..00c12ad93d --- /dev/null +++ b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql @@ -0,0 +1,9 @@ +ALTER TABLE community RENAME sidebar TO description; + +ALTER TABLE multi_community RENAME sidebar TO description; + +ALTER TABLE site RENAME sidebar TO description; + +ALTER TABLE tag RENAME summary TO description; + +ALTER TABLE tag ALTER description TYPE text; diff --git a/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql b/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql new file mode 100644 index 0000000000..d8ded782fa --- /dev/null +++ b/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql @@ -0,0 +1,10 @@ +ALTER TABLE community RENAME description TO sidebar; + +ALTER TABLE site RENAME description TO sidebar; + +-- using summary for this because it has 150 char limit +ALTER TABLE multi_community RENAME description TO summary; + +ALTER TABLE tag RENAME description TO summary; +ALTER TABLE tag ALTER summary TYPE varchar (150); + From 76123e58afb837dc70ddf53679d37cb649b46521 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Fri, 23 Jan 2026 12:06:28 +0100 Subject: [PATCH 2/6] fmt --- crates/api/api_crud/src/community/create.rs | 3 +-- crates/api/api_crud/src/site/create.rs | 3 +-- .../2026-01-23-094410-0000_rename-sidebar-again/down.sql | 4 +++- migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql | 4 +++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/crates/api/api_crud/src/community/create.rs b/crates/api/api_crud/src/community/create.rs index fa18a7f497..d220af4e7d 100644 --- a/crates/api/api_crud/src/community/create.rs +++ b/crates/api/api_crud/src/community/create.rs @@ -65,8 +65,7 @@ pub async fn create_community( let url_blocklist = get_url_blocklist(&context).await?; check_slurs(&data.name, &slur_regex)?; check_slurs(&data.title, &slur_regex)?; - let sidebar = - process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context).await?; + let sidebar = process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context).await?; let title = data.title.trim(); is_valid_display_name(title)?; diff --git a/crates/api/api_crud/src/site/create.rs b/crates/api/api_crud/src/site/create.rs index 682321c6c0..bc590196fc 100644 --- a/crates/api/api_crud/src/site/create.rs +++ b/crates/api/api_crud/src/site/create.rs @@ -57,8 +57,7 @@ pub async fn create_site( let slur_regex = slur_regex(&context).await?; let url_blocklist = get_url_blocklist(&context).await?; - let sidebar = - process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context).await?; + let sidebar = process_markdown_opt(&data.sidebar, &slur_regex, &url_blocklist, &context).await?; let site_form = SiteUpdateForm { name: Some(data.name.clone()), diff --git a/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql index 00c12ad93d..70ce07fc05 100644 --- a/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql +++ b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql @@ -6,4 +6,6 @@ ALTER TABLE site RENAME sidebar TO description; ALTER TABLE tag RENAME summary TO description; -ALTER TABLE tag ALTER description TYPE text; +ALTER TABLE tag + ALTER description TYPE text; + diff --git a/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql b/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql index d8ded782fa..1fb0de3973 100644 --- a/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql +++ b/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql @@ -6,5 +6,7 @@ ALTER TABLE site RENAME description TO sidebar; ALTER TABLE multi_community RENAME description TO summary; ALTER TABLE tag RENAME description TO summary; -ALTER TABLE tag ALTER summary TYPE varchar (150); + +ALTER TABLE tag + ALTER summary TYPE varchar(150); From 095de3375af61ace87f4dffcafdaa96678db4ec3 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Fri, 23 Jan 2026 12:57:40 +0100 Subject: [PATCH 3/6] fixes --- crates/db_views/vote/src/lib.rs | 4 ++-- .../2026-01-23-094410-0000_rename-sidebar-again/down.sql | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/db_views/vote/src/lib.rs b/crates/db_views/vote/src/lib.rs index f6b45a6b96..cecdba5dc7 100644 --- a/crates/db_views/vote/src/lib.rs +++ b/crates/db_views/vote/src/lib.rs @@ -17,11 +17,11 @@ use { #[cfg(feature = "full")] pub mod impls; +/// Only used internally so no ts(export) #[derive(Serialize, Deserialize)] #[cfg_attr(feature = "full", derive(Queryable, Selectable))] #[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))] #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))] -#[cfg_attr(feature = "ts-rs", ts(optional_fields, export))] struct VoteViewPost { #[cfg_attr(feature = "full", diesel(embed))] pub creator: Person, @@ -38,11 +38,11 @@ struct VoteViewPost { post_id: PostId, } +/// Only used internally so no ts(export) #[derive(Serialize, Deserialize)] #[cfg_attr(feature = "full", derive(Queryable, Selectable))] #[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))] #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))] -#[cfg_attr(feature = "ts-rs", ts(optional_fields, export))] struct VoteViewComment { #[cfg_attr(feature = "full", diesel(embed))] pub creator: Person, diff --git a/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql index 70ce07fc05..4206b98481 100644 --- a/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql +++ b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql @@ -1,9 +1,9 @@ ALTER TABLE community RENAME sidebar TO description; -ALTER TABLE multi_community RENAME sidebar TO description; - ALTER TABLE site RENAME sidebar TO description; +ALTER TABLE multi_community RENAME summary TO description; + ALTER TABLE tag RENAME summary TO description; ALTER TABLE tag From a2030c62fc6a62406724e92ebfdc965245de73ef Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Fri, 23 Jan 2026 14:23:49 +0100 Subject: [PATCH 4/6] update api tests --- api_tests/package.json | 2 +- api_tests/pnpm-lock.yaml | 10 +++++----- api_tests/src/community.spec.ts | 4 ++-- api_tests/src/shared.ts | 8 +++----- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/api_tests/package.json b/api_tests/package.json index 8ba592974c..57f3005301 100644 --- a/api_tests/package.json +++ b/api_tests/package.json @@ -33,7 +33,7 @@ "eslint-plugin-prettier": "^5.5.0", "jest": "^30.0.0", "joi": "^18.0.0", - "lemmy-js-client": "1.0.0-community-sidebar-summary.1", + "lemmy-js-client": "1.0.0-rename-sidebar-again.1", "lemmy-js-client-019": "npm:lemmy-js-client@0.19.9", "prettier": "^3.5.3", "ts-jest": "^29.4.0", diff --git a/api_tests/pnpm-lock.yaml b/api_tests/pnpm-lock.yaml index f41bde5371..e168c9f3b8 100644 --- a/api_tests/pnpm-lock.yaml +++ b/api_tests/pnpm-lock.yaml @@ -36,8 +36,8 @@ importers: specifier: ^18.0.0 version: 18.0.2 lemmy-js-client: - specifier: 1.0.0-community-sidebar-summary.1 - version: 1.0.0-community-sidebar-summary.1 + specifier: 1.0.0-rename-sidebar-again.1 + version: 1.0.0-rename-sidebar-again.1 lemmy-js-client-019: specifier: npm:lemmy-js-client@0.19.9 version: lemmy-js-client@0.19.9 @@ -1648,8 +1648,8 @@ packages: lemmy-js-client@0.19.9: resolution: {integrity: sha512-MjeKtmtO8M9wHiKtm60LpZVd7ieI+4yctwwRhZTaxv6yUDI38bhltq8jFYaMDNQ3PKVHUhn33oDuGVnvV1sxKw==} - lemmy-js-client@1.0.0-community-sidebar-summary.1: - resolution: {integrity: sha512-B+jLGeaNxP3Wwo9hDG0FP3fUblK7iLYXr5hNB8MoV+4ZbZHpBOGHWVXC0Xa2nv3r1hxV9D81E/37BQM6WSpQ8w==} + lemmy-js-client@1.0.0-rename-sidebar-again.1: + resolution: {integrity: sha512-B+o9XkzIMlpp8hY8NiHgGk2nAXpCLyO2Y2QBkA+6+g07aCmnb+o7B1mipNoCdRdSUywCGQiAqdB0T5cTnR54OA==} leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} @@ -4356,7 +4356,7 @@ snapshots: lemmy-js-client@0.19.9: {} - lemmy-js-client@1.0.0-community-sidebar-summary.1: + lemmy-js-client@1.0.0-rename-sidebar-again.1: dependencies: '@tsoa/runtime': 6.6.0 transitivePeerDependencies: diff --git a/api_tests/src/community.spec.ts b/api_tests/src/community.spec.ts index 5d27e664d0..89350a66a5 100644 --- a/api_tests/src/community.spec.ts +++ b/api_tests/src/community.spec.ts @@ -637,7 +637,7 @@ test("Remote mods can edit communities", async () => { let form2: EditCommunity = { community_id: betaCommunity.community.id as number, - description: "Example sidebar", + sidebar: "Example sidebar", }; await editCommunity(beta, form2); @@ -645,7 +645,7 @@ test("Remote mods can edit communities", async () => { const communityId = communityRes.community_view.community.id; await waitUntil( () => getCommunity(alpha, communityId), - c => c.community_view.community.description == "Example sidebar", + c => c.community_view.community.sidebar == "Example sidebar", ); }); diff --git a/api_tests/src/shared.ts b/api_tests/src/shared.ts index 3fa1ad631f..10f1e62745 100644 --- a/api_tests/src/shared.ts +++ b/api_tests/src/shared.ts @@ -601,11 +601,11 @@ export async function createCommunity( name_: string = randomString(10), visibility: CommunityVisibility = "public", ): Promise { - let description = "a sample sidebar"; + let sidebar = "a sample sidebar"; let form: CreateCommunity = { name: name_, title: name_, - description, + sidebar, visibility, }; return api.createCommunity(form); @@ -1064,9 +1064,7 @@ export function assertCommunityFederation( expect(communityOne?.community.ap_id).toBe(communityTwo?.community.ap_id); expect(communityOne?.community.name).toBe(communityTwo?.community.name); expect(communityOne?.community.title).toBe(communityTwo?.community.title); - expect(communityOne?.community.description).toBe( - communityTwo?.community.description, - ); + expect(communityOne?.community.sidebar).toBe(communityTwo?.community.sidebar); expect(communityOne?.community.icon).toBe(communityTwo?.community.icon); expect(communityOne?.community.banner).toBe(communityTwo?.community.banner); expect(communityOne?.community.published_at).toBe( From a5a519b46c3f233dd5156ee478217ba29fe3497d Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Mon, 26 Jan 2026 16:28:25 +0100 Subject: [PATCH 5/6] rename community_report.original_community_sidebar --- crates/api/api/src/reports/community_report/create.rs | 3 +-- crates/apub/activities/src/community/report.rs | 2 +- crates/db_schema/src/source/community_report.rs | 4 ++-- crates/db_schema_file/src/schema.rs | 2 +- crates/db_views/report_combined/src/impls.rs | 4 ++-- .../2026-01-23-094410-0000_rename-sidebar-again/down.sql | 2 ++ migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql | 2 ++ 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/crates/api/api/src/reports/community_report/create.rs b/crates/api/api/src/reports/community_report/create.rs index 670a5de253..3177edd5db 100644 --- a/crates/api/api/src/reports/community_report/create.rs +++ b/crates/api/api/src/reports/community_report/create.rs @@ -48,8 +48,7 @@ pub async fn create_community_report( original_community_summary: community.summary, original_community_icon: community.icon, original_community_name: community.name, - // TODO: also rename this - original_community_description: community.sidebar, + original_community_sidebar: community.sidebar, original_community_title: community.title, reason, }; diff --git a/crates/apub/activities/src/community/report.rs b/crates/apub/activities/src/community/report.rs index c97ec240e4..045b67c920 100644 --- a/crates/apub/activities/src/community/report.rs +++ b/crates/apub/activities/src/community/report.rs @@ -140,7 +140,7 @@ impl Activity for Report { original_community_banner: community.banner.clone(), original_community_icon: community.icon.clone(), original_community_summary: community.summary.clone(), - original_community_description: community.sidebar.clone(), + original_community_sidebar: community.sidebar.clone(), }; CommunityReport::report(&mut context.pool(), &report_form).await?; } diff --git a/crates/db_schema/src/source/community_report.rs b/crates/db_schema/src/source/community_report.rs index c51c618216..80259a1577 100644 --- a/crates/db_schema/src/source/community_report.rs +++ b/crates/db_schema/src/source/community_report.rs @@ -29,7 +29,7 @@ pub struct CommunityReport { pub original_community_name: String, pub original_community_title: String, pub original_community_summary: Option, - pub original_community_description: Option, + pub original_community_sidebar: Option, pub original_community_icon: Option, pub original_community_banner: Option, pub reason: String, @@ -48,7 +48,7 @@ pub struct CommunityReportForm { pub original_community_name: String, pub original_community_title: String, pub original_community_summary: Option, - pub original_community_description: Option, + pub original_community_sidebar: Option, pub original_community_icon: Option, pub original_community_banner: Option, pub reason: String, diff --git a/crates/db_schema_file/src/schema.rs b/crates/db_schema_file/src/schema.rs index b5c0d2430a..203cacc2f2 100644 --- a/crates/db_schema_file/src/schema.rs +++ b/crates/db_schema_file/src/schema.rs @@ -223,7 +223,7 @@ diesel::table! { original_community_name -> Text, original_community_title -> Text, original_community_summary -> Nullable, - original_community_description -> Nullable, + original_community_sidebar -> Nullable, original_community_icon -> Nullable, original_community_banner -> Nullable, reason -> Text, diff --git a/crates/db_views/report_combined/src/impls.rs b/crates/db_views/report_combined/src/impls.rs index 6d5198f959..f2f1f44d07 100644 --- a/crates/db_views/report_combined/src/impls.rs +++ b/crates/db_views/report_combined/src/impls.rs @@ -590,7 +590,7 @@ mod tests { original_community_title: data.community.title.clone(), original_community_banner: None, original_community_summary: None, - original_community_description: None, + original_community_sidebar: None, original_community_icon: None, reason: "from sara".into(), }; @@ -1082,7 +1082,7 @@ mod tests { original_community_title: data.community.title.clone(), original_community_banner: None, original_community_summary: None, - original_community_description: None, + original_community_sidebar: None, original_community_icon: None, reason: "the ice cream incident".into(), }; diff --git a/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql index 4206b98481..2438dbb783 100644 --- a/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql +++ b/migrations/2026-01-23-094410-0000_rename-sidebar-again/down.sql @@ -1,5 +1,7 @@ ALTER TABLE community RENAME sidebar TO description; +ALTER TABLE community_report RENAME original_community_sidebar TO original_community_description; + ALTER TABLE site RENAME sidebar TO description; ALTER TABLE multi_community RENAME summary TO description; diff --git a/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql b/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql index 1fb0de3973..f5db4f6a55 100644 --- a/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql +++ b/migrations/2026-01-23-094410-0000_rename-sidebar-again/up.sql @@ -1,5 +1,7 @@ ALTER TABLE community RENAME description TO sidebar; +ALTER TABLE community_report RENAME original_community_description TO original_community_sidebar; + ALTER TABLE site RENAME description TO sidebar; -- using summary for this because it has 150 char limit From 5ead5f6dd5eb26016f980f01a2d65d723df754d9 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 27 Jan 2026 10:42:06 +0100 Subject: [PATCH 6/6] Rename federation fields for community and multi (fixes #6299) --- crates/apub/objects/src/objects/community.rs | 9 +++++---- crates/apub/objects/src/objects/multi_community.rs | 14 +++++++------- .../apub/objects/src/protocol/multi_community.rs | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/crates/apub/objects/src/objects/community.rs b/crates/apub/objects/src/objects/community.rs index 8b5eb5e6a5..5d15863f44 100644 --- a/crates/apub/objects/src/objects/community.rs +++ b/crates/apub/objects/src/objects/community.rs @@ -123,9 +123,9 @@ impl Object for ApubCommunity { id: self.id().clone().into(), preferred_username: self.name.clone(), name: Some(self.title.clone()), - summary: self.sidebar.as_ref().map(|d| markdown_to_html(d)), + content: self.sidebar.as_ref().map(|d| markdown_to_html(d)), source: self.sidebar.clone().map(Source::new), - content: self.summary.clone(), + summary: self.summary.clone(), media_type: self.sidebar.as_ref().map(|_| MediaTypeHtml::Html), icon: self.icon.clone().map(ImageObject::new), image: self.banner.clone().map(ImageObject::new), @@ -166,6 +166,7 @@ impl Object for ApubCommunity { check_slurs(&group.preferred_username, &slur_regex)?; check_slurs_opt(&group.name, &slur_regex)?; check_slurs_opt(&group.summary, &slur_regex)?; + check_slurs_opt(&group.content, &slur_regex)?; Ok(()) } @@ -179,7 +180,7 @@ impl Object for ApubCommunity { let slur_regex = slur_regex(context).await?; let url_blocklist = get_url_blocklist(context).await?; - let sidebar = read_from_string_or_source_opt(&group.summary, &None, &group.source); + let sidebar = read_from_string_or_source_opt(&group.content, &None, &group.source); let sidebar = process_markdown_opt(&sidebar, &slur_regex, &url_blocklist, context).await?; let sidebar = markdown_rewrite_remote_links_opt(sidebar, context).await; let icon = proxy_image_link_opt_apub(group.icon.clone().map(|i| i.url), context).await?; @@ -204,7 +205,7 @@ impl Object for ApubCommunity { banner, sidebar, removed, - summary: group.content.clone().as_deref().map(truncate_summary), + summary: group.summary.clone().as_deref().map(truncate_summary), followers_url: group.followers.clone().clone().map(Into::into), inbox_url: Some( group diff --git a/crates/apub/objects/src/objects/multi_community.rs b/crates/apub/objects/src/objects/multi_community.rs index 30c5baed54..9b2ac16213 100644 --- a/crates/apub/objects/src/objects/multi_community.rs +++ b/crates/apub/objects/src/objects/multi_community.rs @@ -88,9 +88,9 @@ impl Object for ApubMultiCommunity { // reusing pubkey from site instead of generating new one public_key: site.public_key(), following: self.following_url.clone().into(), - name: self.name.clone(), - summary: self.title.clone(), - content: self.summary.clone(), + preferred_username: self.name.clone(), + name: self.title.clone(), + summary: self.summary.clone(), attributed_to: creator.ap_id.into(), }) } @@ -106,7 +106,7 @@ impl Object for ApubMultiCommunity { let slur_regex = slur_regex(context).await?; - check_slurs(&json.name, &slur_regex)?; + check_slurs(&json.preferred_username, &slur_regex)?; check_slurs_opt(&json.summary, &slur_regex)?; Ok(()) } @@ -116,11 +116,11 @@ impl Object for ApubMultiCommunity { let form = MultiCommunityInsertForm { creator_id: creator.id, instance_id: creator.instance_id, - name: json.name, + name: json.preferred_username, ap_id: Some(json.id.into()), local: Some(false), - title: json.summary, - summary: json.content, + title: json.name, + summary: json.summary, public_key: json.public_key.public_key_pem, private_key: None, inbox_url: Some(json.inbox.into()), diff --git a/crates/apub/objects/src/protocol/multi_community.rs b/crates/apub/objects/src/protocol/multi_community.rs index 00d448be5e..571b913e80 100644 --- a/crates/apub/objects/src/protocol/multi_community.rs +++ b/crates/apub/objects/src/protocol/multi_community.rs @@ -18,12 +18,12 @@ pub struct Feed { pub r#type: FeedType, pub id: ObjectId, pub inbox: Url, + pub name: Option, + pub preferred_username: String, pub public_key: PublicKey, pub following: CollectionId, - pub name: String, pub summary: Option, - pub content: Option, pub attributed_to: ObjectId, }