Title: Report appropriate message when volume snapshots are not supported (due to the associated instance has file-based storage VM snapshots) · Issue #11927 · apache/cloudstack · GitHub
Open Graph Title: Report appropriate message when volume snapshots are not supported (due to the associated instance has file-based storage VM snapshots) · Issue #11927 · apache/cloudstack
X Title: Report appropriate message when volume snapshots are not supported (due to the associated instance has file-based storage VM snapshots) · Issue #11927 · apache/cloudstack
Description: problem The volume snapshot fails with error "Unable to find a snapshot strategy to create snapshot..." when the associated instance has file-based storage VM snapshots. It is better to report with proper message to the user. There is a ...
Open Graph Description: problem The volume snapshot fails with error "Unable to find a snapshot strategy to create snapshot..." when the associated instance has file-based storage VM snapshots. It is better to report with...
X Description: problem The volume snapshot fails with error "Unable to find a snapshot strategy to create snapshot..." when the associated instance has file-based storage VM snapshots. It is better to r...
Opengraph URL: https://github.com/apache/cloudstack/issues/11927
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Report appropriate message when volume snapshots are not supported (due to the associated instance has file-based storage VM snapshots)","articleBody":"### problem\n\nThe volume snapshot fails with error \"_Unable to find a snapshot strategy to create snapshot..._\" when the associated instance has file-based storage VM snapshots. It is better to report with proper message to the user. There is a warn message in the log:\n\n`2025-10-29 06:58:39,043 WARN [o.a.c.s.s.DefaultSnapshotStrategy] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) VM [25f7de00-8218-462f-9e9e-8345e0d17246] already has KVM File-Based storage VM snapshots. These VM snapshots and volume snapshots are not supported together for KVM. As restoring volume snapshots will erase the VM snapshots and cause data loss.`\n\n\u003cimg width=\"1211\" height=\"504\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fe820951-d256-46d2-a908-547f20ad110d\" /\u003e\n\n\n```\n2025-10-29 06:58:39,005 DEBUG [c.c.v.VmWorkJobDispatcher] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52]) (logid:3258313d) Run VM work job: com.cloud.vm.VmWorkTakeVolumeSnapshot for VM 3, job origin: 51\n2025-10-29 06:58:39,009 DEBUG [c.c.v.VmWorkJobHandlerProxy] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Execute VM work job: com.cloud.vm.VmWorkTakeVolumeSnapshot{\"volumeId\":3,\"policyId\":0,\"snapshotId\":6,\"quiesceVm\":false,\"asyncBackup\":false,\"poolIds\":[],\"userId\":2,\"accountId\":2,\"vmId\":3,\"handlerName\":\"VolumeApiServiceImpl\"}\n2025-10-29 06:58:39,022 DEBUG [o.a.c.e.o.VolumeOrchestrator] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Found [0] snapshots [[]] that have checkpoints for volume with id [3].\n2025-10-29 06:58:39,032 DEBUG [o.a.c.s.h.HeuristicRuleHelper] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) No heuristic rules found for zone [Zone {\"id\": \"1\", \"name\": \"ref-trl-9825-k-Mol8-suresh-anaparti\", \"uuid\": \"55b9a950-738c-4075-9111-05c106cac653\"}] and heuristic type [SNAPSHOT]. Returning null.\n2025-10-29 06:58:39,036 DEBUG [c.c.s.StatsCollector] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Verifying image storage [ImageStore {\"id\":1,\"name\":\"NFS:\\/\\/10.0.32.4\\/acs\\/secondary\\/ref-trl-9825-k-Mol8-suresh-anaparti\\/ref-trl-9825-k-Mol8-suresh-anaparti-sec1\",\"uuid\":\"059074e7-8356-4daa-ac34-7d1730a1d38c\"}]. Capacity: total=[2.6357 TB], used=[2.0269 TB], threshold=[95.00%].\n2025-10-29 06:58:39,036 DEBUG [c.c.s.StatsCollector] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Verifying image storage [ImageStore {\"id\":1,\"name\":\"NFS:\\/\\/10.0.32.4\\/acs\\/secondary\\/ref-trl-9825-k-Mol8-suresh-anaparti\\/ref-trl-9825-k-Mol8-suresh-anaparti-sec1\",\"uuid\":\"059074e7-8356-4daa-ac34-7d1730a1d38c\"}]. Capacity: total=[2.6357 TB], used=[2.0269 TB], threshold=[95.00%].\n2025-10-29 06:58:39,043 WARN [o.a.c.s.s.DefaultSnapshotStrategy] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) VM [25f7de00-8218-462f-9e9e-8345e0d17246] already has KVM File-Based storage VM snapshots. These VM snapshots and volume snapshots are not supported together for KVM. As restoring volume snapshots will erase the VM snapshots and cause data loss.\n2025-10-29 06:58:39,049 DEBUG [o.a.c.s.s.StorPoolSnapshotStrategy] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) StorpoolSnapshotStrategy.canHandle: snapshot Snapshot {\"id\":6,\"name\":\"ROOT-3-Snap01-1\",\"state\":\"Allocated\",\"uuid\":\"281e14b7-22d3-4411-9b6e-714935830c23\",\"version\":\"2.2\",\"volumeId\":3}, dataStoreId 2, imageStore id 1, checkpointPath null., op=TAKE\n2025-10-29 06:58:39,052 DEBUG [c.c.a.ApiServlet] (qtp253011924-19:[ctx-8cfd09f6]) (logid:9025cd05) ===START=== 10.0.3.251 -- GET jobId=3258313d-5113-437c-9ea8-a0bdd884f67d\u0026command=queryAsyncJobResult\u0026response=json\u0026\n2025-10-29 06:58:39,053 DEBUG [c.c.a.ApiServlet] (qtp253011924-19:[ctx-8cfd09f6]) (logid:9025cd05) Two factor authentication is already verified for the user 2, so skipping\n2025-10-29 06:58:39,065 DEBUG [c.c.a.ApiServer] (qtp253011924-19:[ctx-8cfd09f6, ctx-5dcc2afb]) (logid:9025cd05) CIDRs from which account 'Account [{\"accountName\":\"admin\",\"id\":2,\"uuid\":\"cf044d59-af15-11f0-bf49-1e007e00038d\"}]' is allowed to perform API calls: 0.0.0.0/0,::/0\n2025-10-29 06:58:39,067 INFO [o.a.c.a.DynamicRoleBasedAPIAccessChecker] (qtp253011924-19:[ctx-8cfd09f6, ctx-5dcc2afb]) (logid:9025cd05) Account for user id cf04f8b3-af15-11f0-bf49-1e007e00038d is Root Admin or Domain Admin, all APIs are allowed.\n2025-10-29 06:58:39,067 DEBUG [o.a.c.a.StaticRoleBasedAPIAccessChecker] (qtp253011924-19:[ctx-8cfd09f6, ctx-5dcc2afb]) (logid:9025cd05) RoleService is enabled. We will use it instead of StaticRoleBasedAPIAccessChecker.\n2025-10-29 06:58:39,067 DEBUG [o.a.c.r.ApiRateLimitServiceImpl] (qtp253011924-19:[ctx-8cfd09f6, ctx-5dcc2afb]) (logid:9025cd05) API rate limiting is disabled. We will not use ApiRateLimitService.\n2025-10-29 06:58:39,075 DEBUG [c.c.s.s.SnapshotManagerImpl] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) No strategy found for creation of snapshot [Snapshot {\"id\":6,\"name\":\"ROOT-3-Snap01-1\",\"state\":\"Allocated\",\"uuid\":\"281e14b7-22d3-4411-9b6e-714935830c23\",\"version\":\"2.2\",\"volumeId\":3}, dataStoreId 2, imageStore id 1, checkpointPath null.], removing its record from the database.\n2025-10-29 06:58:39,075 DEBUG [c.c.s.s.SnapshotManagerImpl] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Failed to create snapshotUnable to find a snapshot strategy to create snapshot [Snapshot {\"id\":6,\"name\":\"ROOT-3-Snap01-1\",\"state\":\"Allocated\",\"uuid\":\"281e14b7-22d3-4411-9b6e-714935830c23\",\"version\":\"2.2\",\"volumeId\":3}] of volume [65780f6c-c2d4-4ee7-a174-db123c28ce67]. Please check the logs.\n2025-10-29 06:58:39,075 DEBUG [c.c.r.ResourceLimitManagerImpl] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Updating resource Type = snapshot count for Account with id = 2 Operation = decreasing Amount = 1\n2025-10-29 06:58:39,085 DEBUG [c.c.r.ResourceLimitManagerImpl] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Updating resource Type = secondary_storage count for Account with id = 2 Operation = decreasing Amount = (8.00 GB) 8589934592\n2025-10-29 06:58:39,092 ERROR [c.c.v.VmWorkJobHandlerProxy] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Invocation exception, caused by: java.lang.UnsupportedOperationException: Unable to find a snapshot strategy to create snapshot [Snapshot {\"id\":6,\"name\":\"ROOT-3-Snap01-1\",\"state\":\"Allocated\",\"uuid\":\"281e14b7-22d3-4411-9b6e-714935830c23\",\"version\":\"2.2\",\"volumeId\":3}] of volume [65780f6c-c2d4-4ee7-a174-db123c28ce67]. Please check the logs.\n2025-10-29 06:58:39,092 INFO [c.c.v.VmWorkJobHandlerProxy] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52, ctx-51a88f7c]) (logid:3258313d) Rethrow exception java.lang.UnsupportedOperationException: Unable to find a snapshot strategy to create snapshot [Snapshot {\"id\":6,\"name\":\"ROOT-3-Snap01-1\",\"state\":\"Allocated\",\"uuid\":\"281e14b7-22d3-4411-9b6e-714935830c23\",\"version\":\"2.2\",\"volumeId\":3}] of volume [65780f6c-c2d4-4ee7-a174-db123c28ce67]. Please check the logs.\n2025-10-29 06:58:39,092 DEBUG [c.c.v.VmWorkJobDispatcher] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52]) (logid:3258313d) Done with run of VM work job: com.cloud.vm.VmWorkTakeVolumeSnapshot for VM 3, job origin: 51\n2025-10-29 06:58:39,092 ERROR [c.c.v.VmWorkJobDispatcher] (Work-Job-Executor-9:[ctx-5f3017c7, job-51/job-52]) (logid:3258313d) Unable to complete AsyncJob {\"accountId\":2,\"cmd\":\"com.cloud.vm.VmWorkTakeVolumeSnapshot\",\"cmdInfo\":\"rO0ABXNyACVjb20uY2xvdWQudm0uVm1Xb3JrVGFrZVZvbHVtZVNuYXBzaG90BL5gG4Li1c8CAAhaAAthc3luY0JhY2t1cFoACXF1aWVzY2VWbUwADGxvY2F0aW9uVHlwZXQAKUxjb20vY2xvdWQvc3RvcmFnZS9TbmFwc2hvdCRMb2NhdGlvblR5cGU7TAAIcG9saWN5SWR0ABBMamF2YS9sYW5nL0xvbmc7TAAHcG9vbElkc3QAEExqYXZhL3V0aWwvTGlzdDtMAApzbmFwc2hvdElkcQB-AAJMAAh2b2x1bWVJZHEAfgACTAAHem9uZUlkc3EAfgADeHIAE2NvbS5jbG91ZC52bS5WbVdvcmufmbZW8CVnawIABEoACWFjY291bnRJZEoABnVzZXJJZEoABHZtSWRMAAtoYW5kbGVyTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAADdAAUVm9sdW1lQXBpU2VydmljZUltcGwAAHBzcgAOamF2YS5sYW5nLkxvbmc7i-SQzI8j3wIAAUoABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAAAAAAAABzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAAAHcEAAAAAHhzcQB-AAgAAAAAAAAABnNxAH4ACAAAAAAAAAADcA\",\"cmdVersion\":0,\"completeMsid\":null,\"created\":\"Wed Oct 29 06:58:38 UTC 2025\",\"id\":52,\"initMsid\":32987462763405,\"instanceId\":null,\"instanceType\":null,\"lastPolled\":null,\"lastUpdated\":null,\"processStatus\":0,\"removed\":null,\"result\":null,\"resultCode\":0,\"status\":\"IN_PROGRESS\",\"userId\":2,\"uuid\":\"8e9b551e-ffef-4455-9b35-dd1381f49432\"}, job origin: 51 java.lang.UnsupportedOperationException: Unable to find a snapshot strategy to create snapshot [Snapshot {\"id\":6,\"name\":\"ROOT-3-Snap01-1\",\"state\":\"Allocated\",\"uuid\":\"281e14b7-22d3-4411-9b6e-714935830c23\",\"version\":\"2.2\",\"volumeId\":3}] of volume [65780f6c-c2d4-4ee7-a174-db123c28ce67]. Please check the logs.\n\tat com.cloud.storage.snapshot.SnapshotManagerImpl.takeSnapshot(SnapshotManagerImpl.java:1653)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\n\tat org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n\tat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)\n\tat jdk.proxy3/jdk.proxy3.$Proxy262.takeSnapshot(Unknown Source)\n\tat org.apache.cloudstack.storage.volume.VolumeServiceImpl.takeSnapshot(VolumeServiceImpl.java:2794)\n\tat com.cloud.storage.VolumeApiServiceImpl.orchestrateTakeVolumeSnapshot(VolumeApiServiceImpl.java:3987)\n\tat com.cloud.storage.VolumeApiServiceImpl.orchestrateTakeVolumeSnapshot(VolumeApiServiceImpl.java:5309)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\n\tat com.cloud.vm.VmWorkJobHandlerProxy.handleVmWorkJob(VmWorkJobHandlerProxy.java:102)\n\tat com.cloud.storage.VolumeApiServiceImpl.handleVmWorkJob(VolumeApiServiceImpl.java:5323)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\n\tat org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n\tat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)\n\tat jdk.proxy3/jdk.proxy3.$Proxy273.handleVmWorkJob(Unknown Source)\n\tat com.cloud.vm.VmWorkJobDispatcher.runJob(VmWorkJobDispatcher.java:99)\n\tat org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:698)\n\tat org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)\n\tat org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)\n\tat org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)\n\tat org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)\n\tat org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)\n\tat org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:646)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:840)\n```\n\n\n### versions\n\nACS 4.22 RC2\n\n### The steps to reproduce the bug\n\n1. Deploy an instance \n2. Take instance snapshot with memory \n3. Take volume snapshot of ROOT volume of the instance\n\n\n### What to do about it?\n\nReport with proper message (for example - \"_Volume snapshots are not supported when the associated instance has file-based storage VM snapshots_\") to the user (or this needs to be documented).","author":{"url":"https://github.com/sureshanaparti","@type":"Person","name":"sureshanaparti"},"datePublished":"2025-10-29T10:46:18.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/11927/cloudstack/issues/11927"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:3a0bbdab-7707-e2f1-0009-682a3a270f92 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BD10:33C7E7:292F0F:3C1F9D:6A4D0A38 |
| html-safe-nonce | 8e36bc3a56def4edaba44df054b65e33d4cb25aedb478de3e038abfc55f37f3c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRDEwOjMzQzdFNzoyOTJGMEY6M0MxRjlEOjZBNEQwQTM4IiwidmlzaXRvcl9pZCI6IjczNTgzMzU3MjY0Njk4NDM1MTIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | ab2714c503c61936e30ea119414e0c24db3571194cf43eb6568b36a2bb558da6 |
| hovercard-subject-tag | issue:3565369678 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/apache/cloudstack/11927/issue_layout |
| twitter:image | https://opengraph.githubassets.com/063eff008f12d7a63c701da9347065ec11549a5d6e0ebd4345517c6777b94364/apache/cloudstack/issues/11927 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/063eff008f12d7a63c701da9347065ec11549a5d6e0ebd4345517c6777b94364/apache/cloudstack/issues/11927 |
| og:image:alt | problem The volume snapshot fails with error "Unable to find a snapshot strategy to create snapshot..." when the associated instance has file-based storage VM snapshots. It is better to report with... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | sureshanaparti |
| hostname | github.com |
| expected-hostname | github.com |
| None | 31e4db13a9e20081f2fac78f441659a6576e582bbb15e153f9c7fb6473aa29f5 |
| turbo-cache-control | no-preview |
| go-import | github.com/apache/cloudstack git https://github.com/apache/cloudstack.git |
| octolytics-dimension-user_id | 47359 |
| octolytics-dimension-user_login | apache |
| octolytics-dimension-repository_id | 9759448 |
| octolytics-dimension-repository_nwo | apache/cloudstack |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 9759448 |
| octolytics-dimension-repository_network_root_nwo | apache/cloudstack |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | fb70bd3c4b2bec429781b65419e912c66e2d5581 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width