Skip to content

解决冲突#4092

Closed
cloud-oc wants to merge 341 commits into
notionnext-org:mainfrom
cloud-oc:main
Closed

解决冲突#4092
cloud-oc wants to merge 341 commits into
notionnext-org:mainfrom
cloud-oc:main

Conversation

@cloud-oc
Copy link
Copy Markdown
Collaborator

尽量按此模板PR内容,或粘贴相关的ISSUE链接。

已知问题

  1. (示例)版本号管理不规范
    • 版本号直接写在环境变量中,容易出错
    • 多处维护版本号,可能不一致

解决方案

  1. (示例)将版本号管理从 .env.local 迁移到 package.json
    • 统一从 package.json 读取版本号
    • 使用 IIFE 优雅处理版本号获取逻辑
    • 保持向后兼容,支持环境变量覆盖

改动收益

  1. (示例)更规范的版本管理
    • 统一从 package.json 读取
    • 保持与 npm 生态一致
    • 减少人为错误

具体改动

  1. (示例)blog.config.js
    • 移除原有的静态版本号配置
    • 在文件末尾添加动态版本号获取逻辑
    • 保持向后兼容,优先使用环境变量
    • 添加错误处理和默认值

测试确认

  • 本地开发环境测试通过
  • 生产环境构建测试通过
  • (如适用)版本号正确显示
  • (如适用)环境变量配置正常工作

