Releases: FlowFuse/flowfuse
Releases · FlowFuse/flowfuse
v2.3.0
What's Changed
- Link to ebook and blog post by @ZJvandeWeg in #3697
- Bump @sentry/node from 7.81.0 to 7.109.0 by @dependabot in #3664
- Update instance-settings.md by @sumitshinde-84 in #3699
- Bump eslint from 8.56.0 to 8.57.0 by @dependabot in #3701
- Update branch-deploy.yaml to use custom broker domain by @ppawlowski in #3674
- Add explicit relationship tests prior to adding MSSQL support by @Steve-Mcl in #3700
- Bump @immobiliarelabs/fastify-sentry from 8.0.0 to 8.0.1 by @dependabot in #3704
- Bump mqtt from 5.3.5 to 5.5.0 by @dependabot in #3703
- Bump pg from 8.11.3 to 8.11.5 by @dependabot in #3705
- Bump @fastify/swagger-ui from 2.1.0 to 3.0.0 by @dependabot in #3702
- Bump tar from 6.1.15 to 6.2.1 by @dependabot in #3708
- docs: Minor typo and language updates by @sumitshinde-84 in #3707
- Update concepts.md by @sumitshinde-84 in #3706
- fix: Update forge domain to use HTTPS by @ppawlowski in #3710
- Allow .npmrc and calalogue urls to be set for Application bound devices by @hardillb in #3643
- Release 2.3.0 by @hardillb in #3711
Full Changelog: v2.2.2...v2.3.0
v2.2.2
What's Changed
- Verify snapshot ownership on api by @knolleary in #3608
- Disable "add device" when at limit by @Steve-Mcl in #3606
- Fix gtag handling by @knolleary in #3615
- Ensure device group data loaded on direct navigation by @knolleary in #3614
- Clear Device Group when device owner is changed by @Steve-Mcl in #3616
- ci: Add initial FlowFuse platform setup when deployed from feature branch by @ppawlowski in #3602
- Bump webpack-dev-middleware from 5.3.3 to 5.3.4 by @dependabot in #3618
- Bump sequelize from 6.35.2 to 6.37.1 by @dependabot in #3634
- Bump nodemailer from 6.9.9 to 6.9.13 by @dependabot in #3638
- Bump dotenv from 16.4.1 to 16.4.5 by @dependabot in #3640
- Bump webpack from 5.89.0 to 5.91.0 by @dependabot in #3637
- Bump @vitejs/plugin-vue from 5.0.3 to 5.0.4 by @dependabot in #3639
- Bump sass-loader from 13.3.2 to 14.1.1 by @dependabot in #3636
- Bump @vitest/coverage-istanbul from 1.2.1 to 1.4.0 by @dependabot in #3635
- Ensure popover is above other elements by @Steve-Mcl in #3633
- Bump express from 4.18.2 to 4.19.2 by @dependabot in #3641
- Update persistent-context.md by @ZJvandeWeg in #3651
- Show dashboard link on instances when dashboard-2 is installed by @Steve-Mcl in #3652
- Signup form validation improvements by @Steve-Mcl in #3601
- Implement blueprint availability to team type option by @Steve-Mcl in #3645
- Add credentialSecret to snapshot model and update logic to use it by @knolleary in #3649
- Ensure polling for NR logs is stopped if page changed by @Steve-Mcl in #3667
- Bump random-words from 2.0.0 to 2.0.1 by @dependabot in #3663
- Bump @fastify/static from 7.0.1 to 7.0.2 by @dependabot in #3665
- Bump nodemon from 3.0.3 to 3.1.0 by @dependabot in #3662
- Ensure InstanceForm applies InstanceType availability for manual billing teams by @knolleary in #3676
- Add error handling and logging if device sends invalid response by @knolleary in #3677
- Make limits tougher on common auth routes by @knolleary in #3679
- Bump @babel/core from 7.23.7 to 7.24.3 by @dependabot in #3661
- Show Target Snapshots for Device Groups by @Steve-Mcl in #3680
- Update keycloak sso docs by @knolleary in #3684
- SSO docs update by @ZJvandeWeg in #3687
- Enable enterprise features on pre-staging environments by @ppawlowski in #3686
- Handle sessionless requests in deviceEditor routes by @knolleary in #3692
- Bump for 2.2.2 release by @hardillb in #3693
Full Changelog: v2.2.1...v2.2.2
v2.2.1
What's Changed
- Docs: Fix broken links in the Device registration docs by @joepavitt in #3579
- Only show http bearer when licensed by @hardillb in #3583
- Bump follow-redirects from 1.15.4 to 1.15.6 by @dependabot in #3587
- Ensure device agent gets feature flags by @Steve-Mcl in #3584
- Validate instance property on provisioning token api by @knolleary in #3589
- Allow for combined device/instance team limits by @knolleary in #3585
- Change type param to required while creating a team by @Jayanth-Parthsarathy in #3597
- Validate redirect_uri in oauth flow by @knolleary in #3600
- Bump eslint-plugin-n from 16.2.0 to 16.6.2 by @dependabot in #3593
- Bump @headlessui/vue from 1.7.16 to 1.7.19 by @dependabot in #3592
- Bump copy-webpack-plugin from 11.0.0 to 12.0.2 by @dependabot in #3594
- Add apiMaxLength & debugMaxLength settings by @hardillb in #3595
- Bump vue-router from 4.2.5 to 4.3.0 by @dependabot in #3557
- Bump vue from 3.4.5 to 3.4.21 by @dependabot in #3524
- Validate kb and km for
apiMaxLength
by @Steve-Mcl in #3603 - Bump for 2.2.1 release by @hardillb in #3604
New Contributors
- @Jayanth-Parthsarathy made their first contribution in #3597
Full Changelog: v2.2.0...v2.2.1
v2.2.0
What's Changed
- Add billing status check when creating device by @knolleary in #3527
- Bump @aws-sdk/client-ses from 3.511.0 to 3.523.0 by @dependabot in #3525
- Add docs on keycloak sso by @knolleary in #3530
- Update AWS setup documentation by @ppawlowski in #3536
- fix: allow mixed-case usernames in backend validation by @hardillb in #3537
- fix: Allow mixed case in username in admin create api by @knolleary in #3540
- Bump fastify from 4.25.2 to 4.26.2 by @dependabot in #3544
- Bump pino from 8.17.2 to 8.19.0 by @dependabot in #3543
- Bump @fastify/static from 6.12.0 to 7.0.1 by @dependabot in #3494
- Bump @fastify/csrf-protection from 6.3.0 to 6.4.1 by @dependabot in #3495
- Improve scalability of device editor by @knolleary in #3511
- Update device quick start by @Steve-Mcl in #3541
- Instance Protection by @hardillb in #3520
- Bump cypress from 13.6.1 to 13.6.6 by @dependabot in #3550
- Bump pino-pretty from 10.2.3 to 10.3.1 by @dependabot in #3551
- Bump html-webpack-plugin from 5.5.4 to 5.6.0 by @dependabot in #3552
- fix typo in introduction.md by @Steve-Mcl in #3558
- Support both snapshot schemas by @Steve-Mcl in #3542
- Bump eslint-plugin-import from 2.29.0 to 2.29.1 by @dependabot in #3554
- Add Bearer token support to FF Auth by @hardillb in #3535
- Adds validation on PipelineStage create api by @knolleary in #3556
- AWS Marketplace login as ubuntu by @hardillb in #3563
- Docs: Update the device registration documentation by @joepavitt in #3565
- Update licensing to combine device and instance limits by @knolleary in #3562
- Bump postcss from 8.4.33 to 8.4.35 by @dependabot in #3555
- Bump vitest from 1.1.0 to 1.3.1 by @dependabot in #3553
- Bump jsonata and @node-red/util by @dependabot in #3567
- Fix GA tracking on create account by @knolleary in #3568
- Update sign-up form to use submit event by @knolleary in #3569
- Fix CSP domains by @hardillb in #3571
- Add device actions by @Steve-Mcl in #3548
- HTTP Bearer Tokens test for correct flag by @hardillb in #3573
- Release 2.2.0 by @knolleary in #3576
Full Changelog: v2.1.1...v2.2.0
v2.1.1
What's Changed
- Fix link in k8s updgrade instructions by @hardillb in #3489
- Disable housekeeper in testing by @Pezmc in #3483
- Add timeout failure mode to Admin Settings access control by @hardillb in #3491
- Add the broker to the CSP allowed list by @hardillb in #3484
- docs: Kube stacks %s/flowforge/flowfuse/ by @ZJvandeWeg in #3386
- Update docker docs to new container names by @hardillb in #3492
- Update information about local PostgreSQL by @ppawlowski in #3493
- Add bug label to template by @MarianRaphael in #3502
- Bump ip from 2.0.0 to 2.0.1 by @dependabot in #3505
- fix device editor tunnel status indicator by @Steve-Mcl in #3504
- Fix NOT NULL constraint on
ProjectSnapshots.UserId
by @Steve-Mcl in #3503 - Improve logPassthrough documentation by @hardillb in #3506
- Bump sinon from 16.1.0 to 17.0.1 by @dependabot in #3497
- Enforce username rules on create by @hardillb in #3514
- Implement instance auto snapshots by @Steve-Mcl in #3507
- Installation Service by @MarianRaphael in #3521
- Set disableRequestedAuthnContext in SAML strategy by @knolleary in #3519
- Update for 2.1.1 release by @knolleary in #3523
Full Changelog: v2.1.0...v2.1.1
v2.1.0
What's Changed
- Update Digital-Ocean K8s install docs by @hardillb in #3359
- Allow telemetry ping to be disabled by tests by @knolleary in #3382
- Add SSO CTA to Team Settings page by @knolleary in #3380
- fix bash command formatting in Testing against PostgreSQL by @Steve-Mcl in #3390
- Update flowforge to flowfuse on /introduction by @Yndira-FlowForge in #3393
- DeviceEditor: clear request cache when reply handled by @knolleary in #3395
- Docs improvements for FlowFuse File Nodes by @MarianRaphael in #3396
- docs: Update branding and verbiage by @ZJvandeWeg in #3397
- Make refs to k8s-flowforge-kubeconfig.yaml consitent by @hardillb in #3387
- Quieten down
Device.Team
isnull
exceptions by @Steve-Mcl in #3356 - Bump @babel/preset-env from 7.23.3 to 7.23.9 by @dependabot in #3404
- Bump sqlite3 from 5.1.6 to 5.1.7 by @dependabot in #3403
- Bump @sentry/webpack-plugin from 2.10.2 to 2.10.3 by @dependabot in #3402
- Bump css-loader from 6.9.0 to 6.9.1 by @dependabot in #3401
- Bump marked from 10.0.0 to 11.2.0 by @dependabot in #3405
- Add
email
to list of valid arguments for create use by @hardillb in #3406 - Handle null status events from devices by @knolleary in #3409
- Ensure platform has a unqiue mqtt client id by @knolleary in #3417
- Move oauth session state to the database by @knolleary in #3418
- Limit referers to just origin for cross origin by @hardillb in #3399
- fix seo docs links by @MarianRaphael in #3420
- Update community forum by @MarianRaphael in #3422
- Request a Trial Enterprise License by @MarianRaphael in #3424
- Offer link to trial license as part of Setup by @hardillb in #3428
- SEO docs fix by @MarianRaphael in #3432
- Remove setup wizard telemetry screen by @hardillb in #3429
- Add support for Quick Connect device to the core by @Steve-Mcl in #3388
- Document AWS SES configuration by @hardillb in #3431
- Bump nodemailer from 6.9.8 to 6.9.9 by @dependabot in #3438
- Fix Formatting of Copy/Paste of NR Logs by @sumitshinde-84 in #3087
- Identify user to hubspot api if tracking enabled by @knolleary in #3411
- Fix copy/paste formatting of device logs by @knolleary in #3440
- Remove blueprints from instance duplication by @hardillb in #3446
- Bump @aws-sdk/client-ses from 3.421.0 to 3.504.0 by @dependabot in #3453
- Allow admin read-only access to instances by @knolleary in #3452
- Bump css-loader from 6.9.1 to 6.10.0 by @dependabot in #3449
- Bump mini-css-extract-plugin from 2.7.6 to 2.8.0 by @dependabot in #3451
- Bump dotenv from 16.3.1 to 16.4.1 by @dependabot in #3450
- feat: enable custom password and generate access token during initialization for ff-admin by @AllanOricil in #2996
- Replace helm upgrade instructions with link to Helm documentation by @ppawlowski in #3435
- Update documentation of database configuration when installing with Helm Chart by @ppawlowski in #3385
- Device agent instance node-red audit logs by @Steve-Mcl in #3447
- Make device log streaming scale across multiple forge apps by @hardillb in #3419
- Enforce Username constraint in both front and backend by @hardillb in #3459
- Home Screen Improvements: Add devices, activity log, and application summary by @Pezmc in #3427
- Generate database structure via migration by @knolleary in #3436
- Home Screen: Follow up, device audit log entry by @Pezmc in #3462
- Add license to configuration documentation by @hardillb in #3460
- Validate projectType param on stacks api by @knolleary in #3464
- Improve performance of Audit Log entry page by @Pezmc in #3465
- Bump mqtt from 5.3.4 to 5.3.5 by @dependabot in #3472
- Bump mocha from 10.2.0 to 10.3.0 by @dependabot in #3468
- Bump @fastify/cookie from 9.2.0 to 9.3.1 by @dependabot in #3471
- Bump @aws-sdk/client-ses from 3.504.0 to 3.511.0 by @dependabot in #3469
- Use icons for the application summary by @Pezmc in #3467
- Ensure Admin Settings page only shown to Admin users by @hardillb in #3478
- Add Google analytics support by @hardillb in #3479
- Bump marked from 11.2.0 to 12.0.0 by @dependabot in #3470
- Implement device auto snapshot by @Steve-Mcl in #3481
- Release 2.1.0 by @hardillb in #3485
New Contributors
- @AllanOricil made their first contribution in #2996
Full Changelog: v2.0.1...v2.1.0
v2.0.1
What's Changed
- Adjust kebab menu x/y if out of viewport when rendered by @Steve-Mcl in #3354
- add missing or by @hardillb in #3361
- Bump @sentry/webpack-plugin from 2.10.1 to 2.10.2 by @dependabot in #3343
- Bump postcss from 8.4.32 to 8.4.33 by @dependabot in #3347
- Bump css-loader from 6.8.1 to 6.9.0 by @dependabot in #3346
- Bump vite from 5.0.10 to 5.0.12 by @dependabot in #3364
- Blueprints docs by @MarianRaphael in #3368
- Ensure that the project team is available by @hardillb in #3375
- Bump nodemon from 3.0.1 to 3.0.3 by @dependabot in #3369
- Bump nodemailer from 6.9.6 to 6.9.8 by @dependabot in #3371
- Bump @vitest/coverage-istanbul from 1.1.0 to 1.2.1 by @dependabot in #3372
- Bump style-loader from 3.3.3 to 3.3.4 by @dependabot in #3370
- Show application select dropdown in team -> device -> create dialog by @Steve-Mcl in #3363
- Bump @vitejs/plugin-vue from 5.0.2 to 5.0.3 by @dependabot in #3373
- Bump for version 2.0.1 by @hardillb in #3379
Full Changelog: v2.0.0...v2.0.1
v2.0.0
What's Changed
- Better defaults for Audit Log view by @Steve-Mcl in #3269
- Blueprint Admin: Fix form validation by @Pezmc in #3270
- Added tiers to templates by @MarianRaphael in #3272
- Update platform audit-log to provide correct set of event types to filter with by @knolleary in #3283
- Add primer on feature flags to contrib docs by @knolleary in #3271
- Bump @babel/core from 7.23.3 to 7.23.7 by @dependabot in #3281
- Bump eslint from 8.52.0 to 8.56.0 by @dependabot in #3274
- Flow Blueprints Admin: Fix inactive by @Pezmc in #3267
- Bump @fastify/rate-limit from 8.0.3 to 9.1.0 by @dependabot in #3282
- Bump vitest and @vitest/coverage-istanbul by @dependabot in #3273
- Bump tj-actions/changed-files from 40 to 41 in /.github/workflows by @dependabot in #3284
- Validate team id when deleting team invitation by @knolleary in #3289
- Fix subscription deletion when putting into unmanaged mode by @knolleary in #3286
- Bump vue from 3.3.6 to 3.4.3 by @dependabot in #3280
- Upgrade vue dependencies to latest minor versions by @Pezmc in #3288
- Revert "Revert redirects as it breaks TOC for some reason" by @knolleary in #3293
- Device audit log by @hardillb in #3296
- Add teamTrial, teamType, deviceLastSeen and deviceMode to stats end point by @knolleary in #3297
- Bump @fastify/static from 6.11.2 to 6.12.0 by @dependabot in #3301
- Bump axios from 1.6.0 to 1.6.5 by @dependabot in #3302
- Bump @fastify/swagger from 8.12.0 to 8.13.0 by @dependabot in #3303
- Add team invitations to dropdown by @Pezmc in #3304
- Sentry: Fix several small exceptions by @Pezmc in #3313
- Devices: Fleet Mode Label by @Pezmc in #3287
- Bump c8 from 8.0.1 to 9.0.0 by @dependabot in #3299
- Bump @immobiliarelabs/fastify-sentry from 7.1.1 to 8.0.0 by @dependabot in #3300
- Show better error when importing flows into instance by @hardillb in #3317
- Allow team membership to be managed by SAML Group assertion by @knolleary in #3291
- Ensure password reset tokens are cleared on use by @knolleary in #3321
- First pass at device & browser affinity by @hardillb in #3173
- Update team name in issue templates by @knolleary in #3325
- Sentry Config Tweaks by @Pezmc in #3320
- Improve docs around pipeline target types by @Steve-Mcl in #3318
- Tighten Auth & Email route rate limits by @hardillb in #3326
- Remove mixed used of callback and async in fastify plugins by @Pezmc in #3329
- Create Device Groups from the Pipeline Stage Form by @Pezmc in #3323
- Add CommandResponse pattern for handling scalable platform by @knolleary in #3331
- Be less specific if username or email is unavailable on registration by @knolleary in #3335
- Fix link to API docs to flowfuse.com by @hardillb in #3336
- Update title for dev agent intro page by @ZJvandeWeg in #3340
- Allow device to be add to platform regardless of agent version recorded in DB by @Steve-Mcl in #3334
- Improved handling of command/response pattern in scaled environment by @knolleary in #3342
- Do not allow password to be same as email/username by @knolleary in #3338
- Ensure swagger-ui baseDir is set to non-existent directory by @knolleary in #3322
- Bump sequelize from 6.35.1 to 6.35.2 by @dependabot in #3344
- Remove email from UserSummary view by @knolleary in #3348
- Change expireTokens task schedule by @knolleary in #3327
- Account for actions column in calculated colspan of data table by @Steve-Mcl in #3337
- Reimplement vue poll timers by @Steve-Mcl in #3351
- Update device on group membership change by @Steve-Mcl in #3330
- Use Alert.emit instead of $toast by @Steve-Mcl in #3352
- Update Min nodejs in localfs install/upgrade docs by @hardillb in #3319
- Describe local pgsql upgrade process by @ppawlowski in #3108
- Release 2.0.0 by @knolleary in #3353
Full Changelog: v1.15.0...v2.0.0
v1.15.0
What's Changed
- Update npm-publish action version to v2 by @ppawlowski in #3155
- Bump cypress from 13.2.0 to 13.6.0 by @dependabot in #3159
- Bump @fastify/cookie from 9.1.0 to 9.2.0 by @dependabot in #3162
- Bump mqtt from 5.3.0 to 5.3.1 by @dependabot in #3158
- Sentry: Add custom sampling rates for high volume routes by @Pezmc in #3163
- Bump sequelize from 6.35.0 to 6.35.1 by @dependabot in #3160
- Bump @vitejs/plugin-vue from 4.5.0 to 4.5.1 by @dependabot in #3161
- DevOps Pipeline: Block attempted deploys to devices in developer mode by @Pezmc in #3127
- Revert "Bump @vitejs/plugin-vue from 4.5.0 to 4.5.1" by @knolleary in #3169
- Move app.monitor to be a housekeeper task by @knolleary in #3167
- Sentry: Enable client reporting by @Pezmc in #3166
- Extend manual billing options to non-trial teams by @knolleary in #3170
- Fix team delete for unmanaged-billing team by @knolleary in #3181
- Improve handling of hanging plugin on startup by @knolleary in #3182
- Show current security setting against instance by @Pezmc in #3175
- Tidy up delete dialogs by @knolleary in #3185
- Only use node-red audit events to update local package list by @knolleary in #3189
- Improve session handling on password change by @knolleary in #3194
- Ensure password reset tokens cannot be reused by @knolleary in #3196
- Allow teams with empty Applications deletion by @hardillb in #3178
- Add possibility to deploy feature branch on a dedicated application instance by @ppawlowski in #3144
- FIX: run deployment from branch only once by @ppawlowski in #3207
- Bump @aws-sdk/credential-provider-node from 3.451.0 to 3.470.0 by @dependabot in #3200
- Increase plugin timeout to 20s to avoid failed startups by @knolleary in #3213
- Ensure editor sessions are revoked when logging out of the platform by @knolleary in #3214
- Allow expired billing teams to be deleted by @hardillb in #3187
- Enforce password quality rules by @hardillb in #3195
- Allow to deploy from all PRs by @ppawlowski in #3231
- Bump mqtt from 5.3.1 to 5.3.3 by @dependabot in #3227
- Flow Blueprints Selection UI by @Pezmc in #3180
- Bump html-webpack-plugin from 5.5.3 to 5.5.4 by @dependabot in #3228
- Bump fastify-metrics from 10.3.2 to 10.4.1 by @dependabot in #3201
- Bump eslint-plugin-vue from 9.17.0 to 9.19.2 by @dependabot in #3199
- Bump cypress from 13.6.0 to 13.6.1 by @dependabot in #3198
- Add 'ci/' to .npmignore by @ppawlowski in #3225
- Blueprint UI Follow ups by @Pezmc in #3234
- If empty deny list allow storing by @hardillb in #3232
- Add device group feature flag in TeamType by @knolleary in #3235
- Add missing audit logger for pipeline stage deploy by @Steve-Mcl in #3239
- Assign device group to pipeline stage by @Steve-Mcl in #3229
- Send alerts on Instance Crash by @hardillb in #3217
- Make link a button so it's obvious for change team type by @hardillb in #3233
- Implement Device Groups frontend by @Steve-Mcl in #3192
- Update instance settings docs for alerts by @MarianRaphael in #3244
- Make Security: Unknown show None (tweek to #3175) by @hardillb in #3240
- Ensure pipelines empty state has a feature unavailable message by @Steve-Mcl in #3242
- Update description of Disable Editor by @hardillb in #3245
- Add device group audit loggers by @Steve-Mcl in #3236
- Implement API for Device Groups by @Steve-Mcl in #3157
- Pictogram for Pipelines by @Pezmc in #3250
- Restore leaving developer mode warning dialog by @Steve-Mcl in #3251
- Move to @flowfuse/flowfuse npm package by @knolleary in #3190
- Fix missing instance properties by @Pezmc in #3255
- Add loading indicator to Pipelines.vue by @Steve-Mcl in #3257
- Device Groups: Disable rather than hide Device Group option by @Pezmc in #3249
- Release 1.15.0 by @knolleary in #3262
Full Changelog: v1.14.1...v1.15.0
v1.14.1
What's Changed
- Fix linux version of install instructions by @hardillb in #3129
- Notify developers on failed tests pipeline by @ppawlowski in #3122
- Add tunnel recreation unit test by @Steve-Mcl in #3126
- Fix blob and add more Hubspot domains by @hardillb in #3121
- Update container loading for new module scopes by @knolleary in #3141
- Allow a trial team to be put into unmanaged mode to bypass billing by @knolleary in #3138
- Bump @sentry/webpack-plugin from 2.10.0 to 2.10.1 by @dependabot in #3135
- Bump mqtt from 5.1.4 to 5.3.0 by @dependabot in #3134
- Bump marked from 9.1.5 to 10.0.0 by @dependabot in #3131
- Bump @babel/core from 7.23.2 to 7.23.3 by @dependabot in #3132
- Bump @vue/test-utils from 2.4.1 to 2.4.2 by @dependabot in #3133
- Update introduction.md by @zackwasli in #3019
- DevOps Pipeline: Clearer error messages by @Pezmc in #3118
- Add UI for pipeline update audit entry by @Steve-Mcl in #3124
- Add canonical link to current base_url by @hardillb in #3146
- docs: Where to find billing details by @ZJvandeWeg in #3149
- Coverage of creating and updating stages with devices by @Pezmc in #3143
- Fix width of setup fields by @hardillb in #3147
- Fix login failure for generated admin by @hardillb in #3153
- Update for v1.14.1 release by @hardillb in #3154
New Contributors
- @zackwasli made their first contribution in #3019
Full Changelog: v1.14.0...v1.14.1