KamoCRM

The platform tab, and three links that showed their own keys

Fixkamo-internal
Shipped
September 23, 2026 at 8:37 AM UTC
Author
Kamo
Commit
84b5a6b

Two bugs, both reported from the running site. THE SETTINGS LINKS SHOWED KEY PATHS The three Hosted Computer sub-links carried key: 'computers' | 'capacity' | 'defaults' and no labelKey, so they resolved under **************** That namespace is FLAT and shared by every settings topic, those three words were unclaimed, and an unclaimed key there renders the key path rather than falling back to anything. The topic's own label existed, which is why only the children were wrong. They now point at **************** which already held exactly the right English and is already translated in all 22 locales — one string per label instead of a second copy in a namespace where "capacity" belongs to nobody. Worth recording why this reached the site: check-i18n-keys.mjs, which fails the image build on a t() key messages/ does not define, only sees t('...') calls. A key carried as DATA — labelKey on a menu sub, a nav option, a resolution — is invisible to it and to any grep of t( arguments. So is a template literal. Both need auditing by hand. THE PROVISIONING REFUSAL POINTED AT NOTHING ComputeService refuses to provision without a golden image and named "Settings, Platform, Configuration" as the place to publish one. That page has thirteen tabs and none of them had the field: the platform-wide settings existed in the database and on ComputeService, and no route or screen ever reached them. So the first person to assign a computer was sent to look for a control nobody had built. The tab holds all of it — the published image version, the idle default every organization inherits, the per-node memory reserve, the per-organization and per-member caps, the auto-expand step for storage left unlimited, and a switch that stops new machines without touching the ones that run. The live fleet figures sit at the TOP rather than the bottom, because "largest that fits" is the question somebody opens this screen with, and burying it under eight inputs means reading the inputs first to find out they were not the problem. MANAGE_APPS_FEATURES rather than a new platform right. Apps & Features is where an operator marks Hosted Computers available at all; publishing the image it runs from is the other half of that decision, and splitting the authority lets someone offer an app they cannot make work. The API sits under platform-config, not hosted-computers, because that prefix is now gated on the organization holding the app — and a platform admin whose own org does not would have been refused a screen that has nothing to do with their org.

All changes

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.

Start Free ForeverView Pricing