Releases
v0.74.0
Compare
Sorry, something went wrong.
No results found
0.74.0 (2026-07-16)
Bug Fixes
account: Clear request key after accepting invitation (ea7a645 )
account: clear request key in accept_team_invite (a2ceb80 )
account: Enhance team invite acceptance logic and add tests (aaa5296 )
account: Improve key validation for invites (cd6d615 )
Add frappe dependent app check only for private bench release groups (1bda510 )
agent-job: Add tests for fail_old_jobs (2c5c9eb )
agent-job: Fail old jobs correctly (fda2e4b )
api: Avoid creating blog read status when no blog url is set (03b7033 )
api: Guard missing og:title and fix broken test import (be5fcbb )
api: Hide blog widget instead of crashing on fetch failure (8d6dadf )
api: include description field in bench.install_all (d557a2b )
Avoid re-querying source for missing app urls (ff25ca7 )
backend: Clear _current_team before request and job (3d511c4 )
backend: Fix permissions for product trial doctype (bf44881 )
backend: Fix permissions for site analytics doctype (bafc3cf )
backend: Ignore permission when saving TLS certificates (65a8d74 )
backend: Typo (85293f8 )
bench: check for recent ongoing jobs when trying to archive a bench (0f851ed )
bench: Exclude archived sites' updates from archive block (c1c4019 )
billing: Add support for more special characters (9a3a443 )
billing: Handle for empty strings (03bf9dd )
client: Sync ALLOWED_DOCTYPES with upstream/develop (1dfe9bb )
client: Use check_document_access for get (b3c4d02 )
cluster: Dont throw inside try (bfec097 )
cluster: Fix semgrep issues (89498e7 )
cluster: Hetzner delete default route if exists while adding one (cd2c4e8 )
cluster: Restore lost fields (1f21c37 )
cluster: Reuse hetzner NAT security group if already exists (0b4ccb7 )
cluster: Revert VPC flow logs to bare-bucket S3 ARN (b1ff3f8 ), closes #6817 #6657
cluster: Wait for hetzner delete route (9f01d13 )
cluster: Write VPC flow logs under a per-cluster S3 key prefix (2f7c99c )
dashboard: Add badges for status in benchrow in serverlist (0e7971c )
dashboard: Add missing load more btns for sites/benches (a1fb37c )
dashboard: Add missing team field for release pipeline in deploys list (987208e )
dashboard: Add missing tooltips for server list cards (c1bb1a8 )
dashboard: Add some null checks & socket clean up in servers list (bf76627 )
dashboard: Auto reload members after invitation (e7b2ab7 )
dashboard: better err handling for appdialog in servers list (1a67ee7 )
dashboard: better err handling in flow dialogs (b28b239 )
dashboard: Change colors for team member roles (5e23f61 )
dashboard: Change team owner icon color to gray (a3c36d4 )
dashboard: drop server not working in servers list (367f037 )
dashboard: Err handling for deploy dialog (2d250e8 )
dashboard: Err handling for site creation dialog (3685faf )
dashboard: Hide warranty cooldown date when a change is possible (6fc8f08 )
dashboard: Icon color for team admin roles badge (7e0a226 )
dashboard: Include cluster img & country in server list cards (ffc0293 )
dashboard: Keep relaxed permissions checkbox visible until reload (b65ca41 )
dashboard: Move relaxed permissions switch to team page (301cdf4 )
dashboard: Remove pre block from team page (4c83733 )
dashboard: Remove cluster country logos from server list (698f801 )
dashboard: Replace select with combobox for filters in servers list (02c1722 )
dashboard: Role: keep invite user button and dialog (8a0dddb )
dashboard: Role: remove invite user option (fbfd4e7 )
dashboard: show 0 site_count in server list cards (4abbd2d )
dashboard: show proper deploying status on bench status badge (73a46e2 )
dashboard: show proper deploying status on bench status badge (8631440 )
dashboard: some sites not showing in server card bench rows (fc80a62 )
dashboard: status badge dot/font sizes in server list cards (b148be8 )
dashboard: Team page UI/UX (53e15ed )
dashboard: Team: remove email column (7d7e6a7 )
dashboard: Team: remove useless condition to show roles (e45e165 )
dashboard: Team: use Badge for roles (8e4e285 )
dashboard: typo in server list statusOptions vals (ce49881 )
dashboard: Use checkbox for relaxed permissions on team page (479b2d6 )
database-server: Disable binlog auto purge when configuring a replica (ca77f8f )
database-server: Ensure MariaDB is running before configuring replication (d4bfc36 )
Declare Frappe compatibility as >=15.0.0,<17.0.0 (d3df096 )
deploy-candidate: Allow build retry when dependencies changed (6137785 )
deploy-candidate: Fix Schedule Build and Deploy popup crash (b56a7c7 )
deploy-ui: dont show lucide icon as fallback for app logo (7e8f01a )
deploy-ui: fallback jobstep.duration with empty string (0840bd8 )
deploy-ui: make page responsive (3a677a9 )
deploy-ui: missing onclick for server reload btn (52b2d62 )
deploy-ui: Replace pipeline wording with Deploy (e36d5a0 )
deploy-ui: Show AppVersions dialog for pipeline view too (697a39b )
deps: Bump pyOpenSSL to 25.1.0 and oci to 2.178.0 (9e11cb0 )
deps: Bump pyOpenSSL to 25.1.0 to fix CI crash with cryptography 46 (cf050e7 )
deps: Cap cryptography below 46 in bench dev-dependencies (6732e33 )
deps: Revert pyOpenSSL and oci bumps; cryptography cap is enough (6c61720 )
drip-email: fix evaluate_condition type signature (11158c9 )
drip-email: guard against deleted Product Trial document (0fb94c1 )
drip-email: guard evaluate_condition against missing product_trial (c841d7a )
drip-email: guard product_trial and gate unsubscribe behind send_raw (9c37fdc )
Enable check_dependent_apps for release groups in private bench creation flow (75b7a46 )
errors: Don't leak account existence in login/signup errors (8d517af )
errors: Don't reveal server ownership in bench creation error (e37e153 )
errors: Mention cancelling review request in app-release errors (98ab026 )
errors: Mention stopping deploy in bench deploy-in-progress error (802eba6 )
Fix semgrep issue (2867785 )
format: Parse [b] as bold tag in sanitzeHtml() (7f3c050 )
github-app-selector: Prioritize connect over re-auth and guard error messages (5e711de )
github-app-selector: Show proper gh api error message (278e7a9 )
github: Show actionable error when frappe-dependencies is missing (af6629b )
invite: Update API endpoint URLs (ff7c23b )
invoice: Show better description for invoice items (77728c8 )
json: Remove trailing comma (8d1e382 )
lint: Reduce create_site_analytics complexity, use next(iter()) (6cfc1fe )
mariadb: Unmask mariadb.service before preparing snapshot-based replica (dacd97b )
merge: Restore master hotfixes dropped by whole-file conflict resolution (a98d307 ), closes #6270
monitor: Fix semgrep issue (aa6cf8a )
monitor: Use correct credentials for prometheus rules API (d271fca )
monitor: Use prometheus_username in htpasswd, frappe is default (2b3fcb0 )
mpesa: Remove value for new combobox input (77dd006 )
nat-playbook: Add Frappe compute in ansible task (cfba449 )
nat: Check NAT server in cluster before OCI route table attach (f6107f0 )
nat: enable dhcp and ignore its routes in nat config (46d052a )
nat: Fix OCI NAT issues (e28adc5 )
nat: Hetzner enable dhcp in netplan (d429992 )
nat: Remove hetzner from whitelisted disassociate ip (6a573b3 )
nat: Setup NAT if public IP is not present (647c090 )
nat: Use nat_gateway_ip in playbook to check (2fd62f5 )
nginx: Add COOP header in /login route (92a60e9 )
Normalize GitHub repo slugs to Frappe app names (hyphen to underscore) (250d28d )
objects: support custom component in list object (a0ea18a )
onboarding: Update certificate link request handling (3dbf316 )
onboarding: Update perm issues (35d42f5 )
Only send stream flag for offsite backups (394bb92 )
partner-onboarding: Add optimistic updates for better perf and ux (ab05e6e )
partner-onboarding: Add registered country tooltip (37fb445 )
partner-onboarding: Calculate based on current months date (27e7103 )
partner-onboarding: Consider current month only for new team (f313b13 )
partner-onboarding: Discovery and UX (8c43ba2 )
partner-plans: Improve currency formatting logic (bbb62fe )
payout-order: Resolve ruff errors and empty error-log bug (10e031a )
plan_instance_type: Sync server plans from prod (b5ecd80 )
press-role: Unset account request references on role deletion (3651ea7 )
prm: Auto approve approval request if team is recent (689763b )
prm: Don't show arbitrary date if not set (f82f0ba )
prm: Update tier values by 10 percent (7ed9f02 )
product-trial: add agent job child controller (8d59bda )
product-trial: log invalid tracked agent jobs (9661610 )
product-trial: Only hand out standby sites on the latest bench (a3fc878 )
product-trial: preserve domain provisioning flow (c8e9102 )
product-trial: store tracked agent jobs as json (611e2de )
product-trial: track provisioning agent jobs (1392829 )
product-trial: update provisioning progress UI (c69a55b )
product-warranty-switch: Gate warranty enabling only (518365f )
Refactor add_dependent_apps (55a7821 )
release-group: Guard version sync on branch change by team too (7636e0c )
release-group: Update check_dependent_apps flag's behaviour (2b68322 )
release-pipeline: Emit status update event only after commit (986095e )
release-pipeline: Emit status update event only after commit (0311937 )
remote-file: Limit scope to team (ecc4e10 )
Remove unnecessary validation in Release Group doctype (0191b03 )
restore-with-files: Include site config as part of restore (443d20c )
restore-with-files: Sanitize site config and add directly to payload (f8f30d1 )
restore-with-files: Validate config remote file and guard correctly (0da13ed )
restore: carry over site config in restore_site_from_files (2cd3a33 )
Semgrep issue (09cf617 )
server-list: add onSuccess() in createbench (1cfe1de )
server-list: include cluster/server in createBench.submit() (1da2971 )
server-list: include frappe as first app (8e47b06 )
server-plan-fixtures: Change m7g platform from x86_64 to arm64 (14b1311 )
server-plan-fixtures: Update roles to Press User (cb5abae )
server-ui: add missing modelValue for checkboxes (9807aec )
server: Allow a server to be excluded from public server pool for new benches/sites (#6648 ) (b559df4 )
server: Authorize target before toggling auto increase storage (6fab297 )
server: Check if provider is hetzner and cidr block before using it (b4b7bcd )
server: Don't allow server creation for 2 or more unpaid invoices (93b8220 )
server: Include vCPU and RAM in downgrade warning plan labels (56ecb46 )
server: Increase timeout for start benches job (086defb )
server: Install rclone from pinned deb with checksum (ec72d7e )
server: Persist auto increase storage disable on DB servers (426eda0 )
server: Prevent sync firewall job on creation (7e68cf9 )
server: Refresh data volume mount after snapshot swap during server creation (115818b )
server: remove and add nat config back if applicable during resize server job (4185aa7 )
servers-list: improve appsdialog (7d17ac7 )
servers-ui: add missing siteoptions (a5a6d0e )
servers-ui: alignment issue & site count badge (9aa3432 )
servers-ui: broken links in server dropdown (36cadd6 )
servers-ui: css issues (88cc8d1 )
servers-ui: font issues (80b8ed4 )
servers-ui: include missing api integration in addApps modal (0d4599a )
servers-ui: include some fields in benchrow res (7b9cef4 )
servers-ui: layout shift caused due to missing column when fetching deploystatus (bb3d533 )
servers-ui: layout shift due to no bench status (56b733e )
servers-ui: make collapsable chevron right (a97804d )
servers-ui: make server name a link (6c50ae3 )
servers-ui: make sitename clickable (0636dcd )
servers-ui: padding issues in row (f1e3107 )
servers-ui: reload benches list after new creation (cc6ab8e )
servers-ui: remove cachedDocRes in dropBench() (e42b9fb )
servers-ui: remove useless resource in onDropServer() (c8f3cee )
servers-ui: remove useless watch() for search filter (d1a72da )
servers-ui: replace placeholder specs data with real one (07d1d21 )
servers-ui: route name typo (0dc39b1 )
servers-ui: show deploy action only for the awaiting deploy statuses (94f2674 )
servers-ui: use better red color for broken status (c023bbf )
servers: add no benches tooltip (8f10205 )
servers: add smooth data loaders (14f02fa )
servers: cache resources (0300bc0 )
server: schedule archival of servers with unpaid invoices every 6 hrs (3b68404 )
server: Show plan names and avoid stacked modals in downgrade warning (36a1499 )
server: show remaining wait time instead of elapsed time for disk resize (f5c2e0a )
server: Split downgrade warning into problem and next step (d0538fa )
servers: remove bottom border from sites row conditionally (c5fd838 )
server: try adding the nat config back if the resize server job fails (240bb09 )
sidebar: set 250px as default width (1b4ca19 )
signup: refine provisioning progress flow (ede0d2a )
site-config-key: Remove fixture (4c72cc3 )
site-domain: Allow adding custom domains if the domain ip matches the proxy ip (#6658 ) (53ca9cf )
site-domain: Sync upstream-added domains to site config (c7b483c )
site-overview: Show compute for non-dedicated site (ca7fcb1 )
site-update: Always update standby sites (b176682 )
site-update: Fetch is_standby so standby sites always update (df566bd )
site: Allow enabling product warranty irrespective of cooldown (bbed086 )
site: Check remote file team value Existence before comparison (f8459ac )
site: Check unpaid invoices before creating new sites (53fcbf5 )
site: Disable subscription when site creation fails (591e31d ), closes #6110
site: Don't allow site creation if limit exceeded (9400430 )
site: Marketplace app site key handling for devs (d53efa0 )
site: pick only enabled root domains when fetching options for new site (94345e0 )
site: Re-enable subscription when site recovers from failed creation (eeb4afb )
site: Show loading screen (c473184 )
site: Translate user facing error (1c1beb7 )
site: use host name if present when trying to notify users of incoming site archival (e75e2ec )
site: Wait if response is loading (98d9d28 )
stripe: Add intent id in pulse events (86cde23 )
support: Add type annotations to module-level test constants (35601d8 )
support: Read web.error.log from bench, not site (a4b7374 )
support: Replace NaN float idiom in Prometheus value parser (1a274c8 )
support: Strip server and bench identifiers before sending to model (c6d9741 )
support: Suppress semgrep rule on timeout error in Claude client (4fc1085 )
support: Validate API key at entry point before calling Claude (cf62523 )
team-settings: Reload members resource after member removal (ba655c8 )
team-settings: Use row.user instead of row.name (53b3513 )
team-settings: Use valid Tailwind duration for link transition (9969c88 )
team: Assign press role when an invite is accepted (964174c )
team: Consider pseudo role Admin when getting admin status (b0422e6 )
team: Do not pass Admin role to the backend (630ee9d )
team: Expire correct account request (b22a8b3 )
team: Get matched role by name (214dd5f )
team: Hide invites with cleared request key from members list (711227a )
team: Regular members may not remove other members (0f03fdf )
team: Return empty list instead of ['None'] when user has no roles (fa68e21 )
team: Update partner start date retrieval to return a default date (ab72943 )
telemetry: Rename _pulse_post kwarg to avoid frappe.enqueue collision (30defa8 )
tests: Failing tests in partner onboarding (77b10f1 )
types: Resolve mypy errors in files touched by this PR (508f3df )
typing: Resolve mypy errors in branch-changed files (fbfbedd )
ui: Add animations to accordion component (c1883e0 )
ui: Add backoff to release pipeline poll restart (2c3bbae )
ui: Add bg to OCI logo for consistency in servercards (0dcf843 )
ui: Add missing drop site option for site row in serverslist (f79de1d )
ui: Add missing fade-in for site rows in benchlist page (5dea3bd )
ui: Add missing server plan tooltip (ae2bed5 )
ui: Add toasts on bottom right to avoid cta block (773bc99 )
ui: alignment issues in server card (293bc7a )
ui: autologout caused by using frappe.client.* (c3ebfcd )
ui: Avoid refetching resource on 0 site_count on bench list page (ee1adfc )
ui: center serverplan tooltip in server card (fd2f033 )
ui: Database label alignment in siteoverview cards (51fde61 )
ui: deploying status text size in server list (4600d0c )
ui: Disable state for partner registration button (6aea3e5 )
ui: Eligibility message and improve spacing in layout (8118746 )
ui: Enhance button layout and spacing in onboarding components (399923b )
ui: font sizes in server listcard titles (676d25f )
ui: Increase pagelimit for benchlist (3ade2ae )
ui: make load more btn sticky in bench list page (a5dc1be )
ui: minor alignment for load more btn in servers card (98782d4 )
ui: properly match githuburl in add apps dialog (48e6829 )
ui: Remove blue color from external links in SiteMigration page (e143946 )
ui: Remove duplicate primary btn in CommunicationInfoDialog (6440fca )
ui: remove unneeded border for siteheader in bench row (c4bb456 )
ui: rename Oraclelogo mapping to OCI for server card icons (ac0360b )
ui: show 0 sitecount in benchlist row (fd41870 )
ui: Show Deploying status instead of pipeline in server list bench row (65fcf66 )
ui: typo in default server provider icon (d607938 )
ui: Update onboarding sidebar tooltip and button enhancements (caad9fc )
ui: Use concrete commit hash for changes link in site update dialog (745cb73 )
ui: Use exponential backoff for release pipeline poll restart (2338577 )
ui: use global badge component for consistency in benchlist (ba41e68 )
ui: Use named routes for bench list rows (82df6b4 )
ui: use subtle variant for load more btn in serverlist (466fd0a )
ui: Use title case for servercard dropdown options (6c3bdbf )
virtual-machine: Add server_doctype to wait_for_ssh (ddffc9a )
virtual-machine: Append the firewall id (4de7974 )
virtual-machine: Check NAT server existence before ip removal (cfb84cb )
virtual-machine: Delete hetzner server if route attachment failed (098e738 )
virtual-machine: Fix indentation bug (4be2518 )
virtual-machine: Fix nat group creation race (8a8c8a9 )
virtual-machine: Fix semgrep issues (430fe2c )
virtual-machine: Fix semgrep issues (1cf19df )
virtual-machine: Give hetzner more default wait time for ssh (896727b )
virtual-machine: Hetzner power on only if its off (fffd3e3 )
virtual-machine: Power on hetzner if disassociate fails mid run (661a663 )
virtual-machine: Return if OCI ip removal failed (7e1e3b7 )
virtual-machine: Throw error if bastion is not found (c2739ac )
virtual-machine: Throw error if NAT server is not found (302c49a )
Features
Add latest_blog_url field in Press Settings doctype (2e0ff86 )
Add stream_backups field on Server and send as stream arg on backup (ccc1d1c )
api: latest blog utilities (81b473d )
app-source: Sync app source versions from repo on branch change (dcd07e2 )
backups: Add conditions to meet before streaming (cdf4689 )
billing: Add a Subscriptions tab to view the team's subscriptions (1d2aa86 ), closes #6835
cluster: Add DigitalOcean to get_nat_server_if_supported (3bc222b )
cluster: Add DO NAT security group (8b4ccae )
cluster: Add NAT route as the default to hetzner (f77209a )
cluster: Add NAT security group to hetzner (b19622c )
cluster: Add OCI in get_nat_server_if_supported (5f3818d )
cluster: VPC flow logs setup (69907f8 )
dashboard: Include invites in team page (d0d8d30 )
dashboard: Owner indicator in team page (bbe9fc4 )
dashboard: Show member's roles in team page (830c94f )
dashboard: Team: add a column with admin/member info (7189a22 )
dashboard: Team: use combobox for roles when inviting user (5a4d74f )
database-server: Add Ansible vars for nat_iptables (6bce896 )
doctype: blog read status (e880146 )
drip-email: add send_raw flag to send message without template injection (d89cb5d )
errors: Make API-layer error messages actionable with doc links (291307f )
errors: Make customer-facing doctype errors actionable with doc links (262959d )
errors: Make infrastructure doctype errors actionable (472c557 )
errors: Make remaining ops, saas and utils errors actionable (42953f9 )
ip-removal-log: extend log to update nat config as well (5509592 )
nat-server: Mention Frappe Compute too (5a42b62 )
nat: Add DO to NAT DOCTYPE (4bf71da )
nat: Add DO to NAT iptables playbook (60244ac )
nat: Extend NAT into OCI (5e9d945 )
nat: For OCI, revert the VNIC route table in static IP allocation (98ec569 )
nat: IP removal for hetzner (7c95897 )
nat: Override DigitalOcean default route using split /1 routes (71a975e )
nat: Update nat_iptables playbook to include hetzner specifics (9d20fdd )
plan-history: Reorder columns — Changed From before Changed To (06cfe6d )
product-trial: scheduled job to clean up standby sites for products where pooling is stopped (2fa57ff )
Remove server plan fixtures (0107592 )
server-ia: add add site dialog (2d36d26 )
server: Add necessary vars to nat playbook (fb3588d )
server: Add Plan History tab to server detail page (f49721d )
server: Add plan support filter in dedicated server sites tab (caab9e0 ), closes #6647
server: Add skip-standby-site-creation flag (6f573ae )
server: Install rclone on server setup (cc10819 )
server: Install rclone on unified server setup (36d911c )
servers-ui: add apps dialog (2c35d0b )
servers-ui: Add realtime status checking and split components (d7302c5 )
server: Show app + DB server plan history with server type filter (d428536 )
server: Warn users before downgrading server plan (a526a59 )
site: Add migration shortcuts to the Actions tab (a4ff98e )
site: Add Plan History tab to site detail page (e56207c )
site: Gate dedicated plan warranty on app + database server cost (096cd1b )
site: Name the action in desk confirm dialogs (7f43684 )
Stream backups (83b3610 )
support: Add Claude AI analysis to support agent investigations (f94e4a2 )
support: Automatically collect web.error.log in investigations (756bccf )
support: Collect bench process status for 502 investigations (eeb8c38 )
support: Collect probe uptime; strip site name from model prompt (bcfd9ad )
support: Detect slow and custom-app endpoints in summary (3a54fbd )
support: Surface custom-app and spiky endpoints in report (c94adf8 )
team: Ability to cancel invitation (352c3dc )
team: Simplify invite dialog with single role select (48e29b7 )
team: Specify admin roles in dashboard (fdccf39 )
telemetry: identify the account team as the pulse subject (#6876 ) (31c2c69 )
telemetry: signup identity, fc_team, and signup funnel events (#6833 ) (db69267 )
ui: Attention widget for the sidebar (e5df6c2 )
ui: Bench list tree view with proper pagination (9ef9a43 )
ui: Include changes column in site update dialog (c73adad )
ui: Include deploy & site actions in bench list (2cd5619 )
ui: initial components for layouts in servers heirarchy (ba9bc03 )
virtual-machine: Also add Database server to wait_for_ssh (aae9720 )
virtual-machine: Call add_hetzner_nat_route before creating NAT VM (cf9f3b1 )
virtual-machine: Create NAT security group if it dont exist (95f05ce )
virtual-machine: Create NAT security group in existing clusters (acbcea3 )
virtual-machine: Remove sync inside disassociate function (9029d3d )
virtual-machine: Set enable_ipv4 to assign_public_ip for hetzner (8f17623 )
Performance Improvements
billing: Fetch marketplace app titles in one query (b61e4f1 )
marketplace: Index Marketplace App Subscription.team (e01f96a )
team: Batch user and roles queries in members() to eliminate N+1 (09fd551 )
Reverts
errors: Drop cosmetic site_analytics import reformat (bd7b88e )
errors: Revert login/signup error message changes (a70e02a )
You can’t perform that action at this time.