3812 Commits
Author SHA1 Message Date
zehjotkah 8b70dea163 feat: expression string method autocomplete (#5421)
## Description

Added autocomplete support for safe string and array methods in the
expression editor, as suggested by @TrySound in PR #5403.

## Changes

- Exported `allowedStringMethods` and `allowedArrayMethods` from
`packages/sdk/src/expression.ts`
- Enhanced the expression editor's autocomplete to suggest safe methods
when typing after a variable (e.g., system)
- Methods are displayed with parentheses for clarity (e.g.,
`toLowerCase()`, `replace()`, `split()`)
- Autocomplete shows helpful labels: "string method" or "array method"

## How to Test

1. Open any project in the builder
2. Click the expression editor icon next to a text property
3. Type a variable name followed by a dot (e.g., `system.`)
4. You should see autocomplete suggestions for safe string methods like
`toLowerCase()`, `replace()`, `split()`, etc.
5. Type a few letters to filter (e.g., `title.to` shows only methods
starting with "to")
6. Select a method and it will be inserted with parentheses

## Related

- Builds on PR #5403 which enabled these safe methods in the expression
engine

<img width="343" height="204" alt="Bildschirmfoto 2025-10-09 um 22 33
03"
src="https://github.com/user-attachments/assets/206a36e8-1d68-4e2a-a045-1f9e95067a28"
/>
2025-10-15 16:08:41 +04:00
Bogdan Chadkin 631743b860 feat: remove free domains (#5426)
<img width="357" height="297" alt="Screenshot 2025-10-15 at 11 54 23"
src="https://github.com/user-attachments/assets/f4fa0c5f-89b4-4f9b-9152-bf339c2e8f55"
/>
2025-10-15 12:14:11 +04:00
Bogdan Chadkin a9f838a894 fix: upload unoptimized inception images (#5419)
This fixes the issue with uploading avif which is not supported as image
source.
2025-10-05 13:50:14 +03:00
Bogdan Chadkin 65017634ab feat: add download asset button (#5417)
Ref https://github.com/webstudio-is/webstudio/issues/5416

Downloading assets is forbidden in view mode and when user is on free
plan.

<img width="332" height="374" alt="Screenshot 2025-10-02 at 21 34 34"
src="https://github.com/user-attachments/assets/8695b5e4-68b4-484d-8425-37a2de81203f"
/>
2025-10-02 22:52:05 +03:00
Oleg Isonen 7decfeb9d8 feat: Add Inception banner instead of navigation item (#5414)
## Description

<img width="263" height="534" alt="image"
src="https://github.com/user-attachments/assets/2618295b-fd34-425f-9339-b278b60365d7"
/>
2025-10-01 01:02:32 +02:00
Oleg Isonen 1963572cb5 feat: Add Inception link to the dashboard (#5413)
## Description

For a better discovery

<img width="268" height="458" alt="image"
src="https://github.com/user-attachments/assets/568d0f90-3579-401f-8232-8bbe8b21130d"
/>
2025-09-30 15:30:25 +02:00
Bogdan Chadkin de444a3501 fix: copy paste search params in resources (#5412)
Reproduced when tried to insert the new baserow template
2025-09-27 16:47:49 +03:00
Bogdan Chadkin a202648367 fix: show resource validation error as response (#5402)
Sometimes users are able to save broken resource
for example without header value. We need to prevent failing all
requests and instead fail only broken one.
2025-09-19 14:52:34 +03:00
Bogdan Chadkin 05d8baf21a fix: reduce patch size to let users duplicate huge pages (#5400)
User is trying to duplicate huge page and gets "413 Content Too Large".
Here I'm trying to reduce patch request size by removing revise patches
which are not used on server.
2025-09-18 23:32:05 +03:00
Bogdan Chadkin 62f969cccb fix: show href on link in content mode (#5396)
Got broken when we switched links to element component.

<img width="844" height="466" alt="Screenshot 2025-09-09 at 13 50 45"
src="https://github.com/user-attachments/assets/a4f0c969-9003-4ea7-aef0-22014f307884"
/>
2025-09-09 19:09:14 +03:00
Bogdan Chadkin 4e5d82983e fix: handle headers in graphql resource (#5395) 2025-09-09 13:52:03 +03:00
Bogdan Chadkin e87cd94819 feat: add cache max age and body type to resource UI (#5393)
Ref https://github.com/webstudio-is/webstudio/issues/3691

<img width="347" height="613" alt="Screenshot 2025-09-07 at 20 10 00"
src="https://github.com/user-attachments/assets/50d68199-7bc7-41e2-b607-66d20cfc6e5d"
/>
2025-09-07 23:44:41 +03:00
Bogdan Chadkin f558311897 feat: load data before saving resource variable (#5392)
Ref https://github.com/webstudio-is/webstudio/issues/3691

- new resource loader with queue to avoid bloating network with huge
responses
- data can be loaded for new variable before saving, easier to preview
result



https://github.com/user-attachments/assets/5c26c5a2-fd33-401b-a4d2-a321c34ca083
2025-09-06 17:09:53 +03:00
Bogdan Chadkin 91588c90be feat: support json in resource search params and headers (#5387)
Ref https://github.com/webstudio-is/webstudio/issues/3691

This should improve experience when working with baserow filters or
similar backends.

<img width="641" height="347" alt="Screenshot 2025-09-01 at 12 19 35"
src="https://github.com/user-attachments/assets/7be1e967-729a-4025-9d4e-112c8e4162ad"
/>
2025-09-01 13:50:42 +02:00
Bogdan Chadkin cdb2a9581c feat: add search params list to resource UI (#5384)
Ref https://github.com/webstudio-is/webstudio/issues/3691

Editing search params separately from url can improve experience working
with external CMS or databases like baserow.

Also made headers list more compact and aligned with search params.
Validation is simplified, empty pairs will be just ignored without
blocking user with validation errors.


https://github.com/user-attachments/assets/3102d2c8-a902-4e86-8011-d71346fb5491
2025-09-01 09:49:43 +02:00
Bogdan Chadkin 2c461b431b fix: show proper error when dropping a too big file (#5385)
Fixes https://github.com/webstudio-is/webstudio/issues/5326
2025-09-01 01:37:54 +02:00
Bogdan Chadkin 973d9df4d5 feat: new resources dialog (#5383)
Ref https://github.com/webstudio-is/webstudio/issues/3691

- moved response preview into resource dialog
- increased dialog size and centered it
- added maximize button to resource dialog
- removed inspect option from dropdown
- refactored centering dialogs without transform to fix nested popovers
positioning

https://github.com/user-attachments/assets/901e086b-afcd-42e9-8866-d62d6cb662d2
2025-08-27 20:48:51 +02:00
Bogdan Chadkin f42488a8f0 fix: decode path params in builder (#5382)
User got encoded Cyrillic slugs when tested in builder. Now decoded the
result of URLPattern parsing.
2025-08-25 17:43:32 +02:00
Bogdan Chadkin 05a2dd290e feat: allow user to add asset description (#5369)
Ref https://github.com/webstudio-is/webstudio/issues/3263

Now users can control "alt" for all image uses with asset description.



https://github.com/user-attachments/assets/c0e5ae4b-d2b0-4ec1-bf93-c385816369d1
2025-08-12 15:57:38 +02:00
Bogdan Chadkin 76c436ca1e feat: allow changing asset name (#5367)
Ref https://github.com/webstudio-is/webstudio/issues/3262
https://github.com/webstudio-is/webstudio/issues/3272

This solves a couple of issues.

1. Gives a user ability to change name of uploaded asset.
2. strips internal suffix from filenames in UI

<img width="626" height="541" alt="magic_1"
src="https://github.com/user-attachments/assets/f9c91ac8-cc67-4905-9e86-bf0cbbeae14a"
/>
2025-08-10 20:19:15 +02:00
Bogdan Chadkin fb466caed1 feat: show when asset is used (#5365)
Ref https://github.com/webstudio-is/webstudio/issues/572
https://github.com/webstudio-is/webstudio/issues/3261

- made settings gear visible when asset is used anywhere
- when asset is used delete button shows dialog with all usages

<img width="235" height="149" alt="image"
src="https://github.com/user-attachments/assets/50fc7e45-fb84-451d-9825-592b3ef45388"
/>



<img width="277" height="288" alt="image"
src="https://github.com/user-attachments/assets/37187a5c-92b5-413c-bcdf-caaf506525a4"
/>


<img width="428" height="246" alt="Screenshot 2025-08-09 at 11 30 37"
src="https://github.com/user-attachments/assets/e77d262a-3de0-4d46-b681-b38becb55862"
/>
2025-08-09 15:14:22 +02:00
Bogdan Chadkin 2a13c3d077 fix: keep property in advanced panel when use color thumb (#5364)
Edited value lost "listed" flag when threw it out of advanced panel.
2025-08-08 15:55:29 +02:00
Bogdan Chadkin c62982fdac fix: show proper labels in content block (#5363)
- content block menu now use `<tag>` format for label
- add human radable labels in default content block template

<img width="629" height="567" alt="Screenshot 2025-08-07 at 22 20 39"
src="https://github.com/user-attachments/assets/b8637d1f-892e-4104-82ff-3de5a03a192d"
/>
2025-08-07 22:29:42 +02:00
Bogdan Chadkin 4e775d9a94 fix: set true by default for new boolean properties/attributes (#5362)
Before we set false by default for boolean properties and attributes
which is less intuitive and always requires additional click to switch
boolean on.

Now when user add for example aria-atomic attribute it gets true by
default.
When user see initial property, for example disabled in input element,
it gets false.

<img width="241" height="585" alt="Screenshot 2025-08-07 at 19 40 22"
src="https://github.com/user-attachments/assets/9574e885-febb-42e5-8dd4-a7984a31b0b5"
/>
2025-08-07 20:50:19 +02:00
Bogdan Chadkin bc599ad37b fix: access available features from product plans (#5358)
This will let us to configure available features for each plan.
2025-08-04 14:11:57 +02:00
Bogdan Chadkin a7a019f2f6 fix: remove vercel route configs (#5355)
These official documented route configs started to wipe whole builder.
We should migrate away from vercel ASAP.
2025-08-04 00:40:53 +02:00
Bogdan Chadkin fc033006a4 fix: relax redirects validation (#5348)
Fixes https://github.com/webstudio-is/webstudio/issues/5337

1. checking specific characters will always be error prone
2. checking matching paths is no longer relevant with `/*` which matches
them all
3. added check to validate url or path with `new URL()`
2025-08-03 14:11:22 +02:00
Bogdan Chadkin ee374471ef chore: drop support for legacy shared url (#5347)
It's 1.5 years since we switched to new subdomain based shared url
format.
2025-08-03 12:35:56 +02:00
Bogdan Chadkin 49bb819ab1 fix: support videos in self-hosted websites (#5340)
Ref
https://discord.com/channels/955905230107738152/955905231227609158/1400561168648638576

User tried to self hosted a website with video component which got
converted to /cgi/video which does not exist in self hosted targets.

Here moved the logic into own custom loader and fall back to original
url.
2025-08-03 02:12:42 +02:00
Bogdan Chadkin 6bc16940e0 chore: drop AI from UI (#5344)
Our first AI experiment is barely used. And we don't want our users to
confuse it with upcoming Inception. The next integrated with builder
solution will be based on Inception.
2025-08-03 02:04:26 +02:00
Bogdan Chadkin 9409657219 fix: let user type "auto" into duration input (#5343)
Ref
https://discord.com/channels/955905230107738152/1401100781989531718/1401100781989531718


https://github.com/user-attachments/assets/7d6c0a6e-5e92-4d90-84e2-460824675d99
2025-08-02 22:43:56 +02:00
Bogdan Chadkin 94b1fb9951 fix: consider Text and Link components as rich text (#5334)
This prevents editing Text and Link components parent and instead
enforces editing these components as rich text containers.
2025-07-23 20:50:24 +02:00
Bogdan Chadkin 4abb7cf3e2 feat: support svg properties in style panel (#5332)
Ref https://github.com/webstudio-is/webstudio/issues/5258

Newer mdn-data contains all stylable svg properties (they finally got
through some documentation and implementation process).

Tweaked all experimental stuff and ditched obsolete properties.

<img width="286" height="538" alt="image"
src="https://github.com/user-attachments/assets/1e579be0-0a12-4013-ab04-09d5e008aeed"
/>
2025-07-18 18:04:26 +02:00
Bogdan Chadkin 1eb11fdb34 feat: autocomplete SVG attributes (#5331)
Ref https://github.com/webstudio-is/webstudio/issues/5258

Now user will see all available attributes for any SVG element.

<img width="283" height="507" alt="image"
src="https://github.com/user-attachments/assets/750c3027-aada-4e55-b429-c5adb5449158"
/>
2025-07-18 15:47:35 +02:00
Oleg Isonen 82ecb10d34 feat: Manual save command (#5327)
Closes https://github.com/webstudio-is/webstudio/issues/5325

## Description

As a user I am sometimes afraid my changes weren't saved. So this is an
extra layer of confidence to know that changes are actually saved.




https://github.com/user-attachments/assets/9135e225-2c12-450b-b6d0-680d9ecd7454

<img width="207" height="175" alt="image"
src="https://github.com/user-attachments/assets/49ecdbad-e191-4088-8046-99b2b55070f7"
/>

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-07-17 17:24:27 +02:00
Bogdan Chadkin d5d1fed5a8 fix: avoid body when insert section from marketplace (#5329)
We remove body from pages when insert section
but I forgot to add a check for body element which replaced Body
component for new pages.
2025-07-17 14:20:02 +02:00
Bogdan Chadkin f46095ea2a fix: show only one "delete instance" command (#5324)
<img width="501" height="213" alt="image"
src="https://github.com/user-attachments/assets/8a5223e6-dbb7-42c6-89fa-1c8dd3945b52"
/>
2025-07-17 12:01:39 +02:00
Bogdan Chadkin 4a9fe16fd6 refactor: fix inception paste typo (#5323) 2025-07-12 23:57:02 +02:00
Bogdan Chadkin 111564c88f feat: automatically paste tailwind when html has inception mark (#5322)
We want to reduce friction in pasting from inception and will
automatically process tailwind classes and generate styles when paste
into builder without using command panel.
2025-07-12 18:43:05 +02:00
Bogdan ChadkinandOleg Isonen 5632a40940 feat: allow restore from published backup (#5320)
Ref https://github.com/webstudio-is/webstudio/issues/5276

---------

Co-authored-by: Oleg Isonen <oleg008@gmail.com>
2025-07-11 19:05:31 +02:00
Oleg Isonen a57783eb69 chore: Delete support hub (#5317)
## Description

Product was discontinued

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-07-07 11:59:12 +02:00
Bogdan Chadkin 9a1486b306 fix: avoid error when domain does not exist in iana (#5315)
We use iana registry to find if cloudflare nameserver is used for domain
and we can avoid using www.
2025-07-06 14:03:10 +03:00
Bogdan Chadkin 03c7366b04 feat: create projects with 404 page on all plans (#5309)
Ref https://github.com/webstudio-is/webstudio/issues/2782

Here I did a few things

- allow `/*` path on free plan
- allow changing status code on free plan
- create "Not Found" page for all new projects



https://github.com/user-attachments/assets/1f36882f-3c09-4814-a1ee-d6bdfd468467
2025-07-01 18:56:15 +03:00
Bogdan Chadkin 19a98fa1ae fix: order routes before navigating in preview (#5311)
Ref https://github.com/webstudio-is/webstudio/issues/5223

Navigating within preview didn't work well because we relied on order of
creation and more inclusive routes like `/*` could match before
`/my-page`.

Here fixed it with routes sorting. The algorithm is very simplified but
covers our usecases within builder.
2025-07-01 18:45:25 +03:00
Bogdan Chadkin 395ebc44f2 fix: convert space-* on breakpoints when paste tailwind (#5308)
Ref https://github.com/webstudio-is/webstudio/issues/2651

Didn't consider spaces on breakpoints when converted space-* to gap for
example `md:space-x-6` -> `md:gap-x-6`
2025-06-30 13:33:18 +03:00
Bogdan Chadkin 232847ced1 fix: add unset values to adapt tailwind breakpoints (#5303)
Ref https://github.com/webstudio-is/webstudio/issues/2651

When convert tailwind breakpoints to webstudio breakpoints our algorithm
can find holes and will stop conversion. Though this will create
mobile-first breakpoints which users do not expect.

Here I added workaround to specify "unset" value on property when
tailwind breakpoints has holes. Here's examples

**sm:opacity-20** - here the hole is in the beginning, opacity: 0.2 can
be defined on base breakpoint but we need to fill with something
`max-width: 479`

**max-sm:opacity-10 md:opacity-20** - here the holr is in the middle, we
have `max-width: 479` and base breakpoint but no `max-width: 767`
2025-06-28 17:55:24 +03:00
Bogdan Chadkin 4f2d21ee06 fix: strip invalid attributes when paste html (#5304)
We never validated invalid attributes which cannot be rendered as jsx
and will break the build. Here just strip them away.
2025-06-28 17:15:58 +03:00
Oleg Isonen 013a2b53a9 chore: Better button colors, better upgrade request (#5302)
<img width="335" alt="image"
src="https://github.com/user-attachments/assets/94d621c1-527a-4608-8529-53971af26b8c"
/>
<img width="321" alt="image"
src="https://github.com/user-attachments/assets/fd232773-dad5-4fde-8748-1d13645a4adf"
/>


## Description

1. What is this PR about (link the issue and add a short description)

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-06-28 00:22:01 +02:00
Bogdan Chadkin 310ab3aa1d fix: support max-* breakpoints in tailwind (#5299)
Ref https://github.com/webstudio-is/webstudio/issues/2651

Tailwind has max-sm, max-lg etc endpoints which need to adapt to ours as
well
2025-06-27 16:32:41 +03:00
Bogdan Chadkin d5efe60822 Remove unused import 2025-06-27 10:47:37 +03:00