Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
424 commits
Select commit Hold shift + click to select a range
b979ebd
fix: simplify Link usage by removing legacyBehavior in multiple compo…
yuki-takei Mar 3, 2026
2a6bad5
remove unnecessary module
yuki-takei Mar 3, 2026
27cd145
Merge branch 'dev/7.5.x' into support/upgrade-nextjs
yuki-takei Mar 3, 2026
a8c6448
WIP: typescriptize LinkedPagePath
yuki-takei Mar 3, 2026
db26b1c
fix: refactor LinkedPagePath class structure and update import statem…
yuki-takei Mar 3, 2026
5b0ba3f
fix: remove legacy behavior from Link components and simplify renderi…
yuki-takei Mar 3, 2026
2195e64
fix: update post-upgrade measurement results and document module coun…
yuki-takei Mar 3, 2026
c109c2a
fix: update project structure and add build optimization guidelines
yuki-takei Mar 3, 2026
1f00c36
remove spec
yuki-takei Mar 3, 2026
902291e
pnpm dedupe
yuki-takei Mar 3, 2026
e2bcddb
Merge pull request #10831 from growilabs/support/upgrade-nextjs
yuki-takei Mar 3, 2026
a2cce95
remove spec
yuki-takei Mar 3, 2026
39ce01b
update command reference
yuki-takei Mar 3, 2026
fac0f44
remove remove-ts-node spec
yuki-takei Mar 4, 2026
fed5888
remove unused bundlePagesRouterDependencies configuration
yuki-takei Mar 4, 2026
bc0dfde
fix: update clean script to remove .next directory
yuki-takei Mar 4, 2026
63ffab7
add migrate-to-turbopack spec
yuki-takei Mar 4, 2026
6e184d6
include end day in export of Audit Log
Appleple47 Mar 4, 2026
22b68fa
enable turbopack
yuki-takei Mar 4, 2026
727764f
rewrite scss
yuki-takei Mar 4, 2026
7fc4024
Merge branch 'master' into dev/7.5.x
yuki-takei Mar 4, 2026
9eb2f55
Merge branch 'dev/7.5.x' into support/migrate-to-turbopack
yuki-takei Mar 4, 2026
0287f2a
changed to filter by username instead of userid
Ryosei-Fukushima Mar 5, 2026
b5921e5
fix test
Ryosei-Fukushima Mar 5, 2026
c5169d2
fix test
Ryosei-Fukushima Mar 5, 2026
484c89e
precompile styles components with vite
yuki-takei Mar 5, 2026
1f3e1f5
move font assets to /public/static/fonts
yuki-takei Mar 5, 2026
5b67c2f
clean scss
yuki-takei Mar 5, 2026
1db8891
cleanup toolbar button styles
yuki-takei Mar 5, 2026
0e9d081
fix: logger simple
Mar 5, 2026
74c18da
dump reveal.css to dist/style.css
yuki-takei Mar 5, 2026
8a4877a
add dependencies for pre:styles-components in turbo.json
yuki-takei Mar 5, 2026
4c1309b
patch to exclude mathjax-full from @marp-team/marp-core
yuki-takei Mar 5, 2026
4ba2af0
fix presentation
yuki-takei Mar 5, 2026
45d8fb0
fix modifier keys
yuki-takei Mar 5, 2026
795250f
fix style for the page bottom
yuki-takei Mar 5, 2026
8a0be7e
clean scripts
yuki-takei Mar 5, 2026
4574253
enable Marp customization by setting default value to true
yuki-takei Mar 5, 2026
5db8931
Merge pull request #10834 from growilabs/feat/94790-178810-include-en…
yuki-takei Mar 5, 2026
97c889d
add spec
yuki-takei Mar 5, 2026
b06b97c
remove all webpack configuration
yuki-takei Mar 5, 2026
aedca52
add next-env.d.ts to .gitignore and add prelint:typecheck script to p…
yuki-takei Mar 5, 2026
70db6dc
disable next telemetry
yuki-takei Mar 5, 2026
aedc84a
suppress logging for Next.js static files in morgan middleware
yuki-takei Mar 5, 2026
2b5c1f0
remove spec
yuki-takei Mar 5, 2026
236884f
refactor: replace react-scroll with motion for smooth scrolling
yuki-takei Mar 5, 2026
6e3e0d0
exclude vendor-styles.prebuilt.js from biome configuration
yuki-takei Mar 5, 2026
1ddfbe6
Merge branch 'support/migrate-to-turbopack' into support/optimize-pre…
yuki-takei Mar 5, 2026
1b8807d
remove next-env.d.ts
yuki-takei Mar 5, 2026
bbb04d7
exclude vendor-styles files from TypeScript compilation and add ts-no…
yuki-takei Mar 5, 2026
73fa9e5
Migrate MARP_CONTAINER_CLASS_NAME to consts and export it from growi-…
yuki-takei Mar 5, 2026
a2dfd65
Implement Marp CSS extraction and update presentation components for …
yuki-takei Mar 5, 2026
ec40330
Improve loading indicator for MarpSlides with enhanced styling
yuki-takei Mar 5, 2026
34969a8
Merge pull request #10838 from growilabs/support/migrate-to-turbopack
yuki-takei Mar 5, 2026
03ffe6c
Merge branch 'dev/7.5.x' into imprv/staff-credit
yuki-takei Mar 5, 2026
991f962
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 5, 2026
e5c7d1a
update next version for peerDependencies
yuki-takei Mar 6, 2026
1f596c7
update playwright version
yuki-takei Mar 6, 2026
f74bdfe
update lock file
yuki-takei Mar 6, 2026
ca01ab6
Merge branch 'dev/7.5.x' into imprv/staff-credit
yuki-takei Mar 6, 2026
326e904
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 6, 2026
ba38647
fix: update vendor styles handling to use TypeScript prebuilt files
yuki-takei Mar 6, 2026
a92f499
ignore linting vendor-styles prebuilt files
yuki-takei Mar 6, 2026
46a7acd
fix: logger try-catch
Mar 6, 2026
37f2396
fix: use temp file for bulk export upload to resolve S3 streaming issues
Mar 9, 2026
df714bf
fix: apply AI review about logger
Mar 9, 2026
cad8d86
update launch-prod job
yuki-takei Mar 11, 2026
358568c
Merge branch 'master' into dev/7.5.x
yuki-takei Mar 11, 2026
a538e93
Merge branch 'dev/7.5.x' into imprv/staff-credit
yuki-takei Mar 11, 2026
bd950dd
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 11, 2026
e61845d
update turbo.json for presentation
yuki-takei Mar 11, 2026
caddaa0
bump node version for devcontainer
yuki-takei Mar 11, 2026
db28fd4
bump pnpm version
yuki-takei Mar 11, 2026
3b8e9cd
update run-playwright job
yuki-takei Mar 11, 2026
96384b3
resolve symlinks
yuki-takei Mar 11, 2026
2dc1d8f
remove bundle analyzer
yuki-takei Mar 11, 2026
a01429f
Merge branch 'dev/7.5.x' into imprv/staff-credit
yuki-takei Mar 11, 2026
52acdcf
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 11, 2026
5cf06e3
add assemble-prod.sh
yuki-takei Mar 12, 2026
63791c5
add optimise-deps-for-prod spec
yuki-takei Mar 12, 2026
b261c4e
fix: use @aws-sdk/lib-storage Upload for bulk export S3 compatibility
Mar 12, 2026
82c8d32
WIP: reclassify deps
yuki-takei Mar 16, 2026
123057e
change to use id instead of username
Ryosei-Fukushima Mar 16, 2026
d6f7460
WIP: optimise
yuki-takei Mar 16, 2026
d652299
add progress outputs to assemble-prod.sh
yuki-takei Mar 16, 2026
af37026
fix: update Dockerfile to remove unnecessary files from release and c…
yuki-takei Mar 16, 2026
d51f750
update assemble-prod.sh
yuki-takei Mar 16, 2026
ea9c101
WIP: reclassify deps
yuki-takei Mar 16, 2026
22496c9
fix RevisionDiff
yuki-takei Mar 16, 2026
df39ad6
update docs
yuki-takei Mar 16, 2026
2a0d012
WIP
yuki-takei Mar 16, 2026
1df2519
add check-next-symlinks.sh
yuki-takei Mar 16, 2026
16f23ba
Merge branch 'support/reclassify-deps' into support/reclassify-deps-w…
yuki-takei Mar 16, 2026
a427abf
cleanup spec
yuki-takei Mar 16, 2026
8a570bc
update spec-cleanup.md
yuki-takei Mar 16, 2026
1214367
Merge branch 'support/reclassify-deps' into support/reclassify-deps-w…
yuki-takei Mar 16, 2026
74fe8dd
Toast success and stop event bubbling
arvid-e Mar 17, 2026
0861c34
Merge pull request #10835 from growilabs/feat/94790-179320-changed-to…
yuki-takei Mar 17, 2026
1640753
fix reusable-app-prod.yml
yuki-takei Mar 17, 2026
0e91f4c
fix: update isCurrentDirRoot check to use .next directory
yuki-takei Mar 17, 2026
8a2a05f
completed the spec
yuki-takei Mar 17, 2026
685c4db
clean specs
yuki-takei Mar 17, 2026
7fbe559
steering
yuki-takei Mar 17, 2026
fc81398
fix skill
yuki-takei Mar 17, 2026
c567776
add emoji-mart-data package
yuki-takei Mar 17, 2026
a2af60f
simplify PageTree components
yuki-takei Mar 17, 2026
8f86e8a
remove server-side rendering for LightBox component and import it dir…
yuki-takei Mar 17, 2026
7388e0b
fix lint error
yuki-takei Mar 17, 2026
90ba6a6
update package.json main and types directives
yuki-takei Mar 17, 2026
0e3621f
update checking script
yuki-takei Mar 17, 2026
41e1115
increase hookTimeout for MongoMemoryServer in integration tests
yuki-takei Mar 17, 2026
fb7abe2
download MongoMemoryServer in globalSetup
yuki-takei Mar 17, 2026
5d4f78f
remove spec for optimisation
yuki-takei Mar 17, 2026
65baa0b
fix: create organization path recursively if it doesn't exist
yuki-takei Mar 17, 2026
e55222d
merge master into audit-log-bulk-export
Ryosei-Fukushima Mar 18, 2026
7981090
resolve lint error
Ryosei-Fukushima Mar 18, 2026
274a77e
simplify project-dir-utils.ts
yuki-takei Mar 18, 2026
6c04853
update MockCrowi to use events.activity instead of event()
Ryosei-Fukushima Mar 18, 2026
35de56d
fix `"private": true`
yuki-takei Mar 18, 2026
fee7921
cleanup comment
yuki-takei Mar 18, 2026
5240815
refactor: simplify admin Socket.IO initialization logic
yuki-takei Mar 18, 2026
7fba65e
Merge pull request #10873 from growilabs/support/reclassify-deps
yuki-takei Mar 18, 2026
6000269
update permissions for Claude Code
yuki-takei Mar 18, 2026
57a432b
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 18, 2026
9efcb2a
replace require() with import for login-required middleware
Ryosei-Fukushima Mar 18, 2026
2fc4724
fix ci test
Ryosei-Fukushima Mar 18, 2026
eff3656
180264 180288 add growi cloud link to audit log
ryota-t0401 Mar 18, 2026
2729442
fix: remove await
Mar 19, 2026
769428f
reorganize permissions
yuki-takei Mar 19, 2026
13f4698
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 19, 2026
cdca265
add spec
yuki-takei Mar 19, 2026
dd9907b
WIP: impl
yuki-takei Mar 19, 2026
4e10b4e
session: add SessionConfig interface and refactor usage in Yjs service
yuki-takei Mar 19, 2026
7cc9d03
update production assembly script to install runtime next.config.js
yuki-takei Mar 19, 2026
bd981f7
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 19, 2026
91d7a45
refactor: optimize diff check and awareness state handling in collabo…
yuki-takei Mar 19, 2026
67e2fd4
Merge branch 'dev/7.5.x' into support/migrate-to-y-websocket
yuki-takei Mar 19, 2026
119291e
fix(editor): lazy-load ws in vite config to fix build mode
yuki-takei Mar 19, 2026
8176432
add missing file
yuki-takei Mar 19, 2026
60853d5
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 19, 2026
21802c5
rename
yuki-takei Mar 19, 2026
ff5930f
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 19, 2026
c94cbb1
refactor(yjs): extract YJS_WEBSOCKET_BASE_PATH constant to @growi/core
yuki-takei Mar 19, 2026
d4be7e6
add changeset
yuki-takei Mar 19, 2026
2b60608
fix lint error
yuki-takei Mar 19, 2026
8003de4
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 19, 2026
e174a0d
add next.config.js to production artifacts
yuki-takei Mar 19, 2026
ee147be
upgrade playwright version for ci
yuki-takei Mar 23, 2026
51e7c6e
Merge branch 'dev/7.5.x' into support/optimize-presentation
yuki-takei Mar 23, 2026
803a7db
update mergify.yml to use test-prod-node24 for build and launch condi…
yuki-takei Mar 23, 2026
9e9fd0b
Merge branch 'dev/7.5.x' into support/migrate-to-y-websocket
yuki-takei Mar 23, 2026
71cd533
refactor: update middleware type to ConnectMiddleware for better comp…
yuki-takei Mar 23, 2026
130186a
refactor: enhance upgrade handler tests with improved mock implementa…
yuki-takei Mar 23, 2026
a6f1bb5
fix: update test-prod-node20 to test-prod-node24 in mergify.yml failu…
yuki-takei Mar 23, 2026
0493de4
Bump version
Mar 23, 2026
0b76a51
Merge pull request #10906 from growilabs/support/prepare-v7.4.8-RC.0
mergify[bot] Mar 23, 2026
42baad1
Merge branch 'dev/7.5.x'
yuki-takei Mar 23, 2026
a9d10da
ci(deps): bump next from 16.1.6 to 16.1.7
dependabot[bot] Mar 23, 2026
fbd28ea
Merge branch 'master' into support/optimize-presentation
yuki-takei Mar 23, 2026
054ad11
Merge branch 'master' into feat/178240-suggest-path-spec
yuki-takei Mar 23, 2026
df00b4f
Merge pull request #10908 from growilabs/dependabot/npm_and_yarn/next…
mergify[bot] Mar 23, 2026
46d95cb
Merge pull request #10840 from growilabs/support/optimize-presentation
mergify[bot] Mar 23, 2026
7e1b2d4
Merge remote-tracking branch 'origin/master' into imprv/staff-credit
yuki-takei Mar 23, 2026
0c056c6
clean spec
yuki-takei Mar 23, 2026
837f238
Merge pull request #10839 from growilabs/imprv/staff-credit
yuki-takei Mar 23, 2026
e2c163c
review and add tasks
yuki-takei Mar 23, 2026
1a40341
refactor
yuki-takei Mar 23, 2026
40a51af
cleanup spec
yuki-takei Mar 23, 2026
f0d68fe
Merge remote-tracking branch 'origin/master' into feat/178240-suggest…
yuki-takei Mar 23, 2026
e84eff3
upgrade next and run pnpm dedupe
yuki-takei Mar 23, 2026
d4a4f5d
update typescript to 5.9.3
yuki-takei Mar 23, 2026
ca4841b
Merge pull request #10911 from growilabs/support/bump-nextjs
yuki-takei Mar 23, 2026
5695973
Merge branch 'master' into support/migrate-to-y-websocket
yuki-takei Mar 23, 2026
254e75f
cleanup spec
yuki-takei Mar 23, 2026
763c69e
fix build: update ts-patch to 3.3.0 and typescript-transform-paths to…
yuki-takei Mar 23, 2026
2fb358b
Merge branch 'master' into support/migrate-to-y-websocket
yuki-takei Mar 23, 2026
de845d3
fix: resolve TypeScript type conflicts for @codemirror packages in vi…
yuki-takei Mar 23, 2026
889fef4
feat: add additional Bash commands for pnpm in settings
yuki-takei Mar 23, 2026
f788f8b
docs: update package dependency guidelines and add troubleshooting sk…
yuki-takei Mar 23, 2026
1370067
Merge branch 'master' into support/migrate-to-y-websocket
yuki-takei Mar 23, 2026
c6f0e0b
fix: replace Head component with Script for loading Drawio viewer script
yuki-takei Mar 23, 2026
b4740b7
fix: store TOC node in a ref to avoid component update issues during …
yuki-takei Mar 23, 2026
1a565b3
Merge pull request #10913 from growilabs/support/fix-warnings-when-re…
mergify[bot] Mar 23, 2026
2a35785
add upgrade-fixed-package
yuki-takei Mar 23, 2026
ebfae33
fix: configure Socket.IO server to allow non-Socket.IO WebSocket upgr…
yuki-takei Mar 23, 2026
879dd89
Merge branch 'master' into fix/180229-content-disposition-setting-con…
arvid-e Mar 24, 2026
ee77969
Change to form tag and include check for manual button press
arvid-e Mar 24, 2026
73bdb52
Revert changes
arvid-e Mar 24, 2026
2ee9d62
Revert unnecessary change
arvid-e Mar 24, 2026
0ca8d8d
text revision
ryota-t0401 Mar 24, 2026
aff038c
Refactor code structure for improved readability and maintainability
yuki-takei Mar 24, 2026
03279b1
Merge branch 'master' into feat/180264-180288-add-growi-cloud-link-to…
ryota-t0401 Mar 24, 2026
4dc2a9e
fix: refactor WebsocketProvider setup and cleanup in useCollaborative…
yuki-takei Mar 24, 2026
f07e983
fb response: use isCloud variable
ryota-t0401 Mar 24, 2026
0c08831
fix: update regex construction for filter conditions to use RegExp.es…
yuki-takei Mar 24, 2026
97aadef
steering
yuki-takei Mar 24, 2026
6b9285c
feat: implement socket guarding mechanism to prevent premature closur…
yuki-takei Mar 24, 2026
7b78cb0
fix: update string-width dependency to version 7.0.0
yuki-takei Mar 24, 2026
d4c70a9
fix: update symlink verification instructions and emphasize mandatory…
yuki-takei Mar 24, 2026
df4e69d
fix: update upgrade handler to write error responses without closing …
yuki-takei Mar 24, 2026
9e75b15
cleanup spec
yuki-takei Mar 24, 2026
01a1ef4
test: add afterEach cleanup and socket.destroy non-call assertions
yuki-takei Mar 24, 2026
5a40fc0
Merge pull request #10920 from growilabs/support/upgrade-fixed-packages
mergify[bot] Mar 24, 2026
1f8eac9
test: add 401 write assertion and middleware failure test to upgrade-…
yuki-takei Mar 24, 2026
8d6a17a
test: improve test naming and replace non-null assertions with type g…
yuki-takei Mar 24, 2026
5185f2a
fix: update reusable workflow references to use master branch
yuki-takei Mar 24, 2026
b48aef9
Merge pull request #10889 from growilabs/support/migrate-to-y-websocket
mergify[bot] Mar 24, 2026
c6d0b4d
Version Packages
github-actions[bot] Mar 24, 2026
cb56f5c
Merge pull request #10926 from growilabs/changeset-release/master
yuki-takei Mar 24, 2026
126d723
Merge pull request #10917 from growilabs/fix/180229-content-dispositi…
yuki-takei Mar 24, 2026
e788418
rewrite spec for collaborative editor
yuki-takei Mar 24, 2026
6839df7
Merge branch 'master' into fix/178290-bulk-export-aws-minimal-2
yuki-takei Mar 24, 2026
64f3dae
Merge pull request #10881 from growilabs/feat/180264-180288-add-growi…
mergify[bot] Mar 24, 2026
bd872e7
Initial plan
Copilot Mar 24, 2026
a4887fb
fix: Minimize pnpm-lock.yaml diff by regenerating with only necessary…
Copilot Mar 24, 2026
0d6fefc
Merge pull request #10833 from growilabs/fix/178290-bulk-export-aws-m…
mergify[bot] Mar 24, 2026
a3428b8
Merge pull request #10928 from growilabs/copilot/revert-unnecessary-d…
yuki-takei Mar 24, 2026
f0a4d80
Remove not used mime type setting lists
arvid-e Mar 25, 2026
69b83d8
fix conflict
Ryosei-Fukushima Mar 25, 2026
e60c85b
feat: Add 'deleted' user status to UserManagement and API routes
miya Mar 26, 2026
e4a264f
fix: Convert page query parameter to integer for consistency
miya Mar 26, 2026
8c62db9
feat: Add 'deleted_user' label to user management localization and up…
miya Mar 26, 2026
6a8ef8f
Merge pull request #10874 from growilabs/feat/94790-audit-log-bulk-ex…
mergify[bot] Mar 26, 2026
b6c9725
docs: update SKILL.md with build order management guidelines for Turb…
yuki-takei Mar 26, 2026
e12dddf
support/149584-180129-icon-edit
yuyaiwahori Mar 27, 2026
8326cf2
fix: update default sorting to createdAt and descending order for use…
miya Mar 27, 2026
3441819
Merge remote-tracking branch 'origin/master' into feat/178240-suggest…
tomoyuki-t-weseek Mar 27, 2026
80b99ad
feat: Add growi cloud link to storage settings
ryota-t0401 Mar 27, 2026
e62f4b2
Merge pull request #10930 from growilabs/imprv/180532-remove-unused-code
yuki-takei Mar 27, 2026
4f41eb5
env revert
ryota-t0401 Mar 27, 2026
9e420c1
env revert
ryota-t0401 Mar 27, 2026
3213545
Merge pull request #10934 from growilabs/fix/180602
yuki-takei Mar 27, 2026
85a160c
Merge pull request #10940 from growilabs/fix/180705-duplicate-user-da…
yuki-takei Mar 27, 2026
44260ab
fix: update permissions and remove npm token setup from release workflow
yuki-takei Mar 27, 2026
ef1c8b0
Revert "Merge pull request #10926 from growilabs/changeset-release/ma…
yuki-takei Mar 27, 2026
224611c
add repository.url for OIDC Provenance
yuki-takei Mar 27, 2026
e70f9cb
fix: update @types/node version and remove ignored dependencies from …
yuki-takei Mar 27, 2026
2bfd4eb
remove unnecessary packages
yuki-takei Mar 27, 2026
669a0a8
pre-fill export modal with current filter values
NJisEverywhere Mar 30, 2026
ebf55dc
Merge branch 'master' into feat/180264-180290-add-growi-cloud-link-to…
ryota-t0401 Mar 30, 2026
77ef531
FB 修正(六角形の形、hoverのサイズ)
yuyaiwahori Mar 30, 2026
1e82c77
Merge pull request #10777 from growilabs/feat/178240-suggest-path-spec
mergify[bot] Mar 30, 2026
45a009a
fb response messages change
ryota-t0401 Mar 30, 2026
b275314
Merge branch 'master' into feat/180264-180290-add-growi-cloud-link-to…
ryota-t0401 Mar 30, 2026
9c908be
hover時に六角形が110%になるようにする
yuyaiwahori Mar 31, 2026
5746b2d
Merge pull request #10937 from growilabs/support/149584-180129-growi-…
yuki-takei Mar 31, 2026
c0cd09d
Version Packages
github-actions[bot] Mar 31, 2026
f1f38d8
Merge pull request #10942 from growilabs/changeset-release/master
yuki-takei Mar 31, 2026
c35ac06
Merge pull request #10941 from growilabs/feat/180264-180290-add-growi…
mergify[bot] Mar 31, 2026
b9227fc
Merge pull request #10944 from growilabs/imprv/180548-audit-log-expor…
mergify[bot] Mar 31, 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
  •  
  •  
  •  
