coss.com Svelte

Changelog

Svelte component changes, affected registry items, and update instructions.

This is the change history for COSS for Svelte. Dates refer to this repository, not the upstream React library. Commit links identify the changes within each day.

Updating an existing project

Registry installs copy source files into your project. Updating a dependency or visiting the new documentation does not update those files. Refresh the affected registry items below, then merge any application-code changes described in the entry.

The history currently uses Git commits rather than numbered package releases. Record the repository revision when you install or update components. If you do not know your installed revision, compare your local files with the current registry before deciding that an entry does not apply.

For example, refresh the complete Combobox item:

pnpm dlx shadcn-svelte@latest add https://coss.miel.my/r/combobox.json

Replace combobox with another affected registry ID. Review the diff before accepting replacements, preserve local customizations, and include new files and registry dependencies. Copying one changed file may leave imports unresolved. Install commands fetch the current registry, not the historical commit linked below.

Examples have their own source. Refreshing a component does not rewrite an example you copied into an application. Check the affected particle IDs and update that markup separately. Website-only entries require no component reinstall.

For agents, use the Markdown changelog. The prompt at the end of this page gives a procedure for checking an existing project.

September 8, 2026

Combobox selection and item rendering

Refresh combobox if your copy predates these fixes.

  • Selected object values now retain their checkmark when an uncontrolled popup reopens. Queries and selected labels survive item refreshes, and composed input queries reach the list. See selection identity, item refreshes, and composed queries.
  • Combobox.List accepts an item snippet, so flat lists no longer need a separate Combobox.Collection. Existing Collection usage remains supported. See list rendering.
  • createComboboxItems describes source records using labels and primitive selection values supplied by your getLabel and getValue callbacks. Item snippets receive the original records. Combobox.Root resolves these collections, including grouped and externally filtered items, and rejects duplicate or invalid values. Choose stable IDs in getValue. This is optional; existing item arrays remain supported. Refresh the whole item to include its new helper and collection files. See typed collections.
  • Input-based popups align to the native input rather than its outer border wrapper. Explicit anchors and chip containers keep precedence; inputs inside a popup retain the trigger anchor. Default selections and grouped examples now match the reference. See popup alignment and examples.

For copied examples, review p-combobox-2, 8, 9, 10, 12, 14, 16, and 18 under the p-combobox- prefix. Use defaultValue for an initial selection. Use bind:value or a value-change callback when application state controls the selection. A fixed value prop does not become writable state.

Autocomplete and Command filtering

Refresh autocomplete and command where installed. Both List components now accept a typed item snippet that renders the filtered items. Static children remain supported.

The grouped p-autocomplete-10 example and p-command-1 and p-command-2 used static group loops, leaving unrelated options visible after a search. These examples now render filtered groups through the List item snippet. All 16 Autocomplete examples use the shared list renderer. Grouped examples retain an inner Collection for the group’s items. See the component and example fix.

If you copied a static group loop, update that application markup too. Reinstalling the component alone will not change it. Check a matching query, a query with no results, arrow-key navigation, Enter, and Escape after updating.

Autocomplete and Combobox search inputs also suppress the browser’s extra search decoration. Refresh the affected item for this styling fix. See Autocomplete and Combobox.

Select and bindings initialized as undefined

Distinct object values with identical labels no longer collapse into one selection. See duplicate-label handling. Refresh select and its selection-change-context registry dependency.

Refresh select for object selection that retains its selected indicator and for function bindings that respect the value returned by the parent. See object identity and parent binding responses.

Refresh these items if a binding starts as undefined: checkbox, checkbox-group, combobox, radio-group, select, switch, tabs, toggle, and toggle-group. They now observe later bound values instead of remaining on the initial internal state. Existing binding syntax does not need to change. See the binding fix.

Calendar selection

Refresh calendar if you use multiple selection. Selection now normalizes dates before toggling them, so a date with a time component compares consistently with its calendar day. See the selection fix. Existing selection props remain supported.

Command and submenu refs

Refresh command, menu, and context-menu if you bind element refs. Command Input, List, Panel, Footer, and Shortcut now forward refs, as do Menu and Context Menu submenu popups. Check application focus and measurement code that previously received a missing ref. See the ref fix.

Number Field form submission

Refresh number-field if you use it inside a named Field. The formatted display input previously submitted alongside the canonical value, creating duplicate form entries. Only the canonical input now submits the value, including before hydration. Native form ownership, reset, validation, and Enter submission are preserved. See the form fix.

Canceled Number Field edits also keep the displayed and canonical values in sync. Form resets restore the initial default, and canceled resets preserve the edited value. Refresh number-field for these fixes as well. See edit and reset handling.

Remove application workarounds that discard a duplicate entry only after checking the updated FormData. The field should submit one value under its name.

OTP Field reset

Refresh otp-field if your form can cancel a reset event. The control now keeps its value when the reset is canceled. See the reset fix.

The documentation also clarifies accessible slot labels. A label on the root names the group. Give individual inputs their own labels; inside a Field, the first input can inherit the Field label. Review copied OTP examples if their slots have no accessible names.

