ஒரு இயல்பான PDF மின்னணு கையெழுத்து வார்ப்புரு அதன் சொந்த காட்சி, ஆவணங்களுக்கு அனுப்பப்படாது
/imaging/templates/upload ஒவ்வொரு கோப்பையும் ஆவணங்கள் வழியாக இயக்கியது, PDFs சேர்க்கப்பட்டது, ஒவ்வொரு e- கையெழுத்து வாசகனும் விரும்பும் இரண்டாவது Draw- மீண்டும்...
கோர் NATS இல் ஒரு தீர்க்கப்பட்ட நிறுத்தத்தை அறிவிக்கவும் (antivirus.content.settled)
ஒரு நிறுத்தப்பட்ட பதிவேற்றம் அதன் சோதனைக்குப் பிறகு சேமிக்கப்படும் போது, அல்லது தீங்கு விளைவிக்கும் என்று தீர்மானிக்கப்படும் போது, வெளியிடவும் {blake3, sha3_ 25...
வைரஸ் தடுப்பு முன் சேமிக்கப்பட்ட உள்ளடக்கத்தின் அடிப்படை வருடல்; கோப்பின் பெயரை மறுக்கிறது; சமமான வருடல் புலங்கள்
- AntivirusBaselineService: pages img_ dats (is_ missing=false, no verdict) NEWEST first, streams each object MinIO முதல் KamoAntivirus வரை மற்றும் AntivirusG...
conversionservice இல் வைரஸ் தடுப்பு வருடலை செயல்படுத்து
KamoAntivirus தயார் (StatefulSet kamowsantivirus 2/2, /readyz ready, release) 2026.11.08.0101); குழுவில் இருந்து ஒரு நேரடி வருடல் MALICIOUS/TEST_FILE ஐத் திருப்...
ConversionService வைரஸ் தடுப்பு மூலம் பதிவேற்றங்களை சரிபார்க்கிறது, வைத்திருக்கும் கோப்புகளை முடிக்கிறது, புதிய கையொப்பங்களை மீண்டும் சரிபார்க்கிறது
சேவையில் உள்ள clamd வாங்கியை மாற்றுகிறது (malware/ package, UploadScanGuard, QuarantineStore, பகிரப்பட்ட நூலகத்துடன் retro-scan) வைரஸ் தடுப்பு: - / upload, / r...
iPhone HEIC புகைப்படங்களை PDF ஆக மாற்றவும், தொலைபேசி புகைப்படங்களை நேராக திருப்புக
ஒரு உறுப்பினர் ஏற்றிய ஒவ்வொரு HEIC யும் தோல்வியடைந்தது: convert-to-pdf png/jpg/tiff/bmp/gif ஐ மட்டுமே பிம்பங்களாக கருதுகிறது, எனவே ஒரு .heic ஆவணங்கள் மூலம் விழு...
ஒரு ட்ரான்க் கால் கேட்ட பக்கம் நம் உறுப்பினர், மற்ற கட்சி அல்ல
ஒரே ஒரு கட்சி கோப்புகள் ட்ரான்க் லேக் (ஒரு அழைப்பவர் வரும்) இருந்து வரும் போது, அதன் rx உள்ளது அழைப்பவர் மற்றும் அதன் tx அழைப்பவர் கேட்டது என்ன: எங்களுக்கு. அந்...
முழுமையான அழைப்புகள், ஒலிபெருக்கிகளுடன் நேரப்பட்ட சுழற்சிகள், மற்றும் ஒரு பின்னூட்டம்
உரிமையாளர் அறிக்கை 2026-11-06: எழுத்துருக்கள் "அழைப்பின் முழுமையையும் பிரதிபலிக்கவில்லை பதிவுகள் ", மற்றும் தனித்தனியே வழிகள் பேசுபவர் கூற வேண்டும். 180 தள பதி...
கடவுளின் தகுதி மட்டும் CONFIGURE _ SYSTEM ஐ இயங்குதளம் org இல் மட்டுமே கடந்து செல்கிறது; வேறு இடங்களில் ஒரு திறந்த சாளரம் மட்டுமே (IOT R7 சுற்று 3)
* * * * * * * * * * * * * * * * * ஜிடி (தகுதி, சாளரம் இல்லை) ஒவ்வொரு குத்தகைதாரரையும் ஒவ்வொரு முறையிலும் கடந்து செல்லட்டும் org, எனவே கணினி பயனர் ஒவ்வொரு குத்தக...
மூடப்பட்ட கடவுள்-முறை சாளரம் இங்கேயும் மூடப்பட்டுள்ளது (பகிரப்பட்ட அமர்வுPlatformFacts வாசகர்)
* * * * * * * * * * * * * * படியுங்கள் GD & & GodModeActive தானே. SecurityService அதன் சொந்த வாயில்களுக்கு மட்டுமே கடந்த 30 நிமிட பிரேக்-கிளாஸ் ஜன்னலை முகமூடி, ...
ஒரு வெற்று உள் ரகசிய பதில்கள் 503 on/transcripte also
/ * * * * * * * * * * * * * * * * * * உள்ளமைக்கப்படாதபோது பதிலளிக்கப்பட்ட 403 ஐ டிரான்ஸ்கிரைப் செய்யுங்கள்; மாஸ்டர் § 7 உருப்படி 13 ஒவ்வொரு உள் இறுதிப் புள்ளியி...
Silence is never sent to the speech service, and no chunk reaches 30 s
Kamo Speech (Speaches) answers 500 'No clip timestamps found' for a chunk of 30 s or more in which its VAD finds no speech (faster-whisper's no-VAD path refuses...
Rebuild on the shared library that routes voip.recording.received
ConversionService still ran a kamo-shared-library older than 9e9357c9, whose NatsMessageService pinned every publish to CHAT_MESSAGES. Its voip.recording.receiv...
Claim a staged recording before processing it, so a long call is never stored twice
DaemonService hands ConversionService every row that is still unprocessed: on its poll tick, on every voip.recording.received message (which does not wait for a...
Detailed transcription — timed segments, speakers, language and model provenance
POST **************** (SP14 spec §4.4.3) answers a recording as timed segments with the language and the provider and model that heard it, for MediaService's pe...
Every recording is transcribed through AIService, per org — Kamo Speech replaces whisper-asr
Transcribe a chunk through AIService's internal façade, routed per org
/image/preview cuts a chat photo into one 480px WebP
A chat image attachment is drawn at most 240x240 CSS px and every viewer downloaded the original to do it — a phone photo is 3-8 MB. MediaService will store one...
Logo-variants runs ffmpeg single-threaded, one logo at a time
The first boot backfill OOM-killed BOTH ConversionService pods (23:04:39 and 23:05:47Z): a 3919x1373 PNG logo and a 4096-wide seeded SVG. ffmpeg gives every fil...
/image/logo-variants cuts a logo into pre-sized PNG + WebP rungs
Org logos are uploaded once and drawn everywhere at 24-120px, and every surface downloaded the original: crm's logo-full.png is 2.2 MB (its .svg stand-in 2.95 M...
A meeting recording no longer passes through heap, and a long one no longer times out
/transcribe read the upload with getBytes() on a 2Gi pod, and a meeting recording runs past a gigabyte. It now copies the spooled upload to the scratch volume a...
Pin kamo-shared-library 1.6.1, the only version that exists
The library moved to 1.6.1 and this service still asked for 1.6.0. There is no window in which both resolve: the library is never published to a remote, so the ...
Only the platform namespaces can call ConversionService
The public route is gone (28ba91b), but inside the cluster any pod could still reach this service, and several endpoints take no credential because none of its ...
ConversionService is no longer published to the internet
The conversion-api.kamocrm.com IngressRoute sent anyone on the internet to this service, where several endpoints (/image/resize-bg, /favicon/generate, /convert-...
Auth on the endpoints that can take it now, ffmpeg/Batik hardening on the rest
ResourceServerConfig permits every request (this service is reachable anonymously at conversion-api.kamocrm.com), and none of ImageOpsController's or Conversion...
Internal-auth secret comparisons are constant-time and fail closed
TranscriptionController, RecordingIngestController and RecordingProcessController all compared X-Internal-Auth with String.equals (a timing oracle on a shared s...
Audio — a waveform thumbnail at upload, and peaks and transcripts on demand
An uploaded audio file fell through to the Docs PDF path, which cannot open one, so every audio upload ended "Conversion failed" with a blank library tile. Audi...
No live credentials in application.yml defaults
The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...
Release idle Hikari connections now that YSQL pooling is shared
The connection manager no longer pins sessions **************** so idle app connections no longer each hold a database backend. Keep the pool maximum, but stop ...
Accept OCI image indexes when resolving the built digest [skip ci]
The images are pushed as OCI image indexes, so asking the registry for a single image manifest only answered 404, the digest came back empty and the check faile...
Restart when a same-commit rebuild leaves pods on the old digest [skip ci]
The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...
Upload a new version of a document
The one way to change a file the document editor cannot open - a PDF above all, which is what most templates are. POST **************** takes the new file, scan...
Assert the contract the service actually has
**************** asserted that an image already inside the box comes back byte-identical to what went in. It has been failing since afee6fd in July, and the cod...
Stop an indexed source turning the tab icon into a black box
A tab icon uploaded as a transparent PNG-8 arrived in the browser tab as a black square with a ragged logo on it. Measured on the upload that exposed it: of the...
Prove the deploy by digest, not by tag
The preceding commit stops `set image` being a silent no-op. This asserts the outcome: after the rollout, the tag is resolved to a digest at the registry and th...
A rebuild of the same commit deployed nothing and reported success
The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...
Run two pods
replicas 1 -> 2. This service runs no @Scheduled work and binds no exclusive NATS durable, so a second pod duplicates nothing — it is stateless request serving,...
Let a rollout finish what the old pod was doing
Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...
Resize an image by height, keeping its format and transparency
Backs the email signature footer badges, which are downscaled to 150px tall on upload. resize-bg could not be reused. It exists to make a wallpaper cheap to sh...
Rebuild against the storage dedup fix
Picks up kamo-shared-library d21e01ce. uploadDocument created its ImgDat with isMissing=false BEFORE sending the bytes, and its @Transactional did not roll back...
Pin kamo-shared-library 1.6.0
The library moved to 1.6.0 while every consumer stayed on 1.5.0. Consumer CI builds the library from a fresh clone into a cold ~/.m2 and ci-settings.xml mirrors...
Gate platform uploads on MANAGE_PLATFORM_SOUNDS, not org ownership
An operator granted "Manage Platform Sounds" on the Platform Administrators page saw the Sounds tab — the console gates on the right — opened the upload dialog,...
Uploading a file takes CREATE_DOCUMENTS, like every other way of making one
The document rights are enforced in DocsService as of this change, but the upload endpoints are not in DocsService — kamo-internal's app/api/imaging/upload prox...
Transcode uploaded sound effects to Opus
Extends the ffmpeg wrapper the VoIP recording pipeline already had — this image installs ffmpeg with libopus for it, so putting a second ffmpeg in another image...
Raise the document upload ceiling from 500MB to 3 GiB
Chat attachments have run at 3 GiB through this same imaging pipeline for a while; documents were capped at 500MB. The difference was not a policy, it was that ...
Declare the object-storage secret the ConfigMap no longer carries
The MinIO key was moved out of the ConfigMap into the minio-app-credentials secret, but the envFrom that supplies it was only ever applied to the live deploymen...
Stop shipping a shared credential as a config default
The platform's shared password was baked in as the fallback for DB_PASSWORD and MINIO_ROOT_PASSWORD, so it lived in this repo and in the built image as well as ...
Reading a session no longer renews it
The expiration on the Redis record IS the session; when it lapses the member is signed out. This service holds its own copy of KSessionService against that SHAR...
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.
