Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
bd81186
Create HelpDropdown
satof3 Nov 7, 2025
fabb2a9
Add shortcut menu
satof3 Nov 7, 2025
63df54c
Merge branch 'dev/7.4.x' into imprv/173835-new-help-button
satof3 Nov 28, 2025
a1a4f3a
Apply jotai
satof3 Nov 28, 2025
5717647
Delete SystemVersion layout
satof3 Nov 28, 2025
0da23a5
Adjust style
satof3 Nov 28, 2025
55bc9e6
Remove growi.org link
satof3 Nov 28, 2025
07d739e
Translation
satof3 Nov 28, 2025
d4a3583
Apply FB
satof3 Dec 2, 2025
f537346
Merge branch 'dev/7.4.x' into imprv/173835-new-help-button
satof3 Dec 2, 2025
6eeb472
Merge branch 'dev/7.4.x' into imprv/173835-new-help-button
satof3 Dec 4, 2025
74b7126
Merge branch 'dev/7.4.x' into imprv/173835-new-help-button
satof3 Dec 15, 2025
96d0d9b
Merge branch 'dev/7.4.x' into imprv/173835-new-help-button
satof3 Dec 16, 2025
9582251
configure biome for PageEditor Hotkeys Navbar PageHeader
arafubeatbox Dec 21, 2025
3d23bfb
fix non-autofixable biome errors
arafubeatbox Dec 21, 2025
445c80d
configure biome for Common/PageControls/PageComment/PageAccessoriesMo…
arafubeatbox Dec 21, 2025
896f1d2
fix non-auto fixable biome errors)
arafubeatbox Dec 21, 2025
153a288
configure biome for client components (Me, Bookmarks, InAppNotificati…
arafubeatbox Dec 21, 2025
2e1fd77
configure biome for page-related client components
arafubeatbox Dec 21, 2025
e632f24
fix non-auto fixable biome errors
arafubeatbox Dec 21, 2025
3be1354
fix non-auto fixable biome errors)
arafubeatbox Dec 21, 2025
3829236
configure biome for client component dirs
arafubeatbox Dec 21, 2025
82511b2
configure biome for Admin App/SlackIntegration/Users/UserGroup/UserGr…
arafubeatbox Dec 21, 2025
08b010a
fix non-auto fixable biome errors
arafubeatbox Dec 21, 2025
f24b520
fix non-auto fixable biome errors
arafubeatbox Dec 21, 2025
e844ae5
ignore biome error instead of unnatural fix
arafubeatbox Dec 22, 2025
bfbc225
fix wrong biome error fixes (unnecessary label, wrong div)
arafubeatbox Dec 22, 2025
3daae17
fix type
arafubeatbox Dec 22, 2025
e1a8b35
fix type error
arafubeatbox Dec 23, 2025
79f1431
Merge branch 'dev/7.4.x' into support/156162-176213/app-some-client-c…
arafubeatbox Dec 25, 2025
b9a6936
Merge branch 'dev/7.4.x' into support/156162-176211/app-some-client-c…
arafubeatbox Dec 25, 2025
5ca01a9
Merge branch 'dev/7.4.x' into support/156162-176216-app-some-client-c…
arafubeatbox Dec 26, 2025
84c186b
remove unnecessary comma
arafubeatbox Dec 26, 2025
7373240
Merge branch 'dev/7.4.x' into support/156162-176216-app-some-client-c…
arafubeatbox Dec 26, 2025
2e3a0b0
ci(deps): bump next from 14.2.33 to 14.2.35
dependabot[bot] Dec 26, 2025
2953339
Merge pull request #10597 from growilabs/dependabot/npm_and_yarn/next…
mergify[bot] Dec 26, 2025
cc697db
Bump version
Dec 26, 2025
b757f55
Merge pull request #10664 from growilabs/support/prepare-v7.4.2-RC.0
mergify[bot] Dec 26, 2025
116b1b3
improve spacing
yuki-takei Dec 26, 2025
4a4c838
use useId()
yuki-takei Dec 26, 2025
a56a876
Merge pull request #10631 from growilabs/support/156162-176211/app-so…
yuki-takei Dec 26, 2025
1af12c1
Merge branch 'master' into support/156162-176216-app-some-client-comp…
arafubeatbox Dec 26, 2025
599fd3b
resolve conflict
arafubeatbox Dec 26, 2025
76dae9b
Merge branch 'master' into support/156162-176214-app-some-client-comp…
arafubeatbox Dec 26, 2025
6689e71
display PagePath elements depending on the sticky status
yuki-takei Dec 26, 2025
5fcfbb8
fix margin
yuki-takei Dec 26, 2025
86ef087
Merge branch 'master' into support/156162-176213/app-some-client-comp…
arafubeatbox Dec 26, 2025
e7146f4
fix type error
arafubeatbox Dec 26, 2025
ddc1bf5
fix layering for PageControls and PagePathNav
yuki-takei Dec 26, 2025
b006ff3
render GroundGlassBar without Sticky
yuki-takei Dec 26, 2025
03a584e
hide GroundGlassBar when editing
yuki-takei Dec 26, 2025
bef581e
update docs
yuki-takei Dec 26, 2025
8e84035
Merge remote-tracking branch 'origin/master' into imprv/page-path-nav…
yuki-takei Dec 26, 2025
e6a3df6
fix lint error
yuki-takei Dec 26, 2025
91d5268
Merge pull request #10665 from growilabs/imprv/page-path-nav-title-sp…
mergify[bot] Dec 26, 2025
2b5972e
Merge pull request #10632 from growilabs/support/156162-176213/app-so…
yuki-takei Dec 26, 2025
5b6ac9a
Merge branch 'master' into support/156162-176216-app-some-client-comp…
yuki-takei Dec 26, 2025
3d3d3d8
Merge pull request #10635 from growilabs/support/156162-176216-app-so…
yuki-takei Dec 26, 2025
95560e0
Merge branch 'master' into support/156162-176214-app-some-client-comp…
arafubeatbox Dec 28, 2025
359737c
fix edit button next to header
arafubeatbox Dec 28, 2025
b2feb05
fix wrong conflict resolve
arafubeatbox Dec 28, 2025
86d3477
fix type error
arafubeatbox Dec 28, 2025
6b93060
fix delete button design
arafubeatbox Dec 28, 2025
8b62f34
Merge branch 'master' into support/156162-176215-app-some-client-comp…
arafubeatbox Dec 28, 2025
0fba5ba
Merge branch 'master' into support/156162-176217-app-some-client-comp…
arafubeatbox Dec 28, 2025
b25faf9
fix wrong conflict resolve
arafubeatbox Dec 28, 2025
60e78fd
fix non-autofixable biome error
arafubeatbox Dec 28, 2025
13e8aaa
fix button style
arafubeatbox Dec 28, 2025
f82bb9a
remove unnecessary aria-label
arafubeatbox Dec 28, 2025
b4946f2
configure biome for Admin security/compliance dirs
arafubeatbox Dec 28, 2025
b6ddc52
fix non-auto fixable biome errors
arafubeatbox Dec 29, 2025
03c6c23
configure biome for admin import/export and misc admin pages
arafubeatbox Dec 29, 2025
f453794
fix non-auto fixable biome errors
arafubeatbox Dec 29, 2025
7bee493
fix type error
arafubeatbox Dec 29, 2025
d445eb9
remove already handled dirs
arafubeatbox Dec 29, 2025
c88006a
fix translation and button css
arafubeatbox Dec 29, 2025
e542ce0
fix translation display
arafubeatbox Dec 30, 2025
c7bfdf9
ci(deps): bump qs from 6.13.0 to 6.14.1
dependabot[bot] Jan 1, 2026
d9c578a
Merge pull request #10669 from growilabs/dependabot/npm_and_yarn/qs-6…
mergify[bot] Jan 1, 2026
7926858
fix: prevent unwanted scrolling when creating a new page in the page …
miya Jan 5, 2026
9ebfe8e
Merge pull request #10671 from growilabs/fix/176554-scroll-jumps-back…
yuki-takei Jan 5, 2026
6afef46
Merge pull request #10633 from growilabs/support/156162-176214-app-so…
yuki-takei Jan 5, 2026
5b3e230
Merge branch 'master' into support/156162-176215-app-some-client-comp…
yuki-takei Jan 5, 2026
7874ad9
Merge pull request #10634 from growilabs/support/156162-176215-app-so…
yuki-takei Jan 5, 2026
c3f5340
Merge branch 'master' into support/156162-176217-app-some-client-comp…
yuki-takei Jan 5, 2026
f39ff2d
ci(mergify): upgrade configuration to current format
mergify[bot] Jan 5, 2026
b132f7c
Merge branch 'master' into imprv/173835-new-help-button
yuki-takei Jan 5, 2026
bbaf273
refactor: use userAgent for OS detection in ShortcutsModal and HelpDr…
yuki-takei Jan 5, 2026
a7e4e27
format with biome
yuki-takei Jan 5, 2026
0859cb9
Merge pull request #10636 from growilabs/support/156162-176217-app-so…
yuki-takei Jan 5, 2026
9559ade
Merge remote-tracking branch 'origin/master' into support/156162-1762…
yuki-takei Jan 5, 2026
977b261
Merge pull request #10553 from growilabs/imprv/173835-new-help-button
yuki-takei Jan 5, 2026
69ea2d9
Merge pull request #10667 from growilabs/support/156162-176218-app-so…
yuki-takei Jan 5, 2026
115a65f
Merge branch 'master' into support/156162-164870-app-some-client-comp…
yuki-takei Jan 5, 2026
be8e819
Merge pull request #10668 from growilabs/support/156162-164870-app-so…
yuki-takei Jan 5, 2026
5026f65
Add implementation plan for Google Workspace OAuth 2.0 email sending …
yuki-takei Jan 5, 2026
e5c5e39
Merge pull request #10673 from growilabs/mergify/configuration-deprec…
yuki-takei Jan 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .github/mergify.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
queue_rules:
- name: default
allow_inplace_checks: false
queue_conditions:
- check-success ~= ci-app-lint
- check-success ~= ci-app-test
Expand Down
37 changes: 37 additions & 0 deletions .serena/memories/apps-app-google-workspace-oauth2-mail.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Google Workspace OAuth 2.0 メール送信機能実装計画

