Commit graph

1641 commits

Author SHA1 Message Date
Ramnique Singh
2e840c31e0 fix scopes 2026-05-22 09:53:35 +05:30
Arjun
b9bb8fbec0 added archive and delete 2026-05-14 21:40:08 +05:30
Arjun
6f80576f72 added send 2026-05-14 21:09:54 +05:30
Arjun
c157e9e50d send button opens the thread 2026-05-14 15:06:03 +05:30
Arjun
93101b2e83 handle drafts 2026-05-14 14:52:01 +05:30
Arjun
10c65f097a fix first load issue 2026-05-14 14:46:07 +05:30
Arjun
d757dc37da add pagination, watcher and separation from gmail sync 2026-05-14 13:43:42 +05:30
Arjun
22e5452003 refine draft 2026-05-13 23:27:38 +05:30
Arjun
75e0f50855 email drafts 2026-05-13 23:15:43 +05:30
Arjun
38b1f78ede rich text 2026-05-13 22:51:14 +05:30
Arjun
ce15b7d929 summary 2026-05-13 22:32:46 +05:30
Arjun
5612ab2447 email processing agent 2026-05-13 21:41:23 +05:30
Arjun
98043ed82b split inbox 2026-05-13 19:51:00 +05:30
Arjun
5dd5a338e7 fix iframe caching 2026-05-13 19:15:36 +05:30
Arjun
b45259fe20 better dark mode 2026-05-13 18:19:10 +05:30
Arjun
82ac568270 prefetch on hover 2026-05-13 18:10:24 +05:30
Arjun
55c16af04c iframe mounted across toggle and cached height 2026-05-13 18:06:33 +05:30
Arjun
941df07811 looks like shuman 2026-05-13 16:46:19 +05:30
Arjun
84562e400a faster loads 2026-05-13 16:22:34 +05:30
Arjun
ec1420fcf5 move to accordian 2026-05-13 14:51:55 +05:30
Arjun
21148d02b9 match unread and read status 2026-05-13 14:46:13 +05:30
Arjun
8a98f3501e render html emails 2026-05-13 14:08:50 +05:30
Arjun
78351da01b remove side bar 2026-05-13 12:42:17 +05:30
Arjun
296f7c75b7 email view 2026-05-13 12:36:37 +05:30
Arjun
e4244a8ce5 direct gmail initial commit 2026-05-13 11:57:09 +05:30
Ramnique Singh
b01af12148 feat: background tasks
Adds Background Tasks — recurring background agents the user can set up to
either keep a digest current (daily email summary, top HN stories, weather
brief) or perform a recurring action (draft a reply, post to Slack, call an
API). Each task is a persistent set of instructions plus optional triggers
(schedule, time-of-day window, or matching incoming Gmail / calendar event).
The agent reads the verbs in the instructions on every run and picks the
right mode automatically.

User-facing surfaces:
- New "Background tasks" entry in the sidebar, with a table listing every
  task, its schedule, last run, and an active toggle.
- A detail page per task with a max-width reader showing the task's
  current output and a control sidebar for editing instructions, triggers,
  and reviewing run history.
- "New task" can open in a free-form box where the user describes what they
  want and Copilot sets it up end-to-end, or in a structured form for
  manual setup.
- "Edit with Copilot" hand-off from the detail view, pre-seeded with the
  task's context.

Under the hood:
- The event pipeline that previously powered live-notes is now a generic
  consumer registry. Live-notes and background tasks both subscribe;
  incoming events are routed to candidates from both concurrently.
- Schedule helpers and the agent-message trigger block are factored out of
  live-notes into shared modules. Both features use the same building
  blocks now.
- Copilot's proactive routing is reframed: anything recurring (cadence
  words, watch / monitor verbs, action verbs, event-conditional asks) now
  flows to background tasks. Live-notes load only on explicit mention.
- A small reliability fix for the run-creation fallback chain: an
  empty-string model/provider passed by an LLM tool call now correctly
  falls through to the default instead of being persisted as a real value.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 17:43:25 +05:30
