A descriptor can carry a vendor-hosted MCP server URL (mcp_url); its curated
tools are ConnectorToolDefs named mcp__<connector>__<vendor tool>, so Access
bullets, per-tool toggles, session gating, and read/write approval all ride
the existing machinery. Connect seeds the server config (include_tools = the
pin, re-derived at session build so stale config can only shrink the surface)
and runs the local DCR OAuth flow — no cloud sign-in, no vendor app, no broker.
Connector-backed servers are hidden from the Settings MCP tab; disconnect
forgets tokens + registration + config. jira keeps its manual token path (the
profile mode picks which tool set is live); monday.com is new and one-click
only, with a custom brand glyph. asana's pins ship dormant — their V2 server
rejects dynamic client registration, so its one-click waits on a broker-routed
callback. Also: catalog typeahead aliases for jira/monday/asana.
- outlook_list_events now uses Graph calendarView (recurrences expanded,
ordered by start) with a default now→+7d window and optional start/end
- outlook_create_event gains attendees, location, and a teams_meeting flag
- new tools: outlook_update_event (PATCH, only provided fields),
outlook_delete_event, outlook_respond_event (accept/decline/tentative)
- connector copy now covers calendar (blurb, About, Access bullets, onboarding row)
- descriptors gain an aliases field surfaced in /v1/connectors; the Access
catalog typeahead matches on it (searching "calendar" finds Outlook)
OAuth 2.1 + PKCE + Dynamic Client Registration via the SDK's client
provider; tokens in the SecretStore, loopback callback on the sidecar.
MCP tab gets sign-in/out states and a curated Granola quick-add.
Step 2's card gallery becomes six benefit rows (one-line details) + one
combined grayed Google row; the pinned band flips from sign-in ask to green
congrats in place, rows grow Connect pills — zero layout shift at sign-in.
One footer button morphs quiet 'Continue without sign-in' → black Next;
static footnote. Modal 700→560px; the shared form's custom-endpoint
disclosure moves below the key-help line.
The post-Test auto-return stashed the just-saved key via a stale closure, so
revisiting a connected provider restored the plaintext key instead of the
masked placeholder + saved pill. Coming-soon cards get a static status line
(hover-only read as broken); attio joins the one-click gallery so the grayed
Google pair sits together on an even last row.
Appearance renames to General and absorbs Files; Token savings moves under
Models. The onboarding provider gallery/key form is extracted to a shared
providers/ProviderSetup module rendered by both surfaces, with Settings-only
extras: last-used on cards, Remove key (new DELETE /v1/providers/{name}),
and a cross-provider composer-picker card.
Settings/Connectors sub-nav headers sat under the floating reveal button
(and traffic lights in the overlay build) when the sidebar was collapsed —
collapsed state now pads the sub-nav below that strip. Personas management
(Settings tab + Manage personas… menu entry) hides behind a launch flag,
default off; e2e keeps the flows covered via the localStorage override.
One-click connect failed with "outlook has no managed OAuth path" — the
connector→provider map never got an outlook entry, though the descriptor,
broker provider, and scopes were all ready. Guard test now asserts every
managed connector has a mapping.
PDFs attach as OpenAI file parts; Anthropic/Gemini convert to their
native blocks. Models without native PDF support get a local fallback
at send time — pypdf text extraction or pypdfium2 page images, chosen
in Settings -> Token savings. Attach-time page/size thresholds
(default 20 pages / 10 MB) reject oversized PDFs with a notice.
Updater plugin with signed artifacts (minisign), latest.json composed by
release CI, update prompt in-app. Endpoints: download.opencoworker.app
with GitHub Releases fallback. Version 0.1.2.
- Boot: sidecar ships as a onedir bundle via the resources slot (onefile
self-extraction cost ~7s of splash every launch; now ~0.5s warm); build
scripts stage+sign the folder; splash wordmark aligned to the traffic
lights; minimumSystemVersion 12.0 (whisper.cpp build floor).
- Cloud sign-in: connection restore runs in the background after the
callback responds; GUI polls fast (500ms) while a sign-in is in flight.
- Onboarding: provider page keeps unsaved drafts across switches and shows
the connected state on the form; tools page rebuilt to the owner design
(value headline, Secure-by-design card, single primary action).
- Composer: OS file drags reach the existing drop handlers in the desktop
shell (native drag-drop interception disabled + window drop guards).
Replace the hand-drawn connector glyphs with official monochrome brand marks
(via simple-icons; Slack/Salesforce/Outlook/Canva vendored as path data), and
backfill logo + brand_color on every descriptor. Add six new connectors with
tools (reads never gate, writes require approval) plus two catalog placeholders.