Skip to content

Releases: SenseNet/sn-client

June 2020

05 Jun 12:08
Compare
Choose a tag to compare

Summertime, and the livin' is easy 😎☀️

The weather is getting warmer but hard work never stops. We are still working on making our product better and better. In the last 4 weeks we were working on performance optimization, layout standardization and revamp our example apps to be compatible with the new authentication.
So here are the changes what we made:

Admin-ui@1.8.0

  • We tried to reduce the numbers of requests, unnecessary ones have been removed and at the end we were able to halve the numbers ⭐#672

  • The command palette has changed a lot. Its new goal is to be a 'global search field' where you can search in all of the contents in the current repository easily. With the new solution it is faster 🚀 and smoother 💨 than ever before. Of course the main features of the old version are still working, like: using content queries, custom actions and help functions. #685

    Search

  • Layout standardization #669: Cause the visibility of the tree and the breadcrumb was a little bit confusing we wanted to unify them.
    In the Users and groups menu, if the "root" has not only users and children, but also container contents like folders, you can use the same tree for navigating as in the Content menu, a otherwise the tree does not appear.

    Tree

  • On the edit/browse form the icon in the title is now a link to the related CTD

    IconLink

@sensenet/redux@5.5.0 🆕

  • New method is available on stores created by createSensenetStore function: reloadRepository
    With this function you can change the current repository in store runtime. It would be useful after authentication 🛂, if you need a new repository instance. #686

@sensenet/redux-promise-middleware@2.2.0 🆕

  • New method has been created in the middleware as well: reset. We needed it cause of the change in @sensenet/redux package ☝️

Dear contributors!

We have a new ESLint rule for ordering imports #684
The order:

  • @sensenet/... packages
  • @material-ui/... packages
  • any other packages

You can find the release here

May 2020

07 May 07:55
Compare
Choose a tag to compare

Out with the old in with the new ⏩

Good bye @zoltanbedi, welcome new friend @taki9! In this release we did a bunch of breaking changes. We changed the authentication under sensenet to a new robust solution which is IdentityServer4. Because of this we are releasing a react component library for helping working with it. Check it out! We have also refactored our admin ui and example apps to use the new authentication method.

@sensenet/authentication-oidc-react@1.0.0 🆕

@sensenet/authentication-oidc-react is a react component library that uses React context api for authenticating with oidc client.
There are 2 components and 1 hook that you can use. AuthenticationProvider, OidcSecure, useOidcAuthentication.

Example

import { AuthenticationProvider, useOidcAuthentication, UserManagerSettings } from '@sensenet/authentication-oidc-react'
import { Repository } from '@sensenet/client-core'
import { RepositoryContext } from '@sensenet/hooks-react'
import React, { PropsWithChildren } from 'react'
import { BrowserRouter, useHistory } from 'react-router-dom'
export const repositoryUrl = 'https://my-service.sensenet.com/'
export const configuration: UserManagerSettings = {
  client_id: 'spa',
  automaticSilentRenew: true,
  redirect_uri: 'http://localhost:3000/authentication/callback',
  response_type: 'code',
  post_logout_redirect_uri: 'http://localhost:3000/',
  scope: 'openid profile sensenet',
  authority: 'https://is.my-service.sensenet.com/',
  silent_redirect_uri: 'http://localhost:3000/authentication/silent_callback',
  extraQueryParams: { snrepo: repositoryUrl },
}
export function AppProviders({ children }: PropsWithChildren<{}>) {
  return (
    <BrowserRouter>
      <AuthProvider>
        <RepositoryProvider>{children}</RepositoryProvider>
      </AuthProvider>
    </BrowserRouter>
  )
}
export const AuthProvider = ({ children }: PropsWithChildren<{}>) => {
  const history = useHistory()
  return (
    <AuthenticationProvider configuration={configuration} history={history}>
      {children}
    </AuthenticationProvider>
  )
}
export const RepositoryProvider = ({ children }: PropsWithChildren<{}>) => {
  const { oidcUser } = useOidcAuthentication()
  if (!oidcUser) {
    return <LoginForm />
  }
  return (
    <RepositoryContext.Provider value={new Repository({ repositoryUrl, token: oidcUser.access_token })}>
      {children}
    </RepositoryContext.Provider>
  )
}

