1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-31 01:16:01 +02:00
Commit Graph

2549 Commits

Author SHA1 Message Date
Christopher Kolstad
92f7acbfc4
task: added release plan template permissions to permissions.ts (#8708) 2024-11-11 11:05:19 +01:00
Christopher Kolstad
d417dda229
task: added migration for release plan template permissions (#8707)
Due to the cascade on the permission in role_permission, the down
migration does not need to remove the rows from role_permission.
2024-11-11 10:42:38 +01:00
Jaanus Sellin
961501567c
feat: remove excessing debug logging (#8701)
This debugger has been spamming me locally and I think this was
forgotten during some development. Removing.
2024-11-08 14:57:26 +02:00
Thomas Heartman
f92441fa50
chore: put project lifecycle read model in own directory + add fake (#8700)
This PR moves the project lifecycle summary to its own subdirectory and
adds files for types (interface) and a fake implementation.

It also adds a query for archived flags within the last 30 days taken
from `getStatusUpdates` in `src/lib/features/project/project-service.ts`
and maps the gathered data onto the expected structure. The expected
types have also been adjusted to account for no data.

Next step will be hooking it up to the project status service, adding
schema, and exposing it in the controller.
2024-11-08 11:33:03 +00:00
Thomas Heartman
b141981f91
1-3085: count flags in each stage (#8699)
This PR adds the next query to the lifecycle read model: how many flags
are in each stage.
2024-11-08 10:41:42 +00:00
Thomas Heartman
0a250a7526
tests: add more tests for the lifecycle avg calculation query (#8698)
This PR adds more tests to check a few more cases for the lifecycle
calculation query. Specifically, it tests that:
- If we don't have any data for a stage, we return `null`.
- We filter on projects
- It correctly takes `0` days into account when calculating averages.
2024-11-08 11:29:17 +01:00
Thomas Heartman
e07aab68cc
feat: Add lifecycle summary info read model + average time spent in lifecycle query (#8691)
This PR adds a project lifecycle read model file along with the most
important (and most complicated) query that runs with it: calculating
the average time spent in each stage.

The calculation relies on the following:
- when calculating the average of a stage, only flags who have gone into
a following stage are taken into account.
- we'll count "next stage" as the next row for the same feature where
the `created_at` timestamp is higher than the current row
- if you skip a stage (go straight to live or archived, for instance),
that doesn't matter, because we don't look at that.

The UI only shows the time spent in days, so I decided to go with
rounding to days directly in the query.

## Discussion point:

This one uses a subquery, but I'm not sure it's possible to do without
it. However, if it's too expensive, we can probably also cache the value
somehow, so it's not calculated more than every so often.
2024-11-08 09:45:47 +00:00
Tymoteusz Czech
656483d819
chore: remove stale flags (#8689)
- `projectOverviewRefactorFeedback`
- `featureSearchFeedbackPosting`
- `featureSearchFeedback`
2024-11-08 09:40:17 +01:00
Jaanus Sellin
d6c03fdbfa
feat: health score backend (#8687)
Implements the backend part for project health.

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2024-11-07 13:22:01 +02:00
Mateusz Kwasniewski
e039cdc85c
feat: count recently deleted users (#8688) 2024-11-07 11:57:47 +01:00
Tymoteusz Czech
f5eafe6d49
Fix: email colors on iOS (#8680)
Force light mode in Apple mail, preventing issues with button text
colors.
2024-11-06 14:28:49 +00:00
Thomas Heartman
2615a71474
test: add tests for project resources data (#8675)
Adds a test that checks all the values in the project status' resources
object.
2024-11-06 13:30:45 +00:00
Thomas Heartman
c70c023143
refactor: introduce countProjectTokens method on ApiTokenStore (#8674)
This change introduces a new method `countProjectTokens` on the
`IApiTokenStore` interface. It also swaps out the manual filtering for
api tokens belonging to a project in the project status service.
2024-11-06 13:13:44 +00:00
Jaanus Sellin
76bf6dbcb8
fix: active flags double stale flags (#8673)
Do not count stale flags as potentially stale flags to remove
duplicates.
Stale flags feel like more superior state and it should not show up
under potentially stale.
2024-11-06 15:04:07 +02:00
Thomas Heartman
8a5771dd50
chore (1-3076): add remaining "project resources" to status payload (#8660)
This PR adds member, api token, and segment counts to the project status
payload. It updates the schemas and adds the necessary stores to get
this information. It also adds a new query to the segments store for
getting project segments.

I'll add tests in a follow-up.
2024-11-06 11:46:04 +00:00
Christopher Kolstad
4ed5b1bb8a
task: Added Release Plan Template events (#8668)
As part of the release plan template work. This PR adds the three events
for actions with the templates.

Actually activating milestones should probably trigger existing
FeatureStrategyAdd events when adding and FeatureStrategyRemove when
changing milestones.
2024-11-06 12:15:01 +01:00
Jaanus Sellin
d6e722b7b3
feat: activity chart polish (#8665)
![image](https://github.com/user-attachments/assets/a97f5745-1300-473e-80af-54f0cfc985e1)
2024-11-06 12:00:42 +02:00
Mateusz Kwasniewski
ba72be6169
chore: export user subscriptions read model (#8664) 2024-11-06 09:34:38 +01:00
Nuno Góis
16e136e42c
chore: add flagOverviewRedesign flag (#8653)
https://linear.app/unleash/issue/2-2916/create-a-new-flag-for-the-new-feature-flag-overview-page-redesign

Adds the `flagOverviewRedesign` feature flag, allowing us to toggle the
new feature flag overview page redesign.
2024-11-05 15:53:15 +00:00
Tymoteusz Czech
7aa74cccd3
feat: add user preference change to event log (#8652) 2024-11-05 14:52:11 +00:00
Thomas Heartman
2b13aff4f1
feat: hook up project resources API to resources widget (#8657)
This PR wires up the connectedenvironments data from the API to the
resources widget.

Additionally, it adjusts the orval schema to add the new
connectedEnvironments property, and adds a loading state indicator for
the resource values based on the project status endpoint response.

As was discussed in a previous PR, I think this is a good time to update
the API to include all the information required for this view. This
would get rid of three hooks, lots of loading state indicators (because
we **can** do them individually; check out
0a334f9892)
and generally simplify this component a bit.

Here's the loading state:

![image](https://github.com/user-attachments/assets/c9938383-afcd-4f4b-92df-c64b83f5b1df)
2024-11-05 14:50:51 +01:00
Mateusz Kwasniewski
a2a94dd011
feat: user profile returns user subscriptions (#8656) 2024-11-05 14:17:37 +01:00
Tymoteusz Czech
2017ab7719
test(productivity-report): user subscripton read model (#8654) 2024-11-05 14:04:18 +01:00
Tymoteusz Czech
471cb796c9
migration(producitivty-report): cascade user unsubscription (#8655)
Remove opt-outs for deleted users. This is useful in tests, where we
delete users permanently.
2024-11-05 13:54:32 +01:00
weekwith.me
ef8417a08d
feat: Make disableMigration option handled by environment variable (#8634)
In some cases, people want to disable database migration. For example,
some people or companies want to grant whole permissions to handle the
schema by DBAs, not by application level hence I use
`parseEnvVarBoolean` to handle `disableMigration` option by environment
variable. I set the default value as `false` for the backward
compatibility.
2024-11-05 13:13:49 +01:00
Mateusz Kwasniewski
b5a2befec7
feat: export transactional user subscriptions service (#8651) 2024-11-05 11:52:15 +01:00
Thomas Heartman
1897f8a19d
chore: add connected environments to project status payload (#8645)
This PR adds connected environments to the project status payload.

It's done by:
- adding a new `getConnectedEnvironmentCountForProject` method to the
project store (I opted for this approach instead of creating a new view
model because it already has a `getEnvironmentsForProject` method)
- adding the project store to the project status service
- updating the schema

For the schema, I opted for adding a `resources` property, under which I
put `connectedEnvironments`. My thinking was that if we want to add the
rest of the project resources (that go in the resources widget), it'd
make sense to group those together inside an object. However, I'd also
be happy to place the property on the top level. If you have opinions
one way or the other, let me know.

As for the count, we're currently only counting environments that have
metrics and that are active for the current project.
2024-11-05 11:12:08 +01:00
Mateusz Kwasniewski
6a8a75ce71
feat: composition root for user subscriptions (#8649)
Co-Authored-By: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com>
2024-11-05 10:50:31 +01:00
Tymoteusz Czech
2bd2d74f83
feat: User subscriptions store and service (#8648)
Co-authored-by: kwasniew <kwasniewski.mateusz@gmail.com>
2024-11-05 10:14:47 +01:00
Thomas Heartman
a7d581aa7d
fix: set a dynamic yesterday date instead of a fixed one. (#8646)
This was an oversight. The test would always fail after 2024-11-04,
because yesterday is no longer 2024-11-03. This way, we're using the
same string in both places.
2024-11-05 08:15:54 +00:00
Tymoteusz Czech
4a67607a0c
fix(productivity-report): email table alignment on mobile (#8641) 2024-11-04 14:14:36 +01:00
Jaanus Sellin
0ce49c789e
feat: now backend returns event counts for activity chart (#8638) 2024-11-04 14:29:10 +02:00
Mateusz Kwasniewski
6f09bcdee1
feat: unsubscribe link to user profile (#8637) 2024-11-04 12:10:32 +01:00
sjaanus
1c53256887
fix: remove extra event search controller 2024-11-04 09:49:52 +02:00
Jaanus Sellin
c9dc5267a6
feat: project status backend structure (#8630)
Adding project status schema definition, controller, service, e2e test.

Next PR will add functionality for activity object.

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2024-11-01 14:17:20 +02:00
Christopher Kolstad
8d4e3efbc5
chore: upgrade to biome 1.9.4 (#8616)
The two lints being turned off are new for 1.9.x and caused a massive
diff inside frontend if activated. To reduce impact, these were turned off for
the merge. We might want to look at turning them back on once we're
ready to have a semantic / a11y refactor of our frontend.
2024-10-31 15:24:22 +01:00
David Leek
7f5d27302e
chore: add migration for release-plans-definitions that removes fk on users(id) (#8614) 2024-10-31 13:49:55 +01:00
Tymoteusz Czech
28f821cb34
feat(db): user email un-subscription (#8612)
Opt-out table for emails
2024-10-31 11:38:15 +00:00
Jaanus Sellin
90ed7b6079
feat: archived row styling (#8608)
1. Added badge
2. Added archived row styling. Button not clickable and gray


![image](https://github.com/user-attachments/assets/a15a3b1d-4caa-448b-a9ed-b60de4115cb7)
2024-10-31 12:30:00 +02:00
Mateusz Kwasniewski
5033ed6b45
chore: remove navigation sidebar flag (#8607) 2024-10-31 10:30:37 +01:00
Tymoteusz Czech
1c9527654d
feat: traffic limits for enterprise-payg (#8596) 2024-10-31 10:26:47 +01:00
Nuno Góis
97636bb4ed
chore: add support for PAYG billing (#8582)
https://linear.app/unleash/issue/CTO-102/unleash-add-support-for-payg-billing
2024-10-30 13:17:48 +00:00
Mateusz Kwasniewski
83f86baf9e
feat: plain text productivity report (#8589) 2024-10-30 13:46:05 +01:00
David Leek
a1c98c4400
chore: remove the addonUsageMetrics flag (#8590) 2024-10-30 11:44:26 +01:00
Jaanus Sellin
095a82569c
feat: search endpoint should return archived at date (#8592)
Include archived at to search response payload.
2024-10-30 12:35:47 +02:00
David Leek
728df6825c
chore: add migration for milestone strategy segments (#8593) 2024-10-30 11:22:52 +01:00
Nuno Góis
1add516e49
chore: event timeline GA (#8552)
https://linear.app/unleash/issue/2-2682/remove-feature-flag

https://linear.app/unleash/issue/2-2705/remove-experimental-tag-from-the-new-event-properties

https://linear.app/unleash/issue/2-2751/remove-the-beta-badge-for-event-timeline-in-new-in-unleash

Makes event timeline GA by tackling the respective tasks:

 - Remove `eventTimeline` feature flag
 - Remove `[Experimental]` tag from the new schema properties
 - No longer show the "beta" badge for this item in "New in Unleash"
2024-10-30 10:53:12 +01:00
Jaanus Sellin
65c7f77980
feat: hide archive UI behind flag (#8591)
This new UI needs more work and we are soon making 6.4 release, I do not
want to release it without flag. Putting it behind flag.
2024-10-30 11:52:01 +02:00
Mateusz Kwasniewski
ba4ba85554
fix: productivity report email (#8574) 2024-10-29 13:39:57 +01:00
Jaanus Sellin
28e062b5cf
feat: archived features can be searched now (#8568)
Archived features can be searched now.
This is the backend and small parts of frontend preparing to add
filters, buttons etc in next PR.

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2024-10-29 13:19:13 +02:00
Tymoteusz Czech
30c14ff995
feat(productiviy-report): email config (#8571)
Add ability to customize email headers for non-transactional emails.
2024-10-29 10:52:05 +01:00
Thomas Heartman
b276d5a89c
fix: correctly filter for to dates (#8567)
This change fixes a bug in the event filter's `to` query parameter.

The problem was that in an attempt to make it inclusive, we also
stripped it of the `IS:` prefix, which meant it had no effect. This
change fixes that by first splitting the value, fixing only the
date (because we want it to include the entire day), and then joining
it back together.
2024-10-29 09:42:15 +01:00
gitar-bot[bot]
0ff0b2dbd0
[Gitar] Cleaning up stale flag: onboardingMetrics with value true (#8550) 2024-10-28 11:47:58 +01:00
Jaanus Sellin
677ec9cee8
feat: send traffic info to prometheus (#8541) 2024-10-25 15:43:14 +03:00
Tymoteusz Czech
7c37de373f
Email template for Productivity Report (#8532) 2024-10-25 11:41:17 +02:00
Mateusz Kwasniewski
5662fe79f8
feat: emails sent table migration (#8528) 2024-10-25 09:53:52 +02:00
David Leek
fbd3f97ae0
chore: add migration for release plans (#8529) 2024-10-24 13:33:54 +02:00
gitar-bot[bot]
589d9f1af7
[Gitar] Cleaning up stale flag: displayTrafficDataUsage with value true (#8481) 2024-10-24 08:05:06 +02:00
Jaanus Sellin
9839b77008
feat: rework application overview db query (#8518)
Previously we were returning all instance names from database, but now
we count them in database.
2024-10-23 16:05:01 +03:00
gitar-bot[bot]
f2ee02ed9e
[Gitar] Cleaning up stale flag: collectTrafficDataUsage with value true (#8480) 2024-10-23 14:32:09 +02:00
Mateusz Kwasniewski
faaf54ca99
feat: email service for productivity report (#8517)
Co-authored-by: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com>
2024-10-23 11:53:43 +02:00
Melinda Fekete
8b0af59897
Update and restructure environments (#8496) 2024-10-22 17:55:11 +02:00
Mateusz Kwasniewski
1abc330a85
fix: enable nav sidebar for previous uis (#8508) 2024-10-22 15:31:25 +02:00
Gastón Fournier
15f55c7662
chore: Prometheus metrics refactor (#8484)
Migrate some prometheus metrics to use the new and sequential metric
updater
2024-10-22 15:11:57 +02:00
Mateusz Kwasniewski
d3294d58c2
chore: remove navigation sidebar leftover flag (#8504) 2024-10-22 10:08:27 +02:00
Tymoteusz Czech
2e970b0ff2
fix: don't allow . or .. in feature url (#8479)
We do some validation on flag names, but there's some cases that slip
through. These are some cases that we should handle better.

With `..` as a name, you can't go into the flag in Unleash and you can't
activate any environments because the it is interpreted as "go up a
level".
2024-10-21 16:35:17 +02:00
Mateusz Kwasniewski
a6c7a5fc90
feat: increase latest events in personal dashboard (#8491) 2024-10-21 12:30:50 +02:00
Gastón Fournier
a9f9be1efa
chore: add a class to handle aggreggation queries (#8446)
## About the changes
We have many aggregation queries that run on a schedule:
f63496d47f/src/lib/metrics.ts (L714-L719)

These staticCounters are usually doing db query aggregations that
traverse tables and we run all of them in parallel:
f63496d47f/src/lib/metrics.ts (L410-L412)

This can add strain to the db. This PR suggests a way of handling these
queries in a more structured way, allowing us to run them sequentially
(therefore spreading the load):
f02fe87835/src/lib/metrics-gauge.ts (L38-L40)

As an additional benefit, we get both the gauge definition and the
queries in a single place:
f02fe87835/src/lib/metrics.ts (L131-L141)

This PR only tackles 1 metric, and it only focuses on gauges to gather
initial feedback. The plan is to migrate these metrics and eventually
incorporate more types (e.g. counters)

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2024-10-18 11:11:22 +02:00
David Leek
d9646edcfc
feat: release plans nav menu item and icon suggestion (#8469) 2024-10-18 08:23:52 +02:00
Nuno Góis
3f8d4c3538
chore: update schemas related to Unleash AI chat (#8463)
https://linear.app/unleash/issue/2-2779/store-conversations-in-the-database

Updates schemas related to Unleash AI chat and renames the `chat` column
to `messages` to ensure everything aligns nicely.
2024-10-16 14:44:37 +01:00
Melinda Fekete
c580e762b3
Restructure features documentation (#8394) 2024-10-16 13:59:30 +02:00
David Leek
bb800e3537
fix: group and user has at least 1 project owner counter respects multirole project groups (#8453) 2024-10-16 12:47:00 +02:00
Nuno Góis
b9ea6641ff
chore: AI chats db migration (#8460)
https://linear.app/unleash/issue/2-2845/db-migration-ai-chats

Adds a new DB migration for creating a new `ai_chats` table, used on the
Unleash AI experiment.
2024-10-16 10:43:52 +01:00
gitar-bot[bot]
6d2b882eb8
[Gitar] Cleaning up stale flag: stripHeadersOnAPI with value true (#8457)
[![Gitar](https://raw.githubusercontent.com/gitarcode/.github/main/assets/gitar-banner.svg)](https://gitar.co)
  
  ---
This automated PR was generated by [Gitar](https://gitar.co). View
[docs](https://gitar.co/docs).

Co-authored-by: Gitar <noreply@gitar.co>
2024-10-16 09:30:32 +02:00
David Leek
2cac903068
chore: releasePlans feature flag (#8458)
Adds the releasePlans feature flag
2024-10-16 09:00:58 +02:00
Gastón Fournier
7fb9308b3e
feat: ability to configure when users are considered inactive (#8454)
Give the ability to change when users are considered inactive via an
environment variable `USER_INACTIVITY_THRESHOLD_IN_DAYS` or
configuration option: `userInactivityThresholdInDays`. Default remains
180 days
2024-10-15 16:34:04 +02:00
Gastón Fournier
07469a427c
fix: same site api call with session cookie (#8435)
## About the changes
This fixes #8029. How to reproduce the issue is in the ticket.

The issue happens because when a web app is hosted in the same domain as
Unleash UI and the web app uses unleash SDK to make requests to Unleash,
the browser automatically includes the cookie in the request headers,
because:

- The request URL matches the cookie's Path attribute (which it does in
this case).
- The request is sent to the same domain (which it is, since both apps
are under the same domain).

And this is by design in the HTTP cookie specification:
https://datatracker.ietf.org/doc/html/rfc6265

This PR avoids overriding the API user with the session user if there's
already an API user in the request. It's an alternative to
https://github.com/Unleash/unleash/pull/8434

Closes #8029
2024-10-15 13:16:16 +02:00
Gastón Fournier
e22f6a04ba
chore: wrapTimer function types (#8428)
This gives us better types for our wrapTimer function.

Maybe the type `(args: any) => any` could also be improved

---------

Co-authored-by: Nuno Góis <nuno@getunleash.io>
2024-10-15 11:18:22 +02:00
Jaanus Sellin
39fb1b5db5
fix: archived flags without metrics do not count towards onboarding (#8443) 2024-10-14 14:09:57 +03:00
Jaanus Sellin
735e6f0b23
feat: now you can add env type to env order (#8442) 2024-10-14 13:26:38 +03:00
gitar-bot[bot]
d8ddb57818
chore: improve addon metrics usage 2024-10-14 09:20:27 +02:00
Jaanus Sellin
e72aa2871e
feat: order environment plausible events (#8427) 2024-10-11 11:05:33 +03:00
David Leek
24b9e4987b
chore:origin middleware flag cleanup (#8402) 2024-10-10 14:26:35 +02:00
Jaanus Sellin
3427fd745c
chore: debug lifecycle only when have new stages (#8418) 2024-10-10 14:28:11 +03:00
David Leek
b1cdde0c6b
chore: flag for webhook domain logging (#8413) 2024-10-10 13:23:52 +02:00
Nuno Góis
f78ce12860
chore: add unleashAI chat schemas (#8405)
https://linear.app/unleash/issue/2-2788/add-unleash-ai-chat-openapi-schemas

Adds OpenAPI schemas for the Unleash AI chat and respective messages.
2024-10-10 09:43:28 +01:00
Nuno Góis
d00873c357
chore: add OpenAI API key configuration (#8400)
https://linear.app/unleash/issue/2-2787/add-openai-api-key-to-our-configuration

Adds the OpenAI API key to our configuration and exposes a new
`unleashAIAvailable` boolean in our UI config to let our frontend know
that we have configured this. This can be used together with our flag to
decide whether we should enable our experiment for our users.
2024-10-10 09:43:14 +01:00
Jaanus Sellin
3a2206d228
feat: order environments service implementation (#8415)
This can be consumed in enterprise repo.
2024-10-10 11:33:21 +03:00
Nuno Góis
d032a91494
chore: add unleashAI feature flag (#8399)
https://linear.app/unleash/issue/2-2773/add-unleashai-feature-flag

Adds the `unleashAI` feature flag, the first step in the Unleash AI
experiment.
2024-10-09 14:10:58 +01:00
Jaanus Sellin
ca831f79e5
feat: order additional environments email templates (#8401)
Most of the HTML/styles retaken from existing templates.


![image](https://github.com/user-attachments/assets/5244c8d2-fe80-474a-9e65-a0f5ae4d44c2)
2024-10-09 15:15:27 +03:00
Thomas Heartman
f23ba70bb4
feat: add timestamps to project events (#8389)
This PR adds timestamps to project events and displays them in the
"latest events" box in the project details view.

It also changes the font weight of events to be only normal.


![image](https://github.com/user-attachments/assets/69ee4052-fe96-4fc9-ae45-0818acb0570a)
2024-10-09 09:32:58 +02:00
Gastón Fournier
cf5e492dab
chore: add timers to count queries (#8393)
## About the changes
These might be some heavy queries, adding timers to them to validate
that assumption and get some insights
2024-10-08 15:41:00 +02:00
Jaanus Sellin
8f4454039a
feat: start capturing onboarded status also from register endpoint (#8386)
1. Remove all customer intervals
2. Start capturing onboarded status also from register endpoint
2024-10-08 12:40:33 +03:00
Jaanus Sellin
93883b3767
chore: update debugging lifecycle format (#8371) 2024-10-07 14:54:53 +03:00
Christopher Kolstad
942555b993
fix: use ip-address for remote-strategy (#8380)
Removed direct dependency on ip in favor of maintained `ip-address`.

Copied from unleash-client-node.
2024-10-07 13:51:03 +02:00
Thomas Heartman
2905b560bd
fix: no owners listed in personal dashboard for default project (#8373)
This PR fixes a bug where the default project would have no listed
owners. The issue was that the default project has no user owners by
default, so we didn't get a result back when looking for user owners.
Now we check whether we have any owners for that project, and if we
don't, then we return the system user as an owner instead.

This also fixes an issue for the default project where you have no roles
(because by default, you don't) by updating the schema to allow an empty
list.
2024-10-07 10:52:11 +02:00
Thomas Heartman
2ac9c701c3
fix: return 404 if the project doesn't exist (#8362)
This change adds a check for whether the project exists in the
database before trying to fetch data for it. If it doesn't exist,
you'll get a 404.
2024-10-04 15:43:02 +02:00
Jaanus Sellin
1875c9b6d1
feat: add flag to purchase additional environments (#8366) 2024-10-04 15:07:14 +03:00
Thomas Heartman
89b619deba
openapi: small adjustments to dashboard schemas (#8363)
This PR contains a number of small updates to the dashboard schemas,
including rewording descriptions, changing numbers to integers, setting
minimum values.
2024-10-04 12:52:14 +02:00
Jaanus Sellin
e8e005daa4
feat: archived features will be included in onboarding (#8350)
Now when you are finished onboarding and you archive feature, you will
not restart onboarding.
2024-10-03 13:01:45 +03:00