release infra: build scripts, Firefox signing, plugin fixes

- .gitignore: release/, .env, *.xpi, node_modules/
- .env.example: template for AMO credentials
- extension-firefox/package.json: web-ext scripts (lint, sign)
- extension-firefox/manifest.json: gecko.id + update_url + data_collection_permissions
- scripts/build.sh: renamed binaries (verstak, verstak-server), release target
- scripts/sign-firefox-xpi.sh: AMO signing with --self-hosted
- scripts/release-firefox-xpi.sh: signed XPI + updates.json generation
- scripts/release.sh: full release pipeline (DEB/RPM/checksums/git tag)
- VERSION: 0.1.0
- README.md: Firefox extension & release sections

Plugin fixes:
- internal/core/plugins/manager.go: auto-create .verstak/plugins/ dir
- frontend/src/lib/SettingsSidebar.svelte: remove 'plugins' from disabled + active left border
- frontend/src/lib/SettingsPlugins.svelte: force ListPlugins refresh on toggle
- frontend/src/lib/SettingsWindow.svelte: onPluginToggle callback
- frontend/src/App.svelte: refreshSystemViews on plugin toggle
- frontend/src/lib/CalendarPluginPage.svelte: visible error icon
This commit is contained in:
2026-06-08 11:07:29 +08:00
parent 3b79754f45
commit b1d1defebe
22 changed files with 4792 additions and 30 deletions
+7 -1
View File
@@ -110,10 +110,16 @@ func NewManager(vaultRoot string) *Manager {
// Active/Enabled are always false after Discover — call SyncConfig + InitRuntimes to activate.
func (m *Manager) Discover() {
pluginsDir := filepath.Join(m.vaultRoot, ".verstak", "plugins")
// Ensure plugins directory exists
if err := os.MkdirAll(pluginsDir, 0o750); err != nil {
log.Printf("[plugins] failed to create plugins dir: %v", err)
m.plugins = nil
return
}
entries, err := os.ReadDir(pluginsDir)
if err != nil {
m.plugins = nil
return // no plugins dir — OK
return
}
newPlugins := make([]Plugin, 0, len(entries))