This is notes app project, focused on security and user experience.
If you can't find a good notes solution that respect your privacy and not ugly - it is messages from the stars for you, stay tunned.
To build in dev mode run npm run dev, to run production code run npm run build.
This commands will build source files to directory dist.
To package app, you need first build it and then package it for your platform via npm run make command.
There are specific prerequisites per each platform. All instructions listed below.
Once requirements are meet
- Clone repo
git clone https://github.com/vitonsky/deepink.git - Checkout
cd deepink - Build and pack. Example for Windows:
make build artifacts
To build for Windows on Linux/macOS you can run a virtual machine via QEMU.
To setup environment
- Download QEMU
- On Linux you can run
sudo apt-get install -y virt-managerto install virtual machine manager, a GUI to manage QEMU - On macOS you can run
brew install virt-manager
- On Linux you can run
- Download and install Windows
- Optionally: Once Windows is installed, you may configure Guest Tools to enable shared clipboard and directories
- Install a guest tools to enable shared clipboard
- Download WinFSP and install. Once installed, go to "Services" find a "VirtIO-FS Service", start it and change "Startup type" in properties to an "Auto". See a video guide "Share Files between KVM Host and Windows Virtual Machine" on YouTube
- Optionally: Update
winget, a windows packages managerInvoke-WebRequest -Uri https://aka.ms/getwinget -OutFile $HOME/Downloads/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle Add-AppxPackage -Path $HOME/Downloads/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle # Optionally - update env in curren shell refreshenv
Once you will done with these steps, it is good idea to backup disk image to not do all that steps again.
To build on Windows, a dev environment is needed.
Update security policy to allow run dev tools:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope LocalMachineInstall chocolatey, a packages manager. If you have winget installed, just run
winget install -e --id Chocolatey.ChocolateyOnce chocolatey is ready, install all necessary packages (run in PowerShell as Administrator)
choco install -y git make nodejs-lts pythonTo package app for windows, a WiX Toolset v3 must be installed:
choco install -y wixtoolset --version=3.14.0
# Extend PATH to add WiX Toolset and make it visible for makers
# via PowerShell
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\Program Files (x86)\WiX Toolset v3.14\bin", "Machine")
# via cmd
setx /M PATH "%PATH%;C:\Program Files (x86)\WiX Toolset v3.14\bin"Before start build, an Xcode must be installed and user agreement must be accepted.
In case you've update your OS recently and have problems with compiling anything, it may be a problem on Xcode side. The solution is to remove and install Xcode again.
Next packages must be installed
debrpm
Error occurs on Ubuntu when run AppImage and looks like that
[31456:1101/232759.563532:FATAL:sandbox/linux/suid/client/setuid_sandbox_host.cc:166] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_DeepinGiNBDl/usr/lib/deepink/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap (core dumped)
The issue is with the AppArmor configuration in Ubuntu 24.04, not the AppImage. The change in the configuration is explained in the release notes of Ubuntu 24.04 (security reasons). For example Fedora Linux have no such problem.
To fix this error you have few options.
Run with --no-sandbox
You can just run app with no sandbox like that
./Deepink-0.0.1-x64.AppImage --no-sandbox
Disable restriction
To disable restriction for a current session run
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0this changes will be reverted back after reboot.
To persist this change, you can run
# create a local sysctl file with the setting
echo "kernel.apparmor_restrict_unprivileged_userns = 0" | sudo tee /etc/sysctl.d/local.conf
# apply now (reload all sysctl configs)
sudo sysctl --systemAdd AppArmor profile
Configure profile and write at /etc/apparmor.d/home.app.deepink
abi <abi/4.0>
include <tunables/global>
profile deepink /home/your_username/apps/deepink.AppImage flags=(unconfined) {
userns,
include if exists <local/deepink>
}
To release new version we have to
- Update version in
package.json - Create new tag
- Push changes and tag via
git push --follow-tags
CI will automatically build app for all platforms, create new release on GitHub and publish artifacts.
To publish pre release in one command run npm run release-preview.
This command will automatically bump version to something like 0.0.2-preview.5 and CI will publish it as pre-release.
We may create as many pre release versions as necessary before public release for such purposes as manual testing on specific target hardware.
Preview versions may be deleted anytime, and they will once public release will be published.
Pre release may have no descriptions.
To publish new release bump version via npm version first. For example npm version major for major version or npm version minor for a minor version.
Then push changes and tag via git push --follow-tags.
Once new release is published, changelog must be added on releases page.