Skip to content

Commit 0c68ddc

Browse files
committed
Merge branch 'develop'
2 parents 1c459b3 + 5b8be1c commit 0c68ddc

26 files changed

+1559
-1058
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# 2.2.6
2+
3+
### Notable enhancements and fixes
4+
5+
- Added option to delete a pad by the creator. This option can be found in the settings menu. When you click on it you get a confirm dialog and after that you have the chance to completely erase the pad.
6+
7+
18
# 2.2.5
29

310
### Notable enhancements and fixes

README.md

+25
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,31 @@ following plugins:
174174
that each user's chosen color, display name, comment ownership, etc. is
175175
strongly linked to their account.
176176

177+
### Upgrade Etherpad
178+
179+
Run the following command in your Etherpad folder to upgrade
180+
181+
1. Stop any running Etherpad (manual, systemd ...)
182+
2. Get present version
183+
```sh
184+
git -P tag --contains
185+
```
186+
3. List versions available
187+
```sh
188+
git -P tag --list "v*" --merged
189+
```
190+
4. Select the version
191+
```sh
192+
git checkout v2.2.5
193+
git switch -c v2.2.5
194+
```
195+
5. Upgrade Etherpad
196+
```sh
197+
./bin/run.sh
198+
```
199+
6. Stop with [CTRL-C]
200+
7. Restart your Etherpad service
201+
177202
## Next Steps
178203

179204
### Tweak the settings

admin/package.json

+22-22
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "admin",
33
"private": true,
4-
"version": "2.2.5",
4+
"version": "2.2.6",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",
@@ -11,32 +11,32 @@
1111
"preview": "vite preview"
1212
},
1313
"dependencies": {
14-
"@radix-ui/react-switch": "^1.1.0"
14+
"@radix-ui/react-switch": "^1.1.1"
1515
},
1616
"devDependencies": {
17-
"@radix-ui/react-dialog": "^1.1.1",
18-
"@radix-ui/react-toast": "^1.2.1",
19-
"@types/react": "^18.3.8",
20-
"@types/react-dom": "^18.2.25",
21-
"@typescript-eslint/eslint-plugin": "^8.6.0",
22-
"@typescript-eslint/parser": "^8.6.0",
23-
"@vitejs/plugin-react-swc": "^3.5.0",
24-
"eslint": "^9.10.0",
25-
"eslint-plugin-react-hooks": "^4.6.0",
26-
"eslint-plugin-react-refresh": "^0.4.12",
27-
"i18next": "^23.15.1",
17+
"@radix-ui/react-dialog": "^1.1.2",
18+
"@radix-ui/react-toast": "^1.2.2",
19+
"@types/react": "^18.3.12",
20+
"@types/react-dom": "^18.3.1",
21+
"@typescript-eslint/eslint-plugin": "^8.11.0",
22+
"@typescript-eslint/parser": "^8.11.0",
23+
"@vitejs/plugin-react-swc": "^3.7.1",
24+
"eslint": "^9.13.0",
25+
"eslint-plugin-react-hooks": "^5.0.0",
26+
"eslint-plugin-react-refresh": "^0.4.13",
27+
"i18next": "^23.16.2",
2828
"i18next-browser-languagedetector": "^8.0.0",
29-
"lucide-react": "^0.441.0",
29+
"lucide-react": "^0.453.0",
3030
"react": "^18.2.0",
3131
"react-dom": "^18.2.0",
32-
"react-hook-form": "^7.53.0",
33-
"react-i18next": "^15.0.2",
34-
"react-router-dom": "^6.26.2",
35-
"socket.io-client": "^4.7.5",
36-
"typescript": "^5.6.2",
37-
"vite": "^5.4.7",
38-
"vite-plugin-static-copy": "^1.0.6",
32+
"react-hook-form": "^7.53.1",
33+
"react-i18next": "^15.1.0",
34+
"react-router-dom": "^6.27.0",
35+
"socket.io-client": "^4.8.0",
36+
"typescript": "^5.6.3",
37+
"vite": "^5.4.10",
38+
"vite-plugin-static-copy": "^2.0.0",
3939
"vite-plugin-svgr": "^4.2.0",
40-
"zustand": "^4.5.5"
40+
"zustand": "^5.0.0"
4141
}
4242
}

