forked from pool/bitwarden
Compare commits
89 Commits
Author | SHA256 | Date | |
---|---|---|---|
c8891acdf4 | |||
e04adb52fe | |||
0c14e703c8 | |||
14527ac1e2 | |||
817f7eb1e6 | |||
1879290dda | |||
518ee7f49f | |||
373e10af3a | |||
ef9eeed95b | |||
245e5b030b | |||
6c2af2ebb3 | |||
4395097d0a | |||
06de2b2e21 | |||
b8041c0061 | |||
81ad61b130 | |||
2ebf1a20d8 | |||
cc71958096 | |||
97098ef571 | |||
bf1ae5a5b7 | |||
0f3025cf24 | |||
5f15f99fe2 | |||
aff0d8be92 | |||
203487db18 | |||
f4be295ede | |||
ef14054aaa | |||
9a435f975d | |||
85b33263f1 | |||
cb1098533d | |||
381d9976c3 | |||
093c016152 | |||
6d18d45b37 | |||
ab401b8f19 | |||
e6d4c5c07a | |||
ee51c68d6b | |||
2dc18e14b6 | |||
58ff3794d2 | |||
25bdc8d104 | |||
ec0f56810a | |||
01775b4a27 | |||
73489982b4 | |||
de6fcde0f6 | |||
a9539965c2 | |||
3ef9eac4b9 | |||
7d335e2608 | |||
952723abfb | |||
de66c4f16e | |||
8aa3fff72f | |||
42bc00c433 | |||
7fe9f85694 | |||
235695b4f0 | |||
dc4362cf29 | |||
c30598b81a | |||
415cec4959 | |||
24c7f27303 | |||
04a79b9ef3 | |||
c56016a790 | |||
ea6223d35c | |||
f2e8b0e600 | |||
15404df60a | |||
a73cdd39e1 | |||
9507fc8256 | |||
41cb30ff25 | |||
7532c32ebc | |||
ee99ca0e14 | |||
3dd18a4328 | |||
6994966188 | |||
558ddff0e5 | |||
29cae5f217 | |||
7490891475 | |||
79a40b373f | |||
d37c23f722 | |||
7bdaf6f926 | |||
6d732fb125 | |||
8f5da224b7 | |||
f265219f31 | |||
0d8ae14831 | |||
aa0b39c73d | |||
ed930e60da | |||
bdb427cdae | |||
dd64bde7f9 | |||
6c66e5225f | |||
a78a211915 | |||
33c25af384 | |||
8a09d67a5d | |||
d981972cab | |||
8827cae0a6 | |||
e84e0d988f | |||
3f2101f6cf | |||
6ca83b2671 |
4
_service
4
_service
@@ -2,8 +2,8 @@
|
||||
<service name="obs_scm" mode="manual">
|
||||
<param name="scm">git</param>
|
||||
<param name="url">https://github.com/bitwarden/clients.git</param>
|
||||
<param name="revision">desktop-v2024.8.2</param>
|
||||
<param name="version">2024.8.2</param>
|
||||
<param name="revision">desktop-v2025.8.2</param>
|
||||
<param name="version">2025.8.2</param>
|
||||
<param name="filename">bitwarden</param>
|
||||
<param name="exclude">bitwarden_license/*</param>
|
||||
<!-- The code in bitwarden_license MUST NOT be included in published tarballs as it is non-redistributable! -->
|
||||
|
@@ -1,25 +0,0 @@
|
||||
Remove dependency on node-pre-gyp which brings a lot of garbage
|
||||
|
||||
--- bitwarden/node_modules/argon2/argon2.js.old 2023-02-18 17:54:54.041287237 +0100
|
||||
+++ bitwarden/node_modules/argon2/argon2.js 2023-02-18 19:49:49.145206908 +0100
|
||||
@@ -3,9 +3,8 @@
|
||||
const { randomBytes, timingSafeEqual } = require("crypto");
|
||||
const path = require("path");
|
||||
const { promisify } = require("util");
|
||||
-const binary = require("@mapbox/node-pre-gyp");
|
||||
|
||||
-const bindingPath = binary.find(path.resolve(__dirname, "./package.json"));
|
||||
+const bindingPath = "./lib/binding/napi-v3/argon2.node"
|
||||
const { hash: _hash } = require(bindingPath);
|
||||
|
||||
const { deserialize, serialize } = require("@phc/format");
|
||||
--- bitwarden/node_modules/argon2/package.json.old 2023-02-18 17:54:54.141337239 +0100
|
||||
+++ bitwarden/node_modules/argon2/package.json 2023-02-18 19:51:32.473209049 +0100
|
||||
@@ -46,7 +46,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/ranisalt/node-argon2#readme",
|
||||
"dependencies": {
|
||||
- "@mapbox/node-pre-gyp": "^1.0.11",
|
||||
"@phc/format": "^1.0.0",
|
||||
"node-addon-api": "^7.0.0"
|
||||
},
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:935ad4966f10fcfbdac1784f248f800c7c4bb17834a67dcdd5b9b0e3061db518
|
||||
size 37969933
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1436703e869d9c2735117e4f65948f707281f0eee0c8e287516da11516e9baa8
|
||||
size 39058445
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4e67c98c75ab6b7d7a512f7ad8917fac956d7ce37ee4ed688c927dba433f66bd
|
||||
size 40005133
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a425511c3fd8e9c41079df4bbe7afd8f9678ada7902f322c3f2aa20f3fbcdae7
|
||||
size 41812493
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:69fdfe866a500de39e5044fe31b392ede84ddd8786d8f70f3ae358a2230126a5
|
||||
size 41812493
|
3
bitwarden-2025.8.2.obscpio
Normal file
3
bitwarden-2025.8.2.obscpio
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2fb6c96850cbb1b1ce30d32bf33870a0cb0ddd0f69a3ba6f90f2837976ff5d01
|
||||
size 49946125
|
@@ -1,3 +1,77 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Aug 30 10:19:12 UTC 2025 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- New upstream release 2025.8.2
|
||||
* Show website icons when viewing an item
|
||||
* Updated flow for assigning items to collections
|
||||
* Removed setting for requiring password or PIN on app-start when using biometric unlock.
|
||||
Password or PIN now always required on Linux
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 25 09:34:30 UTC 2025 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- New upstream release 2025.7.0
|
||||
* no changelog provided
|
||||
- Drop no longer relevant patches
|
||||
* remove-argon2-browser.patch
|
||||
* system-libargon2.patch
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jul 2 19:53:15 UTC 2025 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- Update to 2025.6.1
|
||||
* Bitwarden 2025.x is a major rewrite of the application,
|
||||
moving some backend code to a separate wasm module
|
||||
* Updated UI for two-step login with security keys
|
||||
* Added location to login with device requests
|
||||
* Added support for two-step login with security keys on Linux
|
||||
* Added verification of logins from unrecognized devices
|
||||
* Can now generate SSH keys
|
||||
- Drop remove-sdk-internal.patch as we now actually use bitwarden-sdk-internal
|
||||
- Add system-roboto-font.patch
|
||||
- Add cxxbridge-cmd.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 12 18:40:10 UTC 2024 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- New upstream release 2024.12.0
|
||||
* Added new SSH agent
|
||||
* Added new item type for SSH keys
|
||||
* Added new import options
|
||||
* fix: Add new item should set item type
|
||||
* Desktop edit folder button visibility
|
||||
* Import TOTP with ZohoVault CSV importer
|
||||
* fix BufferSource conversions
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 21 18:06:28 UTC 2024 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- New upstream release 2024.11.2
|
||||
* Revert the passphrase minimum back to 3 words
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 15 05:34:33 UTC 2024 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- New upstream release 2024.11.0
|
||||
* Security update for generating passphrases
|
||||
* Enable email verification for account creation
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 25 20:27:27 UTC 2024 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- New upstream release 2024.10.0
|
||||
* no changelog provided
|
||||
- Add native-messaging.main-fix-path.patch
|
||||
- Remove a temporarily-nonfree new dependency that is currently dead code (gh#bitwarden/clients#11611)
|
||||
* add remove-sdk-internal.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 19 17:13:10 UTC 2024 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
- New upstream release 2024.9.0
|
||||
* no changelog provided
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 12 14:39:24 UTC 2024 - Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
name: bitwarden
|
||||
version: 2024.8.2
|
||||
mtime: 1725557694
|
||||
commit: 0a3cf4772e79f8acbc297adcae6b39802ebb9eae
|
||||
version: 2025.8.2
|
||||
mtime: 1756400486
|
||||
commit: 5b1e500544260610dad315bdb45a87566e85f9fa
|
||||
|
@@ -20,13 +20,15 @@
|
||||
#not running the tests on OBS — extremely flaky
|
||||
%bcond_with test_rust
|
||||
|
||||
%global sdk_internal_req_version 0.2.0~main.242
|
||||
|
||||
|
||||
Name: bitwarden
|
||||
Version: 2024.8.2
|
||||
Version: 2025.8.2
|
||||
Release: 0
|
||||
Summary: A secure and free password manager for all of your devices
|
||||
Group: Productivity/Security
|
||||
License: GPL-3.0-only and MIT and (Apache-2.0 or MIT)
|
||||
License: (Apache-2.0 OR MIT) AND (Apache-2.0 OR BSL-1.0) AND BSD-3-Clause AND GPL-3.0-only AND MIT AND (MIT OR Unlicense) AND MPL-2.0 AND Unicode-3.0
|
||||
URL: https://github.com/bitwarden/clients
|
||||
|
||||
#x86 electron requires SSE2
|
||||
@@ -57,14 +59,17 @@ Patch0: remove-unnecessary-deps.patch
|
||||
Patch1: fix-desktop-file.patch
|
||||
Patch3: do-not-install-font-privately.patch
|
||||
Patch4: desktop_native-rust-arch.patch
|
||||
Patch5: remove-argon2-browser.patch
|
||||
Patch7: bug-reporting-url.patch
|
||||
Patch8: no-sourcemaps.patch
|
||||
Patch9: main-getPath-exe.patch
|
||||
Patch10: native-messaging.main-fix-path.patch
|
||||
|
||||
|
||||
#patches to use system libs
|
||||
Patch1000: system-libargon2.patch
|
||||
Patch1001: system-roboto-font.patch
|
||||
|
||||
#patches to fix interaction with other software
|
||||
Patch2000: cxxbridge-cmd.patch
|
||||
|
||||
#patches to fix upstream hostility (DRM etc.)
|
||||
Patch4000: remove-esbuild-version-check.patch
|
||||
@@ -90,11 +95,9 @@ BuildRequires: fdupes
|
||||
BuildRequires: fontpackages-devel
|
||||
BuildRequires: hicolor-icon-theme
|
||||
BuildRequires: jq
|
||||
%if 0%{?suse_version}
|
||||
BuildRequires: nodejs-packaging
|
||||
%endif
|
||||
BuildRequires: nodejs-bitwarden-sdk-internal = %sdk_internal_req_version
|
||||
BuildRequires: nodejs-electron-devel
|
||||
BuildRequires: pkgconfig(libargon2)
|
||||
BuildRequires: sed
|
||||
BuildRequires: zstd
|
||||
#Tools used by npm
|
||||
@@ -113,8 +116,9 @@ BuildRequires: dbus-1-daemon
|
||||
%endif
|
||||
%endif
|
||||
|
||||
Requires: (google-opensans-fonts or open-sans-fonts)
|
||||
Requires: bitwarden-sdk-internal = %sdk_internal_req_version
|
||||
Requires: nodejs-electron%{_isa}
|
||||
Requires: google-roboto-fonts
|
||||
|
||||
%global __requires_exclude ^npm(.*)|^nodejs(.*)
|
||||
%global __provides_exclude ^npm(.*)|^nodejs(.*)|^lib.*\\.so.*$
|
||||
@@ -127,13 +131,23 @@ Bitwarden is a free and open-source password management service that stores sens
|
||||
%prep
|
||||
%autosetup -p1 -a1
|
||||
|
||||
#Sanity check that we've declared the correct version in header
|
||||
test $(jq -cj '.version' node_modules/@bitwarden/sdk-internal/package.json | sed 's/-/~/g') = %sdk_internal_req_version
|
||||
|
||||
|
||||
rm -rvf node_modules/@bitwarden/sdk-internal
|
||||
cp -arvLT {%{nodejs_sitelib},node_modules}/@bitwarden/sdk-internal
|
||||
|
||||
#remove bundled font
|
||||
rm -v libs/angular/src/scss/webfonts/roboto.woff2
|
||||
|
||||
#fix exe path
|
||||
sed -i 's[XXXLIBDIRXXX[%{_libdir}[g' apps/desktop/src/main/native-messaging.main.ts
|
||||
|
||||
|
||||
# Remove unused postinstall script (electron-rebuild)
|
||||
sed -i '/"postinstall":/d' apps/desktop/package.json
|
||||
|
||||
#Remove bundled open sans
|
||||
cp -v /dev/null libs/angular/src/scss/webfonts.css
|
||||
rm -rvf libs/angular/src/scss/webfonts
|
||||
|
||||
|
||||
|
||||
@@ -149,7 +163,12 @@ cd apps/desktop/desktop_native
|
||||
rm -rf vendor/wayland-protocols/protocols
|
||||
ln -svT /usr/share/wayland-protocols vendor/wayland-protocols/protocols
|
||||
# https://blogs.gnome.org/mcatanzaro/2020/05/18/patching-vendored-rust-dependencies/
|
||||
for i in wayland-protocols libloading system-deps; do
|
||||
for i in \
|
||||
wayland-protocols \
|
||||
libloading \
|
||||
pkcs5 \
|
||||
aes-gcm \
|
||||
; do
|
||||
pushd vendor/$i
|
||||
jq -cj '.files={}' .cargo-checksum.json >tmp && mv tmp .cargo-checksum.json && popd
|
||||
done
|
||||
@@ -187,6 +206,8 @@ auditable='auditable -vv'
|
||||
cd apps/desktop
|
||||
pushd desktop_native
|
||||
cargo -vv $auditable rustc --offline --release --package desktop_napi --lib --crate-type cdylib
|
||||
#RUSTFLAGS="$RUSTFLAGS -Crelocation-model=pie"
|
||||
cargo -vv $auditable rustc --offline --release --package desktop_proxy --bin desktop_proxy -- -Crelocation-model=pie
|
||||
popd
|
||||
|
||||
npm run build
|
||||
@@ -197,16 +218,17 @@ cd build
|
||||
mkdir -pv node_modules/@bitwarden/desktop-napi
|
||||
cp -plv ../desktop_native/napi/{package.json,index.js} -t node_modules/@bitwarden/desktop-napi
|
||||
cp -plvT ../desktop_native/target/release/*.so node_modules/@bitwarden/desktop-napi/desktop_napi.node
|
||||
rm -fv ../../../node_modules/argon2/build-tmp-napi-v3/node_gyp_bins/python3
|
||||
cp -plvr ../../../node_modules/argon2 -t node_modules/
|
||||
cp -plvr ../../../node_modules/node-gyp-build -t node_modules/
|
||||
cp -plvr '../../../node_modules/@phc' -t node_modules/
|
||||
cp -plv -t . ../desktop_native/target/release/desktop_proxy
|
||||
|
||||
|
||||
%install
|
||||
cd %{_builddir}/bitwarden-%{version}/apps/desktop
|
||||
mkdir -pv %{buildroot}%{_libdir}
|
||||
cp -plr build %{buildroot}%{_libdir}/%{name}
|
||||
cp -ar build %{buildroot}%{_libdir}/%{name}
|
||||
for i in %{buildroot}%{_libdir}/%{name}/*.wasm; do
|
||||
cmp %{_datadir}/bitwarden/*.wasm "$i"
|
||||
ln -svf %{_datadir}/bitwarden/*.wasm "$i"
|
||||
done
|
||||
for i in 16 32 64 128 256 512 1024
|
||||
do
|
||||
install -pvDm644 resources/icons/${i}x${i}.png "%{buildroot}%{_datadir}/icons/hicolor/${i}x${i}/apps/%{name}.png"
|
||||
@@ -258,6 +280,7 @@ find -name '.gitignore' -type f -print -delete
|
||||
#Fix file mode
|
||||
find . -type f -exec chmod 644 {} \;
|
||||
find . -name '*.node' -exec chmod 755 {} \;
|
||||
chmod 755 desktop_proxy
|
||||
|
||||
# Remove empty directories
|
||||
find . -type d -empty -print -delete
|
||||
|
33
cxxbridge-cmd.patch
Normal file
33
cxxbridge-cmd.patch
Normal file
@@ -0,0 +1,33 @@
|
||||
Work around a bug in cargo-vendor-filterer causing this:
|
||||
|
||||
+ cargo -vv auditable -vv rustc --offline --release --package desktop_napi --lib --crate-type cdylib
|
||||
warning: both `/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/.cargo/config` and `/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/.cargo/config.toml` exist. Using `/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/.cargo/config`
|
||||
warning: both `/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/.cargo/config` and `/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/.cargo/config.toml` exist. Using `/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/.cargo/config`
|
||||
error: failed to get `anyhow` as a dependency of package `desktop_napi v0.0.0 (/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/napi)`
|
||||
Caused by:
|
||||
failed to load source for dependency `anyhow`
|
||||
Caused by:
|
||||
Unable to update registry `crates-io`
|
||||
Caused by:
|
||||
failed to update replaced source registry `crates-io`
|
||||
Caused by:
|
||||
failed to parse manifest at `/home/abuild/rpmbuild/BUILD/bitwarden-2025.1.2/apps/desktop/desktop_native/vendor/cxxbridge-cmd/Cargo.toml`
|
||||
Caused by:
|
||||
no targets specified in the manifest
|
||||
either src/lib.rs, src/main.rs, a [lib] section, or [[bin]] section must be present
|
||||
|
||||
|
||||
--- clients/apps/desktop/desktop_native/vendor/cxxbridge-cmd/Cargo.toml.orig 2025-01-23 19:34:35.524748802 +0100
|
||||
+++ clients/apps/desktop/desktop_native/vendor/cxxbridge-cmd/Cargo.toml 2025-01-23 19:58:25.464540529 +0100
|
||||
@@ -20,6 +20,11 @@ default-features = false
|
||||
features = ["clone-impls", "full", "parsing", "printing"]
|
||||
version = "2.0.46"
|
||||
|
||||
+[lib]
|
||||
+doc-scrape-examples = false
|
||||
+name = "cxxbridge_cmd"
|
||||
+path = "src/lib.rs"
|
||||
+
|
||||
[features]
|
||||
experimental-async-fn = []
|
||||
|
@@ -1,208 +1,131 @@
|
||||
Replace wrong path to Rust native module with something we actually control (we aren't using the napi-rs script which is awful).
|
||||
I have no idea wtf musl is even doing there, as Electron is officially supported only on GNU systems.
|
||||
|
||||
--- clients/apps/desktop/desktop_native/napi/index.js.orig 2024-07-15 19:10:33.919215714 +0200
|
||||
+++ clients/apps/desktop/desktop_native/napi/index.js 2024-07-15 19:33:23.753781579 +0200
|
||||
@@ -1,203 +1,7 @@
|
||||
-const { existsSync, readFileSync } = require('fs')
|
||||
-const { join } = require('path')
|
||||
--- clients/apps/desktop/desktop_native/napi/index.js.orig 2025-01-23 19:29:20.654791775 +0100
|
||||
+++ clients/apps/desktop/desktop_native/napi/index.js 2025-01-23 19:40:31.124702070 +0100
|
||||
@@ -1,126 +1,7 @@
|
||||
-const { existsSync } = require("fs");
|
||||
-const { join } = require("path");
|
||||
-
|
||||
-const { platform, arch } = process
|
||||
-const { platform, arch } = process;
|
||||
-
|
||||
let nativeBinding = null
|
||||
-let localFileExisted = false
|
||||
let loadError = null
|
||||
let nativeBinding = null;
|
||||
-let localFileExisted = false;
|
||||
let loadError = null;
|
||||
|
||||
-function isMusl() {
|
||||
- // For Node 10
|
||||
- if (!process.report || typeof process.report.getReport !== 'function') {
|
||||
- try {
|
||||
- return readFileSync('/usr/bin/ldd', 'utf8').includes('musl')
|
||||
- } catch (e) {
|
||||
- return true
|
||||
-function loadFirstAvailable(localFiles, nodeModule) {
|
||||
- for (const localFile of localFiles) {
|
||||
- if (existsSync(join(__dirname, localFile))) {
|
||||
- return require(`./${localFile}`);
|
||||
- }
|
||||
- } else {
|
||||
- const { glibcVersionRuntime } = process.report.getReport().header
|
||||
- return !glibcVersionRuntime
|
||||
- }
|
||||
-
|
||||
- require(nodeModule);
|
||||
-}
|
||||
-
|
||||
-switch (platform) {
|
||||
- case 'android':
|
||||
- case "android":
|
||||
- switch (arch) {
|
||||
- case 'arm64':
|
||||
- localFileExisted = existsSync(join(__dirname, 'desktop_napi.android-arm64.node'))
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.android-arm64.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-android-arm64')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case 'arm':
|
||||
- localFileExisted = existsSync(join(__dirname, 'desktop_napi.android-arm-eabi.node'))
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.android-arm-eabi.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-android-arm-eabi')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case "arm64":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.android-arm64.node"],
|
||||
- "@bitwarden/desktop-napi-android-arm64",
|
||||
- );
|
||||
- break;
|
||||
- case "arm":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.android-arm.node"],
|
||||
- "@bitwarden/desktop-napi-android-arm",
|
||||
- );
|
||||
- break;
|
||||
- default:
|
||||
- throw new Error(`Unsupported architecture on Android ${arch}`)
|
||||
- throw new Error(`Unsupported architecture on Android ${arch}`);
|
||||
- }
|
||||
- break
|
||||
- case 'win32':
|
||||
- break;
|
||||
- case "win32":
|
||||
- switch (arch) {
|
||||
- case 'x64':
|
||||
- localFileExisted = existsSync(
|
||||
- join(__dirname, 'desktop_napi.win32-x64-msvc.node')
|
||||
- )
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.win32-x64-msvc.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-win32-x64-msvc')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case 'ia32':
|
||||
- localFileExisted = existsSync(
|
||||
- join(__dirname, 'desktop_napi.win32-ia32-msvc.node')
|
||||
- )
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.win32-ia32-msvc.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-win32-ia32-msvc')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case 'arm64':
|
||||
- localFileExisted = existsSync(
|
||||
- join(__dirname, 'desktop_napi.win32-arm64-msvc.node')
|
||||
- )
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.win32-arm64-msvc.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-win32-arm64-msvc')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case "x64":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.win32-x64-msvc.node"],
|
||||
- "@bitwarden/desktop-napi-win32-x64-msvc",
|
||||
- );
|
||||
- break;
|
||||
- case "ia32":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.win32-ia32-msvc.node"],
|
||||
- "@bitwarden/desktop-napi-win32-ia32-msvc",
|
||||
- );
|
||||
- break;
|
||||
- case "arm64":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.win32-arm64-msvc.node"],
|
||||
- "@bitwarden/desktop-napi-win32-arm64-msvc",
|
||||
- );
|
||||
- break;
|
||||
- default:
|
||||
- throw new Error(`Unsupported architecture on Windows: ${arch}`)
|
||||
- throw new Error(`Unsupported architecture on Windows: ${arch}`);
|
||||
- }
|
||||
- break
|
||||
- case 'darwin':
|
||||
- break;
|
||||
- case "darwin":
|
||||
- switch (arch) {
|
||||
- case 'x64':
|
||||
- localFileExisted = existsSync(join(__dirname, 'desktop_napi.darwin-x64.node'))
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.darwin-x64.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-darwin-x64')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case 'arm64':
|
||||
- localFileExisted = existsSync(
|
||||
- join(__dirname, 'desktop_napi.darwin-arm64.node')
|
||||
- )
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.darwin-arm64.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-darwin-arm64')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case "x64":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.darwin-x64.node"],
|
||||
- "@bitwarden/desktop-napi-darwin-x64",
|
||||
- );
|
||||
- break;
|
||||
- case "arm64":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.darwin-arm64.node"],
|
||||
- "@bitwarden/desktop-napi-darwin-arm64",
|
||||
- );
|
||||
- break;
|
||||
- default:
|
||||
- throw new Error(`Unsupported architecture on macOS: ${arch}`)
|
||||
- throw new Error(`Unsupported architecture on macOS: ${arch}`);
|
||||
- }
|
||||
- break
|
||||
- case 'freebsd':
|
||||
- if (arch !== 'x64') {
|
||||
- throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
|
||||
- }
|
||||
- localFileExisted = existsSync(join(__dirname, 'desktop_napi.freebsd-x64.node'))
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.freebsd-x64.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-freebsd-x64')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case 'linux':
|
||||
- break;
|
||||
- case "freebsd":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.freebsd-x64.node"],
|
||||
- "@bitwarden/desktop-napi-freebsd-x64",
|
||||
- );
|
||||
- break;
|
||||
- case "linux":
|
||||
- switch (arch) {
|
||||
- case 'x64':
|
||||
- localFileExisted = existsSync(
|
||||
- join(__dirname, 'desktop_napi.linux-x64-musl.node')
|
||||
- )
|
||||
- case "x64":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.linux-x64-musl.node", "desktop_napi.linux-x64-gnu.node"],
|
||||
- "@bitwarden/desktop-napi-linux-x64-musl",
|
||||
- );
|
||||
- break;
|
||||
- case "arm64":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.linux-arm64-musl.node", "desktop_napi.linux-arm64-gnu.node"],
|
||||
- "@bitwarden/desktop-napi-linux-arm64-musl",
|
||||
- );
|
||||
- break;
|
||||
- case "arm":
|
||||
- nativeBinding = loadFirstAvailable(
|
||||
- ["desktop_napi.linux-arm-musl.node", "desktop_napi.linux-arm-gnu.node"],
|
||||
- "@bitwarden/desktop-napi-linux-arm-musl",
|
||||
- );
|
||||
- localFileExisted = existsSync(join(__dirname, "desktop_napi.linux-arm-gnueabihf.node"));
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.linux-x64-musl.node')
|
||||
- nativeBinding = require("./desktop_napi.linux-arm-gnueabihf.node");
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-linux-x64-musl')
|
||||
- nativeBinding = require("@bitwarden/desktop-napi-linux-arm-gnueabihf");
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- loadError = e;
|
||||
- }
|
||||
- break
|
||||
- case 'arm64':
|
||||
- localFileExisted = existsSync(
|
||||
- join(__dirname, 'desktop_napi.linux-arm64-musl.node')
|
||||
- )
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.linux-arm64-musl.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-linux-arm64-musl')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- case 'arm':
|
||||
- localFileExisted = existsSync(
|
||||
- join(__dirname, 'desktop_napi.linux-arm-gnueabihf.node')
|
||||
- )
|
||||
- try {
|
||||
- if (localFileExisted) {
|
||||
- nativeBinding = require('./desktop_napi.linux-arm-gnueabihf.node')
|
||||
- } else {
|
||||
- nativeBinding = require('@bitwarden/desktop-napi-linux-arm-gnueabihf')
|
||||
- }
|
||||
- } catch (e) {
|
||||
- loadError = e
|
||||
- }
|
||||
- break
|
||||
- break;
|
||||
- default:
|
||||
- throw new Error(`Unsupported architecture on Linux: ${arch}`)
|
||||
- throw new Error(`Unsupported architecture on Linux: ${arch}`);
|
||||
- }
|
||||
- break
|
||||
- break;
|
||||
- default:
|
||||
- throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
|
||||
- throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`);
|
||||
-}
|
||||
+nativeBinding = require('./desktop_napi.node')
|
||||
|
||||
|
@@ -2,12 +2,12 @@ This patch is required to make "Start automatically on login" work
|
||||
|
||||
--- a/apps/desktop/src/main/messaging.main.ts
|
||||
+++ b/apps/desktop/src/main/messaging.main.ts
|
||||
@@ -114,7 +114,7 @@
|
||||
@@ -136,7 +136,7 @@ export class MessagingMain {
|
||||
Version=${app.getVersion()}
|
||||
Name=Bitwarden
|
||||
Comment=Bitwarden startup script
|
||||
-Exec=${app.getPath("exe")}
|
||||
+Exec=bitwarden-desktop
|
||||
- Exec=${app.getPath("exe")}
|
||||
+ Exec=bitwarden-desktop
|
||||
StartupNotify=false
|
||||
Terminal=false`;
|
||||
|
||||
|
@@ -1,11 +1,11 @@
|
||||
--- bitwarden-2024.8.2/apps/desktop/src/main.ts.orig 2024-09-05 19:34:54.000000000 +0200
|
||||
+++ bitwarden-2024.8.2/apps/desktop/src/main.ts 2024-09-12 16:26:40.135229235 +0200
|
||||
@@ -218,7 +218,7 @@ export class Main {
|
||||
--- clients/apps/desktop/src/main.ts.orig 2024-10-17 19:47:51.775405137 +0200
|
||||
+++ clients/apps/desktop/src/main.ts 2024-10-17 21:04:06.768260922 +0200
|
||||
@@ -231,7 +231,7 @@ export class Main {
|
||||
this.logService,
|
||||
this.windowMain,
|
||||
app.getPath("userData"),
|
||||
- app.getPath("exe"),
|
||||
+ '/usr/bin/bitwarden-desktop',
|
||||
app.getAppPath(),
|
||||
);
|
||||
|
||||
this.desktopAutofillSettingsService = new DesktopAutofillSettingsService(stateProvider);
|
||||
|
30
native-messaging.main-fix-path.patch
Normal file
30
native-messaging.main-fix-path.patch
Normal file
@@ -0,0 +1,30 @@
|
||||
--- clients-desktop-v2024.11.0/apps/desktop/src/main/native-messaging.main.ts.orig 2024-11-14 21:24:39.217775953 +0100
|
||||
+++ clients-desktop-v2024.11.0/apps/desktop/src/main/native-messaging.main.ts 2024-11-14 21:37:48.932452741 +0100
|
||||
@@ -399,26 +399,7 @@ export class NativeMessagingMain {
|
||||
}
|
||||
|
||||
private binaryPath() {
|
||||
- const ext = process.platform === "win32" ? ".exe" : "";
|
||||
-
|
||||
- if (isDev()) {
|
||||
- const devPath = path.join(
|
||||
- this.appPath,
|
||||
- "..",
|
||||
- "desktop_native",
|
||||
- "target",
|
||||
- "debug",
|
||||
- `desktop_proxy${ext}`,
|
||||
- );
|
||||
-
|
||||
- // isDev() returns true when using a production build with ELECTRON_IS_DEV=1,
|
||||
- // so we need to fall back to the prod binary if the dev binary doesn't exist.
|
||||
- if (existsSync(devPath)) {
|
||||
- return devPath;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return path.join(path.dirname(this.exePath), `desktop_proxy${ext}`);
|
||||
+ return 'XXXLIBDIRXXX/bitwarden/desktop_proxy'
|
||||
}
|
||||
|
||||
private homedir() {
|
@@ -1,17 +1,18 @@
|
||||
--- clients/tsconfig.json.old 2023-04-26 13:30:57.000000000 +0200
|
||||
+++ clients/tsconfig.json 2023-04-26 20:15:39.879489082 +0200
|
||||
@@ -6,7 +6,7 @@
|
||||
"target": "ES2016",
|
||||
"module": "ES2020",
|
||||
"lib": ["es5", "es6", "es7", "dom", "ES2021"],
|
||||
--- clients/tsconfig.base.json 2025-07-02 20:03:23.998679344 +0200
|
||||
+++ bitwarden-2025.6.1/tsconfig.base.json 2025-07-02 21:23:52.860744260 +0200
|
||||
@@ -15,7 +15,8 @@
|
||||
"baseUrl": ".",
|
||||
"resolveJsonModule": true,
|
||||
"allowJs": true,
|
||||
- "sourceMap": true,
|
||||
+ "sourceMap": false,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"experimentalDecorators": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
--- clients/apps/desktop/webpack.renderer.js.old 2023-04-26 13:30:57.000000000 +0200
|
||||
+++ clients/apps/desktop/webpack.renderer.js 2023-04-26 20:17:42.900973173 +0200
|
||||
@@ -61,7 +61,7 @@
|
||||
+ "removeComments": true,
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@bitwarden/admin-console/common": ["./libs/admin-console/src/common"],
|
||||
--- clients/apps/desktop/webpack.renderer.js 2025-07-02 20:03:23.070679456 +0200
|
||||
+++ bitwarden-2025.6.1/apps/desktop/webpack.renderer.js 2025-07-02 21:27:05.376723459 +0200
|
||||
@@ -66,7 +61,7 @@ const common = {
|
||||
|
||||
const renderer = {
|
||||
mode: NODE_ENV,
|
||||
@@ -20,7 +21,7 @@
|
||||
target: "web",
|
||||
node: {
|
||||
__dirname: false,
|
||||
@@ -138,7 +138,7 @@
|
||||
@@ -169,7 +159,7 @@ const renderer = {
|
||||
new AngularWebpackPlugin({
|
||||
tsConfigPath: "tsconfig.renderer.json",
|
||||
entryModule: "src/app/app.module#AppModule",
|
||||
@@ -29,7 +30,7 @@
|
||||
}),
|
||||
// ref: https://github.com/angular/angular/issues/20357
|
||||
new webpack.ContextReplacementPlugin(
|
||||
@@ -150,9 +150,6 @@
|
||||
@@ -181,9 +171,6 @@ const renderer = {
|
||||
filename: "index.html",
|
||||
chunks: ["app/vendor", "app/main"],
|
||||
}),
|
||||
@@ -39,14 +40,3 @@
|
||||
new MiniCssExtractPlugin({
|
||||
filename: "[name].[contenthash].css",
|
||||
chunkFilename: "[id].[contenthash].css",
|
||||
--- clients/apps/desktop/tsconfig.json.old 2023-12-06 21:48:09.744042358 +0100
|
||||
+++ clients/apps/desktop/tsconfig.json 2023-12-06 21:53:51.341419937 +0100
|
||||
@@ -6,7 +6,7 @@
|
||||
"experimentalDecorators": true,
|
||||
"module": "ES2020",
|
||||
"target": "ES2016",
|
||||
- "sourceMap": true,
|
||||
+ "removeComments": true,
|
||||
"types": [],
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8e62ee1659f6325677411aa7c8b99d84c328a705fda82370489a4920f646ffbb
|
||||
size 35111893
|
@@ -1,49 +0,0 @@
|
||||
#!/bin/sh -eux
|
||||
|
||||
# dnf install curl gzip jq npm patch tar wget
|
||||
|
||||
PKGDIR="$(pwd)"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cd clients
|
||||
|
||||
|
||||
|
||||
#These patches touch NPM's files
|
||||
patch --verbose -p1 -b < $PKGDIR/remove-unnecessary-deps.patch
|
||||
|
||||
#remove unnecessary / non-free source
|
||||
rm -rf apps/browser apps/cli apps/web bitwarden_license
|
||||
|
||||
npm ci --verbose --ignore-scripts
|
||||
|
||||
echo ">>>>>> Remove argon2 vendor"
|
||||
rm -rf node_modules/argon2/argon2
|
||||
|
||||
echo ">>>>>> Remove non-free binaries"
|
||||
find . -type f -name "*.wasm" -print -delete
|
||||
find . -type f -name "*.jar" -print -delete
|
||||
find . -type f -name "*.exe" -print -delete
|
||||
find . -type f -name "*.node" -print -delete
|
||||
find . -type f -name "*.dll" -print -delete
|
||||
find . -type f -name "*.dylib" -print -delete
|
||||
find . -type f -name "*.so" -print -delete
|
||||
find . -type f -name "*.o" -print -delete
|
||||
find . -type f -name "*.a" -print -delete
|
||||
|
||||
#We use sponge to avoid a race condition between find and rm
|
||||
find -type f | sponge | xargs -P$(nproc) -- sh -c 'file -S "$@" | grep -v '\'' .*script'\'' | grep '\'' .*executable'\'' | tee /dev/stderr | sed '\''s/: .*//'\'' | xargs rm -fv'
|
||||
|
||||
|
||||
# Remove empty directories
|
||||
echo ">>>>>> Remove empty directories"
|
||||
find . -type d -empty -print -delete
|
||||
|
||||
|
||||
echo ">>>>>> Create tarball"
|
||||
ZSTD_CLEVEL=19 ZSTD_NBTHREADS=$(nproc) tar --zstd --sort=name -vvScf "${PKGDIR}/node-vendor.tar.zst" node_modules
|
||||
|
@@ -34,6 +34,7 @@ popd
|
||||
|
||||
echo ">>>>>> Remove non-free binaries"
|
||||
find . -type f -name "*.wasm" -print -delete
|
||||
find . -type f -name "*.wasm.js" -print -delete
|
||||
find . -type f -name "*.jar" -print -delete
|
||||
find . -type f -name "*.exe" -print -delete
|
||||
find . -type f -name "*.node" -print -delete
|
||||
|
@@ -1,65 +0,0 @@
|
||||
Remove dependency on argon-browser2 which should be dead code after https://github.com/bitwarden/clients/commit/996823169a5134da56c0e08f6e83a01e64164774
|
||||
We used to path this to use node_modules/argon2 but cannot anymore due to sandbox now being enabled; fortunately, upstream at the same time moved the crypto to main process.
|
||||
Therefore the WASM implementation in web-crypto-function should be dead code now and can be removed because we do not want to compile WASM.
|
||||
|
||||
--- bitwarden/apps/desktop/webpack.renderer.js.old 2023-02-15 19:02:44.000000000 +0100
|
||||
+++ bitwarden/apps/desktop/webpack.renderer.js 2023-02-18 18:41:53.074156675 +0100
|
||||
@@ -40,11 +40,6 @@
|
||||
},
|
||||
type: "asset/resource",
|
||||
},
|
||||
- {
|
||||
- test: /\.wasm$/,
|
||||
- loader: "base64-loader",
|
||||
- type: "javascript/auto",
|
||||
- },
|
||||
],
|
||||
},
|
||||
plugins: [],
|
||||
@@ -127,11 +122,6 @@
|
||||
test: /[\/\\]@angular[\/\\].+\.js$/,
|
||||
parser: { system: true },
|
||||
},
|
||||
- {
|
||||
- test: /\.wasm$/,
|
||||
- loader: "base64-loader",
|
||||
- type: "javascript/auto",
|
||||
- },
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
--- a/libs/common/src/platform/services/web-crypto-function.service.ts
|
||||
+++ b/libs/common/src/platform/services/web-crypto-function.service.ts
|
||||
@@ -1,4 +1,3 @@
|
||||
-import * as argon2 from "argon2-browser";
|
||||
import * as forge from "node-forge";
|
||||
|
||||
import { Utils } from "../../platform/misc/utils";
|
||||
@@ -54,24 +53,9 @@ export class WebCryptoFunctionService implements CryptoFunctionService {
|
||||
memory: number,
|
||||
parallelism: number,
|
||||
): Promise<Uint8Array> {
|
||||
- if (!this.wasmSupported) {
|
||||
- throw "Webassembly support is required for the Argon2 KDF feature.";
|
||||
- }
|
||||
-
|
||||
- const passwordArr = new Uint8Array(this.toBuf(password));
|
||||
- const saltArr = new Uint8Array(this.toBuf(salt));
|
||||
-
|
||||
- const result = await argon2.hash({
|
||||
- pass: passwordArr,
|
||||
- salt: saltArr,
|
||||
- time: iterations,
|
||||
- mem: memory,
|
||||
- parallelism: parallelism,
|
||||
- hashLen: 32,
|
||||
- type: argon2.ArgonType.Argon2id,
|
||||
- });
|
||||
- argon2.unloadRuntime();
|
||||
- return result.hash;
|
||||
+ const err="This should be unreachable dead code. If you're seeing this message, please report a bug to openSUSE maintainers because we must have made a mistake when patching."
|
||||
+ alert(err)
|
||||
+ throw err
|
||||
}
|
||||
|
||||
async hkdf(
|
@@ -1,7 +1,7 @@
|
||||
@types/semver and path-browserify is normally included transitively by storybook which we delete, adding it here explicitely because it is needed for build
|
||||
|
||||
--- clients/package.json.orig 2024-07-15 19:10:38.711610685 +0200
|
||||
+++ clients/package.json 2024-07-15 19:25:13.322024338 +0200
|
||||
--- clients/package.json.orig 2025-07-02 20:03:23.998679344 +0200
|
||||
+++ clients/package.json 2025-07-02 20:17:27.210597628 +0200
|
||||
@@ -13,7 +13,6 @@
|
||||
},
|
||||
"homepage": "https://bitwarden.com",
|
||||
@@ -10,203 +10,193 @@
|
||||
"lint": "eslint . --cache --cache-strategy content && prettier --check .",
|
||||
"lint:fix": "eslint . --cache --cache-strategy content --fix",
|
||||
"lint:clear": "rimraf .eslintcache",
|
||||
@@ -26,7 +25,7 @@
|
||||
"storybook": "ng run components:storybook",
|
||||
"build-storybook": "ng run components:build-storybook",
|
||||
"build-storybook:ci": "ng run components:build-storybook --webpack-stats-json",
|
||||
- "postinstall": "patch-package"
|
||||
+ "postinstall": "true"
|
||||
},
|
||||
"workspaces": [
|
||||
"apps/*",
|
||||
@@ -35,120 +34,44 @@
|
||||
@@ -39,115 +37,44 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "16.2.14",
|
||||
- "@angular-eslint/eslint-plugin": "16.3.1",
|
||||
- "@angular-eslint/eslint-plugin-template": "16.3.1",
|
||||
- "@angular-eslint/template-parser": "16.3.1",
|
||||
- "@angular/cli": "16.2.14",
|
||||
"@angular/compiler-cli": "16.2.12",
|
||||
- "@angular/elements": "16.2.12",
|
||||
- "@babel/core": "^7.24.6",
|
||||
"@babel/preset-env": "^7.24.6",
|
||||
- "@compodoc/compodoc": "1.1.25",
|
||||
- "@electron/notarize": "2.3.0",
|
||||
- "@electron/rebuild": "3.6.0",
|
||||
"@ngtools/webpack": "16.2.14",
|
||||
- "@storybook/addon-a11y": "7.6.19",
|
||||
- "@storybook/addon-actions": "7.6.19",
|
||||
- "@storybook/addon-designs": "7.0.9",
|
||||
- "@storybook/addon-essentials": "7.6.19",
|
||||
- "@storybook/addon-interactions": "7.6.19",
|
||||
- "@storybook/addon-links": "7.6.19",
|
||||
- "@storybook/angular": "7.6.19",
|
||||
- "@storybook/jest": "0.2.3",
|
||||
- "@storybook/testing-library": "0.2.2",
|
||||
- "@types/argon2-browser": "1.18.4",
|
||||
- "@types/chrome": "0.0.262",
|
||||
- "@types/firefox-webext-browser": "111.0.5",
|
||||
"@angular-devkit/build-angular": "19.2.14",
|
||||
- "@angular-eslint/schematics": "19.6.0",
|
||||
- "@angular/cli": "19.2.14",
|
||||
"@angular/compiler-cli": "19.2.14",
|
||||
"@babel/core": "7.24.9",
|
||||
"@babel/preset-env": "7.24.8",
|
||||
- "@compodoc/compodoc": "1.1.26",
|
||||
- "@electron/notarize": "3.0.1",
|
||||
- "@electron/rebuild": "3.7.2",
|
||||
- "@eslint/compat": "1.2.9",
|
||||
- "@lit-labs/signals": "0.1.2",
|
||||
"@ngtools/webpack": "19.2.14",
|
||||
- "@storybook/addon-a11y": "8.6.12",
|
||||
- "@storybook/addon-actions": "8.6.12",
|
||||
- "@storybook/addon-designs": "8.2.1",
|
||||
- "@storybook/addon-essentials": "8.6.12",
|
||||
- "@storybook/addon-interactions": "8.6.12",
|
||||
- "@storybook/addon-links": "8.6.12",
|
||||
- "@storybook/addon-themes": "8.6.12",
|
||||
- "@storybook/angular": "8.6.12",
|
||||
- "@storybook/manager-api": "8.6.12",
|
||||
- "@storybook/test-runner": "0.22.0",
|
||||
- "@storybook/theming": "8.6.12",
|
||||
- "@storybook/web-components-webpack5": "8.6.12",
|
||||
- "@types/chrome": "0.0.306",
|
||||
- "@types/firefox-webext-browser": "120.0.4",
|
||||
- "@types/inquirer": "8.2.10",
|
||||
"@types/jest": "29.5.12",
|
||||
- "@types/jquery": "3.5.30",
|
||||
"@types/jest": "29.5.14",
|
||||
- "@types/jsdom": "21.1.7",
|
||||
- "@types/koa": "2.14.0",
|
||||
- "@types/koa": "2.15.0",
|
||||
- "@types/koa__multer": "2.0.7",
|
||||
- "@types/koa__router": "12.0.4",
|
||||
- "@types/koa-bodyparser": "4.3.7",
|
||||
- "@types/koa-json": "2.0.23",
|
||||
- "@types/lowdb": "1.0.15",
|
||||
"@types/lunr": "2.3.7",
|
||||
"@types/node": "20.14.8",
|
||||
"@types/node": "22.15.3",
|
||||
- "@types/node-fetch": "2.6.4",
|
||||
"@types/node-forge": "1.3.11",
|
||||
"@types/node-ipc": "9.2.3",
|
||||
"@types/papaparse": "5.3.14",
|
||||
"@types/papaparse": "5.3.16",
|
||||
- "@types/proper-lockfile": "4.1.4",
|
||||
- "@types/react": "16.14.60",
|
||||
- "@types/retry": "0.12.5",
|
||||
+ "@types/semver": "^7.3.4",
|
||||
"@types/zxcvbn": "4.4.4",
|
||||
- "@typescript-eslint/eslint-plugin": "7.16.1",
|
||||
- "@typescript-eslint/parser": "7.16.1",
|
||||
"@types/zxcvbn": "4.4.5",
|
||||
- "@typescript-eslint/rule-tester": "8.31.0",
|
||||
- "@typescript-eslint/utils": "8.31.0",
|
||||
- "@webcomponents/custom-elements": "1.6.0",
|
||||
- "@yao-pkg/pkg": "^5.12.0",
|
||||
"autoprefixer": "10.4.19",
|
||||
- "babel-loader": "^9.1.3",
|
||||
- "@yao-pkg/pkg": "6.5.1",
|
||||
- "angular-eslint": "19.6.0",
|
||||
"autoprefixer": "10.4.21",
|
||||
- "axe-playwright": "2.1.0",
|
||||
"babel-loader": "9.2.1",
|
||||
- "base64-loader": "1.0.0",
|
||||
- "browserslist": "^4.23.0",
|
||||
- "chromatic": "10.9.6",
|
||||
"concurrently": "8.2.2",
|
||||
"copy-webpack-plugin": "12.0.2",
|
||||
- "browserslist": "4.23.2",
|
||||
- "chromatic": "13.1.2",
|
||||
"concurrently": "9.2.0",
|
||||
"copy-webpack-plugin": "13.0.0",
|
||||
"cross-env": "7.0.3",
|
||||
"css-loader": "6.10.0",
|
||||
"electron": "31.3.1",
|
||||
- "electron-builder": "24.13.3",
|
||||
"electron-log": "5.0.1",
|
||||
"css-loader": "7.1.2",
|
||||
"electron": "36.4.0",
|
||||
- "electron-builder": "26.0.12",
|
||||
"electron-log": "5.4.0",
|
||||
- "electron-reload": "2.0.0-alpha.1",
|
||||
"electron-store": "8.2.0",
|
||||
"electron-updater": "6.1.8",
|
||||
- "eslint": "8.57.0",
|
||||
- "eslint-config-prettier": "9.1.0",
|
||||
- "eslint-import-resolver-typescript": "3.6.1",
|
||||
- "eslint-plugin-import": "2.29.1",
|
||||
"electron-updater": "6.6.4",
|
||||
- "eslint": "9.26.0",
|
||||
- "eslint-config-prettier": "10.1.2",
|
||||
- "eslint-import-resolver-typescript": "4.3.4",
|
||||
- "eslint-plugin-import": "2.31.0",
|
||||
- "eslint-plugin-rxjs": "5.0.3",
|
||||
- "eslint-plugin-rxjs-angular": "2.0.1",
|
||||
- "eslint-plugin-storybook": "0.8.0",
|
||||
- "eslint-plugin-tailwindcss": "3.17.4",
|
||||
- "gulp": "4.0.2",
|
||||
- "gulp-filter": "9.0.1",
|
||||
- "gulp-if": "3.0.0",
|
||||
- "gulp-json-editor": "2.6.0",
|
||||
- "gulp-replace": "1.1.4",
|
||||
- "gulp-zip": "6.0.0",
|
||||
"html-loader": "5.0.0",
|
||||
- "eslint-plugin-storybook": "0.12.0",
|
||||
- "eslint-plugin-tailwindcss": "3.18.0",
|
||||
"html-loader": "5.1.0",
|
||||
- "html-webpack-injector": "1.1.4",
|
||||
"html-webpack-plugin": "5.6.0",
|
||||
- "husky": "9.1.4",
|
||||
"html-webpack-plugin": "5.6.3",
|
||||
- "husky": "9.1.7",
|
||||
"jest-diff": "29.7.0",
|
||||
- "jest-junit": "16.0.0",
|
||||
"jest-mock-extended": "3.0.7",
|
||||
- "jest-preset-angular": "14.1.1",
|
||||
- "lint-staged": "15.2.8",
|
||||
"mini-css-extract-plugin": "2.8.1",
|
||||
"node-ipc": "9.2.1",
|
||||
- "jest-preset-angular": "14.6.0",
|
||||
- "json5": "2.2.3",
|
||||
- "lint-staged": "16.0.0",
|
||||
"mini-css-extract-plugin": "2.9.2",
|
||||
- "nx": "21.1.2",
|
||||
+ "path-browserify": "^1.0.1",
|
||||
"postcss": "8.4.38",
|
||||
"postcss": "8.5.3",
|
||||
"postcss-loader": "8.1.1",
|
||||
- "prettier": "3.3.3",
|
||||
- "prettier-plugin-tailwindcss": "0.6.5",
|
||||
- "prettier": "3.6.2",
|
||||
- "prettier-plugin-tailwindcss": "0.6.11",
|
||||
- "process": "0.11.10",
|
||||
- "react": "18.3.1",
|
||||
- "react-dom": "18.3.1",
|
||||
"regedit": "^3.0.3",
|
||||
- "remark-gfm": "3.0.1",
|
||||
- "remark-gfm": "4.0.1",
|
||||
"rimraf": "6.0.1",
|
||||
"sass": "1.74.1",
|
||||
"sass-loader": "14.2.1",
|
||||
- "storybook": "7.6.19",
|
||||
- "style-loader": "3.3.4",
|
||||
- "tailwindcss": "3.4.3",
|
||||
- "ts-jest": "29.2.2",
|
||||
"ts-loader": "9.5.1",
|
||||
"tsconfig-paths-webpack-plugin": "4.1.0",
|
||||
"sass": "1.88.0",
|
||||
"sass-loader": "16.0.4",
|
||||
- "storybook": "8.6.12",
|
||||
- "style-loader": "4.0.0",
|
||||
- "tailwindcss": "3.4.17",
|
||||
- "ts-jest": "29.3.4",
|
||||
"ts-loader": "9.5.2",
|
||||
"tsconfig-paths-webpack-plugin": "4.2.0",
|
||||
- "type-fest": "2.19.0",
|
||||
"typescript": "5.1.6",
|
||||
"url": "0.11.3",
|
||||
"typescript": "5.5.4",
|
||||
- "typescript-eslint": "8.31.0",
|
||||
- "typescript-strict-plugin": "2.4.4",
|
||||
"url": "0.11.4",
|
||||
- "util": "0.12.5",
|
||||
- "wait-on": "7.2.0",
|
||||
"webpack": "5.93.0",
|
||||
- "webpack-cli": "5.1.4",
|
||||
- "webpack-dev-server": "5.0.4",
|
||||
- "wait-on": "8.0.3",
|
||||
"webpack": "5.99.7",
|
||||
- "webpack-cli": "6.0.1",
|
||||
- "webpack-dev-server": "5.2.1",
|
||||
- "webpack-node-externals": "3.0.0"
|
||||
+ "webpack-cli": "5.1.4"
|
||||
+ "webpack-cli": "6.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/animations": "16.2.12",
|
||||
@@ -160,55 +83,28 @@
|
||||
"@angular/platform-browser": "16.2.12",
|
||||
"@angular/platform-browser-dynamic": "16.2.12",
|
||||
"@angular/router": "16.2.12",
|
||||
- "@koa/multer": "3.0.2",
|
||||
- "@koa/router": "12.0.1",
|
||||
"@angular/animations": "19.2.14",
|
||||
@@ -161,51 +87,22 @@
|
||||
"@angular/platform-browser-dynamic": "19.2.14",
|
||||
"@angular/router": "19.2.14",
|
||||
"@bitwarden/sdk-internal": "0.2.0-main.242",
|
||||
- "@electron/fuses": "1.8.0",
|
||||
- "@emotion/css": "11.13.5",
|
||||
- "@koa/multer": "4.0.0",
|
||||
- "@koa/router": "13.1.0",
|
||||
"@microsoft/signalr": "8.0.7",
|
||||
"@microsoft/signalr-protocol-msgpack": "8.0.7",
|
||||
"@ng-select/ng-select": "11.2.0",
|
||||
"argon2": "0.40.1",
|
||||
- "argon2-browser": "1.18.0",
|
||||
"big-integer": "1.6.51",
|
||||
"@ng-select/ng-select": "14.9.0",
|
||||
- "@nx/devkit": "21.1.2",
|
||||
- "@nx/eslint": "21.1.2",
|
||||
- "@nx/jest": "21.1.2",
|
||||
- "@nx/js": "21.1.2",
|
||||
"big-integer": "1.6.52",
|
||||
- "bootstrap": "4.6.0",
|
||||
- "braintree-web-drop-in": "1.42.0",
|
||||
- "braintree-web-drop-in": "1.44.0",
|
||||
"buffer": "6.0.3",
|
||||
- "bufferutil": "4.0.8",
|
||||
- "bufferutil": "4.0.9",
|
||||
- "chalk": "4.1.2",
|
||||
"commander": "11.1.0",
|
||||
- "core-js": "3.36.1",
|
||||
- "form-data": "4.0.0",
|
||||
- "https-proxy-agent": "7.0.2",
|
||||
"core-js": "3.44.0",
|
||||
- "form-data": "4.0.4",
|
||||
- "https-proxy-agent": "7.0.6",
|
||||
- "inquirer": "8.2.6",
|
||||
- "jquery": "3.7.1",
|
||||
- "jsdom": "24.1.1",
|
||||
- "jsdom": "26.1.0",
|
||||
"jszip": "3.10.1",
|
||||
- "koa": "2.15.0",
|
||||
- "koa": "2.16.1",
|
||||
- "koa-bodyparser": "4.4.1",
|
||||
- "koa-json": "2.0.2",
|
||||
- "lit": "3.3.0",
|
||||
- "lowdb": "1.0.0",
|
||||
"lunr": "2.3.9",
|
||||
- "multer": "1.4.5-lts.1",
|
||||
- "ngx-infinite-scroll": "16.0.0",
|
||||
"ngx-toastr": "17.0.2",
|
||||
- "multer": "1.4.5-lts.2",
|
||||
"ngx-toastr": "19.0.0",
|
||||
"node-fetch": "2.6.12",
|
||||
"node-forge": "1.3.1",
|
||||
"nord": "0.2.1",
|
||||
"oidc-client-ts": "2.4.0",
|
||||
- "open": "8.4.2",
|
||||
"papaparse": "5.4.1",
|
||||
- "patch-package": "8.0.0",
|
||||
- "popper.js": "1.16.1",
|
||||
"oidc-client-ts": "2.4.1",
|
||||
- "open": "10.1.2",
|
||||
"papaparse": "5.5.3",
|
||||
- "proper-lockfile": "4.1.2",
|
||||
- "qrcode-parser": "2.1.3",
|
||||
- "qrious": "4.0.2",
|
||||
"rxjs": "7.8.1",
|
||||
- "semver": "7.7.2",
|
||||
- "tabbable": "6.2.0",
|
||||
"tldts": "6.1.38",
|
||||
"utf-8-validate": "6.0.4",
|
||||
"zone.js": "0.13.3",
|
||||
"tldts": "7.0.1",
|
||||
- "ts-node": "10.9.2",
|
||||
"utf-8-validate": "6.0.5",
|
||||
"zone.js": "0.15.1",
|
||||
"zxcvbn": "4.4.2"
|
||||
@@ -220,7 +115,6 @@
|
||||
"eslint-plugin-rxjs-angular": {
|
||||
"eslint": "$eslint"
|
||||
},
|
||||
"overrides": {
|
||||
- "tailwindcss": "$tailwindcss",
|
||||
"@storybook/angular": {
|
||||
"zone.js": "$zone.js"
|
||||
},
|
||||
--- clients/apps/desktop/desktop_native/napi/package.json.orig 2024-07-15 19:10:33.919215714 +0200
|
||||
+++ clients/apps/desktop/desktop_native/napi/package.json 2024-07-15 19:25:13.322024338 +0200
|
||||
@@ -10,9 +10,6 @@
|
||||
"parse5": "7.2.1",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
--- clients-desktop-v2024.10.0/apps/desktop/desktop_native/napi/package.json.orig 2024-10-17 19:25:31.222180130 +0200
|
||||
+++ clients-desktop-v2024.10.0/apps/desktop/desktop_native/napi/package.json 2024-10-17 19:43:45.262219326 +0200
|
||||
@@ -8,9 +8,6 @@
|
||||
},
|
||||
"author": "",
|
||||
"license": "GPL-3.0",
|
||||
- "devDependencies": {
|
||||
- "@napi-rs/cli": "2.16.2"
|
||||
- "@napi-rs/cli": "2.18.4"
|
||||
- },
|
||||
"napi": {
|
||||
"name": "desktop_napi",
|
||||
|
@@ -1,65 +0,0 @@
|
||||
--- clients/node_modules/argon2/binding.gyp.orig 2024-07-15 19:27:24.157408387 +0200
|
||||
+++ clients/node_modules/argon2/binding.gyp 2024-07-15 19:40:42.806528404 +0200
|
||||
@@ -20,7 +20,7 @@
|
||||
"Release": {
|
||||
"target_conditions": [
|
||||
["OS != 'win'", {
|
||||
- "cflags+": ["-fdata-sections", "-ffunction-sections", "-flto", "-fvisibility=hidden"],
|
||||
+ "cflags+": ["-fvisibility=hidden"],
|
||||
"ldflags+": ["-Wl,--gc-sections"]
|
||||
}]
|
||||
],
|
||||
@@ -29,26 +29,7 @@
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
- {
|
||||
- "target_name": "libargon2",
|
||||
- "sources": [
|
||||
- "argon2/src/argon2.c",
|
||||
- "argon2/src/blake2/blake2b.c",
|
||||
- "argon2/src/core.c",
|
||||
- "argon2/src/encoding.c",
|
||||
- "argon2/src/thread.c"
|
||||
- ],
|
||||
- "cflags+": ["-Wno-type-limits"],
|
||||
- "conditions": [
|
||||
- ["target_arch == 'ia32' or target_arch == 'x64'", {
|
||||
- "cflags+": ["-msse", "-msse2"],
|
||||
- "sources+": ["argon2/src/opt.c"]
|
||||
- }, {
|
||||
- "sources+": ["argon2/src/ref.c"]
|
||||
- }]
|
||||
- ],
|
||||
- "type": "static_library"
|
||||
- }, {
|
||||
+{
|
||||
"target_name": "argon2",
|
||||
"defines+": [
|
||||
"NAPI_VERSION=<(napi_build_version)",
|
||||
@@ -58,10 +39,15 @@
|
||||
"sources": [
|
||||
"argon2_node.cpp"
|
||||
],
|
||||
- "cflags_cc+": ["-Wall", "-Wextra", "-Wconversion", "-Wformat", "-Wnon-virtual-dtor", "-pedantic", "-Werror"],
|
||||
+ "cflags_cc+": ["-Wall", "-Wextra", "-Wconversion", "-Wformat", "-Wnon-virtual-dtor", "-pedantic"],
|
||||
"cflags_cc!": ["-fno-exceptions"],
|
||||
"include_dirs": ["<!(node -p \"require('node-addon-api').include_dir\")"],
|
||||
- "dependencies": ["libargon2"],
|
||||
+ "cflags": [
|
||||
+ "<!@(pkg-config libargon2 --cflags)",
|
||||
+ ],
|
||||
+ "libraries": [
|
||||
+ "<!@(pkg-config libargon2 --libs)",
|
||||
+ ],
|
||||
"configurations": {
|
||||
"Debug": {
|
||||
"conditions": [
|
||||
--- clients/node_modules/argon2/argon2_node.cpp.orig 2024-07-15 19:27:24.130728388 +0200
|
||||
+++ clients/node_modules/argon2/argon2_node.cpp 2024-07-15 19:42:24.944237666 +0200
|
||||
@@ -1,4 +1,4 @@
|
||||
-#include "argon2/include/argon2.h"
|
||||
+#include <argon2.h>
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <napi.h>
|
11
system-roboto-font.patch
Normal file
11
system-roboto-font.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- bitwarden-2025.5.1/libs/angular/src/scss/webfonts.css.orig 2025-06-04 21:36:27.000000000 +0200
|
||||
+++ bitwarden-2025.5.1/libs/angular/src/scss/webfonts.css 2025-06-26 21:56:31.756077843 +0200
|
||||
@@ -1,8 +0,0 @@
|
||||
-@font-face {
|
||||
- font-family: Roboto;
|
||||
- src:
|
||||
- url("webfonts/roboto.woff2") format("woff2 supports variations"),
|
||||
- url("webfonts/roboto.woff2") format("woff2-variations");
|
||||
- font-display: swap;
|
||||
- font-weight: 100 900;
|
||||
-}
|
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f336dcd548f1fdb65092ee8a86923674ff41284044c96835b5e9693f1e89f9bf
|
||||
size 43032335
|
||||
oid sha256:48496dabbcd87fae453907bcd158e9ba70d2b05360afa39ec8a64fa1f1177c52
|
||||
size 43982803
|
||||
|
Reference in New Issue
Block a user