Connect a tool once in your personal space and June can use it in every organization you belong to; connect it inside an organization and it stays there. Conversations grew side threads, and attachments upload the moment you add them.
New
Personal connections follow you into your organizations, so you no longer reconnect a tool per organization
A connection made inside an organization stays there and is removed when you leave
Integrations: a “Used in” column shows where each connection reaches, and “Personal only” in a row’s menu keeps one out of your organizations
Organization admins set up an integration once, such as the mail server, and each member connects their own account to it
Google Search Console: ask June about clicks, impressions, index status and sitemaps of your sites, read-only
Reply in thread: open a side thread on any message; replies nest under their conversation in the sidebar, and settling a conversation settles its replies
June can start a separate thread for a side task and hand it a brief, linked back to the conversation it came from
Attachments upload as soon as you add them, with progress, Retry and Remove; images open in a gallery and text files preview inline, on web and mobile
An @mention in an organization chat that stays unread for a minute reaches the member’s phone
A Slack workspace can belong to an organization, so its threads become that organization’s chats
Improved
June starts on your message sooner: the wait before June starts answering went from several seconds to about one
Mailboxes start as personal only, so your mail stays out of your organizations until you say so
Archived projects move to an Archived shelf on the Projects page and leave the sidebar
A very long paste folds into a text attachment instead of filling the composer
A prompt that did not send stays in the thread with Edit, Retry and Discard
The composer shows Markdown as you type, recalls earlier prompts with the arrow keys, and says why Send is unavailable
Mobile: a Steer button while June is replying, an image viewer and file previews
Drag the edge of the desktop sidebar to resize it
⌘⇧O asks where a new chat goes: pick Personal, a project or an organization, or press Enter to start where you are; the pen in the sidebar still starts one right away
Links in replies lead with their site’s icon
Built-in integrations you have not connected get a Connect row in the Integrations table, and June offers a connect link for an organization integration you have not connected
Fixed
Web search citations no longer show up as unresolved markers when June used other tools in the same reply
A sent prompt no longer comes back into the composer once June has received it
A long thread title shortens before the project and organization names in the top bar
In an organization chat, a message sent while June works runs as the member who sent it
Organizations, Microsoft 365 and Voice Calls
June now works for a team: create an organization, invite people, chat together and decide who pays. Mailboxes, Microsoft 365, Notion and Obsidian joined the integrations, and on the web you can talk to June in a call.
New
Organizations: create one, invite people by email or with an invite link, and let colleagues with your email domain join at sign-in
Organization chats: June answers when you tag @june, @mentioning a member adds them to the thread, and an organization’s projects share their chats and files with its members
Funding sources: an organization can pay for every turn in it with an API key or a member’s shared ChatGPT or Claude plan
Mailbox: connect Gmail or any IMAP mailbox, and June reads, searches and writes drafts in it
Microsoft 365: Outlook mail, calendar, Teams chats, and OneDrive and SharePoint files
Notion: June reads and writes the pages and databases you share with it
Obsidian: connect a vault kept in a GitHub repository, and June edits your notes in place and pushes them back, never force-pushing
GitHub: when a task needs your GitHub account and none is connected, June asks you to sign in in the middle of the run
Voice calls on the web: start a call in a thread and talk to June; the call runs on your ChatGPT plan when you have connected one
Use your June connections from Claude or Codex through June’s MCP server
Improved
A new sidebar with Pinned, Active, Drafts and Settled shelves, and a top bar with the thread’s place, rename and menu
Keyboard shortcuts: one ⌘K palette for search and commands, and ⌘/ lists every shortcut
Each project keeps its own lasting picture of the work, apart from yours, and the project page shows its memory
Each finished reply opens with how long June worked and one line on what it did; while it runs, the same line names the current step
A glass composer with slimmer pickers
The Integrations page lists every connection in one table you can sort by column, and Slack installs live there too
A project chip on sidebar rows and a project filter beside Search
Mobile: long-press a thread to pin, settle or share it, and June links open in the app
Slack: replies show as task cards you can steer while June works, and saved Slack connections name their workspace
In Slack channels and threads, June answers only when @-mentioned, and sends its connect links by direct message
Fixed
Steering while June is using a tool no longer cuts the step short or loses the tool’s result
A dropped attachment upload is retried, and a file that still fails is named
The sidebar shows when a thread last had activity instead of a date in 1970
Slack mentions show as names instead of raw user ids
Mobile: Markdown tables and code blocks follow dark mode
Projects and Honest Failures
Projects give a group of conversations their own instructions, memory and files. Underneath, failed turns stopped hiding: every failure now shows up as an error you can retry.
New
Projects: create a project with its own instructions and mounted files, then start chats inside it. Every chat in a project shares the same memory and sandbox, on web and mobile
Download button directly on PDF cards the assistant produced, next to Preview
Improved
PDF attachment cards redesigned as a single hairline row instead of a filled box
iOS loading rebuilt: Home and thread screens no longer spin indefinitely, and a stall shows one clear “Still loading — tap to retry” instead of a “Reconnecting…” caption
Fixed
Claude replies no longer come back empty: the reply budget was raised past the old 4,096-token cap that reasoning used to exhaust, and a reply that still hits the limit fails visibly with Retry instead of saving a blank turn
Failed runs show as errors with Retry after a reload or on a second device, instead of a plain “Please try again” bubble
Long tool-heavy turns no longer lose their tools after about five minutes when the sign-in token expires mid-turn
Documents, Images and Voice Input
June can now write real documents and publish them where you keep your files, generate images inline, and take dictation on your phone.
New
Documents: ask for a memo, report or letter and June compiles a PDF in your sandbox, attaches it to the chat, and a Preview button opens it in a side panel
Publish workspace files to Google Drive or an ownCloud/WebDAV server, and push to GitHub repositories, straight from the sandbox
New ownCloud connector on the integrations page
Image generation: June creates images inline on web, mobile and email through your ChatGPT subscription
Attach button in the web composer for files and photos, alongside drop and paste
On-device voice dictation in the mobile composer
Improved
Model picker opens instantly with the last known catalog while provider status refreshes in the background; it used to wait around five seconds
Mobile: swipeable thread rows with spring physics and press feedback, a searchable model settings sheet, a Stop button while June is replying, and a glass composer on iOS 26
The “memories in context” chip now stays on every reply, not just the live turn
Memory review is retired: facts June extracts are live immediately instead of waiting in a provisional tier
Fixed
The mobile app no longer floods push registration on launch, which was behind the chronic “Reconnecting…” and “Still loading” states when opening a thread
Your Personal Soul is no longer written as if you were named June, and no longer nests wrapper markup on each rewrite
The microphone shows by default on mobile; the voice-input flag is a kill switch rather than an opt-in
Faster First Byte, No Duplicate Replies
A week on the send path. New chats start streaming as soon as your message is accepted, and a retry after a timeout reattaches to the run that is already answering.
Improved
New chats return their stream immediately and do the turn setup inside it, so the first byte no longer arrives 10 to 20 seconds late and mobile stops hitting its connect deadline
Conversation title generation moved off the send path
Fixed
Retrying a send that timed out reattaches to the existing run instead of starting a second one and producing a duplicate reply
A sent prompt no longer reappears in the composer after a refresh
Pasting a very long text no longer fails the turn; memory recall reads the opening of the paste and never blocks the reply
Steadier Sign-in and Drafts
Fixes for the small betrayals: drafts erased in fresh chats, false reconnect prompts, and Server Errors on returning to an idle tab.
New
Claude models are discovered from Anthropic’s live catalog, so new releases show up in the picker without an update
Fresh chats open on their own URL and keep your draft; typing in a new chat is no longer erased when your session refreshes in the background
Improved
Connected ChatGPT and Claude credentials are refreshed proactively before they go stale
Fixed
No more false “reconnect your provider” prompts on transient errors; only definitive authentication failures ask you to reconnect
Returning to an idle tab no longer shows a Server Error; the app stays authenticated across token expiry
Opening a deep link without a session lands you on the page after sign-in instead of a JSON error
Settling a conversation stays available after work finishes, on web and mobile
⌘K search: Enter reliably opens the selected conversation
Sidebar settle icon no longer ghosts over the run spinner; memory chips line up with the thought-process icon column
iOS: late session refreshes are kept instead of dropped, closing one path to unexpected logouts
Faster Dashboard, Calmer Mobile
The dashboard shell now streams immediately on a cold load, and the mobile app stops fighting its own connection.
Improved
Dashboard cold load: the redirect chain collapsed and the shell streams right away, so the composer is typable far sooner (it took about 3 seconds on a fast connection and 5 on 4G)
Chat sidebar navigation compressed, leaving more room for the thread list
Mobile: persisted light, dark and system appearance, steadier live-follow scrolling, and safer update restarts after long background sessions
Home thread rows collapsed to a single line
Mobile subscribes to run state only for threads that can still change, instead of one subscription per thread, cutting the reconnect replay storm
Fixed
Opening a thread after the app has been open a while no longer spins forever
When a connected ChatGPT or Claude session has expired, the composer says so and links to settings instead of failing silently; your draft is preserved
Conversation Search, Personal Soul and Lossless Steering
⌘K now searches what was actually said, June keeps a versioned profile of you, and sending a message mid-reply no longer throws away the reply so far.
New
⌘K searches the full text of your conversations through a search index and ranks results by match quality
Personal Soul: a versioned profile June maintains about you, with full history and word-level diffs on the Memory page
Automatic settling window is configurable per user in Settings; zero means never
Mobile motion layer: spinner, boundary crossfades and press feedback on every control
Mobile chat surface: replies render on the canvas, your turns sit in a paper chip, with elevation tiers and a neutral palette
Improved
Sending a message while June is replying steers the run without losing the partial reply; the pre-steer output is kept in the transcript
Integration code runs no longer pop an approval card on every interactive turn
Fixed
Duplicate assistant messages after a refresh: the completed stream is now retired the moment the reply is committed
Mobile: duplicate sends, the socket-restart crash, the wedged streaming screen, and tool-only turns that rendered nothing
Connect X works again after three separate server bugs in the OAuth path
A second approval within one turn no longer fails with a mismatch error
“Thinking…” stays on screen until the reply renders something, with no blank beat
The composer blur no longer flashes when the input grows or shrinks
Dark Mode, LaTeX and Settled Conversations
The biggest week since the rebrand: dark mode everywhere, equations that render, and a way to put finished conversations to rest.
New
Full dark mode across the web app, docs and chrome, with a theme switch
LaTeX renders on web and mobile
Conversation settlement: settle or unsettle a conversation by hand, read conversations settle automatically after 72 hours, and settled threads move to their own section on web and mobile
Threads go unread when June finishes; right-click a sidebar row to mark it unread again
Assistant replies carry a footer with copy and a datestamp
Google Drive, personal email and Obsidian are available to June’s code mode as native plugins
Chat attachments are mounted into the sandbox on demand under /attachments
Reset: a five-step funnel for recovering from a setback, handing June a brief and seven daily accountability reminders
Mobile: resilient over-the-air updates with a manual check on Home, and older history loads as you scroll to the top
Improved
Spark skips the email code when you are already signed in, finishes its analysis in one pass, and its daily and 14-day follow-ups run on June’s normal schedule
June knows which connectors you have connected and mentions them when relevant
History messages carry timestamps so June knows when something was said
“Design an agent” opens on the work you want done instead of a nine-question form
Settle control moved into the composer footer, and the toast names the conversation it settled
Image attachments reserve their layout and no longer ship the original bytes, so threads stop jumping
Fixed
Completed streams no longer get stuck in a generating state
Messages keep their order while a reply streams
Mobile streams resume after switching apps, and a fresh thread no longer races its own first send
Sidebar activity reflects the actual run state, not a leftover stream marker
The integrations dashboard degrades gracefully when one source fails and streams its loading state
Composer notice overlap, blur clipping and top padding under long drafts
The conversation loading screen no longer flashes white in dark mode on mobile
Share Links, Usage Limits and Spark
Show a conversation to anyone with a link, check your ChatGPT and Claude quota before you sign up, and let Spark read what you save on X.
New
Public share links: share a chat read-only as a frozen snapshot or an auto-updating link, with attachment controls and per-message anchors
Limits: connect ChatGPT or Claude before creating an account and see your live quota windows on a timeline
Spark rebuilt on the June design system; it now analyzes your bookmarks and likes and runs on your connected ChatGPT subscription
X: bookmark and thread-context research, plus follower and post analytics tools
Fixed
Integrations dashboard restored and faster after a crash in the image font loader
Thread order is preserved when a stream resumes after a refresh
The final chunks of a streamed reply are no longer dropped
Binary attachment uploads work on mobile
Spark keeps the scan on screen instead of flashing it, and analysis progress survives interruptions
nicoolAI Becomes June
The product has a new name, a new home at dearjune.ai, and a new logo. Around the rename: a stop button, X as a connector, and a way in from X for new users.
New
nicoolAI is now June, at dearjune.ai, with a new logo and app icons; visitors arriving from nicool.ai see a short banner explaining the change
Stop button ends an active run immediately, on the server too
Open a new chat from a link: append ?q= and the message is sent as soon as you land
Connect X on the integrations page: read-only tools for profiles, posts, search, timelines and mentions
Spark: an X-first way to meet June, with an optional weekly Spark posted back into the same conversation
Support form in the dashboard for bug and feature reports, with screenshots
iOS Home Screen quick actions: new chat, continue last chat, report an issue
Schedule detail page rewritten to answer “did my reminder fire?” in one place; the schedules list stays live
Browser tabs show the conversation name
All integrations live under one page in the dashboard
Usage page redesigned around one headline figure and a trend chart
A “memories in context” chip above each reply shows which memories June read for it
Improved
A submitted prompt parks in a notice above the composer while uploads finish, so the composer clears immediately without the prompt disappearing
Memory saves durable facts only; task chatter no longer gets written down
GPT-5.6 Luna is the fallback model when your subscription is unavailable
Terms and Privacy links on the mobile sign-in screen
Fixed
MCP: granular OAuth errors, tool-discovery failures surfaced instead of a silent zero tools, OAuth opens as a real navigation, and “Connected” only shows when discovery succeeded
Sandbox idle timeout resets after each command instead of a fixed ten-minute deadline from boot
iOS build 32 crash on launch
A freshly started chat’s sidebar row stays highlighted
Set it, send it, get on with your day.
June is getting better at working in the background: reminders and recurring tasks are easier to manage, notifications bring you back when an answer is ready, and conversations hold onto more of your work.
Create a simple reminder just by asking. Reminders and recurring tasks now live together in one schedules view, where you can review and manage everything June is set to do later.
Get an “answer ready” notification on the web or your phone when longer work finishes, then tap it to jump straight back into the conversation.
Unsent messages are now saved in your browser, so you can move between conversations without losing a draft.
Drop files anywhere onto a chat to attach them. Larger uploads are more reliable across web and connected channels, with clearer progress while a file is being prepared.
Sources from web research now appear as clear, clickable citations inside answers.
Mobile conversations now load earlier messages and show more of your recent chats. Sign-in also survives app updates more reliably, and model selection is steadier while choices are loading.
Slack conversations can now use the relevant Google Drive links and files shared in the thread, giving June the context it needs without making you repeat yourself.
Chats feel faster and calmer, with quicker thread switching, immediate feedback while June starts thinking, cleaner spacing, and horizontally scrollable code blocks.
Keep talking. I’m listening.
Conversations feel more natural, memory is easier to understand, and your assistant has new ways to work with the information that matters to you.
Send another message while June is still working. Your follow-up joins the same conversation naturally instead of starting a separate reply.
Telegram conversations now stay in sync with June, including group chats, live replies, and messages sent by your automations.
When June remembers something new, you’ll see a small “memory saved” note beneath the conversation. The redesigned memory page also makes saved details easier to review.
New data workspaces give June a safe, organized place to work with lists, records, and other structured information on your behalf.
Explore the new skills catalog to see what your assistant can do and which capabilities are available to you.
The mobile app now makes full use of the iPad screen, while cleaner code blocks and a new glossary make chats and docs easier to read.
Channels, one conversation core.
The channel foundation is moving onto one canonical conversation model, with Chat SDK handling native platform transport while Convex remains the durable source of truth.
Chat SDK and the enabled Discord, Slack, and Telegram adapters moved together from 4.32 to 4.33; WhatsApp remains parked until its Cloud API setup is ready.
Channel work now targets native threads, typing, reactions, streaming edits, attachments, and automation replies without making transport state authoritative.
Choose your engine.
June can now run a conversation through either a ChatGPT or Claude subscription. The provider layer, model picker, and supporting runtime all learned how to keep that choice explicit, stable, and safe across web, mobile, and background work.
Connect Claude Pro or Max from settings, choose Claude models in web or mobile, and keep each conversation pinned to its original provider so its context never jumps engines mid-thread.
The Codex model list now comes from the live catalog instead of a hard-coded snapshot, with unavailable saved preferences cleaned up automatically.
Conversation pins landed on web and mobile, making important threads easier to keep at the top of the list.
A new command palette lets you search visible conversation threads and jump between them without leaving the keyboard.
MCP setup now detects and fills in server details automatically, while sanitizing discovered metadata before it reaches the form.
GitHub setup now reports the app's live status and gives clear feedback throughout the OAuth connection flow.
Shared-channel memory is now owned by the room rather than an individual participant, and private user-fact writes are suppressed in channel conversations.
Mobile sessions recover from transient token-refresh failures without signing you out, while sign-out and concurrent refreshes are fenced against races.
Runtime hardening covered expired attachment links, inbound-tool audience checks, MCP OAuth failures, Claude web search, and subscription-aware billing for auxiliary model calls.
Consolidation day.
The day after the sprint: fewer new toys, more load-bearing structure. Everything the agent executes now runs in one sandbox, and MCP servers went from plumbing to a user-facing feature.
One execution environment: the legacy bash runner is gone — every bash root now runs in the Vercel Sandbox.
Google Drive is materialized into the sandbox at /gdrive with per-caller authorization, so the agent works on your files like local ones.
Scheduled automations became Convex-triggered, Vercel-executed cron runs — same sandbox, same policy checks.
MCP servers went live in the product: a first-class /dashboard/mcp section, and connected servers now work on inbound channels (WhatsApp, Slack, email) too.
The pack install engine grew a reconciliation core — plan, apply, and export a tenant back to a pack — hardened through four review rounds.
Chat polish: a user dropdown in the sidebar footer with a real profile widget, and a duplicate-persistence fix.
one working day
The 127-commit day.
From 10:00 on July 7 to 01:47 the next morning, eight workstreams moved in parallel — two Claude subscriptions and one Codex subscription running agents against the same repo, with every change going through review before it landed. Here is what actually shipped, in more fidelity than a tweet allows.
01
The chat runtime moved onto Convex
convexstreamingauth
Every web chat turn now runs end to end as a Convex httpAction — streaming, tools, memory, file uploads, Google Drive mounts, and the sandbox bridge all execute next to the data instead of inside Next.js. After the two runtimes reached parity, the old path and its CHAT_RUNTIME feature flag were deleted.
Chat requests carry a JWT that Convex verifies itself — an invalid token is now a clean 401, not a 500.
Resumable streams survive refreshes without phantom replays, stop polling on cancellation, and garbage-collect their chunks after every turn.
Conversation titles, reasoning traces, and memory writes persist from the same action that streams the reply.
02
Sandbox v2 and a real policy layer
sandboxauthzbilling
The execution sandbox upgraded to @vercel/sandbox v2 with a native keep-alive lifecycle, and every piece of v1 workaround machinery was deleted. Underneath it landed a new policy core that decides what any given turn is allowed to do — and who pays for it.
Work units with deterministic keys and scope shares define what a turn may touch; revoked and expired shares filter out by default.
A single operationAuthz choke point now fronts every operation, with adapters per surface.
Inference funding is enforced per turn, so usage is always attributable to a plan that covers it.
Four review waves hardened lock races, expiry-bounded renewals, and snapshot-commit status checks.
03
Bring your own MCP servers
integrationsmcp
You can now connect your own MCP servers to your agent: an encrypted credential vault, OAuth flows for servers that need them, and a dashboard section to manage everything. A new run_integrations_code tool gives the agent code-mode over every server you connect — it writes small programs against your tools instead of calling them one at a time.
Secrets live in a per-user vault and never appear in the conversation.
Works across channels — the same connected servers serve web chat and inbound messages.
04
Native web search, code interpreter & image generation
toolsmobile
Web search migrated from a bolted-on tool to the provider's native one, and code interpreter plus image generation joined it. Charts and generated images render in web chat and are delivered through to the iPhone app.
05
Agent packs became buildable artifacts
packsnix
Professions ship as installable packs — soul, skills, and automation templates in one portable directory format. A serializer makes packs fully round-trippable, and a Nix realization layer turns every pack into a buildable flake, pinned toolchain included. The first production pack was reverse-engineered from the agent that runs this company: 50 skills and 11 automations, pushed back through the standard pipeline.
Core pack plus five profession packs authored against the new format.
Automations can ship real scripts (scriptPath) and pull custom packages via flake refs.
Import validation hardened across three review waves: slugs, versions, nix refs, manifest content, and cron edge cases.
06
Design-system groundwork
designin review
A forensic study of a reference-grade product UI — twelve reports and a construction bible — plus a dark-first token layer and full restyles of the landing, docs, chat, and UI primitives built on it. This one is still in review, which is why the page you're reading looks the way it does.
07
The mobile app grew up
iosandroidexpo
The iPhone app learned attachments end to end — attach from the library, paste an image, or share into the composer from any app — and Android arrived with build and Play-store delivery parity. The share sheet now asks whether you want a new thread or an existing one.
Composer polish: one-tap reasoning menu, send button on the input line, paste folded into the “+” menu.
ChatGPT quota usage is visible in the app, and the TestFlight pipeline was unblocked (Xcode 26 for SDK 56).
08
Chat & agent UX
webux
A reasoning-effort selector next to the model picker, the sidebar split by channel, ChatGPT quota usage surfaced in web and mobile, and a redesigned reasoning and tool-call display. Inference errors are now classified — when your quota runs out, the agent says so on every channel instead of failing silently.
git log --since="07-07 10:00"127 commits
01:4769133e8feat(mobile): iOS share-sheet target picker (New thread or existing)
01:31056bc3bfeat(agent): classify inference errors + surface quota-exhausted to all channels
00:42522d5dbfeat(tools): native code_interpreter + image_generation, mobile viz, image delivery
18:000744e68refactor(chat): drop CHAT_RUNTIME flag
14:035259672feat(avatars): nix realization layer — every pack is a buildable flake
10:58dedecfcfeat(mobile): attach, paste, and share files into the chat composer
… 115 more
Shipped means pushed and reviewed — a few of these are still rolling out behind flags or making their way through final review.
Groundwork weekend.
The quieter weekend that made the sprint possible: a walking skeleton of the new chat runtime, and a landing page that finally tells the truth about the product.
A Convex httpAction learned to run a full chat turn — streaming spike, resumable-stream store, then tools, memory, the bash bridge, Google Drive mounts, and file uploads, one commit at a time.
The landing page was repositioned around what June actually is — a virtual assistant — and rebuilt around the brand green with real product content instead of a generic task list.
The landing design became the single source of truth for theme tokens, so the dashboard and docs draw from the same palette.
Android support began its climb to iOS parity: builds, Play delivery, and shared composer code.
All of this works for you today.
Sign up in a minute and hand June the first thing on your plate.