{ "2.135.1": [ "Security fix: the AWS Secrets Manager platform secret now accepts only the keys AppCrane uses, so nobody who can edit that secret can change how the server runs.", "Security fix: API rate limits can no longer be stretched by sending extra made-up keys alongside a valid sign-in." ], "2.135.0": [ "AppCrane can keep its own keys and your apps' secrets in AWS Secrets Manager instead of files on the server. It is optional and off until you turn it on. An app only ever reaches its own secrets, and sandbox cannot read production's.", "Personal API keys are now created only when someone asks for one (Settings > Account), and can optionally be limited to a private port you keep behind your VPN (APPCRANE_PRIVATE_API_PORT). Sign-in, SSO, MCP and webhooks stay on the normal port.", "MCP keys: the onboarding button no longer piles up keys. Each new onboarding key lasts 30 days and replaces your earlier unused ones. Platform admins get a list of every MCP key on the MCP page, can revoke any of them, and can revoke all keys unused for 30+ days in one go.", "Security fixes: SSO sign-in can no longer be hijacked with a link, credential rate limits can't be bypassed, git fetches are always audited, Ask and plan feedback are limited to people allowed to reach the credentials involved, and several build and pre-flight hardening fixes." ], "2.134.1": [ "Fix: promoting an app to production now works when its sandbox release was uploaded as a bundle (appcrane_deploy_artifact). Production gets exactly the files sandbox ran, checked file by file, instead of a rebuild that failed at once with \"expected a hex SHA\". A first promote no longer needs production to have been deployed before, and folders named data inside the bundle are kept." ], "2.134.0": [ "AppCrane now coaches the AI agent that deploys your app: push, deploy, deploy-log, file-upload and app-info results carry advice when the way it deploys costs time or breaks builds (one file per push, a build that failed because a change was only partly pushed, very large files sent inline, folders created by an upload), and repeated deploy mistakes are noted once in the app's agent context.", "Pushes that arrive while the app is still deploying no longer start a deploy each: they wait, and AppCrane deploys the latest code once when the running deploy ends. This also stops two deploys of one app running at once (\"container name already in use\").", "Fix: opening an app straight from the side menu showed only the Request and Coder buttons; the app name, environment switch, Refresh, Back and the collapse button are back." ], "2.133.0": [ "Faster AppCrane: backups, restores, storage sizes, file listings over MCP and git clones no longer freeze the server while they run, and background checks use far fewer Docker calls (one host spent about 35 s per metrics run before).", "Faster deploys and promotes: build caches survive between sandbox and production, the .git folder no longer goes into generated builds, npm downloads are cached per app, and a healthy new version is detected in a quarter of a second instead of two.", "The admin UI loads about a third as much code on first visit, caches its files, is compressed, and stops polling while its tab is in the background.", "Fix: an app whose data folder held a folder owned by root (left by file uploads before 2.123.1) could not write there on servers where AppCrane does not run as root. Every deploy now repairs the owner on every server." ], "2.132.2": [ "Every e-mail AppCrane sends to admins now names the server it came from, in the subject ([AppCrane: your-server]) and in the footer, so an admin of several AppCranes can tell which one a server alert, security notice or deploy result is about." ], "2.132.1": [ "Fix: two apps deploying at the same time could make one of them fail with \"failed to export layer\", because the image cleanup at the end of one deploy removed files the other build was still writing. Builds and image cleanups no longer overlap: a cleanup waits until no build is running, and cleanups asked for in the meantime run once.", "Fix: a file sent over MCP in parts as plain text (appcrane_stage_chunk with encoding utf-8) was rejected when assembled, with a SHA-256 mismatch, although each part had been accepted. Text parts now assemble to exactly the bytes sent, alone or mixed with base64 parts." ], "2.132.0": [ "Swap: AppCrane now gives the server a swapfile sized to how far the apps' memory limits go past its RAM, and lets each app move the part of its memory above its guaranteed amount to it. When several apps need memory at once, an app now slows down instead of being stopped by the system. The swapfile never takes free disk below the disk floor in Settings > Job Health, grows when apps are added or limits raised, and only shrinks while nothing is using it." ], "2.131.5": [ "Fix: after upgrading, apps that were already running were still counted at their full memory limit instead of their guaranteed half, so memory warnings said the server was over capacity when it was not. AppCrane now gives those apps their guaranteed amount when it starts, without restarting them.", "Memory e-mails now name the server they came from, in the subject and the body, so an admin of several AppCranes can tell which one is short of memory." ], "2.131.4": [ "Disk space: a build that failed left a stopped container behind holding everything that build step had written, and those piled up (one server had 285 of them, 48 GB). Failed builds no longer leave one, and the cleanup after each deploy and in the weekly cleanup now also removes the ones already there, then the old images they were holding. Running apps, rollback images and other containers are not touched." ], "2.131.3": [ "Disk space: builds that were cut off part-way (for example by a server restart) left hidden containers behind that kept old app images on disk, so the cleanup after each deploy could not remove them. AppCrane now clears those leftovers after every deploy and in the weekly cleanup, then removes the old images they were holding. Running apps, rollback images and other containers are not touched." ], "2.131.2": [ "Security: when a Crew task in progress at the upgrade carries its earlier conversation over, AppCrane now checks that the file it opened is really that conversation, so a swapped folder cannot make it copy another file." ], "2.131.1": [ "Security: a Crew task sent to an app coder no longer uses the app's shared Claude login. It runs on the app owner's own Claude login, or on the platform API key; with neither, the task is refused with a message saying so. This stops a Crew turn from reading the app's login or replacing it with another.", "Security: the files kept for a Crew task can no longer be used to make AppCrane write outside the task's folder on the server." ], "2.131.0": [ "Each app now has a guaranteed memory amount of half its max. The app can still use up to its max whenever the server has memory free; memory admission now counts the guaranteed halves, so the server only promises what it can keep. Manage shows the guaranteed amount next to the limit, the memory e-mail shows guaranteed and max for each container, and saving a new limit updates both on the running app. The room above the guarantee is shared, not promised: containers have no swap, so if several apps grow at once the server can still run out.", "Security: a Crew task sent to an app coder now runs in its own short-lived container. It sees only the app's code and its own task files, not your coder sessions' transcripts or the app's Claude login, and cannot leave anything behind for your next coder turn. Changes it makes still appear in your Changes tab for review. Each Crew turn is limited to 2 GB and 1 CPU.", "Fix: when an app's Claude login refreshes its token in one place (a coder turn, Improve, Ask, a Crew task or the app's coder container), the other copies now pick up the new token instead of keeping one that no longer works, and an older copy can no longer overwrite a newer one when it is saved back.", "The memory budget tool (appcrane_memory_budget) now also reports the total of the guaranteed amounts, which is what memory admission counts, and whether it fits in the server's memory." ], "2.130.1": [ "In the coder panel's Requests list, the Clear and Send to coder buttons stay on one line when the panel is narrow; the hint beside them shortens instead (hover it for the full text)." ], "2.130.0": [ "The coder panel now has a Requests list for the app you are working on: pick one or more open requests and send them straight into the coder session on screen, open any request in full, or mention one in your own message (\"do #123 but in blue\") and the coder gets that request with your instruction. Sending waits while the coder is in the middle of a reply.", "Security: a look-alike word that mixes letters the check knows with ones it does not now also makes an app coder's owner approve the task." ], "2.129.7": [ "Security: a word written entirely in look-alike letters from other alphabets (for example Cyrillic letters that pass for \"prod\" or \"rm\") is now read as the word it imitates, so it still makes an app coder's owner approve the task. Ordinary text in other languages is not affected." ], "2.129.6": [ "Security: a word that mixes plain A-Z letters with any other letter (look-alikes such as a dotless i or a small capital P) now always makes an app coder's owner approve the task. Accented letters such as é are not affected." ], "2.129.5": [ "Security: the check that makes an app coder's owner approve anything about production or deleting now also sees through accent marks, other hidden filler characters, an invisible character used to glue two words together, and look-alike letters from other alphabets; and look-alike vertical bars can no longer fake the line between two messages." ], "2.129.4": [ "Security: invisible characters (such as text-direction overrides and zero-width spaces) are removed from what an app coder's owner is shown before approving, a message can no longer fake the line between two messages, and hidden characters or full-width letters no longer let \"production\" or \"delete\" slip past the check that always asks the owner." ], "2.129.3": [ "Security: when an app coder's owner is asked to approve a task, the message that triggered the question is shown first and in full, and the approval covers exactly the messages shown; anything left out because it was too long is asked about separately." ], "2.129.2": [ "More security fixes for app coders in Crew: an owner's approval now covers only the messages they were shown, so anything the requesting agent adds afterwards is checked again, and a Crew task is refused while another person is using that app's coder, so it never edits someone else's work in progress." ], "2.129.1": [ "Security fixes for app coders in Crew: only an app's current owner can approve tasks to its coder, and a change of owner clears earlier approvals; a later message on a task that asks for a production deploy or a deletion now waits for the owner like the first one; and each Crew task runs in its own fresh coder conversation instead of the owner's open session, so the requesting agent never sees the owner's conversation." ], "2.129.0": [ "Your agent can hand work to an app's coder: every app hosted on AppCrane now appears in Crew as \"-coder\". When another agent sends it a task, the app's owner approves it first (for that app's coder only), then AppCrane runs the app's coder on the request, billed to that owner, and sends the answer back. Production deploys and deletions still always ask, and one task per app runs at a time.", "Changing an app's memory or CPU limit on the Manage page now applies to its running containers right away, without a restart. Before, the new limit waited for the next deploy while the memory warning kept showing the old one. A container already close to a lower limit keeps its old one until the next deploy, and the page says so instead of silently ignoring a failed change." ], "2.128.1": [ "Security: feedback sent by an agent is no longer copied to the app's GitHub issues, since a read-only key can send it, and the stored feedback never includes the sender's e-mail address." ], "2.128.0": [ "Your coding agent can now send feedback for you: tell it in plain words what went wrong or what you want, and it files the report with the details attached (the app, environment, the step it was doing, the deploy and the error). Feedback about an app goes to that app's requests, where its team sees it; feedback about AppCrane goes to the platform admins, with at most one e-mail an hour. Secrets in the text are removed before it is stored." ], "2.127.2": [ "The memory warning e-mail no longer counts containers AppCrane did not start at their full memory limit: they count at what they actually use, as containers with no limit already did, so one server stops reporting hundreds of gigabytes \"committed\". The e-mail now shows each container's image, so a container with a random name can be identified.", "A short network outage no longer sends \"GitHub service account credential stopped working\". When the check gets no answer at all, admins hear about it only after an hour, as \"unreachable\", with advice to check the server's connection; a credential GitHub actually rejects is still reported at once." ], "2.127.1": [ "Security: the server hardening script now creates its 1 GB emergency reserve file only on a disk folder that belongs to root and that no one else can write to, and never through a link. Before, on a server where AppCrane runs without root, someone controlling the app could have pointed that file at a system file." ], "2.127.0": [ "Platform admins can now check and apply the server's log limits from Settings > Job Health > Host limits: the journal cap, syslog rotation, Docker log defaults, automatic security updates and the 1 GB disk reserve each show as applied or missing, and Apply runs the hardening script after a two-factor code. When AppCrane does not run as root, the installer sets up a narrow sudo rule for a root-owned copy of the script; without it, the card shows the command to run on the server." ], "2.126.0": [ "A server that runs low on disk no longer stays down quietly. New installs cap the system logs, keep a 1 GB emergency reserve and turn on automatic security updates (the README shows how to apply this to an existing server). AppCrane refuses to start a deploy or update when less than 5 GB is free, keeps its own backups and deploy logs small, and checks the server every day for pending security updates, e-mailing platform admins when something new shows up.", "An app whose container disappeared (for example after a reboot or a full disk) is brought back automatically from its live release within 10 minutes, and its owners get one e-mail. Before, one failed attempt could leave it down until someone redeployed by hand. Scheduled jobs for an app that is down are paused instead of failing every few minutes, with one e-mail.", "Admins can let users remember a device for two-step sign-in for up to 30 days (Settings > Security). The password is still required every time, and single sign-on is not affected.", "Security: Caddy's access log now goes to a rotated file instead of the system journal, and its error records for sign-in-exempt paths now hide query strings too; before, a failed request could write a token from the URL into the journal." ], "2.125.19": [ "With app isolation on, the Request button's picker works again: you can point at a button, a field or any part of the app before writing your request, instead of always getting the whole page. Each app now runs on its own address, which the dashboard cannot look inside, so AppCrane serves a small hidden helper on the app's address that does the pointing and hands the result back. Apps need no change. The coder's picker works the same way. If the helper cannot reach the app (for example, it has moved to a sign-in page on another site), you still get the whole page." ], "2.125.18": [ "Hardening for the 2.125.17 pass-through on an app's old address: the app's response there loses every header a browser applies to the whole site (clearing cookies, CORS, error-report destinations, preload links, refresh and redirects), and HSTS is forced to the platform's value, so an app cannot sign people out of AppCrane, weaken its HTTPS protection or collect its error reports. Ordinary response headers still reach the client." ], "2.125.17": [ "With app isolation on, scripts and devices that send data (POST, PUT and the like) to an app's old address (/ on the platform host) reach the app again, on the app's sign-in-exempt paths and on apps that need no sign-in. They used to get a redirect back that most HTTP clients do not follow for a POST, so they silently stopped working while their GET requests still went through. Browsers and GET requests are still redirected to the app's own address. What passes through gets no cookies from the request, can set none, and is shown by browsers in a sandbox, so nothing of the app runs as the dashboard. Requests on the old address are now in the access log (query strings redacted), so you can see which clients have not moved yet." ], "2.125.16": [ "A file moved into an app with appcrane_push_staged_file now belongs to the app's own user instead of root, so an app that runs as a non-root user (node) can change or replace it. Before, it landed root-owned and the app got a permission error writing it. appcrane_cp already worked this way since 2.123.1." ], "2.125.15": [ "Work Review shows a figure it could not measure as a dash, never as zero: a week with no commits no longer shows $0.00 per commit, and when some usage comes from a model without a known price, the cost says it is incomplete.", "The work-review setup audit flags a skill installed twice, such as your own copy beside the same skill from a plugin: both load and compete, and a plugin update only moves one of them.", "The work-review plugin is now version 1.1.4, so people who installed it receive these changes; a test now fails whenever the plugin changes without a version bump." ], "2.125.14": [ "Hosted apps can trust X-AppCrane-Auth-Via (which says a request came from a script using a personal app sign-in key). The identity signature did not cover it, so on a route that skips the proxy it could be removed to make a script look like a person in a browser. A second signature, X-AppCrane-Identity-Sig-V2, now covers it; appcrane-tenant 1.3.0 checks it and returns authVia. Apps on older appcrane-tenant keep working unchanged.", "The upgrade asks each hosted app that reads X-AppCrane-* identity headers without checking the v2 signature to start checking it: about a minute after the first start on 2.125.14, AppCrane scans every app's live release and files one request per such app (naming the files and lines), which e-mails its owners and admins. Each app is asked once; a request you close is not filed again. Apps deployed from a prebuilt image are not scanned." ], "2.125.13": [ "The Dashboard's visitor and CPU charts label each day correctly for people west of UTC (in the Americas every day showed as the day before)." ], "2.125.12": [ "Choose where a survey appears in the app: bottom right (as before), bottom left, top right, top left or the centre of the screen, so it does not cover the app's own buttons.", "A survey can block the app until it is answered: the app is dimmed behind the card and there is no Not now (it comes back only if sending fails). Both are under When and where, and the preview shows them." ], "2.125.11": [ "Surveys have a Preview button: see the survey card exactly as people will, with the app's name filled in, before you save or turn it on. Nothing you click in the preview is sent." ], "2.125.10": [ "OpenCATS, an applicant tracking system, is in the app catalogue. Its only published image is from 2017, and its settings and attachments are lost on redeploy, which the catalogue entry says." ], "2.125.9": [ "App names on the launcher are no longer cut off after a word or two: a name now uses two lines across the whole tile before it is shortened." ], "2.125.8": [ "Apps renamed before 2.125.6 can be rolled back again: updating AppCrane repairs the saved locations of their earlier releases, with no work needed on the server." ], "2.125.7": [ "Far fewer CPU warnings: an app's CPU limit is a ceiling it only uses when busy, so the limits of all running apps may now add up to four times the server's CPU before AppCrane warns. Platform admins can change the four in Settings > Job Health." ], "2.125.6": [ "Renaming an app no longer breaks rolling back: releases from before the rename can be restored again. A rename also redeploys each environment once, instead of once for every release the app ever had." ], "2.125.5": [ "When a deploy fails, AppCrane now says why wherever you check on it: the deployment list, the deploy log, and the deploy tools for agents and CI all carry a one-line reason, instead of just \"failed\"." ], "2.125.4": [ "With app isolation on, apps opened inside the dashboard showed \"This content is blocked\" instead of the app. They open again, and a sign-in problem inside an app tab now shows its message instead of a blank box." ], "2.125.3": [ "Housekeeping: a tool used only to build the dashboard was updated to close newly reported security problems." ], "2.125.2": [ "The apps domain for app isolation can now be the platform's own address: with AppCrane at crane.example.com, apps can live at myapp.crane.example.com." ], "2.125.1": [ "Housekeeping: a check for the app isolation setting now runs correctly on the build server." ], "2.125.0": [ "Platform admins can now give every app its own web address, so one app can no longer act as you inside another app or reach your AppCrane sign-in. Old links keep working, apps need no changes, and everyone signs in again once when it is turned on. It needs a wildcard DNS record, and stays off until an admin sets it up in Settings > Security.", "Apps on their own custom domain can now ask visitors to sign in with AppCrane." ], "2.124.0": [ "You can give a script or a scheduled job its own key for one app, from the MCP page. The key signs you in to that app only, does nothing anywhere else in AppCrane, and stops working as soon as you lose access to the app.", "Apps can tell when a request came from such a key, so an app can let a script do less than you can, for example upload but not read." ], "2.123.2": [ "Three building blocks AppCrane relies on for handling uploads, web requests and e-mail were updated to close newly reported security problems." ], "2.123.1": [ "Uploading a file into a new folder in your app's data no longer leaves that folder locked against your app: the folder now belongs to your app, so it can keep saving there." ], "2.123.0": [ "Apps that AppCrane builds without a Dockerfile now run on Node 22 instead of Node 20, which no longer gets security fixes. If your app says which Node version it needs, AppCrane follows that, and the deploy log says which version was picked and why." ], "2.122.0": [ "Your apps are protected against a newly found attack on the software that runs them: AppCrane now turns away the kind of upload it uses, and moves itself and your apps onto the fixed version automatically." ], "2.121.0": [ "Platform admins can now change the master key that protects every stored secret: stop AppCrane and run crane rotate-key. It saves a backup first, re-locks every secret with the new key and checks each one before switching." ], "2.120.2": [ "AppCrane now refuses to start if its data folder setting is broken, instead of quietly writing data to the wrong place." ], "2.120.1": [ "Housekeeping: test leftovers that were published by mistake have been removed." ], "2.120.0": [ "When a scan finds a vulnerable package in your app that was not reported before, the app owners and platform admins now get one e-mail right away listing it, the fixed version and what happens next; each finding is mailed once, and a platform admin can turn this off in Settings > Security." ], "2.119.0": [ "An automatic security fix is no longer held back by older problems your app already had in production, as long as the fix adds nothing new; those older problems are listed in the e-mail.", "When the first fixed version of a package has been withdrawn by its maintainer, AppCrane now picks the next safe release instead of asking you.", "After a server restart, apps are brought back on the exact version that was running, even if they have older known issues." ], "2.118.3": [ "A failed deploy now cleans up only what it built itself, including after an automatic security rebuild, so a version you might roll back to is never removed." ], "2.118.2": [ "When an automatic security fix cannot run, the message you get explains why in plain words and no longer includes internal server details." ], "2.118.1": [ "Automatic security fixes for app dependencies are now locked down further: the tool that updates a package can only talk to the official npm registry, and fixes that the package maintainer has withdrawn are left for a person to choose." ], "2.118.0": [ "If your app runs on PHP and a serious security flaw is found in PHP itself, AppCrane now rebuilds your app on the fixed PHP for you, tests it in sandbox before it reaches production, rolls it back if it fails, and e-mails you either way.", "Every build also starts from the latest security fixes of its base image." ], "2.117.3": [ "If your server runs a Linux version that MongoDB 8.0 cannot start on, AppCrane now tells you right away and names the upgrade you need, instead of waiting two minutes and failing without a reason." ], "2.117.2": [ "Automatic security fixes are stricter: they only ship when the code is exactly what is already in production, so nothing unapproved can slip out with them.", "The background job that applies those fixes now gives way to your apps when the server is busy." ], "2.117.1": [ "RCE auto-patch only runs when the branch matches what is live in production, so it can never promote changes a person has not approved, and it re-checks the on/off switch, the app opt-out and running restores right before promoting and before any rollback." ], "2.117.0": [ "RCE auto-patch, on by default: fixes for remote-code-execution advisories in npm dependencies are applied, sandbox-tested, release-checked and promoted by a written, audited policy instead of a person, with automatic rollback and an e-mail to owners. Every other fix keeps the human approval step." ], "2.116.0": [ "PHP apps without a Dockerfile now build on the newest PHP (8.5, 8.4 or 8.3) that their composer.json allows; new apps with no requirement get 8.5, apps already deployed stay on their current version, and the deploy log says which PHP was chosen and why." ], "2.115.0": [ "SOC 2 controls: two-factor sign-in for password logins (required for platform admins by default), shorter session and idle timeouts for admins, periodic access reviews, a tamper-evident audit chain, weekly restore drills with RPO/RTO, and a signed compliance evidence pack.", "FIPS 140-3 mode: AppCrane can refuse to start without a FIPS provider, passwords move to PBKDF2-HMAC-SHA256 at each user's next sign-in, S3 deletes use SHA-256 checksums, and Settings shows the cryptography status.", "New apps answer a security intake with a data classification, every production deploy passes a release check, Adopt an app brings Lovable, Bolt, v0, Replit or Figma Make projects onto a sandbox, and Caddy, SSH and AppCrane now keep CPU under load (builds and databases are capped, CPU admission joins memory admission).", "Stream events to your SIEM, give apps an LLM gateway, turn an app's features into MCP tools, let agents delete apps, read audit trails and upload large files in resumable chunks, and security fixes for MCP OAuth, off-site backups, path role rules and request text the coder reads." ], "2.114.0": [ "A new Events timeline joins the audit log, deploys, scan findings, browser errors, job failures, server alerts and sign-ins, per app and per person, kept 30 / 90 / 365 days by severity.", "Apps can declare path role rules (in deployhub.json or on the Manage page) that AppCrane enforces before a request reaches the app, and a person can have only one open access request per app.", "API keys now expire after 90 days with e-mail warnings and one-click rotation, and a new \"MCP: OAuth only\" setting makes MCP clients sign in with OAuth.", "Restoring a backup or database stops the app first and starts it again afterwards; off-site S3/R2 backups now include app repositories, upload in parts, keep 7 daily / 4 weekly / 6 monthly copies, verify every file, and can be encrypted, listed and restored." ], "2.113.0": [ "When the server is short on memory, platform admins are alerted about deploys, coder sessions and new databases that would over-commit it (or, if they choose, those are refused with a \"try again later\" message), and app containers are killed before AppCrane under memory pressure.", "Job Health now watches server memory and disk and e-mails platform admins when either runs low.", "The Launch page shows the apps you own first, and puts apps you have no access to under \"Request access\" instead of opening them; the app list no longer sends their health, versions or URLs." ], "2.112.0": [ "Apps can assign tasks to people, and everyone gets a \"My tasks\" inbox across all apps to reply, change status, or delete what they asked for.", "NPS surveys: platform admins choose the questions, apps and how often to ask; every answer is e-mailed to the app's owners and admins and shown on a new NPS & surveys page.", "Platform admins and app owners can preview AppCrane as a lower role (read-only); MCP clients can connect by signing in through the browser; and changing your own password now asks for the current one (Settings > Account).", "New Job Health and Client Errors pages for platform admins, and the side menu now opens on hover and folds back to icons on its own." ], "2.111.3": [ "No visible changes: a test that sometimes failed when tests ran side by side is now reliable." ], "2.111.2": [ "The browser tab now shows which AppCrane you are on: the server's address followed by \"- AppCrane\"." ], "2.111.1": [ "The coder keeps one conversation per app that survives restarts, idle stops and take-overs, so every session picks up the full history, including colleagues' turns." ], "2.111.0": [ "The coder can now see your app's live dependency scan, requests, deploys and logs while it works, through a read-only connection limited to that app and that turn.", "Passwords and env variables show as dots with an eye icon. Owners get an alert only when someone presses the eye to see a value, never just for opening the page.", "The coder no longer tries to commit or asks you to push, and you can take over an app's coder from a colleague's idle session without losing their unreleased work.", "Restarting or updating AppCrane no longer throws away the coder's unreleased changes: they are saved to a branch first." ], "2.110.1": [ "Someone who can't reveal a production value no longer sees its fingerprint either, so it can't be compared with a sandbox value they can see." ], "2.110.0": [ "Environment variables open masked. Reveal one key at a time, copy it once revealed, or replace a value without seeing the old one.", "Every request has its own page, and \"In coder\" opens the coder session the request was actually sent to.", "New e-mails in AppCrane's colours: app owners and platform admins hear what's new after each AppCrane upgrade, and an app's owners and admins hear what's new when that app ships a new version (each app can turn this off).", "App owners can rename their app's address, and the old address keeps redirecting. The coder is now limited to the app's owner and platform admins." ], "2.109.1": [ "Request text sent to the coder is treated as a description of the work, never as instructions, so a request cannot change the coder's rules." ], "2.109.0": [ "Pick several of an app's open requests and send them to the coder in one session. It works through them in your order and reports on each one.", "Clone or pull a Crane-hosted app's code with git over HTTPS, signing in with your AppCrane API key. The clone address is in the app's row on Applications." ], "2.108.0": [ "Each vulnerable dependency an app uses becomes one request in that app's queue, and the request closes itself once the fix is deployed.", "The daily vulnerability e-mail links every advisory to its request." ], "2.107.7": [ "The Request box takes your typing when the element you picked is a menu or a drawer." ], "2.107.6": [ "The coder can save its work again on servers where AppCrane does not run as root." ], "2.107.5": [ "Only the app owner or a platform admin can reveal a production secret value. App admins and members still manage keys and see them masked." ], "2.107.4": [ "Folders an app keeps between deploys are prepared more safely, so an app cannot use them to reach other files on the server. Your data stays where it was." ], "2.107.3": [ "Security fixes: an app's code can no longer point AppCrane at files elsewhere on the server.", "Changing an app's start command or restarting production now needs the matching permission, not just app membership.", "App admins can no longer give out or take away the owner role." ], "2.107.2": [ "AppCrane updates install again on servers without developer build tools.", "Crew and the dashboard fit a phone screen and read well in the light theme." ], "2.107.1": [ "Restoring an app's MariaDB database also signs out its open database sessions, and the deploy log explains what happened with the sandbox database link." ], "2.107.0": [ "Crew asks you before your agent takes on certain work, and standing rules (for example, \"this agent may run migrations on sandbox\") let it go ahead without asking every time. Production and deletions always ask.", "Apps on managed Postgres can turn on query statistics for their own database.", "A database login that can read and write data but not change the tables, for each environment.", "Production can reach its sandbox database to copy masked data down, never the other way round." ], "2.106.1": [ "Crew keeps a held task held until you approve it, and blocking or refusing an agent ends all of its open tasks." ], "2.106.0": [ "Crew talks to hosted agents over the open A2A standard, and each hosted agent gets its own token you can rotate or revoke.", "A new Map in Crew shows which agents work with each other.", "Three Crew security gaps are closed." ], "2.105.0": [ "New: Crew, a page where agents register, find each other and hand off work. A new contact between two people's agents waits for its owner's approval." ], "2.104.1": [ "Times in the dashboard are right in every timezone. A deploy made a moment ago no longer shows as hours ago.", "Releasing the coder's changes is safer: AppCrane no longer reads the agent's files directly on the server.", "With MariaDB encryption on, every app table is encrypted and the database's own log stays small." ], "2.104.0": [ "The coder is safer: AppCrane no longer runs its own tools inside files the agent can change.", "Each app's Redis accepts only that app's own certificate.", "Failed-login alerts for managed databases cannot be flooded or used to hide a real attack." ], "2.103.1": [ "A deployment that got stuck no longer blocks AppCrane updates, and the dashboard shows what an update is waiting for." ], "2.103.0": [ "Platform admins can turn on encryption at rest for managed MariaDB data.", "The nightly backup now includes every app's managed databases.", "Feedback sent from inside an app reaches that app's request queue again." ], "2.102.0": [ "Managed databases are backed up, and an app's owner can restore them.", "Deploying a ready-made image is safer: AppCrane no longer starts the image just to inspect it." ], "2.101.0": [ "Managed databases use encrypted connections, and a custom app connects with its own certificate, so another app cannot sign in to yours even with the password.", "Per-app connection limits, and platform admins are alerted to repeated failed database logins." ], "2.100.1": [ "Sandbox never receives production's database credentials: a database declared in deployhub.json is always separate for each environment." ], "2.100.0": [ "Custom apps can ask for a managed database (Postgres, MariaDB, MongoDB or Redis) in deployhub.json, and the connection details are given to the app when it deploys.", "Sandbox can have its own database, separate from production." ] }