@ -509,9 +509,12 @@ type WorkspaceStorageSetting struct {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// The max upload size in megabytes.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					UploadSizeLimitMb  int64  ` protobuf:"varint,3,opt,name=upload_size_limit_mb,json=uploadSizeLimitMb,proto3" json:"upload_size_limit_mb,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// The S3 config.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					S3Config       * StorageS3Config  ` protobuf:"bytes,4,opt,name=s3_config,json=s3Config,proto3" json:"s3_config,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					unknownFields  protoimpl . UnknownFields 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					sizeCache      protoimpl . SizeCache 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					S3Config  * StorageS3Config  ` protobuf:"bytes,4,opt,name=s3_config,json=s3Config,proto3" json:"s3_config,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// use_thumbnails_for_s3_images enables thumbnail generation for images stored in S3.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// When false, images stored in S3 will not have thumbnails generated.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					UseThumbnailsForS3Images  bool  ` protobuf:"varint,5,opt,name=use_thumbnails_for_s3_images,json=useThumbnailsForS3Images,proto3" json:"use_thumbnails_for_s3_images,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					unknownFields             protoimpl . UnknownFields 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					sizeCache                 protoimpl . SizeCache 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				func  ( x  * WorkspaceStorageSetting )  Reset ( )  { 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -572,6 +575,13 @@ func (x *WorkspaceStorageSetting) GetS3Config() *StorageS3Config {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					return  nil 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				func  ( x  * WorkspaceStorageSetting )  GetUseThumbnailsForS3Images ( )  bool  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					if  x  !=  nil  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
						return  x . UseThumbnailsForS3Images 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					return  false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				type  StorageS3Config  struct  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					state            protoimpl . MessageState  ` protogen:"open.v1" ` 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -676,12 +686,9 @@ type WorkspaceMemoRelatedSetting struct {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// enable_blur_nsfw_content enables blurring of content marked as not safe for work (NSFW).
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					EnableBlurNsfwContent  bool  ` protobuf:"varint,9,opt,name=enable_blur_nsfw_content,json=enableBlurNsfwContent,proto3" json:"enable_blur_nsfw_content,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// nsfw_tags is the list of tags that mark content as NSFW for blurring.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					NsfwTags  [ ] string  ` protobuf:"bytes,10,rep,name=nsfw_tags,json=nsfwTags,proto3" json:"nsfw_tags,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// use_thumbnails_for_s3_images enables thumbnail generation for images stored in S3.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					// When false, images stored in S3 will not have thumbnails generated.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					UseThumbnailsForS3Images  bool  ` protobuf:"varint,11,opt,name=use_thumbnails_for_s3_images,json=useThumbnailsForS3Images,proto3" json:"use_thumbnails_for_s3_images,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					unknownFields             protoimpl . UnknownFields 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					sizeCache                 protoimpl . SizeCache 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					NsfwTags       [ ] string  ` protobuf:"bytes,10,rep,name=nsfw_tags,json=nsfwTags,proto3" json:"nsfw_tags,omitempty" ` 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					unknownFields  protoimpl . UnknownFields 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					sizeCache      protoimpl . SizeCache 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				func  ( x  * WorkspaceMemoRelatedSetting )  Reset ( )  { 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -777,13 +784,6 @@ func (x *WorkspaceMemoRelatedSetting) GetNsfwTags() []string {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					return  nil 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				func  ( x  * WorkspaceMemoRelatedSetting )  GetUseThumbnailsForS3Images ( )  bool  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					if  x  !=  nil  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
						return  x . UseThumbnailsForS3Images 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					return  false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				var  File_store_workspace_setting_proto  protoreflect . FileDescriptor 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				const  file_store_workspace_setting_proto_rawDesc  =  ""  + 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -814,12 +814,13 @@ const file_store_workspace_setting_proto_rawDesc = "" +
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x05title\x18\x01 \x01(\tR\x05title\x12 \n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\vdescription\x18\x02 \x01(\tR\vdescription\x12\x19\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\blogo_url\x18\x03 \x01(\tR\alogoUrl\x12\x16\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x06locale\x18\x04 \x01(\tR\x06locale\"\x d5\x02 \n" + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x06locale\x18\x04 \x01(\tR\x06locale\"\x 95\x03 \n" + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x17WorkspaceStorageSetting\x12S\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\fstorage_type\x18\x01 \x01(\x0e20.memos.store.WorkspaceStorageSetting.StorageTypeR\vstorageType\x12+\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x11filepath_template\x18\x02 \x01(\tR\x10filepathTemplate\x12/\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x14upload_size_limit_mb\x18\x03 \x01(\x03R\x11uploadSizeLimitMb\x129\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\ts3_config\x18\x04 \x01(\v2\x1c.memos.store.StorageS3ConfigR\bs3Config\"L\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\ts3_config\x18\x04 \x01(\v2\x1c.memos.store.StorageS3ConfigR\bs3Config\x12>\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x1cuse_thumbnails_for_s3_images\x18\x05 \x01(\bR\x18useThumbnailsForS3Images\"L\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\vStorageType\x12\x1c\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x18STORAGE_TYPE_UNSPECIFIED\x10\x00\x12\f\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\bDATABASE\x10\x01\x12\t\n"  + 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -831,7 +832,7 @@ const file_store_workspace_setting_proto_rawDesc = "" +
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\bendpoint\x18\x03 \x01(\tR\bendpoint\x12\x16\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x06region\x18\x04 \x01(\tR\x06region\x12\x16\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x06bucket\x18\x05 \x01(\tR\x06bucket\x12$\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x0euse_path_style\x18\x06 \x01(\bR\fusePathStyle\"\x a1\x04 \n" + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x0euse_path_style\x18\x06 \x01(\bR\fusePathStyle\"\x e1\x03 \n" + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x1bWorkspaceMemoRelatedSetting\x12<\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x1adisallow_public_visibility\x18\x01 \x01(\bR\x18disallowPublicVisibility\x127\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x18display_with_update_time\x18\x02 \x01(\bR\x15displayWithUpdateTime\x120\n"  + 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -842,8 +843,7 @@ const file_store_workspace_setting_proto_rawDesc = "" +
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x1adisable_markdown_shortcuts\x18\b \x01(\bR\x18disableMarkdownShortcuts\x127\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x18enable_blur_nsfw_content\x18\t \x01(\bR\x15enableBlurNsfwContent\x12\x1b\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\tnsfw_tags\x18\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					" \x03(\tR\bnsfwTags\x12>\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x1cuse_thumbnails_for_s3_images\x18\v \x01(\bR\x18useThumbnailsForS3Images*s\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					" \x03(\tR\bnsfwTags*s\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x13WorkspaceSettingKey\x12%\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"!WORKSPACE_SETTING_KEY_UNSPECIFIED\x10\x00\x12\t\n"  + 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
					"\x05BASIC\x10\x01\x12\v\n"  +