What's New For the September 2025 Release

Enhancements

  1. Breaking Changes Coming to the New Assembly Constraint Functionality
    The last release introduced the API for the new assembly constraint functionality. It was a preview feature. In this release, the feature remains a preview, and no changes have been made to the API. However, in the next release, the API for assembly constraints will undergo a complete change. This is why new functionality is released as a preview feature, allowing us to gather feedback about the API or feature while still maintaining the flexibility to make changes. If you've written any code using the existing assembly constraints, be prepared to make adjustments in the next release. The interface is undergoing slight changes, and additional functionality will be added. The names of some of the associated objects will also be changing.

  2. Assembly User Interface Changes
    In the last release, there was a change to how the assembly functionality is provided in the user interface. It was a preview feature that limited those who could enable it. That option has been removed, and the UI behaves as before. However, a new preview, called "Part and Assembly Design Workflow," has an even greater impact. It's a private preview feature, and for those who have access, it is turned on by default in this release. When this feature is enabled, the UI layout changes, and not all elements are accessible through the API. As a result, some custom commands created by add-ins may not be available. If you are a Fusion Insider, you have access to this new preview and are encouraged to test your commands. If they're not available when the preview is enabled, there's currently no alternative except to disable the preview and revert to the previous UI layout. API access to this new UI layout will be available in the future.

  3. Support for Text Parameters
    There's new functionality in Fusion that will make many people happy, and there is API support for some of it. The first part of this is the ability to create parameters with text values. The API fully supports creating, querying, and editing these new types of parameters. To support this, when adding a parameter, you can specify the unit type as "Text". Also, the Parameter object now supports the valueType and textValue properties, so you can determine if a parameter is this new type and get and set the value of the parameter.

    The related piece is the ability to create parametric sketch text that uses parameters. The API doesn't yet support this. Watch for it in an upcoming release.

  4. Full API Support for the Emboss Feature
    The Emboss feature has been available in Fusion for a long time, but it has had minimal API support. Now, the API provides full support for the Emboss feature. You can perform all actions in the API that are available through the user interface. It is a preview feature in this release to allow us to make any needed changes based on feedback, but we don't expect the preview to last long.

  5. Full API Support for Tapped and Clearance Holes
    This is another case where the functionality has been available in Fusion for quite some time, and the API is now catching up. The API now has full support for tapped and clearance holes. Many new properties have been added to the HoleFeatureInput and HoleInput objects. The full list is shown below.

  6. Thicken Feature Enhancement
    In this release, Fusion has enhanced the thicken feature to support a rounded thicken, where only sharp thickens were previously supported. A thickenType property is now supported on the ThickenFeatureInput and ThickenFeature objects.

  7. Full Round Fillet Support
    Here's another one where the API is catching up with the product. The API now has full support for the full round option when creating a fillet feature. Previously, a FullRoundFilletFeature object existed, but it only supported basic feature functionality and lacked support for creating or querying full round fillet features. The FullRoundFilletFeature object has been retired since the full round functionality is now part of the FilletFeature object.

  8. Full API Support for the New Hem Feature
    There is a new sheet metal feature that most of you may not be aware of yet, as it is a preview feature and is currently only available to a select few. However, the API was implemented concurrently with the feature and is exposed in the API as the Hem feature. Just like the feature, this API is also a preview and could still change before it is released.

  9. Support for Replacing Standard Components in Configurations
    A new capability supported by configurations is the ability to replace a standard component in an assembly. API supported has also been added through the new ConfigurationInsertStandardDesignColumn, ConfigurationReplaceDesigns, ConfigurationReplaceDesign, and ConfigurationInsertStandardDesignCell objects.

  10. Arrange Feature
    The API for the Arrange feature has graduated from preview to full support.

  11. Part Number and Description Changes
    This was also in the last "What's New", but because the migration of hubs to support the new collaborative editing is an ongoing process and many of you haven't seen the effects yet, it's being included here again.

    As part of new functionality coming to support collaborative editing, some changes have been made to Fusion and the API. The biggest change is that the part number and description properties of the Component object now store and retrieve data from the cloud, rather than the design. This change only applies to files that exist within a hub where concurrent editing has been enabled, so the impact is limited. You can check for this by using the new DataHub.isCollaborativeEditingEnabled property.

    When this is enabled, there are two things you'll likely notice. The first difference is in performance when using the partNumber and description properties of the Component object. This is because getting and setting these values is no longer a local operation, but rather uses the cloud to perform these tasks.

    Another change is that the cloud data associated with a component, where this data is saved, doesn't exist until the document that contains the component has been saved. The bigger change is that the part number and description can no longer be set until the document containing the component has been saved. These properties can't be set until the document is saved because the component and its properties aren't available on the cloud until the document is saved. You can read more about this in the new MFGDM API user manual topic.

  12. Additional Mesh Feature Support
    A significant portion of the Mesh functionality was released as preview functionality in the last release. There was an oversight that the properties to access three of the features were missing on the Features collection object. This has been corrected with the addition of the Features.meshConvertFeatures, Features.meshSeparateFeatures, and Features.meshReverseNormalFeatures properties.

  13. Control the Visibility of JointOrigins
    The isJointOriginsFolderLightBulbOn has been added to the Component object so you can turn on/off the display of all joint origins in a component.

  14. User Manual Update for Icons
    The Command Icons section of the User Interface topic in the API User Manual has been updated with the latest information regarding SVG file support and icons for the various user interface themes.

