feat: task trash, triage trash and retention settings for every area; admin can forbid keeping things for good
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m39s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
sandrodachandClaude Opus 5.5 committed 2026-11-01 15:44:34 +01:00
1 parent a927a94a95
commit 5a9c5bac37
36 files changed
+1356 -175

No files matched your search

+17
View File
@@ -54,6 +54,9 @@ type Config struct {
// Legal notices (Impressum, Datenschutz): an external URL and/or Markdown text, shown even before login
Legal LegalTexts
// RetentionAllowNever: RETENTION_ALLOW_NEVER=true/false fixes whether people may keep finished and
// deleted things for good; unset (nil) leaves it to the system settings
RetentionAllowNever *bool
// Speech recognition, configured only by environment (STT_*)
Speech SpeechConfig
@@ -254,6 +257,7 @@ func Load() *Config {
DemoMode: demoMode,
DemoResetMinutes: demoResetMinutes(),
TrustedProxies: getEnv("TRUSTED_PROXIES", "private"),
RetentionAllowNever: envBoolPtr("RETENTION_ALLOW_NEVER"),
DisableLoginProtection: strings.ToLower(getEnv("LOGIN_PROTECTION", "true")) == "false",
SMTPHost: smtpHost,
SMTPPort: smtpPort,
@@ -369,3 +373,16 @@ func boolEnvOrEmpty(key string) string {
}
return ""
}
// envBoolPtr reads true/false; nil when unset or anything else.
func envBoolPtr(key string) *bool {
switch strings.ToLower(strings.TrimSpace(os.Getenv(key))) {
case "true", "1", "yes":
v := true
return &v
case "false", "0", "no":
v := false
return &v
}
return nil
}