From 676899cab0548ecaa3b904d5d9b29a852da30fd2 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 18 Jun 2026 20:12:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Wavelet/.env.example | 8 ++--- Wavelet/config.example.yaml | 6 ++-- Wavelet/frontend/.env.example | 2 +- Wavelet/frontend/app/(docs)/docs/api/page.tsx | 2 +- .../app/(docs)/docs/how-to-use/page.tsx | 2 +- .../files/components/storage-config-tab.tsx | 2 +- Wavelet/frontend/app/layout.tsx | 4 +-- .../frontend/components/auth/auth-shell.tsx | 2 +- .../frontend/components/common/docs/api.tsx | 2 +- .../common/docs/legal-page-layout.tsx | 2 +- .../components/common/settings/system-tab.tsx | 2 +- .../components/common/settings/templates.tsx | 2 +- .../components/home/footer-section.tsx | 14 ++++----- .../components/providers/title-updater.tsx | 2 +- .../services/db-manage/db-manage.service.ts | 2 +- Wavelet/frontend/package.json | 2 +- .../apps/admin/system_config/routers.go | 4 +-- .../apps/admin/system_config/routers_test.go | 4 +-- Wavelet/internal/apps/admin/updater/logics.go | 4 +-- .../apps/admin/updater/logics_test.go | 10 +++--- .../apps/config/system_config_cache_test.go | 8 ++--- Wavelet/internal/config/config.go | 2 +- .../postgres/202606090001_initial_schema.sql | 8 ++--- ..._add_update_upstream_repository_config.sql | 2 +- ...02606200001_rebrand_openflare_defaults.sql | 31 +++++++++++++++++++ .../sqlite/202606090001_initial_schema.sql | 8 ++--- ..._add_update_upstream_repository_config.sql | 2 +- ...02606200001_rebrand_openflare_defaults.sql | 31 +++++++++++++++++++ Wavelet/internal/testhelper/test_helper.go | 4 +-- Wavelet/main.go | 10 +++--- Wavelet/pkg/trace/trace.go | 4 +-- docs/changelog/index.md | 1 + 32 files changed, 126 insertions(+), 63 deletions(-) create mode 100644 Wavelet/internal/db/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql create mode 100644 Wavelet/internal/db/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql diff --git a/Wavelet/.env.example b/Wavelet/.env.example index 2ccbb2aa..ab495817 100644 --- a/Wavelet/.env.example +++ b/Wavelet/.env.example @@ -1,5 +1,5 @@ # ────────────────────────────────────────────────────────────────────────────── -# wavelet — 环境变量配置模板 +# openflare — 环境变量配置模板 # 复制此文件为 .env 并填入实际值: cp .env.example .env # 环境变量优先级高于 config.yaml / config.docker.yaml # ────────────────────────────────────────────────────────────────────────────── @@ -27,7 +27,7 @@ APP_ADDR=:3000 APP_NODE_ID=1 APP_API_PREFIX=/api # APP_GRACEFUL_SHUTDOWN_TIMEOUT=30 -APP_SESSION_COOKIE_NAME=wavelet_session_id +APP_SESSION_COOKIE_NAME=openflare_session_id APP_SESSION_SECRET=change-me-to-a-random-string-in-production # APP_SESSION_DOMAIN= APP_SESSION_AGE=86400 @@ -80,8 +80,8 @@ OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4317 OTEL_EXPORTER_OTLP_INSECURE=true # 设为 0 关闭 tracing;本地 Jaeger 调试建议设为 1.0 OTEL_SAMPLING_RATE=1.0 -# 全局 Tracer 命名空间,默认为 github.com/Rain-kl/Wavelet -# OTEL_TRACER_NAME=github.com/Rain-kl/Wavelet +# 全局 Tracer 命名空间,默认为 github.com/Rain-kl/OpenFlare +# OTEL_TRACER_NAME=github.com/Rain-kl/OpenFlare # ─── S3 兼容存储(可选,默认关闭)────────────────────────────────────────── # S3_ENABLED=false diff --git a/Wavelet/config.example.yaml b/Wavelet/config.example.yaml index 4018224e..111a778d 100644 --- a/Wavelet/config.example.yaml +++ b/Wavelet/config.example.yaml @@ -1,4 +1,4 @@ -# wavelet — Full-Stack Boilerplate Config +# openflare — Platform Config # Copy this file to config.yaml and fill in your values. # Fields marked with <...> are required; others have sensible defaults. @@ -9,7 +9,7 @@ app: addr: ":3000" node_id: 1 # Snowflake node ID (0-1023). Must be unique per instance. graceful_shutdown_timeout: 30 - session_cookie_name: "wavelet_session_id" # Change to something unique before deploy + session_cookie_name: "openflare_session_id" # Change to something unique before deploy session_secret: "" # Cannot be changed after first start session_domain: "" # e.g. ".yourdomain.com" session_age: 86400 # Session lifetime in seconds (default: 24h) @@ -95,7 +95,7 @@ worker: # ─── OpenTelemetry Tracing ────────────────────────────────────────────────────── otel: sampling_rate: 0.0 # Trace sampling rate (0.0 – 1.0) - tracer_name: "github.com/Rain-kl/Wavelet" # Global tracer instrumentation name + tracer_name: "github.com/Rain-kl/OpenFlare" # Global tracer instrumentation name # ─── ClickHouse (optional) ────────────────────────────────────────────────────── diff --git a/Wavelet/frontend/.env.example b/Wavelet/frontend/.env.example index d5c6cc4a..6afe57c8 100644 --- a/Wavelet/frontend/.env.example +++ b/Wavelet/frontend/.env.example @@ -5,7 +5,7 @@ WAVELET_FRONTEND_URL=http://localhost:3000 WAVELET_BACKEND_URL=http://localhost:3000 # Session Cookie -WAVELET_SESSION_COOKIE_NAME=wavelet_session_id +WAVELET_SESSION_COOKIE_NAME=openflare_session_id # 环境 NODE_ENV=production \ No newline at end of file diff --git a/Wavelet/frontend/app/(docs)/docs/api/page.tsx b/Wavelet/frontend/app/(docs)/docs/api/page.tsx index 3daac034..0086ee66 100644 --- a/Wavelet/frontend/app/(docs)/docs/api/page.tsx +++ b/Wavelet/frontend/app/(docs)/docs/api/page.tsx @@ -9,7 +9,7 @@ export default function ApiDocPage() { sections={apiSections} description={