Ramnique Singh
13fa80c687 Merge branch 'main' into dev 2026-05-12 11:30:42 +05:30
gagan
e594b667bf
fix: resolve claude.exe for acpx on windows to dodge spawn einval (#554) 2026-05-12 00:57:53 +05:30
arkml
c756e61d7a
Merge pull request #553 from rowboatlabs/dev
note creation uses kg model
2026-05-12 00:22:32 +05:30
Arjun
47d7100368 note creation uses kg model 2026-05-12 00:18:48 +05:30
Ramnique Singh
a9b4e06018
Merge pull request #552 from rowboatlabs/dev
Dev
2026-05-11 15:34:15 +05:30
Ramnique Singh
ab23cb4543 feat: redesign live-note sidebar with Objective / Last run / Details tabs
Flatten the panel to match the rest of the app's design language. Splits
the surface into three tabs:

- Objective: full-height markdown render of the objective, in-tab plain
  monospace editor (no card-in-card chrome).
- Last run: fetches via `runs:fetch` and shows the agent's full
  transcript — summary at top, then a compact chat of user/assistant
  turns with collapsible tool calls (Parameters/Result).
- Details: triggers (single cron + windows + events with display/edit
  toggle) and collapsed Advanced (model/provider/danger zone) ending in
  "Convert to static note →".

Adds a 2-column status strip (Last run · Triggers) above the tabs and a
context-aware footer. Adopts the app's signature `uppercase tracking-wider
text-muted-foreground` label style; drops nested bordered cards.

New helper `lib/run-to-conversation.ts` converts `Run.log` events into
ConversationItems for read-only playback — adapted from App.tsx's live
converter, trimmed for static history (no streaming/permission flows,
skips lifecycle and system/tool-role messages).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-11 15:33:19 +05:30
Arjun
e3d2a0988b embed tweets 2026-05-09 12:06:54 +05:30
Ramnique Singh
10995ebed6
Merge pull request #542 from rowboatlabs/dev
fix: resolve TS errors for unused fileContent state and missing JSX n…
2026-05-09 00:43:16 +05:30
Ramnique Singh
8737605666 fix: resolve TS errors for unused fileContent state and missing JSX namespace
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 00:42:03 +05:30
Ramnique Singh
b7b84e94e0
Merge pull request #541 from rowboatlabs/dev
Dev
2026-05-09 00:34:29 +05:30
Ramnique Singh
dabca3da19 feat: live notes — single objective per note replaces multi-track model
Folds the multi-`track:`-array model into one `live:` block per note: a single
persistent objective the live-note agent maintains, plus an optional triggers
object (`cronExpr` / `windows` / `eventMatchCriteria`, each independently
optional). A note is now passive or live — no per-track scopes, no section
ownership contract, no `once` trigger. The agent owns the whole body and makes
patch-style incremental edits per run.

Highlights:
- Schema: `track:` array → single `live:` object (`packages/shared/src/live-note.ts`).
- Runtime: scheduler / event processor / runner under `core/knowledge/live-note/`,
  with split `lastAttemptAt` (every run, drives 5-min backoff) vs `lastRunAt`
  (success only, anchors cycles). `throwOnError` on agent runs surfaces LLM /
  billing failures into `lastRunError`.
- Today.md: regenerated by template v2 (single objective covering overview /
  calendar / emails / what-you-missed / priorities; existing files renamed to
  `Today.md.bkp.<stamp>`).
- Renderer: `LiveNoteSidebar` mounts inside the editor row (no chat overlap,
  auto-closes on note switch); toolbar Radio button becomes a status pill;
  `LiveNotesView` replaces background-agents view.
- Copilot: new `live-note` skill with act-first stance, default folder/cadence
  pickers, and a non-negotiable rule to extend an existing objective rather
  than add a second one. Shared `KNOWLEDGE_NOTE_STYLE_GUIDE` enforces
  terse-and-scannable writing across `doc-collab` and the live-note agent.
- Analytics: `track_block` use-case → `live_note_agent`; trigger
  (`manual` / `cron` / `window` / `event`) becomes the Pass-2 sub-use-case,
  alongside `routing` for Pass 1. Legacy run files with the old value are
  read-mapped via `LegacyStartEvent` so they stay openable in the runs list.

Hard cutover — no back-compat shims for legacy `track:` frontmatter arrays.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 00:30:43 +05:30
Ramnique Singh
0bf7a55611
Merge pull request #539 from rowboatlabs/feat/knowledge-file-viewer
feat: render html, image, video, audio, and pdf in knowledge view
2026-05-09 00:30:14 +05:30
Arjun
cc176898df fix onboarding tip 2026-05-08 18:10:26 +05:30
Gagancreates
66e22bd779 chore: ignore test-fixtures dir 2026-05-08 17:04:25 +05:30
Gagancreates
8e10d8bff3 chore: stop tracking test fixture 2026-05-08 17:03:58 +05:30
Gagancreates
c5ee363122 feat: show unsupported file panel instead of raw bytes 2026-05-08 16:55:12 +05:30
Gagancreates
89f56a8059 docs: note srcdoc relative-asset limitation in html viewer 2026-05-08 16:46:22 +05:30
Gagancreates
385ed3377f refactor: extract getViewerType helper to share extension list 2026-05-08 16:45:47 +05:30
Gagancreates
60e5b2cbc7 chore: drop planning docs from repo 2026-05-08 16:45:37 +05:30
Ramnique Singh
a1e4002533
Merge pull request #540 from rowboatlabs/dev
Dev
2026-05-08 13:21:51 +05:30
Ramnique Singh
3b09296291 fix: route Google reconnect through rowboat flow when signed in
The Reconnect button on the Google account row always opened the BYOK
client-ID modal, even for users signed into Rowboat — who should get
the managed-credentials browser flow instead. The non-reconnect Connect
button already branched correctly via useConnectors.handleConnect; the
reconnect path bypassed it. Adds a handleReconnect helper that mirrors
the same branching, and routes both call sites (popover and settings)
through it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 13:21:05 +05:30
Ramnique Singh
acff502f42 fix: stop Gmail sync from throwing "No refresh token is set" in rowboat mode
In rowboat OAuth mode the OAuth2Client is built without a refresh_token
because refreshes go through the api. google-auth-library's default
5-minute eagerRefreshThresholdMillis caused it to attempt a refresh
whenever a Gmail call landed within 5 minutes of token expiry, throwing
"No refresh token is set." before our proactive 60s-margin refresh
could run. Disabling the eager window lets our getClient() refresh path
own all refreshes as the comment intends.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 13:21:05 +05:30
Ramnique Singh
f5bba5e271 Merge branch 'main' into dev 2026-05-08 13:20:33 +05:30
Gagancreates
0250ca638e chore: reduce viewer cache limit from 5 to 3 2026-05-08 03:13:17 +05:30