453 Commits

Author SHA1 Message Date
Ashwin Naren
b4a569536c servoshell: Remove IndexedDB preference from servo:preferences (#44283)
Since indexeddb is now part of the experimental features list, we can
remove it from the "more experimental" features list.

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2026-04-16 18:59:28 +00:00
Jonathan Schwender
d0be4e845d release: Bump version number to 0.1 (#43797)
In preparation for the next release, bump the version number to 0.1. 0.1
will be an LTS release, which receives extended support in terms of
security updates (e.g. spidermonkey security updates). Please keep in
mind that as always no specific guarantees or response times are given,
and any updated are provided on a best effort basis.

Previously some projects had a demo integration of servo based on some
version of servo, and then never or rarely updated it. Providing an LTS
release offers an option to embedders to integrate servo, while reducing
API churn and having a somewhat fixed schedule to adhere to in terms of
upgrades. Currently, the plan is for a new LTS release every 6 months,
with additional documentation regarding API changes and recommended
migration patterns (best-effort and subject to change).

Testing: No functional changes. Additional testing will be performed
post-merge on the newly created release branch.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-04-01 09:18:50 +00:00
Jonathan Schwender
f4877c190e Embed default resources in Servo applications using a servo-default-resources crate (#43182)
This PR considers the following constraints:

- Resources must be available when building servo via a published
crates.io package (i.e. no `../../../resources/<file>` file references).
- Minimal setup when writing tests (`nextest` spawns each test in its
own process, so we don't want to explicitly initialize the resource
handler for every `#[test]` fn)
- Use local resources when developing locally
- Support loading the resources from a proper resource directory if the
embedder wishes so, including via a custom mechanism, not necessarily as
files

(File) Resources that are only accessed from servoshell are out of scope
of this PR, since it mainly focusses on unblocking publishing `libservo`
to crates.io.

Baking the resources into the binary by default simplifies the setup a
lot. We already supported that before, but only for testing purposes and
explicitly not for production builds.

Using [`inventory`](https://crates.io/crates/inventory) adds a simple
way for the embedder to replace the default baked in resources, while
also keeping the test usage of baked in resources simple.

rippy.png is also referenced from image_cache - We simply duplicate it,
since the image is small, to avoid adding unnecessarily complex
solutions like adding a dedicated crate.


Testing: Covered by existing tests. [mach try
full](https://github.com/jschwe/servo/actions/runs/23811669469)
Fixes: Part of #43145

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-04-01 07:16:28 +00:00
eri
2ee93de65d devtools: Rework debugger value structure (#43587)
The WebIDLs for values were duplicated in PropertyDescriptor and
EvalResultValue, with duplicated handlers across the code.

General cleanup of how debugger values are passed from debugger.js and
how the conversion from JS and to JSON happens.

There shouldn't be a behaviour change.

Testing: Existing devtools tests and manual testing
Part of: #36027

---------

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-03-26 20:18:12 +00:00
Jonathan Schwender
64afd05d11 servoshell: Remove --userscripts option (#43573)
In #43182 it was [suggested to remove the
userscripts](https://github.com/servo/servo/pull/43182#issuecomment-4048383093)
option, since embedders can use the (new) `UserContentManager` API
instead.

Testing: This removes a commandline flag from servoshell. Existing tests
passing is sufficient.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-03-23 18:39:57 +00:00
atbrakhi
2d3900317a devtools: Implement initial support for ArrayPreviewer (#43456)
Previously arrays were falling back to Object previewer which was
showing indices as properties- which was not correct. This PR implements
dedicated `ArrayPreviewer` that follows Firefox's `ArrayLike` pattern.
Currently array preview support only length display, it does not
implement showing array items yet.

Now(Correct and follows Firefox pattern, Array items coming in a
follow-up PR):
<img width="510" height="167" alt="image"
src="https://github.com/user-attachments/assets/a51f04d4-333c-4d7c-8159-18121c967670"
/>


Before(We shouldn't see these values- it's incorrect):
<img width="1294" height="721" alt="image"
src="https://github.com/user-attachments/assets/2218a622-c791-4436-958e-1a5553de7864"
/>




Testing: Current tests are passing.
Fixes: Part of #36027

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-03-20 08:10:37 +00:00
atbrakhi
d3ca63c514 devtools: Implement object and function property preview (#43356)
Implement property preview for the debugger popup. When hovering over
variables while paused at a breakpoint, users can now see object
properties and function metadata

Testing: Current tests are passing. Manual testing.
Fixes: Part of #36027 

<img width="1507" height="876" alt="image"
src="https://github.com/user-attachments/assets/31c95010-dab9-4b2c-a9b1-da6a29aa0de1"
/>

<img width="360" height="365" alt="image"
src="https://github.com/user-attachments/assets/50d19979-c0b2-4278-b19b-85c0c0318ab4"
/>
<img width="370" height="365" alt="image"
src="https://github.com/user-attachments/assets/3b74ef26-055b-4e49-848e-e7758f8d1de6"
/>

---------

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-03-18 09:23:26 +00:00
atbrakhi
821db2c2fc devtools: Implement initial support for showing scope variables (#43232)
This change implements showing scope variable in Debugger tab. This is
still early and we have more work to do.

Next step is building correct data structure and showing different types
of variables.

Testing: Manual as well as current tests are passing.
Fixes: part of #36027

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-03-16 13:02:09 +00:00
eri
f53a259216 devtools: Handle getEnvironment message (#43167)
Initial work to support scopes in the debugger. They don't show at the
moment since we are not processing variables yet. Depends on #43166.

Testing: Ran `mach test-devtools` and manual testing.
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-03-12 13:13:03 +00:00
Martin Robinson
ea995155f8 paint: Add support for a blinking text caret (#43128)
This change adds support for a blinking text caret using WebRender
`DynamicProperties` updates. This ensures that text caret updates are as
lightweight as possible. As part of this change, the initial framework
for paint-side animations is added. Though this is driven by a timer for
now (in order to not have to run full speed animations for text carets),
the idea is that more animations can be driven by `Paint` in the future
(in order to avoid doing layouts during animations).

In addition, a preference is added which controls the caret blink speed.
This is used to disable caret blinking during WPT testing.

Testing: There are no tests for this change. We do not currently have a
good
way to test caret blinking as the caret is render only and fully testing
blinking would require well timed screenshot creation.
Fixes: #33237.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-03-12 11:47:46 +00:00
eri
948859b2fe devtools: Allow registering environment actor from debugger.js (#43166)
This functionality will be used in a follow up patch to implement the
getEnvironment message.

Testing: Check `mach test-devtools` and manual test
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-03-11 15:45:35 +00:00
Jonathan Schwender
1632e61ed6 servoshell: Rename executable to servoshell. (#42958)
This should help clarify the difference between servo the library /
engine and servoshell the browser (demo).

Other changes: 

- Removed etc/servo.sb ( [apple sandbox profile
format](https://angelica.gitbook.io/hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox#sandbox-profiles))
since it is not needed anymore. See [this
comment](https://github.com/servo/servo/pull/42958#discussion_r2876253489)
for more details.

Testing: This is a very invasive change, and there are bound to be
scripts / places I have overlooked. Searching for usages of `servo` is
very hard, since it's also the name of the library.
Try run: https://github.com/servo/servo/actions/runs/22637676818

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2026-03-07 08:08:38 +00:00
eri
7d3e60d999 devtools: Fix step out and clearing stepping hooks (#43042)
Make step out behave properly.

Testing: DevTools tests and manual testing.
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
2026-03-06 16:05:56 +00:00
eri
836970d1ea devtools: Get newest frame when resuming without a frameActorID (#43040)
Fixes resuming after stepping.

Testing: Ran existing DevTools test
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-03-06 07:46:46 +00:00
atbrakhi
1b7ec96fb6 devtools: implement listing all frames (#43015)
This change implements listing all frames from youngest to oldest. This
is in order to send correct frame message from thread actor

This is needed for our upcoming work!

Testing: Current tests are passing + manual test
Fixes: #36027

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-03-05 14:58:30 +00:00
atbrakhi
9c43b52afb devtools: Implement function name preview in debugger popup (#42996)
The debugger preview popup was showing `function ()` for all functions.
This change implements support to show function name in the debugger
preview popup.

This is initial work towards showing other values in debugger preview
popup!

**Before:**
<img width="306" height="118" alt="image"
src="https://github.com/user-attachments/assets/5c090820-4862-4234-a6ea-50666f83c192"
/>


**After:**
<img width="282" height="128" alt="image"
src="https://github.com/user-attachments/assets/869a0122-c9da-4098-bb77-8a1110c29d48"
/>

<img width="286" height="137" alt="image"
src="https://github.com/user-attachments/assets/8655a8cb-bbd3-4b80-a297-daac58a6337f"
/>


Testing: Existing test passes
Fixes: Part of #36027

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-03-04 11:14:45 +00:00
atbrakhi
630e4b75da devtools: Implement frame scoped evaluation (#42936)
When paused at a breakpoint, hovering over local variables now shows
their value. Previously `eval` used `executeInGlobal()` which could not
access local scope, so hovering showed `ReferenceError` instead of the
actual value.


https://github.com/user-attachments/assets/05247b82-4e4d-422d-a428-63e46b55d55f

Testing: Added a new test
Fixes: Part #36027

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-03-03 14:22:25 +00:00
eri
88f2469270 devtools: Implement initial support for Step in, Step out and Step over (#42907)
We are adding initial support for stepping in the debugger. Step over
mostly works, but Step in and Step out have some quirks that we are
working on.

![2026-02-27
12-32-05](https://github.com/user-attachments/assets/0b73b32c-efa3-444c-80a4-f863a64b6fdc)

Testing: DevTools tests and manual checks.
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-03-02 18:35:02 +00:00
Jonathan Schwender
84eff13a25 Bump version to 0.0.6 in preparation for release (#42932)
Same procedure as every month. `./mach release 0.0.6`

Testing: Not tested.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-03-01 19:07:44 +00:00
webbeef
1ad41dc15f script: Add a ServoInternals.garbageCollectAllContexts() (#42798)
This is useful in about:memory to measure memory usage after running the
GC.

The calling page sends a callback to the constellation that in turn wait
for all script threads to run the GC and report back.

Testing: Manual testing in `about:memory`

Before running GC:

<img width="2048" height="1480" alt="Screenshot from 2026-02-23
18-50-46"
src="https://github.com/user-attachments/assets/fd8399c1-fbc7-4f4c-886d-f29629ef8369"
/>

After running GC:

<img width="2048" height="1480" alt="Screenshot from 2026-02-23
18-51-00"
src="https://github.com/user-attachments/assets/82c793f7-8229-4de4-9cb5-47c94383b410"
/>

Signed-off-by: webbeef <me@webbeef.org>
2026-02-28 08:38:32 +00:00
eri
b2b27d857b devtools: Avoid creating unnecessary new frame actors (#42906)
Before we were creating a new frame actor each time we paused, even if
the frame object in debugger.js was the same. Now we avoid this by
reusing the same frame actor id.

This helps our upcoming work on onStep, onPop, and onEnterFrame hooks.

Testing: Ran `mach test-devtools` and manually check that it works
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-02-27 14:34:18 +00:00
atbrakhi
433d0acd0e devtools: Make why attribute use PauseReasons (#42878)
devtools: Make `why` attribute use `PauseReasons`

Currently we have why attribute hardcoded as per the event. In this PR
we introduce `PAUSE_REASON` and make sure `why` attribute is using
`PAUSE_REASONS`.

This is in order to support the upcoming work on `onStep`, `onPop`, and
`onEnterFrame` hook.

Testing: all existing tests are passing
Fixes: Part of #36027

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-02-27 09:22:33 +00:00
atbrakhi
ebd0136588 devtools: Use getOffsetMetadata in Frame (#42874)
Use
[`getOffsetMetadata`](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Script.html#getoffsetmetadata-offset)
in Frame

By using getOffsetMetadata now, it is showing the correct line and
column for each frame when breakpoint is being set.

Testing: all existing tests are passing
Fixes: Part of #36027

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-02-26 17:03:52 +00:00
eri
a2f1c55676 devtools: Register frame actor before pause (#42844)
We need a map between frame actor ids (from devtools) and frame objects
(from debugger.js) to implement stepping hooks in the future.

To achieve this, we register the frame actor with a call to the devtools
before entering the event loop when the debugger is paused. Instead of
creating the frame actor in `handle_debugger_pause`, we create it
before.

Testing: It passes existing devtools tests
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-02-26 09:24:04 +00:00
eri
158742f72c devtools: Get the correct debuggee in debugger.js (#42774)
Remove the placeholder way of getting a debuggee in `eval` and finds the
correct one in the map. Another way of doing this would be to have two
maps, `debuggeesToPipelineIds` and `pipelineIdsToDebuggees`, I'm open to
both approaches. I think this might be fine since the reverse operation
is only used here, but if it becomes a performance issue we can change
it.

Testing: Ran mach test-devtools
Part of: #36027

cc @atbrakhi

Signed-off-by: eri <eri@igalia.com>
2026-02-23 11:00:48 +00:00
eri
92259af702 devtools: Unify pause handling for breakpoints and interrupt (#42599)
The pause debugger screen should be shown for both pausing manually
(interrupt) and hitting a breakpoint.

Reuse the logic for pausing breakpoints to pause the debugger when the
user manually clicks the pause button.

Rename the pause event to interrupt to match the language of the
DevTools client and to avoid confusion with paused frames, which can
happen on interrupt or on a breakpoint.


https://github.com/user-attachments/assets/ceb0007d-0e57-44d6-a159-55980ff8b517

Testing: New DevTools test and manual testing.
Part of: #36027

cc @atbrakhi

---------

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-02-23 09:29:59 +00:00
Oriol Brufau
4b76780972 build(deps): bump Stylo to "Merge stylo_config crate into stylo_static_prefs" (#42605)
Bumps Stylo to https://github.com/servo/stylo/pull/312

Testing: Not needed, no behavior change

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2026-02-19 16:59:03 +00:00
atbrakhi
3c8c46d32f devtools: implement pause and resume in debugger (#42580)
When a breakpoint is hit, the script thread now pauses execution and
notifies devtools clients with a "paused" event. The script
thread enters a loop that processes devtools messages until
a Resume command is received.

This change does not implement manual pause

Testing: Added new test
Fixes: part of https://github.com/servo/servo/issues/36027




https://github.com/user-attachments/assets/c619db20-4579-4f77-aa60-0e43e6e7e575

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-02-18 10:08:46 +00:00
Ashwin Naren
232d434701 Add servo:config page (#40324)
Similar to about:config from firefox. All preferences are editable;
editing them mid-runtime is not guaranteed to cause any effects. This is
separate from servo:preferences, which selectively groups and exposes
preferences. This probably would become more useful if/when preferences
become persistent.

<img width="1136" height="880" alt="Screenshot 2025-10-31 at 10 19
57 PM"
src="https://github.com/user-attachments/assets/2ef759d8-06a4-457f-b9df-331cc3525338"
/>


Followup work:
- Remove `getStringPreference`, `getIntPreference`, and
`getBoolPreference`. Using `getPreference` and `preferenceType` is more
flexible.
- Make more of these config options work on the fly.
- Allow for reverting config options.

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2026-02-09 17:31:59 +00:00
atbrakhi
d6097d1967 devtools: Implement debugger Eval event (#42306)
Replace the `EvaluateJS` function to use `debugger.js` `Eval` event and
the proper context. This takes the global context and calls
[executeInGlobal](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Object.html#executeinglobal-code-options).

In future we also add the version that takes a frame and calls
[eval](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Frame.html#eval-code-options).

Testing: No new tests added yet, Old tests are not impacted by this
change.
Fixes: Part of https://github.com/servo/servo/issues/36027

---------

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-02-09 12:58:51 +00:00
Jonathan Schwender
de7c9d2e43 Bump servoshell to 0.0.5 (#42305)
This version bump is a bit delayed, since I forgot to open the PR before
FOSDEM. The actual release will thus likely not be based on this commit,
but backported to the release branch, to stay in sync with our monthly
report.
There still has been no resolution on the `0.1` version bump situation,
hence another bump of the patch version.

Testing: Not required

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-02-03 14:05:55 +00:00
atbrakhi
138857a8e8 devtools: cleanup debugger.js (#42308)
Debugger.js had many repetitive code, this change creates 2 helper
functions and renames some functions/variables to make it more clear.

Testing: This should not change any functionality

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-02-03 12:26:37 +00:00
atbrakhi
8ea5b4bf95 devtools: Remove redundant addDebuggee call (#42290)
Remove duplicate addDebuggee call in debugger.js 

Testing: This change should not change functionality.

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-02-02 15:42:40 +00:00
atbrakhi
e28a0f6d6c devtools: implement clearBreakpoint (#42154)
Add an event listener for `clearBreakpoint` to `debugger.js` and the
necessary glue to access it from the `devtools` crate.

Testing: `./mach test-devtools` and manual testing.
Fixes: Part of: https://github.com/servo/servo/issues/36027

---------

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-01-27 15:46:54 +00:00
Josh Matthews
4a2a73ad56 webdriver: Reset prefs to the values present at server start. (#42044)
The test harness attempts to reset preferences to default values when
running a test in which previously-set preferences are no longer set.
This leads to confusing interactions with any preference customizations
that are present, such as `--pref whatever` or `--prefs-file
something.json`, which are not considered when calculating the default.
This PR changes that: whatever preference values are present when the
webdriver server starts is treated as the default value.

Testing: This is a servo-specific webdriver extension, and we're fixing
an interaction with the test harness. I don't see another way to test
this besides observing the impact on our test results.
Fixes: #42043

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2026-01-21 07:52:17 +00:00
eri
151074e9a1 devtools: Handle pause in the debugger (#42007)
Add an event listener for `pause` to `debugger.js` and the necessary
glue to access it from the `devtools` crate. This returns important
information to know where we are paused, such as the source location and
frame state.

Fix frame and object actor encoding into messages. Use information from
`debugger.js` to correctly fill the fields.

Add a new `frames` list to the thread actor and handle the `frames`
message.

Fix `getEnvironment` reply in the frame actor. It is out of form (has a
`type` field but it doesn't require a followup empty message, it already
counts as a reply), so we need to handle it specially.

Note: For now we are focusing on the protocol side of the debugger, and
this patch only shows where the pause would happen. Pausing Servo itself
will happen in a followup.

![Debugger showing the line where execution would be
paused](https://github.com/user-attachments/assets/c007f205-0ccd-47f1-ad0b-81b7415e8211)

Testing: `mach test-devtools` and manual testing. No errors (apart from
#42006).
Part of: #36027

---------

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
2026-01-19 19:27:52 +00:00
eri
9d35414386 devtools: Handle the setBreakpoint message. (#41925)
Listen for `setBreakpoint` on `debugger.js` and add the relevant WebIDLs
and Servo counterparts to trigger this event and notify SpiderMonkey.

Implement `find_source` for `SourceManager` and `find_offset` for
`SourceActor`.

Testing: Manual testing and `./mach test-devtools` (note, the latter
seems to have some failing tests, we are investigating this, but this
patch doesn't add any new failure).
Fixes: Part of #36027

---------

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-01-16 10:17:55 +00:00
Jonathan Schwender
0fa84df099 servoshell: Bump version number to 0.0.4 (#41589)
In preparation for the next release.

Testing: Not required

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-12-31 22:00:25 +00:00
Steven Novaryo
b68d277c55 script: Add stub VisualViewport Interface (#41372)
Add placeholder implementation of DOM `VisualViewport` according to the
spec https://drafts.csswg.org/cssom-view/#visualviewport. This is the
first step of implementing the interface and syncing it with the
`PinchZoom` struct that we had in the `Embedder`.

Since this interface's is not accurate and couldn't fulfill it's
purpose, it would be gated behind a preference
`dom_visual_viewport_enabled` and would be open after the interface had
been integrated with `PinchZoom`, viewport resizing, and viewport
scroll.

Testing: Existing WPT Test.
Part of: #41341

---------

Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
2025-12-23 09:56:13 +00:00
lumiscosity
d47da6b09e Optimize assets, again (#41163)
Turns out we can squeeze a bit more out of rippy.png, as well as a
single byte off the big logo with a few new tricks I found.

This PR also converts the new kebab menu icon in the Android app to webp
like all the others, for another 3kb saved.

Testing: Manual.

Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2025-12-09 23:33:31 +00:00
Jonathan Schwender
323d1cf987 servoshell: Prepare November release (0.0.3) (#40962)
As discussed in the tsc-channel, prepare for the next release by cutting
a version on the last day of the month.

Note: The actual release would happen ~ 2 weeks from now, when the blog
post for november is ready.

This commit was produced by running `./mach release 0.0.3`.

Testing: Not required. Additional pre-release testing will happen after
the version bump and before the release, with potential patches being
cherry-picked to a release branch.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-12-02 04:41:50 +00:00
Ashwin Naren
10796b8590 resources: Ensure that selectors in CSS for the newtab page refer to actual elements (#40670)
I did part of a refactor to address a review but didn't finish it. Fixes
white input/button in dark mode.

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-16 09:28:46 +00:00
Jonathan Schwender
641a1f4cfc Update servoshell to v0.0.2 (#40614)
Ran ./mach release 0.0.2 to update the version number and update the
license.html
This is in preperation for the v0.0.2 release with the next nightly, as
discussed on zulip.

Testing: Not tested

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-13 15:49:06 +00:00
Ashwin Naren
7c94188315 Add servo:license (#40319)
Similar to about:license in firefox. Generated with `cargo-about`.

A few open questions:
- When/how should it be updated (the command I used was `cargo about
generate etc/about.hbs > resources/resource_protocol/license.html`, it
takes ~20 seconds)
- How should `about.toml` be kept in sync with `deny.toml`
- What about licenses for packages that are not crates (i.e. gstreamer)

Fixes: #40266

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-13 08:48:01 +00:00
Martin Robinson
f08460cded script: Handle broken image icon in HTMLImageElement (#40429)
Instead of having the `ImageCache` return the broken image icon for
failed loads, have `HTMLImageElement` explicitly request it. This means
that the image is loaded on demand (reducing the usage of resources) and
also simplifying the interface of the `ImageCache` greatly.

In addition, the display of the broken image icon is improved, more
closely matching other browsers. A test for this display (which was
falsely passing before) is updated to reflect the new display of the
broken image icon.

Testing: There is a Servo-specific test for this change. Some WPT tests
start to fail as well. Before these were not properly loading the broken
image icon so they were failing before, just in a hidden way.

---------

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-11-06 09:36:21 +00:00
Ashwin Naren
c044c7f116 Light mode for newtab page (#40272)
As requested, the mode changes per the preferences. I had to add a
shadow to fix the contrast on light mode (the colors/shadowing are
roughly similar to the firefox new tab page).

<img width="1136" height="880" alt="Screenshot 2025-10-29 at 11 38
49 AM"
src="https://github.com/user-attachments/assets/232e75a2-6a8c-4910-8b38-123e4d57dd87"
/>

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-03 18:50:57 +00:00
Ashwin Naren
36b872bd3e Redesign servo:newtab page (#40137)
Increases the size of the input/button for searching. Also it blends in
the background colors of those to make it less jarring.

Before:
<img width="1136" height="880" alt="Screenshot 2025-10-24 at 10 23
24 AM"
src="https://github.com/user-attachments/assets/7d178b48-431a-4f10-b107-04c691769a76"
/>

After:
<img width="1136" height="880" alt="Screenshot 2025-10-24 at 10 24
26 AM"
src="https://github.com/user-attachments/assets/1eab2c14-8bda-4813-b31a-f1104c403e39"
/>

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-10-29 07:32:40 +00:00
WaterWhisperer
16506e4b8b Add IndexedDB preference to servo:preferences (#39921)
Add IndexedDB preference to servo:preferences, making it easy to enable
at runtime for testing site compatibility

Fixes: #39792

Signed-off-by: WaterWhisperer <waterwhisperer24@qq.com>
2025-10-17 03:35:37 +00:00
Ashwin Naren
c928d7e4ae Fix typo in newtab.html (#39779)
Self-explanatory.

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-10-11 05:07:37 +00:00
Josh Matthews
6565d982bd servoshell: Support runtime preference manipulation (#38159)
These changes add a custom servo:preferences URL that allows modifying
selected preferences at runtime. The goal of this work is to make it
easy to test pages while toggling experimental web platform features,
and support quickly changing the User-Agent header.

Testing: Manually verified that spacex.com loads correctly after
changing the user agent, and that https://polygon.io/ displays grid
elements correctly and no console errors with the experimental prefs
enabled.
Fixes: #35862

<img width="1136" height="880" alt="Screenshot 2025-07-18 at 1 06 23 AM"
src="https://github.com/user-attachments/assets/2d27c321-6ca0-43c3-a347-7bc4b55272df"
/>

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-08-30 16:51:58 +00:00