解决冲突#4092
Closed
cloud-oc wants to merge 341 commits into
Closed
Conversation
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.
There was a problem hiding this comment.
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
dependenciescontains duplicate keys (@tabler/icons-reactappears twice, and@supabase/supabase-jsalso 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 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 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 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 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 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主页 |
|
|
||
| // 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 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 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 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
已知问题
解决方案
.env.local迁移到package.jsonpackage.json读取版本号改动收益
package.json读取具体改动
blog.config.js测试确认
用户文档(
docs/user-guide/)若本 PR 未 修改
docs/user-guide/、docs/developer/中与站长相关的说明,可勾选「不适用」并跳过本节。docs/user-guide/目录约定conf/*.config.js一致(若文档涉及配置).env、私有 ID文档说明(可选):对应官方 slug / URL、是否与功能 PR 配套