One mailbox view, and a column that is all list
The Conversational/Classic toggle is gone and every member gets the classic list. Conversation view carried its own list, its own thread pane and its own API su...
Consolidate the member surface onto ?tab=legal-compliance
The standalone **************** route rendered the same component as the settings tab behind a second URL. Delete it and keep the tab: one surface, one entrance...
Onyesha barua pepe ya mawasiliano katika orodha ya department
The Interaction Center needs a member's address to pre-fill a composer, and the only endpoint that carried one was the single-member detail fetch — one request ...
Email a member straight from their row
Dock ya hatua ya mstari inaweza kuzungumza, kukutana, piga na kufungua wasifu - moja Kitu ambacho hakuweza kufanya ni kuanza barua pepe, hivyo kufikia mwenzake ...
Extract the HR Legal & Compliance rendered key set
A literal t('…') scan misses 8 of the module's 81 keys: assignmentStatusKey and statusStateKey return key strings as DATA, and hrTabs.ts holds labelKey and desc...
Daily legal-package reminder tick
Huduma ya Daemon inamiliki tiba kwa sababu Huduma ya Docs haiwezi. Huduma ya Daemon Mkakati: Recreate - pod ya zamani imeenda kabla ya mpya kuanza, hivyo kupele...
Na kwa mchana unapo lidhihirisha
The bucket is a pure function of (dueDate, today) and never of "when we last sent": UPCOMING_D{n} for the configured offsets, DUE_TODAY, then PAST_DUE_P{floor(d...
Tell the member — assigned, voided and completed
ONE hr.package_assigned per member per package, never one per document: that is what suppressInvite exists for, and 8 documents x 200 members is 1,600 envelopes...
Outbound email client and a Redis notification ledger
Idempotency with NO schema change. The reminder bucket is a pure function of (dueDate, today) and never of "when we last sent", so the only durable state a noti...
DocsService's first inbound internal-auth filter
DocsService has no service-to-service authentication: ResourceServerConfig is anyRequest().permitAll() and OTKPreAuthFilter CONTINUES the chain when X-OTK is ab...
Four canonical HR legal-package templates
hr.package_assigned, hr.package_reminder, hr.package_voided and hr.package_completed, as {json,html} pairs plus four CANONICAL_KEYS entries. The CONSTANT is no...
React to ASSIGNED and stop trusting a channel that cannot replay
Three ways the support badge went stale, all of them silent. ASSIGNED was published on /topic/support/agent/{memberId} and this handler only branched on PENDIN...
Kutoa kila wakala kuishi badge badala ya mmiliki mmoja kuhesabu
The nav badge and /support?tab=tickets answered different questions. The page lists every ticket in the org; the badge counted unread chat messages belonging to...
Stop the badge costing portal members a request a minute
Three things, all of them about who the count is for. THE PROVIDER GATES ON THE SAME CONDITION AS THE BUTTON. It mounts in the root layout for every authentica...
Drop client SENDs to guarded topics, and repair the build at HEAD
TWO THINGS, both of which stop MediaService main from shipping. 1. main does not compile. MediaController:1361 calls **************** which does not exist: ...
Let a failed pending-count read out instead of downgrading it
publishFor caught Exception around countByTeamMemberIdAndStatusIn and turned it into a WARN. That catch was not only around the badge: the query runs inside the...
Signature button with a live legal-package badge
Hand-written into the fixed left cluster between My Profile and Log out. NAV_REGISTRY cannot express a position between two fixed controls and its badgeKey fiel...
Live pending-package count over the EXISTING chat socket
LegalPackageCountContext consumes **************** rather than opening a fourteenth STOMP connection for one integer, and subscribes to **************** — the d...
Relay the legal-package count and guard per-member SUBSCRIBEs
legal.packages.> -> **************** core NATS, no stream — the same shape SupportStompRelayController and PlatformStompRelayController already use. topicFor is...
Proxy the member's pending-package count
A static segment sibling to [uid] so App Router matches it first. PATH ONLY — forwardToApi owns the query string — and one upstream call, because the OTK is sin...
Serve the caller's own pending-package count
GET **************** through memberGuarded() and the identity funnel. No memberId and no orgId parameter — both come from the session, because an id in a path i...
Show a sent attachment without waiting for a reload
MediaService announced a new chat message twice — once when the row was saved, before any attachment existed, and once after the attachment rows committed. The ...
Emit the badge count on every transition that moves it
Four sites: delivery (none -> PENDING), void (open -> VOIDED), redelivery (open -> SUPERSEDED) and finish (open -> EXECUTED). Each passes the status it read BEF...
Announce a message once, when it is whole
Both callers that finish building a message after the row is saved now tell createMessage not to announce it: MediaController attaches the images and publishes ...
Let a caller own the realtime announcement of the message it is still building
undaMessage ilitangaza kila ujumbe mpya juu ya somo la wakati halisi wa kikao Mstari uliokolewa - ndani ya shughuli ya mwombaji, kabla ya mwombaji kuandika choc...
Publish the member's open-package count to core NATS
Kuunganisha. kuchapisha juu ya kisheria.packages. pins huduma hiyo.expectedStream (CHAT MESSAGES) katika kuchapisha na kuchapisha, hivyo JetStream kuchapisha ju...
Lay the profile header's wallpaper chrome out in a row
The Source / Console / Tone pod was the Stage's stacked one, and stacked it is taller than the 100px avatar it sits beside — so it, not the identity block, set ...
Kutoa Kunyongwa-package kukarabati button halisi
POST **************** existed upstream and was tested, but nothing in the product could reach it: no proxy route, no helper, no button. Every failure branch in ...
Kulinda njia za picha za uharibifu na kufanya ukarabati ufikiwe
DELETE /imaging/delete/{imgId} is the one destructive imaging path and was not wired to the issued-document guard. ImageService.deleteDocument authorizes on org...
Nenda kwa mwenyeji wa kuingia ili kupona kunaweza kutatua org
Password ahueni sasa anapokea mwanachama wa msingi mailbox anwani, ambayo tu Andika jina la akaunti ndani ya org. Wakala huu unafikia huduma ya usalama juu ya n...
Accept a member's primary mailbox address as a login identifier
The address a member gives out is usually the org mailbox flagged Primary on their member settings, not whatever is on their user account — so typing it into th...
Restore the profile header wallpaper and wire its controls to the editor
The band behind the avatar on **************** had gone flat gradient. Not the wallpaper feature — ae85a8ae routed the header's photos through next/image + safe...
Sit the head tabs on the header's bottom edge and flatten the identity row
The tab strip was vertically centred in a row whose height was set by the action cluster beside it — a default-size More icon button (40px) plus the cluster's o...
Download the executed package from the grid and the member's own page
Pande zote mbili zinapitia mwisho wa LEGAL, zilizowekwa kwenye kazi, sio </api/imaging/download/{imgId}: Njia hiyo inahitaji shirika. wa wa wa wa (ii) Kukagua n...
Stop colleagues reading a member's HR-issued documents
isPerPartyRestrictedAssoc covers only ACCOUNT_MEMBER_VAULT and LOAN, so assoc 1 — SERVICE_APPLICATION, what /settings/member/{id}?tab=docs renders — has no per-...
Draw non-image attachments with the document manager's file-type icons
.docx au .xlsx ilikuwa muhtasari wa kijivu wa MUI na barua ya ugani Na kwa upande mwingine, ni chini ya kiwango cha juu, na ni chini ya kiwango. icon faili sawa...
File after Finish, repair from HR, and download BY imgId
Filing is queued AFTER COMMIT and OFF the request thread. Finish is @Transactional in a service that also serves WOPI; holding a connection across N ESigService...
File the merged executed package into the member's own library
uploadDocument takes the SUBJECT'S Member, so Img.organization and Img.createdByMember derive from them and HR ends up having filed a document the member owns. ...
Cover the chat-routing propagation that broke assignLoanOfficer
assignLoanOfficer gained a step that looks up the loan's source lead to reroute the borrower's open public-chat session. That lookup runs a JPQL query through t...
Restore the files 2b23346 dropped, and answer an oversized send with 413
2b23346 was committed through a private index that was never seeded from HEAD, so its tree held only the three files staged into it and the commit deleted the o...
Say what is too big, instead of "Failed to send email"
A draft that outgrew the send endpoint's limits produced one flat line of red text after the whole payload had been uploaded — or, when the body itself was the ...
Gate each Human Resources tab on its own right
Overview needs VIEW_OVERVIEW, Attendance MANAGE_TIMECARDS, Legal & Compliance MANAGE_LEGAL_AND_COMPLIANCE, Training MANAGE_TRAINING and Resources MANAGE_RESOURC...
Enforce MANAGE_LEGAL_AND_COMPLIANCE on the package endpoints
LegalPackageAccess mirrors the Legal & Compliance tab gate, and that tab is now gated on one right of its own instead of VIEW_EMPLOYEES || EDIT_EMPLOYEES || MAN...
Kubeba wamiliki wa HR zilizopo kwenye haki mpya za kila-tab
A right that gates something already reachable is a removal of access: new rights insert as NOT_SPECIFIED, so the /hr tabs would have vanished on deploy for eve...
Haki za binadamu kwa mujibu wa Human Resources
Vichujio vya / h vilikuwa vimefungwa popote ambapo haki ya HR ya awali ilitokea kuwa AU-term katika mwisho wa mbele: Kuhudhuria kufunguliwa juu ya VIEW SCHEDULE...
Weka mipaka kabla ya kutuma
Mwili uliobeba msingi wa Inline64 - HTML iliyotokana na ukurasa wa wavuti, ukurasa wa mbele Maudhui yaliyonukuliwa, picha za saini - zinaweza kupitisha dari ya ...
Hati ya mfuko wa kunyongwa na kuingizwa
Hati hubeba mfuko, toleo la waliohifadhiwa, somo, wakati Katika kesi hiyo, mshitakiwa wa pili anatuhumiwa kwa kosa la uhaini, na Mstari wa WORM hubeba - hivyo m...
Store attachments through the dedup pipeline instead of one object per upload
Attachments wrote their own "<imgId>/<fileName>" object on every upload, bypassing the content-addressed store entirely — the same logo-draft.png attached three...
Expose the content-addressed store so chat attachments can dedup
Chat attachments never went through the hashing pipeline — they wrote a private "<imgId>/<fileName>" object per upload, so the same file attached three times oc...
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.