Skip to content

feat: add optional manufacturer field to brand schema - #185

Draft
jpapiez wants to merge 3 commits into
OpenFilamentCollective:mainfrom
OlyForge3D:feat/add-manufacturer-field
Draft

feat: add optional manufacturer field to brand schema#185
jpapiez wants to merge 3 commits into
OpenFilamentCollective:mainfrom
OlyForge3D:feat/add-manufacturer-field

Conversation

@jpapiez

@jpapiez jpapiez commented Feb 28, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds an optional manufacturer property to brand_schema.json that links sub-brands/product lines back to their parent manufacturer's brand id. This enables querying "show me all Polymaker filaments" across product lines like PolyLite, PolyMax, etc. without URL-matching hacks.

Problem

Several manufacturers sell filaments under multiple product line brands. Currently these are separate top-level brands with no schema-level link to a parent manufacturer:

Manufacturer Product Line Brands Count
Polymaker Polymaker, PolyLite, PolyMax, PolyFlex, PolyMide, PolySonic, Panchroma, Fiberon 8
PrimaCreator PrimaCreator, PrimaSelect, PrimaValue, EasyPrint 4
PrintedSolid PrintedSolid, Jessie 2
Spectrum Spectrum, The Filament 2
SmartPrint/Print-Imagine SmartPrint, Professional LAB 2

Changes

Schema (schemas/brand_schema.json)

Added optional manufacturer property using the existing id pattern — references the parent brand's id.

Data (14 brand.json files)

Added "manufacturer" field to all sub-brand entries pointing to their parent brand id.

Design Decisions

  • Optional field: Non-breaking change. Existing brands without product line splits don't need it.
  • References brand id: Uses the same id pattern already defined in the schema, keeping it consistent.
  • No validation of reference target: The schema validates format only. Cross-reference validation (does the referenced brand exist?) could be added to the validator separately if desired.
  • Eryone bugfix split out: The Eryone website correction has been moved to a separate PR (fix: correct eryone website from fiberlogy.com to eryone3d.com #186) per reviewer request.

Validation

./ofd.sh validate
+ All validations passed!

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new optional manufacturer link to the brand schema so sub-brands/product lines can reference their parent manufacturer brand id, enabling cleaner “group by manufacturer” queries across brands.

Changes:

  • Add optional manufacturer property to schemas/brand_schema.json referencing the existing brand id format.
  • Populate manufacturer in multiple sub-brand data/*/brand.json entries (e.g., Polymaker lines, PrimaCreator lines, PrintedSolid/Jessie, Spectrum/The Filament).
  • Fix Eryone’s website URL in data/eryone/brand.json.

Reviewed changes

Copilot reviewed 16 out of 17 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
schemas/brand_schema.json Adds optional manufacturer field to brand schema
ofd.sh Introduces a CLI wrapper script for setup + running commands
data/the_filament/brand.json Adds manufacturer: "spectrum"
data/smartprint/brand.json Adds manufacturer field
data/professional_lab/brand.json Adds manufacturer: "smartprint"
data/primavalue/brand.json Adds manufacturer: "primacreator"
data/primaselect/brand.json Adds manufacturer: "primacreator"
data/easyprint/brand.json Adds manufacturer: "primacreator"
data/polylite/brand.json Adds manufacturer: "polymaker"
data/polymax/brand.json Adds manufacturer: "polymaker"
data/polyflex/brand.json Adds manufacturer: "polymaker"
data/polymide/brand.json Adds manufacturer: "polymaker"
data/polysonic/brand.json Adds manufacturer: "polymaker"
data/fiberon/brand.json Adds manufacturer: "polymaker"
data/panchroma/brand.json Adds manufacturer: "polymaker"
data/jessie/brand.json Adds manufacturer: "printedsolid"
data/eryone/brand.json Corrects website to https://eryone3d.com/
Comments suppressed due to low confidence (1)

data/panchroma/brand.json:8

  • This JSON object is missing its closing } (and the indentation is inconsistent with the rest of the file). As-is, brand.json is invalid JSON and should fail parsing/validation; add the closing brace and keep formatting consistent.
  "origin": "CN",
  "manufacturer": "polymaker"

Comment thread schemas/brand_schema.json
Comment thread data/smartprint/brand.json Outdated
@coffandro

Copy link
Copy Markdown
Collaborator

@jpapiez the schema change will need a bit more consideration internally, if you would please move the bug fixes into its own branches that would be great :D

@jpapiez

jpapiez commented Feb 28, 2026

Copy link
Copy Markdown
Contributor Author

@jpapiez the schema change will need a bit more consideration internally, if you would please move the bug fixes into its own branches that would be great :D

Will do.

jpapiez and others added 2 commits February 28, 2026 11:19
Add an optional 'manufacturer' property to brand_schema.json that links
sub-brands/product lines back to their parent manufacturer's brand id.

Updated 14 brand.json files across 5 manufacturer families:
- Polymaker: polylite, polymax, polyflex, polymide, polysonic, panchroma, fiberon
- PrimaCreator: primaselect, primavalue, easyprint
- PrintedSolid: jessie
- Spectrum: the_filament
- SmartPrint/Print-Imagine: professional_lab, smartprint
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@jpapiez
jpapiez force-pushed the feat/add-manufacturer-field branch from dc22896 to 084e2af Compare February 28, 2026 19:20
@jpapiez

jpapiez commented Feb 28, 2026

Copy link
Copy Markdown
Contributor Author

Split done per the review feedback:

Regarding the $ref sibling keyword concern — this is a pre-existing pattern across ALL properties in brand_schema.json (every property uses type + description + $ref siblings). The manufacturer field follows the exact same pattern for consistency. A schema-wide fix for the draft-07 $ref behavior would be a separate concern.

In JSON Schema draft-07, $ref replaces sibling keywords, so the
type: string on properties using $ref to definitions/id was ignored.
Adding type: string directly to the definition ensures validation
works correctly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@cjavad cjavad added the schema label Mar 4, 2026
@cjavad cjavad linked an issue Mar 31, 2026 that may be closed by this pull request
@cjavad
cjavad marked this pull request as draft March 31, 2026 15:02
@cjavad

cjavad commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

Blocked by #244

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Propose/implement a schema evolution process

4 participants