Dan Underwood
b2f36a3bbe
fix(networking): convert from localhost addresses to 127.0.0.1 ( #3411 )
2020-04-27 13:54:37 +12:00
Chaim Lev-Ari
6da38d466b
refactor(project): sort portainer types and interface definitions ( #3694 )
...
* refactor(portainer): sort types
* style(portainer): add comment about role service
* refactor(portainer): sort interface types
* refactor(portainer): sort enums
2020-04-09 09:26:11 +12:00
Chaim Lev-Ari
edd86f2506
refactor(tags): refactor tag management ( #3628 )
...
* refactor(tags): replace tags with tag ids
* refactor(tags): revert tags to be strings and add tagids
* refactor(tags): enable search by tag in home view
* refactor(tags): show endpoint tags
* refactor(endpoints): expect tagIds on create payload
* refactor(endpoints): expect tagIds on update payload
* refactor(endpoints): replace TagIds to TagIDs
* refactor(endpoints): set endpoint group to get TagIDs
* refactor(endpoints): refactor tag-selector to receive tag-ids
* refactor(endpoints): show tags in multi-endpoint-selector
* chore(tags): revert reformat
* refactor(endpoints): remove unneeded bind
* refactor(endpoints): change param tags to tagids in endpoint create
* refactor(endpoints): remove console.log
* refactor(tags): remove deleted tag from endpoint and endpoint group
* fix(endpoints): show loading label while loading tags
* chore(go): remove obsolete import labels
* chore(db): add db version comment
* fix(db): add tag service to migrator
* refactor(db): add error checks in migrator
* style(db): sort props in alphabetical order
* style(tags): fix typo
Co-Authored-By: Anthony Lapenna <anthony.lapenna@portainer.io>
* refactor(endpoints): replace tagsMap with tag string representation
* refactor(tags): rewrite tag delete to be more readable
* refactor(home): rearange code to match former style
* refactor(tags): guard against missing model in tag-selector
* refactor(tags): rename vars in tag_delete
* refactor(tags): allow any authenticated user to fetch tag list
* refactor(endpoints): replace controller function with class
* refactor(endpoints): replace function with helper
* refactor(endpoints): replace controller with class
* refactor(tags): revert tags-selector to use 1 way bindings
* refactor(endpoints): load empty tag array instead of nil
* refactor(endpoints): revert default tag ids
* refactor(endpoints): use function in place
* refactor(tags): use lodash
* style(tags): use parens in arrow functions
* fix(tags): remove tag from tag model
Co-authored-by: Anthony Lapenna <anthony.lapenna@portainer.io>
2020-03-29 22:54:14 +13:00
Anthony Lapenna
78558f9c8e
chore(version): bump version number
2020-03-20 11:37:35 +13:00
Anthony Lapenna
2a92fcb802
chore(version): bump version number
2020-03-20 11:35:36 +13:00
Anthony Lapenna
9cc8448418
chore(version): bump version number
2020-02-20 09:24:06 +13:00
Anthony Lapenna
d0e998ddc4
chore(version): bump version number
2020-02-18 13:46:04 +13:00
Mike Church
6f59f130a1
feat(dashboard): add health status to home page and dashboard ( #3489 )
...
* feat(dashboard): add health status to home page and dashboard
* fix(dashboard): code review updates, using builtin for substring search
2020-02-05 07:59:29 +13:00
Hugo Hromic
2ba195adaa
feat(api): implement anonymous mode for LDAP connection ( #3460 )
...
* When enabled, ReaderDN and Password will not be used
* Anonymous mode is set to `true` by default on fresh installations
2020-01-22 11:14:07 +13:00
Anthony Lapenna
bba13f69ad
chore(version): bump version number
2019-12-04 17:07:21 +13:00
Anthony Lapenna
2189deb3bd
chore(version): bump version number
2019-12-04 17:05:36 +13:00
Anthony Lapenna
a42619a442
fix(api): fix invalid extensions.json location
2019-12-04 11:42:43 +13:00
xAt0mZ
e19bc8abc7
fix(app): registry push-pull features overhaul ( #3393 )
...
* feat(registry): registry or direct url selector
* feat(app): push pull container creation
* feat(app): push pull container duplicate
* feat(app): push pull container details recreate
* feat(app): push pull container details commit
* feat(app): push pull images
* feat(app): push pull image tag
* feat(app): push pull image push
* feat(app): push pull image pull
* feat(app): push pull service creation
* feat(app): push pull templates create container
* feat(app): push pull templates create stacks
* feat(app): push pull template edit
* feat(app): push pull service details update
* fix(app): refactor registry selector + registry auto select
* feat(app): remove autocomplete on registry selector
* style(image-registry): reword simple/advanced mode
* Revert "feat(app): remove autocomplete on registry selector"
This reverts commit 97ec2ddd62
.
* refactor(registry-selector): reverse registry and image fields
* feat(app): autocomplete on registry selector
* feat(registry-selector): change gitlab registry autocomplete
* feat(registry-selector): autocomplete for dockerhub
* feat(registry-selector): gitlab url based on locked value instead of name
* fix(registry-selector): gitlab registries URL are not modified anymore
* fix(registry-selector): change gitlab image autofill on duplicate
* fix(registry-selector): gitlab registries now only suggest their own images and not all from gitlab
* fix(registry-selector): psuh pull issues with gitlab registries
* fix(registry-selector): dockerhub registry selection on duplicate for dockerhub images
* fix(templates): registry retrieval for template
* feat(images): add autocomplete on image pull panel
* fix(registry-selector): add latest tag when no tag is specified
* fix(registry-selector): latest tag now applied for non gitlab registries
2019-11-28 11:36:39 +13:00
Anthony Lapenna
a85f0058ee
feat(extensions): add the ability to upload and enable an extension ( #3345 )
...
* feat(extensions): offline mode mockup
* feat(extensions): offline mode mockup
* feat(api): add support for extensionUpload API operation
* feat(extensions): offline extension upload
* feat(api): better support for extensions in offline mode
* feat(extension): update offline description
* feat(api): introduce local extension manifest
* fix(api): fix LocalExtensionManifestFile value
* feat(api): use a 5second timeout for online extension infos
* feat(extensions): add download archive link
* feat(extensions): add support for offline update
* fix(api): fix issues with offline install and online updates of extensions
* fix(extensions): fix extensions link URL
* fix(extension): hide screenshot in offline mode
2019-11-20 18:16:40 +13:00
Anthony Lapenna
8b0eb71d69
feat(api): automatically update extensions at startup ( #3349 )
...
* feat(api): automatically update extensions at startup
* feat(api): review updateAndStartExtensions
2019-11-20 18:02:07 +13:00
Anthony Lapenna
81c0bf0632
fix(api): introduce priority based logic for RBAC roles ( #3374 )
...
* fix(api): introduce priority based logic for RBAC roles
* refactor(api): rename method
2019-11-18 21:22:47 +13:00
Anthony Lapenna
19d4db13be
feat(api): rewrite access control management in Docker ( #3337 )
...
* feat(api): decorate Docker resource creation response with resource control
* fix(api): fix a potential resource control conflict between stacks/volumes
* feat(api): generate a default private resource control instead of admin only
* fix(api): fix default RC value
* fix(api): update RC authorizations check to support admin only flag
* refactor(api): relocate access control related methods
* fix(api): fix a potential conflict when fetching RC from database
* refactor(api): refactor access control logic
* refactor(api): remove the concept of DecoratedStack
* feat(api): automatically remove RC when removing a Docker resource
* refactor(api): update filter resource methods documentation
* refactor(api): update proxy package structure
* refactor(api): renamed proxy/misc package
* feat(api): re-introduce ResourceControlDelete operation as admin restricted
* refactor(api): relocate default endpoint authorizations
* feat(api): migrate RBAC data
* feat(app): ResourceControl management refactor
* fix(api): fix access control issue on stack deletion and automatically delete RC
* fix(api): fix stack filtering
* fix(api): fix UpdateResourceControl operation checks
* refactor(api): introduce a NewTransport builder method
* refactor(api): inject endpoint in Docker transport
* refactor(api): introduce Docker client into Docker transport
* refactor(api): refactor http/proxy package
* feat(api): inspect a Docker resource labels during access control validation
* fix(api): only apply automatic resource control creation on success response
* fix(api): fix stack access control check
* fix(api): use StatusCreated instead of StatusOK for automatic resource control creation
* fix(app): resource control fixes
* fix(api): fix an issue preventing administrator to inspect a resource with a RC
* refactor(api): remove useless error return
* refactor(api): document DecorateStacks function
* fix(api): fix invalid resource control type for container deletion
* feat(api): support Docker system networks
* feat(api): update Swagger docs
* refactor(api): rename transport variable
* refactor(api): rename transport variable
* feat(networks): add system tag for system networks
* feat(api): add support for resource control labels
* feat(api): upgrade to DBVersion 22
* refactor(api): refactor access control management in Docker proxy
* refactor(api): re-implement docker proxy taskListOperation
* refactor(api): review parameters declaration
* refactor(api): remove extra blank line
* refactor(api): review method comments
* fix(api): fix invalid ServerAddress property and review method visibility
* feat(api): update error message
* feat(api): update restrictedVolumeBrowserOperation method
* refactor(api): refactor method parameters
* refactor(api): minor refactor
* refactor(api): change Azure transport visibility
* refactor(api): update struct documentation
* refactor(api): update struct documentation
* feat(api): review restrictedResourceOperation method
* refactor(api): remove unused authorization methods
* feat(api): apply RBAC when enabled on stack operations
* fix(api): fix invalid data migration procedure for DBVersion = 22
* fix(app): RC duplicate on private resource
* feat(api): change Docker API version logic for libcompose/client factory
* fix(api): update access denied error message to be Docker API compliant
* fix(api): update volume browsing authorizations data migration
* fix(api): fix an issue with access control in multi-node agent Swarm cluster
2019-11-13 12:41:42 +13:00
xAt0mZ
198e92c734
feat(registry): gitlab support ( #3107 )
...
* feat(api): gitlab registry type
* feat(registries): early support for gitlab registries
* feat(app): registry service selector
* feat(registry): gitlab support : list repositories and tags - remove features missing
* feat(registry): gitlab registry remove features
* feat(registry): gitlab switch to registry V2 API for repositories and tags
* feat(api): use development extension binary
* fix(registry): avoid 401 on gitlab retrieve to disconnect the user
* feat(registry): gitlab browse projects without extension
* style(app): code cleaning
* refactor(app): PR review changes + refactor on types
* fix(gitlab): remove gitlab info from registrymanagementconfig and force gitlab type
* style(api): go fmt
* feat(api): update APIVersion and ExtensionDefinitionsURL
* fix(api): fix invalid RM extension URL
* feat(registry): PAT scope help
* feat(registry): defaults on registry creation
* style(registry-creation): update layout and text for Gitlab registry
* feat(registry-creation): update gitlab notice
2019-11-12 16:28:31 +13:00
Anthony Lapenna
0175490161
fix(api): data migration to update default Portainer authorizations ( #3314 )
2019-10-31 12:12:04 +13:00
Anthony Lapenna
4fad28590d
chore(version): bump version number
2019-10-11 10:40:41 +13:00
Anthony Lapenna
ab2acea463
feat(app): add externally sourced support options ( #3249 )
...
* feat(app): add externally sourced support options
* refactor(api): rename struct fields
2019-10-10 10:59:27 +13:00
Anthony Lapenna
182f3734d0
fix(api): fix an issue with unsupported cron format ( #3240 )
...
* fix(api): fix an issue with unsupported cron format
* refactor(api): review migration method
2019-10-08 16:18:32 +13:00
Anthony Lapenna
9aa52a6975
feat(settings): add new settings to disable volume browser ( #3239 )
...
* feat(settings): add new settings to disable volume browser
* feat(api): update setting to be compliant with RBAC
* refactor(api): update method comment
* fix(api): remove volume browsing authorizations by default
* feat(settings): rewrite volume management setting description
* feat(settings): rewrite volume management setting tooltip
* Update app/portainer/views/settings/settings.html
Co-Authored-By: William <william.conquest@portainer.io>
2019-10-08 13:17:58 +13:00
Anthony Lapenna
ea05d96c73
feat(sidebar): add update notification ( #3196 )
...
* feat(sidebar): add update notification
* style(sidebar): update notification color palette
* refactor(api): rollback to latest version
* feat(sidebar): update style
* style(sidebar): fix color override
2019-09-26 08:38:11 +12:00
Anthony Lapenna
7d76bc89e7
feat(api): relocate authorizations outside of JWT ( #3079 )
...
* feat(api): relocate authorizations outside of JWT
* fix(api): update user authorization after enabling the RBAC extension
* feat(api): add PortainerEndpointList operation in the default portainer authorizations
* feat(auth): retrieve authorization from API instead of JWT
* refactor(auth): move permissions retrieval to function
* refactor(api): document authorizations methods
2019-09-10 10:58:26 +12:00
Anthony Lapenna
8cb18f9877
chore(version): bump version number
2019-07-26 14:01:49 +12:00
Anthony Lapenna
12a512f01f
feat(edge): introduce support for Edge agent ( #3031 )
...
* feat(edge): fix webconsole and agent deployment command
* feat(edge): display agent features when connected to IoT endpoint
* feat(edge): add -e CAP_HOST_MANAGEMENT=1 to agent command
* feat(edge): add -v /:/host and --name portainer_agent_iot to agent command
* style(endpoint-creation): refactor IoT agent to Edge agent
* refactor(api): rename AgentIoTEnvironment to AgentEdgeEnvironment
* refactor(api): rename AgentIoTEnvironment to AgentEdgeEnvironment
* feat(endpoint-creation): update Edge agent deployment instructions
* feat(edge): wip edge
* feat(edge): refactor key creation
* feat(edge): update deployment instructions
* feat(home): update Edge agent endpoint item
* feat(edge): support dynamic ports
* feat(edge): support sleep/wake and snapshots
* feat(edge): support offline mode
* feat(edge): host job support for Edge endpoints
* feat(edge): introduce STANDBY state
* feat(edge): update Edge agent deployment command
* feat(edge): introduce EDGE_ID support
* feat(edge): update default inactivity interval to 5min
* feat(edge): reload Edge schedules after restart
* fix(edge): fix execution of endpoint job against an Edge endpoint
* fix(edge): fix minor issues with scheduling UI/UX
* feat(edge): introduce EdgeSchedule version management
* feat(edge): switch back to REQUIRED state from ACTIVE on error
* refactor(edge): remove comment
* feat(edge): updated tunnel status management
* feat(edge): fix flickering UI when accessing Edge endpoint from home view
* feat(edge): remove STANDBY status
* fix(edge): fix an issue with console and Swarm endpoint
* fix(edge): fix an issue with stack deployment
* fix(edge): reset timer when applying active status
* feat(edge): add background ping for Edge endpoints
* fix(edge): fix infinite loading loop after Edge endpoint connection failure
* fix(home): fix an issue with merge
* feat(api): remove SnapshotRaw from EndpointList response
* feat(api): add pagination for EndpointList operation
* feat(api): rename last_id query parameter to start
* feat(api): implement filter for EndpointList operation
* fix(edge): prevent a pointer issue after removing an active Edge endpoint
* feat(home): front - endpoint backend pagination (#2990 )
* feat(home): endpoint pagination with backend
* feat(api): remove default limit value
* fix(endpoints): fix a minor issue with column span
* fix(endpointgroup-create): fix an issue with endpoint group creation
* feat(app): minor loading optimizations
* refactor(api): small refactor of EndpointList operation
* fix(home): fix minor loading text display issue
* refactor(api): document bolt services functions
* feat(home): minor optimization
* fix(api): replace seek with index scanning for EndpointPaginated
* fix(api): fix invalid starting index issue
* fix(api): first implementation of working filter
* fix(home): endpoints list keeps backend pagination when it needs to
* fix(api): endpoint pagination doesn't drop the first item on pages >=2 anymore
* fix(home): UI flickering on page/filter load/change
* feat(auth): login spinner
* feat(api): support searching in associated endpoint group data
* refactor(api): remove unused API endpoint
* refactor(api): remove comment
* refactor(api): refactor proxy manager
* feat(api): declare EndpointList params as optional
* feat(api): support groupID filter on endpoints route
* feat(api): add new API operations endpointGroupAddEndpoint and endpointGroupDeleteEndpoint
* feat(edge): new icon for Edge agent endpoint
* fix(edge): fix missing exec quick action
* fix(edge): add loading indicator when connecting to Edge endpoint
* feat(edge): disable service webhooks for Edge endpoints
* feat(endpoints): backend pagination for endpoints view (#3004 )
* feat(edge): dynamic loading for stack migration feature
* feat(edge): wordwrap edge key
* feat(endpoint-groups): backend pagination support for create and edit
* feat(endpoint-groups): debounce on filter for create/edit views
* feat(endpoint-groups): filter assigned on create view
* (endpoint-groups): unassigned endpoints edit view
* refactor(endpoint-groups): code clean
* feat(endpoint-groups): remove message for Unassigned group
* refactor(websocket): minor refactor associated to Edge agent
* feat(endpoint-group): enable backend pagination (#3017 )
* feat(api): support groupID filter on endpoints route
* feat(api): add new API operations endpointGroupAddEndpoint and endpointGroupDeleteEndpoint
* feat(endpoint-groups): backend pagination support for create and edit
* feat(endpoint-groups): debounce on filter for create/edit views
* feat(endpoint-groups): filter assigned on create view
* (endpoint-groups): unassigned endpoints edit view
* refactor(endpoint-groups): code clean
* feat(endpoint-groups): remove message for Unassigned group
* refactor(api): endpoint group endpoint association refactor
* refactor(api): rename files and remove comments
* refactor(api): remove usage of utils
* refactor(api): optional parameters
* Merge branch 'feat-endpoint-backend-pagination' into edge
# Conflicts:
# api/bolt/endpoint/endpoint.go
# api/http/handler/endpointgroups/endpointgroup_update.go
# api/http/handler/endpointgroups/handler.go
# api/http/handler/endpoints/endpoint_list.go
# app/portainer/services/api/endpointService.js
* fix(api): fix default tunnel server credentials
* feat(api): update endpointListOperation behavior and parameters
* fix(api): fix interface declaration
* feat(edge): support configurable Edge agent checkin interval
* feat(edge): support dynamic tunnel credentials
* feat(edge): update Edge agent deployment commands
* style(edge): update Edge agent settings text
* refactor(edge): remove unused credentials management methods
* feat(edge): associate a remote addr to tunnel credentials
* style(edge): update Edge endpoint icon
* feat(edge): support encrypted tunnel credentials
* fix(edge): fix invalid pointer cast
* feat(bolt): decode endpoints with jsoniter
* feat(edge): persist reverse tunnel keyseed
* refactor(edge): minor refactor
* feat(edge): update chisel library usage
* refactor(endpoint): use controller function
* feat(api): database migration to DBVersion 19
* refactor(api): refactor AddSchedule function
* refactor(schedules): remove comment
* refactor(api): remove comment
* refactor(api): remove comment
* feat(api): tunnel manager now only manage Edge endpoints
* refactor(api): clean-up and clarification of the Edge service
* refactor(api): clean-up and clarification of the Edge service
* fix(api): fix an issue with Edge agent snapshots
* refactor(api): add missing comments
* refactor(api): update constant description
* style(home): remove loading text on error
* feat(endpoint): remove 15s timeout for ping request
* style(home): display information about associated Edge endpoints
* feat(home): redirect to endpoint details on click on unassociated Edge endpoint
* feat(settings): remove 60s Edge poll frequency option
2019-07-26 10:38:07 +12:00
Anthony Lapenna
90d3f3a358
Enable endpoint backend pagination ( #2989 )
...
* feat(api): remove SnapshotRaw from EndpointList response
* feat(api): add pagination for EndpointList operation
* feat(api): rename last_id query parameter to start
* feat(api): implement filter for EndpointList operation
* feat(home): front - endpoint backend pagination (#2990 )
* feat(home): endpoint pagination with backend
* feat(api): remove default limit value
* fix(endpoints): fix a minor issue with column span
* fix(endpointgroup-create): fix an issue with endpoint group creation
* feat(app): minor loading optimizations
* refactor(api): small refactor of EndpointList operation
* fix(home): fix minor loading text display issue
* refactor(api): document bolt services functions
* feat(home): minor optimization
* fix(api): replace seek with index scanning for EndpointPaginated
* fix(api): fix invalid starting index issue
* fix(api): first implementation of working filter
* fix(home): endpoints list keeps backend pagination when it needs to
* fix(api): endpoint pagination doesn't drop the first item on pages >=2 anymore
* fix(home): UI flickering on page/filter load/change
* feat(api): support searching in associated endpoint group data
* feat(api): declare EndpointList params as optional
* feat(endpoints): backend pagination for endpoints view (#3004 )
* feat(endpoint-group): enable backend pagination (#3017 )
* feat(api): support groupID filter on endpoints route
* feat(api): add new API operations endpointGroupAddEndpoint and endpointGroupDeleteEndpoint
* feat(endpoint-groups): backend pagination support for create and edit
* feat(endpoint-groups): debounce on filter for create/edit views
* feat(endpoint-groups): filter assigned on create view
* (endpoint-groups): unassigned endpoints edit view
* refactor(endpoint-groups): code clean
* feat(endpoint-groups): remove message for Unassigned group
* refactor(api): endpoint group endpoint association refactor
* refactor(api): rename files and remove comments
* refactor(api): remove usage of utils
* refactor(api): optional parameters
* feat(api): update endpointListOperation behavior and parameters
* refactor(api): remove unused methods associated to EndpointService
* refactor(api): remove unused methods associated to EndpointService
* refactor(api): minor refactor
2019-07-20 16:28:11 -07:00
Anthony Lapenna
7a8a54c96a
refactor(api): introduce ExtensionServer constant
2019-06-23 11:36:45 +12:00
Anthony Lapenna
48281df41a
chore(version): bump version number
2019-06-04 15:51:11 +12:00
Anthony Lapenna
b4c16a1fb4
refactor(api): update ExtensionDefinitionsURL
2019-06-04 13:54:16 +12:00
Anthony Lapenna
50f547a6e7
feat(motd): add the ability to use custom style ( #2918 )
...
* feat(motd): rework motd display mechanism for more flexibility on motd content
* feat(api): enhance MOTD
* refactor(api): refactor MOTD related codebase
* feat(motd): hash on message
2019-06-02 18:16:43 +12:00
Anthony Lapenna
a2d29df21b
fix(rbac): add specific authorization for Storidge management
2019-05-27 10:41:12 +12:00
Anthony Lapenna
8057aa45c4
feat(extensions): introduce RBAC extension ( #2900 )
2019-05-24 18:04:58 +12:00
Anthony Lapenna
cb858f0412
chore(version): bump version number
2019-03-05 17:34:19 +13:00
Anthony Lapenna
2b31f489d9
feat(api): add support for an externally fetched title for motd ( #2755 )
...
* feat(api): add support for an externally fetched title for motd
* refactor(api): gofmt motd.go
* refactor(api): update go comment
2019-03-05 16:05:15 +13:00
Anthony Lapenna
0670079566
feat(api): update ExtensionDefinitionsURL
2019-03-04 13:46:27 +13:00
Anthony Lapenna
db0091b46d
feat(api): revert extension URLs to correct one
2019-03-01 13:58:55 +13:00
Anthony Lapenna
7643f8d08c
feat(oauth): dev build supporting Oauth extension
2019-02-18 14:46:34 +13:00
baron_l
2755527d28
feat(oauth): default team for user on oauth settings
2019-02-07 19:32:02 +01:00
Anthony Lapenna
508352f4ea
Merge branch 'develop' into oath-poc
2019-02-04 09:19:12 +13:00
Anthony Lapenna
6b1c476b63
chore(version): bump version number
2019-01-31 13:15:18 +13:00
Chaim Lev Ari
46e8f10aea
refactor(ouath): use oauth2 library to get token
2019-01-18 10:56:16 +02:00
Chaim Lev Ari
60040e90d0
refactor(oauth): move build url logic to service
2019-01-18 10:24:42 +02:00
Anthony Lapenna
54163e3b92
fix(extensions): fix an issue with extensions with expired licenses ( #2628 )
...
* fix(extensions): fix an issue with extensions with expired licenses
* fix(api): fix invalid log call
* fix(api): allow to re-enable an extension
2019-01-18 10:00:18 +13:00
Chaim Lev Ari
241a701eca
feat(oauth): merge pr from https://github.com/portainer/portainer/pull/2515
2018-12-30 18:02:22 +02:00
Anthony Lapenna
6b05a35881
fix(api): set a default value for potentially empty snapshot interval ( #2543 )
2018-12-12 21:16:44 +13:00
Anthony Lapenna
189d131105
chore(version): bump version number
2018-12-12 17:03:25 +13:00
Anthony Lapenna
8a186b4024
feat(api): update DigitalSignatureService ( #2539 )
2018-12-12 11:19:23 +13:00
Anthony Lapenna
5c2e714e69
style(extensions): minor update to extension UX/UI ( #2538 )
...
* style(extensions): update extension icons
* style(extensions): style update
* feat(extensions): update extension UX
* style(extensions): update extension style
* style(extension-details): update screenshot default size
* style(extensions): update overview diagram image
* refactor(support): fix support URLs
2018-12-12 10:28:21 +13:00