CAM API Changes

  1. The CAMParameter object has been enhanced with several new properties: fullTitle, isVisible, userDefaultExpression, systemDefaultExpression, and saveExpressionAsUserDefault. Also, the method CAMParameters.resetToSystemDefaults was added to reset all parameters to their default values.

  2. The CAMLibrary object now supports the doesPathExist method to make it easy to check if a path exists.

  3. A lot of new functionality was added to support defining machines using the API. You can see a long list below.

Fixes

  1. When using the Documents.open method, there is an argument to specify whether the document should be opened visibly. This worked quite a while ago, but has been broken. It now functions as expected and will open a document invisibly.

  2. design_oneBETU4 reported a problem on the forum about getting back results when exploding text in a sketch. This has been fixed.

  3. alasdair_scott2DJBH reported a problem on the forum about isLightBulbOn property of the Occurrence object not behaving correctly. It works now.

Custom Features

Custom Features is a new functionality that is currently in preview. This release has nothing new for custom features, but we still encourage you to try it and let us know your thoughts. You can learn more about it in the Custom Feature topic in the API User Manual. There are also two add-in samples referenced in that document that you can use to see the functionality.

This functionality is provided as a preview of intended future API capabilities. You are encouraged to use it and report any problems or suggestions using the Fusion API and Scripts Forum. However, because this previews future functionality, it may change, breaking any existing programs that use it. Therefore, you should never deliver programs that utilize any preview capabilities.


New Objects

Name Description
ClearanceHoleDataQuery This object provides methods to query the clearance hole to find valid definitions for creating a clearance hole.
ClearanceHoleInfo This object defines the methods and properties that define the size of a clearance hole. This object is used to create new hole features whose size is defined as a clearance hole for a specific size fastener. A new ClearanceHoleInfo object is created by using the ClearanceHoleInfo.create method. To determine valid values when creating a ClearanceHoleInfo object, you can use the ClearanceHoleDataQuery object, which is statically created using the ClearanceHoleDataQuery.create method.

