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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
Make Add Source actually connect Google and Microsoft
The Manage Sources dialog on the Contacts page had the same defect as the CalDAV/CardDAV settings tab, on a screen ordinary members reach rather than one behind...
Merge the digest output instead of declaring a second outputs block
The previous commit added an `outputs:` key to a job that already had one. Forgejo's parser rejects a duplicate mapping key and skips the workflow entirely, so ...
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...
Bring the organization inside the retried read instead of leaving it to fire later
Member.organization is LAZY, so findById left a proxy behind and the real SELECT happened whenever something first dereferenced it. Under open-in-view that is t...
Build the sender's avatar URL from their org, not the request host
A chat notification's senderAvatar was resolved from X-Forwarded-Host, falling back to the server name. Both kamo-internal's BFF and APIService reach this servi...
Four workers on a node that can hold them, not two on one that cannot
Correcting the previous commit, which was half right and caused a short outage. The memory diagnosis was correct: four workers, each loading its own ~3GB copy ...
A 404 costs 1.45 MB, which is how a scanner took the site down
Next's not-found is a PAGE. It renders through the root layout, which resolves the tenant's organization over the network and serializes the whole app shell and...
Stop working on translations whose caller has already given up
Three attempts of ninety seconds plus backoff is up to 274 seconds of work per translation, and every caller we have gives up long before that — KBService's cli...
Stop the sweep re-translating the twenty locales that already worked
An article holding 20 of its 21 locales is "incomplete", so the ten-minute sweep re-queued it — and the translator then re-translated all 21, paying twenty time...
Give the translation models room to stay resident, and refuse a scanner
libretranslate ran 4 gunicorn workers against a 12Gi limit, and each worker loads its own ~3GB copy of the argos model set — 11.8GB resident, 98% of the limit, ...
Map a provider's own folders onto the standard ones, wherever they sit
The last fix pinned a folder by the role the server gave it and still left a member on Google Workspace looking at "[Gmail]" among their own folders with their ...
Say whether a DAV server's credentials are already stored
The Apple iCloud / custom CalDAV panel shows four empty boxes whether or not a username and password are on file. It cannot do otherwise -- a stored password is...
Stop one member reaching another's calendar integration, and stop the endpoints handing out the credential
Two defects on the /settings/integrations/member endpoints, both live and both reachable by any signed-in member. The id was the only access control. Every /me...
Keep the folder in the path too, wherever it can survive there
The endpoints prefer the query parameter, but they are deployed separately from this code, and a browser that loads the new bundle a minute before EmailService ...
Stop a bad service-user JWT from disabling every member's softphone
Minting from a member's own JWT called configFactory.require(inst), which insists the phone server's SERVICE-USER JWT is present and well-formed. That credentia...
Create a subfolder under its parent, not beside it with a dot in its name
createFolder joined a parent to a new folder's name with a hardcoded ".". On Gmail, which separates its hierarchy with "/", that produced a top-level folder lit...
A role with no slot in the pinned block leaves the folder unpinned
indexOf answers -1, and -1 is not null, so a role that ever lost its place in PINNED_ROOT_ORDER would have pinned its folder ahead of the inbox rather than fall...
Bound the sign-in failure message carried back in the redirect
The RingCentral callback puts the server's own sentence in the query string so the member's tab can say what actually went wrong — nearly always an unregistered...
Take the folder from the query, so a Gmail folder can be addressed at all
The folder travelled as a path segment, and Gmail separates its hierarchy with "/" — its Sent folder is `[Gmail]/Sent Mail`. There is no way to put that in one ...
Revoke a reassigned member's RingCentral sign-in, don't just forget it
Offboarding deleted the member's credential row when they were moved off a phone server. That was the whole job while the credential could only be a JWT — Kamo ...
Make Gmail's folders open, and list them as folders rather than paths
Two faults, both from the client deciding for itself things only the mail server knows. **"Failed to load messages."** The folder travelled as a path segment, ...
Offer a RingCentral sign-in, not a JWT box, on every member
The per-member credential card had exactly one control: paste a RingCentral JWT. A RingCentral JWT is minted per user inside the developer console, by a user wh...
Let a RingCentral member sign in instead of minting a JWT
A member's phone-settings tab asked for a JWT credential, and that was the only way to connect them. A RingCentral JWT belongs to one user and is minted by that...
Report the folder separator and special-use role so Gmail's folders are recognisable
A member on Google Workspace saw every one of their folders listed under "My folders" with its raw path for a label — "[Gmail]/Sent Mail", "[Gmail]/Spam" — and ...
Make the scrollbar scroll the shell, because the scrollback is not here
The bar moved xterm's own buffer, and under tmux that buffer never grows: tmux sends the client only the lines that end up visible and keeps the history itself....
The terminal had no scrollback to scroll, so turn tmux's mouse on
for anything else. I built it against a bare xterm.js writing its own output and never against the real pipeline, which is the whole of the mistake. tmux is a ...
Make the startup fee findable — discreet is not the same as hidden
The note shipped at #8c8c8c with no spacing, wedged between the bright green term line and the plan description. That is DARKER than the body copy beneath it, s...
The end-terminal confirm was unreadable over the row behind it
Two things, both about the seam between a navigator and what is beside it. ## The confirm had no surface of its own A terminal row's actions sit OVER the row ...
Make the strike meter agree with its own caption, and read aloud
Three things the screen was getting wrong, all found by looking at it rather than by running it. The bar was a TALLY of failures, wrapping every five segments....
The lockout warning promised the wrong rung, and the wrong count
The strike meter on the sign-in screen was telling people something the server then did not do. tierFor starts the five-second delay at the SIXTH failure, but a...
Point the seat, payment-method and add-on calls at routes that exist
Four calls in posApi addressed REST-shaped URLs — /seats, /payment-method, /addons, DELETE /addons/{id} — and POSController exposes none of them. It has change-...
Remove the last "$0 setup" claim, and quote the fee only where it is fixed
Rendering the calculator turned up a claim the first pass missed: its "Included Free!" panel led with "Setup & Implementation — $0", struck through against a co...
A catalog-version bump must not read as "this host has no organization"
Org resolution funnels every lookup through one query helper that swallows the exception and answers Optional.empty(). For an organization that genuinely is not...
Retire the SMS provider's test verdict when its credentials change
The same defect as the phone server's Overview tab, one screen across: saving new credentials left the previous Test Connection result on display, so a "Test fa...
Restore SpfAdvisoryService, which main no longer compiles without
45829a6 deleted this file. Nothing in that commit wanted it gone — it was a staged deletion of mine that a concurrent `git add -A` picked up, and the same commi...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.