Pages refetch on org change events instead of loading once
Every successful write through forwardToApi now publishes rt.org.{orgId}.{domain} on core NATS (the domain is the first backend path segment, skipping security/...
The Opt Out tab and the lead chip update live
Both subscribe to **************** (EmailService and SecurityService publish after every committed change; MediaService relays), so a recipient unsubscribing, a...
Email opt-out chip and panel on the lead page
Beside the lead's email address there is now a chip saying whether the person may be emailed: Emails allowed, Opted out of all email, Paused until a date, Some ...
Settings -> Email -> Opt Out, the organization's do-not-email list
Everyone who asked not to be emailed, in one place. A masthead says how many are off all email and why (unsubscribed, bounced, marked as spam, asked us to stop)...
Square, bevelled buttons and a 2px-cornered thumb on every scrollbar
The bar's four buttons (jump to start, step back, step forward, jump to end) are now 20px squares with hard corners, and the thumb keeps only a 2px radius. Both...
Outbound e-mail hosts, send windows, per-host warm-up and the staged outbox
- Settings β Platform β Configuration gains an Outbound E-Mail Hosts tab, behind the platform right MANAGE_OUTBOUND_EMAIL_HOSTS: the hosts shared with every o...
Delete, filter and switch off NoReply Outbound rows
The audit page gains a subsystem column and filter, checkbox selection with "select all" and "select all matching", and deletes for one row, the selected rows, ...
The campaign editor writes edge to edge, merge tokens in their own column
The subject sits under the campaign title and the audience beside the status chip, so the compose step is the email body alone, filling the middle of the page, ...
A campaign the backend cannot send says why and how to fix it
EmailService now pauses a campaign instead of failing its recipients one by one when it cannot send it: its From is off the platform relay's domain, or there is...
Warm-up says idle days don't count and draws the dates that slid
A warm-up day in which nothing is sent no longer counts: the run slides forward and the day repeats when sending resumes, which makes switching warm-up on befor...
Recipient rows carry contacted, and already-sent rows keep their mark beside the status
EmailService's recipient DTO now reports whether the campaign has already emailed each address. The mapper carries it through, together with lastError, and fill...
The campaign From field says when the bulk relay would refuse it
The campaign's own From field, defaulted from the bulk provider, warns when the address is off the provider's domain, as mail that may land in spam. On the plat...
Warm-up pacing banner on /marketing/email
While the new host warm-up is pacing, campaigns go out far more slowly than their own settings say, and nothing on the campaign said why. The campaigns workspac...
Typed bulk sender client with field errors and the warm-up endpoints
The client knew a provider status called PENDING that the backend never sends, so a sender that was saved but not yet tested fell through to "Not configured". I...
Connection rule, presets and warm-up view model behind the bulk sender
The pure pieces the new screens are built on, each with tests: - the backend's port-first connection rule, mirrored so the form can say how KamoCRM will conn...
Rebuilt bulk sender tab with a new host warm-up panel
The Bulk Email Sender tab is rebuilt from one long form into a set of cards over a draft of the saved state: - a masthead with the live status (a saved but unt...
Preview the email as sent, a Custom / No Template audience, and a real From field
Preview: a dialog that renders the editor's own buildBodyHtml() output - the string Save stores and the dispatcher sends - so the audience's header, signature a...
NoReply Outbound, a god-only audit of mail sent as the platform NoReply address
A third section under Mail, shown only to god-eligible members, opens /messages/outbound/noreply: every message EmailService handed to the relay as the platform...
A tracking link can land on the white-label CRM fees article
Adds **************** to the destinations the tracking-link picker offers on /marketing/tracking, with its own icon. The path is locale-free like its siblings: ...
A department's Select checks the members it is showing
The Directory's per-department Select used to switch the whole list into select mode with nothing checked, and read "Done" until pressed again. It now checks ev...
Void an organization from Platform -> Configuration -> Organizations
The Organizations tab gains Active and Void sub-tabs, and each organization's drawer a way to void it β or, on the Void tab, to restore it. - Active / Void sub...
Topic titles in the bar's dropdowns sit on a darker plate of the brand
A menu's own name at its top and every section heading (Support's "Online Support", "Bugs & Enhancements", "Training"; Docs' "Create new") now sit on a rounded ...
Faces on messages only in conversations of three or more
A face beside every message tells people apart, and between two people the side a message is drawn on already does that - so the corner face now appears only wh...
Every message wears its author's face, on the bubble's corner
In every chat popup tool window - Chat, Support, Exec2Exec, Social, SMS, AI Chat - each message now carries a 16x16 photo that overlaps the bubble's top-left co...
The Signature Requests tab, and a colleague's save in the template editor
Signature Requests, between Templates and Common in the Docs manager: every document the collection's templates sent out for signature, in a grid paged on the s...
Add a meeting link to the conversation - always the platform's Kamo Meet
Both sides of an Exec2Exec window now carry the camera the other chat windows have: Add a meeting link. The meeting is created by MediaService as the PLATFORM o...
The desk's filters, faces and presence; an Exec2Exec badge that burns
Interaction Center > Chats > Exec2Exec gets two filters under the sub-tabs: Org Owner (All | Org-less | Org Owner) and Order By (Last Message | Latest Sign In) ...
Files and Templates, version history, and versioning settings
Members asked for documents that keep their history the way their organization chooses, and for templates that stand on their own instead of the Originals/Modif...
A Nav Logo Overlay and a Careers Logo Overlay
Behavior & Labeling gains two more logo overlays in the vocabulary the other six use - a token, resolved against the org's own palette: - "Nav Logo Overlay", d...
A minimized Exec2Exec head runs a current of light round its rim
A line to KamoCRM's executives must never sit in the dock looking like one more chat. Its minimized head now carries an energy rim: a gold-to-white-to-sky arc r...
NavTop's Exec2Exec control is the desk for a KamoCRM executive
For a member with Exec2Exec Access standing in the platform organization, the control now counts messages from clients they have not viewed (GET ***************...
One brand-painted dropdown surface for the whole top bar
Every dropdown that hangs off NavTop β the eight option menus (Mail, Docs, Call / Text, Calculator, Support, Settings, Linux Desktop, Games), the availability p...
Show who from KamoCRM is on the chat, and how to reach them
The customer's window now lists the KamoCRM executives on their conversation, re-read whenever somebody is added or removed. The line shows NAMES only, with tit...
Stop at a pinned Interaction Center; keep windows under every menu
Two follow-ups to 0c5ef994 (maximize beside the nav). A PINNED Interaction Center now takes its width away from the maximized pane. Pinned, the panel is worked...
Maximize beside the nav, not over it
A maximized tool window used to take the whole viewport. It, its navigator column and its tab strip were all pinned at (0,0) at the dock's stacking level, over ...
The executive channel in the console
A direct line between a customer executive and the KamoCRM executives: the chat half of the support window with no ticket, no status, no rating and no queue. T...
Finish the category page β width, one back arrow, real words
The three managers were written to sit inside a nested tab of a tab. As a page of their own they needed the space they now have. - Configuration capped itself ...
Categories are a table, and each one opens as its own page
/settings/features/docs carried eight tabs: General, then seven that each mounted the same three managers against a different ordinal. Seven copies of one scree...
A Signature Date field, and a send that admits when nothing was emailed
**"Sent" was not the same thing as "delivered", and the dialog never said so.** ESigService discarded the result of every invitation email, so a send whose mail...
Open at the front of a new session, stay put inside one
Two rules that only make sense together, and the panel did the opposite of both. A member arriving in a NEW browser tab β a fresh sign-in, a second tab opened ...
Twelve endings, and every one of them looks different
A hand ends for everyone at the table at once and it ends differently for each of them. Until now it ended one way: somebody won a pot, and the window played th...
A side pot says who is playing for it
The last "consider" left in the request, and the one question a short stack actually has: when the middle splits in two, both piles look like money and only one...
One table at a time, and a table you can name
The felt half of the four rules MediaService started enforcing in a02dd1d. ONE WINDOW. The registry said `maxInstances: Infinity`, reasoning in a comment that ...
The whole window celebrates when somebody wins
A win used to be a sentence in a strip under the board. It is now the entire tool window: an impact flash and a shockwave, light turning behind the board, firew...
The Directory leads the tab strip, Chats follows
Flips the two always-present tabs. The strip now reads Directory, Chats, Sales Scripts, Terminals. The panel still OPENS on Chats: the button that opens it is ...
A put-away table says you are on the clock
The other half of the hexhead turn indicator. A minimized Hold'em window now lights its head while the action is on you, and drains the head's own outline β gre...
A minimized game says it is your move
A head could already say a message had arrived. It could not say a game was waiting on you β chess tinted its border brass, which on a forty-pixel hexagon at th...
The Show button, and the clock hook mounted
The client half of showing a hand nobody made you show, plus the mount point for the turn-clock audio that landed dead in the previous commit. SHOWING OUTRANKS...
Your own clock, out loud
A thirty-second clock a player is not watching is a hand lost to a timeout while reading an email, and the felt's draining bar only helps somebody already looki...
Every logo on the Branding card can be downloaded
The download control shipped on one of the six artwork slots β the compact company logo β because the row was written inline at that one call site. The other fi...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.