A window the member brings to the front lands with a light you cannot miss
Clicking a hexhead, or the strip of a window standing behind, brought the window forward with a faint shadow bloom (strip) or a 600ms green glow (hexhead) - eas...
A meeting from a chat window invites the conversation, and one email goes to everyone
Starting a meeting from a conversation window's meet button, or from a chat hexhead's "Invite to Meeting", invited nobody. The dialog closed as though the invit...
My Scheduled Webinars and Join Existing read the booking the server actually sends
The Support badge now takes a presenter to My Scheduled Webinars when a session is booked with them (mediaservice 0212445). That tab — and the wizard's Join Exi...
No OAuth client secret in kamo-internal's source; the anonymous token route is gone
**************** assigned the client-credentials secret for four production client ids (kamo:1:crm:internal, kamo:4:kamo:internal, kamo:5:ebonix:internal, kamo:...
Integration forms send only the credentials that were typed
The org CalDAV/CardDAV tab sent all four server fields on every save of an Apple or custom server. The fields never show what is stored, so they were empty, and...
Windows that do not fit the dock stand in rows behind it
A tool window that does not fit the front row now stands in a row BEHIND it, one title strip higher per row: its 42px title bar and 10px of body show above the ...
The provider form never holds the stored API key
AIService no longer returns provider API keys (only hasApiKey and a last-four mask). The edit button used to copy the returned key into the form, so it was in t...
Overlays clear the tool windows, scrollbars stack with their layer, and the rest of the shell geometry
What was left after pages stopped painting over the shell. Overlays opened BEHIND tool windows. Hand-rolled modals, menus and toasts named levels inside the sh...
Start a Facebook / Instagram connection through the authenticated connect-start
The Connect button navigated to **************** MediaService trusted both values with no session, so anyone who knew a connection id could bind their own page ...
Pages stay under the nav, the Interaction Center and the tool windows
The same two mistakes as /calendar's, everywhere else they were made. AuthedChrome's content box names no z-index, so a z-index in page code is a level in the R...
The drip enroll dialog finds leads by email
The lead search behind it now matches a lead's email (kamo-shared-library 992569a6, live with SecurityService 5c7319a), so the dialog says so: name, email, comp...
The calendar stays under the nav and the tool windows
/calendar positioned itself over the viewport — fixed at 56/80 with z-index 1000 — instead of filling the content box AuthedChrome gives every page. That box na...
Drip campaigns on /marketing/email — triggers, a visual builder, people and performance
/marketing/email gets a Broadcasts / Drips switch (?view=drips). The drips view lists every drip as a card with its trigger, its sequence and live counts, KPI a...
The Lifestyle Logo, a fourth logo per brand and the default background watermark
Behavior & Labeling gains a Lifestyle Logo slot beside the full logo, the simple logo and the tab icon, in both the company and the software (white-label) rows....
The campaign editor's Reply-To is a choice — NoReply, Member's E-mail or Custom, NoReply by default
The free-text Reply-To under the From becomes CampaignReplyToPicker, three choices that each say where replies land: - NoReply (default): NoReply@<the campaign'...
Rebuild for the Bulk Email settings page's hand-written translations
kamo-translation-dictionary de9ab66f writes Domain Setup, Sending, Opt Out and Deliverability, and the campaign screens' new From picker and sending-domain stri...
Outbound E-Mail Hosts shows the bulk relays as receiving servers see them
A "Bulk relays" card above the platform hosts: the shared relay every organization's sending domains leave through (contact.kamocrm.com, 47.181.8.86) and the pl...
Bulk Email gets Domain Setup and sub-tabs, /marketing/email explains what is missing, campaigns get a From picker
Settings → Email → Bulk Email is now four sub-tabs in ?sub=: Domain Setup · Sending · Opt Out · Deliverability. The member lands on Domain Setup until a sending...
Rebuild for the Email Campaigns widget's hand-written translations
kamo-translation-dictionary 93728a83 rewrites home.widgets.emailCampaigns by hand in 20 languages, replacing synced values such as de "Eins eins eins eins" for ...
Email's Deliverability tab has a settings-menu entry
The tab renders for whoever may manage the opt-out list (MANAGE_EMAIL_OPT_OUTS or the organization owner), but the settings menu never listed it, so settingsMen...
The scrollbar guard and the recipient-status tests pass again
Both were red on main, and vitest does not run in CI, so nothing noticed. - oneScrollbar.test.ts ("is the only thing in the app that styles a scrollbar") fai...
One copy of the Email Campaigns list's two-column comment [skip ci]
59a13aa2 moved the comment beside the state it explains and left the original above rowsKey. Comment only; nothing to build.
The campaign tabs get scroll arrows back, without hiding the selected tab
On a screen too narrow for the five sub-tabs, the strip now shows left and right arrows beside it, as the maximized-window tab strip does. It had none since the...
A live send in the Email Campaigns widget gets a spotlight card
With one send in progress, the In-Progress tab was a single thin row in a pane with room for far more, at the moment the widget matters most. When every campaig...
A checkbox, button or link inside a grid row no longer opens the row too
The ⋮ bug from /marketing/email, in the six other grids that have it. AG Grid fires rowClicked from its own native listener on the row container, which runs bef...
Email Campaigns widget tabs are the campaigns screen's stages
The widget filed campaigns under its own Live / Sent / Drafts, which put a cancelled campaign under Sent and a scheduled one under Live. Its tabs are now In-Pro...
The campaigns list follows what colleagues do to a campaign, live
BulkEmailWorkspace takes the change frames useEmailCampaignsWebSocket now delivers (onChanged, d0b56adf). A frame names a campaign and what happened to it, neve...
The Email Campaigns widget, live on the launchpad
A new home widget, email.campaigns, on the launchpad of everybody who can open the campaigns. Its five rights (EMAIL_CAMPAIGNS_WIDGET, 321-325) hang off VIEW_BU...
In-Progress, Not Started, Paused, Complete and Archived tabs, and the ⋮ opens its menu
/marketing/email splits the campaigns into five sub-tabs, each with a live count, and every campaign is under exactly one: - In-Progress: sending - Not Started...
Email Campaigns is the first Marketing tab
The Marketing Tools tab strip now reads Email Campaigns, Marketing Materials, Social Media, Tracking Codes. Bulk Email moves to the front under its new name, an...
The launchpad bands open into the bar's own dropdown surface
The administrator bar and the pinned-app bands are painted with the top bar's gradient, and then answered a hover with something from another app entirely: a wh...
Let an admin choose who is copied on presenter emails
The Scheduled Webinars tab gains an "Additionally Notified" section beside the list of webinar types. The team members chosen there get a blind copy of every au...
Open and click rates, tracking choices, 10,000+ outbox counts, person-asked on leads
- Campaign card: opened and clicked, as a share of delivered mail (or "Not tracked"). - Deliverability > Campaign rules: open and click tracking, the platform's...
See who a campaign reaches, and why not everyone
- Campaign preflight card: "1,000 selected · 742 eligible · 258 skipped", with each reason (unsubscribed, bounced before, disposable, role address…) opening...
An organizations-created icon beside every member and team member
The Members and Team Members tabs on /account get a column beside Name: a filled building in the brand colour with a count for somebody who has created organiza...
An organization's and a member's own page transition
The page transition is now chosen at three levels. The platform's stays on Platform Administration → Transitions; an organization can choose its own on Behavior...
Five more page transitions, each with its own properties
Aperture, Curtain Split, Venetian Blinds, Liquid Wipe and Shatter join Tile Dissolve. Every transition is now an effect in app/lib/transitions/effects, drawn by...
Add recipients and Send to latest on a campaign that has gone out
- A campaign's progress page has Add recipients: the recipients step in a dialog (upload, IDs, the All boxes, addresses), saved in slices as the editor save...
Tile Dissolve's tile size and tile colour, set per transition on the Transitions tab
Each transition now carries its own properties, stored per transition beside the active one, so switching transitions keeps each one's choices. Tile Dissolve ha...
A remounted shell no longer leaves the page cover standing on reload and sign-in
On every reload and every first document after sign-in the cover stayed up over the page, while in-app navigation revealed it fine. PresenceWrapper renders bare...
The recipient list's last page is the last page, and addresses sit level with their rows
Last reads a full page back from the end, so when a list does not divide into whole pages it overlaps the page before — and was numbered from the start, as page...
Shorten admin bar labels to Billing, Stats, Roles, Block, Log
The panel heading keeps each screen's full name via titleKey, as White Labeling and Apps already do.
Page transitions — how a navigation is seen, the wave's timing, and the plan
The page cover and its Tile Dissolve reveal, in place of the loading screen
Between pages the main view area (never NavTop or NavPri) is now covered in the organization's primary colour with its full logo centred on it, painted with the...
A Transitions tab to choose and preview the page transition
Platform Administration → Configuration → Transitions, gated by the new MANAGE_PLATFORM_TRANSITIONS platform right and registered everywhere a console tab is: t...
The campaign recipient list is paginated, with totals
The recipients grid on a campaign now pages like a list of billions should: First, Previous, Next and Last, rows per page, "101–150 of 3,916" and "Page 3 of 79"...
"All leads / accounts / applications" on a campaign, at any size
Each id box on the campaign editor now has an "All …" box beside it. Ticked, the box folds into a live panel for everyone of that kind the signed-in member can ...
The Opt Out tab keeps its content off the card walls
SettingsView's white card and TabPanel carry no padding; every settings tab supplies its own, and this one did not, so its heading, buttons, figure cards and li...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
