{"version":"2.1.273","anchor":"spinner-tips-reworked-into-a-plugin-architecture","canonical_anchor":"spinner-tips-reworked-into-a-plugin-architecture","heading":"Spinner tips rebuilt as a plugin with a seat\/vacate handoff","tier":"internal","area":"UI","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.273\/e\/spinner-tips-reworked-into-a-plugin-architecture","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.273","markdown":"### Spinner tips rebuilt as a plugin with a seat\/vacate handoff\n\nThe tip line shown under the spinner while Claude works is now driven by an internal tips plugin instead of being hardcoded in the REPL\n\n**Unclear.** Whether the `tengu_tips_mod` gate that guards this plugin is enabled has not been read for this release.\n\n**What**\n\n- The short tip line shown under the spinner while Claude Code is working has been rebuilt as an internal plugin (called `tips`), with its own pipeline for picking candidate tips, tracking relevance and failures, applying cooldowns and lifetime caps, and sorting by priority. Tips can come from the organization or from marketplace plugins.\n\n- The REPL no longer sets the spinner tip directly; a `TurnController` now carries a `_spinnerTipHandoff` object that gets \"seated\" and \"vacated\" against a shared registry to hand control of the tip display to the plugin.\n\n**Why** Moving tip selection into a plugin lets tips come from more sources (org-provided or marketplace plugins) and be governed by shared rules like cooldowns and caps, instead of being chosen by a single hardcoded function.\n\n- Flag `tengu_tips_mod`: Not enough to say (read for one account on one subscription tier against v2.1.273; this account: no value returned, anonymous baseline: no value returned, compiled default: off) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.\n- Area: UI\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 3\/5"}