@sensenet/client-core@3.0.0 👀

  • Changed RepositoryConfiguration from class to interface for better typing experience. It is not tightly coupled with GenericContent now.

  • ❗ sessionLifetime property is moved from repository configuration to JWTService

  • 🆕 token can be passed to the repository configuration. This will be sent with all requests as an Authorization header.

  • Breaking change: Functions belonging to allowed child types moved from the repository object to repository.allowedChildTypes as:

    • add
    • update
    • remove
    • get
    • getImplicit
    • getExplicit
    • getFromCTD
    • listEmpty
  • New methods available on the repository to manage document previews accessible by repository.preview object:

    • getPageCount
    • getExistingImages
    • available
    • regenerate
    • check
    • getComments
    • addComment
    • deleteComment
  • New methods to get metadata and the value of a property of a content on the repository:

    • getMetadata
    • getPropertyValue

Admin-ui@1.7.0

  • Route handling is reworked. From now on the app has user friendly URL paths.

  • Delete action added to the context menu for files. #633

  • Document viewer design improvements. #658

  • New delete, move and copy buttons added to the content list for batch operations. They're shown when multiple items are selected #631

  • Items on the content list are selected if left click on them once #637

  • Loader added to the copy and move dialogs during the actions are in progress. #639

  • Share, Restore and Preview actions are temporarily disabled until the related screens and logic are finished.

  • fix: Result from command palette's search dropdown and double-clicks on a folder in the result on the search page navigated the user to an empty page. The default value of a property had to be set. #646

  • fix: Content list table next to the loader was shown during data loading. #641

  • fix: date format was not consistent with the chosen language #659

You can find the release here

Work From Home 🏠

08 Apr 10:54
Compare
Choose a tag to compare

Because of the pandemic we are now working from home. This doesn't mean that the development is stopped. Here are the changes we made.

@sensenet/redux@5.3.0

  • Added some missing actions for
    • put
    • content creation with a content template
    • preview related actions
    • preview comments
    • allowedchildtypes
    • restore from trash
    • add/remove list fields

@sensenet/document-viewer-react@2.0.6

  • fix: adding comments returned error, because the x and y coordinates were floating numbers and the request body was not a valid json. These two params' type is changed to string. #617

sn-dms-demo@2.0.1

  • DMS demo is refactored to use create react app.

Admin-ui@1.6.0

  • Deleting the active item from tree now doesn't crash. #591
  • Fix double click on localization file and on users and groups #604
  • Changed our progress indicator to circle #609

Admin-ui full screen loader

  • 🆕 We restyled our forms #593

Admin-ui new form

2020-03

11 Mar 11:07
Compare
Choose a tag to compare

Probably one of the biggest sensenet updates of all time 💯

The last 4 weeks have been quite productive for the product development team's front-end division. We've managed to finish some long-term tasks taking huge steps towards providing future SNaaS customers a stable, performant and usable environment and a constantly evolving client library.

sn-client-core@2.4.0

  • share method is added to the repository. It can be used like in the following example:
repository.share({
  content //the content to be shared,
  identity //user or email address to share with
  sharingLevel // sharing level, Open or Edit
  sharingMode: // sharing mode, Private, Authenticated or Public
}
})
  • count method is also added to get only the count of children in a collection:
repository.count({ path: '/Root/Content' })

sn-controls-react@3.3.5

  • FIX: tagsinput fix in browse view.

sn-default-content-types@2.0.5

  • HandlerName is now added to types in default schema.

sn-listcontrols-react@1.4.0

  • Material-ui default Table component here is now change to VirtualizedTable making it more performant.

sn-redux@5.2.0

Some new actions are added related to the sharing feature:

  • getSharingEntries: returns sharing entries of a content,

  • share: redux actions for calling the above mentioned repository.share method,

  • removesharing: action for removing a sharing entry (unshare) from a content,

  • A new built-in reducer named sharing is added to contain sharing related things.

  • getSchema action is now returning the whole actual schema and its old functionality is moved to a new action named getSchemaByTypeName