## 概要

Google Workspace (Gmail) の OAuth 2.0 (XOAUTH2) 認証を使ったメール送信機能を実装する。2025年5月1日以降、Gmail SMTP ではユーザー名とパスワード認証がサポートされなくなったため、OAuth 2.0 への移行が必要。

## 背景

- **問題**: Gmail SMTP でのユーザー名・パスワード認証が2025年5月1日にサポート終了
- **解決策**: OAuth 2.0 (XOAUTH2) 認証方式の実装
- **参考**: https://support.google.com/a/answer/2956491?hl=ja
- **ライブラリ**: nodemailer v6.9.15 は OAuth 2.0 をサポート済み(バージョンアップ不要)

## 技術仕様

### 必須設定パラメータ

| パラメータ | 説明 | セキュリティ |
|-----------|------|------------|
| `mail:oauth2ClientId` | Google Cloud Console で取得する OAuth 2.0 クライアント ID | 通常 |
| `mail:oauth2ClientSecret` | OAuth 2.0 クライアントシークレット | `isSecret: true` |
| `mail:oauth2RefreshToken` | OAuth 2.0 リフレッシュトークン | `isSecret: true` |
| `mail:oauth2User` | 送信者のGmailアドレス | 通常 |

### nodemailer 設定例

```typescript
const transportOptions = {
service: 'gmail',
auth: {
type: 'OAuth2',
user: '[email protected]',
clientId: 'CLIENT_ID',
clientSecret: 'CLIENT_SECRET',
refreshToken: 'REFRESH_TOKEN',
},
};
105 changes: 105 additions & 0 deletions .serena/memories/apps-app-page-path-nav-and-sub-navigation-layering.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# PagePathNav と SubNavigation の z-index レイヤリング

## 概要

PagePathNav(ページパス表示)と GrowiContextualSubNavigation(PageControls等を含むサブナビゲーション)の
Sticky 状態における z-index の重なり順を修正した際の知見。

## 修正したバグ

### 症状
スクロールしていって PagePathNav がウィンドウ上端に近づいたときに、PageControls のボタンが
PagePathNav の要素の裏側に回ってしまい、クリックできなくなる。

### 原因
z-index 的に以下のように重なっていたため:

**[Before]** 下層から順に:
1. PageView の children - z-0
2. ( GroundGlassBar = PageControls ) ← 同じ層 z-1
3. PagePathNav

PageControls が PagePathNav より下層にいたため、sticky 境界付近でクリック不能になっていた。

## 修正後の構成

**[After]** 下層から順に:
1. PageView の children - z-0
2. GroundGlassBar(磨りガラス背景)- z-1
3. PagePathNav - z-2(通常時)/ z-3(sticky時)
4. PageControls(nav要素)- z-3

### ファイル構成

- `GrowiContextualSubNavigation.tsx` - GroundGlassBar を分離してレンダリング
- 1つ目: GroundGlassBar のみ(`position-fixed`, `z-1`)
- 2つ目: nav 要素(`z-3`)
- `PagePathNavSticky.tsx` - z-index を動的に切り替え
- 通常時: `z-2`
- sticky時: `z-3`

## 実装のポイント

### GroundGlassBar を分離した理由
GroundGlassBar を `position-fixed` で常に固定表示にすることで、
PageControls と切り離して独立した z-index 層として扱えるようにした。

これにより、GroundGlassBar → PagePathNav → PageControls という
理想的なレイヤー構造を実現できた。

## CopyDropdown が z-2 で動作しない理由(解決済み)

### 問題

`PagePathNavSticky.tsx` の sticky 時の z-index について:

```tsx
// これだと CopyDropdown(マウスオーバーで表示されるドロップダウン)が出ない
innerActiveClass="active z-2 mt-1"

