Watchlist UX (no_response lane, collapsible lanes, notes-lag fix), cut Soundcharts, social crawl proxy hook#65
Merged
Conversation
…-lag fix; cut Soundcharts; social crawl proxy hook Batch of product + provider changes. #5 Watchlist: - New "No Response" pipeline lane (after Contacted). Added to ContactStatus, CONTACT_STATUS_CONFIG, lane descriptions, and the atomic stage RPC's allowed-lane list (migration 20260723120000, applied to prod). no_response is now a real lane, dropped from the legacy alias map. boardColumns and the team assignment counts are now built from the config so future lanes can't drift the exhaustive records. - Board swim lanes are collapsible: a per-lane chevron collapses to a slim vertical strip (label + count); state persists in localStorage. #6 Notes lag: the card notes Textarea kept a controlled binding to the shared watchlist state, so every keystroke re-rendered the whole board. It now uses a local draft with a 500ms debounced save (flush on blur/unmount) and only adopts external edits that differ from the last saved value. #4 Cut Soundcharts unconditionally: removed from provider orchestration (syncEntityFromAllProviders, ProviderName), deleted the soundcharts-enrich and sync-soundcharts-entity edge functions, removed the healthcheck probe (it hit the Soundcharts API on every run) and the UI provider lists (ProviderHealthBar, AdminSyncHistory, CatalogAnalysis badges), and dropped the dead fetchSoundchartsData. Inert legacy labels / the soundcharts_cache table remain (nothing calls them). The two functions are queued for deletion in security-ops. #2 Social crawl proxy: buildProxyConfig() gains a dedicated social path — social crawls prefer CRAWL4AI_SOCIAL_PROXY_URL/_SERVER when set and fall back to the general proxy, then direct. The general proxy already applied to social crawls; this adds a separate residential pool hook. Activation needs the proxy credential (operator-supplied). Verified: tsc, eslint, 363 tests, production build; no_response migration applied + reconciled live. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CN6KKo8XyF2N2wBLxno24C
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Updates to Preview Branch (claude/publisting-audit-hardening-ixpwf6) ↗︎
Tasks are run on every commit but only new migration files are pushed.
View logs for this Workflow Run ↗︎. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Batch addressing several requested items. (Access change #1 was applied directly to the DB and is already live — not in this PR.)
#5 — "No Response" lane + collapsible swim lanes
ContactStatus,CONTACT_STATUS_CONFIG, lane descriptions, and the atomic stage-transition RPC's allowed-lane list (migration20260723120000, applied to prod + reconciled). It's now a real lane, removed from the legacy alias map.boardColumnsand the team assignment counts are built from the config so new lanes can't drift the exhaustive records.localStorage.#6 — Notes typing lag
The card notes
Textareawas controlled off the shared watchlist state, so every keystroke re-rendered the whole board. Now uses a local draft with a 500ms debounced save (flush on blur/unmount), adopting external edits only when they differ from the last saved value.#4 — Cut Soundcharts unconditionally
Removed from provider orchestration (
syncEntityFromAllProviders,ProviderName), deleted thesoundcharts-enrich/sync-soundcharts-entityedge functions, removed the healthcheck probe (it hit the Soundcharts API on every run) and the UI provider lists, dropped deadfetchSoundchartsData. The two functions are queued for deletion insecurity-ops.yml. Inert legacy labels + thesoundcharts_cachetable remain (nothing calls them).#2 — Social crawl proxy (hook)
buildProxyConfig()gains a dedicated social path: social crawls preferCRAWL4AI_SOCIAL_PROXY_URL/_SERVERwhen set, falling back to the general proxy, then direct. (The general proxy already covered social crawls; this adds a separate residential-pool hook.) Activation requires the proxy credential — operator-supplied.Verification
tsc -bclean · ESLint 0/0 · 363 tests green · production build succeeds · lane migration applied + reconciled live.🤖 Generated with Claude Code
https://claude.ai/code/session_01CN6KKo8XyF2N2wBLxno24C
Generated by Claude Code