If the ClearanceHoleInfo object is obtained from an existing HoleFeature object, modifying properties on the returned ClearanceHoleInfo object will modify the feature.
ConfigurationInsertStandardDesignCell Represents a single cell within a top or custom theme configuration table that controls which design is used for an inserted standard design. Use the parent column to get the occurrence being modified.
ConfigurationInsertStandardDesignColumn This object represents a column in the table that controls which design should be referenced by an occurrence. The column contains a list of designs that have been specified for that column. One of the designs is specified for each cell in the column. That design will be referenced by the occurrence when the row that cell is in is active.
ConfigurationReplaceDesign This object represents an individual ConfigurationReplaceDesign object that has been defined for a ConfigurationReplaceDesignColumn. Multiple ConfigurationReplaceDesign objects can be defined for a column and then one of those ConfigurationReplaceDesign objects is specified in each cell of the column.
ConfigurationReplaceDesigns Collection object that provides access to all the ConfigurationReplaceDesign objects that have been defined for a ConfigurationReplaceDesignColumn. You can also use this collection to define new replace designs that will then be available when specifying which design to use in a cell.
DoubleHemFeatureDefinition The definition for a double hem.
EmbossFeature Object that represents an existing emboss feature in a design.
EmbossFeatureInput This class defines the methods and properties that pertain to the definition of an emboss feature.
EmbossFeatures Collection that provides access to all of the existing emboss features in a component and supports the ability to create new emboss features.
FlatHemFeatureDefinition The definition for a flat hem.
FullRoundFilletFaceSet The class for the full round fillet face set.
FullRoundFilletFaceSets Collection that provides access to all existing full round fillet face sets associated with a full round fillet feature or a FullRoundFilletFeatureInput object, and allows adding new full round fillet face sets.
FullRoundFilletFeatureInput This class defines the methods and properties that pertain to the definition of a full round fillet feature.
HemFeature Defines a hem feature, providing methods to redefine the type of hem.
HemFeatureDefinition A Base class to return the information used to define the HemFeature.
HemFeatureInput This class defines the methods and properties that pertain to the definition of a hem feature.
HemFeatures Collection that provides access to all of the existing hem features in a design and supports the ability to create new hem features.
InteractionsMachineElement Machine element representing the machine's interactions. This controls how MachineItems interact with each other.
MachineElementInput Base class for machine element inputs.
MachineInteractionPair MachineInteractionPair objects control how a pair of MachineItems interact with each other.
MachineItem An item on a machine that can collide. That is, a MachinePart, or something attached to a MachinePart. Create them via InteractionsMachineElement::createMachineItem
MultiAxisCombinationDPMFeedrateSettings Specialization of MultiAxisDPMFeedrateSettings for degrees per minute feedrates that require a combination of linear and rotary movements.
MultiAxisDPMFeedrateSettings Specialization of MultiAxisFeedrateSettings for standard degrees per minute feedrates.
MultiAxisFeedrateSettings Base class for the multi-axis feedrate settings
MultiAxisFeedrateSettingsInput Input class for creating MultiAxisFeedrateSettings objects.
MultiAxisInverseTimeFeedrateSettings Specialization of MultiAxisFeedrateSettings for inverse time feedrates.
MultiAxisMachineElement Machine element representing multi-axis machine settings.
MultiAxisMachineElementInput Specialization of MachineElementInput for creating a multi-axis machine element.
MultiAxisProgrammedFeedrateSettings Specialization of MultiAxisFeedrateSettings for programmed feedrates.
MultiAxisRetractAndReconfigureSettings Settings for multi-axis retract and reconfigure.
MultiAxisSingularityLinearizationSettings The class for the multi-axis singularity linearization settings.
MultiAxisSingularitySettings Base class for multi-axis singularity settings.
OpenHemFeatureDefinition The definition for an open hem.
RolledHemFeatureDefinition The definition for a rolled hem.
RopeHemFeatureDefinition The definition for a rope hem.
TeardropHemFeatureDefinition The definition for a teardrop hem.
ToolingCapabilitiesMachineElement Machine element representing the tooling capabilities of a machine.
ToolingCapabilitiesMachineElementInput Input class for creating ToolingCapabilitiesMachineElement objects.

New Methods, Properties and Events

Name Description
AdditivePlatformMachineElement.cornerRadius Radius used to round the corners of the build platform. Units are cm.
CAMLibrary.doesPathExist Checks if the given URL points to an existing folder or asset in the library.
CAMParameter.fullTitle Returns the full title of this parameter as seen in the user interface. This can potentially be more descriptive than the basic title. This title is localized and can change based on the current language.
CAMParameter.isVisible Gets if this parameter is visible in the user interface.
CAMParameter.saveExpressionAsUserDefault Saves the current expression as user default value. Throws an exception if the parent is not an operation or does not support user default expressions.
CAMParameter.systemDefaultExpression Returns the systemDefaultExpression of this parameter.
CAMParameter.userDefaultExpression Gets and sets the userDefaultExpression of this parameter. If no userDefaultExpression is set, the systemDefaultExpression is returned. Throws an exception if the parent is not an operation or does not support user default expressions.
CAMParameters.resetToSystemDefaults Resets each parameter to its system default.
CAMTemplateLibrary.doesPathExist Checks if the given URL points to an existing folder or asset in the library.
Component.isJointOriginsFolderLightBulbOn Gets and sets if the light bulb of the joint origins folder as seen in the browser is on or off. This controls the visibility of the joint origins in this occurrence. The light bulb for the folder is component specific and will turn off the joints for all occurrences referencing the component.
ConfigurationColumns.addInsertStandardDesignColumn Add a new column to control which standard design is used for an inserted design. If an inserted column already exists for the occurrence, the existing column is returned.

