+ {view === "today" ? "Pinned for today" : view} +
+ {view !== "vault" && ( ++ {view === "vault" ? "Vault is empty." : "Nothing here yet."} +
+ ) : ( +diff --git a/.gitignore b/.gitignore index 8b5e6ce..b328fd8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,8 @@ -# node_modules/ -# dist/ -# .env -# .env.local -# .DS_Store -# *.log -# coverage/ -# .next/ -# -------------------------- -# +node_modules/ +dist/ +.env +.env.local +.DS_Store +*.log +coverage/ +.next/ diff --git a/Affirmations.tsx b/Affirmations.tsx deleted file mode 100644 index 2863142..0000000 --- a/Affirmations.tsx +++ /dev/null @@ -1,45 +0,0 @@ - -import React, { useState, useEffect } from 'react'; - -const MESSAGES = [ - "You are a masterpiece.", - "Bring your magic.", - "Imagine without fear.", - "Write your story.", - "It's all within you.", - "Reinvent yourself.", - "No limits.", - "Become you.", - "You are enough.", - "Dream big." -]; - -const Affirmations: React.FC = () => { - const [index, setIndex] = useState(0); - const [fade, setFade] = useState(true); - - useEffect(() => { - const interval = setInterval(() => { - setFade(false); - setTimeout(() => { - setIndex((prev) => (prev + 1) % MESSAGES.length); - setFade(true); - }, 1000); - }, 15000); - return () => clearInterval(interval); - }, []); - - return ( -
+ {view === "vault" ? "Vault is empty." : "Nothing here yet."} +
+ ) : ( ++ No results +
+ )} + {results.map((p) => { + const Icon = TYPE_ICON[p.type]; + return ( + + ); + })} +{win.title}
-{win.type}
-{t}
- ))} - {transcription.length === 0 && !isConnecting && ( -"Echo, pin my research window..."
- )} - {isConnecting &&Initializing Neural Link...
} -- {isActive ? 'Echo is listening...' : 'Tap to start voice control'} -
-- {todo.text} -
-No tasks active.
- )} -Pin anything, stay focused. Elevate your productivity with context-aware window management.
- -Optimized for Apple keyboards and macOS power users.
- -Fine-tune keys to match your existing muscle memory.
- -- PinPoint is now your new digital surface. Drag windows into folders to organize, or use the AI Assistant to clean up. -
-Proudly Open Source • MIT License
-+ Pin what matters, set your intentions, and stay focused — without + the clutter. +
+ ++ {pin.type === "tabs" + ? `${pin.tabs?.length || 0} tabs` + : pin.content} +
++ Some sites block embedding (X-Frame-Options) and won't load here. +
+ )} + > + ) : ( +- Enable procedural ambient noise during work sessions. -
-- Show visual snap zones on screen borders when dragging - windows near the edges. -
-- Version 1.0.0-beta -
-- PinPoint Pro is proudly open source. Built for deep work, - this tool belongs to the community. -
-
- MIT License
- Copyright (c) 2025 PinPoint Contributors
-
Contextual Intent
-Surface Usage Frequency
- Realtime -No active surfaces on desktop.
- ) : ( - [...windows] - .filter(w => !w.isClosed) - .sort((a, b) => (b.focusCount || 0) - (a.focusCount || 0)) - .map(w => { - const count = w.focusCount || 0; - return ( -- {win.title} -
-- The vault is currently empty. -
- ) : archivedTabs.length === 0 ? ( -- No archived browser tabs. -
- ) : ( - archivedTabs.map((tab) => ( -- {tab.title} -
-- {tab.url} -
-{tab.url}
-No workspaces saved yet.
-{ws.windows.length} windows • {ws.windows.filter(w => w.isPinned).length} pinned
-