- Wavelet 提供简单、强大的 API 接口,支持多种编程语言和开发环境。通过标准化的 RESTful 接口,您可以轻松地与后端服务进行集成与二次开发。 + OpenFlare 提供简单、强大的 API 接口,支持多种编程语言和开发环境。通过标准化的 RESTful 接口,您可以轻松地与后端服务进行集成与二次开发。

} /> diff --git a/Wavelet/frontend/app/(docs)/docs/how-to-use/page.tsx b/Wavelet/frontend/app/(docs)/docs/how-to-use/page.tsx index 27e87ba5..b4495018 100644 --- a/Wavelet/frontend/app/(docs)/docs/how-to-use/page.tsx +++ b/Wavelet/frontend/app/(docs)/docs/how-to-use/page.tsx @@ -10,7 +10,7 @@ export default function HowToUsePage() { sections={howToUseSections} description={

- 欢迎使用 Wavelet 脚手架系统。本文档将引导您快速了解平台的核心组件、角色权限设计及二次开发流程,帮助您快速上手开发。 + 欢迎使用 OpenFlare 管理平台。本文档将引导您快速了解平台的核心组件、角色权限设计及二次开发流程,帮助您快速上手开发。

} /> diff --git a/Wavelet/frontend/app/(main)/admin/files/components/storage-config-tab.tsx b/Wavelet/frontend/app/(main)/admin/files/components/storage-config-tab.tsx index 29642f35..77ed5148 100644 --- a/Wavelet/frontend/app/(main)/admin/files/components/storage-config-tab.tsx +++ b/Wavelet/frontend/app/(main)/admin/files/components/storage-config-tab.tsx @@ -306,7 +306,7 @@ export function StorageConfigTab() { setConfig({...config, webdav: {...config.webdav, username}})} /> setConfig({...config, webdav: {...config.webdav, password}})} />
- setConfig({...config, webdav: {...config.webdav, base_path}})} /> + setConfig({...config, webdav: {...config.webdav, base_path}})} />
)} diff --git a/Wavelet/frontend/app/layout.tsx b/Wavelet/frontend/app/layout.tsx index 8c02df74..e5eea564 100644 --- a/Wavelet/frontend/app/layout.tsx +++ b/Wavelet/frontend/app/layout.tsx @@ -11,8 +11,8 @@ import {RobotsMeta} from "@/components/layout/robots-meta"; import "./globals.css"; export const metadata: Metadata = { - title: "Wavelet Platform", - description: "通用二次开发标准范式平台", + title: "OpenFlare", + description: "OpenFlare 边缘节点与反向代理管理平台", }; export default function RootLayout({ diff --git a/Wavelet/frontend/components/auth/auth-shell.tsx b/Wavelet/frontend/components/auth/auth-shell.tsx index cfbdb3b5..88517f1c 100644 --- a/Wavelet/frontend/components/auth/auth-shell.tsx +++ b/Wavelet/frontend/components/auth/auth-shell.tsx @@ -46,7 +46,7 @@ interface AuthHeadingProps { export function AuthHeading({ title, description, - siteName = "Wavelet", + siteName = "OpenFlare", }: AuthHeadingProps) { return (
diff --git a/Wavelet/frontend/components/common/docs/api.tsx b/Wavelet/frontend/components/common/docs/api.tsx index c608d6d7..1e2c3e2d 100644 --- a/Wavelet/frontend/components/common/docs/api.tsx +++ b/Wavelet/frontend/components/common/docs/api.tsx @@ -241,7 +241,7 @@ export const apiSections: PolicySection[] = [ code={`{ "error_msg": "", "data": { - "site_name": "Wavelet", + "site_name": "OpenFlare", "registration_enabled": "true", "password_login_enabled": "true", "password_register_enabled": "true", diff --git a/Wavelet/frontend/components/common/docs/legal-page-layout.tsx b/Wavelet/frontend/components/common/docs/legal-page-layout.tsx index a0e1fcca..37455d98 100644 --- a/Wavelet/frontend/components/common/docs/legal-page-layout.tsx +++ b/Wavelet/frontend/components/common/docs/legal-page-layout.tsx @@ -395,7 +395,7 @@ export function LegalPageLayout({ 对这些内容有疑问?

- + diff --git a/Wavelet/frontend/components/common/settings/system-tab.tsx b/Wavelet/frontend/components/common/settings/system-tab.tsx index c276b7a7..581951a2 100644 --- a/Wavelet/frontend/components/common/settings/system-tab.tsx +++ b/Wavelet/frontend/components/common/settings/system-tab.tsx @@ -216,7 +216,7 @@ export function SystemTab({ configs, systemConfigsQuery }: SystemTabProps) { type="text" value={siteName} onChange={(e) => setSiteName(e.target.value)} - placeholder="例如: Wavelet" + placeholder="例如: OpenFlare" className="border-dashed bg-card text-xs" />

diff --git a/Wavelet/frontend/components/common/settings/templates.tsx b/Wavelet/frontend/components/common/settings/templates.tsx index 85f92f44..c1721142 100644 --- a/Wavelet/frontend/components/common/settings/templates.tsx +++ b/Wavelet/frontend/components/common/settings/templates.tsx @@ -303,7 +303,7 @@ export function TemplatesManager() { type="text" value={subject} onChange={(e) => setSubject(e.target.value)} - placeholder="例如: Wavelet 登录验证码" + placeholder="例如: OpenFlare 登录验证码" className="bg-card border-dashed text-xs" />

diff --git a/Wavelet/frontend/components/home/footer-section.tsx b/Wavelet/frontend/components/home/footer-section.tsx index 3d462f33..a61ae08d 100644 --- a/Wavelet/frontend/components/home/footer-section.tsx +++ b/Wavelet/frontend/components/home/footer-section.tsx @@ -20,15 +20,15 @@ export const FooterSection = React.memo(function FooterSection({ className }: Fo

- MP + OF
- Modern Platform + OpenFlare

- 通用的、现代化的后台管理系统脚手架。基于 Go + React 构建,开箱即用、完整基建、极易扩展。 + 开源边缘节点与反向代理管理平台。基于 Go + React 构建,统一管理 OpenResty 节点、网站规则与 WAF 配置。

- +
@@ -45,15 +45,15 @@ export const FooterSection = React.memo(function FooterSection({ className }: Fo
  • 快速开始
  • API 文档
  • -
  • 源代码
  • +
  • 源代码

社区

    -
  • GitHub Issues
  • -
  • 讨论
  • +
  • GitHub Issues
  • +
  • 讨论
diff --git a/Wavelet/frontend/components/providers/title-updater.tsx b/Wavelet/frontend/components/providers/title-updater.tsx index d33429ab..cfbc5056 100644 --- a/Wavelet/frontend/components/providers/title-updater.tsx +++ b/Wavelet/frontend/components/providers/title-updater.tsx @@ -13,7 +13,7 @@ export function SiteTitleUpdater() { }) useEffect(() => { - const siteName = publicConfigQuery.data?.site_name || "Wavelet Platform" + const siteName = publicConfigQuery.data?.site_name || "OpenFlare" // Determine the page suffix based on path let suffix = "" diff --git a/Wavelet/frontend/lib/services/db-manage/db-manage.service.ts b/Wavelet/frontend/lib/services/db-manage/db-manage.service.ts index 7dc6ec3a..c393aee0 100644 --- a/Wavelet/frontend/lib/services/db-manage/db-manage.service.ts +++ b/Wavelet/frontend/lib/services/db-manage/db-manage.service.ts @@ -52,7 +52,7 @@ export class DbManageService extends BaseService { } as InternalAxiosRequestConfig); const disposition = response.headers['content-disposition'] as string | undefined; - let filename = 'wavelet_export'; + let filename = 'openflare_export'; if (disposition) { const match = disposition.match(/filename="?([^";]+)"?/); if (match) filename = match[1]; diff --git a/Wavelet/frontend/package.json b/Wavelet/frontend/package.json index 0abcbc51..7fa88df2 100644 --- a/Wavelet/frontend/package.json +++ b/Wavelet/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "wavelet", + "name": "openflare", "version": "dev", "private": true, "scripts": { diff --git a/Wavelet/internal/apps/admin/system_config/routers.go b/Wavelet/internal/apps/admin/system_config/routers.go index 336faa47..996f685b 100644 --- a/Wavelet/internal/apps/admin/system_config/routers.go +++ b/Wavelet/internal/apps/admin/system_config/routers.go @@ -248,10 +248,10 @@ func TestSMTP(c *gin.Context) { Password: password, } - subject := "Wavelet SMTP Test Mail" + subject := "OpenFlare SMTP Test Mail" body := `

SMTP Mail Connection Test

If you received this message, your SMTP configuration is correct and mail sending is working properly.

-

Sent from Wavelet.

` +

Sent from OpenFlare.

` logs, err := mail.SendMailWithLog(c.Request.Context(), cfg, req.To, subject, body) resp := TestSMTPResponse{ diff --git a/Wavelet/internal/apps/admin/system_config/routers_test.go b/Wavelet/internal/apps/admin/system_config/routers_test.go index f268faa8..7ca51ccd 100644 --- a/Wavelet/internal/apps/admin/system_config/routers_test.go +++ b/Wavelet/internal/apps/admin/system_config/routers_test.go @@ -197,8 +197,8 @@ func TestGetSystemConfig(t *testing.T) { var cfg model.SystemConfig _ = json.Unmarshal(dataBytes, &cfg) - if cfg.Value != "Wavelet" { - t.Errorf("expected 'Wavelet', got '%s'", cfg.Value) + if cfg.Value != "OpenFlare" { + t.Errorf("expected 'OpenFlare', got '%s'", cfg.Value) } }) diff --git a/Wavelet/internal/apps/admin/updater/logics.go b/Wavelet/internal/apps/admin/updater/logics.go index 8a5ac9d4..e7f3ce18 100644 --- a/Wavelet/internal/apps/admin/updater/logics.go +++ b/Wavelet/internal/apps/admin/updater/logics.go @@ -196,7 +196,7 @@ func (m *manager) fetchRelease(ctx context.Context, repository string) (githubRe return githubRelease{}, releaseAsset{}, fmt.Errorf("%s: %w", errReleaseRequestFailed, err) } req.Header.Set("Accept", "application/vnd.github+json") - req.Header.Set("User-Agent", "Wavelet-Updater") + req.Header.Set("User-Agent", "OpenFlare-Updater") req.Header.Set("X-GitHub-Api-Version", "2022-11-28") resp, err := m.client.Do(req) @@ -275,7 +275,7 @@ func downloadArchive(ctx context.Context, client releaseClient, asset releaseAss if err != nil { return fmt.Errorf("创建升级下载请求失败: %w", err) } - req.Header.Set("User-Agent", "Wavelet-Updater") + req.Header.Set("User-Agent", "OpenFlare-Updater") resp, err := client.Do(req) if err != nil { diff --git a/Wavelet/internal/apps/admin/updater/logics_test.go b/Wavelet/internal/apps/admin/updater/logics_test.go index b6fe09f0..0e74ce03 100644 --- a/Wavelet/internal/apps/admin/updater/logics_test.go +++ b/Wavelet/internal/apps/admin/updater/logics_test.go @@ -16,10 +16,10 @@ func TestParseRepository(t *testing.T) { want string wantErr bool }{ - {name: "short form", input: "Rain-kl/Wavelet", want: "Rain-kl/Wavelet"}, - {name: "GitHub URL", input: "https://github.com/Rain-kl/Wavelet.git", want: "Rain-kl/Wavelet"}, - {name: "unsupported host", input: "https://example.com/Rain-kl/Wavelet", wantErr: true}, - {name: "missing owner", input: "Wavelet", wantErr: true}, + {name: "short form", input: "Rain-kl/OpenFlare", want: "Rain-kl/OpenFlare"}, + {name: "GitHub URL", input: "https://github.com/Rain-kl/OpenFlare.git", want: "Rain-kl/OpenFlare"}, + {name: "unsupported host", input: "https://example.com/Rain-kl/OpenFlare", wantErr: true}, + {name: "missing owner", input: "OpenFlare", wantErr: true}, } for _, tt := range tests { @@ -67,7 +67,7 @@ func TestSelectLatestRelease(t *testing.T) { }, } - release, asset, err := selectLatestRelease("Rain-kl/Wavelet", releases) + release, asset, err := selectLatestRelease("Rain-kl/OpenFlare", releases) if err != nil { t.Fatalf("selectLatestRelease() error = %v", err) } diff --git a/Wavelet/internal/apps/config/system_config_cache_test.go b/Wavelet/internal/apps/config/system_config_cache_test.go index 735ec1ef..5841311c 100644 --- a/Wavelet/internal/apps/config/system_config_cache_test.go +++ b/Wavelet/internal/apps/config/system_config_cache_test.go @@ -30,8 +30,8 @@ func TestSystemConfigRAMCacheServesUntilInvalidated(t *testing.T) { if err != nil { t.Fatalf("GetSystemConfigByKey(site_name) warm error = %v", err) } - if warm.Value != "Wavelet" { - t.Fatalf("GetSystemConfigByKey(site_name).Value = %q, want %q", warm.Value, "Wavelet") + if warm.Value != "OpenFlare" { + t.Fatalf("GetSystemConfigByKey(site_name).Value = %q, want %q", warm.Value, "OpenFlare") } if err := dbConn.Model(&model.SystemConfig{}). @@ -47,8 +47,8 @@ func TestSystemConfigRAMCacheServesUntilInvalidated(t *testing.T) { if err != nil { t.Fatalf("GetSystemConfigByKey(site_name) cached error = %v", err) } - if cached.Value != "Wavelet" { - t.Fatalf("GetSystemConfigByKey(site_name).Value = %q, want stale RAM value %q", cached.Value, "Wavelet") + if cached.Value != "OpenFlare" { + t.Fatalf("GetSystemConfigByKey(site_name).Value = %q, want stale RAM value %q", cached.Value, "OpenFlare") } if err := repository.InvalidateSystemConfigCache(ctx, model.ConfigKeySiteName); err != nil { diff --git a/Wavelet/internal/config/config.go b/Wavelet/internal/config/config.go index 1fa423be..f1ee67db 100644 --- a/Wavelet/internal/config/config.go +++ b/Wavelet/internal/config/config.go @@ -113,7 +113,7 @@ func applyDefaults(c *configModel) { c.App.SessionAge = 86400 } if c.Otel.TracerName == "" { - c.Otel.TracerName = "github.com/Rain-kl/Wavelet" + c.Otel.TracerName = "github.com/Rain-kl/OpenFlare" } } diff --git a/Wavelet/internal/db/migrator/goose/postgres/202606090001_initial_schema.sql b/Wavelet/internal/db/migrator/goose/postgres/202606090001_initial_schema.sql index 5628860d..32191999 100644 --- a/Wavelet/internal/db/migrator/goose/postgres/202606090001_initial_schema.sql +++ b/Wavelet/internal/db/migrator/goose/postgres/202606090001_initial_schema.sql @@ -150,7 +150,7 @@ INSERT INTO system_configs (key, value, type, visibility, description, created_a ('smtp_username', '', 'system', 0, 'SMTP 账户(如 sender@example.com)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('smtp_password', '', 'system', 0, 'SMTP 访问凭证(授权码/密码)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('upload_allowed_extensions', 'jpg,png,webp', 'system', 1, '允许上传的图片扩展名(逗号分隔)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - ('site_name', 'Wavelet', 'system', 1, '系统平台的展示名称', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + ('site_name', 'OpenFlare', 'system', 1, '系统平台的展示名称', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('password_login_enabled', 'true', 'system', 1, '是否允许使用账号密码登录', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('registration_enabled', 'true', 'system', 1, '控制普通用户是否可以自主注册(true/false)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('password_register_enabled', 'true', 'system', 1, '是否允许通过密码创建本地账号', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), @@ -160,7 +160,7 @@ INSERT INTO system_configs (key, value, type, visibility, description, created_a ('email_register_verification_enabled', 'false', 'system', 1, '是否开启邮箱注册验证(true/false)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('menu_display_config', '{}', 'system', 1, '目录显示配置(JSON 字符串,格式为 {url: enabled})', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('search_engine_indexing_enabled', 'false', 'system', 1, '是否允许搜索引擎爬取/检索该站点(true/false)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - ('update_upstream_repository', 'Rain-kl/Wavelet', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + ('update_upstream_repository', 'Rain-kl/OpenFlare', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('storage_config', '{"driver":"local","local":{"root":"."},"s3":{"region":"us-east-1"},"r2":{"region":"auto"},"minio":{"region":"us-east-1","path_style":true},"oss":{},"webdav":{}}', 'system', 0, '文件存储驱动及连接配置(JSON)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON CONFLICT (key) DO NOTHING; @@ -169,8 +169,8 @@ VALUES (1, 'admin', '12345678', 'Administrator', '', TRUE, TRUE, CURRENT_TIMESTA ON CONFLICT (username) DO NOTHING; INSERT INTO templates (key, name, type, subject, content, description, is_system, created_at, updated_at) VALUES - ('login_email', '登录验证码邮件', 'email', 'Wavelet 登录验证码', '

Wavelet 登录验证

您的登录验证码为:{{.Code}},5分钟内有效,请勿将验证码泄露给他人。

', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - ('register_email', '注册验证码邮件', 'email', 'Wavelet 注册验证码', '

Wavelet 注册验证

您的注册验证码为:{{.Code}},5分钟内有效,请勿泄露给他人。

', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) + ('login_email', '登录验证码邮件', 'email', 'OpenFlare 登录验证码', '

OpenFlare 登录验证

您的登录验证码为:{{.Code}},5分钟内有效,请勿将验证码泄露给他人。

', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + ('register_email', '注册验证码邮件', 'email', 'OpenFlare 注册验证码', '

OpenFlare 注册验证

您的注册验证码为:{{.Code}},5分钟内有效,请勿泄露给他人。

', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON CONFLICT (key) DO NOTHING; -- +goose Down diff --git a/Wavelet/internal/db/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql b/Wavelet/internal/db/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql index 19c4f73d..8ddb1f8c 100644 --- a/Wavelet/internal/db/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql +++ b/Wavelet/internal/db/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql @@ -1,6 +1,6 @@ -- +goose Up INSERT INTO w_system_configs (key, value, type, visibility, description, created_at, updated_at) -VALUES ('update_upstream_repository', 'Rain-kl/Wavelet', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) +VALUES ('update_upstream_repository', 'Rain-kl/OpenFlare', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON CONFLICT (key) DO NOTHING; -- +goose Down diff --git a/Wavelet/internal/db/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql b/Wavelet/internal/db/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql new file mode 100644 index 00000000..1de73272 --- /dev/null +++ b/Wavelet/internal/db/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql @@ -0,0 +1,31 @@ +-- +goose Up +UPDATE w_system_configs +SET value = 'OpenFlare', updated_at = CURRENT_TIMESTAMP +WHERE key = 'site_name' AND value = 'Wavelet'; + +UPDATE w_system_configs +SET value = 'Rain-kl/OpenFlare', updated_at = CURRENT_TIMESTAMP +WHERE key = 'update_upstream_repository' AND value = 'Rain-kl/Wavelet'; + +UPDATE w_templates +SET + subject = REPLACE(subject, 'Wavelet', 'OpenFlare'), + content = REPLACE(content, 'Wavelet', 'OpenFlare'), + updated_at = CURRENT_TIMESTAMP +WHERE key IN ('login_email', 'register_email'); + +-- +goose Down +UPDATE w_system_configs +SET value = 'Wavelet', updated_at = CURRENT_TIMESTAMP +WHERE key = 'site_name' AND value = 'OpenFlare'; + +UPDATE w_system_configs +SET value = 'Rain-kl/Wavelet', updated_at = CURRENT_TIMESTAMP +WHERE key = 'update_upstream_repository' AND value = 'Rain-kl/OpenFlare'; + +UPDATE w_templates +SET + subject = REPLACE(subject, 'OpenFlare', 'Wavelet'), + content = REPLACE(content, 'OpenFlare', 'Wavelet'), + updated_at = CURRENT_TIMESTAMP +WHERE key IN ('login_email', 'register_email'); \ No newline at end of file diff --git a/Wavelet/internal/db/migrator/goose/sqlite/202606090001_initial_schema.sql b/Wavelet/internal/db/migrator/goose/sqlite/202606090001_initial_schema.sql index c54b5caa..8e77091a 100644 --- a/Wavelet/internal/db/migrator/goose/sqlite/202606090001_initial_schema.sql +++ b/Wavelet/internal/db/migrator/goose/sqlite/202606090001_initial_schema.sql @@ -150,7 +150,7 @@ INSERT INTO system_configs (key, value, type, visibility, description, created_a ('smtp_username', '', 'system', 0, 'SMTP 账户(如 sender@example.com)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('smtp_password', '', 'system', 0, 'SMTP 访问凭证(授权码/密码)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('upload_allowed_extensions', 'jpg,png,webp', 'system', 1, '允许上传的图片扩展名(逗号分隔)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - ('site_name', 'Wavelet', 'system', 1, '系统平台的展示名称', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + ('site_name', 'OpenFlare', 'system', 1, '系统平台的展示名称', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('password_login_enabled', 'true', 'system', 1, '是否允许使用账号密码登录', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('registration_enabled', 'true', 'system', 1, '控制普通用户是否可以自主注册(true/false)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('password_register_enabled', 'true', 'system', 1, '是否允许通过密码创建本地账号', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), @@ -160,7 +160,7 @@ INSERT INTO system_configs (key, value, type, visibility, description, created_a ('email_register_verification_enabled', 'false', 'system', 1, '是否开启邮箱注册验证(true/false)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('menu_display_config', '{}', 'system', 1, '目录显示配置(JSON 字符串,格式为 {url: enabled})', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('search_engine_indexing_enabled', 'false', 'system', 1, '是否允许搜索引擎爬取/检索该站点(true/false)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - ('update_upstream_repository', 'Rain-kl/Wavelet', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + ('update_upstream_repository', 'Rain-kl/OpenFlare', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), ('storage_config', '{"driver":"local","local":{"root":"."},"s3":{"region":"us-east-1"},"r2":{"region":"auto"},"minio":{"region":"us-east-1","path_style":true},"oss":{},"webdav":{}}', 'system', 0, '文件存储驱动及连接配置(JSON)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON CONFLICT (key) DO NOTHING; @@ -169,8 +169,8 @@ VALUES (1, 'admin', '12345678', 'Administrator', '', TRUE, TRUE, CURRENT_TIMESTA ON CONFLICT (username) DO NOTHING; INSERT INTO templates (key, name, type, subject, content, description, is_system, created_at, updated_at) VALUES - ('login_email', '登录验证码邮件', 'email', 'Wavelet 登录验证码', '

Wavelet 登录验证

您的登录验证码为:{{.Code}},5分钟内有效,请勿将验证码泄露给他人。

', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - ('register_email', '注册验证码邮件', 'email', 'Wavelet 注册验证码', '

Wavelet 注册验证

您的注册验证码为:{{.Code}},5分钟内有效,请勿泄露给他人。

', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) + ('login_email', '登录验证码邮件', 'email', 'OpenFlare 登录验证码', '

OpenFlare 登录验证

您的登录验证码为:{{.Code}},5分钟内有效,请勿将验证码泄露给他人。

', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + ('register_email', '注册验证码邮件', 'email', 'OpenFlare 注册验证码', '

OpenFlare 注册验证

您的注册验证码为:{{.Code}},5分钟内有效,请勿泄露给他人。

', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON CONFLICT (key) DO NOTHING; -- +goose Down diff --git a/Wavelet/internal/db/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql b/Wavelet/internal/db/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql index 19c4f73d..8ddb1f8c 100644 --- a/Wavelet/internal/db/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql +++ b/Wavelet/internal/db/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql @@ -1,6 +1,6 @@ -- +goose Up INSERT INTO w_system_configs (key, value, type, visibility, description, created_at, updated_at) -VALUES ('update_upstream_repository', 'Rain-kl/Wavelet', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) +VALUES ('update_upstream_repository', 'Rain-kl/OpenFlare', 'system', 0, 'GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON CONFLICT (key) DO NOTHING; -- +goose Down diff --git a/Wavelet/internal/db/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql b/Wavelet/internal/db/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql new file mode 100644 index 00000000..1de73272 --- /dev/null +++ b/Wavelet/internal/db/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql @@ -0,0 +1,31 @@ +-- +goose Up +UPDATE w_system_configs +SET value = 'OpenFlare', updated_at = CURRENT_TIMESTAMP +WHERE key = 'site_name' AND value = 'Wavelet'; + +UPDATE w_system_configs +SET value = 'Rain-kl/OpenFlare', updated_at = CURRENT_TIMESTAMP +WHERE key = 'update_upstream_repository' AND value = 'Rain-kl/Wavelet'; + +UPDATE w_templates +SET + subject = REPLACE(subject, 'Wavelet', 'OpenFlare'), + content = REPLACE(content, 'Wavelet', 'OpenFlare'), + updated_at = CURRENT_TIMESTAMP +WHERE key IN ('login_email', 'register_email'); + +-- +goose Down +UPDATE w_system_configs +SET value = 'Wavelet', updated_at = CURRENT_TIMESTAMP +WHERE key = 'site_name' AND value = 'OpenFlare'; + +UPDATE w_system_configs +SET value = 'Rain-kl/Wavelet', updated_at = CURRENT_TIMESTAMP +WHERE key = 'update_upstream_repository' AND value = 'Rain-kl/OpenFlare'; + +UPDATE w_templates +SET + subject = REPLACE(subject, 'OpenFlare', 'Wavelet'), + content = REPLACE(content, 'OpenFlare', 'Wavelet'), + updated_at = CURRENT_TIMESTAMP +WHERE key IN ('login_email', 'register_email'); \ No newline at end of file diff --git a/Wavelet/internal/testhelper/test_helper.go b/Wavelet/internal/testhelper/test_helper.go index c1b0fdad..62530bba 100644 --- a/Wavelet/internal/testhelper/test_helper.go +++ b/Wavelet/internal/testhelper/test_helper.go @@ -98,7 +98,7 @@ func getSeedConfigsPart1() []model.SystemConfig { }, { Key: model.ConfigKeySiteName, - Value: "Wavelet", + Value: "OpenFlare", Type: configTypeSystem, Description: "系统平台的展示名称", }, @@ -265,7 +265,7 @@ func getSeedConfigsPart2() []model.SystemConfig { }, { Key: model.ConfigKeyUpdateUpstreamRepository, - Value: "Rain-kl/Wavelet", + Value: "Rain-kl/OpenFlare", Type: configTypeSystem, Description: "GitHub Actions Release 上游仓库(owner/repo 或 GitHub 仓库地址)", }, diff --git a/Wavelet/main.go b/Wavelet/main.go index 47fc90c6..deddacd5 100644 --- a/Wavelet/main.go +++ b/Wavelet/main.go @@ -1,16 +1,16 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -// Package main 是 Wavelet 平台的程序入口 +// Package main 是 OpenFlare 平台的程序入口 package main import "github.com/Rain-kl/Wavelet/internal/cmd" -// @title Wavelet API +// @title OpenFlare API // @version 1.0.0 -// @description Wavelet 平台后端 API,提供用户认证、系统配置、任务调度等通用功能。 -// @contact.name Wavelet -// @contact.url https://github.com/Rain-kl/Wavelet +// @description OpenFlare 平台后端 API,提供用户认证、系统配置、任务调度与边缘节点管理能力。 +// @contact.name OpenFlare +// @contact.url https://github.com/Rain-kl/OpenFlare // @license.name Apache 2.0 // @license.url http://www.apache.org/licenses/LICENSE-2.0.html // @BasePath / diff --git a/Wavelet/pkg/trace/trace.go b/Wavelet/pkg/trace/trace.go index b85c5c86..9586e49c 100644 --- a/Wavelet/pkg/trace/trace.go +++ b/Wavelet/pkg/trace/trace.go @@ -22,7 +22,7 @@ func init() { otel.SetTextMapPropagator(prop) // 初始化 Tracer 实例为 No-op 默认以避免未初始化前或测试环境崩溃 - Tracer = otel.GetTracerProvider().Tracer("github.com/Rain-kl/Wavelet") + Tracer = otel.GetTracerProvider().Tracer("github.com/Rain-kl/OpenFlare") } // Config 链路追踪配置 @@ -44,7 +44,7 @@ func Init(cfg Config) { // 更新 Tracer tracerName := cfg.TracerName if tracerName == "" { - tracerName = "github.com/Rain-kl/Wavelet" + tracerName = "github.com/Rain-kl/OpenFlare" } Tracer = tracerProvider.Tracer(tracerName) } diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 27267afa..e85cb281 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -64,6 +64,7 @@ sidebar: false ### 变更 - 移除 Wavelet 顶栏 OpenFlare 服务端版本入口按钮;版本升级能力保留在 Admin 设置 OpenFlare 运维 Tab。 +- 将 Wavelet 默认上游仓库调整为 `Rain-kl/OpenFlare`,站点名称、邮件模板、前端默认标题与页脚品牌统一初始化为 OpenFlare;新增 goose 迁移回填既有环境的旧 Wavelet 默认值。 ## [v2.3.4] - 2026-06-17