Changelog 2016

December 2016

New Features

OAuth Provider

  • Exposed OAuthProvider (#15)

  • Better OAuth integration

Fixes

  • Fixed bulk-edit not working on User (#12)

  • Fixed NRE when saving existing group

  • Fixed issue with Excel rows using 1-based index

Security

  • Increased entropy for new report token

  • Don't send HSTS header when running on localhost

Maintenance

  • Translations improvements (#17)

  • Made route suffixes opt-in

  • Don't log ThreadAbortException/TaskCanceledException in ExecuteAsync

  • Set Label when setting Name on new POA

  • Don't write to disk if hash match previous value

  • Allow passing of lang parameter for GetReport

  • Removed unused code

  • Use proposed routes

  • Added id for the GetQuery uri

  • Changed version logic for git support

  • Made Excel write logic public

  • Added gitignore

  • Fixed UTF-8 filename issue

  • Renamed files with special characters

November 2016

New Features

Transactional Logic

  • Added transactional logic (opt-in)

  • Added POActions.OnBulkSave

  • BREAKING: Removed default code from OnRefresh

Builder Updates

  • Updated solution to VS2017 RC (15.0)

  • Use Web² by default

  • Changed default Web template to include recommended options in web.config

Fixes

  • Fixed issue with PU Items not being sorted when added using AddQueriesToProgramUnit action

  • Fixed issue when creating new project

Maintenance

  • Also send referrer to CDN for web2 requests

  • Extra information when logging

  • Fixed issue with UpdateVidyanoVersion.exe

  • Updated NuGet packages

  • Added more actions that should be ignored for creating a transaction

  • Changed default ValidationRulesFailed message

  • Show validation error from hidden attributes in PO Notification

  • Show MultiLine as hint for TranslatedString

  • Allow new PU

  • Added POA.FromServiceString

  • Performance: only need to sort once when adding multiple queries

October 2016

New Features

Verbose Model JSON

  • Added ability to save/load verbose model.json

  • FileSystemWatcher for model changes

  • Session support for verbose model

  • Added ability to ignore model hash

User Management

  • Added ability to rename user from code

  • Fixed cache invalidation

  • User rename tweaks

Fixes

  • Fixed issue when synchronize needed to add new settings

  • Fixed NRE when display attribute of POAWR does not exist as property

  • Fixed issue with detail attributes being created together with their parent

Maintenance

  • Advanced: Added ability to change or disable IP used for auth token

  • Always prefer using the request uri with correct schema (X-Forwarded-Proto)

  • Keep current DisplayAttribute on POAWR when changing lookup and it exists

  • Disable cache-control when serving content from cdn

  • Changed AttributeCombinationIsUnique message

  • BREAKING: Default transactions behavior for OnSave

  • Removed unneeded type checks in ToServiceString()

  • Added ability to handle Stream.ToServiceString()

September 2016

New Features

Swagger API Definition

  • Added option to define swagger api definition

  • Added SwaggerContactAttribute

  • Allow defining of response type

Dialog Actions

  • Added new Action.ShowedOn option Dialog

  • Show custom action in a Persistent Object Dialog

API Extensions

  • Extended API to support commonly used cases (versioning, authorization, paths)

Fixes

  • Fixed issue with two factor login

  • Fixed issue with IsWord rule showing wrong message

  • Fixed issue when renaming PO

  • Fixed issue with default value always being set for numeric/date attributes

Maintenance

  • Build Vidyano.Core as NuGet package

  • Allow native navigation for websites

  • Fix common model.json merge issues

  • Websites: Don't use Referer

  • Fixed issue when working with Cloudflare Flexible SSL

  • Also convert Manager.RequestUrl to https if forwarded by Cloudflare

  • Always make sure that new user's name is trimmed

  • VerboseLogs: Reduced time when cleaning up verbose logs from 4h to 15min

  • VerboseLogs: Improved database calls when cleaning up verbose logs

  • VerboseLogs: Delete per maximum of 5000 log records

  • Allow setting of Vidyano.Web2Version app setting to url for redirecting

August 2016

New Features

Two-Factor Authentication (2FA)

  • Implement basic 2FA checker

  • Store two-factor token in user table

  • QR code generation for 2FA

  • Show code label on sign-in page

  • Invalidate auth tokens when adding two-factor authentication

Fixes

  • Fixed issue with new dates that aren't visible

  • Fixed issue when filtering on null

  • Fixed unknown NRE issue

  • Fixed issue when SaveDetails is called without a context

  • Fixed translations issue when websites query was opened

  • Fixed bulk edit issue on PO

Maintenance

  • NoDatabase: Correct store user profile

  • Don't block repository schema upgrade when development is disabled

  • Tweaked ExecuteQuery, get count/totalItems first, if zero skip rest

  • Ensure paging information is correct

  • Ignore orderby when counting enumerable sources

  • Use dynamic Where directly on IEnumerable instead of forcing AsQueryable

  • Pass json to business rule if using translated string attribute

  • Return 200 OK for Poll if everything is OK

  • Inline local script files only

  • Performance: Prefer generating parameterized queries

  • Prefer nl-BE culture when browser reports nl

  • Use UseWeb2Home app setting when serving cdn

  • Fill in default offset for first new POA

  • Added missing default translation for Edit

  • Updated RegEx to detect IE version

  • Made outdated page's images working on IE10+

  • Added Json helper method on CustomApiController

  • Added hook for single sign-out call from ACS

  • Enabled default values logic on POA

July 2016

New Features

Wizard State

  • Added AsWizard state behavior

  • Wizard PO support

Default Values

  • Added POA.DefaultValue

  • Allow custom default value

  • Added DefaultValue/CustomDefaultValue to POABuilder

Web2 CDN Handler

  • Added simple Web2 handler that uses CDN

  • Allow override for Web2 version on CDN

Fixes

  • Fixed issue when you change a POAWR that has a linked POAWR

  • Fixed issue with GetReport to xml and 0x00

  • Fixed Azure issue when proxying CDN

  • Fixed issue when NewWebComponent namespace ends with WebComponents

  • Fixed issue with verbose logging using database

Maintenance

  • Added OnHelp hook

  • Removed hardcoded dependency for WindowsAuthentication on HttpContext

  • Fallback to WindowsIdentity.GetCurrent() instead of null for GetClientIdentity

  • BREAKING: Don't fill in default value for New PO if not set explicitly

  • Only switch to nullable type if current value is null

  • Allow loading of QueryColumn by Query Id and Attribute Name

  • Made RetryActionException public

  • Tweaked VisualStudioIntegration for new Web² logic

  • Refresh attributes tab when changing groups/tabs on PO

  • Rematerialize wizard PO

  • Allow relative resources during vulcanize

  • Always include salt in PO.SecurityToken to prevent misuse of encrypt oracle

  • Updated NuGet packages

  • Only ignore default value on value types if the attribute is visible on new

  • BREAKING: Removed strong name signing

  • Moved Jurassic from embedded to NuGet

  • Use correct datatype for custom default value attribute

  • Made App_Data\Help and App_Data\Icons folders optional

  • Show session attribute selector for default value

  • MultiLineString can be changed to ComboBox/DropDown

  • Log less requests to verbose logs

  • Don't log http exceptions except for 500

June 2016

New Features

Custom API Controller

  • Extract base CustomApiController class from CustomWebController

  • Better API abstraction

Notification Duration

  • Added NotificationDuration

  • Control notification display time

Auth Token Validation

  • Added WebController.ValidateAuthToken

  • Exposed HttpEx

Fixes

  • Fixed issue with delete and check violation throwing ValidationException

  • Fixed issue when deleting query

  • Fixed issue with adding custom filters

Maintenance

  • NoLicense: Don't use License settings anymore

  • Websites: Classic -> Legacy and Web2 -> Default

  • Added option to include custom filters from code

  • Splitted WebsiteConfig from VidyanoDbCache

  • Show multiline tool tip editor on POA

  • Added POA.ToggleRule

  • .NET detection for 4.6.2/4.6.1

  • Removed more uses of IsTrial checks

  • Added PersistentObjectAttributeAsDetail.RefreshObjects method

  • Fixed issues on IncludeFilter

  • Allow custom default filter

May 2016

New Features

Retry Action

  • Added ability to ask end-user for confirmation/more information during ExecuteAction

  • Handle retry logic on actions

  • Added ability to include PO with RetryAction

  • Prefer options for RetryAction over labels

Fixes

  • Fixed issue with MinValue/MaxValue business rule on nullable properties

  • Fixed issue with multiple CORS handlers

  • Fixed pages issue in Websites

  • Fixed issue with parent reference attribute using wrong Value with OnNew

Maintenance

  • Added ability to specify if SelectAll is enabled for a Query

  • Tweaked outdated browser behavior

  • Include correct HTTP code when requesting report that has an error

  • NoLicense compilerflag

  • Hide/disable other code that uses license

  • Fixed windows authentication issues

  • Keep correct Root prefix when registering routes

  • Correctly detect website when using Root prefix

  • Fixed issue with DefaultOptions being cached on POA

  • Don't use License settings anymore

  • NoDatabase: Don't add License setting in settings.json after activating

  • Updated NuGet packages

  • Hide crawler related properties/methods on CustomWebController

  • Don't try to create proxy types when NoDatabase is enabled

  • Don't fail when AsDetail attribute' Objects is set to null

  • Added option for AsDetail attribute to mark detail obj as deleted

  • Allow configuration of allowed levels for projection

  • Don't use .Include for projected custom queries

  • Hide group on PUI if Name contains backslash

  • Update ObjectId to match name for PU/PUI on SaveExisting

  • Fixed text search issue on datetime's "today"

  • Send QueryFilter breadcrumb during OnLoad

April 2016

New Features

Builder Enhancements

  • Allow removing of attributes on PO

  • Added DataTypes.Determine method to detect the best DataType

  • Allow setting of ReferenceBreadcrumb in builder

  • Handle extra cases for tabs

Advanced Hooks

  • Added ability to persist user settings during SaveUserSettings

  • Added GetKey hook

  • Added hook for unknown custom action method

Fixes

  • Fixed issue with routes not being updated when PU/PO/Q is changed/added

  • Fixed issue with CanRead being false in QueryExecuted when ExecuteQuery is used

  • Fixed issue with NoDatabase and using Builder

  • Fixed issue with using builder and adding new attribute

  • Fixed caching issue when creating or deleting user

  • Fixed serialize issue with groups in model.json

Maintenance

  • When creating new group/tab from builder also set Name

  • Added ability to specify different breadcrumb when displaying on reference (POAWR/QRI)

  • Fixed issues when bulk-editing POAs

  • Updated Newtonsoft.Json to 8.0.3

  • Added more WebsiteTypes

  • Added code to remove duplicate tabs

  • Advanced: Expose more information about ProgramUnitItem

  • Also include Vidyano Service version in feedback

  • Added ability to export report to csv as well

  • NoDatabase: Fixed issue with ActivateLicense

  • Advanced: Add disabled class for QueryResultItem in trial mode

  • NoDatabase: Fixed issue with activating license

  • Include more information when setting of a reference attribute fails

  • Client: include original exception when PostJson fails

  • Don't show proxy type

  • NoDatabase: Fixed issue with GroupBuilder and NoDatabase

  • Websites: Fixed issue with calling GetClientData directly

  • Added extra rules when working with Security PO

  • Don't show New action on Persistent Object -> Rights tab when ReadOnly

  • Less dependency on System.Web (OWIN compatible)

  • Fixed some issues in reports

  • Fixed NRE when using http/2 server push

  • Don't log invalid username/pass if logs are disabled

March 2016

New Features

Visual Studio Integration

  • Added VisualStudioIntegration

  • Builder: Support extra buttons from Vidyano.Service

  • Builder: Don't lock referenced Vidyano.Service

  • Builder: Fixed issue when NuGet package was not restored yet

Websites Features

  • Allow groups for reports as well

  • Advanced: Allow custom profiler entries

Fixes

  • Fixed issue when creating new DataType

  • Fixed issue with title being set on vi-app instead of label

  • Fixed issue with invalid query sortoptions for reports

Maintenance

  • Expose X-ElapsedMilliseconds when using CORS/Profiler

  • Websites: Also check virtual path ignoring case

  • Prefer namespaces for webcomponent's ts

  • Always use the correct protocol for the Google font

  • Added option to keep model hashes in separate file

  • Improved resolving of custom api methods on SchemaWeb class (allow query in uri)

  • Re-activate license after synchronize

  • Changed default WebControllerModule behavior to load Web2 if found

February 2016

New Features

Websites and Pages

  • Initial commit for Websites/Pages

  • Watch websites files for changes and update cache

  • Allow reordering of pages

  • Monitor websites.json for changes and update in-memory model

  • Added queries to website pages

  • Added static file serving for websites

  • Read website and page contents from disk during development

NoDatabase Mode

  • Load settings from settings.json (with first-time migration)

  • Load users from users.json (with first-time migration)

  • Handle Saving/Deleting of users/groups

  • Handle querying of user inherited rights

  • Handle creating new user right on existing user/group

Fixes

  • Fixed issue with old UI and OnAddReference

  • Fixed issue when saving website changes

  • Fixed issue when website binding ends with /

  • Fixed issue with not being able to delete queries anymore

  • Fixed text search issue when POA labels ends with questionmark

  • Fixed issue with verbose logging when the TargetContextType contained invalid characters

  • Fixed retrying of initialization when failed on startup

Maintenance

  • Expose Website on Manager.Current

  • Added option to specify Id for GroupBuilder

  • Keep highest NotificationType when adding a notification

  • Tweaked default DisableBulkEdit logic

  • Make sure we register longer binding paths first to allow putting websites in subfolders of existing websites

  • Added option to hook into ExportToExcel functionality

  • Client: Added async method to wait for setting attribute value with TriggersRefresh

  • Fixed typo, fixed issue when sheetname is too long

  • Use new Group/Tab's name as label if label is empty

  • Include hostName if different in failed sign in log

  • Handle Loading/Saving of settings

  • Also save security settings correctly for NoDatabase mode

  • Enable Advanced flags from AppSettings

  • Don't filter PU's items in Management based on Filter method

  • Don't allow adding detail query with the same name

  • Don't persist "" to json files

  • Refactored logic to get all groups for all users in one batch operation

  • Added ability to specify custom sort expression for POA

  • Skip cache updates that have been processed already

  • Added ability to use other queries for AddReference behavior

  • Use name instead of query instance for AddReference

  • Expose GetDeterministicGuid extension method

  • Show DisplayAttribute/LookupAttribute on Attributes query and allow filter

  • Added Advanced.SynchronizeOptions to tweak default synchronize behavior

  • Show POA.SortExpression in management

  • Fixed issues when target context uses base type

  • Fixed issues when target context uses base type in different assembly

  • Don't show New button on PUI's Query

  • Added extra functionality to Builder to get all POs/DataTypes/...

  • Don't run synchronize schema when json repository is read-only

  • Fixed issue with Enum/FlagsEnum properties being added as "String"

  • Advanced: Added PostSynchronize hook

  • Moved Query's PO attribute in front of Source

  • Try to use a minimal of offset updates when reordering an Int32 property

  • Added ability to add query directly to PU

  • Don't fail on Profiler.Current giving exception when calling ExceptionService.Log

  • Make sure Vidyano repository is initialized before mapping vidyano routes

  • Fixed QueryFilters for users without UserSettings

  • Added extra safety checks for website deletes

  • Fixed issue with website file deletes triggered by ReplaceIfExists

  • Fixed website and website page labels when adding new

  • Websites: Fixed issue when assigning bindings for the first time

  • Websites: Fixed issue when app is hosted in subfolder

  • Websites: Allow website without pages

  • Prefer HostingEnvironment over HttpRuntime

  • Fixed FlagsEnum distincts issue when underlying type is not int

  • Added ability to filter dates on hour as well

  • Fixed issue with ValidationException not formatting the message

  • Lock on currentList when adding or removing claims

  • Updated dependencies (CommonMark, Microsoft.WindowsAzure.ConfigurationManager, Newtonsoft.Json)

  • Added paper element to websites test

  • Updated Vidyano Web²

  • Added missing md pages

  • Ensure consistent ordering for website pages before save

January 2016

New Features

NoDatabase Support

  • Initial NoDatabase implementation

  • Settings, users, and groups stored in JSON files

  • First-time migration from database

DbGeometry Support

  • Added support for DbGeometry

  • Spatial data handling

Fixes

  • Fixed a bug with formatted negative numbers

  • Fixed issue with LogsVerbose failing when repository database is not available

  • Fixed issue with verbose logging when the TargetContextType contained invalid characters

Maintenance

  • Give priority to QueryResultItemValue typehints over QueryResultItem

  • Change viConfigure actions to use Navigate ClientOperation

  • Show more information when EfObjectConverter.cctor can't load assembly types

  • Show logged url from feedback as notification (and hide screenshot if empty)

  • Make sure LogVerboseData PO uses whole width

  • Tweaked navigation behavior to only see as fromAction when a parent exists

  • Fixed retrying of initialization when failed on startup

  • Reduced time to 15 seconds (from 30)

  • Removed unneeded system message

  • Ensure cached HasGlobalSearch is updated

  • Default minimum IE version incremented to 10 (still supports 9)

  • Handle missing Vidyano connection string

  • Added missing parameter validations inside Manager public methods

  • Improved error messages when query's source is not found


Note: 2016 was a transformative year with 330 commits introducing NoDatabase mode, Websites/Pages functionality, Two-Factor Authentication, Swagger API support, Visual Studio integration, and the transition to Web2 as default.

Was this helpful?