83 changes: 83 additions & 0 deletions .claude/commands/create-next-version-branch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
name: create-next-version-branch
description: Create development and release branches with GitHub Release for the next version. Usage: /create-next-version-branch dev/{major}.{minor}.x
---

# Create Next Version Branch

Automate the creation of development branches and GitHub Release for a new GROWI version.

## Input

The argument `$ARGUMENTS` must be a branch name in the format `dev/{major}.{minor}.x` (e.g., `dev/7.5.x`).

## Procedure

### Step 1: Parse and Validate Input

1. Parse `$ARGUMENTS` to extract `{major}` and `{minor}` from the `dev/{major}.{minor}.x` pattern
2. If the format is invalid, display an error and stop:
- Must match `dev/{number}.{number}.x`
3. Set the following variables:
- `DEV_BRANCH`: `dev/{major}.{minor}.x`
- `RELEASE_BRANCH`: `release/{major}.{minor}.x`
- `TAG_NAME`: `v{major}.{minor}.x-base`
- `RELEASE_TITLE`: `v{major}.{minor}.x Base Release`

### Step 2: Create and Push the Development Branch

1. Confirm with the user before proceeding
2. Create and push `DEV_BRANCH` from the current HEAD:
```bash
git checkout -b {DEV_BRANCH}
git push origin {DEV_BRANCH}
```

