Skip to content

Conversation

@tbouffard
Copy link
Member

@tbouffard tbouffard commented Oct 31, 2025

Extend StyleDefaultsConfig to allow customization of default style values that were previously hardcoded as constants.
This enables global configuration without requiring stylesheet updates across all Graph instances.

New configurable properties:

  • Font settings: fontFamily, fontSize
  • Arrow settings: arrowSize, arrowSpacing, arrowWidth
  • Size settings: markerSize, imageSize, startSize
  • Rounding: roundingFactor, lineArcSize

All direct references to DEFAULT_* constants throughout the codebase have been replaced with StyleDefaultsConfig property access, allowing these defaults to be changed at runtime via the configuration object.

Notes

Covers #192

Users can now globally customize these defaults at runtime like this:

import { StyleDefaultsConfig } from '@maxgraph/core';

// Change default marker size
StyleDefaultsConfig.markerSize = 10;

// Change default image size for labels
StyleDefaultsConfig.imageSize = 32;

// Change default swimlane start size
StyleDefaultsConfig.startSize = 50;

// Change default rounding factor
StyleDefaultsConfig.roundingFactor = 0.4;

Summary by CodeRabbit

  • New Features
    • Added configuration options for default style properties: font family, font size, arrow size and spacing, marker size, image size, and rounding factors.

Extend StyleDefaultsConfig to allow customization of default style values that were previously hardcoded as constants.
This enables global configuration without requiring stylesheet updates across all Graph instances.

New configurable properties:
  - Font settings: fontFamily, fontSize
  - Arrow settings: arrowSize, arrowSpacing, arrowWidth
  - Size settings: markerSize, imageSize, startSize
  - Rounding: roundingFactor, lineArcSize

All direct references to DEFAULT_* constants throughout the codebase have been replaced with StyleDefaultsConfig property access, allowing these defaults to be changed at runtime via the configuration object.
@tbouffard tbouffard added the enhancement New feature or request label Oct 31, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 31, 2025

Walkthrough

This pull request centralizes default values from scattered constants throughout the codebase into a new StyleDefaultsConfig configuration object. The changes involve adding new properties to StyleDefaultsConfig in config.ts and systematically replacing usages of default constants (e.g., DEFAULT_FONTSIZE, DEFAULT_MARKERSIZE) with references to the corresponding StyleDefaultsConfig properties across 21 files.

Changes

Cohort / File(s) Summary
Configuration & Constants Setup
packages/core/src/util/Constants.ts, packages/core/src/util/config.ts
Updated JSDoc documentation in Constants.ts to reference StyleDefaultsConfig. Added 10 new properties to StyleDefaultsConfig (arrowSize, arrowSpacing, arrowWidth, fontFamily, fontSize, imageSize, lineArcSize, markerSize, roundingFactor, startSize), initialized from corresponding constants.
Utility Functions
packages/core/src/util/styleUtils.ts
Replaced DEFAULT_FONTFAMILY and DEFAULT_FONTSIZE imports and usages with StyleDefaultsConfig.fontFamily and StyleDefaultsConfig.fontSize in getSizeForString defaults.
Canvas Implementations
packages/core/src/view/canvas/AbstractCanvas2D.ts, SvgCanvas2D.ts, XmlCanvas2D.ts
Removed DEFAULT_FONTFAMILY/DEFAULT_FONTSIZE imports and replaced all usages with StyleDefaultsConfig.fontFamily/fontSize in style creation and font-related checks.
Cell & Renderer
packages/core/src/view/cell/CellRenderer.ts
Replaced DEFAULT_FONTFAMILY, DEFAULT_FONTSIZE, DEFAULT_FONTSTYLE, DEFAULT_TEXT_DIRECTION imports with StyleDefaultsConfig equivalents in font-related style checks.
Handlers & Mixins
packages/core/src/view/handler/VertexHandler.ts, CellsMixin.ts, SwimlaneMixin.ts, CellEditorHandler.ts, ConnectionHandler.ts
Updated font, image, and start size defaults to use StyleDefaultsConfig properties. Replaced DEFAULT_VALID_COLOR with VALID_COLOR in ConnectionHandler.
Shape Classes
packages/core/src/view/shape/Shape.ts, edge/ConnectorShape.ts, node/LabelShape.ts, node/SwimlaneShape.ts, node/TextShape.ts, stencil/StencilShape.ts
Replaced arc size, rounding factor, marker size, image size, and font defaults with corresponding StyleDefaultsConfig properties.
Styles
packages/core/src/view/style/edge/Orthogonal.ts
Replaced DEFAULT_MARKERSIZE with StyleDefaultsConfig.markerSize in auto jetty sizing calculation.
Story Files
packages/html/stories/FixedIcons.stories.js, Labels.stories.js
Removed constants imports and replaced DEFAULT_IMAGESIZE/DEFAULT_FONTSIZE usages with StyleDefaultsConfig equivalents.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • High homogeneity: Most changes follow a consistent pattern of replacing a constant with a StyleDefaultsConfig property, reducing cognitive load despite the number of files
  • Systematic refactoring: 21 files affected, but the repetitive nature means reviewers can verify the pattern once and spot-check variations
  • Area of attention:
    • config.ts — Verify the 10 new properties are correctly initialized from their source constants and that the export structure is correct
    • ConnectionHandler.ts — Unique change (DEFAULT_VALID_COLOR → VALID_COLOR) differs from the main pattern; verify the semantic intent
    • Cross-file consistency — Spot-check a few files from different cohorts (e.g., canvas, shape, mixin) to ensure the replacement pattern was applied consistently

