diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-08-06 18:19:27 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-08-06 18:19:27 +0000 |
| commit | 06450fe69ade2928deb9274bb67b7ba60d394b4f (patch) | |
| tree | 328c3e2f5608663669d75330bfde1e61ab713499 /internal/handlers/settings.go | |
| parent | f7d18eae924a221f12293c3063e46b791468623f (diff) | |
Remove the feature toggle system (dead code)
Audited it (couldn't query the live DB directly -- auto-mode classifier
blocks direct production reads without prior approval -- so this is a
code-only audit): GetFeatureToggles/SetFeatureEnabled/IsFeatureEnabled/
CreateFeatureToggle/DeleteFeatureToggle had exactly one caller each, all
inside their own CRUD handlers. Nothing anywhere else in the codebase
read a toggle's Enabled state to gate any actual behavior -- confirmed
by grepping every remaining .Enabled/IsFeatureEnabled reference back to
either this dead code or its own tests. It was pure UI-managed CRUD with
no consumer, unlike Trusted Agents (wired into agent.go/websocket.go)
or Data Sources (wired into the sync pipeline) which stayed.
Removes the Settings page section, the three /settings/features* routes
and handlers, the five Store methods, the FeatureToggle model, and adds
028_drop_feature_toggles.sql (next free migration number, per this
repo's convention of never renumbering -- see 021_drop_tasks.sql for
the same drop-table-forward pattern) to drop the now-unused table.
Also removed the now-dead tests for all of the above.
go build ./... and go test ./... both clean.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EZ7ikw2ukGJFTHE3bJS7zL
Diffstat (limited to 'internal/handlers/settings.go')
| -rw-r--r-- | internal/handlers/settings.go | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/internal/handlers/settings.go b/internal/handlers/settings.go index 43fce20..5ba3724 100644 --- a/internal/handlers/settings.go +++ b/internal/handlers/settings.go @@ -4,8 +4,6 @@ import ( "encoding/json" "net/http" - "github.com/go-chi/chi/v5" - "task-dashboard/internal/auth" "task-dashboard/internal/models" "task-dashboard/internal/store" @@ -14,7 +12,6 @@ import ( // HandleSettingsPage renders the settings page func (h *Handler) HandleSettingsPage(w http.ResponseWriter, r *http.Request) { configs, _ := h.store.GetSourceConfigs() - toggles, _ := h.store.GetFeatureToggles() syncLog, _ := h.store.GetRecentSyncLog(20) agents, _ := h.store.GetAllAgents() buckets, _ := BuildBucketSummaries(h.store) @@ -30,7 +27,6 @@ func (h *Handler) HandleSettingsPage(w http.ResponseWriter, r *http.Request) { data := struct { Configs map[string][]models.SourceConfig Sources []string - Toggles []models.FeatureToggle SyncLog []store.SyncLogEntry Agents []models.Agent Buckets []models.BucketSummary @@ -41,7 +37,6 @@ func (h *Handler) HandleSettingsPage(w http.ResponseWriter, r *http.Request) { }{ Configs: bySource, Sources: []string{"trello", "gcal", "gtasks"}, - Toggles: toggles, SyncLog: syncLog, Agents: agents, Buckets: buckets, @@ -163,52 +158,3 @@ func (h *Handler) HandleToggleSourceConfig(w http.ResponseWriter, r *http.Reques json.NewEncoder(w).Encode(map[string]bool{"enabled": enabled}) } -// HandleToggleFeature toggles a feature flag -func (h *Handler) HandleToggleFeature(w http.ResponseWriter, r *http.Request) { - name, ok := requireFormValue(w, r, "name") - if !ok { - return - } - enabled := r.FormValue("enabled") == "true" - - if err := h.store.SetFeatureEnabled(name, enabled); err != nil { - JSONError(w, http.StatusInternalServerError, "Failed to update feature", err) - return - } - - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(map[string]bool{"enabled": enabled}) -} - -// HandleCreateFeature creates a new feature toggle -func (h *Handler) HandleCreateFeature(w http.ResponseWriter, r *http.Request) { - name, ok := requireFormValue(w, r, "name") - if !ok { - return - } - description := r.FormValue("description") - - if err := h.store.CreateFeatureToggle(name, description, false); err != nil { - JSONError(w, http.StatusInternalServerError, "Failed to create feature", err) - return - } - - // Return updated toggles list - h.HandleSettingsPage(w, r) -} - -// HandleDeleteFeature removes a feature toggle -func (h *Handler) HandleDeleteFeature(w http.ResponseWriter, r *http.Request) { - name := chi.URLParam(r, "name") - if name == "" { - JSONError(w, http.StatusBadRequest, "Feature name required", nil) - return - } - - if err := h.store.DeleteFeatureToggle(name); err != nil { - JSONError(w, http.StatusInternalServerError, "Failed to delete feature", err) - return - } - - w.WriteHeader(http.StatusOK) -} |
