chore(deps): update dependency svelte to v5 #496
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "renovate/svelte-5.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
^4.0.0
->^5.0.0
Release Notes
sveltejs/svelte (svelte)
v5.25.6
Compare Source
Patch Changes
fix: ignore generic type arguments while creating AST (#15659)
fix: better consider component and its snippets during css pruning (#15630)
v5.25.5
Compare Source
Patch Changes
fix: add setters to
$derived
class properties (#15628)fix: silence assignment warning on more function bindings (#15644)
fix: make sure CSS is preserved during SSR with bindings (#15645)
v5.25.4
Compare Source
Patch Changes
fix: support TS type assertions (#15642)
fix: ensure
undefined
class still applies scoping class, if necessary (#15643)v5.25.3
Compare Source
Patch Changes
v5.25.2
Compare Source
Patch Changes
$derived
(#15581)v5.25.1
Compare Source
Patch Changes
v5.25.0
Compare Source
Minor Changes
v5.24.1
Compare Source
Patch Changes
fix: use
get
in constructor for deriveds (#15300)fix: ensure toStore root effect is connected to correct parent effect (#15574)
v5.24.0
Compare Source
Minor Changes
Patch Changes
fix: check if DOM prototypes are extensible (#15569)
Keep inlined trailing JSDoc comments of properties when running svelte-migrate (#15567)
fix: simplify set calls for proxyable values (#15548)
fix: don't depend on deriveds created inside the current reaction (#15564)
v5.23.2
Compare Source
Patch Changes
v5.23.1
Compare Source
Patch Changes
fix: invalidate parent effects when child effects update parent dependencies (#15506)
fix: correctly match
:has()
selector during css pruning (#15277)fix: replace
undefined
withvoid 0
to avoid edge case (#15511)fix: allow global-like pseudo-selectors refinement (#15313)
chore: don't distribute unused types definitions (#15473)
fix: add
files
andgroup
to HTMLInputAttributes in elements.d.ts (#15492)fix: throw rune_invalid_arguments_length when $state.raw() is used with more than 1 arg (#15516)
v5.23.0
Compare Source
Minor Changes
v5.22.6
Compare Source
Patch Changes
fix: skip
log_if_contains_state
if only logging literals (#15468)fix: Add
closedby
property to HTMLDialogAttributes type (#15458)fix: null and warnings for local handlers (#15460)
v5.22.5
Compare Source
Patch Changes
fix: memoize
clsx
calls (#15456)fix: respect
svelte-ignore hydration_attribute_changed
on elements with spread attributes (#15443)fix: always use
setAttribute
when settingstyle
(#15323)fix: make
style:
directive and CSS handling more robust (#15418)v5.22.4
Compare Source
Patch Changes
v5.22.3
Compare Source
Patch Changes
v5.22.2
Compare Source
Patch Changes
is_updating
before flushing root effects (#15442)v5.22.1
Compare Source
Patch Changes
v5.22.0
Compare Source
Minor Changes
idPrefix
option torender
(#15428)Patch Changes
v5.21.0
Compare Source
Minor Changes
Patch Changes
bind:group
to snippet parameters (#15401)v5.20.5
Compare Source
Patch Changes
fix: allow double hyphen css selector names (#15384)
fix: class:directive not working with $restProps #15386 (#15389)
fix: spread add an useless cssHash on non-scoped element
fix: catch error on @const tag in svelte:boundary in DEV mode (#15369)
fix: allow for duplicate
var
declarations (#15382)fix : bug "$0 is not defined" on svelte:element with a function call on class (#15396)
v5.20.4
Compare Source
Patch Changes
v5.20.3
Compare Source
Patch Changes
fix: allow
@const
inside#key
(#15377)fix: remove unnecessary
?? ''
on some expressions (#15287)fix: correctly override class attributes with class directives (#15352)
v5.20.2
Compare Source
Patch Changes
chore: remove unused
options.uid
inrender
(#15302)fix: do not warn for
binding_property_non_reactive
if binding is a store in an each (#15318)fix: prevent writable store value from becoming a proxy when reassigning using $-prefix (#15283)
fix:
muted
reactive withoutbind
and select/autofocus attributes working with function calls (#15326)fix: ensure input elements and elements with
dir
attribute are marked as non-static (#15259)fix: fire delegated events on target even it was disabled in the meantime (#15319)
v5.20.1
Compare Source
Patch Changes
fix: ensure AST analysis on
svelte.js
modules succeeds (#15297)fix: ignore typescript abstract methods (#15267)
fix: correctly ssr component in
svelte:head
with$props.id()
orcss='injected'
(#15291)v5.20.0
Compare Source
Minor Changes
$props.id()
(#15185)Patch Changes
fix: take private and public into account for
constant_assignment
of derived state (#15276)fix: value/checked not correctly set using spread (#15239)
chore: tweak effect self invalidation logic, run transition dispatches without reactive context (#15275)
fix: use
importNode
to clone templates for Firefox (#15272)fix: recurse into
$derived
for ownership validation (#15166)v5.19.10
Compare Source
Patch Changes
fix: when re-connecting unowned deriveds, remove their unowned flag (#15255)
fix: allow mutation of private derived state (#15228)
v5.19.9
Compare Source
Patch Changes
fix: ensure unowned derived dependencies are not duplicated when reactions are skipped (#15232)
fix: hydrate
href
that is part of spread attributes (#15226)v5.19.8
Compare Source
Patch Changes
fix: properly set
value
property of custom elements (#15206)fix: ensure custom element updates don't run in hydration mode (#15217)
fix: ensure tracking returns true, even if in unowned (#15214)
v5.19.7
Compare Source
Patch Changes
chore: remove unused code from signal logic (#15195)
fix: encounter svelte:element in blocks as sibling during pruning css (#15165)
v5.19.6
Compare Source
Patch Changes
fix: do not prune selectors like
:global(.foo):has(.scoped)
(#15140)fix: don't error on slot prop inside block inside other component (#15148)
fix: ensure reactions are correctly attached for unowned deriveds (#15158)
fix: silence a11y attribute warnings when spread attributes present (#15150)
fix: prevent false-positive ownership validations due to hot reload (#15154)
fix: widen ownership when calling setContext (#15153)
v5.19.5
Compare Source
Patch Changes
fix: improve derived connection to ownership graph (#15137)
fix: correctly look for sibling elements inside blocks and components when pruning CSS (#15106)
v5.19.4
Compare Source
Patch Changes
fix: Add
bind:focused
property toHTMLAttributes
type (#15122)fix: lazily connect derievds (in deriveds) to their parent (#15129)
fix: disallow $state/$derived in const tags (#15115)
v5.19.3
Compare Source
Patch Changes
fix: don't throw for
undefined
non delegated event handlers (#15087)fix: consistently set value to blank string when value attribute is undefined (#15057)
fix: optimise || expressions in template (#15092)
fix: correctly handle
novalidate
attribute casing (#15083)fix: expand boolean attribute support (#15095)
fix: avoid double deriveds in component props (#15089)
fix: add check for
is
attribute to correctly detect custom elements (#15086)v5.19.2
Compare Source
Patch Changes
v5.19.1
Compare Source
Patch Changes
fix: when re-connecting unowned deriveds, remove their unowned flag (#15255)
fix: allow mutation of private derived state (#15228)
v5.19.0
Compare Source
Minor Changes
ClassValue
fromsvelte/elements
(#15035)Patch Changes
fix: create fewer deriveds for concatenated strings (#15041)
fix: correctly parse leading comments in function binding (#15020)
v5.18.0
Compare Source
Minor Changes
<template>
elements to contain any child (#15007)Patch Changes
fix: ensure resume effects are scheduled in topological order (#15012)
fix: bump esrap (#15015)
fix: remove listener on
bind_current_time
teardown (#15013)v5.17.5
Compare Source
Patch Changes
feat: allow const tag inside
svelte:boundary
(#14993)fix: ensure signal write invalidation within effects is consistent (#14989)
v5.17.4
Compare Source
Patch Changes
fix: never consider inert boundary effects (#14999)
fix: store access on component destroy (#14968)
fix: correctly transform
pre
with no content (#14973)fix: wrap each block expression in derived to encapsulate effects (#14967)
v5.17.3
Compare Source
Patch Changes
v5.17.2
Compare Source
Patch Changes
fix: account for parent scale when animating elements (#14957)
fix: apply
overflow: hidden
style when transitioning elements, where necessary (#14930)fix: properly add owners to function bindings (#14962)
v5.17.1
Compare Source
Patch Changes
fix: remove bindable prop validation (#14946)
chore: tweak "invalid assignment" compiler error message (#14955)
fix: silence false-positive stale value warning (#14958)
v5.17.0
Compare Source
Minor Changes
Patch Changes
fix: handle default values in object destructuring within "each" blocks when using characters like "}" and "]" (#14554)
fix: account for min-width/height in
slide
transition (#14942)fix: prevent long delays causing erratic spring behaviour (#14940)
feat: warn on using
slide
transition with table elements (#14936)chore: improve signal performance by reducing duplicate deps (#14945)
v5.16.6
Compare Source
Patch Changes
fix: Make Tween duration 0 set current to target immediately (#14937)
fix: guard against
customElements
being unavailable in browser extension contexts (#14933)fix: treat
inert
as a boolean attribute (#14935)fix: remove leading newline from
<pre>
contents (#14922)v5.16.5
Compare Source
Patch Changes
fix: inherit correct namespace for
<title>
elements (#14817)fix: don't throw
bind_invalid_export
if there's also a bindable prop with the same name (#14813)v5.16.4
Compare Source
Patch Changes
fix: use cached indexOf array prototype method internally (#14912)
fix: make Tween work with continuous target changes (#14895)
v5.16.3
Compare Source
Patch Changes
fix: correctly parse
each
with loose parser (#14887)fix: apply
clsx
logic to custom elementclass
attributes (#14907)v5.16.2
Compare Source
Patch Changes
fix: ensure disconnected deriveds correctly connect again (#14899)
fix: correctly highlight sources reassigned inside
trace
(#14811)v5.16.1
Compare Source
Patch Changes
fix: ensure unowned deriveds correctly get re-linked to the graph (#14855)
fix: ensure $inspect.trace works correctly with null values (#14853)
v5.16.0
Compare Source
Minor Changes
class
attribute to be an object or array, usingclsx
(#14714)Patch Changes
v5.15.0
Compare Source
Minor Changes
v5.14.6
Compare Source
Patch Changes
fix: treeshake
$inspect.trace
code if unused in modules (#14774)fix: Improve typescript DX for $inspect, $props, $bindable, and $host (#14777)
v5.14.5
Compare Source
Patch Changes
fix: bump esrap dependency (#14765)
fix: ensure svg namespace for
<a>
elements is correct (#14756)fix: treeshake
$inspect.trace
code if unused (#14770)v5.14.4
Compare Source
Patch Changes
fix: remove implements from class declarations (#14749)
fix: remove unwanted properties from both replaced and unreplaced nodes (#14744)
v5.14.3
Compare Source
Patch Changes
fix: bump esrap, prevent malformed AST (#14742)
fix: compare array contents for equality mismatch detections, not the arrays themselves (#14738)
v5.14.2
Compare Source
Patch Changes
fix: correctly highlight first rerun of
$inspect.trace
(#14734)chore: more loose parser improvements (#14733)
v5.14.1
Compare Source
Patch Changes
v5.14.0
Compare Source
Minor Changes
v5.13.0
Compare Source
Minor Changes
feat: add
outro
option tounmount
(#14540)feat: provide loose parser mode (#14691)
v5.12.0
Compare Source
Minor Changes
"svelte/compiler"
(#14601)Patch Changes
fix: don't add parenthesis to media query if already present (#14699)
fix: ensure if block paths retain correct template namespacing (#14685)
v5.11.3
Compare Source
Patch Changes
fix: allow unquoted slash in attributes (#14615)
fix: better handle hydration of script/style elements (#14683)
fix: make
defaultValue
work with spread (#14640)fix: avoid mutation validation for invalidate_inner_signals (#14688)
v5.11.2
Compare Source
Patch Changes
reactivity/window
(#14681)v5.11.1
Compare Source
Patch Changes
fix: account for global block in
is_empty
(#14677)fix: remove overzealous
reactive_declaration_non_reactive_property
warning (#14663)v5.11.0
Compare Source
Minor Changes
svelte/reactivity/window
module (#14660)Patch Changes
v5.10.1
Compare Source
Patch Changes
fix: ensure snippet hoisting works in the correct scope (#14642)
fix: ensure $state.snapshot clones holey arrays correctly (#14657)
fix: restore input binding selection position (#14649)
fix: transform everything that is not a selector inside
:global
(#14577)Overwrite Spring.#last_value when using .set() with {instant: true} (#14656)
fix: don't emit assignment warnings for bindings (#14651)
v5.10.0
Compare Source
Minor Changes
Patch Changes
fix: allow exports with source from script module even if no bind is present (#14620)
fix: deconflict
get_name
for literal class properties (#14607)v5.9.1
Compare Source
Patch Changes
v5.9.0
Compare Source
Minor Changes
Patch Changes
if
block code the first time (#14597)v5.8.1
Compare Source
Patch Changes
v5.8.0
Compare Source
Minor Changes
Spring
andTween
classes tosvelte/motion
(#11519)v5.7.1
Compare Source
Patch Changes
v5.7.0
Compare Source
Minor Changes
feat: add
createSubscriber
function for creating reactive values that depend on subscriptions (#14422)feat: add reactive
MediaQuery
class, and aprefersReducedMotion
class instance (#14422)Patch Changes
undefined
andnull
the same for the initial input value (#14562)v5.6.2
Compare Source
Patch Changes
v5.6.1
Compare Source
Patch Changes
v5.6.0
Compare Source
Minor Changes
defaultValue/defaultChecked
for inputs (#14289)v5.5.4
Compare Source
Patch Changes
fix: better error messages for invalid HTML trees (#14445)
fix: remove spreaded event handlers when they become nullish (#14546)
fix: respect the unidirectional nature of time (#14541)
v5.5.3
Compare Source
Patch Changes
fix: don't try to add owners to non-
$state
class fields (#14533)fix: capture infinite_loop_guard in error boundary (#14534)
fix: proxify values when assigning using
||=
,&&=
and??=
operators (#14273)v5.5.2
Compare Source
Patch Changes
SvelteDate
(#14525)v5.5.0
Compare Source
Minor Changes
Patch Changes
v5.4.0
Compare Source
Minor Changes
#each
withoutas
(#14396)v5.3.2
Compare Source
Patch Changes
fix: correctly prune CSS for elements inside snippets (#14494)
fix: render attributes during SSR regardless of case (#14492)
v5.3.1
Compare Source
Patch Changes
fix: treat spread elements the same as call expressions (#14488)
fix: correctly increment/decrement bigints (#14485)
v5.3.0
Compare Source
Minor Changes
<svelte:boundary>
(#14211)v5.2.12
Compare Source
Patch Changes
fix: upgrade to esm-env 1.2.1 to fix issues with non-Vite setups (#14470)
fix: prevent infinite loops when pruning CSS (#14474)
fix: generate correct code when encountering object expression statement (#14480)
v5.2.11
Compare Source
Patch Changes
fix: ignore text and expressions outside the template when validating HTML (#14468)
fix: better account for render tags when pruning CSS (#14456)
v5.2.10
Compare Source
Patch Changes
fix: correctly remove unused selectors in middle of selector lists (#14448)
chore: upgrade esm-env for Vite 6 support (#14460)
fix: strip exported TypeScript function overloads (#14458)
v5.2.9
Compare Source
Patch Changes
fix: show
:then
block fornull/undefined
value (#14440)fix: relax html parent validation (#14442)
fix: prevent memory leak when creating deriveds inside untrack (#14443)
fix: disregard TypeScript nodes when pruning CSS (#14446)
v5.2.8
Compare Source
Patch Changes
fix: correctly prune each blocks (#14403)
fix: provide temporary
LegacyComponentType
(#14257)fix: attach spread attribute events synchronously (#14387)
fix: ensure last empty text node correctly hydrates (#14425)
fix: correctly prune key blocks (#14403)
v5.2.7
Compare Source
Patch Changes
v5.2.6
Compare Source
Patch Changes
v5.2.5
Compare Source
Patch Changes
fix: correctly handle srcObject attribute on video elements (#14369)
add
contentvisibilityautostatechange
event to element definitions (#14373)fix: tighten up
export default
validation (#14368)fix: include method definitions in class private fields (#14365)
v5.2.4
Compare Source
Patch Changes
fix: ensure internal cloning can work circular values (#14347)
fix: correctly update dynamic member expressions (#14359)
fix: ensure is_pure takes into account $effect.tracking() (#14333)
fix: coerce value to number when hydrating range/number input with changed value (#14349)
v5.2.3
Compare Source
Patch Changes
v5.2.2
Compare Source
Patch Changes
v5.2.1
Compare Source
Patch Changes
fix: upgrade to esm-env 1.2.1 to fix issues with non-Vite setups (#14470)
fix: prevent infinite loops when pruning CSS (#14474)
fix: generate correct code when encountering object expression statement (#14480)
v5.2.0
Compare Source
Minor Changes
v5.1.17
Compare Source
Patch Changes
fix: account for
:has(...)
as part of:root
(#14229)fix: prevent nested pseudo class from being marked as unused (#14229)
fix: use strict equality for key block comparisons in runes mode (#14285)
fix: bump
is-reference
dependency to fiximport.meta
bug (#14286)v5.1.16
Compare Source
Patch Changes
fix: don't wrap pseudo classes inside
:global(...)
with another:global(...)
during migration (#14267)fix: bail on named slots with that have reserved keywords during migration (#14278)
v5.1.15
Compare Source
Patch Changes
v5.1.14
Compare Source
Patch Changes
fix: migration script messing with attributes (#14260)
fix: do not treat reassigned synthetic binds as state in runes mode (#14236)
fix: account for mutations in script module in ownership check (#14253)
fix: consider img with loading attribute not static (#14237)
v5.1.13
Compare Source
Patch Changes
fix: add migration task when there's a variable named that would conflict with a rune (#14216)
fix: consider
valueOf
in the reactive methods ofSvelteDate
(#14227)fix: handle sibling combinators within
:has
(#14213)fix: consider variables with synthetic store sub as state (#14195)
fix: read index as a source in legacy keyed each block (#14208)
fix: account for shadowing children slot during migration (#14224)
fix: ensure explicit nesting selector is always applied (#14193)
fix: add
lang="ts"
attribute during migration if needed (#14222)v5.1.12
Compare Source
Patch Changes
fix: ignore
as
type expressions on property definitions (#14181)fix: restore active reaction if then block throws (#14191)
chore: adds legacy mode flag reducing bundle size in runes mode only apps (#14180)
v5.1.11
Compare Source
Patch Changes
fix: error on TypeScript's
readonly
modifier (#14153)fix: remove scoping for
:not
selectors (#14177)v5.1.10
Compare Source
Patch Changes
fix: ensure non-matching elements are scoped for
:not(...)
selector (#13999)fix: ensure video elements autoplay in safari (#14095)
fix: ensure trailing multiline comments on props produce correct code (#14143#issuecomment-2455702689) (#14143)
fix: correctly infer
<a>
tag namespace (#14134)fix: check options namespace for top level
svelte:element
s (#14101)fix: ensure migrate keeps inline/trailing comments in $props type definition (#14143)
fix: update links in JSDoc (#14165)
fix: ensure SvelteMap and SvelteSet work with generators in dev (#14103)
fix: only output the key for each_key_duplicate (#14147)
fix: prevent migrated snippet from shadow snippet prop (#14127)
fix: pass along
anchor
in legacy class wrappers (#14100)fix: recognize all custom element prop definitions (#14084)
fix: migrate multiple declarations with only some exported correctly (#14126)
v5.1.9
Compare Source
Patch Changes
v5.1.8
Compare Source
Patch Changes
v5.1.7
Compare Source
Patch Changes
fix: ensure each block inert items are disposed of if the each block is also inert (#13930)
fix: allow
warningFilter
option forcompileModule
(#14066)fix: ensure onMount correctly fires when new expressions are used (#14049)
fix: wrap
:id
,:where``:not
and:has
with:global
during migration (#13850)fix: ensure custom element attribute/prop changes are in their own context (#14016)
v5.1.6
Compare Source
Patch Changes
v5.1.5
Compare Source
Patch Changes
fix: replace typo in compiler error messages (#14044)
fix: preserve the separator between selectors when an unused selector is in between (#13954)
fix: more robust re-subscribe detection for
fromStore
(#13995)fix: allow to pass in TS preference to migration (#13929)
fix: extend derived/state validation error to indirect exports (#14039)
fix: minify inject CSS in prod mode (#14006)
fix: ensure toStore subscription correctly syncs latest value (#14015)
fix: don't access
requestAnimationFrame
until needed to reduce need for mocks during testing (#14040)fix: ensure element effects are executed in the correct order (#14038)
fix: make compiler error extend from
Error
(#14036)v5.1.4
Compare Source
Patch Changes
fix: add empty stack to
CompileDiagnostic
to show error on build (#13942)fix: ensure effect_tracking correctly handles tracking reactions (#14005)
fix: update broken links (#13944)
fix: more exhaustive check during
SvelteMap.set
in deriveds (#13951)fix: trim whitespace while migrating blocks (#13941)
fix: update links that previously pointed to preview site (#14001)
fix: properly migrate imports types prefixed with $ (#14007)
v5.1.3
Compare Source
Patch Changes
fix: rethrow errors from await block if no catch block exists (#13819)
fix: ensure SVG element attributes have case preserved (#13935)
fix: ensure bind:group works as intended with proxied state objects (#13939)
fix: ensure value is correctly set to zero on the progress element (#13924)
fix: skip comment nodes in snippet validation logic (#13936)
fix: typo in
Action
types (#13874)fix: remove metadata from legacy AST (#13927)
v5.1.2
Compare Source
Patch Changes
fix: improve consistency of transitions (#13895)
fix: enable bound store props in runes mode components (#13887)
fix: ensure each block references to imports are handled correctly (#13892)
fix: ensure SvelteMap reactivity persists through deriveds (#13877)
fix: ensure snippets after empty text correctly hydrate (#13870)
fix: prevent migration script from adding
props.
to theexport let
identifier (#13899)fix: prevent var name clashing for delegated events without params (#13896)
v5.1.1
Compare Source
Patch Changes
fix: account for
:has(...)
as part of:root
(#14229)fix: prevent nested pseudo class from being marked as unused (#14229)
fix: use strict equality for key block comparisons in runes mode (#14285)
fix: bump
is-reference
dependency to fiximport.meta
bug (#14286)v5.1.0
Compare Source
Minor Changes
feat: export mount() options as the MountOptions type (#13674)
feat: allow usage of getContext() within $derived runes (#13830)
Patch Changes
fix: properly migrate ts with inferred type comments (#13761)
fix: correct property name conversion in custom transitions (#13820)
fix: ensure $effect.tracking returns false inside transition functions (#13775)
fix: migrate default slots to children snippet (#13760)
fix: don't print errors on migration errors (#13754)
fix: prevent spread attribute from overriding class directive (#13763)
fix: ensure
:has
selectors followed by other selectors match (#13824)fix: ensure muted DOM property works correctly in FF (#13751)
fix: show filename information in
legacy_recursive_reactive_block
(#13764)v5.0.5
Compare Source
Patch Changes
fix: mark
:has
selectors with multiple preceding selectors as used (#13750)fix: ensure event context is reset before invoking callback (#13737)
fix: add more robust check for
Element
prototype (#13744)fix: do not comment out unused selectors that are inside an unused selector (#13746)
fix: more accurately detect
$derived
migration opportunities (#13740)fix: @debug does not work with proxied-state (#13690)
fix: do not add jsdoc if no types found (#13738)
v5.0.4
Compare Source
Patch Changes
fix: webview preload tag can be any string (#13733)
fix: better children snippet / default slot interop (#13734)
v5.0.3
Compare Source
Patch Changes
v5.0.2
Compare Source
Patch Changes
v5.0.1
Compare Source
Patch Changes
v5.0.0
Compare Source
A new major version of Svelte has been released! 🎉
The new version brings:
For more details check out the Svelte docs and the migration guide.
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
b6d5a4a4b3
to0d348e2398
0d348e2398
to821efbe41c
Checkout
From your project repository, check out a new branch and test the changes.