admin/src/App.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ export const App = () => {
9595
<h1>Etherpad</h1>
9696
</span>
9797
<ul onClick={()=>{
98-
setSidebarOpen(false)
98+
if (window.innerWidth < 768) {
99+
setSidebarOpen(false)
100+
}
99101
}}>
100102
<li><NavLink to="/plugins"><Cable/><Trans i18nKey="admin_plugins"/></NavLink></li>
101103
<li><NavLink to={"/settings"}><Wrench/><Trans i18nKey="admin_settings"/></NavLink></li>

admin/src/pages/HomePage.tsx

+16-15
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ import {InstalledPlugin, PluginDef, SearchParams} from "./Plugin.ts";
44
import {useDebounce} from "../utils/useDebounce.ts";
55
import {Trans, useTranslation} from "react-i18next";
66
import {SearchField} from "../components/SearchField.tsx";
7-
import {Download, Trash} from "lucide-react";
7+
import {ArrowUpFromDot, Download, Trash} from "lucide-react";
88
import {IconButton} from "../components/IconButton.tsx";
99
import {determineSorting} from "../utils/sorting.ts";
1010

1111

1212
export const HomePage = () => {
1313
const pluginsSocket = useStore(state=>state.pluginsSocket)
1414
const [plugins,setPlugins] = useState<PluginDef[]>([])
15-
const [installedPlugins, setInstalledPlugins] = useState<InstalledPlugin[]>([])
15+
const installedPlugins = useStore(state=>state.installedPlugins)
16+
const setInstalledPlugins = useStore(state=>state.setInstalledPlugins)
1617
const [searchParams, setSearchParams] = useState<SearchParams>({
1718
offset: 0,
1819
limit: 99999,
@@ -49,7 +50,7 @@ export const HomePage = () => {
4950
}, [plugins, searchParams])
5051

5152
const sortedInstalledPlugins = useMemo(()=>{
52-
return installedPlugins.sort((a, b)=>{
53+
return useStore.getState().installedPlugins.sort((a, b)=>{
5354

5455
if(a.name < b.name){
5556
return -1
@@ -78,17 +79,16 @@ export const HomePage = () => {
7879
})
7980

8081
pluginsSocket.on('results:updatable', (data) => {
81-
data.updatable.forEach((pluginName: string) => {
82-
setInstalledPlugins(installedPlugins.map(plugin => {
83-
if (plugin.name === pluginName) {
84-
return {
85-
...plugin,
86-
updatable: true
87-
}
88-
}
89-
return plugin
90-
}))
91-
})
82+
const newInstalledPlugins = useStore.getState().installedPlugins.map(plugin => {
83+
if (data.updatable.includes(plugin.name)) {
84+
return {
85+
...plugin,
86+
updatable: true
87+
}
88+
}
89+
return plugin
90+
})
91+
setInstalledPlugins(newInstalledPlugins)
9292
})
9393

9494
pluginsSocket.on('finished:install', () => {
@@ -159,6 +159,7 @@ export const HomePage = () => {
159159
})
160160
}, 500, [searchTerm])
161161

162+
162163
return <div>
163164
<h1><Trans i18nKey="admin_plugins"/></h1>
164165

@@ -180,7 +181,7 @@ export const HomePage = () => {
180181
<td>
181182
{
182183
plugin.updatable ?
183-
<button onClick={() => installPlugin(plugin.name)}>Update</button>
184+
<IconButton onClick={() => installPlugin(plugin.name)} icon={<ArrowUpFromDot/>} title="Update"></IconButton>
184185
: <IconButton disabled={plugin.name == "ep_etherpad-lite"} icon={<Trash/>} title={<Trans i18nKey="admin_plugins.installed_uninstall.value"/>} onClick={() => uninstallPlugin(plugin.name)}/>
185186
}
186187
</td>

admin/src/store/store.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {create} from "zustand";
22
import {Socket} from "socket.io-client";
33
import {PadSearchResult} from "../utils/PadSearch.ts";
4+
import {InstalledPlugin} from "../pages/Plugin.ts";
45

56
type ToastState = {
67
description?:string,
@@ -22,7 +23,9 @@ type StoreState = {
2223
toastState: ToastState,
2324
setToastState: (val: ToastState)=>void,
2425
pads: PadSearchResult|undefined,
25-
setPads: (pads: PadSearchResult)=>void
26+
setPads: (pads: PadSearchResult)=>void,
27+
installedPlugins: InstalledPlugin[],
28+
setInstalledPlugins: (plugins: InstalledPlugin[])=>void
2629
}
2730

2831

@@ -43,5 +46,7 @@ export const useStore = create<StoreState>()((set) => ({
4346
success: false
4447
},
4548
pads: undefined,
46-
setPads: (pads)=>set({pads})
49+
setPads: (pads)=>set({pads}),
50+
installedPlugins: [],
51+
setInstalledPlugins: (plugins)=>set({installedPlugins: plugins})
4752
}));

bin/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bin",
3-
"version": "2.2.5",
3+
"version": "2.2.6",
44
"description": "",
55
"main": "checkAllPads.js",
66
"directories": {
@@ -12,12 +12,12 @@
1212
"log4js": "^6.9.1",
1313
"semver": "^7.6.3",
1414
"tsx": "^4.19.1",
15-
"ueberdb2": "^5.0.2"
15+
"ueberdb2": "^5.0.6"
1616
},
1717
"devDependencies": {
18-
"@types/node": "^22.5.5",
18+
"@types/node": "^22.7.9",
1919
"@types/semver": "^7.5.8",
20-
"typescript": "^5.6.2"
20+
"typescript": "^5.6.3"
2121
},
2222
"scripts": {
2323
"makeDocs": "node --import tsx make_docs.ts",

doc/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"devDependencies": {
3-
"vitepress": "^1.3.4"
3+
"vitepress": "^1.4.1"
44
},
55
"scripts": {
66
"docs:dev": "vitepress dev",

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,6 @@
5050
"type": "git",
5151
"url": "https://github.com/ether/etherpad-lite.git"
5252
},
53-
"version": "2.2.5",
53+
"version": "2.2.6",
5454
"license": "Apache-2.0"
5555
}

0 commit comments

Comments
 (0)