This is only valid for ConfigurationTopTable and ConfigurationCustomThemeTable objects and will fail for all other table types.
ControllerConfigurationMachineElement.nonTcpRapidInterpolationMode Specifies how the CNC machine axes behave during rapid moves when TCP (Tool Center Point) is inactive, as defined in the machine's controller. Independent Axes moves the axes independently at maximum speed, potentially resulting in different completion times for each axis. Synchronized Axes moves the axes together, completing the motion simultaneously, although the tool's tip may deviate from the direct line between the start and finish points.
ControllerConfigurationMachineElement.tcpRapidInterpolationMode Specifies how the CNC machine axes behave during rapid moves when TCP (Tool Center Point) is active, as defined in the machine's controller. Independent Axes moves the axes independently at maximum speed, potentially resulting in different completion times for each axis. Synchronized Axes moves the axes together, completing the motion simultaneously, although the tool's tip may deviate from the direct line between the start and finish points. Tool Tip adjusts the linear axes to keep the tool's tip positioned along the direct line between the start and finish points.
CustomFeatureParameter.textValue Gets and sets the value of the parameter when it is a text parameter. This can be determined by checking the valueType property. Setting this value will cause the current expression to be overwritten. If the parameter is not a text parameter, the value of this property should be ignored and setting will fail.
CustomFeatureParameter.valueType Returns the type of value this parameter is. For a numeric parameter, you can get the value using the value property. For a text parameter, you can get the value using the textValue property.
Features.embossFeatures Returns the collection that provides access to the emboss features within the component and supports the creation of new emboss features.
Features.hemFeatures Returns the collection that provides access to the existing Hem features.
Features.meshConvertFeatures Returns the collection that provides access to the mesh convert features within the component and supports the creation of new mesh convert features.
Features.meshReverseNormalFeatures Returns the collection that provides access to the mesh reverse normal features within the component and supports the creation of new mesh reverse normal features.
Features.meshSeparateFeatures Returns the collection that provides access to the mesh separate features within the component and supports the creation of new mesh separate features.
FilletFeature.convert Method that converts this feature to another fillet feature type.

To use this method you need to position the timeline marker to immediately before this feature. This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
FilletFeature.filletFeatureType Returns the FilletFeatureTypes indicating this fillet feature type.
FilletFeature.fullRoundFilletFaceSets Returns the full round fillet face sets collection associated with this fillet feature. This collection is only valid when the filletFeatureType is FullRoundFilletFeatureType and it returns null if the filletFeatureType is not FullRoundFilletFeatureType.
FilletFeatures.addFullRoundFillet Creates a new full round fillet feature.
FilletFeatures.createFullRoundFilletInput Creates a FullRoundFilletFeatureInput object. Use properties and methods on this object to define the fillet you want to create and then use the addFullRoundFillet method, passing in the FullRoundFilletFeatureInput object.
FlatPatternComponent.isJointOriginsFolderLightBulbOn Gets and sets if the light bulb of the joint origins folder as seen in the browser is on or off. This controls the visibility of the joint origins in this occurrence. The light bulb for the folder is component specific and will turn off the joints for all occurrences referencing the component.
FusionProductPreferences.isAutoLookAtSketch2 Gets and sets if the view is re-oriented to view the newly created sketch, and if it is re-oriented, if the camera uses the current camera settings or is orthographic.
HoleFeature.clearanceHoleInfo Returns the information used to define a clearance hole. This returns a ClearanceHoleInfo object when the holeTapType returns ClearanceHoleTapType. Otherwise this property returns null.
HoleFeature.holeTapType This property returns the current type of tap associated with this hole. You can set the tap type by using one of the following methods: setToSimpleHole, setToClearanceHole, or setToTappedHole.
HoleFeature.setToClearanceHole Sets the hole to be a clearance hole of the size specified by the ClearanceHoleInfo object.
HoleFeature.setToSimpleHole This method sets the hole's tap to be "simple," which means that the hole will not have any tap and will be a simple hole.
HoleFeature.setToTappedHole Sets the hole to be a straight or tapered tapped hole of the size specified by the ThreadInfo object.
HoleFeature.tappedHoleInfo This property returns the information used to define a tapped hole. Otherwise, this property returns null.
HoleFeature.thread When a tapped hole is created, a thread feature is also automatically created and controls the tapped threads. The thread feature is tied to the hole and is not displayed in the timeline and is suppressed if the hole is suppressed and deleted if the hole is deleted. This property returns the thread feature associated with this hole if it is a tapped hole. It returns null for all other hole types.
HoleFeatureInput.holeTapType Returns the current type of tap associated with this hole. When a new HoleFeatureInput is created, this will default to SimpleHoleTapType, which means the hole will not have any tap and will be a simple hole. You can set the tap type by using one of the methods to define the specific tap desired.
HoleFeatureInput.isFullLength Gets and sets if this thread is the full length of the hole. It defaults to true.

