diff --git a/electron/js/menu.js b/electron/js/menu.js index 5848a4e4ac..ee0e407332 100644 --- a/electron/js/menu.js +++ b/electron/js/menu.js @@ -261,6 +261,7 @@ class MenuManager { { label: Util.translate('electronMenuDebugReconcile'), click: () => Util.send(this.win, 'commandGlobal', 'debugReconcile') }, { label: Util.translate('electronMenuDebugNet'), click: () => Util.send(this.win, 'commandGlobal', 'debugNet') }, { label: Util.translate('electronMenuDebugLog'), click: () => Util.send(this.win, 'commandGlobal', 'debugLog') }, + { label: Util.translate('electronMenuDebugProfiler'), click: () => Util.send(this.win, 'commandGlobal', 'debugProfiler') }, Separator, diff --git a/middleware.version b/middleware.version index 2635752090..8459c1847f 100644 --- a/middleware.version +++ b/middleware.version @@ -1 +1 @@ -0.39.0-rc08 \ No newline at end of file +0.39.2 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5b9b3dee7a..444aafc6f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "anytype", - "version": "0.44.11-alpha", + "version": "0.44.15-beta", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "anytype", - "version": "0.44.11-alpha", + "version": "0.44.15-beta", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { diff --git a/package.json b/package.json index 2d77255c44..23d142b31a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "anytype", - "version": "0.44.11-alpha", + "version": "0.44.15-beta", "description": "Anytype", "main": "electron.js", "scripts": { diff --git a/src/json/text.json b/src/json/text.json index 47175ecddc..f28dac36f0 100644 --- a/src/json/text.json +++ b/src/json/text.json @@ -247,6 +247,7 @@ "electronMenuDebugReconcile": "Reconcile", "electronMenuDebugNet": "Network", "electronMenuDebugLog": "Export log", + "electronMenuDebugProfiler": "Export CPU trace", "electronMenuClose": "Close Window", "electronMenuEdit": "Edit", "electronMenuUndo": "Undo", diff --git a/src/json/url.ts b/src/json/url.ts index 8dbfee0468..e0cf7ab18a 100644 --- a/src/json/url.ts +++ b/src/json/url.ts @@ -24,7 +24,7 @@ export default { share: 'https://join.anytype.io/', notionFAQ: 'https://doc.anytype.io/anytype-docs/basics/space/import-export#notion-import-faq', publishDomain: '%s.org', - publish: 'https://any.coop/%s/', + publish: 'any.coop/%s', api: '127.0.0.1:31009', survey: { diff --git a/src/scss/block/dataview/view/common.scss b/src/scss/block/dataview/view/common.scss index d04b6a9152..6a3ae02ef9 100644 --- a/src/scss/block/dataview/view/common.scss +++ b/src/scss/block/dataview/view/common.scss @@ -25,12 +25,12 @@ .cardContent > .inner { padding: 16px; } .cover { - position: relative; aspect-ratio: 7/3; background-position: top center; display: flex; align-items: center; + position: relative; aspect-ratio: 16/9; background-position: top center; display: flex; align-items: center; background-color: var(--color-shape-highlight-medium); width: 100%; justify-content: center; border-radius: 8px 8px 0px 0px; overflow: hidden; } .cover { - img { width: 100%; height: 100%; object-fit: cover; } + img { width: 100%; height: 100%; object-fit: cover; pointer-events: none; } .mediaVideo { height: 100%; } .mediaVideo { diff --git a/src/scss/block/dataview/view/gallery.scss b/src/scss/block/dataview/view/gallery.scss index 2bed1eccac..0fcfaae811 100644 --- a/src/scss/block/dataview/view/gallery.scss +++ b/src/scss/block/dataview/view/gallery.scss @@ -9,11 +9,11 @@ .card { width: 100%; border: 1px solid var(--color-shape-highlight-medium); transition-property: border-color, background; transition-duration: 0.1s; transition-timing-function: $easeInQuint; border-radius: 8px; display: inline-block; background: var(--color-bg-primary); - box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.05); min-height: 72px; position: relative; overflow: hidden; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.05); min-height: 72px; position: relative; } .card.add { box-shadow: 0px 0px; } - .card.add::after { + .card.add::before { content: ''; position: absolute; left: 50%; top: 50%; width: 20px; height: 20px; background-image: url('~img/icon/plus/menu0.svg'); margin: -10px 0px 0px -10px; } diff --git a/src/scss/component/editor.scss b/src/scss/component/editor.scss index 9070a4e422..65d9314752 100644 --- a/src/scss/component/editor.scss +++ b/src/scss/component/editor.scss @@ -98,6 +98,7 @@ .full, .c100 { width: 100%; } .half, .c50 { width: 50%; } + .c40 { width: 40%; } .c60 { width: 60%; } .c70 { width: 70%; } .screen { box-shadow: 0px 0px 25px rgba(0,0,0,0.2); } @@ -271,4 +272,4 @@ &.withIconAndCover { .controlButtons { left: 0px !important; } } -} \ No newline at end of file +} diff --git a/src/scss/component/toast.scss b/src/scss/component/toast.scss index c52a69f992..81696009e8 100644 --- a/src/scss/component/toast.scss +++ b/src/scss/component/toast.scss @@ -2,7 +2,7 @@ .toast { position: fixed; left: 0px; top: 0px; border-radius: 8px; background: var(--color-control-accent); padding: 11px 16px; text-transform: none; - @include text-common; color: var(--color-bg-primary); display: none; z-index: 1000; white-space: nowrap; transition-duration: 0.25s; + @include text-common; color: var(--color-bg-primary); display: none; z-index: 2000; white-space: nowrap; transition-duration: 0.25s; transition-property: opacity, transform; transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); max-width: 50%; } diff --git a/src/scss/menu/publish.scss b/src/scss/menu/publish.scss index 35a1a637a7..992d2b1fff 100644 --- a/src/scss/menu/publish.scss +++ b/src/scss/menu/publish.scss @@ -20,6 +20,20 @@ .value { display: flex; flex-direction: row; align-items: center; justify-content: flex-end; flex-shrink: 0; } } + .urlWrapper { display: flex; flex-direction: row; align-items: center; gap: 0px 8px; } + .urlWrapper { + .label { flex-grow: 1; user-select: text !important; position: relative; @include text-overflow-nw; } + .label::after { + content: ''; display: block; position: absolute; right: -22px; top: 0px; width: 46px; height: 100%; z-index: 1; + background: linear-gradient(90deg, rgba(255, 255, 255, 0) -22.83%, var(--color-bg-primary) 34.78%); + } + .button { + flex-shrink: 0; font-weight: 500; @include text-small; color: var(--color-text-primary); height: 18px; padding: 0px 4px; + border-radius: 4px; transition: $transitionAllCommon; + } + .button:hover { background-color: var(--color-shape-highlight-medium) !important; } + } + .buttons { display: flex; flex-direction: row; align-items: center; gap: 0px 8px; justify-content: space-evenly; height: 36px; } .buttons { .button { flex-grow: 1; width: 100%; } @@ -27,7 +41,7 @@ .label { color: var(--color-text-secondary); } } - .error { margin: 0px; } + .error { margin: 0px; text-align: center; } .outer { position: absolute; left: 0px; bottom: 0px; transform: translateY(calc(100% + 8px)); width: 100%; box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.2); diff --git a/src/scss/widget/space.scss b/src/scss/widget/space.scss index deb65b4745..a48a84e3d1 100644 --- a/src/scss/widget/space.scss +++ b/src/scss/widget/space.scss @@ -18,10 +18,14 @@ .side.right { flex-shrink: 0; display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 0px 4px; } .side.right { - .icon { width: 24px !important; height: 24px !important; flex-shrink: 0; } + .icon { width: 24px !important; height: 24px !important; flex-shrink: 0; border-radius: 4px; } .icon.search { background-image: url('~img/icon/widget/button/search.svg'); } + + .plusWrapper { border-radius: 4px; } + .plusWrapper:hover { background-color: var(--color-shape-highlight-medium); } + .icon.plus { background-image: url('~img/icon/widget/button/plus.svg'); } - .icon.arrow { background-image: url('~img/icon/widget/button/arrow.svg'); } + .icon.arrow { width: 20px !important; background-image: url('~img/icon/widget/button/arrow.svg'); } } } diff --git a/src/ts/component/block/chat.tsx b/src/ts/component/block/chat.tsx index 5d03da07bb..7a17834c04 100644 --- a/src/ts/component/block/chat.tsx +++ b/src/ts/component/block/chat.tsx @@ -617,10 +617,6 @@ const BlockChat = observer(class BlockChat extends React.Component((props, ref) const isLocked = root ? root.isLocked() : false; const isTypeOrRelation = U.Object.isTypeOrRelationLayout(object.layout); const isDate = U.Object.isDateLayout(object.layout); - const showShare = S.Block.isAllowed(object.restrictions, [ I.RestrictionObject.Publish ], true) && config.experimental && !isDeleted; + const showShare = S.Block.isAllowed(object.restrictions, [ I.RestrictionObject.Publish ], true) && !isDeleted; const showRelations = !isTypeOrRelation && !isDate && !isDeleted; const showMenu = !isTypeOrRelation && !isDeleted; const cmd = keyboard.cmdSymbol(); diff --git a/src/ts/component/menu/dataview/relation/list.tsx b/src/ts/component/menu/dataview/relation/list.tsx index 71f810b29f..f6b6680f46 100644 --- a/src/ts/component/menu/dataview/relation/list.tsx +++ b/src/ts/component/menu/dataview/relation/list.tsx @@ -5,7 +5,7 @@ import arrayMove from 'array-move'; import { AutoSizer, CellMeasurer, InfiniteLoader, List as VList, CellMeasurerCache } from 'react-virtualized'; import { SortableContainer, SortableElement, SortableHandle } from 'react-sortable-hoc'; import { Icon, Switch } from 'Component'; -import { I, C, S, J, Relation, keyboard, Dataview, translate } from 'Lib'; +import { I, C, S, J, Relation, keyboard, Dataview, translate, analytics } from 'Lib'; const HEIGHT = 28; const LIMIT = 20; @@ -288,7 +288,6 @@ const MenuRelationList = observer(class MenuRelationList extends React.Component }; onSortEnd (result: any) { - const { config } = S.Common; const { oldIndex, newIndex } = result; const { param } = this.props; const { data } = param; @@ -305,8 +304,12 @@ const MenuRelationList = observer(class MenuRelationList extends React.Component const { data } = param; const { rootId, blockId, getView } = data; const view = getView(); + const object = S.Detail.get(rootId, rootId); + const relation = S.Record.getRelationByKey(item.relationKey); C.BlockDataviewViewRelationReplace(rootId, blockId, view.id, item.relationKey, { ...item, isVisible: v }); + + analytics.event('ShowDataviewRelation', { type: v ? 'True' : 'False', relationKey: item.relationKey, format: relation.format, objectType: object.type }); }; onScroll ({ scrollTop }) { diff --git a/src/ts/component/menu/publish.tsx b/src/ts/component/menu/publish.tsx index 955d37f13a..482367c717 100644 --- a/src/ts/component/menu/publish.tsx +++ b/src/ts/component/menu/publish.tsx @@ -58,10 +58,10 @@ const MenuPublish = observer(forwardRef((props, ref) => { const onPublish = (isUpdate?: boolean) => { const analyticsName = isUpdate ? 'ShareObjectUpdate' : 'ShareObjectPublish'; - publishRef.current.setLoading(true); + publishRef.current?.setLoading(true); C.PublishingCreate(S.Common.space, rootId, slug, joinRef.current?.getValue(), (message: any) => { - publishRef.current.setLoading(false); + publishRef.current?.setLoading(false); if (message.error.code) { setError(message.error.description); @@ -80,10 +80,10 @@ const MenuPublish = observer(forwardRef((props, ref) => { }; const onUnpublish = () => { - unpublishRef.current.setLoading(true); + unpublishRef.current?.setLoading(true); C.PublishingRemove(S.Common.space, rootId, (message: any) => { - unpublishRef.current.setLoading(false); + unpublishRef.current?.setLoading(false); if (message.error.code) { setError(message.error.description); @@ -138,13 +138,12 @@ const MenuPublish = observer(forwardRef((props, ref) => { }; const setSlugHander = v => setSlug(U.Common.slug(v)); - const onUrlClick = () => Action.openUrl(url); let buttons = []; if (isStatusLoaded && isOnline) { if (status === null) { - buttons.push({ text: translate('menuPublishButtonPublish'), ref: publishRef, onClick: onPublish }); + buttons.push({ text: translate('menuPublishButtonPublish'), ref: publishRef, onClick: () => onPublish() }); } else { buttons = buttons.concat([ { text: translate('menuPublishButtonUnpublish'), color: 'blank', ref: unpublishRef, onClick: onUnpublish }, @@ -186,7 +185,15 @@ const MenuPublish = observer(forwardRef((props, ref) => { onChange={(e, v) => setSlugHander(v)} maxLength={300} /> -