diff --git a/.github/workflows/on_release.yml b/.github/workflows/on_release.yml
new file mode 100644
index 00000000..cc7b1c89
--- /dev/null
+++ b/.github/workflows/on_release.yml
@@ -0,0 +1,32 @@
+name: Generate Semantic Release
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+jobs:
+ release:
+ name: Release
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Entire Repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ persist-credentials: false
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ - name: Setup dependencies
+ run: |
+ npm install @semantic-release/git @semantic-release/exec --no-save
+ - name: Create Release
+ env:
+ GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+ GIT_AUTHOR_NAME: "Frappe PR Bot"
+ GIT_AUTHOR_EMAIL: "developers@frappe.io"
+ GIT_COMMITTER_NAME: "Frappe PR Bot"
+ GIT_COMMITTER_EMAIL: "developers@frappe.io"
+ run: npx semantic-release
\ No newline at end of file
diff --git a/.github/workflows/release_notes.yml b/.github/workflows/release_notes.yml
new file mode 100644
index 00000000..52698116
--- /dev/null
+++ b/.github/workflows/release_notes.yml
@@ -0,0 +1,39 @@
+# This action:
+#
+# 1. Generates release notes using github API.
+# 2. Strips unnecessary info like chore/style etc from notes.
+# 3. Updates release info.
+
+name: 'Release Notes'
+
+on:
+ workflow_dispatch:
+ inputs:
+ tag_name:
+ description: 'Tag of release like v2.0.0'
+ required: true
+ type: string
+ release:
+ types: [released]
+
+permissions:
+ contents: read
+
+jobs:
+ regen-notes:
+ name: 'Regenerate release notes'
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Update notes
+ run: |
+ NEW_NOTES=$(gh api --method POST -H "Accept: application/vnd.github+json" /repos/frappe/lms/releases/generate-notes -f tag_name=$RELEASE_TAG \
+ | jq -r '.body' \
+ | sed -E '/^\* (chore|ci|test|docs|style)/d' \
+ | sed -E 's/by @mergify //'
+ )
+ RELEASE_ID=$(gh api -H "Accept: application/vnd.github+json" /repos/frappe/lms/releases/tags/$RELEASE_TAG | jq -r '.id')
+ gh api --method PATCH -H "Accept: application/vnd.github+json" /repos/frappe/lms/releases/$RELEASE_ID -f body="$NEW_NOTES"
+ env:
+ GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+ RELEASE_TAG: ${{ github.event.inputs.tag_name || github.event.release.tag_name }}
\ No newline at end of file
diff --git a/.releaserc b/.releaserc
new file mode 100644
index 00000000..4f5437e0
--- /dev/null
+++ b/.releaserc
@@ -0,0 +1,21 @@
+{
+ "branches": ["develop"],
+ "plugins": [
+ "@semantic-release/commit-analyzer", {
+ "preset": "angular"
+ },
+ "@semantic-release/release-notes-generator",
+ [
+ "@semantic-release/exec", {
+ "prepareCmd": 'sed -ir "s/[0-9]*\.[0-9]*\.[0-9]*/${nextRelease.version}/" lms/__init__.py'
+ }
+ ],
+ [
+ "@semantic-release/git", {
+ "assets": ["lms/__init__.py"],
+ "message": "chore(release): Bumped to Version ${nextRelease.version}"
+ }
+ ],
+ "@semantic-release/github"
+ ]
+}
\ No newline at end of file
diff --git a/frappe-ui b/frappe-ui
deleted file mode 160000
index aa44431c..00000000
--- a/frappe-ui
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit aa44431c185b1e4563f2ebf6af380c7743d2cd4c
diff --git a/frontend/package.json b/frontend/package.json
index 6775773d..7935452a 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -14,10 +14,10 @@
"@editorjs/editorjs": "^2.29.0",
"@editorjs/embed": "^2.7.0",
"@editorjs/header": "^2.8.1",
- "@editorjs/image": "^2.9.0",
"@editorjs/inline-code": "^1.5.0",
"@editorjs/nested-list": "^1.4.2",
"@editorjs/paragraph": "^2.11.3",
+ "@editorjs/simple-image": "^1.6.0",
"chart.js": "^4.4.1",
"dayjs": "^1.11.6",
"feather-icons": "^4.28.0",
diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue
index dbeceba4..49f33da6 100644
--- a/frontend/src/components/AppSidebar.vue
+++ b/frontend/src/components/AppSidebar.vue
@@ -18,7 +18,7 @@
- {{ __('Web Pages') }}
+ {{ __('More') }}