This property is only used when creating a tapped hole, which means the setToTappedHole method has been called. Otherwise this property is ignored.

The property can only be set to True, which will cause the feature to ignore the values of the threadLength and threadOffset properties. Using the setLengthAndOffset method will have the side effect of setting this property to false.
HoleFeatureInput.isModeled Gets and sets if the thread is physical or cosmetic thread. A value of true indicates a physical thread. It defaults to false.

This property is only used when creating a tapped hole, which means the setToTappedHole method has been called. Otherwise this property is ignored.
HoleFeatureInput.setLengthAndOffset Sets the length and offset of the thread of a tapped hole.

This method is only used when creating a tapped hole, which means the setToTappedHole method has been called. Otherwise calling this method will fail.

By default the isFullLength property is true which means the thread is the full length of the hole and there is no offset. Calling this method will have the side effect of setting the isFullLength property to false.
HoleFeatureInput.setToClearanceHole Sets the hole to be a clearance hole of the size specified by the ClearanceHoleInfo object.
HoleFeatureInput.setToSimpleHole This property sets the hole's tap to be "simple", which means that it will not have any tap and will be a simple hole. When a new input is created, it defaults to being a simple hole.
HoleFeatureInput.setToTappedHole Sets the hole to be a straight or tapered tapped hole of the size specified by the ThreadInfo object.
HoleFeatureInput.threadLength Gets the thread length when the isFullLength property is False. Returns null when the isFullLength property is true.
HoleFeatureInput.threadOffset Gets the thread offset when the isFullLength property is False. Returns null when the isFullLength property is true.
Joints.addInferredJoint Creates a new inferred joint.
Joints.createInferredJointInput Creates a joint input to define an inferred joint. Use functionality on the returned InferredJointInput to define the input needed to infer a joint.
Machine.clearSimulationModel Clears the simulation model from the machine.
MachineElements.addElement Add a new machine element to the machine.
MachineElements.createMachineElementInput Create a new MachineElementInput object for the specified type. This is intedned to be used to create/add new machine elements.
MachineLibrary.doesPathExist Checks if the given URL points to an existing folder or asset in the library.
ModelParameter.textValue Gets and sets the value of the parameter when it is a text parameter. This can be determined by checking the valueType property. Setting this value will cause the current expression to be overwritten. If the parameter is not a text parameter, the value of this property should be ignored and setting will fail.
ModelParameter.valueType Returns the type of value this parameter is. For a numeric parameter, you can get the value using the value property. For a text parameter, you can get the value using the textValue property.
OperationStrategy.is2DStrategy Gets whether given OperationStrategy is a 2D strategy.
OperationStrategy.is3DStrategy Gets whether given OperationStrategy is a 3D strategy.
OperationStrategy.isAdditiveStrategy Gets whether given OperationStrategy is an additive strategy.
OperationStrategy.isCuttingStrategy Gets whether given OperationStrategy is a cutting strategy.
OperationStrategy.isDrillingStrategy Gets whether given OperationStrategy is a drilling strategy.
OperationStrategy.isFinishingStrategy Gets whether given OperationStrategy is a finishing strategy.
OperationStrategy.isMillingStrategy Gets whether given OperationStrategy is a milling strategy.
OperationStrategy.isRotaryStrategy Gets whether given OperationStrategy is a rotary strategy.
OperationStrategy.isSupportStrategy Gets whether given OperationStrategy is an additive support strategy.
OperationStrategy.isTurningStrategy Gets whether given OperationStrategy is a turning strategy.
Parameter.textValue Gets and sets the value of the parameter when it is a text parameter. This can be determined by checking the valueType property. Setting this value will cause the current expression to be overwritten. If the parameter is not a text parameter, the value of this property should be ignored and setting will fail.
Parameter.valueType Returns the type of value this parameter is. For a numeric parameter, you can get the value using the value property. For a text parameter, you can get the value using the textValue property.
PostLibrary.doesPathExist Checks if the given URL points to an existing folder or asset in the library.
PrintSettingLibrary.doesPathExist Checks if the given URL points to an existing folder or asset in the library.
StockMaterialLibrary.doesPathExist Checks if the given URL points to an existing folder or asset in the library.
ThickenFeature.thickenType Gets and sets the thicken type for the thicken.

