You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
paopao-ce/CHANGELOG.md

21 KiB

Changelog

All notable changes to paopao-ce are documented in this file.

0.6.0+dev (dev)

Added

  • add all-in-one docker image build scripts.
  • frontend: add tweets filter support use tag for home page and make it as default behavior.
  • add pin topic support.
  • support upload webp format image as picture when send tweet.
  • support use bcrypt or md5 as authentication method. Use md5 as authentication default if not custom add BcryptAuthMethod or Md5AuthMethod to conf.yaml 's Features section. add BcryptAuthMethod or Md5AuthMethod to conf.yaml 's Features section to enable this feature like below:
    # file config.yaml
    ...
    Features:
      Default: ["Postgres", "Meili", "LocalOSS", "LoggerOpenObserve", "BcryptAuthMethod", "web"]
    ...
    
    mirgration database first(sql ddl file in scripts/migration/**/*_password_use_bcrypt.up.sql):
    ALTER TABLE `p_user` MODIFY COLUMN `password` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '密码';
    
    UPDATE
        p_user
    SET
        password = CONCAT_WS(':', password, salt);
    
    ALTER TABLE `p_user` DROP COLUMN `salt`;
    

0.5.2

Change

  • frontend: optimize to use fold/unfold action for post item display.

Fixed

  • fixed follow page incorrect results.

0.5.1

Added

  • User/Profile page add setting option when page's user is self.

Fixed

  • fixed update user metric incorrect when no user record.

Change

  • frontend: follow/unfollow option hint add username info in home/user/profile/message/collections page.

0.5.0