Admin-ui@1.5.0

  • The whole admin-ui has undergone a global style refactor, generalization and theme pimp up. 🎉🎉
  • Based on the feedbacks that we are getting continuously we've made some desing changes in both dark and light themes to make the ui cleaner and more usable. 💅

Admin-ui design update

  • Upload is only seen and possible to choose from 'Add new' dropdown if there's possible to add Files (actually content types using the file handler and able to be uploaded).
  • The tree refactored, the basic material-ui Tree component is changed to VirtualizedTree that makes browsing the tree more seemless and it has also reduced the amount of downloaded data. 🎉🎉

DMS demo@2.0.0

  • DMS demo is now a simple example like the other ones (todo app, image gallery, etc), so it is moved to another url and also lost some of its funcionalities which were not really document management related.
  • The repository behind the dms demo is also changed to dev.demo.sensenet.com to unify the current example apps working with the same backend.
  • User management features (adding, removing users, group and role management) are removed from the DMS demo, along google authentication and the workspace favoriting and following features.
  • But the share functionality is now usable including the shared with me page listing the content shared with the current user.
  • Saved search functionality is fixed. 🔍
  • Trash page is added. 🚮

February 2020

12 Feb 10:38
Compare
Choose a tag to compare

💛💙Valentine's Day 2020💜💚

It is the time to love and be loved.
Here are the changes what we made last month. We hope that you will love them 💗👇
In this release we were about to optimize the admin-ui.

sn-redux

  • We have changed the type of persistedState (Initial state of the store) from DeepPartial<T> to PreloadedState<T>.

Admin-ui@1.4.3

  • We spent time on optimizing our frontend
    #550
    and we also tried to reduce the bundle size
    #554
    If you would like to read about the optimization process check our blogbost here

💕Happy Valentine's Day! 💕

Hotfix release 2020.1.1

28 Jan 08:49
Compare
Choose a tag to compare

In this release there are couple of api changes. We needed to refactor those code because the logic inside failed when function names were minified.

client-core

  • getSchema method from SchemaStore is removed. Use the getSchemaByName method instead. Be aware that this is case sensitive so "genericcontent" won't be equal to "GenericContent"
  • isContentFromType takes a contentTypeName(string) as a second parameter now instead of an T type. To get proper typing support use the generic type like this isContentFromType<Setting>(content, 'Setting')

client-utils

  • Trace - you have to provide a unique name in the trace options now. There is a new options called methodName.

control-mapper

  • setupFieldSettingDefault method now takes a string as first parameter instead of function. To get full typing support use it like this
controlMapper.setupFieldSettingDefault<ChoiceFieldSetting>('ChoiceFieldSetting', setting => {})

Be aware that this is case sensitive so choicefieldsetting won't be equal to ChoiceFieldSetting

January 2020

15 Jan 13:07
Compare
Choose a tag to compare

🎆🥂 Happy New Year 2020

We're kicking of the new year with some bug fixes and performance improvements for the Admin-ui.

Admin-ui@1.4.1

  • We moved the add button from the bottom right to the left side menu #520
  • Clicking the add button now opens a drop down instead of the bottom drawer #528

Add button and the new dropdown

  • The profile settings and logout moved to the header #526
  • You can now change the theme from the new profile menu. Also we changed the default theme to light 🤍 #525

User menu and the themeswitcher

  • We now bundle production code this is now means a decrease in the bundle size 📉 #532

Packages

@sensenet/client-core@2.2.6

  • There is a barrel file in every folder now so you can import RepositoryConfiguration like this
import { RepositoryConfiguration } from '@sensenet/client-core'

instead of this

import { RepositoryConfiguration } from '@sensenet/client-core/dist/Repository/RepositoryConfiguration'

@sensenet/client-utils@1.7.3

  • There is a new BrowserConsoleLogger that formats the messages in a way that all modern browsers understand

December 2019

11 Dec 10:12
Compare
Choose a tag to compare

🎄🎁 Christmas 2019 ⛄️❄️

In this release our sensenet logo has borrowed 🎅 Santa's hat to makes people happy.😊
We also would like to make you blissful so here are the changes we made 👇🏻