Delegated attributes

Refresh group if you customize attributes through delegated render props. Group.Text now preserves consumer overrides. Refresh pagination if you pass aria-current={null} to Pagination.Link. Both native and delegated links now honor it instead of restoring the default current-page attribute. See Group.Text and Pagination.Link.

Copied example defaults

Several examples passed fixed values to controlled inputs, so user edits or selected indicators could revert. They now use uncontrolled defaults where the example does not manage state. This affects examples for Select, Combobox, Breadcrumb, Card, Context Menu, Dialog, Drawer, Field, Group, Input, Input Group, Menu, Sheet, and Textarea. The commits list the exact particle files: selection and form examples, Combobox examples, and remaining defaults.

Compare any copied particles with those diffs. Use defaultValue for an initial value and retain bindings for state the application actually controls. Do not replace every value prop mechanically. p-input-group-27 also handles denied clipboard writes and cleans up copy feedback.

Documentation and repository maintenance

The website and repository changes listed here require no component reinstall. Some linked commits also contain component or particle fixes described above; that advice applies only to the changes listed in this section.

  • The site and registry commands use https://coss.miel.my/. Existing copied source keeps working. Update saved install URLs for future use. See the domain update.
  • Code blocks use the matching light and dark syntax themes. Header logo sizing, buttons, preview spacing, homepage grid markers, and inset card headers now follow the reference. See code themes, header styles, and homepage fixes.
  • Manual installation contains long commands and file tabs, supports source expansion, and restores copy controls. See manual installation.
  • The header reads this repository’s star count. Navigation, clipboard feedback, blocked storage, and mobile spacing have fixes. See stars, navigation and clipboard, and website mobile spacing. The same commit also changes copied example defaults, covered above.
  • Documentation preprocessing now distinguishes script tags from similarly named custom elements and respects quoted attributes. Parity comment removal preserves separators instead of joining markup fragments. These are source-processing fixes, not an HTML sanitizer for untrusted content. See source processing and linear script detection.
  • Test-only comment checks no longer use the regular expressions flagged for excessive backtracking. Build ordering and synthetic Drawer gesture timestamps make the checks deterministic. These changes do not alter installed component behavior. See the test-only comment changes, build ordering, and Drawer test timing.

The registry includes these component changes through b7c8af6.

September 1, 2026

Combobox object toggling

Refresh combobox and its selection-change-context registry dependency if your copy predates 3cc0ab7. Selecting an already selected object now toggles it correctly in multiple mode and keeps the selected indicator consistent.

That change also updates p-combobox-9, p-combobox-12, p-combobox-14, p-combobox-19, and p-combobox-20. Compare those files if you copied the examples. The September 8 fixes above further correct selection identity and query handling; use the current registry to receive both sets of changes.

Tooltip positioning

Refresh the complete tooltip item if your copy predates 893c136. Position transitions now wait for stable geometry, preventing popup flicker and jumps. Keep its registry helper files when merging the update. Check tooltips that move between targets or use composed triggers.

Documentation and dependency maintenance

Particle search and displayed source were restored, and particle source no longer depends on a runtime fetch. Package-manager tabs and Svelte import aliases were added to the docs. These website fixes need no component reinstall. See particle search, source rendering, and install tabs.

The repository pins a patched transitive cookie dependency. This affects people building or hosting the repository, not copied component files. Repository users should update their checkout and install from the current lockfile. See the dependency fix.

August 31, 2026

Initial complete Svelte port

The complete component port and documentation registry landed in 1f6593a and 2929e66. These commits are the baseline for the dated fixes above, not a numbered package release.

If you copied files from earlier development commits, compare all installed items with the current registry. Development changes included portable imports, Hugeicons dependencies, complete registry file lists, self-contained particle installs, Field accessibility, Tooltip helpers, and Accordion behavior. Use the August 31 source tree to identify the baseline, then apply later fixes. This changelog groups that initial development work rather than treating each unfinished component as a release.

Agent update prompt

Copy this prompt with the Markdown changelog and give the agent access to your project:

Review this project's installed COSS for Svelte components against
https://coss.miel.my/docs/changelog.md.

Find the local component directory, registry configuration, copied particles,
and any recorded installation revision. Do not infer the installed revision
from a dependency version. If the revision is unknown, compare local source
with the current registry and report that uncertainty.

For each applicable entry, list the affected registry IDs and local files,
the behavior fixed, and whether it needs a component refresh, an application
markup change, or no action. Include dependencies installed indirectly.
Use the linked commits to distinguish multiple updates on the same date.

Merge only the required updates. Preserve local customizations and include
new helper files and registry dependencies. Do not blindly overwrite the
component directory or change every controlled value to a default value.

Run the project's typecheck and affected interaction tests. Verify selected
indicators after reopening, filtering and empty results, keyboard navigation,
form values and reset behavior where relevant. Report changes, skipped
updates, remaining failures, and the revision used for the comparison.