First-class borrower self-submit transition ****************
DRAFT→APPLICATION_TAKEN for a borrower (a loan party, not an operator, so no LOS_TAKE_APPLICATION). Routes through transition() with a scoped predicate that gra...
Delete + preview + import-file-to-Canva
- delete a material (gated on MANAGE_MATERIALS) with confirmation - click a thumbnail to preview it in a lightbox - "Import a file" turns a PDF/PPTX/image into ...
Kuingiza faili katika Canva kama kubuni inayoweza kuhaririwa
Kwa mfano, *** (Uzalishaji wa Design) - CanvaController POST /imports (multipart) → kuunda kazi ya kuagiza → mhariri Kiungo cha kina na uwiano state kwa kurudi-...
Shared TranscriptionService + generic endpoint; transcribe VOIP recordings
- Extract a reusable TranscriptionService (ffmpeg normalize -> whisper-asr) and a generic POST /api/conversion/transcribe endpoint, replacing the meet-specifi...
Transcript column on Recording + RecordingMetadata
Adds a TRANSCRIPT TEXT column to the Recording entity and threads a transcript through **************** (with backwards-compat constructors so existing 5- and 9...
Wrap recording upload so MediaService compiles
MinIOStorageService.upload throws a checked Exception that ingest() neither caught nor declared — build break on top of the isGuest fix. Wrap it and rethrow as ...
Verify return-nav JWT signature; tidy token refresh
- CanvaJwtVerifier: verify the correlation_jwt's Ed25519 signature against Canva's JWKS (/connect/keys), plus aud/exp/type; keys cached by kid. Return-nav n...
MeetingParticipant.isGuest() (was getGuest, won't compile); repoint transcribe to generic endpoint
MeetingParticipant exposes isGuest() (primitive boolean getter), not getGuest(). Also point the summary transcribe call at the shared /api/conversion/transcribe...
Make whisper-asr independently scalable (HPA, multi-node)
Remove the single-node pin and switch to a per-pod model cache so pods can schedule on any node, and add an HPA (min 1 / max 4, CPU 75%, deliberate scale-up giv...
Rebrand Guacamole client connection status text to KamoDesktop
Juu ya [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) 'Kuwasiliana na Guacamole...' skrini (na hali inayohusiana) inas...
Correct Guacamole branding manifest version field
Ilani ilitumia guacManifestVersion:1.0; upanuzi wa vifungu hutumia guacamoleVersion. Eneo baya lilimfanya Guacamole kukataa upanuzi wa alama ('hauwezi kusoma' y...
Kurekodi ingest, uhifadhi /quota, matumizi ya kuhifadhi, bomba la muhtasari
Kuunganisha Udhibiti: ndani (X-Internal-Auth) ingest mwisho wa jibri Kukamilisha.sh posts kumaliza rekodi. -Kuunganisha Huduma: upload rekodi kwa kila-org MinIO...
Sample vars for meeting-summary template preview
Inaongeza kesi ya sampuliVariables kwa template mpya ya mkutano wa mwisho ili msimamizi UI hutoa maudhui ya kweli.
Template ya Canonical
Inaongeza template ya shughuli ya "mkutano" (subject + alama HTML na {{Juu ya Allaah na ́Aya za Allaah zimetajwa katika Qur-aan}} [An-Nisaa: 14] mbegu kwa ajili...
Stop double-appending ?target in the SSO proxy route
kwa hiyo, ni lazima tuilinde barabara hiyo ili iweze kujiendesha yenyewe. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .........................................
Moduli ya moderator ya Prosody, Whisper-asr, jibri kurekodi upload
- Meet-prosody: version-control the custom-plugins ConfigMap (captures the existing token_verification no-op override that was created out-of-band) and add ...
Recording transcription endpoint for post-meeting summaries
POST / api / conversion/meet/transcribe (X-Internal-Auth): normalizes uploaded Mkutano kurekodi kwa 16kHz mono WAV kupitia msaidizi mpya wa huduma ya Ffmpeg, Ku...
Calendar integration for scheduled meetings + real recording storage meter
- calendarIntegrationEnabled: when on, a scheduled clubhouse meeting is also added to the creator's calendar (via the existing calendar system) carrying the ...
MeetingRecording entity + repository for captured recordings
New MEETING_RECORDINGS table (org, meeting ref, room, MinIO bucket/object key, size, duration, captured/expiry timestamps, summary status) — the parent record f...
Resolve session from X-***-Token header in CallerSessionResolver
The kamo-internal -> APIService BFF path forwards the session as the X-***-Token header, but the resolver only read the X-OTK attribute or the *** cookie — so B...
Marketing app, settings hub, Canva materials
Make Marketing a first-class org-enableable app and ship the Canva-powered Materials experience. App-enablement: - AppType.MARKETING mirror, Organization.isMar...
PatchLoanFile is no longer a status backdoor; unblocking a condition needs the underwrite right; clear cascades
**************** status changes are the pipeline state machine's job (POST /transitions enforces legal arrows + per-arrow role gate + open-blocking-condition ga...
Video ya bango-frame thumbnails kwa vifaa vya masoko
Canva MP4 mauzo ya nje (na kupakia video yoyote) kuruka Docs PDF njia na kupata Picha moja ya bango-frame thumbnail ( thumb p0.png) badala ya kushindwa. Kwa mf...
Canva Connect OAuth + designs/export backend
- CanvaApiClient: PKCE authorize, token exchange/refresh/revoke, users, designs (create/list), export jobs, byte fetch - CanvaTokenService: encrypted per-memb...
Hali ya sehemu PATCH haiwezi kufuta kimya bendera ya kuzuia; template kuzuia default kuheshimiwa; kuchapisha baada ya kufanya
[TD="width: 456"] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ...
Canva integration + Marketing as an org-enableable app
- **************** — platform Canva Connect client registration - ImageAssocType.MATERIALS(13, imaging-materials) — org marketing assets bucket - **************...
Guacamole Json-auth SSO + KamoDesktop rebrand
- JSON_SECRET_KEY (optional) on guacamole from the shared desktop-sso secret enables the bundled guacamole-auth-json extension the god-SSO links validate agai...
Icon ya KamoDesktop ya Mungu (Linux + Windows) kufungua vikao vya kuunganishwa
Two nav icons left of Analytics, shown only to god-eligible members (isGod added to NavGateContext). Each fetches a short-lived SSO link from SecurityService an...
Inject KamoDesktop SSO env directly + wire guac-sso into tracked k8s deployment
@Value inasoma KAMO GUAC SIGNING KEY / DESKTOP PASSWORD kutoka env moja kwa moja (runtime) matumizi.yml ni configmap-mounted, hivyo mali isiyohamishika bila kum...
KamoDesktop SSO token endpoint for god members
GET **************** (god-eligible only) mints a 5-minute guacamole-auth-json token (HMAC-SHA256 + AES-128-CBC, per the extension's wire format) and returns an ...
Org-scoped room names, room-name format, calendar Kamo meetings, start reminders; i18n settings
- useMeeting/MeetingDialog: room names are now namespaced by org token so two orgs can never collide into the same Prosody conference, and honor the org's r...
Scheduled-meeting start reminders + guest-link expiry
- MeetingReminderSweep: @Scheduled sweeper that fires a realtime "meeting starting" reminder to invited members at (start − reminderMinutesBefore) on ******...
Show member availability in chats list; rename tab to Directory
1:1 chat rows now surface the counterpart's live presence + availability the same way the Directory tab does — same useAvailability/usePresence sources and the ...
Design spec for KamoDesktop god SSO icons + Guacamole rebrand
Icons mbili za Mungu-tu nav (Linux / Windows) katika kamo-internal kwamba kufungua Guacamole katika Huduma ya Usalama (mlango unaotumiwa na Mungu), uliounganish...
Move guacd to pod network (MTU fix) + unicast WoL
guacd on hostNetwork (k1m1 eno49 MTU 1500) vs guacamole pod on cilium overlay (MTU 1420): RDP connected but large frames were dropped across the boundary -> 'Gu...
Sign invited members into meetings via click-time OTK join links
Invite links (chat + email) previously embedded a bare meet-room URL, so recipients landed as anonymous guests instead of themselves. An OTK can't be pre-embedd...
Persist invited participants, enforce MANAGE_MEET_SETTINGS, drop double-invite path
- createMeeting: invited members are numeric snowflake IDs, not UUID strings — route them through longToUUID like the creator. Previously UUID.fromString th...
Angalia eneo la desktop kwa IngressRoutes
desktop.kamocrm.com IngressRoute anaishi katika desktop ns, lakini CRD ya Traefik Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................
Uagizaji wa VM disk kama mfumo wa faili, sio kuzuia
CDI's block importer crashlooped: 'blockdev: cannot open /dev/cdi-block-volume: Permission denied' — it can't access the raw Longhorn block device. Filesystem v...
Borrower submit fires the Application-Taken side effects (doc checklist + notify)
Mpokeaji wa barua pepe ni mpokeaji wa barua pepe. operator /transitions mwisho mahali ambapo Maombi-kuchukuliwa madhara kuishi - hivyo mkopaji kuwasilisha yanay...
Reject negative loan amount / property values on section saves
updateLoan and updateProperty now reject a negative monetary amount on the LTV inputs (loan amount, estimated/purchase/appraised value) via requireNonNegative —...
Correct KubeVirt VM cloud-init field + modernize spec
- cloudInitNoCloud userdata secret field is 'secretRef' (not userDataSecretRef); KubeVirt v1.8.4 pruned the wrong field -> 'must have at least one userdatasou...
Never prepend www to subdomains, only to the bare apex
The catch-all redirected ANY non-alias host to https://www.<host>, which is correct for the bare apex (kamocrm.com -> www.kamocrm.com) but wrong for a subdomain...
Borrower cannot escalate loan-file status or edit the URLA after submission
Two related borrower-authorization holes on the self-service app endpoints: - Privilege escalation (#2): patchLoanFile applied any statusId with no caller-ri...
Loan-file status accessor for borrower edit-lock, borrower-delete cascade, gift-recipient app scoping
**************** orgId): read helper backing the borrower post-submission edit lock (a borrower may only edit the URLA while the file is DRAFT). **************...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
