Commit graph

1655 commits

Author SHA1 Message Date
Arjun
23e1a89c9e add dismiss button for middle pane 2026-05-25 21:11:55 +05:30
Arjun
a79263c5ef fix email drafts 2026-05-25 20:49:00 +05:30
Arjun
a4697fc281 dont sync working location 2026-05-25 20:05:39 +05:30
Arjun
83389e93fc fixed multiple recepients / attachments in email issue 2026-05-25 20:04:52 +05:30
arkml
c0493e8b9f
Meetings4 (#574)
* fix meetings ui with design changes
2026-05-25 19:43:29 +05:30
Ramnique Singh
31e35e00b8 Refactor builtin file tools beyond workspace scope
Replace workspace-scoped builtin file tools with general-purpose file-* tools that accept relative, absolute, and ~/ paths. Relative paths still resolve against the configured workdir.

File operations within the workdir are auto-approved. File operations outside the workdir now emit file permission metadata and require user approval, with support for once, session, and persistent grants.

Add a shared filesystem layer for text-focused read/write/edit/list/search operations, including binary-file safeguards for text reads. parseFile and LLMParse continue to read file buffers for document/image parsing.

Update copilot prompts, background/live-note agents, knowledge workflows, and renderer labels/UI to use the new file-* tool surface and permission details.

Add package-local Vitest setup for @x/core with colocated filesystem unit tests covering path resolution, canonical permission paths, binary detection, read/write/edit behavior, glob, and grep.
2026-05-25 16:21:51 +05:30
Arjun
f1d3b7b825 show calendar details on click 2026-05-25 14:20:37 +05:30
Arjun
8aa0c1763a tools row in home 2026-05-25 13:19:34 +05:30
arkml
84aa980894
Gmail send, archive and delete (#573)
* added send, archive and delete

* fix scopes

* added replyall, cc, bcc etc

* - Added scope-aware Gmail status via gmail:getConnectionStatus, so the email empty state can
    distinguish “not connected” from “connected but missing new Gmail scope.”
  - Hardened Gmail send header construction against CR/LF header injection.
  - Switched MIME parts from invalid UTF-8 7bit bodies to base64-encoded UTF-8 parts.
  - Made forward send as a new message instead of attaching it to the original thread, and included
    forwarded message content.
  - Changed archive/delete UI behavior to remove the thread only after Gmail confirms success.

---------

Co-authored-by: Ramnique Singh <30795890+ramnique@users.noreply.github.com>
2026-05-25 09:47:08 +05:30
gagan
a59c42e22b
fix: notes — in-note section links, deep-note wiki resolution, file links (#571)
* fix discord users feedback

* fix: drop duplicate Link extension and scroll headings to viewport top

* fix: collapse ../ segments in note-relative file links

---------

Co-authored-by: Arjun <6592213+arkml@users.noreply.github.com>
2026-05-24 23:48:20 +05:30
Ramnique Singh
566f4553b4 Clarify billing usage labels
- rename monthly credits label to plan usage
- rename daily credits label to daily use
- clarify daily usage reset and out-of-credits copy
2026-05-24 13:21:30 +05:30
Ramnique Singh
7cd661d726 Show split monthly and daily credits
- update billing contract to consume split monthly/daily usage
- show monthly and daily credit percentage bars in account settings
- keep sidebar plan labels normalized
- update out-of-credits copy for daily credits
2026-05-24 12:48:23 +05:30
Arjun
eb4b11a530 email and calendar empty states now check only native google oauth 2026-05-23 09:25:26 +05:30
Arjun
6094ac508a fix build isues 2026-05-23 08:49:49 +05:30
Arjun
4db42d17cf fix gmail sync 2026-05-23 08:49:49 +05:30
Arjun
25a1976394 chat side pane, home/chat refinements, and connect prompts
Add the chat side-pane navigation with dock/close/open controls, refine
the Home and chat panes, show connect-account prompts in the Email and
Meetings views (Zoom/Teams/Meet), fix the dock-to-side arrow, and default
the app to Home with the chat docked on the right.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:56:57 +05:30
Arjun
fbd0791d0c implement the new navigation design
Rebuild the sidebar, home, and chat surfaces per the navigation design:
Recents (capped at 5), single clickable previews, section separators, and
the chat page help items and discovery carousel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:56:57 +05:30
Arjun
e6587a67b7 settings connections tab, denser sidebar, and help in settings
Merge Connected Accounts and Tools Library into a single Connections tab,
tighten sidebar spacing, move Help into Settings, and refine the Workspace
view.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:56:57 +05:30
Arjun
193c2a9131 move tasks, meetings, and email into the sidebar; add chat history
Surface background tasks, upcoming meetings (with a live recording
indicator), and important unread email directly in the sidebar; add a
chat history page with chat icons and a home action row.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:56:57 +05:30
Arjun
346c685ac9 new chat icon/shortcut, workspaces, and knowledge browsing
Move new chat to a top-bar icon with a Cmd+N shortcut, introduce the
Workspaces concept (workspace sidebar + default the working-directory
picker to it), and expand the knowledge browser (view more).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:56:57 +05:30
gagan
5be0a11f98
feat: show out-of-credits dialog instead of raw API error (#568)
* feat: show billing error dialog on out-of-credits errors

* fix: suppress chat dump and toast when billing dialog shows
2026-05-22 00:20:35 +05:30
gagan
0a3fc3736f
fix: fall back to next port when OAuth callback server can't bind 8080 (#560)
* fix: fall back to next port when OAuth callback server can't bind 8080

On Windows with Hyper-V/WSL2/Docker, port 8080 is often reserved by the
OS (EACCES) or already in use (EADDRINUSE), making sign-in completely
impossible. The app now scans 8080–8089 and binds the first available
port. For DCR providers, a stale registration locked to a blocked port
is detected and cleared so the client re-registers on the new port.
Static-client providers (Google BYOK) keep fixed-port behaviour with a
clear error message instead of a raw Node.js exception.

* fix: keep createAuthServer fixed-port by default, opt-in fallback

Address review feedback:
- Flip createAuthServer default to fixed-port; fallback is now opt-in via
  { fallback: true }. Composio (composio-handler.ts) keeps exact-port
  semantics with no code change — only the Rowboat sign-in call site,
  which builds its redirect URI from the actual bound port, opts in.
- Wrap post-bind setup (DCR, PKCE, auth URL) in try/catch and close the
  server on any failure so the port is released for retries.

* fix: clear stale DCR registration when bound port differs from start port
2026-05-22 00:10:41 +05:30
Ramnique Singh
c4888e2899
Merge pull request #566 from rowboatlabs/dev
send LLM use-case metadata through Rowboat gateway
2026-05-20 07:11:50 +05:30
Ramnique Singh
ec2e7d8145 send LLM use-case metadata through Rowboat gateway
Attach the current analytics use-case context to Rowboat gateway requests so backend billing generation rows can capture use_case, sub_use_case, and agent_name.

Wrap streamed agent calls and direct instrumented LLM call sites in explicit use-case context to keep metadata available when provider requests are created.
2026-05-20 07:11:06 +05:30
arkml
aba65843c2
Merge pull request #565 from rowboatlabs/dev
Dev
2026-05-19 21:35:00 +05:30
Arjun
55490fa63c make email tab backwards compatible 2026-05-19 21:30:03 +05:30
Arjun
9ee42d2f75 change default live note model 2026-05-19 20:55:14 +05:30
Ramnique Singh
95c313de89 Deprecate generated Today.md live note 2026-05-19 15:13:05 +05:30
Ramnique Singh
fe5e67f810 Render background task output with rich markdown
Add a read-only TipTap-backed RichMarkdownViewer and use it for Background Tasks output so rendered index.md files can display the same rich fenced blocks as notes, including email, calendar, chart, table, image, embed, transcript, and Mermaid blocks.

Keep the existing Source/Rendered toggle for raw markdown inspection, and hide editor-only delete controls in read-only output.

Move the rich block format examples out of the LiveNote-only prompt and into the shared knowledge note style guide. This gives both LiveNote and Background Task agents the same canonical renderer contract, including exact fenced-code schemas for rich Markdown blocks and the rule to avoid emitting task blocks as agent output.

Verified with:
- npm run build in apps/x/apps/renderer
- npm run build in apps/x/packages/core
2026-05-19 09:59:01 +05:30
Ramnique Singh
65f8e9d678 Merge branch 'main' into dev 2026-05-19 09:31:51 +05:30
arkml
4d160da105
minor design changes (#564) 2026-05-18 22:49:18 +05:30
arkml
6492cf65b5
meetings page (#558)
* move meetings to own page

* show calendar
2026-05-18 22:06:04 +05:30
arkml
7dcf8eea70
Email page (#561)
* email view

* render html emails

* match unread and read status

* move to accordian

* faster loads

* iframe mounted across toggle and cached height

* prefetch on hover

* fix iframe caching

* split inbox

* email processing agent

* summary

* rich text

* email drafts

* add pagination, watcher and separation from gmail sync

* fix first load issue

* handle drafts

* send button opens the thread

* simplify renderer and fix flickering issue

* remove rended driven email path

* support attachments in incoming emails

* fix white background as well as dark mode
2026-05-18 21:46:26 +05:30
Ramnique Singh
69e4f253dd
Merge pull request #563 from rowboatlabs/dev
Dev
2026-05-18 17:12:30 +05:30
Ramnique Singh
af618155e1 Update Electron billing UI for free plan 2026-05-18 11:12:39 +05:30
Arjun
d586f6bd8a fix calendar sync issue 2026-05-16 18:18:54 +05:30
Arjun
f9ddc6549a add show in finder 2026-05-15 12:11:50 +05:30
Arjun
41f783d504 dev instance skips lock 2026-05-14 22:06:19 +05:30
Arjun
f371cd4bb1 ignore spam and trash emails 2026-05-13 14:05:52 +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