Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85807350
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
17 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/.gitignore b/.gitignore
index 58c2de3..bc6cafa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,6 @@
*~
\#*
.#*
build
node_modules
TAGS
-/src/contents/ui/AvatarAdapter.qml
-/src/contents/ui/FileDialogAdapter.qml
-/src/contents/ui/FolderDialogAdapter.qml
-/src/contents/ui/ScrollablePageAdapter.qml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bf35f04..455fa52 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,121 +1,107 @@
# This file is part of libkazv.
# SPDX-FileCopyrightText: 2022-2023 tusooa <tusooa@kazv.moe>
# SPDX-License-Identifier: AGPL-3.0-or-later
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "trigger"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: $CI_COMMIT_BRANCH
- if: '$CI_COMMIT_TAG !~ /^phabricator\//'
stages:
- prepare
- lint
- build
- report
.report:
image:
name: 'reg.lily.kazv.moe/infra/phorge-ci-tools:servant'
rules:
- if: $TARGET_PHID
when: always
- when: never
before_script:
- pipelineUrl="$CI_PROJECT_URL"/-/pipelines/"$CI_PIPELINE_ID"
report-start:
extends: .report
stage: prepare
script:
- 'echo "{\"receiver\": \"$TARGET_PHID\", \"type\": \"work\", \"unit\": [{\"name\": \"GitLab CI (information only)\", \"result\": \"skip\", \"details\": \"$pipelineUrl\", \"format\": \"remarkup\"}]}" | /tools/arcanist/bin/arc call-conduit --conduit-uri https://iron.lily-is.land/ --conduit-token "$CONDUIT_TOKEN" -- harbormaster.sendmessage'
'lint:no-tabs':
stage: lint
script: |
echo 'Verify that no source file contains tabs'
! egrep -R --exclude-dir=transformed-libs --exclude-dir=Intl.js --exclude-dir=node_modules $'\t' src
rules: &build-rules
- changes: &src-chg
- Dockerfile.deps
- '**/*.cpp'
- '**/*.hpp'
- '**/CMakeLists.txt'
- '**/*.in'
- '**/*.qml'
- 'src/js/*.js'
- 'src/js/transformed-libs/*.js'
- 'packaging/**'
- 'icons/**'
.build:
stage: build
rules: *build-rules
.build-debug:
extends: .build
script: |
env JOBS=2 ./packaging/GNU-Linux/appimage/build.sh
artifacts:
paths:
- kazv-Debug.AppImage
expire_in: 1 week
.build-prod:
extends: .build
script: |
env JOBS=2 ./packaging/GNU-Linux/appimage/build-prod.sh
artifacts:
paths:
- kazv-Release.AppImage
expire_in: 1 week
-'build:GNU/Linux-amd64-debug:kf5':
- extends: .build-debug
- before_script:
- - export KF_VER=5
- image:
- name: 'reg.lily.kazv.moe/kazv/libkazv/libkazv:servant-ubuntu20.04-debug'
-
-'build:GNU/Linux-amd64-prod:kf5':
- extends: .build-prod
- before_script:
- - export KF_VER=5
- image:
- name: 'reg.lily.kazv.moe/kazv/libkazv/libkazv:servant-ubuntu20.04-prod'
-
'build:GNU/Linux-amd64-debug:kf6':
extends: .build-debug
before_script:
- export KF_VER=6
image:
name: 'reg.lily.kazv.moe/kazv/libkazv/libkazv:servant-ubuntu22.04-debug'
'build:GNU/Linux-amd64-prod:kf6':
extends: .build-prod
before_script:
- export KF_VER=6
image:
name: 'reg.lily.kazv.moe/kazv/libkazv/libkazv:servant-ubuntu22.04-prod'
report-success:
extends: .report
rules:
- if: $TARGET_PHID
when: on_success
- when: never
stage: report
script:
- 'echo "{\"receiver\": \"$TARGET_PHID\", \"type\": \"pass\"}" | /tools/arcanist/bin/arc call-conduit --conduit-uri https://iron.lily-is.land/ --conduit-token "$CONDUIT_TOKEN" -- harbormaster.sendmessage'
report-failure:
extends: .report
rules:
- if: $TARGET_PHID
when: on_failure
- when: never
stage: report
script:
- 'echo "{\"receiver\": \"$TARGET_PHID\", \"type\": \"fail\"}" | /tools/arcanist/bin/arc call-conduit --conduit-uri https://iron.lily-is.land/ --conduit-token "$CONDUIT_TOKEN" -- harbormaster.sendmessage'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4de0b9..b8ccc5a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,86 +1,76 @@
cmake_minimum_required(VERSION 3.16)
project(kazv)
include(FeatureSummary)
set(kazv_VERSION_MAJOR 0)
set(kazv_VERSION_MINOR 4)
set(kazv_VERSION_PATCH 0)
set(kazv_VERSION_STRING ${kazv_VERSION_MAJOR}.${kazv_VERSION_MINOR}.${kazv_VERSION_PATCH})
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
set(CMAKE_CXX_STANDARD 17)
if(NOT kazv_KF_QT_MAJOR_VERSION)
- set(kazv_KF_QT_MAJOR_VERSION 5)
+ set(kazv_KF_QT_MAJOR_VERSION 6)
endif()
message(STATUS "KF/Qt major version: ${kazv_KF_QT_MAJOR_VERSION}")
-
+if(NOT kazv_KF_QT_MAJOR_VERSION EQUAL 6)
+ message(FATAL_ERROR "KF/Qt major version must be 6")
+endif()
set(QT_MAJOR_VERSION ${kazv_KF_QT_MAJOR_VERSION})
set(KF_MAJOR_VERSION ${kazv_KF_QT_MAJOR_VERSION})
-if(QT_MAJOR_VERSION EQUAL 5)
- set(QT_MIN_VERSION 5.15)
-endif()
-if(KF_MAJOR_VERSION EQUAL 5)
- set(KF_MIN_VERSION 5.78)
-endif()
-
find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMSetupVersion)
include(ECMGenerateHeaders)
include(ECMPoQmTools)
include(ECMAddTests)
include(ECMQtDeclareLoggingCategory)
include(ECMDeprecationSettings)
ecm_set_disabled_deprecation_versions(
QT 5.15.14
KF 5.116.0
KCOREADDONS 5.116.0
)
find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} REQUIRED COMPONENTS
Core Gui Qml QuickControls2 Svg Concurrent Widgets
Multimedia Test Network QuickTest
)
-find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 Config KIO Notifications)
-if(KF_MAJOR_VERSION EQUAL 6)
- find_package(KF${KF_MAJOR_VERSION}KirigamiAddons REQUIRED)
-else()
- find_package(KF${KF_MAJOR_VERSION}KirigamiAddons)
-endif()
+find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami Config KIO Notifications KirigamiAddons)
find_package(Threads REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(libkazv REQUIRED)
find_package(cmark)
set(CMARK_TARGET_NAME cmark::cmark)
if(NOT cmark_FOUND)
# CMark 0.29.0 on Ubuntu 20.04 has cmark.cmake instead of cmark-config.cmake
# But that is not usable, so we fall back to pkgconfig
find_package(PkgConfig REQUIRED)
pkg_search_module(cmark libcmark IMPORTED_TARGET GLOBAL)
set(CMARK_TARGET_NAME cmark)
endif()
kde_enable_exceptions()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -foperator-names -DQT_NO_EMIT")
add_subdirectory(src)
install(PROGRAMS moe.kazv.mxc.kazv.desktop DESTINATION ${KDE_INSTALL_APPDIR})
install(FILES moe.kazv.mxc.kazv.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
install(FILES kazv.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})
install(FILES icons/kazvlogo-256.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/256x256/apps)
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff --git a/packaging/GNU-Linux/appimage/build.sh b/packaging/GNU-Linux/appimage/build.sh
index 3eb0fd4..2644a5e 100755
--- a/packaging/GNU-Linux/appimage/build.sh
+++ b/packaging/GNU-Linux/appimage/build.sh
@@ -1,127 +1,103 @@
#!/bin/bash
set -x
set -e
# Collect deps
wget https://raw.githubusercontent.com/KDE/docker-neon/Neon/stable/public.key && \
apt-key add public.key && \
rm public.key
DEP_PACKAGES=(
extra-cmake-modules
wget
weston
dbus-x11
libcmark-dev
)
if [[ $KF_VER == 5 ]]; then
- DEP_PACKAGES+=(
- qtbase5-dev
- qtdeclarative5-dev
- qtmultimedia5-dev
- qml-module-qtmultimedia
- libqt5concurrent5
- libqt5gui5
- libqt5svg5-dev
- qtquickcontrols2-5-dev
- qml-module-qtquick-layouts
- qml-module-qtquick-controls2
- qml-module-qtquick-controls
- qml-module-qt-labs-qmlmodels
- kirigami2-dev
- libkf5config-dev
- libqt5multimedia5-plugins
- qt5-gtk-platformtheme
- plasma-integration
- libkf5kio-dev
- qml-module-qttest
- qml-module-qt-labs-platform
- libkf5notifications-dev
- qml-module-qtquick-dialogs
- qml-module-org-kde-notification
- )
- cp -v packaging/GNU-Linux/appimage/kde-neon-focal.list /etc/apt/sources.list.d/
+ echo "Building on KF5 is no longer supported."
+ exit 1
else
DEP_PACKAGES+=(
qt6-base-dev
qt6-declarative-dev
qt6-multimedia-dev
qml6-module-qtmultimedia
libqt6concurrent6
libqt6gui6
libqt6svg6-dev
libqt6quickcontrols2-6
qml6-module-qtquick-controls
qml6-module-qtquick-layouts
qml6-module-qt-labs-qmlmodels
kf6-kirigami2-dev
libkf6config-dev
qt6-gtk-platformtheme
plasma-integration
libkf6kio-dev
qml6-module-qttest
qml6-module-qt-labs-platform
libkf6notifications-dev
qml6-module-qtquick-dialogs
qml6-module-org-kde-notification
kf6-kirigami-addons-dev
cmark
)
export QMAKE=qmake6
cp -v packaging/GNU-Linux/appimage/kde-neon-jammy.list /etc/apt/sources.list.d/
fi
apt-get update && \
apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" \
apt-get -y install aptitude && \
aptitude -y install "${DEP_PACKAGES[@]}"
# Actual build
mkdir -pv /run/user/test
export XDG_RUNTIME_DIR=/run/user/test
thisDir="$(readlink -f "$(dirname "$(realpath "$0")")")"
BUILD_TYPE="$1"
if [[ ! "$BUILD_TYPE" ]]; then
export BUILD_TYPE=Debug
fi
export JOBS=${JOBS:-$(( $(nproc) / 2))} DEPS_INSTALL_DIR=/opt/libkazv-deps LIBKAZV_INSTALL_DIR=/opt/libkazv KAZV_INSTALL_DIR=/usr
export LD_LIBRARY_PATH="$LIBKAZV_INSTALL_DIR/lib:$DEPS_INSTALL_DIR/lib"
mkdir build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX="$KAZV_INSTALL_DIR" \
-DCMAKE_PREFIX_PATH="$LIBKAZV_INSTALL_DIR;$DEPS_INSTALL_DIR" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -Dkazv_KF_QT_MAJOR_VERSION=$KF_VER && \
make -j$JOBS && \
make -j$JOBS DESTDIR=AppDir install && \
dbus-launch --exit-with-session -- bash "$thisDir"/test.sh
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy*.AppImage
export QML_SOURCES_PATHS=../src
./linuxdeploy-plugin-qt-x86_64.AppImage --appimage-extract
./linuxdeploy-x86_64.AppImage --appimage-extract
# https://github.com/linuxdeploy/linuxdeploy/issues/154
mv -v ./linuxdeploy-plugin-qt-x86_64.AppImage ./linuxdeploy-notplugin-qt-x86_64.AppImage
# Enable the appimage to use Plasma themes, linuxdeploy-plugin-qt will only copy the gtk3 plugin -((
mkdir -pv AppDir/usr/plugins/platformthemes/
cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/KDEPlasmaPlatformTheme.so AppDir/usr/plugins/platformthemes/ || true
cp /usr/lib/x86_64-linux-gnu/qt6/plugins/platformthemes/KDEPlasmaPlatformTheme6.so AppDir/usr/plugins/platformthemes/ || true
# Workaround "cannot mix incompatible qt versions" problem
mkdir -pv AppDir/apprun-hooks/
cp -v "$thisDir"/hooks/patch-ld-library-path.sh AppDir/apprun-hooks/
./squashfs-root/AppRun --appdir AppDir -i ../icons/kazvlogo-256.png --plugin qt --output appimage # -l /lib/x86_64-linux-gnu/libstdc++.so.6
cp kazv*.AppImage ../kazv-"$BUILD_TYPE".AppImage
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4b3047b..c94e6ac 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,115 +1,105 @@
set(KAZV_DATA_DIR ${KDE_INSTALL_DATADIR}/kazv)
set(KAZV_L10N_DIR ${KAZV_DATA_DIR}/l10n)
if(WIN32)
set(KAZV_IS_WINDOWS 1)
else()
set(KAZV_IS_WINDOWS 0)
endif()
configure_file(kazv-path-config.hpp.in kazv-path-config.hpp)
configure_file(kazv-version.cpp.in kazv-version.cpp)
configure_file(kazv-platform.hpp.in kazv-platform.hpp)
configure_file(kazv-defs.hpp.in kazv-defs.hpp)
-set(kazv_avatarAdapterFile ${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/AvatarAdapter_KAC.qml)
-if(NOT KF${KF_MAJOR_VERSION}KirigamiAddons_FOUND)
- set(kazv_avatarAdapterFile ${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/AvatarAdapter_Kirigami.qml)
-endif()
-
-configure_file(${kazv_avatarAdapterFile} ${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/AvatarAdapter.qml COPYONLY)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/FileDialogAdapter_Qt${QT_MAJOR_VERSION}.qml ${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/FileDialogAdapter.qml COPYONLY)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/FolderDialogAdapter_Qt${QT_MAJOR_VERSION}.qml ${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/FolderDialogAdapter.qml COPYONLY)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/ScrollablePageAdapter_KF${KF_MAJOR_VERSION}.qml ${CMAKE_CURRENT_SOURCE_DIR}/contents/ui/ScrollablePageAdapter.qml COPYONLY)
-
set(kazvprivlib_SRCS
qt-job-handler.cpp
qt-job.cpp
${CMAKE_CURRENT_BINARY_DIR}/kazv-version.cpp
matrix-sdk.cpp
matrix-room.cpp
matrix-room-list.cpp
matrix-room-timeline.cpp
matrix-room-member.cpp
matrix-room-member-list-model.cpp
matrix-event-reader.cpp
matrix-event-reader-list-model.cpp
matrix-event.cpp
matrix-link.cpp
meta-types.cpp
l10n-provider.cpp
qt-rand-adapter.cpp
helper.cpp
matrix-promise.cpp
kazv-util.cpp
matrix-sticker-pack.cpp
matrix-sticker.cpp
matrix-sticker-pack-list.cpp
matrix-sticker-pack-source.cpp
matrix-user-given-attrs-map.cpp
qt-promise-handler.cpp
device-mgmt/matrix-device.cpp
device-mgmt/matrix-device-list.cpp
kazv-config.cpp
kazv-io-manager.cpp
kazv-io-job.cpp
kazv-file.cpp
upload-job-model.cpp
kazv-markdown.cpp
shortcuts/shortcut-util.cpp
register-types.cpp
)
ecm_qt_declare_logging_category(kazvprivlib_SRCS
HEADER kazv-log.hpp
IDENTIFIER kazvLog
CATEGORY_NAME moe.kazv.mxc.kazv
)
add_library(kazvprivlib STATIC ${kazvprivlib_SRCS})
target_link_libraries(kazvprivlib PUBLIC
libkazv::kazvall
Qt${QT_MAJOR_VERSION}::Core
Qt${QT_MAJOR_VERSION}::Network
Threads::Threads
Qt${QT_MAJOR_VERSION}::Gui
Qt${QT_MAJOR_VERSION}::Qml
Qt${QT_MAJOR_VERSION}::Quick
Qt${QT_MAJOR_VERSION}::QuickControls2
Qt${QT_MAJOR_VERSION}::Svg
Qt${QT_MAJOR_VERSION}::Concurrent
Qt${QT_MAJOR_VERSION}::Widgets
KF${KF_MAJOR_VERSION}::ConfigCore KF${KF_MAJOR_VERSION}::KIOCore
KF${KF_MAJOR_VERSION}::Notifications
${CMARK_TARGET_NAME}
)
target_include_directories(kazvprivlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(kazvprivlib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/device-mgmt)
set(kazv_SRCS
main.cpp
resources.qrc
)
add_executable(kazv ${kazv_SRCS})
target_link_libraries(kazv
PRIVATE
kazvprivlib
)
set(kazv_INSTALL_ARGS ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
if(NOT kazv_INSTALL_ARGS)
set(kazv_INSTALL_ARGS ${KF${KF_MAJOR_VERSION}_INSTALL_TARGETS_DEFAULT_ARGS})
endif()
install(TARGETS kazv ${kazv_INSTALL_ARGS})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/l10n/
DESTINATION ${KAZV_L10N_DIR}
FILES_MATCHING PATTERN "*.ftl"
PATTERN "*.json"
)
add_subdirectory(tests)
diff --git a/src/contents/ui/AvatarAdapter_KAC.qml b/src/contents/ui/AvatarAdapter.qml
similarity index 100%
rename from src/contents/ui/AvatarAdapter_KAC.qml
rename to src/contents/ui/AvatarAdapter.qml
diff --git a/src/contents/ui/AvatarAdapter_Kirigami.qml b/src/contents/ui/AvatarAdapter_Kirigami.qml
deleted file mode 100644
index 6639ae9..0000000
--- a/src/contents/ui/AvatarAdapter_Kirigami.qml
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This file is part of kazv.
- * SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe>
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-import QtQuick 2.15
-import org.kde.kirigami 2.20 as Kirigami
-
-Kirigami.Avatar {
-}
diff --git a/src/contents/ui/FileDialogAdapter_Qt6.qml b/src/contents/ui/FileDialogAdapter.qml
similarity index 100%
rename from src/contents/ui/FileDialogAdapter_Qt6.qml
rename to src/contents/ui/FileDialogAdapter.qml
diff --git a/src/contents/ui/FileDialogAdapter_Qt5.qml b/src/contents/ui/FileDialogAdapter_Qt5.qml
deleted file mode 100644
index dcd7dbf..0000000
--- a/src/contents/ui/FileDialogAdapter_Qt5.qml
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This file is part of kazv.
- * SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe>
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-import QtQuick 2.15
-import QtQuick.Dialogs 1.3
-
-FileDialog {
-}
diff --git a/src/contents/ui/FolderDialogAdapter_Qt6.qml b/src/contents/ui/FolderDialogAdapter.qml
similarity index 100%
rename from src/contents/ui/FolderDialogAdapter_Qt6.qml
rename to src/contents/ui/FolderDialogAdapter.qml
diff --git a/src/contents/ui/FolderDialogAdapter_Qt5.qml b/src/contents/ui/FolderDialogAdapter_Qt5.qml
deleted file mode 100644
index 2b8a491..0000000
--- a/src/contents/ui/FolderDialogAdapter_Qt5.qml
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * This file is part of kazv.
- * SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe>
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-import QtQuick 2.15
-import QtQuick.Dialogs 1.3
-
-FileDialog {
- selectFolder: true
-}
diff --git a/src/contents/ui/ScrollablePageAdapter_KF6.qml b/src/contents/ui/ScrollablePageAdapter.qml
similarity index 100%
rename from src/contents/ui/ScrollablePageAdapter_KF6.qml
rename to src/contents/ui/ScrollablePageAdapter.qml
diff --git a/src/contents/ui/ScrollablePageAdapter_KF5.qml b/src/contents/ui/ScrollablePageAdapter_KF5.qml
deleted file mode 100644
index 0c463bd..0000000
--- a/src/contents/ui/ScrollablePageAdapter_KF5.qml
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This file is part of kazv.
- * SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe>
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-import QtQuick 2.15
-import org.kde.kirigami 2.13 as Kirigami
-
-Kirigami.ScrollablePage {
-}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Wed, Oct 14, 9:47 AM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1787077
Default Alt Text
(17 KB)
Attached To
Mode
rK kazv
Attached
Detach File
Event Timeline
Log In to Comment