Changelog
A record of updates to the platform and docs.
v1.5.0
2026-09-07Added
- Five layout templates: a generator's page structure now comes in five shapes, each published as two HTML files: a skeleton carrying the structure plus the full stylesheet (read this one when you write markup) and a runnable one with the behaviour inlined as well (for seeing the example work). Both are a single file with nothing to copy alongside. Preview them online, download one, double-click it. Every control works: reset, the unit toggle, drag-to-change on numeric fields, zoom, the select, collapse, the Fabrication Tips walkthrough, the second-level views. Pick by what the two sides carry: no left rail + parameters, templates rail + parameters, generate rail (docked) + parameters, generate rail (floating) with no parameters, tool rail + panel + parameters. See Layout
- design.md carries an agent contract, the template addresses, and a self-check: it opens with ten non-negotiable rules and the lines between skeleton, skin and behaviour, states the full URL of each template with the rule fetch the matching skeleton before writing markup, and ask the user for it if you cannot, and closes with a checklist you can verify item by item. An agent that can fetch a URL needs design.md alone; one that cannot needs the matching skeleton pasted in as well. See Skills
- The generate dialog: in the layout whose left rail is a floating pick-and-generate card, picking a style opens a dialog instead of firing the call. A dark header repeats the pick — a thumbnail, its name, read-only tags for what the choice already fixed — then the reference image and the optional prompt, then Generate
- Docs
.mdendpoints now carry the component markup: every demo block on a design page is emitted as an HTML fenced block, so an agent reading/docs/design/components.mdgets the same markup a person sees rendered - Fabrication Tips entry point: the Tips capsule in the canvas's top-end corner and its step-through dialog are specified — fixed position and size, content supplied by the generator
- Surface card and the history second level ship in the templates: the Surface card (57px material tiles four to a row, a ring on the selected one) and the lead rail's "My history" second level (back row, three-column tiles, Load more) are built as clickable UI; the data behind them is the platform's and plugs in when the capability opens
- A tile's padding follows its content: an SVG sits inset (14px on the large card, 10px on style and history tiles) while a photo fills the tile edge to edge — one rule for template thumbnails, style tiles and history tiles. Selection is a 2px brand ring drawn over the card and never changes the content's size, so the same image is not resized when it becomes selected. See Components
- Every interactive target now reaches 24×24: the switch, the slider, the swatch, the numeric field and "View all" are drawn smaller than that, and their hit areas are padded to 24 without making their rows taller. The rail-header icon plate is now 24px. See Accessibility
- A template is a starting point, not a fixed product: refine it, add and remove what your generator needs, and borrow a block from another layout. What holds is the skeleton — region widths, control heights and radii, where the overlays sit, the state set each control shows, and the platform constraints — and those constrain what renders, not how you write it. See Rules
Changed
- The token layer is the platform's own token export now — names and values both (breaking): every colour, type style, radius, spacing step and shadow comes from the same export the platform's own surfaces use, so a generator and the platform no longer drift apart. The renames are mechanical; the values moved with them:
Old New Value surface-defaultbg-default#ffffffsurface-subtlebg-subtlest#f9fafb→#fcfcfdcanvas-surfacebg-editor#fbfcfd→#e7e8eabackground-inputbg-control#f3f4f6→#eeeff1background-hover/-activebg-hover/bg-active6% / 8% ink background-scrimbg-overlay44% ink → 70% black text-primarytext-primary#111827→#171719text-secondarytext-secondary#4b5563→#3d3e42text-tertiarytext-tertiary#6b7280→#85878btext-disabledtext-disabled#9ca3af→#b9bbc0stroke-defaultstroke-default#e5e7eb→#d6d8dbbrand-defaultbrand-default#111827→#292a2demphasize-defaultemphasize-default#d9002d→#fa253demphasize-pressedemphasize-active#8c001d→#b20025focus-ringstroke-surround#0050f4→#3170d5on-primary-buttontext-inverse#ffffffinfo/link-defaultblue-default#2661f1→#3f81easuccessgreen-default#00c767→#16b364warningwarning-default#ff7c23→#ff6500errorred-default#fa2730→#ec221fevery *-subtletint*-subtlestnew tints
Update against the<style>block of the latest template — it is the whole token layer in one place. See Colour - The neutral ramp was renumbered and revalued (breaking): fourteen steps instead of thirteen, and a step's number no longer means what it did. What was
neutral-600is nowneutral-800,neutral-700isneutral-900, and primary text moved fromneutral-900toneutral-950. Map by role, never by number - Type styles are named by their metrics, and most of them also moved (breaking): there is no role alias layer, and only
titlemaps across unchanged. Which register carries what is now a mapping table on Typography.Old New Metrics title16/600/2216-semiboldunchanged label14/600/2014-mediumweight 600 → 500 — every button label gets lighter field14/400/2012-regular14px → 12px field-strong14/500/2012-medium14px → 12px note12/400/1812-regularline height 18 → 16 micro12/400/1611-regular12px → 11px label-micro12/600/1212-semiboldline height 12 → 16 rail10/500/1410-mediumunchanged - Radii and spacing are named by scale (breaking):
rounded.sm/md/lg/xl/full→radius small(4) /medium(6) /large(8) /xlarge(12) /circle, andspacing.xs…section→space 50/75/100/150/200/300. Note the shift in meaning: the oldsmwas 6px and is nowmedium; the oldmdwas 8px and is nowlarge; the old 10px step is gone - The field register moved down and control sizes shrank (breaking): field labels, values and card titles are 14px → 12px, with 14px reserved for buttons and rail headings. Inputs and selects are 40px → 28px tall (92 / 110px wide), the switch is 40×24 → 36×20, the slider track 6px → 3px with a 18px → 12px thumb
- The preview's ground got much darker: the canvas behind a preview was a near-white
#fbfcfdand is now#e7e8ea, two steps darker than the panels. Panels are#fcfcfdand cards stay white, so the three surfaces read as floor, furniture and card - Helper text is lighter, and below AA on purpose:
text-tertiarymeasures 3.60:1 on white. It is a value the tokens define, and the spec draws the usage from it — tertiary carries only text a reader can afford to miss, never a value, a message, or a label a decision rests on - Inputs are grey-filled with no border: at rest the fill is the affordance; a 1px
stroke-activeborder appears only on focus. The previous "white fill plus a border" is retired - Parameters are grouped into property cards: white cards with a 1px border, an 8px radius on the top two corners and square at the bottom, grouped by object or function. The previous "group with a line, not a box" is retired
- The parameters rail is 272px → 320px, and the left rail gets three widths (0 / 320 / floating 360) plus a 40px collapsed state
- The view switch moved to the top centre of the canvas: 2D / 3D and preview / edit switches are a segmented control there, not in the bottom-left corner
- A primary button lightens on hover instead of darkening:
brand-hoveris one step lighter thanbrand-default, andbrand-activeis the darkest step — a press always lands darker than rest - The select is specified, and shipped: the trigger is the 110px input box plus a chevron that flips when the list opens; the list has a border, an 8px radius and a shadow, on 32px rows. Inside it the fill marks where the pointer or keyboard is and the checkmark plus 500 weight marks what is chosen — two signals that never collide. The full keyboard and screen-reader contract ships with every template's script, the markup keeps a real
<select>, and the native element stays the source of truth for the value. See Components - Shadows are three two-layer steps:
shadow-100for cards, knobs and the active segment,shadow-200for dropdown lists,shadow-300for dialogs. There is no step smaller thanshadow-100 - Colour is no longer required to be identical across generators: layout, sizes, entry-point positions and the state set each control shows still are (the skeleton), while colour and type sizes are replaceable defaults (the skin). A generator may bring its own palette as long as it stays light, text that carries meaning clears 4.5:1, every control state stays distinct, and only token values change — never token names
- The design docs were rewritten: the demos across all 13 chapters use the design system's component classes directly, so the controls in the documentation and the controls in the templates are the same code
Removed
stroke-input(breaking): merged intostroke-defaultlink-defaultandinfo(breaking): both areblue-defaultink-alpha-*andscrim-44(breaking): renamed toneutral-alpha-25/-50/-100andbg-overlay- The
crimson-*primitives (breaking): the platform red is theatomm-*ramp now, one step brighter at each step — check each token, do not map by number - Three type steps and one radius step (breaking): 28px, 22px and 9px are gone from the scale, as is the 10px radius
elevation.knob(breaking): the smallest shadow isshadow-100- The
chipandrulersizes (breaking): value chips take the input family's sizes; the ruler is the platform's own furniture, not a generator's
v1.4.0
2026-08-27New
- China site now live: developers in mainland China can use dev.atomm.com.cn, with the same accounts, generators and publishing flow as the international site and lower latency
- SVG export colour spec: the platform reads processing intent from colour — a
#FE0002stroke means cutting, a#2366FFstroke means engraving, a#2366FFfill means fill engraving, and any other colour is left for the user to assign. Your colours are read, never rewritten; only the processing type is written into the file. See SVG export colour spec - Export settings dialog before Open in Studio: the user picks machine / processing mode / material and a processing type per colour group, and only then is the file handed to Studio. Download still writes straight to disk with no dialog
- Standalone bitmaps are wrapped in SVG automatically: on Open in Studio, PNG / JPEG / WebP / GIF / BMP files in your payload are wrapped in an
<image>so a processing type can be assigned; size comes from the image's own resolution metadata where present, falling back to 96 PPI. Download always delivers your bytes untouched - Export UI available in 17 languages: the dropdown items, the export settings dialog and the download success message all follow the platform interface language
- Legacy SDK URL flagged on upload: if the old domain is detected you get the new URL ready to copy, and the upload is not blocked
- Buy materials: a Buy materials entry in the generator's top bar lets users pick material packs, check out, and sign up for back-in-stock notifications
Improved
- Generators can run inside Studio: sign-in state and entry source are synced by the platform and export behaves as it does on the platform — no code change needed
- Generators can use locally installed fonts: the runtime now grants local font access
- Full list of the 17 supported languages: the atomm object docs list every short code and display name, ready to drop into a language picker that matches the platform
Fixed
- Clicking export while signed out no longer leaves the flow stuck: cancelling, timing out, or handing sign-in to the host all end cleanly, so a retry works
- Fixed SVG covers being broken by crop parameters in previews
Deprecated
- The old SDK URL:
https://static-res.atomm.com/scripts/js/generator-sdk/platform-sdk.jsis deprecated — switch tohttps://static-res.makextool.com/scripts/js/generator-sdk/platform-sdk.js(same path, new domain). The old URL still works
v1.3.0
2026-08-11New
- Working with AI: the docs site now offers an llms.txt index plus a single-file full text — paste the URL into Claude Code, Cursor and the like and they follow atomm's conventions; append
.mdto any docs URL to get that page as plain markdown. See Working with AI - 3D preview guidelines: 8 chapters (overview / architecture / interaction / parameter changes and rebuilds / rendering quality / dependency management / common constructs / acceptance checklist) covering how to build a three.js 3D preview, ending with a self-check list to run before submitting. The companion SKILL.md drops straight into your coding agent's skills folder. Available in English and Chinese — see 3D preview guidelines
- New intent argument on the export hook: tells you whether the user clicked Download or Open in Studio, so you can return different artifacts — every file for a download, and a single editable vector file for Open in Studio. Ignore it if you don't need the distinction and your existing code keeps working. See Export
- Media preview for listing details: cover images and videos in your listing details can be clicked to enlarge, with arrows to move between them
Improved
- Generators are now created with a title: instead of inventing a lowercase identifier yourself, you now enter a title (Chinese is fine) and the platform turns it into the generator name used in its link. The name still can't be changed after creation, so an English title with each word capitalised works best
- Export button content is centred by default: once you give the button a width, its icon and label no longer sit against the left edge, and the dropdown now matches the button's width. The platform renders the button, so no code change is needed on your side
- Review turnaround updated: review results are now announced within 7 business days instead of 1
- Error messages follow the interface language: failure messages in the developer console are now bilingual rather than fixed to one language
- UI Skill entry added to the homepage: the UI design guidelines are now reachable straight from the homepage, and the export section now describes button styling and export payload customisation
Fixed
- The top logo now returns to the platform homepage
- Fixed image and video preview sizing in listing details
- Fixed a demo icon rendering in the design guidelines docs
- Fixed some forms not submitting on Enter
- Fixed links to single-file specs such as the design system not opening from the Chinese docs; these links now consistently open in a new tab
v1.2.0
2026-07-30New
- Design system file: /design.md is the design system in the standard DESIGN.md format — every token, component spec and design intent in one file. Hand it to your coding agent and the UI it generates matches the platform
- AI index: /llms.txt lists every doc entry point following the llmstxt.org convention, so an AI agent can pick them all up in one fetch
- Docs are now indexable: docs can now be reached straight from search results, each language surfacing its own version
Improved
- Design guidelines docs rewritten: 13 chapters (overview / colour / typography / layout / elevation / shape / components / motion / icons / direction / accessibility / platform constraints / rule checklist), turned from token tables into prose written for people, with every rule backed by a live demo of the real control — click a swatch to copy its value, and the sliders, selects, switches and section headers all respond
- Design tokens updated throughout (breaking): the type tokens were renamed (
body-*/label-*→title/field/label/note/micro), the text hierarchy dropped a step (text-secondaryneutral-700→neutral-600,text-tertiaryneutral-400→neutral-500), every neutral changed value, radii went 4 / 6 / 8px → 6 / 8 / 10px, and shadows plus the emphasis button height (32px → 40px) changed too. Any UI holding old token names or hardcoded values needs a pass against the latest /design.md - Faster image loading: card covers on Showcase and in the console now use thumbnails, making the first screen of a list noticeably quicker
Fixed
- Fixed cover rendering and navigation on generator cards in Showcase
v1.1.0
2026-07-21New
- Full bilingual support: UI and docs in English / Chinese, with language-prefixed routing (
/zh) - Showcase page: browse published generators on the developer platform and filter by craft type; cards support image / video covers, a hot badge, export count, and author / official labels
- Live on the Atomm community: once approved, your generator goes live in the Atomm creative-tools community; cards link straight to its community landing page for community traffic
- Craft types (multi-select): tag generators with Cutting / Engraving / 3D / Relief / Ink Print / UV Print / DTF & DTG, grouped by Laser / Print, used for Showcase filtering
- Data dashboard: the Developer Console now reports export stats with summary cards and a daily trend chart
- Message center: a notification bell in the top bar, wired to platform notifications
- Design guidelines docs: added the design system docs (layout / color / icons / typography / style)
Improved
- Richer listing: added a rich-text "detailed description" and multi-image / video covers (the first item becomes the card cover); the publish wizard shows an inline card preview that matches the live front end
v1.0.0
2026-07-06New
- Initial release: the Developer Platform is live, connecting the full workflow from SDK integration and local debugging through review submission and publishing
- atomm SDK integration, paired with DevTool local debugging (
?local=points to a local service for live preview) - Export capability and the
atomm.lifecycle.on('export')hook, supporting multi-file export packaged as a downloadable zip - Code artifact upload supports both a directory and a single HTML file
- Submit for review and publish end-to-end flow, supporting review cancellation, rejection reason display, and resubmission
- Embeddable Export button: place
data-atomm-export-buttonanywhere in your app to add a custom Export button (Download / Open in Studio + credit prompt), themeable via--atomm-export-*CSS variables — no need to pin it to the platform's top bar - Generator naming rules: must start with a lowercase letter and contain only lowercase letters, digits, and hyphens; cannot be changed after creation
- "Copy as Markdown" for docs: with a raw
.mdsource URL