Possibly related PRs

Pre-merge checks and finishing touches

✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main objective: making default style properties globally configurable via StyleDefaultsConfig. It is concise, specific, and clearly reflects the primary change in the changeset.
Description check ✅ Passed The description addresses the core requirement of explaining what and why is changed. It clearly outlines the new configurable properties and references issue #192. However, it lacks explicit sections following the template structure (PR Checklist, comprehensive notes) and omits discussion of testing and documentation changes.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/constants_as_global_config

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f9ee5fa and 7e42f6b.

📒 Files selected for processing (21)
  • packages/core/src/util/Constants.ts (4 hunks)
  • packages/core/src/util/config.ts (3 hunks)
  • packages/core/src/util/styleUtils.ts (3 hunks)
  • packages/core/src/view/canvas/AbstractCanvas2D.ts (2 hunks)
  • packages/core/src/view/canvas/SvgCanvas2D.ts (4 hunks)
  • packages/core/src/view/canvas/XmlCanvas2D.ts (4 hunks)
  • packages/core/src/view/cell/CellRenderer.ts (3 hunks)
  • packages/core/src/view/handler/VertexHandler.ts (1 hunks)
  • packages/core/src/view/mixins/CellsMixin.ts (2 hunks)
  • packages/core/src/view/mixins/SwimlaneMixin.ts (3 hunks)
  • packages/core/src/view/plugins/CellEditorHandler.ts (2 hunks)
  • packages/core/src/view/plugins/ConnectionHandler.ts (2 hunks)
  • packages/core/src/view/shape/Shape.ts (3 hunks)
  • packages/core/src/view/shape/edge/ConnectorShape.ts (3 hunks)
  • packages/core/src/view/shape/node/LabelShape.ts (3 hunks)
  • packages/core/src/view/shape/node/SwimlaneShape.ts (3 hunks)
  • packages/core/src/view/shape/node/TextShape.ts (4 hunks)
  • packages/core/src/view/shape/stencil/StencilShape.ts (2 hunks)
  • packages/core/src/view/style/edge/Orthogonal.ts (2 hunks)
  • packages/html/stories/FixedIcons.stories.js (1 hunks)
  • packages/html/stories/Labels.stories.js (2 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: tbouffard
Repo: maxGraph/maxGraph PR: 715
File: packages/html/stories/ZoomAndFit.stories.ts:0-0
Timestamp: 2025-03-14T06:01:22.326Z
Learning: For future improvements to the Graph component in maxGraph, tbouffard is interested in refactoring the `fit` method to use an object parameter pattern instead of multiple positional parameters, as the current approach makes the API harder to use when many parameters need to be specified with default values.
Learnt from: tbouffard
Repo: maxGraph/maxGraph PR: 857
File: packages/core/src/view/plugins/SelectionHandler.ts:1081-1092
Timestamp: 2025-06-26T13:27:19.012Z
Learning: User tbouffard prefers to keep PRs focused on their main objective and defer implementation improvements or logic fixes to future dedicated PRs. For maxGraph, refactoring PRs like Dictionary→Map migration should not include unrelated logic improvements even when valid issues are identified in the migrated code.
Learnt from: tbouffard
Repo: maxGraph/maxGraph PR: 849
File: packages/html/stories/DragSource.stories.js:98-101
Timestamp: 2025-06-13T07:48:10.300Z
Learning: User tbouffard prefers answers in English; avoid switching to other languages in future replies.
📚 Learning: 2025-04-28T08:24:39.831Z
Learnt from: tbouffard
Repo: maxGraph/maxGraph PR: 785
File: packages/core/src/view/style/register.ts:19-19
Timestamp: 2025-04-28T08:24:39.831Z
Learning: In the maxGraph project, the Perimeter namespace is defined in the 'builtin-style-elements.ts' file using the statement 'export * as Perimeter from './perimeter';'. To access the Perimeter namespace in other files, they must import from './builtin-style-elements' instead of directly from './perimeter', as part of the tree-shaking optimization.

Applied to files:

  • packages/html/stories/Labels.stories.js
  • packages/core/src/view/style/edge/Orthogonal.ts
  • packages/core/src/view/shape/Shape.ts
  • packages/html/stories/FixedIcons.stories.js
  • packages/core/src/view/mixins/SwimlaneMixin.ts
📚 Learning: 2025-04-28T08:24:39.831Z
Learnt from: tbouffard
Repo: maxGraph/maxGraph PR: 785
File: packages/core/src/view/style/register.ts:19-19
Timestamp: 2025-04-28T08:24:39.831Z
Learning: In the maxGraph project, the Perimeter namespace is defined in the './builtin-style-elements' file as a namespace export ('export * as Perimeter'), making this the correct import location for accessing the Perimeter namespace.

Applied to files:

  • packages/html/stories/Labels.stories.js
  • packages/html/stories/FixedIcons.stories.js
  • packages/core/src/view/mixins/SwimlaneMixin.ts
📚 Learning: 2025-02-08T16:39:11.178Z
Learnt from: tbouffard
Repo: maxGraph/maxGraph PR: 660
File: packages/core/src/view/geometry/node/StencilShapeRegistry.ts:0-0
Timestamp: 2025-02-08T16:39:11.178Z
Learning: The StencilShapeRegistry.getStencil method's implementation using non-null assertion (!) is validated by dedicated tests to handle null/undefined inputs correctly, returning undefined in such cases.

Applied to files:

  • packages/core/src/view/shape/stencil/StencilShape.ts
📚 Learning: 2024-11-23T15:15:49.541Z
Learnt from: tbouffard
Repo: maxGraph/maxGraph PR: 582
File: packages/core/__tests__/util/config.test.ts:20-33
Timestamp: 2024-11-23T15:15:49.541Z
Learning: In `StyleDefaultsConfig`, negative offset values are acceptable; there are no invalid values for properties like `shadowOffsetX` and `shadowOffsetY`, which can be negative.

Applied to files:

  • packages/core/src/view/canvas/XmlCanvas2D.ts
  • packages/core/src/view/canvas/AbstractCanvas2D.ts
  • packages/core/src/util/Constants.ts
  • packages/core/src/util/config.ts
🧬 Code graph analysis (19)
packages/html/stories/Labels.stories.js (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/shape/stencil/StencilShape.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/style/edge/Orthogonal.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/plugins/ConnectionHandler.ts (2)
packages/core/src/util/Constants.ts (1)
  • VALID_COLOR (150-150)
packages/core/src/types.ts (1)
  • ColorValue (909-909)
packages/core/src/view/shape/node/TextShape.ts (2)
packages/html/stashed/grapheditor/www/js/Graph.js (1)
  • family (9502-9506)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/plugins/CellEditorHandler.ts (2)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/html/stashed/grapheditor/www/js/Graph.js (1)
  • family (9502-9506)
packages/core/src/view/shape/Shape.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/canvas/XmlCanvas2D.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/mixins/CellsMixin.ts (2)
packages/html/stories/Labels.stories.js (2)
  • fontSize (92-92)
  • style (91-91)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/canvas/AbstractCanvas2D.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/html/stories/FixedIcons.stories.js (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/shape/edge/ConnectorShape.ts (2)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/util/Constants.ts (1)
  • NONE (378-378)
packages/core/src/view/mixins/SwimlaneMixin.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/util/config.ts (1)
packages/core/src/util/Constants.ts (10)
  • ARROW_SIZE (347-347)
  • ARROW_SPACING (337-337)
  • ARROW_WIDTH (342-342)
  • DEFAULT_FONTFAMILY (263-263)
  • DEFAULT_FONTSIZE (268-268)
  • DEFAULT_IMAGESIZE (317-317)
  • LINE_ARCSIZE (332-332)
  • DEFAULT_MARKERSIZE (312-312)
  • RECTANGLE_ROUNDING_FACTOR (327-327)
  • DEFAULT_STARTSIZE (307-307)
packages/core/src/util/styleUtils.ts (2)
packages/html/stories/Labels.stories.js (1)
  • fontSize (92-92)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/shape/node/SwimlaneShape.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/cell/CellRenderer.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/canvas/SvgCanvas2D.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
packages/core/src/view/shape/node/LabelShape.ts (1)
packages/core/src/util/config.ts (1)
  • StyleDefaultsConfig (92-176)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: build (macos-14)
  • GitHub Check: build (ubuntu-24.04)
  • GitHub Check: build (windows-2022)
  • GitHub Check: build
🔇 Additional comments (36)
packages/core/src/view/handler/VertexHandler.ts (1)

1534-1534: LGTM! Documentation updated to reflect new API.

The code example in the comment correctly demonstrates using StyleDefaultsConfig.fontSize instead of the old constant reference.

packages/core/src/util/Constants.ts (1)

147-149: LGTM! Documentation updates improve discoverability.

The JSDoc updates correctly reference the new StyleDefaultsConfig properties while maintaining the constant definitions for backward compatibility. This helps developers discover that defaults can now be configured globally at runtime.

Also applies to: 261-268, 271-274, 305-347

packages/html/stories/FixedIcons.stories.js (1)

53-54: LGTM! Clean migration to configurable defaults.

The change correctly uses StyleDefaultsConfig.imageSize with the nullish coalescing operator, enabling runtime configuration of image size defaults as demonstrated in the PR objectives.

packages/html/stories/Labels.stories.js (1)

92-92: LGTM! Migration enables runtime configuration.

The change correctly uses StyleDefaultsConfig.fontSize. The || operator works fine here for numeric fontSize values.

packages/core/src/view/mixins/SwimlaneMixin.ts (1)

131-131: LGTM! Consistent migration to configurable defaults.

Both occurrences correctly use StyleDefaultsConfig.startSize with the nullish coalescing operator, enabling runtime configuration of swimlane start size defaults.

Also applies to: 185-185

packages/core/src/view/plugins/CellEditorHandler.ts (1)

699-700: LGTM! Font defaults now configurable at runtime.

Both fontSize and fontFamily correctly reference StyleDefaultsConfig, enabling runtime configuration of default font properties for the cell editor.

packages/core/src/view/canvas/AbstractCanvas2D.ts (1)

175-176: LGTM! Canvas state initialization uses configurable defaults.

The createState method correctly initializes font properties from StyleDefaultsConfig, enabling runtime configuration of default canvas font settings.

packages/core/src/view/plugins/ConnectionHandler.ts (1)

997-997: LGTM! Constant consolidation is safe.

The change from DEFAULT_VALID_COLOR to VALID_COLOR is safe since both constants have the same value ('#00FF00'). This appears to be cleanup to use the non-DEFAULT-prefixed constant consistently.

Also applies to: 2027-2027

packages/core/src/view/shape/stencil/StencilShape.ts (2)

22-22: LGTM! Import changes are clean.

The imports are correctly updated to remove the constant and add StyleDefaultsConfig.

Also applies to: 30-30


514-514: LGTM! Rounding factor now uses configurable default.

The change correctly replaces the hardcoded constant with StyleDefaultsConfig.roundingFactor, enabling runtime configuration of the default rounding factor for roundrects.

packages/core/src/view/mixins/CellsMixin.ts (2)

31-31: LGTM! StyleDefaultsConfig imported correctly.


979-992: LGTM! Font and image size defaults now configurable.

The changes correctly replace hardcoded constants with StyleDefaultsConfig properties for fontSize and imageSize, enabling runtime configuration of these defaults in cell size calculations.

packages/core/src/view/shape/node/SwimlaneShape.ts (3)

20-20: LGTM! Imports updated correctly.

Also applies to: 23-23


68-68: LGTM! Swimlane start size now configurable.

The change correctly replaces the hardcoded DEFAULT_STARTSIZE with StyleDefaultsConfig.startSize, enabling runtime configuration of the default swimlane title region size.


142-144: LGTM! Swimlane arc size calculation now uses configurable rounding factor.

The change correctly replaces RECTANGLE_ROUNDING_FACTOR with StyleDefaultsConfig.roundingFactor, maintaining consistency with the broader configuration pattern.

packages/core/src/view/shape/Shape.ts (3)

22-22: LGTM! Import refactoring is clean.

The imports are correctly streamlined, removing specific constants in favor of StyleDefaultsConfig.

Also applies to: 40-40


759-759: LGTM! Base arc size now configurable.

The change correctly replaces LINE_ARCSIZE with StyleDefaultsConfig.lineArcSize, enabling runtime configuration of the default arc size for rounded edges.


769-771: LGTM! Arc size calculation uses configurable rounding factor.

The change correctly replaces RECTANGLE_ROUNDING_FACTOR with StyleDefaultsConfig.roundingFactor, maintaining consistency across shape arc calculations.

packages/core/src/view/shape/edge/ConnectorShape.ts (3)

19-19: LGTM! Imports updated correctly.

Also applies to: 26-26


119-120: LGTM! Marker size now configurable.

The change correctly replaces DEFAULT_MARKERSIZE with StyleDefaultsConfig.markerSize, enabling runtime configuration of the default marker size for edge arrows.


155-159: LGTM! Bounding box calculations use configurable marker size.

The changes consistently apply StyleDefaultsConfig.markerSize for both start and end arrow size calculations in the bounding box, maintaining correctness.

packages/core/src/view/style/edge/Orthogonal.ts (2)

20-20: LGTM! Imports updated correctly.

Also applies to: 28-28


135-136: LGTM! Auto jetty sizing uses configurable marker size.

The change correctly replaces DEFAULT_MARKERSIZE with StyleDefaultsConfig.markerSize in the automatic jetty size calculation, maintaining consistency with the edge marker configuration.

packages/core/src/view/shape/node/LabelShape.ts (3)

20-20: LGTM! Imports updated correctly.

Also applies to: 24-24


53-55: LGTM! Image size property now configurable with updated documentation.

The property initialization and JSDoc reference are correctly updated to use StyleDefaultsConfig.imageSize, providing clear documentation and configurability.


172-173: LGTM! Image bounds calculation uses configurable defaults.

The changes consistently replace DEFAULT_IMAGESIZE with StyleDefaultsConfig.imageSize for both width and height fallback values, enabling runtime configuration.

packages/core/src/view/shape/node/TextShape.ts (3)

51-51: LGTM! StyleDefaultsConfig imported correctly.


72-73: LGTM! Constructor and property initialization use configurable font defaults.

The changes correctly replace hardcoded font constants with StyleDefaultsConfig.fontFamily and StyleDefaultsConfig.fontSize in both constructor parameters and property assignments, enabling runtime configuration.

Also applies to: 96-97


349-350: LGTM! Style reset uses configurable font defaults.

The resetStyles method correctly uses StyleDefaultsConfig values, ensuring consistency when styles are reset.

packages/core/src/view/cell/CellRenderer.ts (1)

23-23: LGTM! Font defaults now use centralized configuration.

The migration from hardcoded DEFAULT_FONTFAMILY and DEFAULT_FONTSIZE constants to StyleDefaultsConfig properties is clean and enables runtime customization of font defaults as intended by this PR.

Also applies to: 43-43, 896-897

packages/core/src/view/canvas/XmlCanvas2D.ts (2)

20-20: LGTM! XML canvas defaults properly migrated.

The writeDefaults method now correctly sources font defaults from StyleDefaultsConfig, ensuring XML output reflects any runtime configuration changes.

Also applies to: 23-23, 63-67


529-529: LGTM! Documentation updated correctly.

JSDoc references now correctly point to StyleDefaultsConfig properties rather than static constants.

Also applies to: 550-550

packages/core/src/util/styleUtils.ts (1)

20-20: LGTM! Text measurement now respects global font configuration.

The getSizeForString function's default parameters now use StyleDefaultsConfig, ensuring text size calculations respect any runtime font configuration changes.

Also applies to: 34-34, 444-445, 451-452

packages/core/src/view/canvas/SvgCanvas2D.ts (2)

47-47: LGTM! SVG stylesheet generation uses configurable defaults.

The createStyle method now generates CSS with font defaults from StyleDefaultsConfig, ensuring the SVG output respects global configuration.

Also applies to: 389-389


1580-1580: LGTM! Font rendering optimizations preserved.

The conditional checks for font size and family continue to optimize SVG output by only setting attributes when they differ from the (now configurable) defaults.

Also applies to: 1660-1660

packages/core/src/util/config.ts (1)

20-29: LGTM! StyleDefaultsConfig successfully extended with new configurable properties.

The implementation is clean and well-documented. All new properties are properly initialized from their corresponding constants, maintaining backward compatibility while enabling runtime customization. The JSDoc is thorough with appropriate @default and @since tags.

Based on learnings, negative values are acceptable for offset properties, and the rounding factor documentation already specifies the valid range (0-1, < 0.5).

Also applies to: 93-175


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Nov 5, 2025

@tbouffard tbouffard merged commit 6ef39b7 into main Nov 6, 2025
7 checks passed
@tbouffard tbouffard deleted the feat/constants_as_global_config branch November 6, 2025 09:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant