diff --git a/i18n.json.REMOVED.git-id b/i18n.json.REMOVED.git-id
index cff2a35..cb8ae2d 100644
--- a/i18n.json.REMOVED.git-id
+++ b/i18n.json.REMOVED.git-id
@@ -1 +1 @@
-8c3c12af638d571917342cee642eaad476faca68
\ No newline at end of file
+f6a24778b29e3ac4ce40489a30befea649c34fe9
\ No newline at end of file
diff --git a/javascript/main.entry.js.REMOVED.git-id b/javascript/main.entry.js.REMOVED.git-id
index ebe08d1..1a138bc 100644
--- a/javascript/main.entry.js.REMOVED.git-id
+++ b/javascript/main.entry.js.REMOVED.git-id
@@ -1 +1 @@
-f0989385b264c03c690ea019a8ce9eeb8653b629
\ No newline at end of file
+eee6babe1b0f66667f5d0cc62da24707704274ea
\ No newline at end of file
diff --git a/javascript/main.entry.js.map.REMOVED.git-id b/javascript/main.entry.js.map.REMOVED.git-id
index 69546bc..fef535a 100644
--- a/javascript/main.entry.js.map.REMOVED.git-id
+++ b/javascript/main.entry.js.map.REMOVED.git-id
@@ -1 +1 @@
-f6e65e80bbbcd4e8f3d757aaa6d79e731fe9fba4
\ No newline at end of file
+94f23b71949a9379ef12a4b726fe7babe1ebb494
\ No newline at end of file
diff --git a/scripts/get_version.py b/scripts/get_version.py
new file mode 100644
index 0000000..1d1f6e4
--- /dev/null
+++ b/scripts/get_version.py
@@ -0,0 +1,84 @@
+import os
+import re
+import requests
+import subprocess
+import hashlib
+
+def get_git_commit_version():
+ extension_dir = os.path.dirname(os.path.abspath(__file__)) + '/../'
+ extension_dir = os.path.normpath(extension_dir)
+ git_path = os.path.join(extension_dir, '.git')
+ if os.path.exists(git_path):
+ try:
+ git = os.environ.get('GIT', "git")
+ if not git:
+ git = "git"
+ cmd = [git, 'rev-parse', 'HEAD']
+ commit_version = subprocess.check_output(cmd, cwd=extension_dir).decode('utf-8').strip()
+ if re.match(r'^[0-9a-f]{40}$', commit_version):
+ return commit_version
+ except Exception as e:
+ pass
+
+ try:
+ ref_path = os.path.join(git_path, 'refs', 'heads', 'main')
+ with open(ref_path, 'r') as f:
+ commit_version = f.read().strip()
+ if re.match(r'^[0-9a-f]{40}$', commit_version):
+ return commit_version
+ except Exception as e:
+ pass
+
+ return ''
+
+def _handle_versions(response, filter_update_readme=False):
+ try:
+ if response.status_code != 200:
+ return []
+ result = response.json()
+ if not result:
+ return []
+ versions = []
+ for item in result:
+ message = item['commit']['message']
+ is_update_readme = False
+ if message.lower().strip() == 'update readme.md':
+ if filter_update_readme:
+ continue
+ is_update_readme = True
+ versions.append({
+ 'version': item['sha'],
+ 'message': message,
+ 'date': item['commit']['committer']['date'],
+ 'is_update_readme': is_update_readme
+ })
+ return versions
+ except Exception as e:
+ return []
+
+def get_git_remote_versions(page=1, per_page=100, filter_update_readme=False):
+ api_urls = [
+ 'https://api.github.com/repos/physton/sd-webui-prompt-all-in-one/commits',
+ 'https://gitee.com/api/v5/repos/physton/sd-webui-prompt-all-in-one/commits'
+ ]
+
+ for api_url in api_urls:
+ try:
+ api_url += f'?page={page}&per_page={per_page}'
+ key = hashlib.md5(api_url.encode('utf-8')).hexdigest()
+ response = requests.get(api_url)
+ versions = _handle_versions(response, filter_update_readme)
+ return versions
+ except Exception as e:
+ pass
+
+ return []
+
+def get_latest_version():
+ current_version = get_git_commit_version()
+ # if not current_version:
+ # return current_version
+ versions = get_git_remote_versions(1, 10, True)
+ if len(versions) < 1:
+ return current_version
+ return versions[0]['version']
\ No newline at end of file
diff --git a/scripts/on_app_started.py b/scripts/on_app_started.py
index 4db3c69..3b72db4 100755
--- a/scripts/on_app_started.py
+++ b/scripts/on_app_started.py
@@ -18,8 +18,7 @@ from scripts.get_extra_networks import get_extra_networks
from scripts.packages import get_packages_state, install_package
from scripts.gen_openai import gen_openai
from scripts.get_lang import get_lang
-
-VERSION = '0.0.1'
+from scripts.get_version import get_git_commit_version, get_git_remote_versions, get_latest_version
try:
from modules.shared import cmd_opts
@@ -59,7 +58,16 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
@app.get("/physton_prompt/get_version")
async def _get_version():
- return {"version": VERSION}
+ return {
+ 'version': get_git_commit_version(),
+ 'latest_version': get_latest_version(),
+ }
+
+ @app.get("/physton_prompt/get_remote_versions")
+ async def _get_remote_versions(page: int = 1, per_page: int = 100):
+ return {
+ 'versions': get_git_remote_versions(page, per_page),
+ }
@app.get("/physton_prompt/get_config")
async def _get_config():
diff --git a/src/src/App.vue b/src/src/App.vue
index fc70fd7..5774a8d 100755
--- a/src/src/App.vue
+++ b/src/src/App.vue
@@ -36,6 +36,10 @@
:loras="loras"
:lycos="lycos"
:embeddings="embeddings"
+ :version="version"
+ :latest-version="latestVersion"
+ :is-latest-version="isLatestVersion"
+ @click:show-about="onShowAbout"
>
+
+
+
+
+ {{ getLang('version') }}: {{ formatVersion(version) }} + ({{ getLang('has_new_version') }}: {{ formatVersion(latestVersion) }}) +
+{{ getLang('wiki_desc') }} Wiki
+