Admin-ui@1.4.0

  • New dialogs have been created for Contextmenu (Approve/Reject, Versions, Check In/Out, Delete)🆕 #379
  • The bug of upload the same file right after cancellation has been solved 🃏 #491
  • Versioninfo item has removed from the drawer ✂️ #425
  • Schema is now automatically updated on Save 🔄 #489

Packages

@sensenet/controls-react@3.3.2

  • Content name is 'undefined' in the notification after modification bug has been fixed 🎫 #450
  • The deafult text color for rich text editor has been changed to black in dark mode cause it was not visible on white background ⚫️⚪️ #490
  • Default user avatar from displayname has been created 👀 #497
  • Password field's value is now saved when a new user is created 🔒
  • Tagsinput query has been set with multiple allowed types ♦️
  • Creating a new content with a ContentTemplate is available from now 🏆

@sensenet/client-core@2.2.5

  • Error handling for Upload has been fixed ⏫ #449

@sensenet/pickers-react@1.2.8

  • Error handling for navigation in pickers has been fixed 🔖 #496

@sensenet/list-controls-react@1.3.15

  • Checkbox functions have been fixed 🔳 #500

@sensenet/hooks-react@1.0.4

  • useWopi hook is refactored to return two functions instead of values.🏄
    Example usage:
const { isWriteAvailable } = useWopi()
isWriteAvailable(content) && someFunction()

Hotfix for upload in admin ui

15 Nov 16:06
Compare
Choose a tag to compare

There was a critical bug in admin-ui that prevented the user from uploading.
This is fixed in this release. 🙇🏻‍♂️

November 2019

13 Nov 13:45
Compare
Choose a tag to compare

🎃 Hacktoberfest 2019 2/2 🎃

In this release there are some changes that coming from hacktoberfest contributors. Our readme is translated to Brazilian Portuguese, thanks to @Paulophmp and @thiagobfiorenza.

Admin-ui@1.3.0

  • In the setup view clicking on learn more now opens a new browser tab #426
  • 🐛 Cannot save a query fixed thanks to @atomanonymous
  • Execute CRUD actions from command palette #382

Packages

@sensenet/client-utils@1.7.0

  • Moved @furystack/inject and @furystack/logging to client utils. Thanks to @Attila816

    Check the client-utils readme for usage and examples

@sensenet/document-viewer-react@2.0.0 💥

  • We have changed the state management library from redux to react hooks api
  • The new viewer uses the new useRepository hook from @sensenet/hooks-react and a default api settings. This means that you no longer need to define the api endpoints yourself if you use a sensenet repository.

example usage:

import React, { useState } from "react";
import {
  defaultTheme,
  DocumentTitlePager,
  DocumentViewer,
  LayoutAppBar,
  RotateActivePagesWidget,
  SaveWidget,
  SearchBar,
  ToggleCommentsWidget,
  ToggleShapesWidget,
  ToggleThumbnailsWidget,
  ZoomInOutWidget,
  ZoomModeWidget
} from "@sensenet/document-viewer-react";
import { MuiThemeProvider } from "@material-ui/core/styles";
import { RepositoryContext } from "@sensenet/hooks-react";
import { Repository } from "@sensenet/client-core";
export const ViewerExample: React.FC = () => {
  const [repository, setRepository] = useState(
    new Repository({ repositoryUrl: hostName })
  );
  return (
    <MuiThemeProvider theme={defaultTheme}>
      <RepositoryContext.Provider value={repository}>
        <DocumentViewer
          theme={defaultTheme}
          documentIdOrPath={
            "/Root/Content/IT/Document_Library/Brazzaville/100pages.pdf"
          }
        >
          <LayoutAppBar>
            <div>
              <ToggleShapesWidget />
              <ToggleThumbnailsWidget />
              <ZoomInOutWidget />
              <ZoomModeWidget />
              <RotateActivePagesWidget />
              <SaveWidget />
            </div>
            <DocumentTitlePager />
            <div>
              <ToggleCommentsWidget />
              <SearchBar />
            </div>
          </LayoutAppBar>
        </DocumentViewer>
      </RepositoryContext.Provider>
    </MuiThemeProvider>
  );
};