// これだと正常に動作する
innerActiveClass="active z-3 mt-1"
```

### 原因

1. `GrowiContextualSubNavigation` の sticky-inner-wrapper は `z-3` かつ横幅いっぱい(Flex アイテム)
2. この要素が PagePathNavSticky(`z-2`)の上に重なる
3. CopyDropdown は `.grw-page-path-nav-layout:hover` で `visibility: visible` になる仕組み
(参照: `PagePathNavLayout.module.scss`)
4. **z-3 の要素が上に被さっているため、hover イベントが PagePathNavSticky に届かない**
5. 結果、CopyDropdown のアイコンが表示されない

### なぜ z-3 で動作するか

- 同じ z-index: 3 になるため、DOM 順序で前後が決まる
- PagePathNavSticky は GrowiContextualSubNavigation より後にレンダリングされるため前面に来る
- hover イベントが正常に届き、CopyDropdown が表示される

### 結論

PagePathNavSticky の sticky 時の z-index は `z-3` である必要がある。
これは GrowiContextualSubNavigation と同じ層に置くことで、DOM 順序による前後関係を利用するため。

## 関連ファイル

- `apps/app/src/client/components/PageView/PageView.tsx`
- `apps/app/src/client/components/Navbar/GrowiContextualSubNavigation.tsx`
- `apps/app/src/client/components/Navbar/GrowiContextualSubNavigation.module.scss`
- `apps/app/src/client/components/PagePathNavSticky/PagePathNavSticky.tsx`
- `apps/app/src/client/components/PagePathNavSticky/PagePathNavSticky.module.scss`
- `apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx`(CopyDropdown を含む)

## ライブラリの注意事項

### react-stickynode の deprecation
`react-stickynode` は **2025-12-31 で deprecated** となる予定。
https://github.com/yahoo/react-stickynode

将来的には CSS `position: sticky` + `IntersectionObserver` への移行を検討する必要がある。

## 注意事項

- z-index の値を変更する際は、上記のレイヤー構造を壊さないよう注意
- Sticky コンポーネントの `innerActiveClass` で z-index を指定する際、
他のコンポーネントとの相互作用を確認すること
63 changes: 63 additions & 0 deletions apps/app/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,73 @@ module.exports = {
'src/interfaces/**',
'src/utils/**',
'src/components/**',
'src/client/components/DescendantsPageListModal/**',
'src/client/components/ItemsTree/**',
'src/client/components/LoginForm/**',
'src/client/components/Page/**',
'src/client/components/PageAttachment/**',
'src/client/components/PageDeleteModal/**',
'src/client/components/PageDuplicateModal/**',
'src/client/components/PageList/**',
'src/client/components/PageManagement/**',
'src/client/components/PagePathNavSticky/**',
'src/client/components/PagePresentationModal/**',
'src/client/components/PageRenameModal/**',
'src/client/components/PageSelectModal/**',
'src/client/components/PageSideContents/**',
'src/client/components/*.tsx',
'src/client/components/*.jsx',
'src/client/components/*.ts',
'src/client/components/*.js',
'src/client/components/Admin/*.ts',
'src/client/components/Admin/*.tsx',
'src/client/components/Admin/*.scss',
'src/client/components/Admin/AdminHome/**',
'src/client/components/Admin/Common/**',
'src/client/components/Admin/ElasticsearchManagement/**',
'src/client/components/Admin/ExportArchiveData/**',
'src/client/components/Admin/ImportData/**',
'src/client/components/Admin/LegacySlackIntegration/**',
'src/client/components/Admin/MarkdownSetting/**',
'src/client/components/Admin/App/**',
'src/client/components/Admin/AuditLog/**',
'src/client/components/Admin/Customize/**',
'src/client/components/Admin/Notification/**',
'src/client/components/Admin/Security/**',
'src/client/components/Admin/SlackIntegration/**',
'src/client/components/Admin/Users/**',
'src/client/components/Admin/UserGroup/**',
'src/client/components/Admin/UserGroupDetail/**',
'src/client/components/Me/**',
'src/client/components/Bookmarks/**',
'src/client/components/InAppNotification/**',
'src/client/components/PageTags/**',
'src/client/components/ReactMarkdownComponents/**',
'src/client/components/AuthorInfo/**',
'src/client/components/Common/**',
'src/client/components/CreateTemplateModal/**',
'src/client/components/CustomNavigation/**',
'src/client/components/DeleteBookmarkFolderModal/**',
'src/client/components/EmptyTrashModal/**',
'src/client/components/GrantedGroupsInheritanceSelectModal/**',
'src/client/components/Icons/**',
'src/client/components/Maintenance/**',
'src/client/components/PageControls/**',
'src/client/components/PageComment/**',
'src/client/components/PageAccessoriesModal/**',
'src/client/components/PageHistory/**',
'src/client/components/Presentation/**',
'src/client/components/PutbackPageModal/**',
'src/client/components/RecentActivity/**',
'src/client/components/RecentCreated/**',
'src/client/components/RevisionComparer/**',
'src/client/components/ShortcutsModal/**',
'src/client/components/StaffCredit/**',
'src/client/components/TemplateModal/**',
'src/client/components/PageEditor/**',
'src/client/components/Hotkeys/**',
'src/client/components/Navbar/**',
'src/client/components/PageHeader/**',
'src/client/components/Sidebar/**',
'src/services/**',
'src/states/**',
Expand Down
6 changes: 3 additions & 3 deletions apps/app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@growi/app",
"version": "7.4.1",
"version": "7.4.2-RC.0",
"license": "MIT",
"private": "true",
"scripts": {
Expand Down Expand Up @@ -173,7 +173,7 @@
"multer": "~1.4.0",
"multer-autoreap": "^1.0.3",
"mustache": "^4.2.0",
"next": "^14.2.32",
"next": "^14.2.35",
"next-dynamic-loading-props": "^0.1.1",
"next-i18next": "^15.3.1",
"next-superjson": "^1.0.7",
Expand All @@ -193,7 +193,7 @@
"passport-saml": "^3.2.0",
"pathe": "^2.0.3",
"prop-types": "^15.8.1",
"qs": "^6.11.1",
"qs": "^6.14.1",
"rate-limiter-flexible": "^2.3.7",
"react": "^18.2.0",
"react-bootstrap-typeahead": "^6.3.2",
Expand Down
5 changes: 5 additions & 0 deletions apps/app/public/static/locales/en_US/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -786,6 +786,11 @@
"updatedAt": "Last update date"
}
},
"help_dropdown": {
"show_shortcuts": "Show shortcuts",
"growi_cloud_help": "GROWI.cloud Help",
"growi_version": "GROWI version"
},
"private_legacy_pages": {
"title": "Private Legacy Pages",
"bulk_operation": "Bulk operation",
Expand Down
5 changes: 5 additions & 0 deletions apps/app/public/static/locales/fr_FR/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -780,6 +780,11 @@
"updatedAt": "Dernière modification"
}
},
"help_dropdown": {
"show_shortcuts": "Afficher les raccourcis",
"growi_cloud_help": "Aide GROWI.cloud",
"growi_version": "Version GROWI"
},
"private_legacy_pages": {
"title": "Anciennes pages privées",
"bulk_operation": "Opération de masse",
Expand Down
5 changes: 5 additions & 0 deletions apps/app/public/static/locales/ja_JP/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,11 @@
"updatedAt": "更新日時"
}
},
"help_dropdown": {
"show_shortcuts": "ショートカットを表示",
"growi_cloud_help": "GROWI.cloud ヘルプ",
"growi_version": "GROWI バージョン"
},
"private_legacy_pages": {
"title": "旧形式のプライベートページ",
"bulk_operation": "一括操作",
Expand Down
5 changes: 5 additions & 0 deletions apps/app/public/static/locales/ko_KR/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,11 @@
"updatedAt": "마지막 업데이트일"
}
},
"help_dropdown": {
"show_shortcuts": "단축키 표시",
"growi_cloud_help": "GROWI.cloud 도움말",
"growi_version": "GROWI 버전"
},
"private_legacy_pages": {
"title": "비공개 레거시 페이지",
"bulk_operation": "대량 작업",
Expand Down
5 changes: 5 additions & 0 deletions apps/app/public/static/locales/zh_CN/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -791,6 +791,11 @@
"updatedAt": "按更新日期排序"
}
},
"help_dropdown": {
"show_shortcuts": "显示快捷键",
"growi_cloud_help": "GROWI.cloud 帮助",
"growi_version": "GROWI 版本"
},
"private_legacy_pages": {
"title": "私人遗留页面",
"bulk_operation": "批量操作",
Expand Down
Loading
Loading