Re-issue a share link from its row, and stop losing the one-time URL
The Share links list offered no way to view or copy a link, and nothing explained why. Nothing can reveal an existing one — only the token's SHA-256 is stored, ...
A share link's email was dropped twice before it could be sent
"I created a link and got no email." Two independent silent drops, both of which return a swallowed false that the panel rendered as plain success. 1. kamo.ema...
Pin the quote letter's dotted templateKey, as the HR family already is
The constant is not the templateKey. CanonicalTemplateLoader.load derives only the FILENAME from the constant (QUOTE_SENT -> quote-sent.json) and reads template...
Restore the timestamp that every lead association depends on
A method was inserted between @CreationTimestamp and the dateCreated field it annotates, so the annotation bound to subject() instead. These entities are read b...
Re-derive the rail's hover-peek instead of trusting two events
The collapsed rail's peek state was written by exactly two things, pointerenter and pointerleave on the rail itself, and nothing ever re-derived it from where t...
Send MUI's styles with the markup that needs them
internal.kamocrm.com was serving a 1.34 MB document containing 123 `css-xxxx` class names — `MuiBox-root css-e26q24` among them — and not one rule for any of th...
A reopened conversation is the one you were having
A member started a chat about KB articles, minimized it to its hexhead, went to their mail and brought the window back to a blank conversation — "having to star...
Read a new lead's phone number against the country it is in
The New Lead form asks which country the lead is in, then ignored the answer when reading their phone number. Both PhoneField instances and the validator fell t...
Do not follow a protocol-relative link in-app
"//example.com" starts with a slash but is another origin. The in-app branch matched it and would have handed router.push an off-site destination; it belongs in...
Drop a @Transactional that never applied
loadCatalogue is reached from catalogue() on the same bean, and self-invocation does not pass through the proxy, so the annotation was decoration. The query is ...
Rebuild against kamo-shared-library HEAD
Ships the quote pricing fix: a unit price is a per-month rate, so a term multiplies it rather than the engine dividing down to it. An annual option quoted one m...
Mirror the monthly-rate reading in the editor preview
previewOption divided the line-item sum down to a monthly figure the same way the server did, so the card and the print preview showed one month of any term. A ...
A unit price is a MONTHLY rate, so the term multiplies it
The engine treated an option's line-item sum as the price for the whole billing period and divided down to reach a monthly figure. It is the other way round. P...
Follow a link without losing the conversation
Reported alongside the KB links all pointing at one article: "when it is fixed and they will work, please let the AI chat still hover on top so you don't have t...
Resolve the articles a passage names into link targets
A hub article — "Setting Up Your Organization — A Checklist" is one — exists to send the reader to a dozen others, and names every one of them in plain text. Th...
A KB link goes to the article its text names
A member asked how to set their org up and got the setup checklist back, each step naming the article that explains it. All three links pointed at the same arti...
Keep the words typed after an inserted photo
The same reported message had a sign-off underneath its photo. That did not arrive either — the reading pane showed an empty body above the attachment. There i...
Let a photo attached from a phone be opened
A member sent themselves a message from an outside account with a file attached. The message arrived; the file was nowhere in it — no preview, no download link,...
Fix the Reports tab's folder heading nesting
The per-folder count Chip sat inside the heading Typography. MUI renders subtitle1 as an h6, which takes phrasing content, and a Chip is a div — so the count wa...
Give a folder with an ampersand in its name its message count
A mailbox called "Bugs & Enhancements" showed no count in the sidebar while every folder beside it showed the right one, and the mailbox totals were short by ex...
Give the annotation tools their tooltips back
The five annotation tools in the PDF designer built their tooltip key by interpolating the tool type onto a "tool_" prefix, but the dictionary names those same ...
Ask whether the guests should be told, and how
Adding a guest to an event did not tell them, and the dialog never said so. The only thing that ever wrote to a guest was a reminder — which reaches a colleague...
The columns that let an event invite its guests
Three on calendar_events, because whether a meeting invites people belongs to the meeting rather than to the moment it was saved — an edit six weeks later that ...
Send the meeting invitation the guest list implied
Adding somebody to an event's guest list did not tell them. Only a reminder ever wrote to a guest, and a reminder reaches a member in-app and an outside address...
Let an event invite its guests, and put it on their calendar
Saving an event told nobody. The guest list was materialized and the audience stored, and the people on it heard nothing until a reminder fired — which reaches ...
Rebuild against kamo-shared-library HEAD
Ships the quote total fixes: a committed term now totals the term rather than one period of it, and a multi-option quote is no longer headlined by whichever alt...
A three-year deal totals three years, not one month of it
Two faults, both showing a monthly figure where the term's value belonged. 1. The headline took periodTotal + setup. On a MONTHLY option committed to 36 mon...
A committed term is worth what it commits to
The card led with the recurring rate whatever the term, so a 36-month commitment priced at $100 a month showed $100. The deal is $3,600. Where the contract run...
Keep a grid's popups opaque when its body is see-through
Opening Page Size in the doc manager under My Team Member Profile showed the rows reading straight through the open menu. It looks like a z-index bug, and was r...
A committed term is worth what it commits to
The card led with the recurring rate whatever the term, so a three-year commitment priced at $100 a month was presented to the customer as $100. It is $3,600, a...
Give the Reports tab the console's own layout
It shipped as a bare unpadded Box, so the content sat flush against the container edge while every sibling tab pads its root with p:{xs:2,sm:3}. That was the vi...
A member address signs you into its own org, not every org
A member who signs in with the org mailbox flagged Primary on their member settings was being offered every workspace their user account belongs to. The address...
Stop a message's own controls being cut in half by the window
Reported as the reply arrow and the ⋮ "only half showing" at every view and every zoom level. Geometry, not styling, which is why zooming never helped: the cont...
Rebuild against kamo-shared-library HEAD
Ships the quote money fixes, which live entirely in the shared library and so reach production only when this service is rebuilt: - a quote's headline total no...
Enforce the platform's visibility, and let it be edited
GET/PUT /api/security/reports/catalog, both gated on MANAGE_REPORTS on the platform spine. The list comes from the REGISTRY, not the override table: an operator...
The check constraint a fourth visibility would break
Hibernate wrote `check (visibility in **************** 'PLATFORM_ADMIN_ONLY'))` when it created report_catalog. ddl-auto adds columns and never rewrites a const...
Decide who sees each report, from Platform Administration
A Reports tab on the Configuration console, gated by MANAGE_REPORTS on the platform spine — which is also, with no further work, a row in the Manage Rights dial...
Give the quote billing choice a screen to live on
The org-wide setting deciding whether a quote is billed each period or in full up front has existed on OrgPOSConfig for some time, and the endpoint that writes ...
Let the platform decide who may see each report
MANAGE_REPORTS, appended to PlatformRightType, and a REPORT_CATALOG override row per report holding one of ALL_ORGS, PLATFORM_ORG_ONLY or PLATFORM_ADMIN_ONLY. ...
Show the whole term when the seller bills up front
The card led with the recurring rate regardless, so a customer signing a three-year deal payable at signing saw a monthly figure and a separate total below it. ...
Lead with the whole term when the bill is due up front
An org that charges the committed term at signing saw the monthly rate on its own three-year quotes. The quote now carries the basis it was raised under, and th...
Commerce_quotes.billing_basis
The per-quote snapshot of the org's quoteConversionBilling choice, so a quote keeps the terms it was raised under after an administrator changes the setting. Nu...
Bill the whole term up front, and say so on the quote
An org that charges up front saw the monthly rate on a three-year deal. The setting deciding that already existed — **************** — but it reached only Quote...
Make a listed message searchable, not merely stored
The index is written from two directions. Opening a message runs the full indexer, which writes the row and then computes its search_vector. Listing a folder wr...
Make label: search read the table that records labels
The clause tested si.label_ids, an array column on the search index. Nothing has ever written it — labelling a message inserts into email_metadata.message_label...
Name the remaining twelve switches, and guard the trap that unnamed them
MUI 7 drops `inputProps` on Switch — silently, with no warning and no type error, so the aria-label never reaches the DOM. Nearly every switch in this app puts ...
A search hit reads the same on your own messages as on everyone else's
The highlight inherited the bubble's text colour and drew itself as a 55% wash, and both of those quietly failed in the same place. The member's own messages ar...
Index a message in one statement instead of a select-then-write
The search index row's key is assigned rather than generated, so handing a built entity to save() was a merge: Spring Data SELECTed the whole row — body text in...
State the first invoice on an option that has a setup fee
The card already listed the setup fee, but the only figure that summed it with the period price — the total over term — was gated on the commitment running long...
Show the one-time setup fee in the option's figures
The card, the live rail and the print preview all led with the option's period total, and the only figure carrying the setup fee — the whole-term contract total...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.