diff --git a/README.md b/README.md index 85945beb9c4..6e2b20178cd 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ With Insomnia you can: And a lot more! The following storage options are supported for your projects, collections, specs and all other files: - **Local Vault**: for local storage of collections, design specs and every other resource. -- **Cloud Sync**: for cloud collaboration, end-to-end encrypted (E2EE) and free. +- **Cloud Sync**: for cloud collaboration, encrypted and free. - **Git Sync**: for Git storage of all files using any 3rd party Git repository. ![Insomnia API Client](https://raw.githubusercontent.com/Kong/insomnia/develop/screenshots/main.png) diff --git a/packages/insomnia/src/sync/vcs/vcs.ts b/packages/insomnia/src/sync/vcs/vcs.ts index 94c04538837..f774a4da5f3 100644 --- a/packages/insomnia/src/sync/vcs/vcs.ts +++ b/packages/insomnia/src/sync/vcs/vcs.ts @@ -1188,7 +1188,6 @@ export class VCS { }> { console.log('[sync] Fetching team member keys', { teamId, - sessionId: session.getCurrentSessionId(), }); const { teamMemberKeys } = await this._runGraphQL( diff --git a/packages/insomnia/src/ui/components/avatar.tsx b/packages/insomnia/src/ui/components/avatar.tsx index 22c688184c8..259acc955be 100644 --- a/packages/insomnia/src/ui/components/avatar.tsx +++ b/packages/insomnia/src/ui/components/avatar.tsx @@ -68,7 +68,7 @@ const AvatarImage = ({ src, alt, size }: { src: string; alt: string; size: 'smal src={src} width={size === 'small' ? 20 : 24} height={size === 'small' ? 20 : 24} - className={'border-2 border-solid border-[--color-bg] box-border outline-none rounded-full object-cover object-center bg-cover bg-center'} + className={'border-2 bounce-in border-solid border-[--color-bg] box-border outline-none rounded-full object-cover object-center bg-cover bg-center'} /> ); }; diff --git a/packages/insomnia/src/ui/components/dropdowns/project-dropdown.tsx b/packages/insomnia/src/ui/components/dropdowns/project-dropdown.tsx index 2dc5a371605..a003e6271c1 100644 --- a/packages/insomnia/src/ui/components/dropdowns/project-dropdown.tsx +++ b/packages/insomnia/src/ui/components/dropdowns/project-dropdown.tsx @@ -200,10 +200,12 @@ export const ProjectDropdown: FC = ({ project, organizationId }) => { value="remote" className="data-[selected]:border-[--color-surprise] flex-1 data-[selected]:ring-2 data-[selected]:ring-[--color-surprise] hover:bg-[--hl-xs] focus:bg-[--hl-sm] border border-solid border-[--hl-md] rounded p-4 focus:outline-none transition-colors" > - - Secure Cloud +
+ + Secure Cloud +

- End-to-end encrypted (E2EE) and synced securely to the cloud, ideal for collaboration. + Encrypted and synced securely to the cloud, ideal for out of the box collaboration.

= ({ project, organizationId }) => { value="local" className="data-[selected]:border-[--color-surprise] flex-1 data-[disabled]:opacity-25 data-[selected]:ring-2 data-[selected]:ring-[--color-surprise] hover:bg-[--hl-xs] focus:bg-[--hl-sm] border border-solid border-[--hl-md] rounded p-4 focus:outline-none transition-colors" > - - Local Vault +
+ + Local Vault +

Stored locally only with no cloud. Ideal when collaboration is not needed.

@@ -246,10 +250,10 @@ export const ProjectDropdown: FC = ({ project, organizationId }) => {

- We will be synchronizing your local project to Insomnia's Cloud in a secure end-to-end encrypted format (E2EE) which will enable cloud collaboration. + We will be synchronizing your local project to Insomnia's Cloud in a secure encrypted format which will enable cloud collaboration.

    -
  • Your data in the cloud is end-to-end encrypted (E2EE) and secure.
  • +
  • Your data in the cloud is encrypted and secure.
  • You can now collaborate with any amount of users and use cloud features.
  • Your project will be always available on any client after logging in.
diff --git a/packages/insomnia/src/ui/components/modals/workspace-settings-modal.tsx b/packages/insomnia/src/ui/components/modals/workspace-settings-modal.tsx index 74b7ccbfcf3..0f3298bbea9 100644 --- a/packages/insomnia/src/ui/components/modals/workspace-settings-modal.tsx +++ b/packages/insomnia/src/ui/components/modals/workspace-settings-modal.tsx @@ -129,7 +129,7 @@ export const WorkspaceSettingsModal = ({ workspace, mockServer, onClose }: Props Cloud Mock

- The mock server runs on Insomnia cloud. Ideal for collaboration. + The mock server runs on Insomnia cloud. ideal for out of the box collaboration.

= ({ children }) }, [organizationId, remoteId, userSession.id, workspaceId]); useEffect(() => { - const sessionId = getCurrentSessionId(); + const sessionId = userSession.id; if (sessionId && remoteId) { try { const source = new EventSource(`insomnia-event-source://v1/teams/${sanitizeTeamId(organizationId)}/streams?sessionId=${sessionId}`); @@ -176,7 +175,7 @@ export const InsomniaEventStreamProvider: FC = ({ children }) } } return; - }, [organizationId, projectId, remoteId, revalidate, syncDataFetcher, syncOrganizationsFetcher, syncProjectsFetcher, workspaceId]); + }, [organizationId, projectId, remoteId, revalidate, syncDataFetcher, syncOrganizationsFetcher, syncProjectsFetcher, userSession.id, workspaceId]); return ( {

- With Insomnia you can choose where to store your projects: locally with Local Vault, in the cloud with Cloud Sync (with E2EE, end-to-end encryption) or in a Git repository (Git Sync). Even with an account, your data is stored based on your settings. + With Insomnia you can choose where to store your projects: locally with Local Vault, in the cloud with Cloud Sync or in a Git repository (Git Sync). Even with an account, your data is stored based on your settings.

You can get started with an account which gives you access to the best Insomnia experience (recommended): diff --git a/packages/insomnia/src/ui/routes/onboarding.migrate.tsx b/packages/insomnia/src/ui/routes/onboarding.migrate.tsx index 44bb68f5dc9..d8468131238 100644 --- a/packages/insomnia/src/ui/routes/onboarding.migrate.tsx +++ b/packages/insomnia/src/ui/routes/onboarding.migrate.tsx @@ -52,7 +52,7 @@ export const Migrate = () => {

Collaboration with Cloud Sync now available

- Cloud Sync - which used to be a premium feature - is now available on every plan including the Free plan. With Cloud Sync your projects will be automatically synchronized to the cloud in an end-to-end encrypted way (E2EE) and available on every Insomnia client after logging in. + With Cloud Sync your projects will be automatically synchronized to the cloud in an encrypted way and available on every Insomnia client after logging in for ease of use and collaboration.

@@ -63,20 +63,25 @@ export const Migrate = () => { value="local" className="data-[selected]:border-[--color-surprise] flex-1 data-[disabled]:opacity-25 data-[selected]:ring-2 data-[selected]:ring-[--color-surprise] hover:bg-[--hl-xs] focus:bg-[--hl-sm] border border-solid border-[--hl-md] rounded p-4 focus:outline-none transition-colors" > - - Keep storing locally in Local Vault +
+ + Store in Local Vault +

- Stored locally only with no cloud. Ideal when collaboration is not needed. + Stored locally only, with no cloud. Ideal when collaboration is not needed.

+
+ - Enable Cloud Sync in Secure Cloud + Enable Cloud Sync +

- End-to-end encrypted (E2EE) and synced securely to the cloud, ideal for collaboration. + Encrypted and synced securely to the cloud, ideal for out of the box collaboration.

diff --git a/packages/insomnia/src/ui/routes/onboarding.tsx b/packages/insomnia/src/ui/routes/onboarding.tsx index b9b97634490..70ccb9af25e 100644 --- a/packages/insomnia/src/ui/routes/onboarding.tsx +++ b/packages/insomnia/src/ui/routes/onboarding.tsx @@ -1,91 +1,71 @@ +import { IconName } from '@fortawesome/fontawesome-svg-core'; import React from 'react'; import { Link, Route, Routes, useLocation } from 'react-router-dom'; import { InsomniaLogo } from '../components/insomnia-icon'; import { TrailLinesContainer } from '../components/trail-lines-container'; -import collaborators_rbac from '../images/onboarding/collaborators_rbac.png'; -import insomnia_ai from '../images/onboarding/insomnia_ai.png'; -import introducing_organizations from '../images/onboarding/introducing_organizations.png'; -import new_cloud_dashboard from '../images/onboarding/new_cloud_dashboard.png'; -import real_time_collaboration from '../images/onboarding/real_time_collaboration.png'; -import sharing_projects from '../images/onboarding/sharing_projects.png'; -import social_and_enterprise_sso from '../images/onboarding/social_and_enterprise_sso.png'; -import sse_api_support from '../images/onboarding/sse_api_support.png'; -import unlimited_projects from '../images/onboarding/unlimited_projects.png'; +import auto_pull from '../images/onboarding/auto_pull.png'; +import diff_view from '../images/onboarding/diff_view.png'; +import global_search from '../images/onboarding/global_search.png'; +import mocks from '../images/onboarding/mocks.png'; +import prerequest_scripts from '../images/onboarding/prerequest_scripts.png'; +import storage_options from '../images/onboarding/storage_options.png'; const features = [ { - id: 'sharing_projects', - icon: 'code-fork', - title: 'Sharing Projects', + id: 'prerequest_scripts', + icon: 'code', + title: 'Pre-request scripting', description: - 'We have entirely reinvented sharing and collaboration in Insomnia. It is now easy and quick to invite as many collaborators as we want to join our projects, collections or design documents.', - image: sharing_projects, + 'Insomnia finally ships with pre-request scripting for more complex flows, including Postman compatibility so it\'s easier to migrate your collections to Insomnia.', + image: prerequest_scripts, }, { - id: 'real_time_collaboration', - icon: 'users', - title: 'Real time collaboration', + id: 'api_mocking', + icon: 'clone', + title: 'Native API mocking', description: - 'With the new real time collaboration features, you can be more productive, reduce team coordination and always know in real time who is working with you on the same collections or design documents.', - image: real_time_collaboration, + 'In addition to collections, design documents and tests you can now also create API mocks to accelerate development and simulate APIs.', + image: mocks, }, { - id: 'introducing_organizations', - icon: 'city', - title: 'Introducing Organizations', + id: 'storage_control', + icon: 'database', + title: 'Storage control', description: - 'Teams have been replaced with Organizations, you can now create as many as you need and invite people to collaborate with them.', - image: introducing_organizations, + 'With this enterprise capabillity you can mandate that data in an organization is stored only locally, on Git or in the cloud for every collaborator.', + image: storage_options, }, { - id: 'social_and_enterprise_sso', - icon: 'user-circle', - title: 'Social and Enterprise SSO', - description: `Organizations now support EE SSO via SAML and OIDC, while other accounts can login via social SSO providers like Google or GitHub, - in addition to the traditional email login.`, - image: social_and_enterprise_sso, + id: 'diff_editor', + icon: 'file-invoice', + title: 'New diff editor', + description: 'When synchronizing your data on Git or in the Cloud, it\'s now very easy to understand all the updates before pushing them.', + image: diff_view, }, { - id: 'sse_api_support', - icon: 'plug', - title: 'Server Side Events API Support', + id: 'global_search', + icon: 'search', + title: 'Global search', description: - 'Server Side Events APIs are now supported to give you even more ways to debug APIs with Insomnia, in addition to the previously supported REST, GraphQL, gRPC and WebSockets.', - image: sse_api_support, + 'You can now search for documents an collections across one or more organizations from one place, simply by using the new global search.', + image: global_search, }, { - id: 'insomnia_ai', - icon: 'robot', - title: 'Insomnia AI', + id: 'auto_pull', + icon: 'download', + title: 'Auto-pulling of files', description: - 'With Insomnia Al you can auto-generate API tests based on an OpenAPI specification that you create. Build more reliable APIs and save on development time.', - image: insomnia_ai, + 'To simplify collaboration in Insomnia, we are introducing auto-pulling of files in the dashboard without having to explicitly pull each file.', + image: auto_pull, }, - { - id: 'new_cloud_dashboard', - icon: 'cloud', - title: 'New cloud dashboard', - description: 'With an entirely redesigned cloud platform and dashboard at insomnia.rest managing all of your organizations and collaborators is a piece of cake.', - image: new_cloud_dashboard, - }, - { - id: 'collaborators_rbac', - icon: 'user-friends', - title: 'Collaborators RBAC', - description: - 'Inviting users to your personal workspace or organization just got more powerful and intuitive with powerful RBAC rules to determine the level of access.', - image: collaborators_rbac, - }, - { - id: 'unlimited_projects', - icon: 'infinity', - title: 'Unlimited Projects', - description: - 'We removed all limitations to the Insomnia application, you can now create as many projects as you want, with as many files as you want.', - image: unlimited_projects, - }, -]; +] satisfies { + id: string; + icon: IconName; + title: string; + description: string; + image: string; +}[]; const FeatureWizardView = () => { return ( @@ -93,15 +73,15 @@ const FeatureWizardView = () => { +
    {features.map(feature => (
  • - - {feature.title} + + {feature.title}
  • ))} @@ -173,20 +153,19 @@ const Onboarding = () => { return (
    -
    -
    +
    +
    -
    +

    - 🚀 Welcome to Insomnia 8! + 🚀 Welcome to Insomnia 9!

    - This new version is the biggest one ever! Notable features - are: + We shipped hundreds of improvements including the following notable features:

    -
    +
    @@ -202,9 +181,9 @@ const Onboarding = () => { )} window.localStorage.setItem('hasSeenOnboarding', 'true')} + className="hover:no-underline bg-[--color-surprise] text-sm hover:bg-opacity-90 border border-solid border-[--hl-md] py-2 px-3 text-[--color-font-surprise] transition-colors rounded-sm" + to={window.localStorage.getItem('prefers-project-type') ? '/organization' : '/onboarding/migrate'} + onClick={() => window.localStorage.setItem('hasSeenOnboardingV9', 'true')} > Continue diff --git a/packages/insomnia/src/ui/routes/project.tsx b/packages/insomnia/src/ui/routes/project.tsx index a2a3e34cbee..b22b38d731c 100644 --- a/packages/insomnia/src/ui/routes/project.tsx +++ b/packages/insomnia/src/ui/routes/project.tsx @@ -291,7 +291,6 @@ export interface ProjectLoaderData { documentsCount: number; collectionsCount: number; mockServersCount: number; - unsyncedCount: number; projectsCount: number; activeProject: Project; projects: Project[]; @@ -519,9 +518,6 @@ export const loader: LoaderFunction = async ({ mockServersCount: files.filter( file => file.scope === 'mock-server' ).length, - unsyncedCount: files.filter( - file => file.scope === 'unsynced' - ).length, }; }; @@ -535,7 +531,6 @@ const ProjectRoute: FC = () => { mockServersCount, documentsCount, projectsCount, - unsyncedCount, learningFeature, } = useLoaderData() as ProjectLoaderData; const [isLearningFeatureDismissed, setIsLearningFeatureDismissed] = useLocalStorage('learning-feature-dismissed', ''); @@ -846,11 +841,6 @@ const ProjectRoute: FC = () => { run: createNewMockServer, }, }, - { - id: 'unsynced', - label: `Unsynced (${unsyncedCount})`, - icon: 'cloud-download', - }, ]; return ( @@ -988,18 +978,22 @@ const ProjectRoute: FC = () => { value="remote" className="flex-1 data-[selected]:border-[--color-surprise] data-[selected]:ring-2 data-[selected]:ring-[--color-surprise] hover:bg-[--hl-xs] focus:bg-[--hl-sm] border border-solid border-[--hl-md] rounded p-4 focus:outline-none transition-colors" > - - Secure Cloud +
    + + Secure Cloud +

    - End-to-end encrypted (E2EE) and synced securely to the cloud, ideal for collaboration. + Encrypted and synced securely to the cloud, ideal for out of the box collaboration.

    - - Local Vault +
    + + Local Vault +

    Stored locally only with no cloud. Ideal when collaboration is not needed.