btwfyi (noun)
/ˈbɪt.waɪ.faɪ.aɪ/ — The art of looking productive while your task list grows, plus that nagging feeling when you remember you forgot something.
A lightweight task awareness overlay for development environments. btwfyi keeps tasks visible on top of your interface, helping you stay focused, plan effectively, and avoid forgetting important work. Designed for developers who want persistent task clarity without leaving the UI.
npm install @remcostoeten/btwfyi
# or
pnpm add @remcostoeten/btwfyi
# or
yarn add @remcostoeten/btwfyiimport { Btwfyi } from "@remcostoeten/btwfyi/react";
import type { CategoryConfig } from "@remcostoeten/btwfyi/react";
const categories: CategoryConfig[] = [
{
id: "my-tasks",
displayName: "My Tasks",
items: [
{ text: "Fix bug in login flow", action: "fix" },
{ text: "Add user profile page", action: "add" },
],
},
];
function App() {
return (
<div>
<Btwfyi category="my-tasks" categories={categories} enabled={true} />
</div>
);
}Natural language task entry with automatic parsing:
- Dates: "tomorrow", "next friday", "dec 31"
- Tags:
#bug,#feature,#urgent - Priority:
!high,!medium,!low
"Fix login bug tomorrow #auth !high"
→ { text: "Fix login bug", dueDate: [tomorrow], tags: ["auth"], priority: "high" }
Paste Markdown lists directly into the Command Palette:
- Fix login bug #auth
- Add dark mode #ui !medium
- Update docs- Local AI: Uses Chrome's
window.ai(Gemini Nano) for offline task enhancement - Cloud AI (Grok): Pass
aiConfig={{ grokApiKey: '...' }}for smarter parsing
- Export: Copy tasks as Markdown, JSON, or Slack format
- Import: Paste JSON arrays or Markdown lists
Press Alt + K anywhere in your app to open the btwfyi command palette. Search across every mounted overlay, jump directly to a task, or type btwfyi to enter management mode where you can show/hide overlays, clear connections, or reset statuses globally.
category: string- The category ID to displaycategories: CategoryConfig[]- Array of category configurationsinstanceId?: string- Optional instance identifierenabled?: boolean- Whether the component is enabled (default: true)onTaskCreate?: (task) => void- Callback when a task is created via Smart SyntaxaiConfig?: { grokApiKey?: string; preferCloud?: boolean }- AI configuration
type CategoryConfig = {
id: string;
displayName?: string;
items: TodoItem[];
};
type TodoItem = {
text: string;
action?: string;
info?: string;
description?: string;
notes?: string;
dueDate?: Date | string;
priority?: "low" | "medium" | "high";
tags?: string[];
createdAt?: string;
updatedAt?: string;
};import { useBtwfyiStore } from "@remcostoeten/btwfyi/vue";
const { state, store } = useBtwfyiStore({
category: "dev",
instanceId: "dev-overlay",
});Pass themeOverrides, stylesOverrides, or set a colorMode to align btwfyi with your design tokens:
<Btwfyi
category="dev"
categories={categories}
colorMode="dark"
themeOverrides={{
colors: { primary: "var(--brand-blue)", textMain: "text-white" },
}}
/>MIT