Record package attestation as append-only evidence
The package-level 'I have read and agree' is a different legal instrument from the E-SIGN consent to transact and from any per-document signature, and it is the...
Add per-member assignments and per-document progress
The document row is the join that makes N e-sign envelopes read as one package. The badge count comes off the assignment status, not e-sign status: recipient st...
Freeze pakiti maudhui katika matoleo yasiyobadilika
Pins ImgDat blob id na SHA-256 yake, si tu imgId - Docs kuokoa Inachagua Img sawa kwenye bytes mpya, kwa hivyo imgId peke yake ingeruhusu wanachama wawili wa is...
Target a package at departments, job types or named members
Shaped on SystemUserAccess. Adds the audience resolver to TeamMemberRepo, which was an empty interface; the ACTIVE + recordState predicate is what keeps termina...
Add the legal package template entities
A package is an ordered set of binders plus an audience. Binder references are soft ids because binders are user-deletable and cascade their items. The attestat...
Kufanya duka la binder kujua ukusanyaji wake
Duka ni moduli singleton, kwa hivyo sasa inafuatilia upeo wa kazi, inafungua kwenye Mabadiliko ya upeo, na hupunguza majibu ya mwanga.
List and create binders within one collection
Inashughulikia swala inayoonekana-binder kwa DocManager (msaada wa DocManager, assocObject) wa wa wa wa wa wa wa wa wa wa wa stamps upeo juu ya kujenga, urithi ...
Backfill the collection each existing binder belongs to
Derives the scope from the first DOC item's Img; empty binders fall back to the owner's My Docs. Applies NOT NULL only after the backfill.
Narrow binder visibility to one document collection
Replaces findVisibleToMember with a scoped variant and drops the two unreferenced finders that sorted by the dead date_updated column.
Kutoa hati ya ukusanyaji ambayo ni
Binders hakuwa na scoping assoc, hivyo kila DocManager alitoa sawa duniani kote. bwawa kwa kila mwanachama na binder kujengwa chini ya Masoko inaweza kujazwa na...
Group the meeting-invite fields by meaning when maximized
Splitting the form into equal halves used the wrong unit. It stretched a date input across half the window and stranded its All-day box at the far edge, left tw...
Keep the quoted original out of the editable body
Jibu liliondoa ujumbe wote ulionukuliwa kwenye mhariri wa Quill kama maandishi ya mwili. Quill inaweza tu mfano gridi rahisi, hivyo kila mpangilio meza katika q...
Pair the meeting-invite fields into two columns when maximized
The invite form stacks eight full-width rows, which in a maximized compose window pushed the body editor most of the way off screen while leaving half the windo...
Apply page operations and modifiers to the signed document
The designer has always offered page rotate, delete, reorder and add-blank, plus watermark, page-number and label modifiers, and the flatten read none of it: it...
Give every popup tool window 40px more room in both axes
Each tool's defaultSize and minSize in the registry grows by 40x40, and the geometry that was hardcoded alongside it moves with it rather than drifting out of a...
Drag, cut, copy and paste recipient chips between To, Cc and Bcc
Moving someone from To to Bcc meant deleting the chip and typing the address again from memory. Chips are now selectable and can be dragged or carried on the cl...
Rotate the field overlay with the page, flag unread imports, order fields for reading
Three things that only start to matter once a document arrives carrying forty detected fields instead of two hand-placed ones. Page rotation: rotating a page t...
Read Acrobat format actions when detecting fillable fields
Acrobat stores a field's intended format as JavaScript in /AA, which pdf.js surfaces as actions.Format. That is the author's declaration rather than a guess off...
Insert a new meeting link at the coder from the composer
Adds a footer action to the compose window that creates a meeting with the organization's configured provider and writes its join link into the body wherever th...
Rebuild a fillable PDF's AcroForm fields as native Kamo fields
Opening an editable PDF in the document editor now reads its AcroForm widget annotations off the pdf.js document and recreates each one as a DesignField on the ...
Create the email search_vector column and its inverted index
**************** never existed. EmailService's own V1__email_metadata_schema.sql declares it, but that migration never ran -- the table came from this service's...
Kadi ya mawasiliano nyuma ya kila jina kwenye ujumbe
Every person shown in a read view was a dead end. To and Cc rendered as displayNameFor(a).join(', ') — a comma wall of display names with no address, no hover, ...
Resolve the people behind the addresses on a message
A message header knows an address and whatever display name the sender chose to put beside it. The organization already knows far more — colleagues, address boo...
Kichupo cha Rasilimali ni maktaba ya hati ya HR ya org
Inabadilisha msimamizi wa rasilimali na DocManager kwenye mkusanyiko wa hati ya yake mwenyewe - ImageAssocType.HR RESOURCE, ndoo imaging-hr-resources - org-scop...
HR RESOURCE assoc aina ya maktaba ya rasilimali ya HR
Kichupo cha Rasilimali /hr kinachapisha vitabu, sera, fomu na kumbukumbu vifaa kwa timu nzima, na hakuna aina ya assoc iliyopo inafaa: MY DOCS ni Eneo la mtu mw...
Human Resources module shell with five route-backed tabs
Adds /hr with the accounts-page chrome in its route-backed form (the same one /marketing already uses): a layout owning the gradient hero and underlined tab bar...
Complete the Communications tab
Each sub-tab now holds its own data, and All interleaves every channel by date. Notes keeps MediaStream, because notes are authored here — but readOnlyChrome s...
Unified communications timeline API
GET **************** returns one date-ordered page across notes, calls, voicemails, texts, e-mails and chat; ?channel= narrows it. Three sources are merged. Ca...
Drive the mail-to-lead association sweep
Five-minute tick against EmailService's internal sweep endpoint, mirroring VoipGlobalSyncJob. The schedule lives here because EmailService runs several pods and...
Associate lead correspondence, and fix the dead push indexer
Adds the mail half of the lead Communications tab, plus the ingestion it needed to exist at all. The platform has no working mail push: IMAP IDLE is hardcoded ...
Persist calls and associate calls, texts and voicemail with leads
Calls were never recorded anywhere — VoipCallEventService published a NATS event for the browser and kept nothing, and RECORDINGS only exists when audio was cap...
Schema and contact-point seed for lead communications
Hibernate creates the three new tables from the shared-lib entities; this adds what it cannot express — the partial unique index that keeps at most one open con...
Point-in-time contact-point index and lead communication links
Adds the spine the lead Communications tab reads from. LEAD_CONTACT_POINTS records every phone number and e-mail a lead has ever had, as a window with activeFr...
Kupata demo kuongoza kabla ya hatua booking
The marketing site's demo form collected name, email, company, company size, industry and a message, then advanced to scheduling without telling anyone. Lead cr...
Utawala wa Umma wa demo-request risasi kukamata primitives
A visitor who fills in the marketing site's demo form but never books a time left no trace: the lead was only ever written inside the booking transaction. Captu...
Kujiandikisha Mtoa Setup katika urambazaji, na kuandika tips haraka
Kichupo cha Mtoa Setup kilichotolewa ndani ya MipangilioView lakini kiliweza kufikiwa tu na kuandika URL - ilikuwa kukosa kutoka maeneo yote mawili kwamba orodh...
Weka sheria za ufikiaji wa geo na IP kwenye mizigo ya ukurasa
checkAccess evaluated the rules itself and matched nothing for its entire life: it compared rule types against **************** while the publisher writes the e...
Enforce tenant access rules at the gateway
This filter has been inert since it was written. resolveOrgId read org:domain:<host> from Redis, nothing ever wrote that key, and the null return fell through t...
Actually enforce geo and IP access rules
The rules were stored, cached to Redis and never consulted. AccessCheckController was the only caller of the evaluation and nothing called AccessCheckController...
Platform registration card for the Zoom Marketplace app
Completes Zoom's one-click connect path. The backend already resolves PlatformOAuthProviderType.ZOOM, but with no card here a platform operator had nowhere to e...
Microsoft Teams Phone provider, front to back
Adds Teams to **************** and wires the whole path through: provider selection, the Entra + Azure Communication Services config, tenant admin consent, the ...
Microsoft Teams Phone as a provider
Teams is not one API, so the provider glues three control planes together: • Graph, app-only — call history (getPstnCalls), presence reads, directory and...
Provider Setup tab and capability-gated meeting settings
Adds the Provider Setup tab to /settings/features/meets and makes every other tab honest about the provider it is configuring. useMeeting no longer builds meet...
MICROSOFT_TEAMS provider type
Appends MICROSOFT_TEAMS to VoipProviderType. The enum persists as ORDINAL on **************** so the position is load-bearing and the constant goes last; the cl...
Route the meeting provider OAuth callback
Zoom and Microsoft redirect the browser to this gateway after an org authorises Kamo's app. The popup lands here with no tenant session — the org travels in ?st...
Meeting provider abstraction with Zoom and Microsoft Teams
Meetings were Kamo Meets by construction — MeetService persisted a Meet room name and nothing else. This introduces the abstraction and two remote providers beh...
Maandalizi kwa ajili ya mkutano wa multi-service layer
Creates **************** and org_meeting_oauth_tokens, adds the provider-identity columns to MEETING_RECORDS and MEETING_RECORDINGS and the Zoom/Teams-capable s...
Mkutano wa mfano kama mtoa huduma
Kamo Meets was the only possible backend: OrgMeetConfig was a flat Meet settings bag and a MeetingRecord held nothing but a room name. This adds the schema for ...
Allow-list countries on the geo-blocking card
The card could only deny countries, so an org that serves one country had to enumerate every other one. It now has both lists: a mode toggle picks which list th...
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.