* chore: unify product name display to OpenDesign repo-wide
Rename the user-facing product name from "Open Design" to "OpenDesign"
across documentation, web/desktop UI strings, i18n locales, prompts,
plugin/skill/design-system content, changelogs, and specs, matching the
landing-page rename already in flight.
Deliberately excluded so installed-app identity stays untouched:
- packages/release PRODUCT_NAME and everything derived from it
(app bundle names, installer/registry identity, updater feeds)
- tools/pack, tools/release, apps/packaged, landing page (PR #6983)
- mocks/ recorded traces and LICENSE
- test fixtures and comments that encode real on-disk install paths
(Open Design.app, Program Files\Open Design, AppData paths)
Validated with pnpm guard, pnpm typecheck, and targeted web/desktop/host
test runs over the renamed strings.
* fix(web): keep two-letter author monogram for CamelCase brand names
authorInitials split words on whitespace only, so the renamed single-token
author name "OpenDesign" produced a one-letter monogram. Treat lower-to-upper
CamelCase boundaries as word breaks so the avatar fallback stays "OD".
* fix(release): restore spaced Windows source artifact names in win.ps1
tools/pack still derives builder outputs from the unchanged PRODUCT_NAME
("Open Design"), so the asset script must look for the spaced filenames.
Matches the mac/mac-intel/linux asset scripts, which were already kept on
the original names.
---------
Co-authored-by: Joey <236967869+joeylee12629-star@users.noreply.github.com>
* feat(cli): add project rename command to CLI
Introduced a new command `od project rename <id> --name "<title>"` to allow users to rename existing projects. The command validates input and sends a PATCH request to update the project name in the backend. Updated CLI help documentation to include this new command.
* feat(web): enhance InspirationPicker with reference-site shortcuts and selection chips
Added functionality to the InspirationPicker component, allowing users to browse reference sites (e.g., Dribbble, Behance) directly from the picker. Implemented a selection chips feature that lists all current picks, enabling easy removal across different families. Updated styles for better visual representation of selected items. Enhanced internationalization support with new translations for the added features.
* feat(web): enhance InspirationPicker with detailed previews and selection management
Updated the InspirationPicker component to include a detailed preview feature for selected items, allowing users to view full documents directly from the picker. Implemented a "Selected" section that displays current picks with a remove option, improving user interaction. Adjusted styles for better visual consistency and added new translations for enhanced internationalization support.
* fix(web): restore uploaded inspiration thumbs and drop preview elapsed
Resolve locked inspiration-upload previews via the submitted path map so
answered forms still show real images, and keep the floating preview
status pill as a stage label only.
* feat(web): implement TaskDeliverableCard for displaying task outputs
Added a new TaskDeliverableCard component to showcase the primary deliverable and its associated outputs. This includes a preview feature for various file types, an actions menu for sharing and downloading, and improved styling for better user experience. Enhanced internationalization support with new translations for deliverable-related terms. Updated InspirationPicker to utilize the new deliverable ranking and searching functionalities.
* fix(inspiration): unify design system previews and source priority
* fix(web): align deliverable card regression coverage
* test(web): scope question form assertions
* fix(web): keep the deliverable card off failed and canceled runs
The card's status label is an unconditional Done, so gating it on the
shared terminal predicate let a failed or canceled run that wrote files
present a partial artifact as delivered while the same message reported
the error. Gate on the existing runSucceeded predicate instead; those
turns fall back to the plain file ledger, so the files stay reachable
without the false completion signal.
* fix(daemon): serialize DESIGN.md font stacks through a strict font-family grammar
extractFonts is deliberately permissive and its output was interpolated
verbatim into the generated <style> raw text, so a Body font value like
"Karla</style><img src=…>" could close the style element and inject
active markup into every auto-loaded card iframe. sanitizeFontStack now
rebuilds each stack from validated family names only (quoted names,
unquoted generic/system keywords), dropping anything else and falling
back to the trusted default stack; both the full preview and the compact
card renderer route every font interpolation through it. Card and
preview fixtures with a </style> payload pin the boundary.
* fix(daemon): ground additional inspiration systems in the run prompt
The picker's extra design-system picks reached the agent as ids on a
metadata line only, so a user-authored system contributed none of its
colors, fonts, or rules. The daemon now resolves each additional id
through the same DESIGN.md reader chain as the primary (workspace file
first, then registry), bounds the result (3 systems, 6000 chars each),
and composes an 'Additional inspiration systems' section with explicit
primary-wins precedence. Prompt tests pin a unique secondary token
reaching the composed prompt, both at the composer seam and end-to-end
through the chat route with bento's #FAD4C0.
* test(e2e): stabilize preview comment click
* test(web): update runtime override history expectation
---------
Co-authored-by: Amy <1184569493@qq.com>