Просмотр исходного кода

Merge pull request #9936 from weseek/master

Release v7.2.4
mergify[bot] 10 месяцев назад
Родитель
Сommit
342b738d76

+ 3 - 0
.devcontainer/app/postCreateCommand.sh

@@ -11,6 +11,9 @@ mkdir -p /tmp/page-bulk-export
 sudo chown -R vscode:vscode /tmp/page-bulk-export
 sudo chown -R vscode:vscode /tmp/page-bulk-export
 sudo chmod 700 /tmp/page-bulk-export
 sudo chmod 700 /tmp/page-bulk-export
 
 
+# Install uv
+curl -LsSf https://astral.sh/uv/install.sh | sh
+
 # Setup pnpm
 # Setup pnpm
 SHELL=bash pnpm setup
 SHELL=bash pnpm setup
 eval "$(cat /home/vscode/.bashrc)"
 eval "$(cat /home/vscode/.bashrc)"

+ 9 - 0
.roo/mcp.json

@@ -0,0 +1,9 @@
+{
+  "mcpServers": {
+    "fetch": {
+      "command": "uvx",
+      "args": ["mcp-server-fetch"],
+      "alwaysAllow": ["fetch"]
+    }
+  }
+}

+ 0 - 1
CHANGELOG.md

@@ -30,7 +30,6 @@
 * fix: User picture tooltip (2) (#9898) @yuki-takei
 * fix: User picture tooltip (2) (#9898) @yuki-takei
 * fix: ConfigLoader.loadFromDB for JSON parsing error handling (#9890) @yuki-takei
 * fix: ConfigLoader.loadFromDB for JSON parsing error handling (#9890) @yuki-takei
 * fix: Profile image upload functionality and accepted file types (#9886) @yuki-takei
 * fix: Profile image upload functionality and accepted file types (#9886) @yuki-takei
-* fix: User picture tooltip (2) (#9898) @yuki-takei
 * fix: Tooltip for UserPicture doesn't work (#9884) @yuki-takei
 * fix: Tooltip for UserPicture doesn't work (#9884) @yuki-takei
 
 
 ### 🧰 Maintenance
 ### 🧰 Maintenance

+ 1 - 1
apps/app/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "@growi/app",
   "name": "@growi/app",
-  "version": "7.2.3",
+  "version": "7.2.4-RC.0",
   "license": "MIT",
   "license": "MIT",
   "private": "true",
   "private": "true",
   "scripts": {
   "scripts": {

+ 5 - 1
apps/app/playwright/20-basic-features/use-tools.spec.ts

@@ -34,9 +34,13 @@ const openPutBackPageModal = async(page: Page): Promise<void> => {
 
 
   // Scroll to the top of the page to prevent the subnav hide the button
   // Scroll to the top of the page to prevent the subnav hide the button
   await page.evaluate(() => {
   await page.evaluate(() => {
-    window.scrollTo(0, 0);
+    document.documentElement.scrollTop = 0;
+    document.body.scrollTop = 0; // For Safari and older browsers
   });
   });
 
 
+  // Add a small delay to ensure scrolling is complete and the button is interactive
+  await page.waitForTimeout(200); // Increased delay
+
   await button.click();
   await button.click();
   await expect(page.getByTestId('put-back-page-modal')).toBeVisible();
   await expect(page.getByTestId('put-back-page-modal')).toBeVisible();
 };
 };

+ 1 - 1
apps/app/src/client/components/Admin/Customize/CustomizeLogoSetting.tsx

@@ -125,7 +125,7 @@ const CustomizeLogoSetting = (): JSX.Element => {
                     {isCustomizedLogoUploaded && (
                     {isCustomizedLogoUploaded && (
                       <>
                       <>
                         <p>
                         <p>
-                          <img src={CUSTOMIZED_LOGO} className="picture picture-lg " id="settingBrandLogo" width="64" />
+                          <img src={CUSTOMIZED_LOGO} id="settingBrandLogo" width="64" />
                         </p>
                         </p>
                         <button type="button" className="btn btn-danger" onClick={onClickDeleteBtn}>
                         <button type="button" className="btn btn-danger" onClick={onClickDeleteBtn}>
                           { t('admin:customize_settings.delete_logo') }
                           { t('admin:customize_settings.delete_logo') }

+ 4 - 3
apps/app/src/client/components/Me/ProfileImageSettings.tsx

@@ -11,7 +11,6 @@ import { toastSuccess, toastError } from '~/client/util/toastr';
 import { useCurrentUser } from '~/stores-universal/context';
 import { useCurrentUser } from '~/stores-universal/context';
 import { generateGravatarSrc, GRAVATAR_DEFAULT } from '~/utils/gravatar';
 import { generateGravatarSrc, GRAVATAR_DEFAULT } from '~/utils/gravatar';
 
 
-
 const DEFAULT_IMAGE = '/images/icons/user.svg';
 const DEFAULT_IMAGE = '/images/icons/user.svg';
 
 
 
 
@@ -113,7 +112,7 @@ const ProfileImageSettings = (): JSX.Element => {
               </a>
               </a>
             </div>
             </div>
           </h5>
           </h5>
-          <img src={generateGravatarSrc(currentUser.email)} className="rounded-pill" width="64" data-vrt-blackout-profile />
+          <img src={generateGravatarSrc(currentUser.email)} className="rounded-pill" width="64" height="64" data-vrt-blackout-profile />
         </div>
         </div>
 
 
         <div className="col-md-7 mt-5 mt-md-0">
         <div className="col-md-7 mt-5 mt-md-0">
@@ -138,7 +137,9 @@ const ProfileImageSettings = (): JSX.Element => {
               { t('Current Image') }
               { t('Current Image') }
             </label>
             </label>
             <div className="col-md-6 col-lg-8">
             <div className="col-md-6 col-lg-8">
-              <p className="mb-0"><img src={uploadedPictureSrc ?? DEFAULT_IMAGE} className="picture picture-lg rounded-circle" id="settingUserPicture" /></p>
+              <p className="mb-0">
+                <img src={uploadedPictureSrc ?? DEFAULT_IMAGE} width="64" height="64" className="rounded-circle" id="settingUserPicture" />
+              </p>
               {uploadedPictureSrc && <button type="button" className="btn btn-danger mt-2" onClick={deleteImageHandler}>{ t('Delete Image') }</button>}
               {uploadedPictureSrc && <button type="button" className="btn btn-danger mt-2" onClick={deleteImageHandler}>{ t('Delete Image') }</button>}
             </div>
             </div>
           </div>
           </div>

+ 1 - 1
apps/app/src/client/components/Sidebar/SidebarBrandLogo.tsx

@@ -12,7 +12,7 @@ export const SidebarBrandLogo = memo((props: SidebarBrandLogoProps) => {
   return isDefaultLogo
   return isDefaultLogo
     ? <GrowiLogo />
     ? <GrowiLogo />
     // eslint-disable-next-line @next/next/no-img-element
     // eslint-disable-next-line @next/next/no-img-element
-    : (<div><img src="/attachment/brand-logo" alt="custom logo" className="picture picture-lg p-2" id="settingBrandLogo" /></div>);
+    : (<div><img src="/attachment/brand-logo" alt="custom logo" width="48" className="p-1" id="settingBrandLogo" /></div>);
 });
 });
 
 
 SidebarBrandLogo.displayName = 'SidebarBrandLogo';
 SidebarBrandLogo.displayName = 'SidebarBrandLogo';

+ 1 - 1
apps/slackbot-proxy/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "@growi/slackbot-proxy",
   "name": "@growi/slackbot-proxy",
-  "version": "7.2.3-slackbot-proxy.0",
+  "version": "7.2.4-slackbot-proxy.0",
   "license": "MIT",
   "license": "MIT",
   "private": "true",
   "private": "true",
   "scripts": {
   "scripts": {

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "growi",
   "name": "growi",
-  "version": "7.2.3",
+  "version": "7.2.4-RC.0",
   "description": "Team collaboration software using markdown",
   "description": "Team collaboration software using markdown",
   "license": "MIT",
   "license": "MIT",
   "private": "true",
   "private": "true",