### Step 3: Create GitHub Release

1. Create a GitHub Release using `gh release create`:
```bash
gh release create {TAG_NAME} \
--target {DEV_BRANCH} \
--title "{RELEASE_TITLE}" \
--notes "The base release for release-drafter to avoid \`Error: GraphQL Rate Limit Exceeded\`
https://github.com/release-drafter/release-drafter/issues/1018" \
--latest=false \
--prerelease=false
```
- `--latest=false`: Do NOT set as latest release
- `--prerelease=false`: Do NOT set as pre-release

### Step 4: Verify targetCommitish

1. Run the following command and confirm that `targetCommitish` equals `DEV_BRANCH`:
```bash
gh release view {TAG_NAME} --json targetCommitish
```
2. If `targetCommitish` does not match, display an error and stop

### Step 5: Create and Push the Release Branch

1. From the same commit (still on `DEV_BRANCH`), create and push `RELEASE_BRANCH`:
```bash
git checkout -b {RELEASE_BRANCH}
git push origin {RELEASE_BRANCH}
```

### Step 6: Summary

Display a summary of all created resources:

```
Created:
- Branch: {DEV_BRANCH} (pushed to origin)
- Branch: {RELEASE_BRANCH} (pushed to origin)
- GitHub Release: {RELEASE_TITLE} (tag: {TAG_NAME}, target: {DEV_BRANCH})
```

