This release of the tuist-xcresult-processor image ships the following improvements and fixes.
What’s new
- GitHub Enterprise Server support: you can now register the Tuist GitHub App against your own GHES instance through the integrations page, available on the Enterprise plan for hosted accounts and unconditionally on self-hosted deployments.
- Multi-region Kura cache servers: create and manage regional cache servers in EU Central, US East, and US West directly from account settings and ops. The dashboard now shows a customer-facing Deploying badge while a server is being installed or updated.
- Georgian language support: the dashboard and generated assets now support Georgian text rendering.
- Rolling-window flaky-test automations: besides the existing “last N days” trigger, you can now evaluate flaky-test alerts and recovery over the latest N runs per test case.
- Quarantine analytics split: the quarantine dashboard now surfaces muted and skipped tests as separate series with dedicated widgets, matching the Flaky Tests page design.
- Observability: dashboard page-load requests are now tagged with
request_kind, and a new Grafana Apdex dashboard tracks latency, error rate, and request rate for page loads.
Fixes and reliability
- xcresult processing: the processor no longer retries structurally invalid xcresult bundles; it drops them and marks the run as failed after a single attempt. Attachment uploads are retried per chunk, and zero-byte attachments now upload correctly. Diagnostics are logged when extraction produces no recognizable bundle.
- ClickHouse: transient transport errors when marking flaky runs are now retried, reducing failed processing jobs from idle-pool socket drops. Hot build, test, and event lookups are optimized to cut CPU and data read on the database.
- Dashboard performance: the project breadcrumb dropdown resolves membership once per account, eliminating the N+1 query that caused multi-project pages to take several seconds to load.
- Scheduling: only web pods are eligible for Oban leadership, so scheduled jobs no longer stop when an xcresult processor pod wins the election. Self-hosted deployments also receive the project-level cron schedule.
- Slack: notifications now align with Slack marketplace requirements by using per-channel incoming webhooks. Existing bot-token destinations continue to work and migrate organically when you re-select a channel.
- Invitations: new users who accept an invitation and confirm their email are redirected back to the pending invitation instead of the new-organization page.
- Kura: the Kubernetes client no longer crashes when listing nodes, and the Kura settings page no longer exposes internal pod or node details.
- AWS IRSA: S3 authentication no longer crashes in EKS deployments using IRSA.
- CAS analytics: the Xcode cache page now loads correctly for date ranges spanning 60+ days.
- OpenAI Apps challenge: the
/.well-known/openai-apps-challengeendpoint now acceptstext/plainresponses for the OpenAI Apps verifier.