Skip to content

Commit 7ab2d8f

Browse files
committed
fix: remove ghost dot on Options menu (new-settings-hint system)
The version-gated hint dot was permanently visible for users who never matched the cookie version, with no way to dismiss it. Removes the entire system: utility, state, prop plumbing, and pulsing dot JSX. For provenance purposes, this commit was AI assisted.
1 parent bb404f8 commit 7ab2d8f

4 files changed

Lines changed: 0 additions & 34 deletions

File tree

packages/editor/App.tsx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ import { useEditorAnnotations } from '@plannotator/ui/hooks/useEditorAnnotations
5858
import { useExternalAnnotations } from '@plannotator/ui/hooks/useExternalAnnotations';
5959
import { useExternalAnnotationHighlights } from '@plannotator/ui/hooks/useExternalAnnotationHighlights';
6060
import { buildPlanAgentInstructions } from '@plannotator/ui/utils/planAgentInstructions';
61-
import { hasNewSettings, markNewSettingsSeen } from '@plannotator/ui/utils/newSettingsHint';
6261
import { useFileBrowser } from '@plannotator/ui/hooks/useFileBrowser';
6362
import { isVaultBrowserEnabled } from '@plannotator/ui/utils/obsidian';
6463
import { isFileBrowserEnabled, getFileBrowserSettings } from '@plannotator/ui/utils/fileBrowser';
@@ -105,7 +104,6 @@ const App: React.FC = () => {
105104
const [agentWarningMessage, setAgentWarningMessage] = useState('');
106105
const [isPanelOpen, setIsPanelOpen] = useState(() => window.innerWidth >= 768);
107106
const [mobileSettingsOpen, setMobileSettingsOpen] = useState(false);
108-
const [hasNewSettingsHints, setHasNewSettingsHints] = useState(() => hasNewSettings());
109107
const [editorMode, setEditorMode] = useState<EditorMode>(getEditorMode);
110108
const [inputMethod, setInputMethod] = useState<InputMethod>(getInputMethod);
111109
const [taterMode, setTaterMode] = useState(() => {
@@ -1576,12 +1574,7 @@ const App: React.FC = () => {
15761574

15771575
<PlanHeaderMenu
15781576
appVersion={typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.0.0'}
1579-
hasNewSettingsHints={hasNewSettingsHints}
15801577
onOpenSettings={() => {
1581-
if (hasNewSettingsHints) {
1582-
markNewSettingsSeen();
1583-
setHasNewSettingsHints(false);
1584-
}
15851578
setMobileSettingsOpen(true);
15861579
}}
15871580
onOpenExport={() => { setInitialExportTab(undefined); setShowExport(true); }}

packages/ui/components/PlanHeaderMenu.tsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ interface PlanHeaderMenuProps {
2424
sharingEnabled: boolean;
2525
isApiMode: boolean;
2626
agentInstructionsEnabled: boolean;
27-
hasNewSettingsHints: boolean;
2827
obsidianConfigured: boolean;
2928
bearConfigured: boolean;
3029
octarineConfigured: boolean;
@@ -45,7 +44,6 @@ export const PlanHeaderMenu: React.FC<PlanHeaderMenuProps> = ({
4544
sharingEnabled,
4645
isApiMode,
4746
agentInstructionsEnabled,
48-
hasNewSettingsHints,
4947
obsidianConfigured,
5048
bearConfigured,
5149
octarineConfigured,
@@ -71,12 +69,6 @@ export const PlanHeaderMenu: React.FC<PlanHeaderMenuProps> = ({
7169
>
7270
{isOpen ? <CloseIcon /> : <MenuIcon />}
7371
<span className="hidden md:inline">Options</span>
74-
{hasNewSettingsHints && !isOpen && (
75-
<span className="absolute -top-0.5 -right-0.5 flex h-2 w-2">
76-
<span className="absolute inset-0 rounded-full bg-primary opacity-75 animate-ping" />
77-
<span className="relative rounded-full h-2 w-2 bg-primary" />
78-
</span>
79-
)}
8072
</button>
8173
)}
8274
>

packages/ui/components/Settings.tsx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ import {
5858
import { useAgents } from '../hooks/useAgents';
5959
import { KeyboardShortcuts } from './KeyboardShortcuts';
6060
import { type QuickLabel, getQuickLabels, saveQuickLabels, resetQuickLabels, DEFAULT_QUICK_LABELS, getLabelColors, LABEL_COLOR_MAP } from '../utils/quickLabels';
61-
import { hasNewSettings, markNewSettingsSeen } from '../utils/newSettingsHint';
6261
import { ThemeTab } from './ThemeTab';
6362
import { isMac, modKey, altKey } from '../utils/platform';
6463
import { getAIProviderSettings } from '../utils/aiProvider';
@@ -595,11 +594,6 @@ export const Settings: React.FC<SettingsProps> = ({ taterMode, onTaterModeChange
595594
const [quickLabelsState, setQuickLabelsState] = useState<QuickLabel[]>([]);
596595
const [editingTipIndex, setEditingTipIndex] = useState<number | null>(null);
597596
const [editingTipValue, setEditingTipValue] = useState('');
598-
// Captured at mount so future hint markers (e.g. `{showNewHints && <Badge>}`)
599-
// stay visible for the duration of the dialog session even after
600-
// markNewSettingsSeen() runs on open. Bump CURRENT_HINT_VERSION in
601-
// newSettingsHint.ts when adding new highlighted settings.
602-
const [showNewHints] = useState(() => hasNewSettings());
603597
const [aiProvider, setAiProvider] = useState<string | null>(null);
604598
const [fileBrowserSettings, setFileBrowserSettings] = useState<FileBrowserSettings>({ enabled: false, directories: [] });
605599
const [newDirPath, setNewDirPath] = useState('');
@@ -647,7 +641,6 @@ export const Settings: React.FC<SettingsProps> = ({ taterMode, onTaterModeChange
647641

648642
useEffect(() => {
649643
if (showDialog) {
650-
if (showNewHints) markNewSettingsSeen();
651644
setIdentity(getIdentity())
652645
setObsidian(getObsidianSettings());
653646
setBear(getBearSettings());

packages/ui/utils/newSettingsHint.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)