用户文档(docs/user-guide/

若本 PR 修改 docs/user-guide/docs/developer/ 中与站长相关的说明,可勾选「不适用」并跳过本节。

  • 不适用(无文档改动)
  • 已按 维护工作流 自检
  • 路径符合 docs/user-guide/ 目录约定
  • 已更新 user-guide/README.md(新增/移动文章时)
  • 已更新 ARTICLE_INDEX.md(新 slug 或路径变更时)
  • 环境变量名与 conf/*.config.js 一致(若文档涉及配置)
  • 示例中无真实 Token、.env、私有 ID
  • 保留或更新了「原文链接」(若源自 docs.tangly1024.com)

文档说明(可选):对应官方 slug / URL、是否与功能 PR 配套

Rearranged the playlist toggle and prev/next buttons into a vertical stack on the right, reduced their sizes, and updated the playlist dropdown layout for improved UI consistency and compactness.
Introduces auto-play functionality based on MUSIC_PLAYER_AUTO_PLAY config. The player now auto-plays on initial load if enabled, and always auto-plays when switching tracks after initialization.
Introduced useViewportScale hook to dynamically adjust the html font-size and CSS variables based on viewport dimensions for proportional scaling. Integrated the hook into the theme's LayoutBase component and updated CSS to provide fallback scaling when JavaScript is not loaded.
Integrated the VoidPlayer component into the MobileNav, displaying a music player section above social links. Also improved avatar link styling for better alignment.
Changed default values for the post share bar and several right-click menu options to 'false' instead of 'true'. Also increased the post loading timeout from 8 to 9 seconds. These changes adjust feature availability and improve user experience based on updated requirements.
Updated viewport scaling algorithm and CSS to use Endfield design bases (2560x1440 landscape, 1080x1920 portrait) for more consistent proportional scaling. Adjusted MobileNav and SideNav component sizes and spacing for improved visual balance. Updated search layout to use BlogPostCard for search results. Refined Notion content font sizes and line heights for better readability.
Refactored the main content area to use a flex column layout with min-h-screen and flex-grow, enabling a sticky footer effect on the page.
Changed viewport scaling base dimensions to 1920x1080 for landscape and 390x844 for portrait to better match standard HD and iPhone 14 sizes. Adjusted min/max font sizes for improved readability. Updated CSS fallbacks to match new scaling logic. Share bar in post footer is now conditionally rendered based on POST_SHARE_BAR_ENABLE config.
Increased the height of the navigation bar and avatar, updated padding, and replaced the custom hamburger menu with FontAwesome icons. Adjusted related spacers and menu panel positioning to match the new nav bar height.
Introduces an ArticleAdjacent component for previous/next article navigation, controlled by a new VOID_ARTICLE_ADJACENT config flag. Updates viewport scaling and font size bases to 1440px for a Notion-style appearance, adjusts min/max font sizes, and refines responsive layout breakpoints and paddings for improved large-screen support.
Simplifies the FloatingToc component UI and removes expand/collapse logic. Integrates FloatingToc into the SideBar for article pages, and removes its direct usage from LayoutSlug. This improves sidebar consistency and streamlines the table of contents display.
Added overflow-x-hidden and max height constraints to the sidebar and floating TOC components to prevent horizontal scrolling and improve layout consistency. Also added break-words to TOC item text for better word wrapping.
Introduces the MobileToc component for mobile devices, providing a floating button and slide-up panel for navigating article sections. Integrates MobileToc into the main layout, displaying it when a post has a table of contents.
FloatingToc component is redesigned as a right-side floating panel with expand/collapse functionality and improved UI. The TOC is now rendered in the main layout for desktop instead of the sidebar, and related imports/usages in SideBar.js are removed for cleaner separation.
Migrated all FontAwesome icon usage to Tabler Icons across Void theme components for a more modern and consistent look. Updated icon imports, icon rendering logic, and related mappings in navigation, player, pagination, post meta, and other UI elements. Also added @tabler/icons-react as a dependency in package.json.
Introduces a new BackgroundEffects component for animated HUD corners, scan lines, and overlays. Enhances BlogPostCard, LoadingCover, SideNav, and MobileNav with new visual effects, icon improvements, and Endfield-style decorations. Updates style.js with Endfield-inspired textures, corner marks, scan line animations, and button/card enhancements for a more immersive UI.
Eliminates HUD corner decorations, scan line, and system info from LoadingCover, removes sidebar edge glow and diagonal stripe from SideNav, and deletes BackgroundEffects from the main layout. These changes simplify the UI and reduce visual clutter.
Switched icon imports in MobileToc, SideBar, and SideNav components from @tabler/icons-react to remixicon-react for a new visual style. Updated package.json to add remixicon-react as a dependency. Adjusted icon usage throughout the components to use the new icon set.
Renamed and updated all theme components, styles, and config from 'void' to 'endspace'. Added ArticleAdjacent.js and config.js for the new theme. Updated blog.config.js to set 'endspace' as the default theme. Adjusted variable names and CSS classes to match the 'endspace' theme aesthetic.
Refactored MobileNav.js to update icon mappings, improve naming consistency, and adjust avatar and social link labels. Added MobileNav_fix.js as a new file containing the previous implementation for reference or rollback purposes.
Deleted the MobileNav_fix.js file from the components directory as it is no longer needed.
Replaces the placeholder in the password input with 'Enter password...' for improved clarity. Also removes a non-English comment for consistency.
Replaced Remixicon icons with Tabler Icons for navigation and social links in SideNav. Updated icon mappings and adjusted related code for consistency. Also improved some label translations and cleaned up comments.
Updated TitleBar component to use the Unicode bullet (•) instead of invalid span content for separating marquee text. Also removed extraneous comment and trailing blank lines for code clarity.
Replaced Chinese comments and docstrings with English across all Endspace theme components for consistency and maintainability. Improved clarity of inline comments, docblocks, and configuration descriptions. No functional changes were made to the components.
Refactors and expands the Endspace theme CSS variables for both light and dark modes, updates background and accent color schemes, and introduces new utility classes for cards, buttons, spectrum bars, and tech corner decorations. Replaces #theme-void with #theme-endspace, improves responsive styles, and simplifies or removes legacy Endfield-inspired texture and noise overlay systems. Adds new player animation and glow effects, and enhances mobile and desktop responsiveness.
Introduces advanced 3D visual effects, custom tech cursor, and NieR: Automata style shadows to the Endspace theme. Refactors navigation icons to use conceptual Remix icons, updates accent color, and expands theme configuration for greater flexibility, including loading animation texts and visual settings. Improves card, button, and sidebar styles for a more immersive, modern UI.
Replaced several Remix icon imports and updated the IconComponents mapping in both MobileNav.js and SideNav.js to use new icon variants. This change ensures consistency and updates the visual style of navigation icons.
Replaced static AVATAR_URL with dynamic avatarUrl from Notion siteInfo via useGlobal in both MobileNav and SideNav. This ensures avatar consistency with other themes and allows for easier updates from site settings.
cloud-oc and others added 24 commits May 19, 2026 18:36
Copilot AI review requested due to automatic review settings May 24, 2026 03:37
@cloud-oc cloud-oc requested a review from tangly1024 as a code owner May 24, 2026 03:37
@cloud-oc cloud-oc closed this May 24, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR primarily resolves merge conflicts while updating the Endspace theme UI/UX (search highlight, archive/category/tag layout, menu icon rendering, and a shared music player), and adjusts several repository-wide defaults (blog/widget/contact/comment/image configs, assets, dependencies, Docker build inputs).

Changes:

  • Refactors Endspace navigation, archive/search pages, styling, and music player behavior.
  • Introduces Endspace-specific search highlighting + Notion menu icon rendering helpers.
  • Updates multiple global/default configuration files, assets (favicon/svg), and build/dependency metadata.

Reviewed changes

Copilot reviewed 29 out of 32 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
themes/nav/components/LogoBar.js Adjusts logo img src handling when icon is missing.
themes/hexo/config.js Changes Hexo theme default feature toggles.
themes/endspace/style.js Large CSS refactor: removes dark-mode overrides; adds archive/search/menu icon styles.
themes/endspace/index.js Updates Endspace search highlight behavior and expands Archive page with categories/tags sections.
themes/endspace/config.js Disables separate Category/Tag/Search menus in Endspace (merged into Archive) + disables dark widget toggle.
themes/endspace/components/SideNav.js Refactors sidebar menu generation and menu icon rendering; embeds music/contact widget UI changes.
themes/endspace/components/SearchInput.js Adds “compact” mode and search suggestions dropdown based on allNavPages.
themes/endspace/components/searchHighlight.js Adds Endspace-specific mark.js wrapper (idempotent unmark/mark).
themes/endspace/components/NotionMenuIcon.js Adds renderer for Notion icons (emoji / URL) with a dot fallback.
themes/endspace/components/MobileNav.js Mirrors SideNav changes for mobile navigation and icon rendering.
themes/endspace/components/menu.js Adds centralized menu normalization and active-item resolution for Endspace nav.
themes/endspace/components/FloatingControls.js Removes Endspace dark-mode toggle from floating controls.
themes/endspace/components/EndspacePlayer.js Reworks player into a shared singleton audio controller with embedded/collapsed modes.
themes/endspace/components/BlogListArchive.js Tweaks archive list date badge styling.
public/svg/cloud.svg Adds a new SVG asset.
public/favicon.svg Replaces favicon SVG artwork.
pages/search/[keyword]/index.js Removes allPages from search page props payload.
package.json Bumps version and modifies dependencies (including duplicates).
lib/db/notion/getPageProperties.js Adds rawPageIcon to page properties.
Dockerfile Improves dependency-layer caching by copying yarn.lock and patches/ into deps stage.
conf/widget.config.js Changes default widget/music settings and replaces the music list content.
conf/right-click-menu.js Changes right-click menu defaults (mostly disabling).
conf/post.config.js Changes share bar default and adjusts 404 timeout default.
conf/image.config.js Sets a default random-image API URL.
conf/contact.config.js Replaces contact defaults with specific social URLs; removes email config entry.
conf/comment.config.js Sets Twikoo default backend URL.
conf/animation.config.js Adjusts mouse-follow defaults and enables NEST by default.
components/NotionPage.js Adds input validation guard in mapPageUrl.
components/ExternalPlugins.js Disables global music player when Endspace theme is active.
blog.config.js Changes global defaults (theme/author/link/ICP/etc.).
.gitmodules Adds an Endspace submodule entry.
Comments suppressed due to low confidence (1)

package.json:76

  • dependencies contains duplicate keys (@tabler/icons-react appears twice, and @supabase/supabase-js also appears twice later). In JSON, duplicate keys are error-prone (the last one wins) and can confuse tooling; remove the duplicates and keep a single entry per package.
    "@next/bundle-analyzer": "^12.3.7",
    "@supabase/supabase-js": "^2.106.0",
    "@tabler/icons-react": "^3.36.1",
    "@vercel/analytics": "^1.6.1",
    "@vercel/functions": "^3.6.0",

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +17 to 18
<img src={siteInfo?.icon ? siteInfo.icon.replaceAll('width=400', 'width=280') : ''}
height='44px' alt={siteConfig('AUTHOR') + ' - ' + siteConfig('NEXT_PUBLIC_BIO')} className='md:block transition-all hover:scale-110 duration-150' placeholderSrc='' />
Comment thread package.json
Comment on lines 93 to 99
"react-notion-x": "7.10.0",
"react-share": "^5.2.2",
"react-tweet-embed": "~2.0.0",
"remixicon-react": "^1.0.0"
"remixicon-react": "^1.0.0",
"@supabase/supabase-js": "^2.57.4"
},
"devDependencies": {
Comment thread conf/widget.config.js
Comment on lines 27 to 32
// 音乐播放插件
MUSIC_PLAYER: process.env.NEXT_PUBLIC_MUSIC_PLAYER || false, // 是否使用音乐播放插件
MUSIC_PLAYER_VISIBLE: process.env.NEXT_PUBLIC_MUSIC_PLAYER_VISIBLE || true, // 是否在左下角显示播放和切换,如果使用播放器,打开自动播放再隐藏,就会以类似背景音乐的方式播放,无法取消和暂停
MUSIC_PLAYER: process.env.NEXT_PUBLIC_MUSIC_PLAYER || true, // 是否使用音乐播放插件
MUSIC_PLAYER_VISIBLE: process.env.NEXT_PUBLIC_MUSIC_PLAYER_VISIBLE || false, // 是否在左下角显示播放和切换,如果使用播放器,打开自动播放再隐藏,就会以类似背景音乐的方式播放,无法取消和暂停
MUSIC_PLAYER_AUTO_PLAY:
process.env.NEXT_PUBLIC_MUSIC_PLAYER_AUTO_PLAY || true, // 是否自动播放,不过自动播放时常不生效(移动设备不支持自动播放)
MUSIC_PLAYER_LRC_TYPE: process.env.NEXT_PUBLIC_MUSIC_PLAYER_LRC_TYPE || '0', // 歌词显示类型,可选值: 3 | 1 | 0(0:禁用 lrc 歌词,1:lrc 格式的字符串,3:lrc 文件 url)(前提是有配置歌词路径,对 meting 无效)
Comment thread conf/widget.config.js
Comment on lines +40 to 44
name: 'Touch of the Law',
artist: '塞壬唱片-MSR / Alec Justice / Echos',
url: 'http://music.163.com/song/media/outer/url?id=2700386309.mp3',
cover: 'http://p1.music.126.net/ggCZGLbtzSBr2SL2QS1opw==/109951170928386693.jpg'
},
Comment thread conf/widget.config.js
Comment on lines 45 to +50
{
name: '王都グランセル',
artist: 'Falcom Sound Team jdk',
url: 'https://music.163.com/song/media/outer/url?id=731355.mp3',
cover:
'https://p1.music.126.net/kn6ugISTonvqJh3LHLaPtQ==/599233837187278.jpg'
名称 : 'Halo Universalization',
artist: '塞壬唱片-MSR / Erik Castro / Robert Wolf',
url: 'http://music.163.com/song/media/outer/url?id=2700384134.mp3',
cover: 'http://p1.music.126.net/ggCZGLbtzSBr2SL2QS1opw==/109951170928386693.jpg'
},
Comment thread conf/contact.config.js
Comment on lines +6 to 13
CONTACT_WEIBO: process.env.NEXT_PUBLIC_CONTACT_WEIBO || 'https://weibo.com/cloud09', // 你的微博个人主页
CONTACT_TWITTER: process.env.NEXT_PUBLIC_CONTACT_TWITTER || 'https://x.com/Cloud09Official', // 你的twitter个人主页
CONTACT_GITHUB: process.env.NEXT_PUBLIC_CONTACT_GITHUB || 'https://github.com/cloud-oc', // 你的github个人主页 例如 https://github.com/tangly1024
CONTACT_TELEGRAM: process.env.NEXT_PUBLIC_CONTACT_TELEGRAM || 'https://t.me/cloud_oc', // 你的telegram 地址 例如 https://t.me/tangly_1024
CONTACT_LINKEDIN: process.env.NEXT_PUBLIC_CONTACT_LINKEDIN || '', // 你的linkedIn 首页
CONTACT_INSTAGRAM: process.env.NEXT_PUBLIC_CONTACT_INSTAGRAM || '', // 您的instagram地址
CONTACT_BILIBILI: process.env.NEXT_PUBLIC_CONTACT_BILIBILI || '', // B站主页
CONTACT_BILIBILI: process.env.NEXT_PUBLIC_CONTACT_BILIBILI || 'https://space.bilibili.com/350267607', // B站主页
CONTACT_YOUTUBE: process.env.NEXT_PUBLIC_CONTACT_YOUTUBE || '', // Youtube主页
Comment thread conf/comment.config.js

// twikoo
COMMENT_TWIKOO_ENV_ID: process.env.NEXT_PUBLIC_COMMENT_ENV_ID || '', // TWIKOO后端地址 腾讯云环境填envId;Vercel环境填域名,教程:https://tangly1024.com/article/notionnext-twikoo
COMMENT_TWIKOO_ENV_ID: process.env.NEXT_PUBLIC_COMMENT_ENV_ID || 'https://comment.cloud09.space', // TWIKOO后端地址 腾讯云环境填envId;Vercel环境填域名,教程:https://tangly1024.com/article/notionnext-twikoo
Comment thread conf/image.config.js
Comment on lines 11 to 13
IMAGE_COMPRESS_QUALITY: process.env.NEXT_PUBLIC_IMAGE_COMPRESS_QUALITY || 80, // 图片压缩质量 0-100,数值越小文件越小但质量越低
RANDOM_IMAGE_URL: process.env.NEXT_PUBLIC_RANDOM_IMAGE_URL || '', // 随机图片API,如果未配置下面的关键字,主页封面,头像,文章封面图都会被替换为随机图片
RANDOM_IMAGE_URL: process.env.NEXT_PUBLIC_RANDOM_IMAGE_URL || 'https://moe.jitsu.top/img/?sort=pc', // 随机图片API,如果未配置下面的关键字,主页封面,头像,文章封面图都会被替换为随机图片
RANDOM_IMAGE_REPLACE_TEXT:
Comment thread blog.config.js
Comment on lines 8 to 25
'02ab3b8678004aa69e9e415905ef32a5,en:7c1d570661754c8fbc568e00a01fd70e',
THEME: process.env.NEXT_PUBLIC_THEME || 'simple', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 claude,endspace,example,fukasawa,fuwari,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple
THEME: process.env.NEXT_PUBLIC_THEME || 'endspace', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple
LANG: process.env.NEXT_PUBLIC_LANG || 'zh-CN', // e.g 'zh-CN','en-US' see /lib/lang.js for more.
SINCE: process.env.NEXT_PUBLIC_SINCE || 2021, // e.g if leave this empty, current year will be used.
SINCE: process.env.NEXT_PUBLIC_SINCE || 2024, // e.g if leave this empty, current year will be used.

PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章URL都以 .html 结尾。
NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 60, // 更新缓存间隔 单位(秒);即每个页面有60秒的纯静态期、此期间无论多少次访问都不会抓取notion数据;调大该值有助于节省Vercel资源、同时提升访问速率,但也会使文章更新有延迟。
APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式 , dark夜间模式, auto根据时间和主题自动夜间模式
APPEARANCE_DARK_TIME: process.env.NEXT_PUBLIC_APPEARANCE_DARK_TIME || [18, 6], // 夜间模式起至时间,false时关闭根据时间自动切换夜间模式

AUTHOR: process.env.NEXT_PUBLIC_AUTHOR || 'NotionNext', // 您的昵称 例如 tangly1024
BIO: process.env.NEXT_PUBLIC_BIO || '一个普通的干饭人🍚', // 作者简介
LINK: process.env.NEXT_PUBLIC_LINK || 'https://tangly1024.com', // 网站地址
AUTHOR: process.env.NEXT_PUBLIC_AUTHOR || 'Cloud09', // 您的昵称 例如 tangly1024
BIO: process.env.NEXT_PUBLIC_BIO || '', // 作者简介
LINK: process.env.NEXT_PUBLIC_LINK || 'https://cloud09.space', // 网站地址
KEYWORDS: process.env.NEXT_PUBLIC_KEYWORD || 'Notion, 博客', // 网站关键词 英文逗号隔开
BLOG_FAVICON: process.env.NEXT_PUBLIC_FAVICON || '/favicon.ico', // blog favicon 配置, 默认使用 /public/favicon.ico,支持在线图片,如 https://img.imesong.com/favicon.png
BEI_AN: process.env.NEXT_PUBLIC_BEI_AN || '', // 备案号 闽ICP备XXXXXX
BEI_AN_LINK: process.env.NEXT_PUBLIC_BEI_AN_LINK || 'https://beian.miit.gov.cn/', // 备案查询链接,如果用了萌备等备案请在这里填写
BEI_AN: process.env.NEXT_PUBLIC_BEI_AN || '萌ICP备20250928号', // 备案号 闽ICP备XXXXXX
BEI_AN_LINK: process.env.NEXT_PUBLIC_BEI_AN_LINK || 'https://icp.gov.moe/?keyword=20250928', // 备案查询链接,如果用了萌备等备案请在这里填写
BEI_AN_GONGAN: process.env.NEXT_PUBLIC_BEI_AN_GONGAN || '', // 公安备案号,例如 '浙公网安备3xxxxxxxx8号'
Comment thread .gitmodules
Comment on lines +1 to +4
[submodule "themes/endspace"]
path = themes/endspace
url = https://github.com/cloud-oc/endspace.git
branch = theme No newline at end of file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants