前端优化

This commit is contained in:
ryan
2026-06-18 20:12:10 +08:00
parent cf5c2b7258
commit 676899cab0
32 changed files with 126 additions and 63 deletions
@@ -248,10 +248,10 @@ func TestSMTP(c *gin.Context) {
Password: password,
}
subject := "Wavelet SMTP Test Mail"
subject := "OpenFlare SMTP Test Mail"
body := `<h3>SMTP Mail Connection Test</h3>
<p>If you received this message, your SMTP configuration is correct and mail sending is working properly.</p>
<p>Sent from Wavelet.</p>`
<p>Sent from OpenFlare.</p>`
logs, err := mail.SendMailWithLog(c.Request.Context(), cfg, req.To, subject, body)
resp := TestSMTPResponse{
@@ -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)
}
})
@@ -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 {
@@ -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)
}
@@ -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 {
+1 -1
View File
@@ -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"
}
}
@@ -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 登录验证码', '<h3>Wavelet 登录验证</h3><p>您的登录验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿将验证码泄露给他人。</p>', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('register_email', '注册验证码邮件', 'email', 'Wavelet 注册验证码', '<h3>Wavelet 注册验证</h3><p>您的注册验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿泄露给他人。</p>', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
('login_email', '登录验证码邮件', 'email', 'OpenFlare 登录验证码', '<h3>OpenFlare 登录验证</h3><p>您的登录验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿将验证码泄露给他人。</p>', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('register_email', '注册验证码邮件', 'email', 'OpenFlare 注册验证码', '<h3>OpenFlare 注册验证</h3><p>您的注册验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿泄露给他人。</p>', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
ON CONFLICT (key) DO NOTHING;
-- +goose Down
@@ -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
@@ -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');
@@ -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 登录验证码', '<h3>Wavelet 登录验证</h3><p>您的登录验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿将验证码泄露给他人。</p>', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('register_email', '注册验证码邮件', 'email', 'Wavelet 注册验证码', '<h3>Wavelet 注册验证</h3><p>您的注册验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿泄露给他人。</p>', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
('login_email', '登录验证码邮件', 'email', 'OpenFlare 登录验证码', '<h3>OpenFlare 登录验证</h3><p>您的登录验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿将验证码泄露给他人。</p>', '用户密码登录时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('register_email', '注册验证码邮件', 'email', 'OpenFlare 注册验证码', '<h3>OpenFlare 注册验证</h3><p>您的注册验证码为:<strong>{{.Code}}</strong>,5分钟内有效,请勿泄露给他人。</p>', '用户注册时发送的验证码邮件模板,支持变量:{{.Code}}', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
ON CONFLICT (key) DO NOTHING;
-- +goose Down
@@ -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
@@ -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');
+2 -2
View File
@@ -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 仓库地址)",
},