Send the company line as text, not markup
Pairs with the template fix in kamo-shared-library. Per-org template rows are insert-only, so the rows seeded before the markup change still wrap this variable ...
The opportunity templates own their own markup again
The company line was changed to arrive as a complete <p> element from the sender, so an absent company would not leave an empty paragraph. That was the wrong tr...
An approver who files a request still gets the approver email
The actor was stripped from every audience, so an approver who raised a request was cut from their own notification about it — and in an organization with a sin...
Quotes tab — every quote across the account's leads
A server-paged DataGrid beside Leads, with search over number and title, status, total range and created-date range. Filters share one debounce and collapse in...
GET /quotes/account/{uid} — paged, filtered, sorted
Dates arrive as ISO strings and parse leniently: a filter the client sends badly should narrow nothing rather than 400 the whole grid. A date-only "to" bound co...
Page and filter an account's quotes in the database
An account view needs every quote across all its leads. Loading them to render a page degrades every month the account is in use, and any total shown would only...
Show the assigned agent on the customer's copy
Inalingana na muhtasari wa wafanyakazi: kichwa cha barua kinataja org, hii jina mtu kuuliza.
Show the assigned agent on the preview
Jopo la "Mawasiliano Yako" juu ya footer - jina, cheo, simu na barua pepe - hivyo mteja Kujua nani kuuliza kuhusu gharama. Kukataa kabisa wakati uongozi haukuba...
Resolve the agent alongside the customer, from one lead lookup
Both blocks come off the same lead, so the controllers fetch it once and derive each from it rather than hitting the service twice per render. Still org-scoped ...
Name the lead's assigned agent on the document
Kichwa cha barua hutambua org, lakini mteja aliye na swali kuhusu mahitaji ya bei mtu ambaye ana uhusiano. Orodha hiyo sasa inashikiliwa na maafisa wa usalama –...
Liveness probe could never pass — cause of 920 restarts in 35 days
Root cause: the liveness probe was `tcpSocket: port 10000`, but Scylla's REST API binds to api_address 127.0.0.1 (its default) while a tcpSocket probe dials the...
Reassign the agent holding an opportunity
The approver's dialog gains an agent picker, drawn from the same pool the backend validates against. The grid's Agent column now shows who HOLDS the opportunity...
Reassign the holding agent, and email everyone it affects
An approver can now hand an opportunity to a different agent. The requester is never rewritten — applyPrimaryAgent records the move as its own history row with ...
Preview samples for the nine opportunity notifications
Without an arm here the admin Email Templates editor renders every placeholder blank, so anyone customising these nine would be editing an empty skeleton. One ...
Reassignable primary agent on a reserved opportunity
PRIMARY_AGENT_MEMBER_ID is who holds the opportunity now; REQUESTED_BY_MEMBER_ID is left untouched forever. Nullable with no backfill on purpose — null means "n...
Reassignable primary agent, and nine notification templates
An approver can hand an opportunity — and the commission with it — to a different agent. PRIMARY_AGENT_MEMBER_ID is who holds it now; REQUESTED_BY_MEMBER_ID is ...
Stop rounding the lead id through a JS number
Number("1189175700550025222") is 1189175700550025200 — lead ids are unique_rowid() values above Number.MAX_SAFE_INTEGER. The quotes pane converted the route par...
Overall commission, market defaults, and no pre-picked units
Three changes to how commission is captured. Nothing is pre-selected any more. Percent/Amount and One-time/Recurring both start unset on every commission split...
Agree an overall commission at approval, seeded from the market
The approver now records what the organization pays on the sale to the requesting agent and their group. Omit it on approve and the lead's market default applie...
Commission columns for reserved opportunities and market defaults
Six nullable columns: the overall commission agreed on a reserved opportunity, and the market default that pre-fills it at approval. NUMERIC(19,4) to match the ...
The overall commission on a sale, and market defaults for it
Fursa iliyohifadhiwa sasa inarekodi kile ambacho shirika hulipa nje ya uuzaji Kikundi cha maombi na kikundi ambacho wanashirikiana nao - sufuria ya per-colleagu...
Kubeba vitambulisho vya kuongoza kama kamba - idadi ya JS inawapotosha kimya
Alama zinazoongoza ni thamani ya CockroachDB ya kipekee rowid () hapo juu. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ... 1189175700550222222 inakuwa 11891...
Manage ScyllaDB through deploy-services instead of by hand
scylladb/ held complete manifests but had no deploy step — the comment said it was "deployed MANUALLY after the 16TB drive swap" because the data dir /mnt/backu...
Resync drifted manifests with live before enabling full reconciles
Auditing what a full reconcile would apply turned up two manifests that had drifted far enough from the cluster that re-applying them would have caused an outag...
Rename cluster ratestack-scylla -> kamo-scylla, correct ownership docs
This instance is kamo's: it backs the `kamouniverse` keyspace (read/written by **************** through the scylladb-direct ExternalName) and the `audit` keyspa...
Render the client's details on the preview, from the lead
Removing the quote's own addressee fields left "Prepared for" blank, because customerName only ever came from a linked Account and lead-raised quotes have none....
Show the client's details on the customer's copy
Company heads the block when there is one — a quote to a business is addressed to the business, with the contact named beneath it. Matches the staff preview exa...
Resolve the addressee lead for both the staff and customer views
Org-scoped in both places. On the public page the scope comes from the share link's own organization, so a token can never surface a lead belonging to another t...
Put the client's details on the document, read off the lead
Dropping the quote's own addressee fields left the document with nothing to say about the client: customerName only ever came from a linked Account, which lead-...
Scale ratestack MySQL to 0 and suspend its backup job
The ratestack estate has been torn down to free cluster resources for kamocrm. The cluster-services MySQL instance serves ratestack only (kamo and mail each run...
Line the commission-split controls up with the text fields
The Percent/Amount and One-time/Recurring toggles rendered at MUI's default toggle height while the member picker and the share amount beside them come out at 4...
Pane owns its spacing and scroll; drop the addressee fields from the form
The lead view's content card is overflow:hidden with no padding — every pane supplies its own, as Details and History do. The quotes pane supplied neither, so t...
Move quotes out of commerce and onto the lead
Quotes sat in the commerce pipeline, beside orders and carts rather than beside the client they are for. They now live on the lead: a Quotes tab directly after ...
Weka orodha ya wapokeaji
Kiongozi anashikilia jina la mteja, anwani na simu; akihesabu kwenye nukuu Kurekodi rekodi iliyohaririwa mahali pengine. Vifungu vilikuwa na muda mfupi tu na ha...
Expose per-market quote settings; enforce the terms grant
uhakiki wa soko sasa unaelezea mtazamo wa kuongoza ikiwa kutoa tab ya nukuu na ni nini kinachosema quote mpya huanza na, na mwisho wa soko pande zote mbili. Mi...
Quotes belong to leads, configured per market
Quotes were a commerce-pipeline artifact, which put them beside orders and carts rather than beside the client they are for. They now hang off the lead: the mar...
Review findings on the reserved list and split editor
Five defects an adversarial review confirmed against the first cut: - The page rendered "You don't have access" on every load. checkRole returns false while ...
Reserve, approve and audit lead opportunity claims
REST surface behind /leads/opportunities/reserved and the Reserve Opportunity control in the lead header, plus the service that owns the invariants. Rights, en...
Tables for lead opportunity reservations
Mirrors LeadOpportunityReservation, LeadOpportunityCommissionSplit and **************** in kamo-shared-library. ddl-auto:update would create them from the entit...
Entities for time-boxed lead opportunity reservations
An agent stakes an exclusive claim on closing a lead for a bounded window; an approver grants, edits or denies it, and colleagues can be offered a share of the ...
Address the quote to a person; summary stops costing header height
Kuchukua sufuria kwa kupikia ukubwa wa kulia, tuma mboga kwao. Bonyeza chini ya jina. Kwa sasa kuna pengo ambalo limekuwepo kati ya jina na Hatua za haraka, kwa...
Tuma barua pepe kwa mtu ambaye bado si akaunti
The addressee was derived solely from a linked Account, so any quote raised for a prospect — which is most of them — printed a blank "Prepared for" line and the...
Give the commitment and setup fee fields room for their labels
"Msimu wa mwezi (mwezi)" hushiriki upana wake na mapambo ya habari na "malipo ya kuanzisha wakati mmoja". Kwa upande mwingine, ni vigumu sana kuosha vidonge vyo...
Resolve the org's real hostname and logo extension for the letterhead
Correcting the theme URL was necessary but not sufficient — the logo still did not render, for two further reasons found in the live data. org_domains stores a...
Keep the profile heading on the current membership type
The heading reads "<Member> Profile" or "<Team Member> Profile" off the type MyAccountTab reports through onMemberTypeLoaded, which only fired from the mount-ti...
Fill the Position card the moment a member is promoted
Department, job title, official title, work location, membership status and the two Autocomplete option lists were only ever loaded inside the memberType === 'T...
Open a member's profile from their row
Adds a fourth action to the row's hover dock, linking to **************** It is a real NextLink rather than a click handler, so middle-click and "open in new t...
Muhtasari hatua katika kichwa, kumbukumbu kupata upana kamili ukurasa
Muhtasari uliketi katika safu ya kulia ya 320px kwenye kila ukurasa wa rekodi, moja kwa moja gharama ya senti tano ya shilingi. Juu ya mhariri wa quote ambaye a...
Weka alama ya barua kwenye njia ndoo ya mandhari kwa kweli hutumikia
The logo URL was built as **************** which that host answers with a 308 rather than an image — so every quote, sent as well as previewed, silently fell ba...
Fail the build when a component calls a key messages/ does not define
next-intl renders the key path verbatim for a missing key, and messages/ is gitignored here — populated at image-build time from kamo-translation-dictionary — s...
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.