## Error Handling

- If `DEV_BRANCH` already exists on the remote, warn the user and ask how to proceed
- If `RELEASE_BRANCH` already exists on the remote, warn the user and ask how to proceed
- If the tag `TAG_NAME` already exists, warn the user and ask how to proceed
- If `gh` CLI is not authenticated, instruct the user to run `gh auth login`
34 changes: 32 additions & 2 deletions .claude/commands/kiro/spec-cleanup.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ Clean up and organize specification documents for feature **$1** after implement
- Read all core files first
- Read other files to understand their content and value

**Determine target language**:
- Read `spec.json` and extract the `language` field (e.g., `"ja"`, `"en"`)
- This is the language ALL spec document content must be written in
- Note: code comments within code blocks are exempt (must stay in English per project rules)

**Verify implementation status**:
- Check that tasks are marked complete `[x]` in tasks.md
- If implementation incomplete, warn user and ask to confirm cleanup
Expand Down Expand Up @@ -86,6 +91,15 @@ Clean up and organize specification documents for feature **$1** after implement
* Known limitations
- Check if content from other files should be migrated here

5. **Language audit** (compare actual language vs. `spec.json.language`):
- For each markdown file, scan prose content (headings, paragraphs, list items) and detect the written language
- Flag any file or section whose language does **not** match the target language
- Exemptions — do NOT flag:
* Content inside fenced code blocks (` ``` `) — code comments must stay in English
* Inline code spans (`` `...` ``)
* Proper nouns, technical terms, and identifiers that are always written in English
- Collect flagged items into a **translation plan**: file name, approximate line range, detected language, and a brief excerpt

### Step 3: Interactive Confirmation

**Present cleanup plan to user**:
Expand All @@ -110,6 +124,14 @@ For each file and section identified in Step 2, ask:
- "design.md: Delete 'Security Considerations' section (lines X-Y)? [Y/n]"
- "design.md: Keep Architecture diagrams (essential for refactoring)? [Y/n]"

**Translation confirmation** (if language mismatches were found in Step 2):
- Show summary: "Found content in language(s) other than `{target_language}` in the following files:"
- List each flagged file with line range and a short excerpt
- Ask: "Translate mismatched content to `{target_language}`? [Y/n]"
- If Y: translate all flagged sections in Step 4
- If n: skip translation (leave files as-is)
- Note: code blocks are never translated

**Batch similar decisions**:
- Group related sections (e.g., all "delete implementation details" decisions)
- Allow user to approve categories rather than individual items
Expand Down Expand Up @@ -153,7 +175,14 @@ For each file and section identified in Step 2, ask:
- Preserve architecture diagrams and component interfaces
- Keep design decisions and rationale sections

5. **Update spec.json metadata**:
5. **Translate language-mismatched content** (if approved):
- For each flagged file and section, translate prose content to the target language
- **Never translate**: content inside fenced code blocks or inline code spans
- Preserve all Markdown formatting (headings, bold, lists, links, etc.)
- After translation, verify the overall document reads naturally in the target language
- Document translated files in the cleanup summary

6. **Update spec.json metadata**:
- Set `phase: "implementation-complete"` (if not already set)
- Add `cleanup_completed: true` flag
- Update `updated_at` timestamp
Expand All @@ -176,6 +205,7 @@ For each file and section identified in Step 2, ask:
- ✅ research.md: Added Session 2 discoveries + salvaged content (180 lines added)
- ✅ requirements.md: Simplified 6 requirements (350 lines → 180 lines)
- ✅ design.md: Removed 4 sections, added constraints + salvaged content (250 lines removed, 100 added)
- ✅ requirements.md: Translated mismatched sections to {target_language}

### Information Salvaged
- Implementation discoveries from validation-report.md → research.md
Expand All @@ -196,7 +226,7 @@ For each file and section identified in Step 2, ask:
## Critical Constraints

- **User approval required**: Never delete content without explicit confirmation
- **Language consistency**: Use language specified in spec.json for all updates
- **Language consistency**: All prose content must be written in the language specified in `spec.json.language`; translate any mismatched sections (code blocks exempt)
- **Preserve history**: Don't delete discovery rationale or design decisions
- **Balance brevity with completeness**: Remove redundancy but keep essential context
- **Interactive workflow**: Pause for user input rather than making assumptions
Expand Down
35 changes: 33 additions & 2 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,36 @@
{
"permissions": {
"allow": [
"Bash(node --version)",
"Bash(npm --version)",
"Bash(npm view *)",
"Bash(pnpm --version)",
"Bash(turbo --version)",
"Bash(turbo run build)",
"Bash(turbo run lint)",
"Bash(pnpm run lint:*)",
"Bash(pnpm vitest run *)",
"Bash(pnpm biome check *)",
"Bash(pnpm ls *)",
"Bash(pnpm why *)",
"Bash(cat *)",
"Bash(echo *)",
"Bash(find *)",
"Bash(grep *)",
"Bash(git diff *)",
"Bash(gh issue view *)",
"Bash(gh pr view *)",
"Bash(gh pr diff *)",
"Bash(ls *)",
"WebFetch(domain:github.com)",
"mcp__context7__*",
"mcp__plugin_context7_*",
"mcp__github__*",
"WebSearch",
"WebFetch"
]
},
"enableAllProjectMcpServers": true,
"hooks": {
"SessionStart": [
{
Expand All @@ -17,8 +49,7 @@
{
"type": "command",
"command": "if [[ \"$FILE\" == */apps/* ]] || [[ \"$FILE\" == */packages/* ]]; then REPO_ROOT=$(echo \"$FILE\" | sed 's|/\\(apps\\|packages\\)/.*|/|'); cd \"$REPO_ROOT\" && pnpm biome check --write \"$FILE\" 2>/dev/null || true; fi",
"timeout": 30,
"description": "Auto-format edited files in apps/* and packages/* with Biome"
"timeout": 30
}
]
}
Expand Down
47 changes: 46 additions & 1 deletion .claude/skills/monorepo-overview/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,34 @@ turbo run test --filter @growi/app
turbo run lint --filter @growi/core
```

### Build Order Management

Build dependencies in this monorepo are **not** declared with `dependsOn: ["^build"]` (the automatic workspace-dependency mode). Instead, they are declared **explicitly** — either in the root `turbo.json` for legacy entries, or in per-package `turbo.json` files for newer packages.

**When to update**: whenever a package gains a new workspace dependency on another buildable package (one that produces a `dist/`), declare the build-order dependency explicitly. Without it, Turborepo may build in the wrong order, causing missing `dist/` files or type errors.

**Pattern — per-package `turbo.json`** (preferred for new dependencies):

```json
// packages/my-package/turbo.json
{
"extends": ["//"],
"tasks": {
"build": { "dependsOn": ["@growi/some-dep#build"] },
"dev": { "dependsOn": ["@growi/some-dep#dev"] }
}
}
```

- `"extends": ["//"]` inherits all root task definitions; only add the extra `dependsOn`
- Keep root `turbo.json` clean — package-level overrides live with the package that owns the dependency
- For packages with multiple tasks (watch, lint, test), mirror the dependency in each relevant task

**Existing examples**:
- `packages/slack/turbo.json` — `build`/`dev` depend on `@growi/logger`
- `packages/remark-attachment-refs/turbo.json` — all tasks depend on `@growi/core`, `@growi/logger`, `@growi/remark-growi-directive`, `@growi/ui`
- Root `turbo.json` — `@growi/ui#build` depends on `@growi/core#build` (pre-dates the per-package pattern)

## Architectural Principles

### 1. Feature-Based Architecture (Recommended)
Expand Down Expand Up @@ -99,11 +127,28 @@ This enables better code splitting and prevents server-only code from being bund

Common code should be extracted to `packages/`:

- **core**: Utilities, constants, type definitions
- **core**: Domain hub (see below)
- **ui**: Reusable React components
- **editor**: Markdown editor
- **pluginkit**: Plugin system framework

#### @growi/core — Domain & Utilities Hub

`@growi/core` is the foundational shared package depended on by all other packages (10 consumers). Its responsibilities:

- **Domain type definitions** — Single source of truth for cross-package interfaces (`IPage`, `IUser`, `IRevision`, `Ref<T>`, `HasObjectId`, etc.)
- **Cross-cutting utilities** — Pure functions for page path validation, ObjectId checks, serialization (e.g., `serializeUserSecurely()`)
- **System constants** — File types, plugin configs, scope enums
- **Global type augmentations** — Runtime/polyfill type declarations visible to all consumers (e.g., `RegExp.escape()` via `declare global` in `index.ts`)

Key patterns:

1. **Shared types and global augmentations go in `@growi/core`** — Not duplicated per-package. `declare global` in `index.ts` propagates to all consumers through the module graph.
2. **Subpath exports for granular imports** — `@growi/core/dist/utils/page-path-utils` instead of barrel imports from root.
3. **Minimal runtime dependencies** — Only `bson-objectid`; ~70% types. Safe to import from both server and client contexts.
4. **Server-specific interfaces are namespaced** — Under `interfaces/server/`.
5. **Dual format (ESM + CJS)** — Built via Vite with `preserveModules: true` and `vite-plugin-dts` (`copyDtsFiles: true`).

## Version Management with Changeset

GROWI uses **Changesets** for version management and release notes:
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/tech-stack/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ user-invocable: false
## Build & Development Tools

### Package Management
- **pnpm** 10.4.1 - Package manager (faster, more efficient than npm/yarn)
- **pnpm** Package manager (faster, more efficient than npm/yarn)

### Monorepo Orchestration
- **Turborepo** ^2.1.3 - Build system with caching and parallelization
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/app/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "20.18.3"
"version": "24.14.0"
},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
Expand Down
2 changes: 0 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ updates:
prefix: ci
include: scope
ignore:
- dependency-name: escape-string-regexp
- dependency-name: string-width
- dependency-name: "@handsontable/react"
- dependency-name: handsontable
- dependency-name: typeorm
Expand Down
10 changes: 5 additions & 5 deletions .github/mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ queue_rules:
- check-success ~= ci-app-launch-dev
- -check-failure ~= ci-app-
- -check-failure ~= ci-slackbot-
- -check-failure ~= test-prod-node20 /
- -check-failure ~= test-prod-node24 /
merge_conditions:
- check-success ~= ci-app-lint
- check-success ~= ci-app-test
- check-success ~= ci-app-launch-dev
- check-success = test-prod-node20 / build-prod
- check-success ~= test-prod-node20 / launch-prod
- check-success ~= test-prod-node20 / run-playwright
- check-success = test-prod-node24 / build-prod
- check-success ~= test-prod-node24 / launch-prod
- check-success ~= test-prod-node24 / run-playwright
- -check-failure ~= ci-app-
- -check-failure ~= ci-slackbot-
- -check-failure ~= test-prod-node20 /
- -check-failure ~= test-prod-node24 /