Added

  • add LoggerOpenObserve feature use OpenObserve to collect log.#370
    add LoggerOpenObserve to conf.yaml 's Features section to enable this feature like below:
    # file config.yaml
    ...
    Features:
      Default: ["Base", "Postgres", "Meili", "LocalOSS", "LoggerOpenObserve", "BigCacheIndex", "web"]
    LoggerOpenObserve: # 使用OpenObserve写日志
    Host: 127.0.0.1:5080
    Organization: paopao-ce
    Stream: default
    User: root@paopao.info
    Password: tiFEI8UeJWuYA7kN
    Secure: False
    MinWorker: 5               # 最小后台工作者, 设置范围[5, 100], 默认5
    MaxLogBuffer: 100          # 最大log缓存条数, 设置范围[10, 10000], 默认100
    ...
    
  • Added friend tweets bar feature support in home page. #377
  • web: add custom Friendship feature support. To custom setup Friendship use below configure in web/.env or web/.env.local
    # 功能特性开启
    VITE_USE_FRIENDSHIP=true
    
    # 模块开启
    VITE_ENABLE_FRIENDS_BAR=true
    
  • add Newest/Hots/Following tweets support in friend bar feature. mirgration database first(sql ddl file in scripts/migration/**/*_home_timeline.up.sql):
    CREATE TABLE `p_post_metric` (
      `id` bigint unsigned NOT NULL AUTO_INCREMENT,
      `post_id` bigint unsigned NOT NULL,
      `rank_score` bigint unsigned NOT NULL DEFAULT 0,
      `incentive_score` int unsigned NOT NULL DEFAULT 0,
      `decay_factor` int unsigned NOT NULL DEFAULT 0,
      `motivation_factor` int unsigned NOT NULL DEFAULT 0,
      `is_del` tinyint NOT NULL DEFAULT 0, -- 是否删除, 0否, 1是
      `created_on` bigint unsigned NOT NULL DEFAULT '0',
      `modified_on` bigint unsigned NOT NULL DEFAULT '0',
      `deleted_on` bigint unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`) USING BTREE,
      KEY `idx_post_metric_post_id_rank_score` (`post_id`,`rank_score`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
    
    INSERT INTO p_post_metric (post_id, rank_score, created_on) 
    SELECT id AS post_id, 
        comment_count + upvote_count*2 + collection_count*4 AS rank_score,
        created_on
    FROM p_post
    WHERE is_del=0;
    
    -- 原来的可见性: 0公开 1私密 2好友可见 3关注可见
    -- 现在的可见性: 0私密 10充电可见 20订阅可见 30保留 40保留 50好友可见 60关注可见 70保留 80保留 90公开
    UPDATE p_post a, p_post b 
    SET a.visibility = (
        CASE b.visibility 
    	    WHEN 0 THEN 90 
    	    WHEN 1 THEN 0 
    	    WHEN 2 THEN 50 
    	    WHEN 3 THEN 60 
    	    ELSE 0
        END 
    )
    WHERE a.ID = b.ID;
    
  • add cache support for index/home etc. page.
  • add hots comments support for post detail page.
  • add highlight comments support for post detail page. mirgration database first(sql ddl file in scripts/migration/**/*_comment_esence.up.sql):
      ALTER TABLE `p_comment` ADD COLUMN `is_essence` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '是否精选';
    
  • add follow/unfollow user support in index/home/collecion/message/post page.
  • add simple prometheus metrics support. add Metrics to conf.yaml 's Features section to enable this feature like below:
    # file config.yaml
    ...
    Features:
      Default: ["Base", "Postgres", "Meili", "LocalOSS", "Metrics", "web"]
    JobManager: # Cron Job理器的配置参数
      MaxOnlineInterval: "@every 5m"       # 更新最大在线人数默认每5分钟更新一次
      UpdateMetricsInterval: "@every 5m"   # 更新Prometheus指标默认每5分钟更新一次
    MetricsServer: # Prometheus Metrics服务
      RunMode: debug
      HttpIp: 0.0.0.0
      HttpPort: 6080
      ReadTimeout: 60
      WriteTimeout: 60
    ...
    
  • add full support for tweet hots comment logic and add cache support for tweet comments. mirgration database first(sql ddl file in scripts/migration/**/*_rank_metrics.up.sql):
    ALTER TABLE `p_comment` ADD COLUMN `reply_count` int unsigned NOT NULL DEFAULT 0 COMMENT '回复数';
    
    UPDATE p_comment comment 
    SET reply_count = (
      SELECT count(*) FROM p_comment_reply reply WHERE reply.comment_id=comment.id AND reply.is_del=0
    )
    WHERE is_del=0;
    
    CREATE TABLE `p_comment_metric` (
        `id` bigint unsigned NOT NULL AUTO_INCREMENT,
      `comment_id` bigint unsigned NOT NULL,
        `rank_score` bigint unsigned NOT NULL DEFAULT 0,
        `incentive_score` int unsigned NOT NULL DEFAULT 0,
        `decay_factor` int unsigned NOT NULL DEFAULT 0,
        `motivation_factor` int unsigned NOT NULL DEFAULT 0,
        `is_del` tinyint NOT NULL DEFAULT 0,
        `created_on` bigint unsigned NOT NULL DEFAULT 0,
        `modified_on` bigint unsigned NOT NULL DEFAULT 0,
        `deleted_on` bigint unsigned NOT NULL DEFAULT 0,
        PRIMARY KEY (`id`) USING BTREE,
        KEY `idx_comment_metric_comment_id_rank_score` (`comment_id`, `rank_score`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
    
    INSERT INTO p_comment_metric (comment_id, rank_score, created_on) 
    SELECT id AS comment_id, 
        reply_count*2 + thumbs_up_count*4 - thumbs_down_count AS rank_score,
        created_on
    FROM p_comment
    WHERE is_del=0;
    
    CREATE TABLE `p_user_metric` (
        `id` bigint unsigned NOT NULL AUTO_INCREMENT,
        `user_id` bigint unsigned NOT NULL,
        `tweets_count` int unsigned NOT NULL DEFAULT 0,
      `latest_trends_on` bigint unsigned NOT NULL DEFAULT 0 COMMENT '最新动态时间',
        `is_del` tinyint NOT NULL DEFAULT 0,
        `created_on` bigint unsigned NOT NULL DEFAULT 0,
        `modified_on` bigint unsigned NOT NULL DEFAULT 0,
        `deleted_on` bigint unsigned NOT NULL DEFAULT 0,
        PRIMARY KEY (`id`) USING BTREE,
        KEY `idx_user_metric_user_id_tweets_count_trends` (`user_id`, `tweets_count`, `latest_trends_on`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
    
    INSERT INTO p_user_metric (user_id, tweets_count) 
    SELECT user_id, count(*) AS tweets_count
    FROM p_post
    WHERE is_del=0
    GROUP BY user_id;
    
  • add message filter support for message page.
  • add read all unread message and display unread message count support for message page.
  • add support follow user embed to index trends enable navigation user tweets by slide bar. mirgration database first(sql ddl file in scripts/migration/**/*_user_relation.up.sql):
    CREATE VIEW p_user_relation AS 
    SELECT user_id, friend_id he_uid, 5 AS style 
    FROM p_contact WHERE status=2 AND is_del=0
    UNION
    SELECT user_id, follow_id he_uid, 10 AS style 
    FROM p_following WHERE is_del=0;
    
  • add tweets count info in Home/Profile page.
  • add custom web frontend features base by a profile that fetch from backend support. can add custom config to conf.yaml to custom web frontend features:
    ...
    WebProfile:
      UseFriendship: true              # 前端是否使用好友体系
      EnableTrendsBar: true            # 广场页面是否开启动态条栏功能
      EnableWallet: false              # 是否开启钱包功能
      AllowTweetAttachment: true       # 是否允许推文附件
      AllowTweetAttachmentPrice: true  # 是否允许推文付费附件
      AllowTweetVideo: true            # 是否允许视频推文
      AllowUserRegister: true          # 是否允许用户注册
      AllowPhoneBind: true             # 是否允许手机绑定
      DefaultTweetMaxLength: 2000      # 推文允许输入的最大长度, 默认2000字值的范围需要查询后端支持的最大字数
      TweetWebEllipsisSize: 400        # Web端推文作为feed显示的最长字数默认400字
      TweetMobileEllipsisSize: 300     # 移动端推文作为feed显示的最长字数默认300字
      DefaultTweetVisibility: friend   # 推文可见性,默认好友可见 值: public/following/friend/private
      DefaultMsgLoopInterval: 5000     # 拉取未读消息的间隔,单位:毫秒, 默认5000ms 
      CopyrightTop: "2023 paopao.info"
      CopyrightLeft: "Roc's Me"
      CopyrightLeftLink: ""
      CopyrightRight: "泡泡(PaoPao)开源社区"
      CopyrightRightLink: "https://www.paopao.info"
    ...
    
  • add read more contents support for post card in tweets list.

Changed

  • optimize jwt token generate logic.

0.4.2

Fixed

  • fixed remove multi-objects no effects and occurs resource leak error when use Minio as OSS(Object Storage System).#371 #372

0.4.1

Changed

  • infinite scrolling instead of pagination for Home/User/Profile page

0.4.0

Added

  • add pprof feature support #327
  • use compiler profile-guided optimization (PGO) to further optimize builds. #327
  • frontend: re-add stars page embed to profile page. #339
  • simple support for user posts filter by style(post/comment/media/star). #345
    migration database first(sql ddl file in scripts/migration/**/*_create_view_post_filter.up.sql):
    CREATE VIEW p_post_by_media AS SELECT post.*FROM (SELECT DISTINCT post_id FROM p_post_content WHERE (TYPE=3 OR TYPE=4 OR TYPE=7 OR TYPE=8) AND is_del=0) media JOIN p_post post ON media.post_id=post.ID WHERE post.is_del=0;
    CREATE VIEW p_post_by_comment AS SELECT P.*,C.user_id comment_user_id FROM (SELECT post_id,user_id FROM p_comment WHERE is_del=0 UNION SELECT post_id,reply.user_id user_id FROM p_comment_reply reply JOIN p_comment COMMENT ON reply.comment_id=COMMENT.ID WHERE reply.is_del=0 AND COMMENT.is_del=0) C JOIN p_post P ON C.post_id=P.ID WHERE P.is_del=0;
    
  • add user highlight tweet support include custom tweet set to highlight and list in user/profile page.
  • add cli subcommand to start paopao-ce serve or other task. #354
  • add Followship feature . #355 migration database first(sql ddl file in scripts/migration/**/*_user_following.up.sql):
    DROP TABLE IF EXISTS p_following; 
    CREATE TABLE p_following (ID BIGSERIAL PRIMARY KEY,user_id BIGINT NOT NULL,follow_id BIGINT NOT NULL,is_del SMALLINT NOT NULL DEFAULT 0,created_on BIGINT NOT NULL DEFAULT 0,modified_on BIGINT NOT NULL DEFAULT 0,deleted_on BIGINT NOT NULL DEFAULT 0); 
    CREATE INDEX idx_following_user_follow ON p_following USING btree (user_id,follow_id);
    

Changed

  • change man content width to 600px and optimize tweet/comment/replay text length. #333
  • optimize embed web ui to paopao execute binary file logic. #354
    # embed web ui to execute file default
    make build 
    # use slim model to disable embed web ui to exectute file
    make build TAGS='slim embed'
    
  • frontend: optimize user profile page route path to domain/#/u/?s=username. [&c857142](c857142565
  • change the Friendship feature and Followship feature as builtin feature. #362
  • deprecated/remove Lightship feature. #362
  • optimize Followship feature allow follow/unfollow user in follow page. &fd5e54b
  • use Meilisearch as default search in docker-compose.yaml.

Fixed

  • fixed JWT valide error whent get user by id failed.&51fd972

0.3.1

Fixed

  • fixed: video player assets cdn error. &caff8c0

0.3.0

Added

  • add custom comment sort strategy support #243
  • add RedisCacheIndex feature #250
  • add Sentry feature #258
  • add simple tweet share feature(just copy tweet link to clipboard now) support #264
  • add default tweet max length configure in web/.env support. &a1160ca
    Set the value of VITE_DEFAULT_TWEET_MAX_LENGTH in file web/.env to change the tweet max default length.
  • add custom whether provide user register configure in web/.env support. #267
    Set the value of VITE_ALLOW_USER_REGISTER in file web/.env to custom whether provide user register feature.
    # file: web/.env or web/.env.local
    ...
    # 局部参数
    VITE_ALLOW_USER_REGISTER=true
    ...
    
    and disallow user register in backend(add Web:DisallowUserRegister feature in config.yaml):
    # file config.yaml
    ...
    Features:
      Default: ["Base", "Postgres", "Zinc", "LocalOSS", "LoggerZinc", "BigCacheIndex", "Friendship", "Service", "Web:DisallowUserRegister"]
    ...
    
  • add topic follow feature support #273
    mirgration database first(sql ddl file in scripts/migration/**/*_topic_follow.up.sql):
      CREATE TABLE `p_topic_user` (
          `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
          `topic_id` BIGINT UNSIGNED NOT NULL COMMENT '标签ID',
          `user_id` BIGINT UNSIGNED NOT NULL COMMENT '创建者ID',
          `alias_name` VARCHAR ( 255 ) COMMENT '别名',
          `remark` VARCHAR ( 512 ) COMMENT '备注',
          `quote_num` BIGINT UNSIGNED COMMENT '引用数',
          `is_top` TINYINT UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否置顶 0 为未置顶、1 为已置顶',
          `created_on` BIGINT UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
          `modified_on` BIGINT UNSIGNED NOT NULL DEFAULT '0' COMMENT '修改时间',
          `deleted_on` BIGINT UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除时间',
          `is_del` TINYINT UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否删除 0 为未删除、1 为已删除',
          `reserve_a` VARCHAR ( 255 ) COMMENT '保留字段a',
          `reserve_b` VARCHAR ( 255 ) COMMENT '保留字段b',
          PRIMARY KEY ( `id` ) USING BTREE,
        UNIQUE KEY `idx_topic_user_uid_tid` ( `topic_id`, `user_id` ) USING BTREE 
      ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户话题';
    
  • add tweet comment thumbs up/down feature support #275
    mirgration database first(sql ddl file in scripts/migration/**/*_comment_thumbs.up.sql):
  • add load more comments feature support &60b217b

Fixed

  • fixed sql ddl p_contact's column is_delete define error (change to is_del) in scripts/paopao-mysql.sql &afd8fe1
  • fixed cache index not expire in delete/add tweet error #266
  • fixed tweet's owner not allow star/collection action when tweet is private error #274
  • fixed user not list owner's collectioned private tweet error #274
  • fixed comments thumbs up/down state incorrect error #283

Fixed

  • fixed sql ddl p_contact's column is_delete define error (change to is_del) in scripts/paopao-mysql.sql &afd8fe1

Changed

  • use github.com/rueian/rueidis as Redis client #249
    the Old redis client configure field
    ...
    Redis:
      Host: redis:6379
      Password: 
      DB: 
    
    the New redis client configure field
    ...
    Redis:
      InitAddress:
      - redis:6379
      Username:
      Password:
      SelectDB:
      ConnWriteTimeout: 60   # 连接写超时时间 多少秒 默认 60秒
    
  • optimize web frontend dark theme &b082a8f
  • change web frontend main content layout default size to 544px &b082a8f
  • optimize web frontend in mobile environment use Drawer to display menu #265
  • optimize Dockerfile use pre-build builder/runner image to prevent network latency problem (bitbus/paopao-ce-backend-builder bitbus/paopao-ce-backend-runner) #265
  • optimize web ui in mobile environment #280
  • optimize upload zip attachment compatible with different browsers for uploading zip mimetype #286
  • adapte meilisearch to version v1.1 #288

Removed

  • remove Deprecated:OldWeb feature #256

0.2.5

Changed

  • fixed sql ddl error for contact table #281

0.2.4

Added

  • add PWA support for web frontend #242

0.2.3

Added

  • add PostgreSQL DDL file #229

Changed

  • optimize MySQL DDL file #229
  • optimize Sqlite3 DDL file #229

0.2.2

Fixed

  • fixed add star to tweet error #222

0.2.1

Changed

  • optimize docker-compose.yaml use bitbus/paopao-ce:latest as release image #217

Fixed

  • fixed sql ddl in scripts/paopao-mysql.sql and scripts/paopao-sqlite3.sql #217

0.2.0

Added

  • add Friendship feature #192
  • add Lightship feature #198
  • add Pyroscope feature #199
  • add new Web service #196
  • add Frontend:Web feature #196
  • add Deprecated:OldWeb feature #196

Changes

  • support run multiple service in single paopao-ce instance #196
  • use go-mir optimize paopao-ce source code architecture #196

Fixed

  • some other features optimize and bug fix

Older change logs can be found on GitHub.