Port the kamo-signer signing core into kamo-internal
Every @kamo/* package is private:true with exports:"./src/index.ts" and no build step, so there is no publishable artifact — the files are copied and rewired on...
Add the legal package delivery plan
Phase 4: Deliver / Redeliver / Void fan-out, assignment creation with e-sign envelopes, and the Assigned Packages sub-tab.
Cap the legal audience roster, and refresh after Deliver
The Assigned Packages grid filled its team-member filter column by asking audience-preview for allTeamMembers:true on mount -- a name and an email address for e...
Assigned Packages sub-tab and deliver/redeliver/void actions
AG Grid Community over a MUI-paginated fetch — Community has no server-side row model, so the server pages and the grid renders exactly what it was handed. The ...
Legal package deliver/redeliver/void proxies and assignment client
Thin 1:1 forwardToApi routes — one upstream request each, because OTKAuthFilter does getAndDelete and a per-member loop in a Next route would need one OTK per m...
Add the legal package CRUD plan
Phase 3 of the HR Legal & Compliance series: DocsService package CRUD, the content fingerprint, publish freezing a byte-pinned version, audience preview, and th...
Wire publish and audience preview, and stop rendering a broken label
publishPackage, previewAudience and getPackage shipped with no caller. The templates grid now has a Publish row action — disabled when the package has no binder...
Package Templates sub-tab for Legal & Compliance
Replaces the HrTabPlaceholder body only — the route, the tab entry and the gate already exist in hrTabs.ts. AG Grid Community list plus a create/edit dialog wit...
Legal package proxy routes, client api and pure helpers
Thin 1:1 forwardToApi routes under /api/docs/legal — one upstream request each, because OTKAuthFilter does getAndDelete and a fan-out loop in a Next route would...
Restore external images in email bodies
External images stopped rendering when the page-level image policy shipped. The middleware sets `img-src 'self' data: blob: https://theme.<apex> https://*.<apex...
Add the signing-correctness plan
Awamu ya 2 ya mfululizo wa Sheria na Utekelezaji wa HR, inayoweza kutumika peke yake: signer-slot kufunga, upande wa seva unahitajika kutekeleza uwanja, kukarib...
Cap the send dialog's recipients at the template's declared slots
Tuma kwa mbegu za mazungumzo ya saini mstari mmoja wa mpokeaji na hutoa unbounded "Mpokeaji wa ziada", lakini kamwe hakuchukua mipaka ya template ya saini. Hudu...
Hifadhi skrini zilizobaki kutoka kwa NATS /WebSocket
Fifteen network polls across the app, replaced with the events that were already happening or with events added to the services that own the state. Mail — the ...
Add the legal package entities plan
Phase 1 of the HR Legal & Compliance series: the com.kamo.z.shared.hr.legal entity set and its schema migration.
Kukimbia barua beji kutoka kusukuma makosa », si 30s kura
Al Azhar yasisitiza kuwa kuvaa Hijabu ni lazima kwa mujibu maamurisho ya Qur'ani Tukufu Kila tiba inayoitwa /api / barua pepe / mafolders - mwisho ambao unafung...
Add the Legal & Compliance design and the binder-scoping plan
The design is the full cross-repo analysis of the HR Legal & Compliance module (package templates, delivery, execution wizard, navtop badge, notification email)...
Ulinzi loadBinders kwa kuomba utambulisho, si thamani ya upeo
sameBinderScope alone can't tell two in-flight requests for the SAME scope apart (A -> B -> A), so a slower older request could still overwrite a newer one. Tra...
Show only the binders belonging to the open collection
OrganizerTab already received assocType/assocObjectId and passed them to the editor's document picker, but loaded the binder LIST unscoped — so every DocManager...
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.
Add a close button to the automated-imports manage dialog
Kiongozi huyo wa chama cha upinzani hakuwa na sifa za kugombea katika uchaguzi huo, ila Kwa upande wake, Dk. Ongeza kitufe cha icon ya X kando ya hatua ya harir...
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...
Rename the DocManager Organizer tab to Binders
The tab lists binders, so name it for what it holds. Points the tab label and the row action at the renamed dictionary keys (tabs.binders, addToBinder); the pic...
Tell a tool component when its window is maximized
Maximizing a tool window repaints the shell at 100vw/100vh but leaves the window's stored size untouched, and that stored size is what ToolDock hands the compon...
Keep fields on the page when a document opens at a remembered zoom
Reopening a document could draw every field small and up in the corner, until one click of the zoom control snapped them all into place. The page box that fiel...
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...
Stop replies drawing a gridded copy of the quoted signature
Replying to a message sent from Kamo showed the signature twice: the live one, and above it a mangled version of the quoted original's, drawn as a bordered spre...
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...
Number pages against the document the reader gets
Modifiers were keyed off a page's index in the design, which is an identity that survives deletion and reordering, not a position. So deleting page 2 left the p...
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...
Load the number in the softphone without placing the call
Tapping an extension or a number on a correspondent card passed autoDial, so the call went out the moment the softphone registered. The card opens on hover, whi...
Give the card's readout labels room to breathe
The label column was a hand-picked 76px. DEPARTMENT is wider than that, so it overflowed its box and sat flush against its value with no gap, and LOCAL TIME wra...
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...
Paint the correspondent card in the tenant's brand colour
The card was tinted with --accent-comms, the fixed indigo the instrument panel uses to mark the messages family. On the solid "New message" button that reads as...
Kuacha giza-mode anaweka kutua kama maandishi yasiyoonekana katika mtunzi
Copying an answer out of ChatGPT (or any dark-themed page) and pasting it into the compose body produced a large white block with nothing in it, and the message...
Kushiriki umma kujiunga kiungo, si wanachama tu kuelekeza
A meeting link written into an email was pointing at /meet/join/<id>, which mints a one-time key from the clicker's Kamo session — and redirects anyone without ...
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 ...
Stop recipient names being clipped to a letter
The chips were inline-flex boxes whose label carried `truncate`. A flex child with overflow hidden is allowed to shrink below its own content, and nested inside...
Weka mipangilio ya upakiaji wa faili kwa urefu wa nusu ya kadi
Maelezo/Folder/Doc Type/Access Level fields ameketi kwenye mstari wa pili Chini ya safu ya faili, kwa hivyo kila gharama ya kupakia inayosubiri ~ 108px. kuwaing...
Drop the inset around the Resources document manager
DocManager brings its own toolbar and grid chrome, so the 32px wrapper padding was only shrinking the grid inside an already-bounded pane. The wrapper stays as ...
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, ...
Show the full section-index rail instead of a nested scrollbar
The left nav rail was capped at calc(100vh - 128px) with overflowY: auto, so an org with most features enabled (up to 18 sections across 4 groups, ~710px) grew ...
Portal the break-glass dialog to the body
Clicking break glass opened the dialog inside the nav rail instead of over the page. The overlay is a bare fixed-position motion.div, not a MUI Dialog, so it ha...
Proxy foreign org logos so the tenant img-src policy can't block them
/network is the one page that renders another tenant's branding: it lists every organization in the network and loads each logo from that org's own theme.<domai...
Merge a caller's query with the browser's instead of concatenating
forwardToApi appended the browser's query string to whatever it was given, so a caller passing its own query produced a URL with two '?'. Everything after the f...
Keep upload Folder/Doc Type labels shrunk over native selects
The per-file Folder and Doc Type selects start with an empty value, so MUI left their labels at rest position while the native <select> still painted its first ...
Let a tab fill the content area, so the document manager gets full height
The content wrapper was a plain block, so a page's `flex: 1` had no flex parent to resolve against and the wrapper sized to its contents. DocManager's root is `...
Merge same-named vendors and products in the filter bar
An org routinely holds one lead supplier under several vendor records, so on the "All Markets" tab the Vendor dropdown listed the same name once per record — id...
Je, unaona nini kuhusu usafiri?
Kila kitu kinaingia kwenye tovuti yako mwenyewe. Anza kwenye mpango wa bure na usome ukurasa huu tena katika mwezi mmoja.
