fix: исправление 6 пунктов из ревью

Critical:
- bridge: AutoGenPort=false по умолчанию, не генерируем secret если пустой
  → extension и bridge совпадают на port 9786 и empty secret
- bridgeConfig: убрана авто-генерация secret, убран secret из BridgeInfo

High:
- extension/background.js + extension-firefox/background.js:
  все chrome.* listeners вынесены в global scope (не внутри onInstalled/onStartup)
  → MV3 service worker корректно перезапускается
- UI: acceptBrowserEvent вызывает AcceptBrowserEvent, attachBrowserEvent вызывает
  AttachBrowserEventToNode (к текущему selectedNode), а не DismissBrowserEvent
- watcher: при Create проверяется isUnderVault(absPath, vaultRoot) —
  если файл уже в vault, используется AddExternal вместо CopyIntoVault
  → нет дублирования файлов с timestamp-суффиксом

Medium:
- bridge.Event: добавлено поле DeviceID, handleEvents обогащает events из batch.DeviceID
  → device_id сохраняется в DB как chrome-*/firefox-*, а не evt_*
- config: FileWatcher изменён на *bool — nil означает default true,
  false = явно выключено → старые config.json без поля file_watcher получают true
This commit is contained in:
2026-06-07 00:15:34 +08:00
parent b676ac675a
commit 1cc0c407b1
9 changed files with 142 additions and 137 deletions
+7 -2
View File
@@ -47,7 +47,7 @@ type VaultAppConfig struct {
VaultID string `json:"vault_id,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
Sync SyncSettings `json:"sync,omitempty"`
FileWatcher bool `json:"file_watcher"`
FileWatcher *bool `json:"file_watcher,omitempty"`
Bridge BridgeConfig `json:"bridge,omitempty"`
}
@@ -78,7 +78,7 @@ func DefaultAppConfig() *AppConfig {
EnabledTemplates: []string{"folder.default", "project.default", "client.default", "document.default", "recipe.default"},
EnabledPlugins: []string{},
Vault: VaultAppConfig{
FileWatcher: true,
FileWatcher: BoolPtr(true),
},
}
}
@@ -160,3 +160,8 @@ func DefaultVaultPath() (string, error) {
}
return filepath.Join(dir, "vault"), nil
}
// BoolPtr returns a pointer to the given bool value.
func BoolPtr(b bool) *bool {
return &b
}