To set this property, you need to position the timeline marker to immediately before this feature. This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
ThickenFeatureInput.thickenType The thicken type used when creating a thicken. The default value is SharpThickenType.
ThreadDataQuery.create Static method to create a new ThreadDataQuery object. The ThreadDataQuery object is a utility object that provides methods to query for the valid thread definitions defined in Fusion. This object provides similar functionality as the Thread and Hole command dialogs to find valid thread types, designations and classes which can be used to create thread and tapped hole features.
ThreadDataQuery.isTapered Returns if this ThreadDataQuery was created to query for standard or tapered threads.
ThreadFeature.hole If this thread feature is was created as the result of creating a tapped hole, this property will return the associated hole feature. If this is a standard thread feature, this property will return null.
ThreadInfo.create This method creates a new ThreadInfo object that can be used to create a thread or tapped-hole feature. The ThreadInfo object defines the type and size of the thread to create. When creating a thread, the type and size of the thread are defined by specifying the thread type, designation, and class. Fusion uses this information to look up the full details of the thread in tables delivered with Fusion. The ThreadDataQuery object can be used to determine valid input for this information.

The thread type implicitly defines if the thread is standard or tapered. Tapered threads can only be used when creating tapped holes and are not supported for thread features.
ThreadInfo.isRightHanded Gets and sets if the thread is right or left-handed thread. A value of true indicates a right-handed thread. It defaults to true.
ThreadInfo.isTapered Indicates if this ThreadInfo object defines a standard or tapered thread.
ThreadInfo.redefine Method that redefines an existing ThreadInfo object. This is typically used to change the thread of an existing thread or tapped hole.

The ThreadInfo object defines the type and size of a thread by specifying the thread type, designation, and class. Fusion uses this information to look up the full details of the thread in tables delivered with Fusion. The ThreadDataQuery object can be used to determine valid input for this information.

Tapered threads can only be used when creating or editing tapped holes and are not supported for thread features.
ThreadInfo.taperAngle Returns the angle of the tapered thread in centimeters.

This is only valid when isTapered is true.
ThreadInfo.taperTapDrillDiameter Returns the Diameter of the tap drill required to create this tap.

This is only valid when isTapered is true.
ThreadInfo.taperThreadHeight Returns the height of a tapered thread in centimeters. This is only valid when isTapered is true.
ThreadInfo.taperUsefulThreadLength Returns the useful length of threads for a tapered thread in centimeters.

This is only valid when isTapered is true.
ThreadInfo.taperWrenchMakeupInternalDiameter The wrench makeup internal diameter for a taper pipe thread, also known as the effective thread diameter, is the diameter at the point where the thread engagement occurs when the pipe is tightened with a wrench.

This is only valid when isTapered is true.
ToolLibraries.doesPathExist Checks if the given URL points to an existing folder or asset in the library.
UserParameter.textValue Gets and sets the value of the parameter when it is a text parameter. This can be determined by checking the valueType property. Setting this value will cause the current expression to be overwritten. If the parameter is not a text parameter, the value of this property should be ignored and setting will fail.
UserParameter.valueType Returns the type of value this parameter is. For a numeric parameter, you can get the value using the value property. For a text parameter, you can get the value using the textValue property.

Help created: Thursday, September 4, 2025 6:53 AM