pull_request_rules:
- name: Automatic queue to merge
Expand Down
47 changes: 15 additions & 32 deletions .github/workflows/ci-app-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,21 @@ concurrency:

jobs:

test-prod-node18:
uses: growilabs/growi/.github/workflows/reusable-app-prod.yml@master
if: |
( github.event_name == 'push'
|| github.base_ref == 'master'
|| github.base_ref == 'dev/7.*.x'
|| startsWith( github.base_ref, 'release/' )
|| startsWith( github.head_ref, 'mergify/merge-queue/' ))
with:
node-version: 18.x
skip-e2e-test: true
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

# test-prod-node22:
# uses: growilabs/growi/.github/workflows/reusable-app-prod.yml@master
# if: |
# ( github.event_name == 'push'
# || github.base_ref == 'master'
# || github.base_ref == 'dev/7.*.x'
# || startsWith( github.base_ref, 'release/' )
# || startsWith( github.head_ref, 'mergify/merge-queue/' ))
# with:
# node-version: 22.x
# skip-e2e-test: true
# secrets:
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

test-prod-node20:
test-prod-node24:
uses: growilabs/growi/.github/workflows/reusable-app-prod.yml@master
if: |
( github.event_name == 'push'
Expand All @@ -63,23 +62,7 @@ jobs:
|| startsWith( github.base_ref, 'release/' )
|| startsWith( github.head_ref, 'mergify/merge-queue/' ))
with:
node-version: 20.x
node-version: 24.x
skip-e2e-test: ${{ contains( github.event.pull_request.labels.*.name, 'dependencies' ) }}
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

# run-reg-suit-node20:
# needs: [test-prod-node20]

# uses: growilabs/growi/.github/workflows/reusable-app-reg-suit.yml@master

# if: always()

# with:
# node-version: 20.x
# skip-reg-suit: ${{ contains( github.event.pull_request.labels.*.name, 'dependencies' ) }}
# secrets:
# REG_NOTIFY_GITHUB_PLUGIN_CLIENTID: ${{ secrets.REG_NOTIFY_GITHUB_PLUGIN_CLIENTID }}
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
Loading
Loading