Compare commits

...

1263 Commits

Author SHA1 Message Date
Oscar Hinton d7674f5c91
Update README.md (#1531) 2022-05-05 15:06:09 -04:00
Jake Fink 9852f2ec22
[PS-106] update jslib (#1530) 2022-05-05 17:11:39 +02:00
Micaiah Martin fec6838f90
Updated publisher to use generic (#1529) 2022-05-05 09:51:17 -05:00
Patrick H. Lauke 55a9403ee3
[PS-540] Accessibility: remove `appBlurClick`, add `aria-expanded` to cog options, links to buttons, fix unsufficient focus indication (#1514) 2022-05-05 16:36:46 +02:00
Oscar Hinton 817856bc82
Rust improvements (#1495) 2022-05-05 16:01:09 +02:00
Micaiah Martin 508292ae39
Patched build workflow (#1527) 2022-05-04 13:59:36 -05:00
Micaiah Martin 00fd2ec03f
Update publish settings to use S3 (#1521)
* Update publish settings to use S3

* Fix formatting

* Added endpoint with new domain

* Updated S3 publisher config

* added npm CD commands for workflow later.

* Updated release workflow to publish to S3

* testing release

* Reduce aws cli output

* Remove test

* Finalize release workflow
- Reverted back testing logic
- Removed dry run check for GH release since it creates it as a draf anyways
- Removed artifact_url env as it's no longer needed.

* Remove testing values

* Merge Master

* Added endpoint in config
2022-05-04 11:19:04 -04:00
Oscar Hinton 9a954710d9
Add keytar to externals (#1520) 2022-05-03 11:03:21 +02:00
Oscar Hinton a81c3c95a4
[CP-30] Add credit card pipe (#1517) 2022-05-02 19:45:24 +02:00
Kyle Spearrin 75470dc169
Forwarded email providers to username generator (#1511)
* forward email username generation

* update jslib
2022-05-02 10:57:01 -04:00
Oscar Hinton 18b5e4adfd
[EC-163] Undo move to rust implementation (#1509) 2022-05-02 12:39:38 +02:00
Patrick H. Lauke 0396d682b1
Change links to buttons, expose `aria-pressed` for toggles, add `aria-expanded` to send view's "Options" (#1437)
* Change links to buttons, expose `aria-pressed` for toggles

- also make existing `<a routerLink...>` type controls keyboard focusable with the addition of `tabindex="0"`

* Correctly set aria-pressed

now that I have a working build environment, could verify correct way to set this with my limited Angular knowledge

* Change more links to buttons, initial style changes

* Fix layout of <button> elements with .box-content-row

* Update jslib submodule

* Add `aria-expanded` to the send view's "Show options" expand/collapse control

* Fix position of "Edit" pencil when hovering over folders

* Update jslib

* Change sends list links to buttons

* Add `aria-pressed` to vault and send list buttons

Programmatically denote which of the buttons is currently active/shown in the right-most panel

* Fix incorrect "Options" expand/collapse button in add-edit view

Currently, that buttons lacks an accName because the "Options" text is outside of it.

* Add `aria-pressed` to the send left-hand column filters

* Simplify base, list, and vault styles

Since links are now buttons, no need to double up selectors for both types of elements. No need to double-up theming in base, as this also causes incorrect "x" in toasts.

* Remove unnecessary `position:relative`

Fixes issue with cut-off focus outlines, has no other adverse effect

* Fix styling for last child of action buttons

Old approach of making right padding smaller results in unsightly, off-center icon (noticeable when focus outline is visible). This visually remains the same, but reduces right-hand margin instead.
2022-04-30 16:09:41 +02:00
Thomas Rittson ef60112855
[PS-74] Fix user authentication state checks (#1464)
* Use new authStatus method, clean up account switcher

* Update naming

* update jslib
2022-04-30 09:16:46 +10:00
Thomas Rittson b467206448
[EC-156] [BEEEP] Remove factory providers in Angular DI (#1496)
* Use tokens

* Use initService

Co-authored-by: Oscar Hinton <oscar@oscarhinton.com>
2022-04-29 17:48:44 +10:00
Nils Fahldieck 55b301c267
Widen the sidebar to 600px max (#1503)
This implements the suggestion by MrBlack of the community forums in: https://community.bitwarden.com/t/manually-resizable-sidebar-columns-in-bitwarden-desktop-app/31909/3
2022-04-27 22:10:11 +02:00
github-actions[bot] a5ebb9fb52
Bumped version to 1.33.1 (#1502)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-04-25 11:40:39 -07:00
github-actions[bot] 2764c9610b
Bumped version to 1.33.0 (#1501)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-04-25 08:02:04 -07:00
Oscar Hinton 241e08b7ff
[EC-166] Move electron metadata to separate file (#1498)
* Move electron metadata to separate file

* Replace yml with json

* Update build script
2022-04-25 15:54:08 +02:00
Oscar Hinton 865e92c94c
Improve reorganization note (#1497) 2022-04-22 17:13:06 +02:00
Patrick H. Lauke c3d0a529fb
[CP-92] Add new more understandable labels to password generator checkboxes (#1461) 2022-04-22 15:26:38 +02:00
Oscar Hinton 1315b3c6cd
Add reorganization notice (#1494) 2022-04-22 09:51:13 +02:00
Dave Nicolson 9f77dd9d09
[CP-96] Capitalize menu items consistently (#1489) 2022-04-21 19:44:53 +02:00
Thomas Rittson 5082c7708a
[PS-211] [PS-212] Make Generator page accessible (#1493)
* Fix radiobutton names

* Add role=radiogroup

* Add aria-labelledby
2022-04-21 09:51:37 -04:00
dwbit 10d35d863b
Contribution Documentation edits (#1486)
Making corrections to the mobile contributions doc:

Update Crowdin contact from Kyle to dwbit.
Update 'User-to-User Support' forum category to 'Ask the Bitwarden Community category'
2022-04-21 08:02:41 -04:00
Kyle Spearrin caafbc2b73
fix disabling of generate type (#1491) 2022-04-20 11:46:12 -04:00
Thomas Rittson a4ca9bf64c
Update jslib (#1490)
* Update jslib

* Update name of UserVerificationComponent
2022-04-19 10:29:43 -05:00
Joseph Flinn 3862a19571
Bumping pinned commit of the download-artifact action to bypass the broken GitHub api (#1488) 2022-04-18 14:28:49 -07:00
Oscar Hinton 8be88a731c
Resolve rust for windows and linux (#1485) 2022-04-13 16:32:08 +02:00
Oscar Hinton 2b0d7ac72c
Bump libsecret for rust (#1480) 2022-04-13 08:04:48 -05:00
Matt Gibson e0d7d2b43a
Add descriptions to vague messages (#1476)
* Add descriptions to vague messages

* Fix typo
2022-04-12 15:36:25 +02:00
Oscar Hinton 70db11e659
Update readme with rust instructions (#1482) 2022-04-12 08:24:09 +02:00
Oscar Hinton 2e3c89269d
Resolve cross-compile for rust (#1481) 2022-04-11 19:53:16 +02:00
github-actions[bot] 31523bdf0e
Autosync the updated translations (#1478)
Co-authored-by: github-actions <>
2022-04-08 11:50:48 +02:00
Oscar Hinton 6b6666cd0d
Undo electron builder bump (#1477) 2022-04-07 22:13:58 +02:00
Oscar Hinton be1ab221f4
Bump electron dependencies (#1447)
Co-authored-by: Micaiah Martin <mmartin@bitwarden.com>
2022-04-05 19:46:07 +02:00
Oscar Hinton 78986023e7
[BEEEP] Add native rust module (#1379) 2022-04-05 16:54:44 +02:00
Addison Beck 14b9decf21
[bug] Adjust mode in render webpack.config to variable (#1473) 2022-04-04 10:45:35 -05:00
github-actions[bot] 0e9465601a
Autosync the updated translations (#1470)
Co-authored-by: github-actions <>
2022-04-01 13:10:34 +02:00
Oscar Hinton 52bb77fb66
Add electron:ignore which ignores invalid certificates (#1463) 2022-04-01 11:24:46 +02:00
Kyle Spearrin b4cec5b46f
generator updates (#1469)
* generator updates

* update jslib
2022-03-31 18:49:53 -04:00
Robyn MacCallum 72405ebe87
update jslib (#1467) 2022-03-31 11:39:27 -04:00
Patrick H. Lauke 4379274154
Add `aria-label` to password generator length slider, make it non-keyboard-focusable (#1459)
Closes https://github.com/bitwarden/desktop/issues/1458

Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
2022-03-31 13:14:16 +10:00
Kyle Spearrin 9e0cc45704
Username generator (#1456)
* username generator implemented

* disable type when coming from add/edit

* restyle buttons to new icon-btn

* update generated-wrapper styles

* only show policy messages for passwords

* make generated-wrapper a standalone style

* Update src/app/vault/password-generator.component.html

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

* aria-expanded on show options

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
2022-03-29 15:01:57 -04:00
Francesco De Feo bc21703a2b
Update macOS icon to follow Big Sur design (#837)
Co-authored-by: Hinton <oscar@oscarhinton.com>
2022-03-29 20:56:03 +02:00
Patrick H. Lauke 4ddeff2eee
Add `aria-pressed` to all eye/toggle visibility buttons (#1443)
* Add `aria-pressed` to all eye/toggle visibility buttons

Closes #1442

* Correct custom field visibility toggle `aria-pressed` value
2022-03-27 22:42:47 +02:00
Patrick H. Lauke 75af5b94d4
Fix "Custom environment", "Options" expand/collapse controls - wrong accessible name, state not exposed (#1441)
* Fix "Custom environment" expand/collapse control wrong accessible name, expose state

Closes #1440

* Correct "Options" expand/collapse accname, expose state

* Remove redundant appA11yTitle
2022-03-27 15:04:45 +02:00
Oscar Hinton cbadcccc85
Fix Mac App Store minimumSystemVersion (#1453) 2022-03-25 15:29:43 +01:00
Kyle Spearrin 21167301f1
Bump jslib and add compatability with username generation (#1450)
Co-authored-by: Hinton <oscar@oscarhinton.com>
2022-03-25 10:56:34 +01:00
github-actions[bot] ad6308eb48
Autosync the updated translations (#1451)
Co-authored-by: github-actions <>
2022-03-25 01:28:44 +01:00
Oscar Hinton fec023866e
Add utils for testing updating processes (#1448) 2022-03-24 21:23:29 +01:00
Jake Fink d2a7012d3f
PS-91 bug/mas hide update option (#1446)
* PS-91 - hide update option if MAS build

* fix isMacAppStore
2022-03-24 15:55:06 -04:00
Jake Fink 6555312034
PS-91 - hide update option if MAS build (#1432) 2022-03-23 13:03:08 -04:00
github-actions[bot] e2fe0c8b09
Bump version to 1.32.2 (#1429)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
- Patch for Testflight track.
2022-03-22 13:30:43 -06:00
Oscar Hinton 3b2427e913
Change minimumSystemVersion to only apply for MAS (#1428) 2022-03-22 13:43:37 -04:00
Oscar Hinton 37e9523f00
Define Angular CLI globals to support tree shaking (#1408) 2022-03-22 10:09:19 +01:00
github-actions[bot] 09d7376f39
Bump version to 1.32.1 (#1427)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-21 14:09:45 -06:00
Thomas Rittson be0b6113e4
[JslibModule] Refactor to use JslibModule (#1425) 2022-03-21 20:39:35 +10:00
github-actions[bot] 75f11cdbf1
Autosync the updated translations (#1421)
Co-authored-by: github-actions <>
2022-03-18 01:13:12 +01:00
github-actions[bot] e5feda0fa6
Bump version to 1.32.0 (#1415)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-16 10:46:16 -06:00
Micaiah Martin 5ebed777c2
Updated actions (#1412) 2022-03-16 10:11:17 -06:00
Vince Grassia e49d317d19
Remove safari build script from Build workflow (#1413) 2022-03-15 16:47:02 -04:00
Chad Scharf 114d7455b8
Update SECURITY.md (#1411)
* Update SECURITY.md

Add link to our HackerOne program for submitting potential security issues.

* Revise language on SECURITY.md
2022-03-15 15:56:26 -04:00
Vince Grassia d1146acb1e
Add Node caching to Build workflow (#1410) 2022-03-15 15:19:12 -04:00
Micaiah Martin 703d390566
Moved linting to it's own step, removed duplicates (#1404) 2022-03-15 10:38:13 -06:00
Thomas Rittson c0170563f2
Disable disk caching in stateService (#1406)
* Disable disk caching in stateService

* Turn back on caching for the renderer

Co-authored-by: addison <addisonbeck1@gmail.com>
2022-03-15 09:25:43 -04:00
Thomas Rittson f46405a508
Update jslib (#1403) 2022-03-15 15:15:49 +10:00
Micaiah Martin 6d429465fb
Added manual build trigger (#1405) 2022-03-14 16:53:59 -06:00
Matt Gibson 81457f6c05
Add jit entitlement (#1395)
* Add arm64 package

* temporarily remove workflow ignore

* Don't delete universal dist when completing arm64

* Add allow-jit entitlement

* Revert "Don't delete universal dist when completing arm64"

This reverts commit b06d638345.

* Revert "temporarily remove workflow ignore"

This reverts commit 8007983547.

* Revert "Add arm64 package"

This reverts commit c8359dae4d.

Co-authored-by: Hinton <oscar@oscarhinton.com>
2022-03-11 10:01:19 -06:00
github-actions[bot] aee27f9570
Autosync the updated translations (#1399)
Co-authored-by: github-actions <>
2022-03-11 02:25:09 +01:00
Joseph Flinn f845bcf6c1
Update hotfix release branch name to hotfix-rc (#1396) 2022-03-09 12:46:13 -08:00
Micaiah Martin b134eba27b
Renewed certs and profiles (#1393) 2022-03-04 10:25:28 -07:00
Vincent Salucci e84be59075
[Captcha] Implement captcha for 2fa (#1390)
* [Captcha] Implement captcha for 2fa

* Update jslib

* Added remaining items necessary for captcha // updated login to match 2fa style
2022-03-03 18:20:29 -06:00
github-actions[bot] edc5245173
Autosync the updated translations (#1394)
Co-authored-by: github-actions <>
2022-03-04 01:14:56 +01:00
Addison Beck 7bad97dd82
[dep] Update jslib (#1392) 2022-03-03 20:34:39 +01:00
Oscar Hinton 3071bec03f
Update NSIS build settings (#1389) 2022-03-03 19:50:35 +01:00
Thomas Rittson 80415f8cd5
Update jslib (#1387) 2022-03-02 08:49:07 +10:00
Daniel James Smith 03c279865f
BEEEP: Add missing languages (#1382)
* Pull in jslib

* Register missing languages
2022-03-01 13:52:53 +01:00
Addison Beck 54025f269a
[feature] Implement scope warning for exports (#1384) 2022-02-28 17:44:10 +01:00
Thomas Rittson 4ce5e5fbdc
Update Help menu options (#1383) 2022-02-28 11:23:14 +01:00
Addison Beck c738366eef
[dep] Update jslib (#1381) 2022-02-25 11:27:43 -05:00
Micaiah Martin 0114d96e18
[BEEEP] - Ignored workflow files from triggering builds (#1375) 2022-02-25 08:14:19 -06:00
Micaiah Martin 1eac8f0c0f
Added dry run logic (#1376) 2022-02-25 08:13:39 -06:00
Daniel James Smith 8880e9700e
BEEEP: Colorize hidden custom field when value visible (#1380) 2022-02-25 14:27:54 +01:00
github-actions[bot] 2f289ebd1f
Autosync the updated translations (#1378)
Co-authored-by: github-actions <>
2022-02-25 12:29:23 +01:00
Oscar Hinton 3aa52a5537
Add eslint (#1369) 2022-02-24 20:50:19 +01:00
Robyn MacCallum 233f876bbb
Accessibility fixes for account switcher menu (#1373) 2022-02-24 14:11:54 -05:00
Thomas Rittson d7276850a2
Update jslib (#1374)
* Update jslib

* Update i18n
2022-02-24 09:36:15 -05:00
Jake Fink e570551a5a
fix desktop close window shortcut (#1372)
* fix syntax not adding additional items

* lint
2022-02-23 09:58:59 -05:00
Vincent Salucci 7401204b70
[Icons] Added missing custom field sort icon (#1370) 2022-02-23 07:54:33 -06:00
github-actions[bot] 685ffbcac5
Bumped version to 1.31.4 (#1362)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-22 05:51:46 -08:00
Chad Scharf f9e6d13708
We're Hiring (#1367)
Added link to README.md for Bitwarden Careers page.
2022-02-22 14:04:32 +01:00
Micaiah Martin f798995764
Added linter workflow (#1355) 2022-02-18 13:28:17 -06:00
github-actions[bot] f6298b2684
Autosync the updated translations (#1360)
Co-authored-by: github-actions <>
2022-02-18 10:21:18 +01:00
Thomas Rittson 3881223a73
Exclude jslib from prettier hook (#1343)
* Exlude jslib from prettier hook
2022-02-17 10:37:41 +10:00
Matt Gibson d2df8dacad
Add label enforcement (#1346)
* Enforce Hold label

* Linting

Co-authored-by: Micaiah Martin <77340197+mimartin12@users.noreply.github.com>
2022-02-16 08:43:26 -06:00
Addison Beck 10ffdce5b9
[lib] Update jslib (#1347) 2022-02-15 15:05:31 -05:00
github-actions[bot] d6d74e178c
Bumped version to 1.31.3 (#1345)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-15 09:04:33 -05:00
Addison Beck 2e09265d3a
[bug] Fix tab order regression (#1340) 2022-02-14 15:43:05 -05:00
Thomas Rittson 659c9ea78d
Update i18n string and id for tray menu Lock item (#1334) 2022-02-14 08:40:06 -05:00
Addison Beck 884615c23a
update jslib (#1337) 2022-02-14 08:32:55 -05:00
Oscar Hinton 2470d8ce25
Resolve preferences not setting correct focus (#1336) 2022-02-14 14:23:05 +01:00
github-actions[bot] 6b6468e061
Bumped version to 1.31.2 (#1328)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-11 14:21:09 -08:00
github-actions[bot] 45b144361c
Autosync the updated translations (#1313)
Co-authored-by: github-actions <>
2022-02-11 22:46:20 +01:00
Addison Beck 881bb3cb49
Update jslib (#1327)
* Update jslib

* Add a null check

* Reworked condition

* Ran prettier
2022-02-11 15:34:36 -05:00
Addison Beck fd4c41b043
update jslib (#1324)
* update jslib

* Update jslib
2022-02-11 12:51:48 -05:00
Oscar Hinton 7a8a78b4df
Bump jslib (https://github.com/bitwarden/jslib/pull/673) (#1322) 2022-02-11 16:31:13 +01:00
Oscar Hinton f82e2fbb03
Bump jslib (performance and hasKeyStored fix) (#1321) 2022-02-11 14:53:49 +01:00
Matt Gibson e9a3c586f8
Fix/load lock component (#1319)
* Update jslib

* update jslib
2022-02-11 03:58:31 -06:00
Thomas Rittson f54a614d6b
Update jslib (#1318) 2022-02-11 00:30:53 -05:00
Thomas Rittson 95b5d68566
Update jslib (#1317) 2022-02-11 15:02:04 +10:00
Thomas Rittson 3ffb658db6
Update jslib (#1316) 2022-02-11 14:29:47 +10:00
github-actions[bot] 530f25c88a
Bump version to 1.31.1 (#1308)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-10 13:47:25 -07:00
Joseph Flinn 97d367dab8
Switching where we are pulling our snap token from (#1307) 2022-02-10 10:57:32 -08:00
Micaiah Martin 0a545c88b2
Update release.yml (#1306) 2022-02-10 10:51:50 -07:00
github-actions[bot] 0f6ee08dd5
Bump version to 1.31.0 (#1304)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-10 09:40:21 -07:00
Addison Beck b227ae13f6
Remove unused import (#1298) 2022-02-09 21:34:01 -05:00
Addison Beck 79f6a33596
[bug] Remove redundant token clean call (#1303)
* [bug] Remove redundant token clean call

* bump jslib
2022-02-09 17:06:30 -05:00
Addison Beck 1e80c4335f
[bug] Resolve several regression issues (#1302)
* [bug] Ensure accounts logging out in the background doesn't impact active account ui

The main issue here: inactive accounts with a logout timeout actually log out the active account" is fixed by pulling in jslib.
These changes are for some asthetic issues I noticed, where inactive accounts logging out still fires a switchAccount event, which causes a loading spinner to appear and a sync that redraws the vault.

* Only load if the account being logged out is the active account:
* Replaced any calls to `stateService.activeAccount.getValue` with references to `this.activeUserId`, since we subscribe to that in the component now.
* Only send a "switchAccount" method if the active user before a clean and after a clean don't match

* [bug] Ensure default vault timeout is set to On Restart

We dont override the StateMigrationService instance that is injected in desktop, so it is not aware of desktop defaults.
This results in fresh accounts having a "Never" timeout action insteads of "On Restart"

* Use the correct StateMigrationService instance

* update jslib
2022-02-09 12:42:16 -05:00
Vincent Salucci c51b8523b7
[Help] Update links to new pattern (#1300)
* [Help] Update links to new pattern

* Update jslib
2022-02-08 18:02:17 -06:00
Joseph Flinn bd2ed43498
Fixing safari ref logic (#1299) 2022-02-08 07:41:58 -08:00
Oscar Hinton 243afc9da0
Client & Version headers (#1297) 2022-02-08 15:29:01 +01:00
Thomas Rittson 762e3f8198
Update client for authService refactor (#1239) 2022-02-08 09:26:53 +10:00
Thomas Rittson 4e75a25492
Make husky pre-commit hook executable (#1295) 2022-02-08 08:33:25 +10:00
Addison Beck 143a262743
[chore] Update jslib (#1296) 2022-02-07 12:08:15 -05:00
Addison Beck c1a3178538
Update jslib (#1293)
* Update jslib

* [style] Ran prettier
2022-02-03 14:39:49 -05:00
Oscar Hinton 166c459da4
Potentially improve path detection of regedit vbs files (#1288) 2022-02-03 19:39:23 +01:00
Daniel James Smith 94b561382d
fix announcement of security header (#1292) 2022-02-03 17:58:55 +01:00
Daniel James Smith 2b58861296
[AccountSwitching]Make account switcher accessible (#1289)
* Make account switcher keyboard accessible

* ScreenReader: Announce submenu and expansion

* ScreenReader: Announc switch account button with account info

* Fix tab focus on dropdown

* Fix esc not changing state

* Fix linting issues

Co-authored-by: Hinton <oscar@oscarhinton.com>
2022-02-03 17:46:14 +01:00
Vincent Salucci 3e8705d548
[Icons] FF - requested icon changes (#1291)
* [Icons] Remove FA

* Icon changes // webpack correction
2022-02-03 10:28:34 -06:00
Oscar Hinton 1e877f6cf8
Set minimumSystemVersion (#1287) 2022-02-03 14:13:50 +01:00
Joseph Flinn 9151fc0164
Switching the way we are pulling secrets for the EV SSL cert (#1285) 2022-02-02 14:35:03 -08:00
Addison Beck 03eed41d86
[bug] Remove scroll from login screen (#1283) 2022-02-02 10:32:06 -05:00
Addison Beck cad6e9481f
[bug] Attempt to resolve windows portable build issues (#1280) 2022-02-02 10:28:36 -05:00
Daniel James Smith 270411dff7
Fix icons on the settings headers (#1279) 2022-02-02 15:50:48 +01:00
Vincent Salucci 7c68e3802e
[bug] Add options string (#1281) 2022-02-01 23:06:29 -06:00
Addison Beck 48ff9f61ae
[bug] Inactive accounts with power-based timeout settings are not timing out (#1278)
* [bug] Move bulk of system lock checks into app.component

* [review] Extract shared system timeout logic

* [review] Correct an improper number

* [review] Opt for a more locally scoped system timeout helper than a dedicated enum
2022-02-01 11:31:30 -05:00
Addison Beck 2b22a39d45
[chore] Update jslib (#1277)
* [chore] Update jslib

* [bug] Correct value for system theme dropdown key

* [chore] Update jslib
2022-01-31 18:00:37 -05:00
Addison Beck c1ba54f646
[bug] Patch the windows menu bar regressions (#1273)
* [bug] Patch the windows menu bar regressions

* [chore] Update jslib
2022-01-28 11:27:30 -05:00
Daniel James Smith bb597e96a7
Use ThemeType instead of string (#1275) 2022-01-28 14:46:07 +01:00
github-actions[bot] 6aa9e7611a
Autosync the updated translations (#1274)
Co-authored-by: github-actions <>
2022-01-28 11:05:05 +01:00
Oscar Hinton 3c99920435
Add support for handling multiple accounts with native messaging (#1266) 2022-01-27 20:52:06 +01:00
Oscar Hinton a7c5f1ad45
Fix webpack using double dots (#1272) 2022-01-27 19:36:50 +01:00
Vincent Salucci ec3c95d736
[Icons] Update Font Sheet (#1245)
* [Icons] Update Font Sheet

* Added import statement for styles

* updated to clone icon

* Changed save to save changes icon

* Revert to using base bwi class

* Updated import order for bwi icon styles

* Converted new account switcher ui updates

* Bump jslib

* Fix occurances where bwi-eye-slash was used instead of btw-eye-slash-2

* Move settings cog to the left side

* Updated eye/eye-slash icon references

* Update jslib

* Update jslib

* Update fallback image for cipher icon

* Update jslib

Co-authored-by: Hinton <oscar@oscarhinton.com>
2022-01-27 11:21:53 -06:00
Addison Beck 058be7e895
[bug] Disable the preferences screen if there is no active unlocked vault (#1270) 2022-01-26 12:32:00 -05:00
Addison Beck ff7dd4ad8f
[bug] Don't monitor vault timeout action valueChanges until after init (#1271) 2022-01-26 09:33:37 -05:00
Addison Beck 9271ec37b9
[bug] Ensure remembering email always happens for desktop (#1269)
* [bug] Ensure remembering email always happens for desktop

* update jslib
2022-01-25 19:00:49 +01:00
Addison Beck d80fdc8a78
Adjust an iterator used to check for locked vaults on reloadProcess (#1268) 2022-01-25 09:49:57 -05:00
Addison Beck 555ee1c230
[bug] Checkout all vaults before reloading process (#1267) 2022-01-25 09:36:30 -05:00
Addison Beck c458b4d8a9
[bug] Move enableBrowserIntegration to global settings (#1265)
* [bug] Move enableBrowserIntegration to global settings

* [style] Ran prettier

* [chore] Update jslib
2022-01-24 11:35:24 -05:00
Oscar Hinton 7d46e5c145
Add explicit init to native messaging service (#1262) 2022-01-24 16:10:32 +01:00
Addison Beck ca41cdf8b5
[chore] Update jslib (#1264) 2022-01-24 08:45:35 -05:00
Addison Beck d211b3fcd2
Unset active account when adding additional accounts (#1258) 2022-01-24 07:28:39 -05:00
Addison Beck ef48ba1ae2
[bug] Correct DI setup for SystemService (#1257)
The DI refactor created a bad initlizer for SystemService that left out the reload callback.
This callback is null in prod, so I just set up a factory initlizer that used null for the callback value.

This fixes a bug causing clipboard clearing to not function, as platformUtilsService was not correctly injected.
2022-01-22 15:24:12 -05:00
Robyn MacCallum 33704b016f
Beeep/remove sad faces (#1255)
* Replace sad face with searching image

* Change css variable name

* Added aria-hidden="true" to images

* Run prettier
2022-01-21 14:37:28 -05:00
Oscar Hinton a64273f829
Hide account switcher border if no accounts (#1254) 2022-01-21 17:57:09 +01:00
Daniel James Smith cb4e6debf3
Fix display of account limit (#1253) 2022-01-21 14:15:24 +01:00
github-actions[bot] 2e7f8a127d
Autosync the updated translations (#1250)
Co-authored-by: github-actions <>
2022-01-21 11:51:41 +01:00
Thomas Rittson c6eaf3a31e
Move KeyConnector call from client to syncService (#1252) 2022-01-21 19:32:44 +10:00
Daniel James Smith 37b03b09a1
[Account Switching] Design changes to settings menu (#1244)
* Design changes to settings menu

* Remove black border on settings headers

* Pull in jslib

* Only load account related settings when authed

* Hide account related settings when not authed

* Change settings titles

* Changes discussed with Danielle
2022-01-20 22:56:15 +01:00
Oscar Hinton d1c01a2bb0
Remove account switching border (#1249) 2022-01-20 17:15:29 +01:00
Oscar Hinton 0edee78da1
Change account switching dropdown to align with the right side (#1248) 2022-01-20 16:32:05 +01:00
Addison Beck 80c9196e44
[chore] Update jslib (#1247) 2022-01-20 09:26:24 -05:00
Addison Beck 032d2be990
[bug] Remove old mac-bar styling (#1246)
With the account switching work a header was added to the desktop app that new acts as a home for the mac window controls.
Previously we needed a special home for these controls, but since moving them we are not just creating empty space.
Removing this class and the divs that use it corrects the behavior.
2022-01-20 07:44:20 -05:00
Daniel James Smith a684c102d7
Bump electron from 16.0.2 to 16.0.7 (#1243)
* Pull jslib to bump electron from 16.0.2 to 16.0.7

* Updates to package-lock.json
2022-01-20 12:22:22 +01:00
Daniel James Smith 12bb8b060c
[Account switching] Design changes (#1240)
* Various design changes to the account switcher

* Hide serverUrl on cloud accounts

* Display account limit reached instead of add account
2022-01-19 17:03:34 +01:00
Addison Beck b796fe094f
[Bug] [Account Switching] Improve State Management Performance (#1237)
* [dep] Implement new StateService factory parameter from jslib

* [bug] Ensure setLastActive uses the correct userId

Sometimes, because of how often it fires, setLastActive can cause accounts to override each other. To make sure the correct userId is always used we now subscribe to activeUser in the appComponent and pass that value into any setLastActive calls.

* [bug] Show loader when logging out

When logging out of a large vault the application can appear to hang. This commit turns on the app component loader while logout is doing work.

* [bug] Stop tracking activity without an active user

* [style] Ran prettier

* [chore] Update jslib
2022-01-19 11:00:28 -05:00
Daniel James Smith 8b521aa35e
[Account switching] Hide active account (#1241)
* Hide active account from dropdown

* No longer need to check if selected account is active before switching

* Applied feedback from PR review
2022-01-18 21:43:14 +01:00
Oscar Hinton 3cacf8a8c4
Rename package to @bitwarden/desktop (#1242) 2022-01-18 14:04:21 +01:00
Vince Grassia dad1a95fb0
Update Version Bump action to latest (#1238) 2022-01-14 13:32:16 -05:00
github-actions[bot] 5b6e5fc4fa
Autosync the updated translations (#1236)
Co-authored-by: github-actions <>
2022-01-14 11:21:53 +01:00
Oscar Hinton 4644d03b28
Exclude dist-safari from prettier (#1234) 2022-01-13 18:10:59 +01:00
Daniel James Smith abede3e5af
Fix logging out of all accounts instead of one (#1231)
When logOut is triggered and the userId is not provided. Retrieve currentUserId
2022-01-13 15:43:00 +01:00
Daniel James Smith 7818ffc2fb
[Account Switching] Fix menus (#1232)
* Fix enabled/disabling menu items with locked state

* Fix the empty about menu (title)

Moved the items to the help menu
2022-01-13 14:29:49 +01:00
Oscar Hinton b6117d6801
Re-add native dependencies to src/package.json (#1233) 2022-01-13 10:46:33 +01:00
Addison Beck 653ff8f45f
[Bug] VaultTimeout incorrectly defaults to "Never" (#1230)
* [Bug] VaultTimeout incorrectly defaults to "Never"

The default desktop vault timeout value is "On Restart", but there is no default set for this in the state service and account model.
This commit extends the StateService and Account model to consider the special vault timeout default requirements needed for desktop.

* [style] Lint fixes

* [chore] Update jslib
2022-01-12 11:37:23 -05:00
Daniel James Smith 71c2fee574
Close opened AccountSwitcher dropdown (#1228)
When a user clicks outside of an opened account switching dropdown, it should close automatically when clicking outside of the dropdown.
2022-01-12 17:20:19 +01:00
Daniel James Smith d885e3296b
Do not switch accounts if it is already the active account (#1229) 2022-01-12 17:20:07 +01:00
Addison Beck f32b917a9f
[Account Switching] Misc Bug Fixes and Refactors (#1223)
* [bug] Pull serverUrl directly from stateService for the account switcher

Create a small extended Account model for handling the switchers server url, and pull environment urls from disk where they actually live

* [refactor] Add a message handler for switching accounts

* This allows for logic reuse between manually switching accounts and automatically switching accounts on login
* This commit also adds a loading spinner to app root while syncing after a switch

* [bug] Remove vertical scrollbar

* An old styling fix to add extra height and padding seems to be now creating an unecassary scroll bar. It is likely that since making more use of flexbox for our containers that this issue has been resolved without the manually added extra hight & padding

* [refactor] Turn down activity monitoring

Saving last activity is a disk call, and we currently do this a lot more than is necassary. For example:
* We track mousedown & click, which is redundant
* We track every mouse movement regardless of if an action is taken. This seems inappropriate for use in locking behavior.

* [bug] Address potential race condition when locking

Sometimes when swapping between an unlocked account and a locked account a race condition occurs that swaps the user but doesn't redirect to the lock screen
This commit just adds some awaits and restructures lock order of operations to be more in line with other message handlers

* [refactor] Change click event to mousedown event for the account switcher

This is simply a little snappier, and ensures we stay ahead of change detection and don't get stuck not properly interpreting the action

* [chore] Update jslib

* [chore] Linter fixes

* [chore] Linter fixes

* [chore] Update jslib

* [chore] Update jslib
2022-01-12 09:23:00 -05:00
Daniel James Smith 2b64ec5375
Fix null ref when building/updating the MenuBar (#1227) 2022-01-12 15:19:18 +01:00
Oscar Hinton f6f0bd2bfb
Remove webpack-node-externals and use asarUnpack (#1221) 2022-01-12 11:32:02 +01:00
Oscar Hinton 23a7072341
Disable spellchecker (#1225) 2022-01-10 18:27:14 +01:00
Daniel James Smith d64b00977c
Fix menu separators (#1220)
* Fix separators appearing when they shouldn't

* Use const instead of let
2022-01-07 15:54:35 +01:00
github-actions[bot] 695e8389d8
Autosync the updated translations (#1222)
Co-authored-by: github-actions <>
2022-01-07 13:50:31 +01:00
Daniel James Smith dd73a45f64
Add ts files to prettier (#1219)
* Add ts files to prettier

* Add scss to prettier

* Add all filetypes to prettier and ignore via .prettierignore

* Add --ignore-unknown to prettier
2022-01-06 23:06:58 +01:00
Daniel James Smith a1bbbcf4bf
Update year in copyright (#1216) 2022-01-05 19:44:08 +01:00
Oscar Hinton 27b1ee2ab3
Whitelist rxjs in nodeExternals (#1218) 2022-01-04 20:51:21 +01:00
github-actions[bot] f01856d34f
Autosync the updated translations (#1213)
Co-authored-by: github-actions <>
2022-01-01 17:50:34 +01:00
Robyn MacCallum ef5e8e1e2a
rename fb to formBuilder (#1214) 2021-12-31 10:52:28 -05:00
Addison Beck ed78a79042
[bug] Apply background color for light theme account switcher (#1211) 2021-12-28 14:53:37 -05:00
github-actions[bot] 017a3bffd6
Autosync the updated translations (#1210)
Co-authored-by: github-actions <>
2021-12-24 01:08:21 +01:00
Micaiah Martin ad965e54e4
Rename .pkg to .pkg.archive in release pipeline (#1208)
* Add step to change .pkg file name
* Linting
2021-12-21 14:25:29 -07:00
Oscar Hinton 6e69b61128
Fix .git-blame-ignore-revs filename (#1207) 2021-12-21 17:05:54 +01:00
Daniel James Smith 406f4bf62c
Fixed prettier issue (#1206) 2021-12-21 15:22:12 +01:00
Linus Aarnio 83c3635932
Add credit card logos to allow displaying icons based on brand (#1149)
Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-21 13:21:41 +01:00
Micaiah Martin 3c2094bb04
Patch version check to allow for redeployments. (#1204)
* Added logic for redployment

* Applied linting

- Prettier config was already updated by Oscar. b4df834b16
2021-12-20 10:49:16 -07:00
Oscar Hinton f7ae94199f
Add .git-blame-ignore-revs (#1203) 2021-12-20 16:49:00 +01:00
Oscar Hinton 521feae535
Apply Prettier (#1202) 2021-12-20 15:47:17 +01:00
Oscar Hinton b4df834b16
Add Prettier configuration (#1201) 2021-12-20 14:17:39 +01:00
Vince Grassia b33d37e610
Update with linter suggestions (#1199) 2021-12-17 12:26:26 -05:00
Daniel James Smith 3ad71103dd
Bump electron dependencies (#1194)
* Pull in jslib

* Bumping electron dependencies that relate tojslib

* Bump electron-rebuild

* Bump electron-builder

* Revert "Bump electron-builder"

This reverts commit 8cada43567.

* Bump jslib
2021-12-17 11:15:07 +01:00
github-actions[bot] da296559c0
Autosync the updated translations (#1198)
Co-authored-by: github-actions <>
2021-12-17 01:15:45 +01:00
Addison Beck 0b306ca1a7
[Account Switching] [Feature] Add the ability to maintain state for up to 5 accounts at once (#1079)
* [refactor] Remove references to deprecated services

* [feature] Implement account switching

* [bug] Fix state handling for authentication dependent system menu items

* [bug] Enable the account switcher to fucntion properly when switching to a locked accounts

* [feature] Enable locking any account from the menu

* [bug] Ensure the avatar instance used in the account switcher updates on account change

* [style] Fix lint complaints

* [bug] Ensure the logout command callback can handle any user in state

* [style] Fix lint complaints

* rollup

* [style] Fix lint complaints

* [bug] Don't clean up state until everything else is done on logout

* [bug] Navigate to vault on a succesful account switch

* [bug] Init the state service on start

* [feature] Limit account switching to 5 account maximum

* [bug] Resolve app lock state with 5 logged out accounts

* [chore] Update account refrences to match recent jslib restructuring

* [bug] Add missing awaits

* [bug] Update app menu on logout

* [bug] Hide the switcher if there are no authed accounts

* [bug] Move authenticationStatus display information out of jslib

* [bug] Remove unused active style from scss

* [refactor] Rewrite the menu bar

* [style] Fix lint complaints

* [bug] Clean state of loggout out user after redirect

* [bug] Redirect on logout if not explicity provided a userId that isn't active

* [bug] Relocated several settings items to persistant storage

* [bug] Correct account switcher styles on all themes

* [chore] Include state migration service in services

* [bug] Swap to next account on logout

* [bug] Correct DI service

* [bug] fix loginGuard deps in services.module

* [chore] update jslib

* [bug] Remove badly merged scss

* [chore] update jslib

* [review] Code review cleanup

* [review] Code review cleanup

Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-15 17:32:00 -05:00
Daniel James Smith 5865f08b37
Bump node to v16 (#1189)
* Pull in jslib

* Update .nvmrc

* Bump engines required to node 16 and npm 8

* Bump @types/node to 16
The dep on node 14.18 will get cleaned up once we bump electron

* Modify build.yml to build with node 16 and npm 8

* Update requirements in README.md

* Removed install of npm8 and renamed action step
npm8 is included in node v16

* Pull jslib
2021-12-13 17:16:44 +01:00
github-actions[bot] 74c9c1972f
Bumped version to 1.30.1 (#1191)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2021-12-10 10:05:34 -05:00
Oscar Hinton a10259ecab
Bump angular to v12 (#1186) 2021-12-09 20:29:24 +01:00
github-actions[bot] 9feb147654
Bumped version to 1.30.0 (#1187)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2021-12-08 09:02:21 -05:00
Vince Grassia 822c791cf9
Fix typo (#1185) 2021-12-08 08:48:37 -05:00
Oscar Hinton b70d2fb3c3
Fix development build not working with bitwarden:// protocol (#1165) 2021-12-07 21:04:52 +01:00
Oscar Hinton 5fd1da0c58
Replace toaster library (#1183) 2021-12-07 20:42:31 +01:00
github-actions[bot] 2822d748f1
Autosync the updated translations (#1174)
Co-authored-by: github-actions <>
2021-12-07 17:01:42 +01:00
Oscar Hinton 04cfdb246d
BEEEP: Refactor services DI (#1175) 2021-12-06 12:03:02 +01:00
Micaiah Martin 00d57d0310
Added version bump workflow (#1177)
* Added version bump workflow

* Fixed job name
2021-11-30 15:52:54 -07:00
Thomas Rittson b6db41c26c
Update jslib (#1176)
* Update jslib

* Update component constructors

* Update jslib
2021-11-29 10:21:48 +10:00
Thomas Rittson b83058ecab
Apply AppInputVerbatim directive (#1170) 2021-11-24 08:03:43 +10:00
Oscar Hinton b607a4ed08
Hide password input when using key connector (#1169) 2021-11-22 18:37:28 +01:00
Oscar Hinton 25b915cf26
[Key Connector] Resolve not prompting to remove password (#1168) 2021-11-19 13:55:31 +01:00
github-actions[bot] 30d3192344
Autosync the updated translations (#1167)
Co-authored-by: github-actions <>
2021-11-19 13:01:05 +01:00
Thomas Rittson 9e3528df44
[Key Connector] Hide "Master Pass On Restart" prompt when setting pin (#1166)
* Hide Master Pass on Restart for Key Connector

* Update jslib
2021-11-18 21:53:41 +10:00
Oscar Hinton b57cba8632
Update export to match the design changes (#1163) 2021-11-17 20:32:00 +01:00
Joseph Flinn 52d9244f7f
Revert linux ARM (#1162)
* Revert "Adding the newly added Linux Arm Desktop build assets to the release (#1159)"

This reverts commit dde7afb3df.

* Revert "package: Package ARM64 binaries for Linux (#1095)"

This reverts commit dd602024d8.
2021-11-16 11:22:22 -08:00
Joseph Flinn dde7afb3df
Adding the newly added Linux Arm Desktop build assets to the release (#1159) 2021-11-16 07:10:10 -08:00
Thomas Rittson 3d8fd3cbce
Update jslib and service dependencies (#1160)
* Update service deps

* Update jslib
2021-11-16 21:01:23 +10:00
Thomas Rittson ca700e4feb
Add missing i18n string (#1161) 2021-11-16 20:41:25 +10:00
Alistair Francis dd602024d8
package: Package ARM64 binaries for Linux (#1095)
Signed-off-by: Alistair Francis <alistair@alistair23.me>

Co-authored-by: Joseph Flinn <58369717+joseph-flinn@users.noreply.github.com>
2021-11-15 14:39:11 -08:00
github-actions[bot] 3010b3e1ac
Autosync the updated translations (#1155)
Co-authored-by: github-actions <>
2021-11-15 10:57:01 -05:00
Thomas Rittson 9b68468710
Update jslib (#1154) 2021-11-12 09:33:22 +10:00
Oscar Hinton fa98ef37ec
Hide change password when using key connector (#1153) 2021-11-12 08:41:08 +10:00
Daniel James Smith 9124314ef9
Update package-lock.json to reflect update of electron to 14.2.0 (#1152) 2021-11-10 12:06:01 +01:00
Thomas Rittson afb30d5e0b
[Key Connector] Add support for key connector and OTP (#1135)
Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-11-09 19:00:01 +01:00
Joseph Flinn aa73bde593
Version Bump to 1.29.2 (#1151) 2021-11-09 07:52:47 -08:00
Joseph Flinn d6c100afeb
Moving the push of the MAS artifact to the build workflow to enable manual publishing from TestFlight (#1150) 2021-11-09 07:26:30 -08:00
Joseph Flinn 4f77f12552
Updating the Crowin sync process (#1144) 2021-11-05 10:59:21 -07:00
Vince Grassia 086e09c7dc
Change release workflow to only allow releases from rc or hotfix branches (#1146) 2021-11-05 12:45:56 -04:00
Thomas Rittson f2a5fe4429
[Linked fields] Add Linked Field as custom field type (#1091)
* Add linked fields

* Update to use Field.linkedId

* Add missing deps

* Update jslib
2021-11-04 08:02:41 +10:00
Vince Grassia 6cea5e053d
Add Universal DMG Artifact (#1136) 2021-11-02 11:24:33 -04:00
Vince Grassia ecfbf2ba15
Add step to get Safari Extension branch ref (#1134) 2021-11-02 09:26:49 -04:00
Joseph Flinn 3ebfc14cbf
fixing typo in the checksum (#1133) 2021-11-01 08:01:16 -07:00
Vince Grassia 9edd154a0e
Version bump 1.29.1 (#1130) 2021-10-29 10:09:00 -04:00
Oscar Hinton 05470b489c
Ensure safari extension is included in mas and not only darwin (#1128)
* Ensure safari extension is included in mas and not only darwin

* Add support for re-signing mas

* Add support for mas-dev
2021-10-29 09:48:43 -04:00
Joseph Flinn 59bed9b12e
fixing the release asset names (#1124) 2021-10-27 13:10:15 -07:00
Joseph Flinn 4fa9325330
Version Bump 1.29.0 (#1123) 2021-10-27 08:37:15 -07:00
github-actions[bot] 5a179ec530
Autosync the updated translations (#1122)
Co-authored-by: github-actions <>
2021-10-27 07:41:25 -07:00
Thomas Rittson 22546932a2
Add PR template (#1121) 2021-10-27 19:02:07 +10:00
Thomas Rittson 52a30f4d8a
Fixes for dynamic modal a11y (#1107)
* Remove tabindex and cdkTrapFocus from modals

* Add styling for modal-dismiss

* Remove modal-dismiss styles

* Update jslib
2021-10-25 16:26:12 +10:00
Joseph Flinn a61ef74895
Updating the release constraints (#1118)
* updating the release constraints

* removing the master branch release ci code execution

* updating some verbiage
2021-10-22 08:41:15 -07:00
Oscar Hinton 6f69486c36
Remove empty catch blocks and remove allow-empty-catch tslint rule (#1117) 2021-10-21 11:10:36 +02:00
Vince Grassia 66d560aab5
Add notify constraint (#1112) 2021-10-15 13:07:05 -04:00
Kyle Spearrin bee11204b2
New Crowdin updates (#1111)
* New translations messages.json (Romanian)

* New translations messages.json (Estonian)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Vietnamese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Indonesian)

* New translations messages.json (Persian)

* New translations messages.json (Bengali)

* New translations messages.json (Thai)

* New translations messages.json (Croatian)

* New translations messages.json (Norwegian Nynorsk)

* New translations messages.json (Latvian)

* New translations messages.json (Ukrainian)

* New translations messages.json (Azerbaijani)

* New translations messages.json (Hindi)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Esperanto)

* New translations messages.json (Filipino)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Kannada)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Montenegrin (Latin))

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Turkish)

* New translations messages.json (French)

* New translations messages.json (Hebrew)

* New translations messages.json (Spanish)

* New translations messages.json (Afrikaans)

* New translations messages.json (Belarusian)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (German)

* New translations messages.json (Greek)

* New translations messages.json (Finnish)

* New translations messages.json (Hungarian)

* New translations messages.json (Swedish)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Portuguese)

* New translations messages.json (Russian)

* New translations messages.json (Slovak)

* New translations messages.json (Slovenian)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (English, India)
2021-10-14 19:22:52 -04:00
github-actions[bot] 7046f8cfd3
Autosync the updated translations (#1110)
Co-authored-by: github-actions <>
2021-10-14 18:01:36 -04:00
Thomas Rittson 77ab177d2c
[Refactor] Use rxjs first instead of unsubscribe from queryParams (#1105)
* Use rxjs first instead of unsubscribe

* Remove unneeded variable

* Update jslib
2021-10-15 07:59:08 +10:00
Vince Grassia 7327ab75c9
Add Slack alerts for Build workflow failures (#1108) 2021-10-14 13:05:49 -04:00
Vince Grassia b66d32b57e
Upgrade workflows to new model (#1104)
* Update workflows to new Build/Test/Release model
2021-10-12 11:51:26 -04:00
Oscar Hinton 42fd0dd2a6
Bump jslib (#1103) 2021-10-11 19:40:46 +02:00
Vincent Salucci b5fd993bad
[Reset Password] Update jslib (#1102)
* Update jslib

* Updated constructor
2021-10-08 16:55:32 -05:00
Thomas Rittson d02ebea219
Update jslib (#1101) 2021-10-08 10:09:07 +10:00
Thomas Rittson 15e8e5fec9
Use theme enum and platformUtilsService helpers (#1094)
* Use new theme enum and platformUtilsService helper

* Use theme enum

* Update jslib

* Fix linting
2021-10-05 06:30:09 +10:00
Oscar Hinton 2639d13e42
Bump signalr to 5.0.10 (#1093) 2021-09-28 17:23:39 +02:00
Oscar Hinton e985018862
Bump Electron to v14 (#1088) 2021-09-28 16:51:53 +02:00
Oscar Hinton facedab33c
Use webfonts from jslib instead of downloading them using gulp (#1089)
* Use webfonts from jslib instead of downloading them using gulp

* Remove accidental command for disabling certificates

* Bump jslib
2021-09-27 14:27:39 +10:00
Vincent Salucci df382a3611
[Reset Password v1] Refactor ForcePasswordReset flow (#1067)
* [Reset Password v1] Refactor ForcePasswordReset flow

* Update jslib
2021-09-24 08:33:57 -05:00
Joseph Flinn bab33c3a64
Version bump to 1.28.3 (#1086) 2021-09-22 08:39:18 -07:00
github-actions[bot] 004f18e04d
Autosync the updated translations (#1085)
Co-authored-by: github-actions <>
2021-09-21 14:12:42 -07:00
Thomas Rittson c385efdbd2
Move custom fields to separate components (#1076)
* Move custom fields to own component

* Update jslib

* Fix import statements

* Fix linting
2021-09-21 10:48:17 +10:00
Oscar Hinton 0297ea57da
Use explicit import paths (#1084) 2021-09-20 10:41:57 +02:00
Vincent Salucci 762c026b6f
[SSO/Auto Enroll] Fixed typo for banner (#1083) 2021-09-16 23:09:23 -05:00
Joseph Flinn c5461f82c1
rolling back accidental changes to mac runner (#1081) 2021-09-16 11:10:12 -07:00
Joseph Flinn c99a543030
Pinning ast version (#1080)
* Pinning version of AST instead of using latest

* adding the pinned version of the commit

* adding an array join

* pinning version of dotnet

* trying the AST pin of the version we started using

* disabling jobs and adding test step to window job

* adding dotnet 2.1.x to see if that fixes the issue

* removing the test code and testing the addition of .net 2.1.x

* repinning to last successful sign

* trying the newest version of AST

* disabling the non-windows jobs again

* disabling the windows build job and added a test job

* removing stray comma

* changing the multiline delimiter

* pivoting away from our EV cert and testing with a test one

* switching back to the EV cert and adding a verbose flag

* disabling some steps that are breaking

* swithing back to the test cert

* testing new format for the ast command

* removing the node portions of the test since they are not needed

* trying AST without the tenat-id

* rolling back to original commit

* switching to custom AST for better troubleshooting

* removing the ast commit logic and forcing latest

* fixing up the pwsh sign command

* fixing the AST verison

* making sure that the secrets are not blank

* trying the EV cert for signing

* Using pinned commit from AST instead of custom code

* fixing env

* building the actually pinned commit instead of whatever the other thing was...

* testing the windows job

* removing the dotnet 2.1.x dependency since the older AST version shouldn't need it

* reenabling the test ast job since something is failing

* moving the git switch command

* testing new gh-action

* fixing the gh-action path

* updating the hash of the new action

* enabling the build jobs again

* updating the hash for the new Install AST action

* fixing linter issues
2021-09-16 10:15:05 -07:00
Vincent Salucci eac84128ed
update jslib (#1074) 2021-09-15 21:33:15 -05:00
Oscar Hinton aa19e678f7
Vault Timeout Policy (#1052) 2021-09-15 20:02:46 +02:00
Oscar Hinton da4af743f3
Disable Private Vault Export Policy (#1068) 2021-09-15 20:02:17 +02:00
Joseph Flinn e8da01bafb
adding more dependencies on the release update job (#1058) 2021-09-13 07:08:53 -07:00
Thomas Rittson ebaf27b7c9
Use a modal to set the unlock pin (#1064)
* Use separate modal to set pin

* Remove incorrect label

* Fix tab focus for settings and set-pin modals

* Remove leftover code

* Update jslib
2021-09-13 10:52:58 +10:00
Oscar Hinton cdac1a4508
Improve ViewComponent (#1069) 2021-09-10 15:32:08 +02:00
Thomas Rittson b552222132
Update jslib (#1066) 2021-09-10 07:50:59 +10:00
baylorrandolph 4287f617f0
Update README.md (#1062) 2021-09-09 09:00:14 -04:00
Oscar Hinton 6b59df2f39
Add issue template and template chooser (#1061) 2021-09-08 14:11:54 +02:00
Vincent Salucci c62144424f
[SSO/Auto Enroll] Set Password banner (#1053)
* [SSO/Auto Enroll] Set Password banner

* Update jslib
2021-09-07 12:11:43 -05:00
Matt Alexander dfd00bdaee
Fix typo in README (#1060) 2021-09-07 12:50:32 -04:00
Vince Grassia fcadedd458
Update workflows with linter suggestions (#1056) 2021-09-02 16:05:38 -04:00
Thomas Rittson 6bfd4ebafd
Update jslib (#1051) 2021-09-02 07:51:21 +10:00
Thomas Rittson 9494eb4b2d
Update jslib (#1050) 2021-09-01 07:12:35 +10:00
Vincent Salucci 39ac46aaa7
[Callout] Update UI structure (#1028)
* [Callout] Update UI structure

* Update jslib
2021-08-27 17:04:32 -05:00
Joseph Flinn 9dbd692e2d
Simplifying the Crowdin Sync workflow (#1048) 2021-08-27 10:08:32 -07:00
Oscar Hinton 2ba8925b81
Add password show/hide to reprompt (#959) 2021-08-27 15:30:44 +02:00
Joseph Flinn 5b4931e260
Reverting Chinese and Portuguese translations (#1044) 2021-08-25 09:23:10 -07:00
Joseph Flinn 1a6f283771
Removing the old setup logic that no longer works (#974)
* Removing the old setup logic that no longer works

* adding in formatting
2021-08-24 11:58:21 -07:00
Joseph Flinn 2d68fe37a1
Updating the release name (#1038) 2021-08-24 11:57:43 -07:00
Oscar Hinton 29b33b14e5
Bump version (#1040) 2021-08-23 12:03:19 +02:00
Oscar Hinton 9ae439b52f
Bump version to 1.28.1 (#1035) 2021-08-20 15:57:47 +02:00
Daniel James Smith a325ca2363
Added a comment to I18nService (#1032) 2021-08-19 22:40:33 +02:00
Vince Grassia 741fc69343
Revert EN Crowdin sync (#1031) 2021-08-19 13:45:56 -04:00
github-actions[bot] 026ee20250
Autosync Crowdin Translations (#1021)
* Autosync Crowdin translations

* Autosync Crowdin translations

Co-authored-by: github-actions <>
2021-08-18 14:24:16 -07:00
Daniel James Smith 72b688e241
Fix broken link to open Edge extension store from Help menu (#1025) 2021-08-18 07:46:53 +02:00
Matt Gibson 3100f55d51
Version bump to 1.28.0 (#1027) 2021-08-17 12:46:46 -05:00
Oscar Hinton 3cbb336416
Close proxy application when stdin is closed (#1024) 2021-08-17 14:01:31 +02:00
Joseph Flinn 99b8be81f6
Crowdin sync workflow (#1022)
* Initial addition of the crowdin sync workflow for testing

* adding some echo statements for debugging

* adding logic to gracefully exit if there are no new updates

* adding logic to select the correct diff_branch
2021-08-13 13:27:46 -07:00
Joseph Flinn 99b9a0951a
Adding stub for crowdin sync testing (#1020) 2021-08-13 07:29:43 -07:00
Matt Gibson a76f8749ca
Set iframe allow on window load (#1019)
* Set webauthn allow on initial load

* Update jslib
2021-08-13 09:24:07 -05:00
Vincent Salucci d82378a7a0
[Reset Password v1] Update Temp Password (#1015) 2021-08-11 15:49:44 -04:00
Thomas Rittson 816249a48a
Use cdk-virtual-scroll for long cipher lists (#1001)
* Use cdk-virtual-scroll for cipher lists

* add trackBy, reorder dom

* Undo merge conflict error

* Fix layout, increase scrolling buffer

* fix linting

* Remove unused infinite-scroll directives for Send

* Add back refresh method

* Update jslib

* Fix itemSize and min/maxBufferPx directives

* Move refresh() into base class

* Use cipherListVirtualScroll strategy

* fix linting

* Update to use latest virtual-scroll strategy

* Update jslib
2021-08-11 13:00:04 +10:00
Daniel James Smith 157d9478d4
Remove dependency on duo_web_sdk and update jslib (#1006) 2021-07-28 19:50:06 +02:00
Oscar Hinton 20561fff87
Add support for helpers in environment service (#1002)
* Add support for helpers in environment service

* Add environment service to register component

* Bump jslib
2021-07-23 17:15:32 -04:00
Matt Gibson c863d68057
Feature/use hcaptcha if bot (#1000)
* Add captcha to login component

* Add catpcha to login page

* Update content width if captcha is visible

* extend submit to handle widening if captcha is required

* Improve login styling

* Add Captcha to registration page

* Remove padding from captcha div

The padding was messing up image selection of captcha items

* Update jslib

* PR review

* update jslib
2021-07-23 13:48:10 -05:00
Addison Beck d7287e7aa3
set Send date presets to Custom if editing a send (#997) 2021-07-21 12:43:40 -04:00
Addison Beck 0682269e34
Resolved Safari Date/Time Issues In Send (#992)
* cleaned up date and time logic for Send

* updated jslib

* set up change detection for initial form values on data swap
2021-07-19 09:56:31 -04:00
Kyle Spearrin 9201730fe1 remove old code from #351 2021-07-12 10:11:43 -04:00
Trey Greer 6990056c04
Add AZ language (#988) 2021-07-12 07:44:40 +10:00
Joseph Flinn d5e9de2b8b
fixing the delayed release logic (#987) 2021-07-09 07:31:34 -07:00
Kyle Spearrin ccdd45b09e
New Crowdin updates (#983)
* New translations messages.json (Romanian)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Persian)

* New translations messages.json (Estonian)

* New translations messages.json (Swedish)

* New translations messages.json (Azerbaijani)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Kannada)

* New translations messages.json (Turkish)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (Finnish)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (German)

* New translations messages.json (Hebrew)

* New translations messages.json (Hungarian)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Russian)

* New translations messages.json (Slovak)

* New translations messages.json (English, India)
2021-07-07 17:39:11 -04:00
Chad Scharf d70de84fb7
[chore] version bump 1.27.1 (#982) 2021-07-07 17:23:56 -04:00
Shashank S 359daffd9e
Use radio buttons for password generator type instead of dropdown (#955)
* fix: radio instead of dropdown

* fix: remove, depend on upstream jslib

* chore: remove unnecessary label

* fix: missing tag

* chore: add label, remove dupl. intlz.

* feat: update jslib version

* Revert "feat: update jslib version"

This reverts commit 85f4b758bd.

* Update jslib

Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
2021-07-07 21:28:41 +10:00
Trey Greer cf56b68ba5
add Kannada language (#980) 2021-07-07 07:40:17 +10:00
Thomas Rittson 3aa171a664
[macOS] Don't enable secure input when app is not in focus (#970)
* Don't engage macOS secure input if not focused

* Refactor to use focusInputOnPageLoad

* Fix style and linting

* Refactor to remove focusOnPageLoad

* Update jslib
2021-07-05 08:06:24 +10:00
Joseph Flinn 6d8fbf1e43
changing the default browser extension branch to rc (#975) 2021-07-01 10:19:52 -07:00
Oscar Hinton c89ca36f51
Add SDKROOT to release workflow (#973) 2021-06-30 21:41:45 +02:00
Kyle Spearrin 8a01dcb87d
New Crowdin updates (#971)
* New translations messages.json (Romanian)

* New translations messages.json (Thai)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Vietnamese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Indonesian)

* New translations messages.json (Persian)

* New translations messages.json (Bengali)

* New translations messages.json (Croatian)

* New translations messages.json (Swedish)

* New translations messages.json (Estonian)

* New translations messages.json (Latvian)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Esperanto)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Kannada)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Montenegrin (Latin))

* New translations messages.json (Turkish)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (French)

* New translations messages.json (Finnish)

* New translations messages.json (Spanish)

* New translations messages.json (Afrikaans)

* New translations messages.json (Belarusian)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (German)

* New translations messages.json (Greek)

* New translations messages.json (Hebrew)

* New translations messages.json (Slovenian)

* New translations messages.json (Hungarian)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Portuguese)

* New translations messages.json (Russian)

* New translations messages.json (Slovak)

* New translations messages.json (English, India)
2021-06-29 15:33:15 -04:00
Vincent Salucci 4f781be542
[Version] Bump to 1.27.0 (#969) 2021-06-28 12:39:17 -05:00
Addison Beck f862fc3691
fixed the icon for sends being swapped between file and text sends (#967) 2021-06-24 15:45:36 +00:00
Oscar Hinton d748e0007e
Remove entryComponents (#966) 2021-06-24 17:13:22 +02:00
Matt Gibson 56a1cfe277
Redefine cipher "share" to "move to organization" (#961)
* Redefine cipher "share" to "move to organization"

* Update jslib

* PR review
2021-06-21 19:26:37 -05:00
Oscar Hinton 9c4ea9b491
Add reprompt help link (#963) 2021-06-21 20:56:37 +02:00
Vincent Salucci e0d1923237
[Toast] - BUG - Fixed styles (#957) 2021-06-16 14:44:17 -05:00
Matt Gibson bd0fb024c1
Always get key from storage to ensure biometric prompt. (#952)
* Always get key from storage to ensure biometric prompt.

* Update jslib

* Update jslib
2021-06-15 13:40:34 -05:00
Matt Gibson 3b4142bd0d
Merge pull request #946 from bitwarden/authenticate-with-secure-storage-service
Authenticate with secure storage service
2021-06-11 16:42:52 -05:00
Matt Gibson db688d208d Use default cache directory 2021-06-11 14:05:28 -04:00
Matt Gibson 1fc8c02579 Remove node_modules cache
`npm ci` deletes node_modules as a first step, so makes no sense to cache
2021-06-11 13:52:39 -04:00
Matt Gibson 1b96afe283 Cache npm directory and always run `npm ci` 2021-06-11 13:52:39 -04:00
Matt Gibson fc015bd4cb Default to development environment settings 2021-06-10 15:37:39 -04:00
Matt Gibson e751d24b35 Supply main sourcemaps only in dev builds 2021-06-10 12:50:59 -04:00
Matt Gibson ecd22e4d45 Update jslib 2021-06-09 16:56:12 -04:00
Matt Gibson 05e9419d65 Request biometrically secured stored key 2021-06-09 16:55:50 -04:00
Matt Gibson 29d538c3e6 Include main process source maps for debugging 2021-06-09 16:55:50 -04:00
Matt Gibson 1867949754
Merge pull request #947 from bitwarden/update-jslib
upate jslib
2021-06-09 08:51:43 -05:00
Matt Gibson 3888a9cdbb upate jslib 2021-06-09 09:28:58 -04:00
Oscar Hinton 296340a5be
Add jslib as a "real" dependency (#941)
* Add jslib as a "real" dependency

* Move more packages to jslib

* Remove some unesessary dev dependencies.

* Add back missing preinstall

* Revert jslib bump

* Fix jslib containing wrong types/node.

* Bump jslib

* Remove unessesary alias

* Remove dummy module
2021-06-07 19:26:36 +02:00
Vince Grassia 5ae7490478
MacOS Build Asset and Workflow Optimization (#942)
* adding more testable assets to the desktop build

* fixing typo

* renaming job

* fixing loading safari extension

* Fix typo

* Update workflows to use new Node caching

* Move checkout actions to beginning of jobs

* Add Run ID to key for Node cache

* Add Runner OS to cache actions

* Fix build commands by putting 'npx' in front

* Update builds to use other scripts in package.json

* Set up keychain for macos-package-dev

* Add 'Increment version' step to build workflow

* Disable MacOS dev build. Test other MacOS builds

* Add provisioning profile steps to other MacOS builds

* Remove test branch code

Co-authored-by: Joseph Flinn <joseph.s.flinn@gmail.com>
2021-06-07 12:00:13 -04:00
Thomas Rittson f0716c62d2
Merge pull request #929 from bitwarden/responsive-theme-change
Respond to OS theme changes
2021-06-03 07:47:07 +10:00
Chad Scharf 2cf4da8886
Merge pull request #940 from tgreer-bw/store-asset-update
New screenshots for MacOS + Windows
2021-06-02 14:35:45 -04:00
tgreer-bw c84ac6407a new screenshots 2021-06-02 13:54:46 -04:00
Oscar Hinton ea3316742c
Bump version to 1.26.5 (#938) 2021-06-02 18:09:20 +02:00
Thomas Rittson 6edd600006 Move theme update logic to services.module.ts 2021-06-02 07:28:21 +10:00
Vince Grassia 163351c3e7
Update pipelines (#936)
* Update workflows for consistency

* Update pipelines

- Trigger deploy workflow manually
- Publish release draft at the end of deploy workflow

* Enable artifact uploads for all branches and fail if no asset is found during upload

* Add if statements back in for MacOS

* Change Build application (dev) step
2021-06-01 17:14:02 -04:00
Thomas Rittson 98f614aeda bump jslib 2021-06-02 07:11:54 +10:00
Joseph Flinn 60f3d5d33e
Merge pull request #935 from bitwarden/constrain-release-rc
constraining releases to the rc branch
2021-06-01 11:45:31 -07:00
Joseph Flinn adb16783cf constraining releases to the rc branch 2021-06-01 11:21:04 -07:00
Tom Rittson b00df0112e Let all OS' use system theme on startup 2021-05-31 14:34:59 +10:00
Thomas Rittson 7f5a5a5fbb Only update to system theme if theme is Default 2021-05-31 14:34:59 +10:00
Thomas Rittson c225210a44 Respond to native OS theme changes 2021-05-31 14:34:53 +10:00
Oscar Hinton c7345197f7
Password reprompt fixes (#926)
* Hide card number when hidden

* Avoid double password prompts

* Bump jslib
2021-05-28 20:08:44 +02:00
Oscar Hinton c89da7f12b
Hardcode SDKRoot (#925)
* Hardcode SDKRoot

* Re-add branch check for app store
2021-05-28 19:38:09 +02:00
Thomas Rittson 78f9dd50ad
Merge pull request #924 from bitwarden/jslib-bump
bump jslib
2021-05-28 09:46:34 +10:00
Thomas Rittson a109259812 bump jslib 2021-05-28 07:56:30 +10:00
Oscar Hinton 42d280ac09
Bump NPM to v7 (#922)
* Bump NPM to v7

* Bump npm in build

* Add NPM v7 to readme

* Update node-gyp
2021-05-26 22:44:48 +02:00
Thomas Rittson b16f8bc253
Merge pull request #914 from bitwarden/hotfix-bump
Version bump to 1.26.4
2021-05-21 11:00:42 +10:00
Thomas Rittson f5175564b3 Version bump to 1.26.4 2021-05-21 08:59:07 +10:00
Thomas Rittson f5042bc07b
Merge pull request #905 from bitwarden/fix-set-saving
Convert Sets to Arrays before saving locally
2021-05-20 06:37:27 +10:00
Thomas Rittson 5bd7444e53 bump jslib 2021-05-19 10:11:24 +10:00
Chad Scharf 42091ac6d3
Merge pull request #903 from djsmith85/update-nvmrc
Update .nvmrc from 10.13.0 to 14.17.0
2021-05-18 14:58:41 -04:00
Daniel James Smith 9a2b2069b5 Update .nvmrc from 10.13.0 to 14.17.0 2021-05-18 18:30:24 +02:00
Vince Grassia 28ebbccbf1
Pin versions of actions in workflow (#901) 2021-05-18 09:21:26 -04:00
Chad Scharf 0156f7ba2d
Merge pull request #900 from bitwarden/fix-locale-typo
Fix locale typo
2021-05-17 16:48:02 -04:00
Vince Grassia c9ae2ed933 Update ME lang import to proper order 2021-05-17 16:25:57 -04:00
Vince Grassia 6f6de60509 Fix locale import typo 2021-05-17 16:24:11 -04:00
Chad Scharf 4a0be96b79
Merge pull request #898 from djsmith85/fix-me-locale
Fixed locale import for Montenegrin (Latin)
2021-05-17 14:43:58 -04:00
Daniel James Smith cae76cd74a Fixed locale import for Montenegrin (Latin) 2021-05-17 18:01:44 +02:00
Chad Scharf 012aa71054
Merge pull request #897 from tgreer-bw/language-adds
Add missing languages from Crowdin
2021-05-15 15:25:23 -04:00
Trey Greer cc165420f7
Update src/services/i18n.service.ts
Co-authored-by: Chad Scharf <3904944+cscharf@users.noreply.github.com>
2021-05-14 18:19:45 -04:00
tgreer-bw a24618be32 add missing languages from Crowdin 2021-05-14 16:42:12 -04:00
Chad Scharf 969a62de9e
Merge pull request #891 from djsmith85/update-readme
Adjust node version in README.md
2021-05-13 17:30:03 -04:00
Kyle Spearrin 0d5d8b671d
use swal titletext to avoid XSS (#884) 2021-05-13 15:22:52 -04:00
Thomas Rittson 55b0118240
Merge pull request #892 from bitwarden/improve-import-error-checking
Bump jslib
2021-05-13 11:23:49 +10:00
Thomas Rittson 2a471867aa bump jslib 2021-05-13 11:00:55 +10:00
Thomas Rittson 68096c1f12 update service deps 2021-05-13 10:53:38 +10:00
Daniel James Smith 731e44fd06 Adjust node version in README.md 2021-05-13 01:37:33 +02:00
Chad Scharf ee1f31d300 Version bump 1.26.3 2021-05-12 17:57:23 -04:00
Chad Scharf dd683e8dad Merge branch 'master' of https://github.com/bitwarden/desktop into master 2021-05-12 16:53:19 -04:00
Chad Scharf 2bf9f34472 Version bump 1.26.2 2021-05-12 16:53:17 -04:00
Oscar Hinton 8f7ab9f8db
Bump node to 14 (#869)
* Bump node to 14

* Bump some dependencies

* Bump jslib

* Ensure compatability with latest jslib

* Change node engine to ~14.
2021-05-12 22:38:02 +02:00
Chad Scharf 7d53ff788f Version bump to 1.26.1 2021-05-12 15:54:14 -04:00
Joseph Flinn 80ea232eb6
Merge pull request #889 from bitwarden/fix-desktop-deploy
Fix desktop deploy
2021-05-12 11:02:48 -07:00
Joseph Flinn 72c26ae999 switching one more PKG_VERSION environment variable 2021-05-12 10:57:48 -07:00
Joseph Flinn 3eb691fbd8 switching the env name 2021-05-12 10:54:20 -07:00
Joseph Flinn 7d959ffffb fixing the choco release asset grab 2021-05-12 10:53:20 -07:00
Joseph Flinn e2e41b7366 fixing the macos deploy 2021-05-12 10:47:58 -07:00
Joseph Flinn d50bb7bf3a fixing the snap deploy 2021-05-12 10:47:05 -07:00
Vince Grassia 64492d95cf
Update workflows to accommodate universal pkg artifact for Mac (#888) 2021-05-12 10:59:30 -04:00
Joseph Flinn d05cd38e70
Merge pull request #886 from bitwarden/fix-release-pipeline
Fix release pipeline
2021-05-11 14:45:21 -07:00
Joseph Flinn 95c1876178 Merge branch 'master' into fix-release-pipeline 2021-05-11 14:41:15 -07:00
Joseph Flinn cac06e473e removing the broken testing code 2021-05-11 14:41:10 -07:00
Chad Scharf 590a67d38d
Merge pull request #882 from djsmith85/fix-typo
Fix typo in webAuthnAuthenticate
2021-05-11 17:20:11 -04:00
Joseph Flinn 525f0e8a66
Merge pull request #885 from bitwarden/fix-release-pipeline
removing the unix flags from the pwsh
2021-05-11 14:10:45 -07:00
Joseph Flinn 564d170d7a removing the unix flags from the pwsh 2021-05-11 14:07:03 -07:00
Daniel James Smith 00781806f5 Fix typo in webAuthnAuthenticate 2021-05-11 21:04:18 +02:00
Chad Scharf 33d2c63798
Merge pull request #881 from bitwarden/l10n_master
New Crowdin updates
2021-05-11 14:01:04 -04:00
Kyle Spearrin 23e20ae0a3 New translations messages.json (English, India) 2021-05-11 13:47:37 -04:00
Kyle Spearrin 608505f9e6 New translations messages.json (Russian) 2021-05-11 13:47:36 -04:00
Kyle Spearrin dc3c33abad New translations messages.json (Portuguese) 2021-05-11 13:47:35 -04:00
Kyle Spearrin 2d022773ad New translations messages.json (Polish) 2021-05-11 13:47:34 -04:00
Kyle Spearrin 69f4782e46 New translations messages.json (Dutch) 2021-05-11 13:47:32 -04:00
Kyle Spearrin c9b9bd6ea5 New translations messages.json (Korean) 2021-05-11 13:47:31 -04:00
Kyle Spearrin 045e7b7001 New translations messages.json (Japanese) 2021-05-11 13:47:30 -04:00
Kyle Spearrin 728b4e06f5 New translations messages.json (Italian) 2021-05-11 13:47:29 -04:00
Kyle Spearrin c9af991027 New translations messages.json (Hungarian) 2021-05-11 13:47:27 -04:00
Kyle Spearrin 4301f5d881 New translations messages.json (Hebrew) 2021-05-11 13:47:26 -04:00
Kyle Spearrin 8b6d0a8a07 New translations messages.json (Slovak) 2021-05-11 13:47:25 -04:00
Kyle Spearrin 5581ec6aa1 New translations messages.json (Finnish) 2021-05-11 13:47:23 -04:00
Kyle Spearrin b143010486 New translations messages.json (German) 2021-05-11 13:47:22 -04:00
Kyle Spearrin 3a907bf3fa New translations messages.json (Danish) 2021-05-11 13:47:21 -04:00
Kyle Spearrin 79187c5782 New translations messages.json (Czech) 2021-05-11 13:47:20 -04:00
Kyle Spearrin 6a89651588 New translations messages.json (Catalan) 2021-05-11 13:47:18 -04:00
Kyle Spearrin 08a9a81992 New translations messages.json (Bulgarian) 2021-05-11 13:47:17 -04:00
Kyle Spearrin 9701fa9736 New translations messages.json (Belarusian) 2021-05-11 13:47:16 -04:00
Kyle Spearrin 765ef26340 New translations messages.json (Afrikaans) 2021-05-11 13:47:14 -04:00
Kyle Spearrin 3c83c14bb8 New translations messages.json (Spanish) 2021-05-11 13:47:13 -04:00
Kyle Spearrin 0ca036b968 New translations messages.json (Greek) 2021-05-11 13:47:12 -04:00
Kyle Spearrin 157dfabaae New translations messages.json (French) 2021-05-11 13:47:11 -04:00
Kyle Spearrin f82d900cc2 New translations messages.json (Slovenian) 2021-05-11 13:47:09 -04:00
Kyle Spearrin 444511152c New translations messages.json (Swedish) 2021-05-11 13:47:08 -04:00
Kyle Spearrin 9b294bf4dd New translations messages.json (Montenegrin (Latin)) 2021-05-11 13:47:07 -04:00
Kyle Spearrin 035d6ee5b3 New translations messages.json (Norwegian Bokmal) 2021-05-11 13:47:05 -04:00
Kyle Spearrin f024b33e02 New translations messages.json (Sinhala) 2021-05-11 13:47:03 -04:00
Kyle Spearrin d3bb87ccb7 New translations messages.json (Malayalam) 2021-05-11 13:47:02 -04:00
Kyle Spearrin 57f8176aac New translations messages.json (Esperanto) 2021-05-11 13:47:01 -04:00
Kyle Spearrin fb4cb327ab New translations messages.json (English, United Kingdom) 2021-05-11 13:46:59 -04:00
Kyle Spearrin 64cee80521 New translations messages.json (Latvian) 2021-05-11 13:46:58 -04:00
Kyle Spearrin cb73582038 New translations messages.json (Estonian) 2021-05-11 13:46:57 -04:00
Kyle Spearrin 203c44bace New translations messages.json (Croatian) 2021-05-11 13:46:56 -04:00
Kyle Spearrin 19e09243fb New translations messages.json (Serbian (Cyrillic)) 2021-05-11 13:46:55 -04:00
Kyle Spearrin e8e888698d New translations messages.json (Thai) 2021-05-11 13:46:54 -04:00
Kyle Spearrin 6b1c15519d New translations messages.json (Persian) 2021-05-11 13:46:52 -04:00
Kyle Spearrin 2402a6f4c6 New translations messages.json (Indonesian) 2021-05-11 13:46:51 -04:00
Kyle Spearrin 6f92b55f40 New translations messages.json (Portuguese, Brazilian) 2021-05-11 13:46:50 -04:00
Kyle Spearrin 2992a31b61 New translations messages.json (Vietnamese) 2021-05-11 13:46:48 -04:00
Kyle Spearrin 061996bf55 New translations messages.json (Chinese Traditional) 2021-05-11 13:46:47 -04:00
Kyle Spearrin 0a288899e7 New translations messages.json (Chinese Simplified) 2021-05-11 13:46:46 -04:00
Kyle Spearrin da8697ea94 New translations messages.json (Ukrainian) 2021-05-11 13:46:44 -04:00
Kyle Spearrin d5e5dfc1d5 New translations messages.json (Turkish) 2021-05-11 13:46:43 -04:00
Kyle Spearrin 21a3c4357a New translations messages.json (Bengali) 2021-05-11 13:46:42 -04:00
Kyle Spearrin 5db26cbcc6 New translations messages.json (Romanian) 2021-05-11 13:46:41 -04:00
Oscar Hinton af5898a001
Add setting for disabling auto prompt of biometrics (#873)
* Add setting for disabling auto prompt of biometrics

* Ensure window is visible before prompting for biometrics
2021-05-06 20:19:48 +02:00
Oscar Hinton a712917f47
Fix VS code ts language server no longer working after #866 (#872) 2021-05-06 16:45:27 +02:00
Oscar Hinton 266f089b3e
Cleanup tsconfig (#866)
* Simplify tsconfig

* Add separate tsconfig for renderer to get rid of last warnings
2021-05-05 09:47:35 +02:00
Oscar Hinton 2bdd7413aa
Block save button when uploading a send (#871)
* Block save button when uploading a send

* Add overflow hidden to prevent scrollbar appearing
2021-05-04 23:36:57 +02:00
Chad Scharf 3a342be095
Merge pull request #870 from gryffs/box-content-flex
Add flexbox to cipher list to correct display center issue.
2021-05-04 16:05:26 -04:00
Oscar Hinton 42564285d9
Password reprompt (#838)
* Add support for password reprompt
2021-05-04 21:32:03 +02:00
Chad Griffis 49748ee05a Replace single quote with double quotes in HTML and use div in place of a element. 2021-05-03 23:31:45 +08:00
Chad Griffis 0c12367721 Add flexbox to cipher list to correct display center issue. 2021-05-03 17:17:19 +08:00
Oscar Hinton 20b8a83dd8
Disconnect active connections when closing native messaging. Fix exe path on windows (#865) 2021-05-03 09:59:40 +02:00
Thomas Rittson 163fa2aa41
Merge pull request #851 from gryffs/prompt-trigger-apwd
Implement the markAsDirty form controls for AddEditComponent(#761)

Prevents add-edit page from closing if new password has been generated
2021-05-03 07:45:03 +10:00
Chad Griffis 7bed3b0b59 Update a formatting issue with markPasswordAsDirty 2021-05-01 16:44:40 +08:00
Oscar Hinton 418625682a
Write native messaging manifests for Chromium (#862) 2021-04-29 16:12:57 +02:00
Chad Scharf 2f2a76d186
Merge pull request #860 from djsmith85/bump-jslib
Bump jslib to include fix for lastpass totp import
2021-04-29 05:59:13 -04:00
Daniel James Smith 422180fed1 Bump jslib to include fix for lastpass totp import 2021-04-29 00:01:25 +02:00
Oscar Hinton ea90aebaba
Bump jslib for download in renderer (#859) 2021-04-27 17:17:49 +02:00
Chad Scharf 7e52657de6
Merge pull request #856 from gryffs/update-jslib
update submodule
2021-04-26 15:21:13 -04:00
Thomas Rittson eb1c5f809a
Merge pull request #853 from bitwarden/fix-biometric-button
Don't submit form when unlocking with biometrics
2021-04-26 08:35:08 +10:00
Chad Griffis 113937b3d3 update submodule 2021-04-23 18:57:39 +08:00
Oscar Hinton e6e79917f7
Bump dependencies (#848)
* Bump dependencies
2021-04-23 10:45:30 +02:00
Tom Rittson cf29c35e07 Don't submit form when unlocking with biometrics 2021-04-23 10:58:44 +10:00
Oscar Hinton 6dc82a8707
Change unlock biometric button to be selectable using tab (#846) 2021-04-22 20:00:05 +02:00
Vincent Salucci 227a1eaff9
[Version] Bump to 1.26.0 (#852) 2021-04-22 12:13:17 -05:00
Chad Griffis 06f2364733 Implement the markAsDirty form controls for AddEditComponent(#761). 2021-04-22 23:24:59 +08:00
Matt Gibson 7f49c8cb98
Merge pull request #850 from bitwarden/use-attachment-download-data-on-cipher-view-component
Update view DI
2021-04-22 09:54:16 -05:00
Matt Gibson 84b60a1a08 Update jslib 2021-04-22 09:34:12 -05:00
Matt Gibson 42636d3d2e Update view DI 2021-04-22 08:28:47 -05:00
Thomas Rittson f7d2ab7d97
Merge pull request #847 from bitwarden/unauth-unlock-guards
Add unauthGuard and lockGuard to prevent unintended navigation
2021-04-22 18:14:03 +10:00
Thomas Rittson 99fe9cf693 bump jslib 2021-04-22 07:56:53 +10:00
Thomas Rittson d7e1fda17d Fix linting 2021-04-22 07:56:19 +10:00
Thomas Rittson 62ccf420a2 Add guards to lock and login routes 2021-04-22 07:56:19 +10:00
Matt Gibson cdc8191f39
Merge pull request #849 from bitwarden/update-jslib
Update jslib
2021-04-21 14:22:48 -05:00
Matt Gibson cdd3aa6cdf Revert password reprompt 2021-04-21 14:18:08 -05:00
Matt Gibson 8b0d554316 Update jslib 2021-04-21 14:14:04 -05:00
Matt Gibson 60af6b3d49 Update jslib 2021-04-21 08:48:06 -05:00
Thomas Rittson 0724041daf
Don't use tokenService to manage emailVerified (#841)
* Update send add-edit component dependencies

* bump jslib
2021-04-15 10:29:26 +02:00
Oscar Hinton 6acfba4b40
Remove dead code (#839)
* Remove last remnants of old analytics code
2021-04-14 23:43:22 +02:00
Matt Gibson 6897b8562c
Merge pull request #840 from bitwarden/update-jslib
Update jslib
2021-04-14 11:44:44 -05:00
Matt Gibson b0b17e660d Update jslib 2021-04-14 10:56:48 -05:00
Chad Scharf 5f986c19fc
Merge pull request #836 from bitwarden/desktop-714
Update jslib for macOS CMD+W close action
2021-04-13 15:34:37 -04:00
Chad Scharf 2dd88d4eed Update jslib for macOS CMD+W close action 2021-04-13 14:38:39 -04:00
Kyle Spearrin 62baff5d39 update package.lock.json 2021-04-12 11:17:11 -04:00
Kyle Spearrin 00f54ee34a npm audit fix 2021-04-12 11:02:40 -04:00
Kyle Spearrin 23c15cee48 update some lib refs 2021-04-12 11:02:07 -04:00
Matt Gibson a9a5c7ed65
Update jslib (#834) 2021-04-12 10:59:10 -04:00
Snyk bot dd8409475a
fix: upgrade node-forge from 0.7.6 to 0.10.0 (#827)
Snyk has created this PR to upgrade node-forge from 0.7.6 to 0.10.0.

See this package in npm:
https://www.npmjs.com/package/node-forge

See this project in Snyk:
https://app.snyk.io/org/kspearrin/project/257fd10d-8b4a-4ead-b08e-11ddee875925?utm_source=github&utm_medium=upgrade-pr
2021-04-12 10:57:04 -04:00
Snyk bot 3e90da6a32
fix: upgrade @microsoft/signalr-protocol-msgpack from 3.1.0 to 3.1.13 (#825)
Snyk has created this PR to upgrade @microsoft/signalr-protocol-msgpack from 3.1.0 to 3.1.13.

See this package in npm:
https://www.npmjs.com/package/@microsoft/signalr-protocol-msgpack

See this project in Snyk:
https://app.snyk.io/org/kspearrin/project/257fd10d-8b4a-4ead-b08e-11ddee875925?utm_source=github&utm_medium=upgrade-pr

Co-authored-by: Kyle Spearrin <kspearrin@users.noreply.github.com>
2021-04-12 10:56:52 -04:00
Snyk bot 3d63057b12
fix: upgrade big-integer from 1.6.36 to 1.6.48 (#824)
Snyk has created this PR to upgrade big-integer from 1.6.36 to 1.6.48.

See this package in npm:
https://www.npmjs.com/package/big-integer

See this project in Snyk:
https://app.snyk.io/org/kspearrin/project/257fd10d-8b4a-4ead-b08e-11ddee875925?utm_source=github&utm_medium=upgrade-pr
2021-04-12 10:56:18 -04:00
Snyk bot 767fa7beac
fix: upgrade @microsoft/signalr from 3.1.0 to 3.1.13 (#823)
Snyk has created this PR to upgrade @microsoft/signalr from 3.1.0 to 3.1.13.

See this package in npm:
https://www.npmjs.com/package/@microsoft/signalr

See this project in Snyk:
https://app.snyk.io/org/kspearrin/project/257fd10d-8b4a-4ead-b08e-11ddee875925?utm_source=github&utm_medium=upgrade-pr
2021-04-12 10:56:04 -04:00
Thomas Rittson 70aef37f77
Merge pull request #829 from bitwarden/verify-email-for-send
Require user to verify email to use file Send
2021-04-12 08:21:13 +10:00
Thomas Rittson 30793a0d9b Merge branch 'master' into verify-email-for-send 2021-04-09 15:41:49 +10:00
Thomas Rittson 737360b720 bump jslib 2021-04-09 15:41:33 +10:00
Oscar Hinton eebd4fc9d9
Remove electron remote (#830)
* Remove calls to remote
2021-04-07 20:25:15 +02:00
Thomas Rittson 05183149ad Fix linting 2021-04-07 13:11:45 +10:00
Thomas Rittson bc543de307 Require user to verify email to use file Send 2021-04-07 12:47:50 +10:00
Matt Gibson 9ff6b4242c
Merge pull request #828 from bitwarden/update-jslib
Update jslib
2021-04-05 15:19:34 -05:00
Chad Scharf 7a4eb35a09
Merge pull request #816 from LaurentTreguier/macos-icon
Update macOS icon to follow Big Sur design
2021-04-05 15:54:56 -04:00
Matt Gibson dff1fce8ae Update jslib 2021-04-05 11:18:41 -05:00
Laurent Tréguier 2aa9162b03
Adjust smaller macOS icons padding 2021-04-01 00:49:01 +02:00
Thomas Rittson bb0d449a09
Merge pull request #819 from bitwarden/fix-sso-premium-error
Fix Premium Required message after sso auth
2021-04-01 06:46:00 +10:00
Thomas Rittson 43f511a711 Fix Premium Required message after sso auth 2021-03-31 14:14:52 +10:00
Matt Gibson fdb02c376f
Merge pull request #818 from bitwarden/update-jslib
Update jslib
2021-03-30 19:08:51 -05:00
Matt Gibson bab4ef82c7 Update jslib 2021-03-30 19:52:24 -04:00
Laurent Tréguier ceee03bf50
Update macOS icon to follow Big Sur design 2021-03-29 20:33:41 +02:00
Matt Gibson 7e7f66416d
Merge pull request #815 from bitwarden/azure-upload-blobs
Use file upload service for file uploads
2021-03-29 09:47:29 -05:00
Matt Gibson 5701275c22 Update jslib 2021-03-29 08:24:18 -05:00
Matt Gibson 99f8fdb4e9 Use file upload service for file uploads 2021-03-29 08:24:00 -05:00
Thomas Rittson 0fabda65e7
Merge pull request #812 from bitwarden/send-hide-email
Hide email address in Sends
2021-03-29 07:58:25 +10:00
addison 500f6264a6 updated service params 2021-03-26 15:06:48 -04:00
Thomas Rittson eb993e0a9e update jslib 2021-03-26 08:31:32 +10:00
Oscar Hinton b5492e9546
Simplify logic for resolving path to exe for native messaging (#814) 2021-03-25 23:11:31 +01:00
Chad Scharf fa8b368b99
Merge pull request #813 from djsmith85/build_badges
Removed appveyor.yml and travis.yml and updated badge in README.md
2021-03-25 15:03:37 -04:00
Daniel James Smith 858995c20e Removed travis.yml including the badge in README.md 2021-03-25 19:40:51 +01:00
Daniel James Smith 8da44ef995 Removed appveyor.yml and replaced badge in README.md 2021-03-25 19:39:33 +01:00
Thomas Rittson f3ae6ed1e2 Add "hide email" option for Send 2021-03-25 15:29:49 +10:00
Matt Gibson b5f89ee1a5
Merge pull request #811 from bitwarden/premium-component-honor-org-premium
Update jslib
2021-03-24 11:25:51 -05:00
Matt Gibson 2a0ab87be0 Update jslib 2021-03-24 11:17:20 -05:00
Oscar Hinton 9154b483c0
Temporary fix for building masdev (#809) 2021-03-24 17:17:03 +01:00
Oscar Hinton 64da326be3
Attempt to create NativeMessagingHosts directory if not already exist (#808) 2021-03-23 23:35:25 +01:00
Oscar Hinton 85f29e1222
Write native messaging manifests for Chrome/edge beta/dev/canary (#804) 2021-03-22 22:16:02 +01:00
Oscar Hinton 316de9109d
Patch electron-builder for node 10. (#807) 2021-03-22 21:21:57 +01:00
Oscar Hinton 29c10073fe
Patch electron-builder to support universal binaries on Mac (#803) 2021-03-22 16:52:12 +01:00
Oscar Hinton 619cf4067a
Add script for downloading legacy safari extension (#796) 2021-03-19 17:18:48 +01:00
Oscar Hinton fc7a968b0c
Merge pull request #798 from bitwarden/hotfix/native-messaging-mac
Resolve browser biometrics not working for some
2021-03-19 17:18:32 +01:00
Hinton c2e8e07002 Fix edge case where tmp directory doesn't exist in home dir on mac. 2021-03-18 21:33:14 +01:00
Chad Scharf 7b9156c041
Merge pull request #793 from nitrocode/mac-m1-arm
Add --universal to mac builds
2021-03-18 14:17:37 -04:00
nitro 5be6475c83
Consistency using colons instead of underscore
Co-authored-by: Chad Scharf <3904944+cscharf@users.noreply.github.com>
2021-03-18 14:14:20 -04:00
nitro 2d3c9809bc
Separate pack:mac_arm64 target 2021-03-17 18:06:23 -04:00
Chad Scharf aefd292898
Merge pull request #791 from bitwarden/version-bump-1.25.1
Version bump to 1.25.1
2021-03-17 17:17:37 -04:00
Oscar Hinton a3e7bab76a
Merge pull request #750 from bitwarden/feature/webauthn 2021-03-17 22:14:14 +01:00
nitro 38788b67dc
Add --universal to mac builds 2021-03-17 15:43:53 -04:00
Oscar Hinton 3ac40e534e
Merge pull request #789 from bitwarden/feature/add-distribution 2021-03-17 20:43:20 +01:00
Chad Scharf a0903a0932 Version bump to 1.25.1 2021-03-17 13:38:25 -04:00
Oscar Hinton 04d0c12b90
Change Windows store -> Microsoft store 2021-03-17 18:23:00 +01:00
Oscar Hinton 1150e8222a
Add distribution channel to issue template 2021-03-17 18:21:04 +01:00
Chad Scharf 6873a6ea39
Merge pull request #779 from aimuz/support-vivaldi-for-macos
support vivaldi for macos
2021-03-17 10:14:18 -04:00
Hinton 033bf0b1ca Merge branch 'master' of https://github.com/bitwarden/desktop into feature/webauthn 2021-03-16 23:06:21 +01:00
aimuz 444a06d6f7 support vivaldi for macos 2021-03-16 17:00:27 +08:00
Oscar Hinton b3af355818
Bump electron to 11.3.0 (#784) 2021-03-15 23:15:27 +01:00
Joseph Flinn b11e0e292f
Merge pull request #704 from joseph-flinn/master
Splitting out the deploy tasks from the release
2021-03-15 14:40:03 -07:00
Oscar Hinton fe832d02c4
Bump electron-builder (#783) 2021-03-15 22:27:58 +01:00
Hinton 0786d74ef5 Update jslib 2021-03-15 16:49:33 +01:00
Hinton edc531e105 Merge branch 'master' of https://github.com/bitwarden/desktop into feature/webauthn 2021-03-15 16:23:52 +01:00
Kyle Spearrin 0e1dab40cc
style tweaks to send add/edit page (#767)
* style tweaks to send add/edit page

* remove redundant conditional
2021-03-12 14:37:52 -05:00
Kyle Spearrin 368ac0ba93 new certs and profiles 2021-03-11 14:12:44 -05:00
Chad Scharf a5a5ecd678
Merge pull request #769 from bitwarden/l10n_master
New Crowdin updates
2021-03-11 13:57:01 -05:00
Kyle Spearrin cc29fa2af3 New translations messages.json (Catalan) 2021-03-11 13:54:04 -05:00
Kyle Spearrin 92377be73c New translations messages.json (German) 2021-03-11 13:54:03 -05:00
Kyle Spearrin 8927df54c4 New translations messages.json (Finnish) 2021-03-11 13:54:01 -05:00
Kyle Spearrin 8a2a1efef7 New translations messages.json (Hungarian) 2021-03-11 13:54:00 -05:00
Kyle Spearrin f860263ff2 New translations messages.json (Italian) 2021-03-11 13:53:58 -05:00
Kyle Spearrin dd57259beb New translations messages.json (Japanese) 2021-03-11 13:53:57 -05:00
Kyle Spearrin 1420c9f58f New translations messages.json (Korean) 2021-03-11 13:53:55 -05:00
Kyle Spearrin d5a0b30108 New translations messages.json (Dutch) 2021-03-11 13:53:54 -05:00
Kyle Spearrin a2bd951371 New translations messages.json (Polish) 2021-03-11 13:53:53 -05:00
Kyle Spearrin ec3d8659b8 New translations messages.json (Belarusian) 2021-03-11 13:53:51 -05:00
Kyle Spearrin 418bc35d84 New translations messages.json (Russian) 2021-03-11 13:53:50 -05:00
Kyle Spearrin c9b10a5f8f New translations messages.json (Serbian (Cyrillic)) 2021-03-11 13:53:48 -05:00
Kyle Spearrin a7355871b9 New translations messages.json (Ukrainian) 2021-03-11 13:53:47 -05:00
Kyle Spearrin 468dde79ac New translations messages.json (Chinese Simplified) 2021-03-11 13:53:46 -05:00
Kyle Spearrin d6a6ce6368 New translations messages.json (Chinese Traditional) 2021-03-11 13:53:44 -05:00
Kyle Spearrin 0313ca7acc New translations messages.json (Portuguese, Brazilian) 2021-03-11 13:53:43 -05:00
Kyle Spearrin 0995da1fd3 New translations messages.json (Persian) 2021-03-11 13:53:41 -05:00
Kyle Spearrin a08b6d4b5e New translations messages.json (Estonian) 2021-03-11 13:53:39 -05:00
Kyle Spearrin 3e422536b8 New translations messages.json (Latvian) 2021-03-11 13:53:38 -05:00
Kyle Spearrin 34af94bd5d New translations messages.json (Slovak) 2021-03-11 13:53:36 -05:00
Kyle Spearrin 53944c58bd New translations messages.json (Romanian) 2021-03-11 13:53:34 -05:00
Kyle Spearrin 3ff3ffe452 update jslib 2021-03-11 10:47:46 -05:00
Chad Scharf 1c2c444518
Merge pull request #765 from bitwarden/version-bump
Minor release version bump to 1.25.0
2021-03-10 12:07:32 -05:00
Chad Scharf 04e7c8926a
Merge pull request #766 from bitwarden/fix-lint-errors
fix lint errors - trailing whitespace
2021-03-10 10:54:31 -05:00
Chad Scharf ab24604d18 fix lint errors - trailing whitespace 2021-03-10 10:45:56 -05:00
Chad Scharf 96e8d712ce
Merge pull request #757 from aimuz/patch-1
fix: Edge supported by biometrics
2021-03-10 10:20:06 -05:00
Thomas Rittson bdc2f288ec Minor release version bump to 1.25.0 2021-03-10 08:59:55 +10:00
Addison Beck b445bec719
Merge pull request #764 from bitwarden/SendFileSize
added file size to Send view
2021-03-09 14:56:08 -05:00
addison 9aaa9a0fdb added file size to Send view 2021-03-09 14:30:30 -05:00
Kyle Spearrin 9310f7d202
New Crowdin updates (#763)
* New translations messages.json (French)

* New translations messages.json (German)

* New translations messages.json (Japanese)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (Persian)
2021-03-09 13:19:15 -05:00
Kyle Spearrin 8deedbfe20
New Crowdin updates (#762)
* New translations messages.json (Romanian)

* New translations messages.json (Bengali)

* New translations messages.json (Turkish)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Vietnamese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Indonesian)

* New translations messages.json (Persian)

* New translations messages.json (Thai)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (Croatian)

* New translations messages.json (Estonian)

* New translations messages.json (Latvian)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Esperanto)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Montenegrin (Latin))

* New translations messages.json (Swedish)

* New translations messages.json (Slovenian)

* New translations messages.json (French)

* New translations messages.json (Greek)

* New translations messages.json (Spanish)

* New translations messages.json (Afrikaans)

* New translations messages.json (Belarusian)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (German)

* New translations messages.json (Finnish)

* New translations messages.json (Slovak)

* New translations messages.json (Hebrew)

* New translations messages.json (Hungarian)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Portuguese)

* New translations messages.json (Russian)

* New translations messages.json (English, India)
2021-03-09 11:48:44 -05:00
aimuz 0a56bcb5c9 fix: Edge supported by biometrics 2021-03-09 09:49:45 +08:00
Addison Beck acfbce6237
Merge pull request #759 from bitwarden/SendFixes
fixed icon redirect bug on Sends
2021-03-08 15:44:51 -05:00
addison 5724875328 fixed icon redirect bug on Sends 2021-03-08 15:19:08 -05:00
Hinton 862f9a5a63 Update to use the new WebAuthn iframe 2021-03-08 19:12:56 +01:00
Thomas Rittson 79d0fa842f
Merge pull request #751 from bitwarden/encrypted-export-warning
Add extra encrypted export warnings
2021-03-05 09:56:25 +10:00
Thomas Rittson 8d05013f75 update jslib 2021-03-05 08:59:41 +10:00
Joseph Flinn 1c39c294e0
Merge pull request #749 from bitwarden/add-rc-auto
fixing typo
2021-03-04 14:43:36 -08:00
Thomas Rittson 7f04d8e952 Add extra encrypted export warnings 2021-03-05 07:53:35 +10:00
Hinton 907fabdd8e Remove allow from html since it's moved to js 2021-03-04 22:36:17 +01:00
Hinton b7889b15ff Add support for WebAuthn 2021-03-04 20:19:59 +01:00
Joseph Flinn a467881a76 fixing typo 2021-03-04 10:23:54 -08:00
Joseph Flinn 3d425e5b8c
Merge pull request #748 from bitwarden/add-rc-auto
adding artifacts to the builds on the rc branch
2021-03-04 10:08:20 -08:00
Joseph Flinn 8facd15772 adding artifacts to the builds on the rc branch 2021-03-04 09:54:14 -08:00
Matt Gibson 87b6ba5cbf
Merge pull request #743 from bitwarden/update-jslib
Update jslib
2021-03-02 11:12:02 -06:00
Matt Gibson 704ceef5f9 Update jslib 2021-03-02 09:51:31 -06:00
Addison Beck fd36237f85
Merge pull request #741 from bitwarden/ClearSendPassword
updated jslib
2021-03-01 12:13:14 -05:00
addison 701f20ed63 updated jslib 2021-03-01 11:59:50 -05:00
Addison Beck b8de7d2619
Merge pull request #735 from bitwarden/SendBadges
Send badges
2021-02-25 16:57:03 -05:00
addison c620c419d7 missing * 2021-02-25 13:33:56 -05:00
addison ac4afc6ef1 changed disabled badge style 2021-02-25 13:27:47 -05:00
addison f429996d5c added status badges to Send 2021-02-25 13:12:47 -05:00
Chad Scharf d570e68c01
Merge pull request #734 from djsmith85/master
Updated year to current in copyright(s)
2021-02-25 08:53:34 -05:00
Daniel James Smith 90ffddd25e Updated year to current in copyright(s)
We all would like to forget 2020 for obvious reasons...
2021-02-24 22:52:53 +01:00
Chad Scharf 6a5d24be5e
Merge pull request #733 from djsmith85/master
Fixes #723
2021-02-24 16:13:26 -05:00
Daniel James Smith 8207d86df5 Fixes #723
Change the link for fileBugReport to point to https://github.com/bitwarden/desktop/issues
2021-02-24 20:07:36 +01:00
Addison Beck 3406734eed
Merge pull request #730 from bitwarden/Send
Send Cleanup
2021-02-23 11:31:26 -05:00
addison fe097e883e updated jslib 2021-02-23 11:08:28 -05:00
addison 077b4b8de5 updated disableSend implementations 2021-02-23 10:40:44 -05:00
Addison Beck bddbe186fc
Merge pull request #724 from bitwarden/Send 2021-02-23 09:46:15 -05:00
addison 696fddc970 label-hack change 2021-02-22 15:06:18 -05:00
addison f6fb4fee29 refactor 2021-02-22 15:00:19 -05:00
addison 7227b0c089 broke up some lines 2021-02-22 13:25:57 -05:00
addison 7e03d282df inital pass at menu bar functions 2021-02-22 13:17:02 -05:00
Chad Scharf 1524f378db
Merge pull request #725 from limonte/master
Bump sweetalert2 to latest
2021-02-18 18:49:18 -05:00
Limon Monte f922e0ede3 chore: bump sweetalert2 to latest 2021-02-19 00:48:12 +02:00
addison 07e78d75d5 remove unused code 2021-02-18 13:10:10 -05:00
addison 689f2c3535 lint fixes 2021-02-18 13:06:21 -05:00
addison 0918ad1425 removed a comment 2021-02-18 13:05:12 -05:00
addison ac807b6d54 bells and whistles for Send 2021-02-18 13:03:20 -05:00
Addison Beck 4a8cf62495
removed extra subscription 2021-02-16 16:33:32 -05:00
addison 68044f7170 removed disable send references 2021-02-16 14:02:28 -05:00
addison ec162f8fbf removed a console log 2021-02-16 13:27:22 -05:00
addison 73bc46ae4a fixed bugs found creating demo video 2021-02-16 13:11:14 -05:00
addison 1290ff2c40 finished CRUD operations for Send 2021-02-16 11:52:23 -05:00
Addison Beck 82cb6fd020
Merge pull request #721 from bitwarden/Send
Allowed editing sends
2021-02-10 21:00:04 -05:00
addison 12532f3cc4 Allowed editing sends 2021-02-10 14:15:10 -05:00
Addison Beck 0b7621141c
Merge pull request #720 from bitwarden/Send
View Sends
2021-02-10 12:21:23 -05:00
Addison Beck 544ecbecdc
Update messages.json 2021-02-10 11:38:35 -05:00
addison 30a7db2f20 Added support for viewing Sends' 2021-02-09 15:57:10 -05:00
Chad Scharf 66b984122c
Merge pull request #716 from bitwarden/cscharf-fix-lint-error
Fix lint error (s) => arrow function parens banned
2021-02-08 14:30:04 -05:00
Matt Gibson a0e80fc486
Merge pull request #717 from bitwarden/add-totp-quick-copy-buttons
Add main menu copy and shortcut and context copy for totp
2021-02-08 13:24:32 -06:00
Matt Gibson 113c035152 Add trailing comma to linter 2021-02-08 12:58:44 -06:00
Matt Gibson ba173f9da5 Add main menu copy and shortcut and context copy for totp 2021-02-08 11:20:12 -06:00
Chad Scharf fa68ea249c
Fix lint error (s) => arrow function parens banned 2021-02-08 10:16:17 -05:00
Chad Scharf ab9b87acf3
Merge pull request #713 from astr0n8t/master
Fixed menu reloading bug
2021-02-08 10:04:53 -05:00
Nathan Higley 9da60f8c0d Fixed menu reloading bug 2021-02-05 14:36:49 -05:00
Addison Beck e066077542
Merge pull request #710 from bitwarden/Send 2021-02-05 14:21:52 -05:00
addison f537a8a601 cleanup 2021-02-05 12:44:45 -05:00
addison ec933025f3 made nav into a toolbar 2021-02-05 12:34:01 -05:00
Matt Gibson 2dca45b677
Merge pull request #709 from bitwarden/match-tslint-rules
Match linter rules
2021-02-03 22:54:14 -06:00
addison 3e6f85c206 deleted more of the send component 2021-02-03 23:52:27 -05:00
addison 5a71d5fdc8 deleted more or the send component 2021-02-03 23:50:41 -05:00
addison 631d053ef1 cleanup 2021-02-03 23:23:19 -05:00
addison d8e61d49c0 removed unused imports 2021-02-03 23:21:17 -05:00
addison 8479e57fa5 deleted most of the send component 2021-02-03 23:19:42 -05:00
addison 2b9bae6807 cleanup 2021-02-03 23:12:23 -05:00
addison de162cd34f fixed build complaint 2021-02-03 17:09:04 -05:00
addison 6e49c481f0 Send layout & search 2021-02-03 16:24:49 -05:00
Matt Gibson e76e56d824 Match linter rules 2021-02-03 12:21:22 -06:00
Kyle Spearrin 62a43e536c update package-lock.json 2021-02-03 12:48:59 -05:00
proletarius101 6dc81a6e01
Fix electron 11 support (#708) 2021-02-03 12:47:44 -05:00
Joseph Flinn 3b4d8dc867 re-enabling the macos workflow 2021-02-01 13:56:58 -08:00
Joseph Flinn 2dbeba0c97 finishing the mac portion of splitting out the deploylments 2021-02-01 13:43:57 -08:00
Chad Scharf b93792332e
Merge pull request #667 from zhzy0077/add_arm64
Distribute ARM64 executables for Windows platform.
2021-02-01 10:49:04 -05:00
Joseph Flinn e545ecd165 starting the deploy breakout 2021-01-29 19:09:59 +00:00
Oscar Hinton 5d953fd2fc
Update electron to 11.1.1 (#642) 2021-01-27 22:50:18 +01:00
Joseph Flinn f37461d742 changing tag format 2021-01-26 23:54:09 +00:00
Joseph Flinn e9dabbc5c0 fixing tag_version 2021-01-26 23:53:21 +00:00
Joseph Flinn 3c738c9b4e adding TAG_VERSION 2021-01-26 23:35:25 +00:00
Joseph Flinn eb36b25c8b disabling jobs and changed packages to point to my repo 2021-01-26 23:15:00 +00:00
Joseph Flinn 9df2b42cdf retesting PKG_VERSION 2021-01-26 23:00:22 +00:00
Joseph Flinn d6c3716d4b testing PKG_VERSION 2021-01-26 22:49:46 +00:00
Joseph Flinn 1e577eb43c tesing the PKG_VERSION 2021-01-26 22:42:04 +00:00
Joseph Flinn b73f01d529 trying GITHUB_REF 2021-01-26 22:24:22 +00:00
Joseph Flinn 3f77e75c18 trying out the github.ref 2021-01-26 22:21:24 +00:00
Oscar Hinton c09ba7051f
Add trailing slash to ipc.config.socketRoot. (#695) 2021-01-26 16:32:25 -05:00
Kyle Spearrin 644e58463b bump version 2021-01-26 14:15:24 -05:00
Oscar Hinton e09697cd61
Merge pull request #694 from bitwarden/hotfix/only-change-socketroot-on-mac 2021-01-26 19:36:36 +01:00
Hinton 89c47277e8 Only change socketRoot on mac 2021-01-26 19:11:36 +01:00
Joseph Flinn 33a2243f26
Merge pull request #692 from bitwarden/add-release-name-check
Automatic handling of Release Tag Name input
2021-01-26 09:19:56 -08:00
Joseph Flinn 23aafaa719 Adding in the automatic handling of the release tag name input for the release workflow 2021-01-26 17:14:12 +00:00
Kyle Spearrin 44c8f83eed Merge branch 'master' of github.com:bitwarden/desktop 2021-01-26 12:03:37 -05:00
Kyle Spearrin de904a21b5 version bump 2021-01-26 12:03:23 -05:00
Oscar Hinton d1011870f0
Fix paths for native messaging on mac (#691) 2021-01-26 12:01:46 -05:00
Joseph Flinn 7126aeb0b2
Merge pull request #690 from bitwarden/choco-deploy-typo-fix
Fixing checksum path typo
2021-01-26 08:24:24 -08:00
Joseph Flinn 1d27ed540d Fixing checksum path typo 2021-01-26 16:16:20 +00:00
Zhiyuan Zheng 2e1588ebdc Update Github Action. 2021-01-26 11:16:19 +08:00
Zhiyuan Zheng 4c206e338f Add ARM64 distribution 2021-01-26 11:13:27 +08:00
Kyle Spearrin 4e05ed68cc fix ref to browser-hrtime. bump version 2021-01-25 19:36:31 -05:00
Kyle Spearrin db1f7aeba1 bump version 2021-01-25 18:37:36 -05:00
Addison Beck 1602b30169
Merge pull request #683 from bitwarden/lunrSearchBug
Lunr search bug
2021-01-25 15:49:30 -05:00
addison 1d2295b733 updated jslib 2021-01-25 15:07:44 -05:00
addison 56d8240aff changed hrtime library 2021-01-25 13:35:28 -05:00
Chad Scharf e8c1866b23
Merge pull request #682 from bitwarden/l10n_master
New Crowdin updates
2021-01-25 13:10:25 -05:00
Kyle Spearrin 6fff7274b3 New translations messages.json (Hungarian) 2021-01-25 13:08:12 -05:00
Oscar Hinton a71bdb1e29
Fix native-messaging uninstall not removing the files (#681) 2021-01-25 12:55:21 -05:00
Kyle Spearrin 38d78e9222
New Crowdin updates (#680)
* New translations messages.json (Romanian)

* New translations messages.json (Thai)

* New translations messages.json (Turkish)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Vietnamese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Indonesian)

* New translations messages.json (Persian)

* New translations messages.json (Croatian)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (Estonian)

* New translations messages.json (Latvian)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Esperanto)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Montenegrin (Latin))

* New translations messages.json (Swedish)

* New translations messages.json (Slovenian)

* New translations messages.json (French)

* New translations messages.json (Greek)

* New translations messages.json (Spanish)

* New translations messages.json (Afrikaans)

* New translations messages.json (Belarusian)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (German)

* New translations messages.json (Finnish)

* New translations messages.json (Slovak)

* New translations messages.json (Hebrew)

* New translations messages.json (Hungarian)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Portuguese)

* New translations messages.json (Russian)

* New translations messages.json (English, India)

* New translations messages.json (French)

* New translations messages.json (German)

* New translations messages.json (Italian)

* New translations messages.json (Polish)

* New translations messages.json (Russian)

* New translations messages.json (Dutch)

* New translations messages.json (Persian)
2021-01-25 12:55:10 -05:00
Kyle Spearrin 8f58cdaa20 bump version 2021-01-25 11:23:18 -05:00
Joseph Flinn 654feca1d0
Merge pull request #671 from joseph-flinn/master
Fixing Appx Signing
2021-01-25 08:19:47 -08:00
Oscar Hinton 15583748fe
Merge pull request #678 from bitwarden/hotfix/mas-entitlements
Add entitlements to mac, disable browser integration on Windows Store
2021-01-25 16:20:14 +01:00
Hinton 1613aaee4d Add entitlements to mac, disable browser integration on Windows Store 2021-01-25 14:47:29 +01:00
Joseph Flinn 67a300dc1f removing more testing code 2021-01-25 00:20:34 +00:00
Joseph Flinn 2a408b4b22 removing testing code 2021-01-25 00:08:44 +00:00
Joseph Flinn cd22439760 adding in the environment 2021-01-24 23:37:52 +00:00
Joseph Flinn 4c6282ddac switching signing back to signing all .exe files and adding another job that doesn't sign the files for the Windows Store 2021-01-24 23:23:41 +00:00
Joseph Flinn 2c4289918f testing snap upload (kinda) 2021-01-24 23:03:07 +00:00
Joseph Flinn ee1ea1a887
Merge pull request #662 from bitwarden/version-bump
bump version v1.24.1
2021-01-22 15:40:20 -08:00
Joseph Flinn 9b52781715 bump version v1.24.1 2021-01-22 23:37:32 +00:00
Joseph Flinn 03ad79aca5
Merge pull request #661 from bitwarden/fix-mac-release
adding in the needed GITHUB_TOKEN for the publish:mac
2021-01-22 13:51:59 -08:00
Joseph Flinn 3b51f14a02 adding in the needed GITHUB_TOKEN for the publish:mac 2021-01-22 21:32:45 +00:00
Joseph Flinn 18d48f27b2
Merge pull request #660 from bitwarden/fix-mac-release
switching to electron-builder publishing
2021-01-22 13:12:07 -08:00
Joseph Flinn 8af4d76984 switching to electron-builder publishing 2021-01-22 21:09:29 +00:00
Joseph Flinn 49808cc3f1
Merge pull request #659 from bitwarden/fix-mac-release
disabling the task versus the job
2021-01-22 13:02:27 -08:00
Joseph Flinn b1fa166dc2 disabling the task versus the job 2021-01-22 21:00:23 +00:00
Joseph Flinn 835b807d8e
Merge pull request #658 from bitwarden/fix-mac-release
Fixing MacOS deploy
2021-01-22 12:58:27 -08:00
Joseph Flinn de333ef82c disabling jobs that already successfully ran. Fixing the MacOS deploy 2021-01-22 20:53:05 +00:00
Joseph Flinn 01c236c86e
fixing the snap upload problem (#657) 2021-01-22 14:50:04 -05:00
Joseph Flinn 2220c00702
switches snap installation method (#655) 2021-01-22 13:40:38 -05:00
Joseph Flinn 03343bfd91
Merge pull request #643 from joseph-flinn/master
Adding Windows Code Signing to GitHub Actions
2021-01-22 09:38:23 -08:00
Joseph Flinn 3678c2c783
Merge pull request #12 from joseph-flinn/testing-gh-token
Testing gh token
2021-01-22 09:33:01 -08:00
Joseph Flinn a8ee338ae3 removing testing code 2021-01-22 17:32:21 +00:00
Joseph Flinn 2384bbf758 testing GITHUB_TOKEN 2021-01-22 17:27:37 +00:00
Chad Scharf 2cbccecc3e
Merge pull request #654 from bitwarden/l10n_master
New Crowdin updates
2021-01-22 12:15:32 -05:00
Kyle Spearrin 31f0ad108e New translations messages.json (German) 2021-01-22 12:13:50 -05:00
Kyle Spearrin 7e3b420f91 New translations messages.json (Greek) 2021-01-22 12:13:48 -05:00
Kyle Spearrin 44343fa2f0 New translations messages.json (Finnish) 2021-01-22 12:13:46 -05:00
Kyle Spearrin 08cd9266af New translations messages.json (Hungarian) 2021-01-22 12:13:44 -05:00
Kyle Spearrin 88d4d25ff9 New translations messages.json (Italian) 2021-01-22 12:13:42 -05:00
Kyle Spearrin bcf2d1f1ba New translations messages.json (Japanese) 2021-01-22 12:13:40 -05:00
Kyle Spearrin 46f1d16ea4 New translations messages.json (Korean) 2021-01-22 12:13:38 -05:00
Kyle Spearrin 54de923fdf New translations messages.json (Dutch) 2021-01-22 12:13:36 -05:00
Kyle Spearrin f3929d539a New translations messages.json (Polish) 2021-01-22 12:13:34 -05:00
Kyle Spearrin 5bdd76ef24 New translations messages.json (Catalan) 2021-01-22 12:13:32 -05:00
Kyle Spearrin a4e1570c4f New translations messages.json (Russian) 2021-01-22 12:13:30 -05:00
Kyle Spearrin 426474a7ae New translations messages.json (Serbian (Cyrillic)) 2021-01-22 12:13:28 -05:00
Kyle Spearrin 9bf0bdeade New translations messages.json (Ukrainian) 2021-01-22 12:13:26 -05:00
Kyle Spearrin 4370a9bd87 New translations messages.json (Chinese Simplified) 2021-01-22 12:13:24 -05:00
Kyle Spearrin 528215daf6 New translations messages.json (Chinese Traditional) 2021-01-22 12:13:22 -05:00
Kyle Spearrin ceaff1e2d6 New translations messages.json (Portuguese, Brazilian) 2021-01-22 12:13:20 -05:00
Kyle Spearrin d04b17917f New translations messages.json (Indonesian) 2021-01-22 12:13:18 -05:00
Kyle Spearrin 7edf8c080e New translations messages.json (Persian) 2021-01-22 12:13:16 -05:00
Kyle Spearrin 3e281d4232 New translations messages.json (Estonian) 2021-01-22 12:13:14 -05:00
Kyle Spearrin fa5938f7aa New translations messages.json (English, United Kingdom) 2021-01-22 12:13:12 -05:00
Kyle Spearrin 5b1c919513 New translations messages.json (Slovak) 2021-01-22 12:13:10 -05:00
Kyle Spearrin 87e1d785e8 New translations messages.json (Romanian) 2021-01-22 12:13:08 -05:00
Joseph Flinn b906f9e231
Merge pull request #11 from joseph-flinn/adding-manual-publishing
Adding manual publishing
2021-01-21 20:57:24 -08:00
Joseph Flinn 1fb9e41bcf more reverting 2021-01-22 04:56:58 +00:00
Joseph Flinn 6b0c4114f7 removing commented out code 2021-01-22 04:55:28 +00:00
Joseph Flinn a1559faefb reverting all of the testing code 2021-01-22 04:53:28 +00:00
Joseph Flinn 56bf4d66ba removing debugging code 2021-01-22 04:49:35 +00:00
Joseph Flinn 68babd6243 fixing typo 2021-01-22 04:30:06 +00:00
Joseph Flinn dbb7ca4336 more debugging 2021-01-22 04:12:47 +00:00
Joseph Flinn 13c9148e24 debugging code 2021-01-22 03:52:04 +00:00
Joseph Flinn 6909a09a34 fixing path 2021-01-22 03:30:34 +00:00
Joseph Flinn 9c4a6bfbb6 fixing the package version to be a string 2021-01-22 03:13:54 +00:00
Joseph Flinn ef7b1d9a19 moving the choco update script into the release pipeline and the build pipeline 2021-01-22 02:46:11 +00:00
Joseph Flinn de7ba57a10 fixing the chocolatey issue 2021-01-22 00:13:04 +00:00
Joseph Flinn 58a830fc83 adding in the environment for windows signing 2021-01-21 23:47:36 +00:00
Joseph Flinn f908b1a7b2 trying the linux publish and different windows setup 2021-01-21 23:23:03 +00:00
Joseph Flinn 8b56129dcd updating the content types 2021-01-21 23:06:32 +00:00
Joseph Flinn c4b5f8a88b switching over to the provided action to upload release assets 2021-01-21 23:02:22 +00:00
Joseph Flinn 20d2801ef7 switching GITHUB_TOKEN back to GH_TOKEN because I can't create the GITHUB_TOKEN secret in my repo. GITHUB_* is probably reserved 2021-01-20 21:48:22 +00:00
Joseph Flinn e44fe9e801 renaming GH_TOKEN to the already used GITHUB_TOKEN 2021-01-20 16:03:23 +00:00
Joseph Flinn 2efcf8386f fixing the package.json testing code 2021-01-20 15:58:28 +00:00
Joseph Flinn 6a2eb5f001 removing the testing code from the pipelines 2021-01-20 15:53:35 +00:00
Chad Scharf d7ae324acc
Merge pull request #650 from bitwarden/l10n_master
New Crowdin updates
2021-01-19 21:51:44 -05:00
Kyle Spearrin bed2b0cf5c New translations messages.json (English, India) 2021-01-19 21:49:44 -05:00
Kyle Spearrin 91063ee11f New translations messages.json (Russian) 2021-01-19 21:49:42 -05:00
Kyle Spearrin 04a809a3c0 New translations messages.json (Portuguese) 2021-01-19 21:49:40 -05:00
Kyle Spearrin 0694a1d270 New translations messages.json (Polish) 2021-01-19 21:49:38 -05:00
Kyle Spearrin d19a900df5 New translations messages.json (Dutch) 2021-01-19 21:49:36 -05:00
Kyle Spearrin 333d9b8c59 New translations messages.json (Korean) 2021-01-19 21:49:34 -05:00
Kyle Spearrin 4fb6c1cc8c New translations messages.json (Japanese) 2021-01-19 21:49:32 -05:00
Kyle Spearrin 957498db5b New translations messages.json (Italian) 2021-01-19 21:49:30 -05:00
Kyle Spearrin dc07e366dc New translations messages.json (Hungarian) 2021-01-19 21:49:28 -05:00
Kyle Spearrin becefc0f85 New translations messages.json (Hebrew) 2021-01-19 21:49:26 -05:00
Kyle Spearrin 414773a25d New translations messages.json (Slovak) 2021-01-19 21:49:24 -05:00
Kyle Spearrin beb600d29c New translations messages.json (Finnish) 2021-01-19 21:49:23 -05:00
Kyle Spearrin fa2a16fded New translations messages.json (German) 2021-01-19 21:49:21 -05:00
Kyle Spearrin ebe00ed87f New translations messages.json (Danish) 2021-01-19 21:49:19 -05:00
Kyle Spearrin b7df0d7c8e New translations messages.json (Czech) 2021-01-19 21:49:17 -05:00
Kyle Spearrin ee75571866 New translations messages.json (Catalan) 2021-01-19 21:49:15 -05:00
Kyle Spearrin 2363a5ca3e New translations messages.json (Bulgarian) 2021-01-19 21:49:13 -05:00
Kyle Spearrin 8576e9e83e New translations messages.json (Belarusian) 2021-01-19 21:49:11 -05:00
Kyle Spearrin 8796297bba New translations messages.json (Afrikaans) 2021-01-19 21:49:09 -05:00
Kyle Spearrin 1453cbe6d4 New translations messages.json (Spanish) 2021-01-19 21:49:08 -05:00
Kyle Spearrin 8c903942ae New translations messages.json (Greek) 2021-01-19 21:49:06 -05:00
Kyle Spearrin d11ed21499 New translations messages.json (French) 2021-01-19 21:49:04 -05:00
Kyle Spearrin 30a52bbed9 New translations messages.json (Slovenian) 2021-01-19 21:49:02 -05:00
Kyle Spearrin 4d369c138e New translations messages.json (Swedish) 2021-01-19 21:49:00 -05:00
Kyle Spearrin 39f4f45704 New translations messages.json (Montenegrin (Latin)) 2021-01-19 21:48:58 -05:00
Kyle Spearrin 5304069f98 New translations messages.json (Norwegian Bokmal) 2021-01-19 21:48:56 -05:00
Kyle Spearrin 92a287896f New translations messages.json (Sinhala) 2021-01-19 21:48:54 -05:00
Kyle Spearrin 62f08f579e New translations messages.json (Malayalam) 2021-01-19 21:48:53 -05:00
Kyle Spearrin bda04035eb New translations messages.json (Esperanto) 2021-01-19 21:48:51 -05:00
Kyle Spearrin 45217f9846 New translations messages.json (English, United Kingdom) 2021-01-19 21:48:49 -05:00
Kyle Spearrin 77542d7d3d New translations messages.json (Latvian) 2021-01-19 21:48:47 -05:00
Kyle Spearrin bd16c406c5 New translations messages.json (Estonian) 2021-01-19 21:48:45 -05:00
Kyle Spearrin e9aa37a8b8 New translations messages.json (Serbian (Cyrillic)) 2021-01-19 21:48:43 -05:00
Kyle Spearrin 88bc4fdffd New translations messages.json (Croatian) 2021-01-19 21:48:41 -05:00
Kyle Spearrin aea5b4f20c New translations messages.json (Persian) 2021-01-19 21:48:39 -05:00
Kyle Spearrin 0715fee2a8 New translations messages.json (Indonesian) 2021-01-19 21:48:38 -05:00
Kyle Spearrin 7042935d5a New translations messages.json (Portuguese, Brazilian) 2021-01-19 21:48:36 -05:00
Kyle Spearrin 3e3d43d60a New translations messages.json (Vietnamese) 2021-01-19 21:48:33 -05:00
Kyle Spearrin 4f52847f6d New translations messages.json (Chinese Traditional) 2021-01-19 21:48:31 -05:00
Kyle Spearrin 66bcb7a623 New translations messages.json (Chinese Simplified) 2021-01-19 21:48:29 -05:00
Kyle Spearrin e4f266de87 New translations messages.json (Ukrainian) 2021-01-19 21:48:27 -05:00
Kyle Spearrin 0764c92cae New translations messages.json (Turkish) 2021-01-19 21:48:25 -05:00
Kyle Spearrin 42a4181711 New translations messages.json (Thai) 2021-01-19 21:48:23 -05:00
Kyle Spearrin fc903b7490 New translations messages.json (Romanian) 2021-01-19 21:48:21 -05:00
Chad Scharf 497cef19c4
Merge pull request #648 from bitwarden/version-bump-1.24.0
version bump 1.24.0
2021-01-19 16:18:38 -05:00
Joseph Flinn 46d70441f9 changing package repo just in case 2021-01-19 20:35:24 +00:00
Chad Scharf 504d3c311a version bump 1.24.0 2021-01-19 15:07:12 -05:00
Joseph Flinn c600901722 changing windows build environment to prod to use the HSM backed EV CS key 2021-01-19 19:19:10 +00:00
Joseph Flinn 9fef65dfb8 changing the other release edit tasks to use the inputs... 2021-01-19 18:38:28 +00:00
Joseph Flinn ebdf160378 removing the testing task 2021-01-19 18:22:27 +00:00
Joseph Flinn e3da2013f2 fixing workflow inputs typo 2021-01-19 18:20:09 +00:00
Joseph Flinn 1a3cfb5201 creating quick test of the workflow dispatch input 2021-01-19 18:17:05 +00:00
Joseph Flinn 686b6931dc changing release edit task shell to powershell 2021-01-19 18:10:10 +00:00
Joseph Flinn c414121413 removing the failed attempt of custom name for Release Action 2021-01-19 17:56:49 +00:00
Joseph Flinn 1e545973fc Trying to add release tag to action name 2021-01-19 17:55:26 +00:00
Joseph Flinn 0d42b7e8b4 commenting out all release specific tasks in the build pipeline 2021-01-19 17:40:46 +00:00
Joseph Flinn 9e59dd6d63 adding the release tag name to the manual trigger for the release action 2021-01-19 17:31:23 +00:00
Joseph Flinn 94b2e53c3f adding in release workflow that rebuilds the things 2021-01-19 15:59:21 +00:00
Joseph Flinn 713d7d05a0 seeing if creating a draft PR covers the 'create' trigger in GH Actions 2021-01-19 15:33:17 +00:00
Joseph Flinn fd6032f121 changing trigger to draft instead of publish 2021-01-16 00:11:36 +00:00
Joseph Flinn 36b9295f1b fixing the git repository to publish to 2021-01-15 23:38:39 +00:00
Joseph Flinn af254a1f52 adding in the GH_TOKEN to the publishing task 2021-01-15 23:07:50 +00:00
Joseph Flinn 7e0616f39e fixing syntax error 2021-01-15 22:33:03 +00:00
Joseph Flinn 292d87588f Merge branch 'testing-update' 2021-01-15 22:00:43 +00:00
Joseph Flinn effe1cd504 fixing release build 2021-01-15 21:58:28 +00:00
Joseph Flinn 6758847e5e
Merge pull request #10 from joseph-flinn/testing-update
Testing update
2021-01-15 12:23:21 -08:00
Joseph Flinn f76a247fa4 commenting out all of the release things that I don't have secrets for 2021-01-15 20:02:21 +00:00
Joseph Flinn 0a68a6a36e merging the build and signing into to the same workflow (might split it back out later) 2021-01-15 19:54:07 +00:00
Joseph Flinn 4897abce7d renaming upload tasks 2021-01-15 18:24:33 +00:00
Joseph Flinn 7410f99d83
Merge pull request #9 from joseph-flinn/testing-hsm
Testing hsm
2021-01-15 10:06:18 -08:00
Joseph Flinn 8ddc538159 adding signing logging 2021-01-15 17:42:44 +00:00
Joseph Flinn 429b0abf42 excluding the unpacked appx executables 2021-01-15 17:19:34 +00:00
Joseph Flinn b4a36dbfd2 only signing .exe 2021-01-15 16:18:14 +00:00
Joseph Flinn 404e4130da seeing what file it fails on, specifically 2021-01-15 16:00:55 +00:00
Oscar Hinton f9fbb03fe3
Merge pull request #645 from bitwarden/hotfix/browser-biometrics-different-accounts
Handle browser biometrics using a different account
2021-01-15 16:45:07 +01:00
Joseph Flinn 81a5c77b5e listing all of the files that electron-builder is trying to sign 2021-01-15 15:37:49 +00:00
Hinton 8084b28013 Ensure we only setup a communication when userId matches 2021-01-15 10:59:09 +01:00
Joseph Flinn 67367bb71b chaning back to prod after updating client secret 2021-01-15 01:24:06 +00:00
Joseph Flinn 081dfaaa04 chaning back to the other cert to test the signing 2021-01-15 01:07:10 +00:00
Joseph Flinn 1d7aa701bf casting to integer 2021-01-15 00:56:02 +00:00
Joseph Flinn 6cb2a82ac1
Merge pull request #8 from joseph-flinn/testing-hsm
testing prod signing
2021-01-14 16:04:11 -08:00
Joseph Flinn e1c83d324f testing prod signing 2021-01-14 23:48:50 +00:00
Joseph Flinn 50b5d2a422 removing other testing comments 2021-01-14 21:50:25 +00:00
Joseph Flinn 7534618cf1 undoing publisherDisplayName test 2021-01-14 21:48:12 +00:00
Matt Gibson 326b6b3aaf
Merge pull request #639 from bitwarden/update-jslib
Update jslib
2021-01-08 12:13:53 -06:00
Matt Gibson fa6a8bee2e Update jslib 2021-01-08 08:58:43 -06:00
Joseph Flinn 509ebe6e91
Merge pull request #7 from joseph-flinn/add-signing-gh
Add signing gh (ignoring the macos build because I don't have those things)
2021-01-06 13:05:18 -08:00
Joseph Flinn 899acaa92a uncommenting some if conditions 2021-01-06 20:45:43 +00:00
Joseph Flinn 54ed6cd2b0 replacing manual dispatch trigger with push/release triggers 2021-01-06 20:39:43 +00:00
Joseph Flinn 92d4afb28d removing appveyor to stop the fork from sending the repo to be built. Testing a release 2021-01-06 20:38:30 +00:00
Joseph Flinn 190fb423da fixing unknown syntax error 2021-01-06 19:46:37 +00:00
Joseph Flinn b1e4bd4bdb assigning correct type 2021-01-06 19:43:42 +00:00
Joseph Flinn 5eb10afe85 changing over to a value based boolean flag 2021-01-06 19:33:43 +00:00
Joseph Flinn 33029c1684 removing the signing portion of the original workflow 2021-01-06 19:19:18 +00:00
Joseph Flinn 88bf9be15f adding in the flag to the build_and_sign workflow 2021-01-06 18:59:38 +00:00
Joseph Flinn c508c7cd05 adding a signing flag for electron builder 2021-01-06 18:58:44 +00:00
Joseph Flinn 048f3fed6f adding in the forgotten environment 2021-01-06 18:17:50 +00:00
Joseph Flinn 7a2aa34619 adding the other artifacts to the windows portion of the build 2021-01-06 18:07:22 +00:00
Joseph Flinn 65a13d997a experimenting with no CSC_* env vars 2021-01-06 18:04:18 +00:00
Joseph Flinn fc28a65e18
Merge pull request #6 from joseph-flinn/add-signing-gh
Add signing gh
2021-01-06 09:28:14 -08:00
Joseph Flinn e1d2aa4b4a changing the trigger for the Build 2021-01-06 17:25:33 +00:00
Joseph Flinn ba7007c307 getting the correct artifacts uploaded to github 2021-01-06 16:58:28 +00:00
Vincent Salucci 0fee18bedb
Initial commit of ownership banner (#636) 2021-01-05 17:33:40 -06:00
Joseph Flinn 7df3ded62a switching to a cert that should match 2021-01-05 23:10:12 +00:00
Joseph Flinn 902040ec64 making custom signing command easier to read 2021-01-05 22:18:26 +00:00
Joseph Flinn 078862e41b switching over to an npm script 2021-01-05 21:53:46 +00:00
Joseph Flinn a1a5405722 one last thing before switching over to npm 2021-01-05 21:38:20 +00:00
Joseph Flinn e31c8c0e79 trying something else 2021-01-05 21:28:27 +00:00
Joseph Flinn fd89704c1d testing more escapes 2021-01-05 21:17:33 +00:00
Joseph Flinn fc0e8052b0 trying to escape the quotes with back ticks 2021-01-05 21:03:07 +00:00
Joseph Flinn 38f357c165 trying two single quotes and changing it back to pwsh 2021-01-05 20:50:29 +00:00
Joseph Flinn 0cd63fa400 removing the escape characters 2021-01-05 19:28:00 +00:00
Joseph Flinn bcc972e60b trying to switch to powershell for the electron-builder task 2021-01-05 19:18:56 +00:00
Joseph Flinn cf738a2667 adding the npx prefix to the electron-builder program 2021-01-05 19:04:25 +00:00
Chad Scharf 81f3cec707
Merge pull request #637 from bitwarden/gitignore-ignore-dist-safari
Add dist-safari/ to .gitignore
2021-01-05 14:02:16 -05:00
Chad Scharf fd18bd8db6
Add dist-safari/ to .gitignore 2021-01-05 13:57:31 -05:00
Joseph Flinn 59efc3e091 testing signing with AZ key vault 2021-01-05 18:53:40 +00:00
Joseph Flinn c6ed8fe1d3 fixing typo 2021-01-05 18:17:58 +00:00
Joseph Flinn 65c5dc1f3b actually installing AST 2021-01-05 18:13:48 +00:00
Joseph Flinn 47b335be4b
Merge pull request #5 from joseph-flinn/add-signing-gh
Add signing gh
2021-01-05 10:09:24 -08:00
Joseph Flinn 7712f3e8c3 fixing some whitespace errors 2021-01-05 18:07:53 +00:00
Joseph Flinn 43348c542c trying installing AST 2021-01-05 18:03:23 +00:00
Joseph Flinn 74ba229b21 switching to version 3.1.x instead of 3.x 2021-01-05 17:40:02 +00:00
Joseph Flinn 2a1f75d2bf Merge branch 'add-signing-gh' of github.com:joseph-flinn/desktop into add-signing-gh 2021-01-05 17:23:43 +00:00
Joseph Flinn 8fd56c87c2 moving dotnet set up 2021-01-05 17:23:12 +00:00
Joseph Flinn 7ba93f845d
Merge pull request #4 from joseph-flinn/add-signing-gh
Add signing gh
2021-01-05 09:17:42 -08:00
Joseph Flinn 55809f5226
Merge branch 'master' into add-signing-gh 2021-01-05 09:17:07 -08:00
Joseph Flinn 6de9d3912f trying different syntax 2021-01-05 16:28:24 +00:00
Joseph Flinn f47660fcc3 fixing dotnet action version 2021-01-05 16:26:12 +00:00
Joseph Flinn 5f63020eb3 changing the trigger to manual 2021-01-05 16:23:56 +00:00
Joseph Flinn 9a39f67efc changing the gh action to "on push" to initialize it 2021-01-05 16:21:43 +00:00
Joseph Flinn 020629fd3c removing the macos job from the test 2021-01-05 16:16:03 +00:00
Joseph Flinn 7f217a261f trying to switch over to GH Actions because AZ Pipelines seems to have a problem with the secrets in environments... 2021-01-05 16:13:08 +00:00
Matt Gibson d6e981e2b6
Merge pull request #635 from bitwarden/update-jslib
Update jslib
2021-01-05 09:07:02 -06:00
Matt Gibson 55246686fd Update jslib 2021-01-05 08:56:41 -06:00
Joseph Flinn a1d950e33e idk what's wrong... 2021-01-05 14:43:01 +00:00
Joseph Flinn de4966b3e4 trying things that shouldn't work because the things that should work aren't 2021-01-05 14:22:01 +00:00
Joseph Flinn 64e8099fb3 testing new var in variable group 2021-01-05 14:03:59 +00:00
Joseph Flinn 0efb677009 debugging env vars and secrets 2021-01-05 13:45:32 +00:00
Joseph Flinn b0878fd660 testing secrets in pipeline and in script 2021-01-05 13:29:01 +00:00
Joseph Flinn 6a1783b2df removing the debugging code 2021-01-04 23:15:41 +00:00
Joseph Flinn fa49fb0585 moving the git version data gathering of AST 2021-01-04 23:04:55 +00:00
Joseph Flinn 5f53f0a988 fixing typo in pwsh 2021-01-04 22:55:11 +00:00
Joseph Flinn f1e52b022b debugging commit id 2021-01-04 22:42:27 +00:00
Joseph Flinn 033cee57b8 fixing pwsh task 2021-01-04 22:32:06 +00:00
Joseph Flinn 539e906936 switching to powershell 2021-01-04 22:24:12 +00:00
Joseph Flinn 4fa8342a00 trying to compile the version to be built 2021-01-04 21:44:35 +00:00
Joseph Flinn 89e55da798 testing publishing and moving to agent tools directory 2021-01-04 20:52:13 +00:00
Joseph Flinn 68d302bfe3 trying to downgrad the .NET sdk 2021-01-04 20:43:36 +00:00
Joseph Flinn 3550c2cb1e trying to specify version in pack 2021-01-04 20:27:07 +00:00
Joseph Flinn d998ec9146 Trying to install AST with `publish` 2021-01-04 20:11:21 +00:00
Chad Scharf 6088f6246f
Merge pull request #634 from Hinton/hotifx/desktop-regedit
Add regedit to package.json
2021-01-04 15:05:57 -05:00
Hinton 8d9698101d Adding regedit to src/package.json 2021-01-04 20:31:33 +01:00
Joseph Flinn 345188ed99
Merge pull request #633 from bitwarden/readme-typo-fix
fixing typo in readme
2021-01-04 10:37:03 -08:00
Joseph Flinn 6f932f37ad fixing typo in readme 2021-01-04 18:25:43 +00:00
Joseph Flinn 711cea8c4b Install and use latest AST (this will probably break when it is updated because Google won't tell me how to make a clean build of a .NET project) 2020-12-31 22:09:00 +00:00
Joseph Flinn b6d706a62b trying it... 2020-12-31 21:50:33 +00:00
Joseph Flinn 3172c7b87d switching from 3.0.0 to the 0.0.0-hash version (where does this come from? idk) 2020-12-31 21:24:06 +00:00
Joseph Flinn 455c287e20 trying to specifiy verison 3 2020-12-31 20:37:37 +00:00
Joseph Flinn 9873ad48ed trying to get a clean run 2020-12-31 20:00:29 +00:00
Joseph Flinn 2817f78b98 changing debug command to get all params to make sure it is the new version 2020-12-31 19:53:15 +00:00
Joseph Flinn d52713ea4d removing leftovers. trying to get a clean run 2020-12-31 19:52:50 +00:00
Joseph Flinn 23e2e08425 testing manaul install of AST 2020-12-31 19:48:23 +00:00
Joseph Flinn 2d2c1d632e experimenting after getting it the project to run on Linux container 2020-12-31 19:10:58 +00:00
Joseph Flinn 4a3f1ee5e6 specifying the project? 2020-12-31 18:52:52 +00:00
Joseph Flinn 2ae72a66bc trying to cd into AST before running AST 2020-12-31 18:48:47 +00:00
Joseph Flinn a08783eb9b going insane....and trying dotnet run 2020-12-31 18:44:18 +00:00
Joseph Flinn 0978956c30 moving into the project directory 2020-12-31 18:17:27 +00:00
Joseph Flinn 1f0e5d711e testing manual install 2020-12-31 18:12:15 +00:00
Joseph Flinn 4b9e6ff894 removing reference code 2020-12-31 17:39:38 +00:00
Joseph Flinn f41014f0f2 trying pipeline env to pass vars 2020-12-31 17:33:33 +00:00
Joseph Flinn 9581af66a1 testing secret in process.env 2020-12-31 17:07:14 +00:00
Joseph Flinn d4f6c07fc0 testing the env vars access 2020-12-31 16:28:44 +00:00
Joseph Flinn 725ce08e86 updating the custom sign script 2020-12-31 15:49:28 +00:00
Vincent Salucci 40c8fab6c8
update jslib to 48144a7 (#629) 2020-12-30 20:34:53 -06:00
Joseph Flinn 94a363c4ca updating the sign file with a multiline command 2020-12-31 00:19:28 +00:00
Joseph Flinn 1465d3e4cc adding AST to the build pipeline 2020-12-31 00:01:55 +00:00
Joseph Flinn a21127e187 actually removing the breakpoint 2020-12-30 23:30:04 +00:00
Joseph Flinn 672be07f40 removing breakpoint 2020-12-30 23:27:30 +00:00
Joseph Flinn 84ea397391 following other az pipeline as pattern 2020-12-30 23:24:09 +00:00
Joseph Flinn b01d9f9993 using the var that I actually set.... 2020-12-30 23:22:12 +00:00
Joseph Flinn 668914286a trying another var extraction 2020-12-30 23:17:55 +00:00
Joseph Flinn f486077cf6 fixing syntax 2020-12-30 23:10:44 +00:00
Joseph Flinn 6a0154cad0 changing var syntax 2020-12-30 23:09:07 +00:00
Joseph Flinn 627c3eaec5 fixing typo 2020-12-30 23:05:45 +00:00
Joseph Flinn b6a298579c fixing task name 2020-12-30 23:02:38 +00:00
Joseph Flinn af41a59a60 fixing another syntax error 2020-12-30 23:00:07 +00:00
Joseph Flinn 58ed7f5f6a switching over to powershell 2020-12-30 22:58:58 +00:00
Joseph Flinn 3f39d1ccb3 trying another thing 2020-12-30 22:54:55 +00:00
Joseph Flinn bc21106448 trying something else 2020-12-30 22:50:15 +00:00
Joseph Flinn fae96d7ad8 fixing the get packageVersion 2020-12-30 22:46:17 +00:00
Joseph Flinn 93d6b610b4 fixing var 2020-12-30 22:44:16 +00:00
Joseph Flinn da9a5414bb fixing syntax 2020-12-30 22:42:55 +00:00
Joseph Flinn ce31913e91 fixing packageVersion 2020-12-30 22:40:39 +00:00
Joseph Flinn db5c04e7de debugging configuration object to see what I've got to work with 2020-12-30 22:06:48 +00:00
Joseph Flinn 11b31fb97d adding the exe publishing 2020-12-30 21:54:03 +00:00
Joseph Flinn 0eb3fdd533 trying the kv straight up 2020-12-30 21:51:05 +00:00
Joseph Flinn 6ec84bdb6c moving the signing config to the correct config area 2020-12-30 21:31:38 +00:00
Joseph Flinn 623b325074 testing electron-builder integration with az kv 2020-12-30 21:19:12 +00:00
Joseph Flinn b720106666 fixing publishing path 2020-12-29 22:48:35 +00:00
Chad Scharf 4b365003c6
Merge pull request #628 from Hinton/hotfix/windows-electron-module-error
Fix electron error on native messaging [Windows]
2020-12-29 15:06:47 -05:00
Joseph Flinn fffba26e21 slimming down to single signing task 2020-12-29 20:04:15 +00:00
Hinton ef785eab81 Spelling 2020-12-29 21:01:47 +01:00
Hinton 2c93385fce Fix electron error on native messaging 2020-12-29 20:53:29 +01:00
Joseph Flinn 7bf2f36565 changing location of manifest search. Testing 2.0.17 with correct file name 2020-12-29 18:41:41 +00:00
Joseph Flinn 417f312153 fixing install 2020-12-29 18:28:39 +00:00
Joseph Flinn 2ca363c139 testing manual install of latest AST 2020-12-29 18:25:46 +00:00
Joseph Flinn 89c4ff913d removing tenant to see if I get a different error 2020-12-29 18:09:33 +00:00
Joseph Flinn 02bab2d493 debugging file 2020-12-29 17:35:05 +00:00
Joseph Flinn 2e1dace25f changing 32-bit signing to single line 2020-12-29 17:15:30 +00:00
Joseph Flinn 820491bbf8 trying long form of params 2020-12-29 17:09:45 +00:00
Joseph Flinn dbce594727 trying the stackoverflow tutorial 2020-12-29 16:21:26 +00:00
Joseph Flinn 165d497b1f trying exactly what they have 2020-12-29 16:02:37 +00:00
Joseph Flinn 7d297e85bb separating the signing tasks 2020-12-28 22:45:10 +00:00
Joseph Flinn 707cd9f148 trying to sign both at the same time 2020-12-28 22:39:35 +00:00
Joseph Flinn 1be12e357e needs dashes 2020-12-28 22:25:20 +00:00
Joseph Flinn 4585c98efa fixing debug command 2020-12-28 22:22:21 +00:00
Joseph Flinn 7209b544a7 adding the 'sign' to the param output 2020-12-28 22:18:27 +00:00
Joseph Flinn ec252719d3 fixing a typo 2020-12-28 22:12:42 +00:00
Joseph Flinn 9b2b860cdf trying to see what the supported params are 2020-12-28 21:40:17 +00:00
Joseph Flinn b11455b611 changing flags 2020-12-28 21:23:44 +00:00
Joseph Flinn 4d5fab869e splitting the two files 2020-12-28 20:59:35 +00:00
Joseph Flinn a17bbf2143 removing the unused ifl 2020-12-28 20:46:53 +00:00
Joseph Flinn ec3ed240d7 trying ^ line continuations 2020-12-28 20:35:56 +00:00
Joseph Flinn e020e985a4 trying \ line continuations 2020-12-28 20:19:02 +00:00
Joseph Flinn 5c5ba2e234 adding missing tenant id 2020-12-28 19:55:42 +00:00
Joseph Flinn 1d68f9c6d4 testing kv connection 2020-12-28 19:40:14 +00:00
Joseph Flinn 5aee4d8294 updating to AzureCLI version params 2020-12-28 19:25:32 +00:00
Kyle Spearrin d5249f3acd
warning dialog is now handled in base component (#625) 2020-12-22 16:38:26 -05:00
Chad Scharf a96c70437a
Merge pull request #624 from Hinton/hotfix/build-native
Add forcefocus as dependency
2020-12-22 13:40:56 -05:00
Hinton d1d83af661 Add forcefocus as dependency to dist, ensure we build them from source since the prepbuild dosn't support the verison 2020-12-22 19:35:04 +01:00
Chad Scharf a0241b3338
Merge pull request #623 from Hinton/hotfix/linting
Fix linting errors
2020-12-22 11:17:07 -05:00
Hinton d0a5326bd7 Fix linting errors 2020-12-22 17:16:12 +01:00
Chad Scharf 76c040aff9
Merge pull request #615 from Hinton/hotfix/multiple-extensions
Native Messaging - Support multiple extensions concurrently
2020-12-22 10:54:58 -05:00
Hinton dfe4e0876f Fix spelling 2020-12-21 23:15:36 +01:00
Hinton 87d399a3f9 Merge branch 'master' of https://github.com/bitwarden/desktop into hotfix/multiple-extensions 2020-12-21 22:36:00 +01:00
Hinton 1ce84b7f8f Update jslib 2020-12-21 22:35:32 +01:00
Joseph Flinn 9224f7365d testing azure cli task connection 2020-12-21 18:51:19 +00:00
Chad Scharf 92db523a0f
Merge pull request #619 from bitwarden/folder-caret-redoux
Updated to show icon vs. caret for non-nested item
2020-12-21 10:42:52 -05:00
Hinton 535ca260d6 Support forcefocus for biometrics 2020-12-21 11:31:33 +01:00
Chad Scharf aced23574b Updated to show icon vs. caret for non-nested item 2020-12-18 16:56:59 -05:00
Matt Gibson e26f443089
Merge pull request #618 from bitwarden/update-tray-menu-on-linux
Force update of tray menu if on linux
2020-12-18 10:53:54 -06:00
Matt Gibson bd94ddb896 Update jslib reference 2020-12-18 10:12:17 -06:00
Hinton e639fa6674 Make fingerprint validation optional, update readme with debug info for native messaging 2020-12-18 15:47:48 +01:00
Matt Gibson 8f704d20e5 Force update of tray menu if on linux 2020-12-17 14:53:38 -06:00
Joseph Flinn 8319ddbb49 removing esacpe from space 2020-12-17 16:26:12 +00:00
Joseph Flinn d5c99a1f7d removing the test 2020-12-17 16:15:21 +00:00
Joseph Flinn 893eef9d0f trying to fix the space in script 2020-12-17 16:14:26 +00:00
Joseph Flinn 42be4d44a1 debugging act 2020-12-17 16:05:35 +00:00
Joseph Flinn 2fce9e6696 trying to use the key with electron builder 2020-12-17 15:44:09 +00:00
Joseph Flinn d05562f359 adding in the var group 2020-12-16 23:16:30 +00:00
Joseph Flinn f0897eb371 lowercasing the ACT... 2020-12-16 23:10:35 +00:00
Joseph Flinn f349317cbd debugging AST 2020-12-16 23:06:41 +00:00
Joseph Flinn 5ae39d8fc3 moving away from cmd task to the script shortcut 2020-12-16 23:00:51 +00:00
Joseph Flinn b551b839d0 debugging AST 2020-12-16 22:46:31 +00:00
Joseph Flinn 6a228ee571 undoing that formatting 2020-12-16 22:39:04 +00:00
Joseph Flinn 42314451ac reformatting the azure signing 2020-12-16 22:32:24 +00:00
Joseph Flinn f46b0319b8 removing extra backslash 2020-12-16 22:19:11 +00:00
Joseph Flinn dd4347fb2a splitting up the files 2020-12-16 22:13:04 +00:00
Joseph Flinn c8fa0aae8b fixing publish typo 2020-12-16 22:05:15 +00:00
Joseph Flinn 18e55133ba adding in the signing test 2020-12-16 22:03:54 +00:00
Joseph Flinn 53f15dc788 adding another awk script to clean up version output 2020-12-16 21:54:56 +00:00
Joseph Flinn e0cc09f656 switching from grep to awk 2020-12-16 21:48:02 +00:00
Chad Scharf 28c0fdd3f5
Merge pull request #614 from Hinton/hotfix/autostart-snap
Fix autostart in snap
2020-12-16 16:08:05 -05:00
Hinton 02a3fbde99 Disable browser integration on Mac for non MAS version (for now) 2020-12-16 21:49:05 +01:00
Joseph Flinn 047db49e25 debugging grep 2020-12-16 20:24:48 +00:00
Joseph Flinn f294e43262 changing 'show artifacts' task to bash shell 2020-12-16 20:18:54 +00:00
Joseph Flinn 94b924b21c changing the echo var 2020-12-16 20:10:20 +00:00
Joseph Flinn 3099238762 fixing the AzureSignTool install task 2020-12-16 20:04:08 +00:00
Joseph Flinn 9ead2f2bb8 switching back to manually setting the git_release_version with bash 2020-12-16 19:50:31 +00:00
Joseph Flinn b52f107810 trying different variable block format 2020-12-16 19:33:14 +00:00
Joseph Flinn 16bad9ed98 testing expression for variable value 2020-12-16 19:30:46 +00:00
Joseph Flinn 378454ce03 testing the GIT_RELEASE_VERSION var 2020-12-16 19:14:06 +00:00
Chad Scharf 1be1b8bc37
Merge pull request #616 from bitwarden/cwille97-localeText
Cwille97 locale text
2020-12-16 12:03:10 -05:00
Chad Scharf d83650e266 Merge into cwille97-localeText 2020-12-16 11:41:10 -05:00
Hinton d20aaeb0e5 Display error message when biometric is disabled in the desktop 2020-12-16 17:25:30 +01:00
Hinton c13d6f810e Add support for communicating with multiple extensions at the same time 2020-12-16 15:42:46 +01:00
Hinton 5d1057b3fa Update jslib 2020-12-16 09:41:00 +01:00
Hinton 22ddd8db60 Ensure settings are saved 2020-12-16 09:38:28 +01:00
Kyle Spearrin aa32b77286 New Crowdin updates (#584)
* New translations messages.json (Romanian)

* New translations messages.json (Thai)

* New translations messages.json (Turkish)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Vietnamese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Indonesian)

* New translations messages.json (Persian)

* New translations messages.json (Croatian)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (Estonian)

* New translations messages.json (Latvian)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Esperanto)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Montenegrin (Latin))

* New translations messages.json (Swedish)

* New translations messages.json (Slovak)

* New translations messages.json (French)

* New translations messages.json (Greek)

* New translations messages.json (Spanish)

* New translations messages.json (Afrikaans)

* New translations messages.json (Belarusian)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (German)

* New translations messages.json (Finnish)

* New translations messages.json (Russian)

* New translations messages.json (Hebrew)

* New translations messages.json (Hungarian)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Portuguese)

* New translations messages.json (English, India)
2020-12-15 19:24:48 -05:00
Chad Scharf ac870ef31a
Merge pull request #303 from DarkArc/carat-fix
Only show carats for items with children
2020-12-15 16:33:02 -05:00
Chad Scharf aecc6b8466
Merge pull request #578 from cwille97/issue496
issue496 Improve touchID message
2020-12-15 15:52:22 -05:00
Hinton 41e72b22b8 Prevent disabling enableTray on linux when using other tray settings 2020-12-15 20:47:21 +01:00
Joseph Flinn 462b49daa3 changing the ls command to the artifacts directory 2020-12-15 15:39:08 +00:00
Joseph Flinn 030eab7290 removing a line in a pwsh multiline script 2020-12-15 00:59:16 +00:00
Joseph Flinn 41f263d378 commenting out the chocolatey package 2020-12-14 23:58:49 +00:00
Joseph Flinn 2a6add76db updating GH_TOKEN secret name because GITHUB_TOKEN wasn't valid 2020-12-14 22:53:33 +00:00
Joseph Flinn 026392d4a1 working on blocking out signing pipeline 2020-12-14 22:38:56 +00:00
Joseph Flinn d68c62ab91 removing deploy jobs (should be moved into its own workflow) 2020-12-14 22:23:14 +00:00
Joseph Flinn c641d2641d working on signing pipeline 2020-12-14 22:20:39 +00:00
Joseph Flinn 857c9515da version bump 2020-12-14 21:55:14 +00:00
Joseph Flinn 761a93a4bd moving default pipeline script 2020-12-14 21:51:53 +00:00
Hinton c5edb3e04e Fix autostart in snap 2020-12-14 22:45:36 +01:00
Joseph Flinn cdf16541e1 Set up CI with Azure Pipelines
[skip ci]
2020-12-14 13:41:00 -08:00
Joseph Flinn 33d4b22e52
Merge pull request #1 from joseph-flinn/azure-pipelines
Set up CI with Azure Pipelines
2020-12-14 13:38:04 -08:00
Joseph Flinn f78df842b6 moved the AZ pipelines into their own directory for cleanliness 2020-12-14 21:27:37 +00:00
Joseph Flinn 65e72b41a3 bumping version and updating azure pipeline 2020-12-14 21:24:18 +00:00
Joseph Flinn 1251ddaf5f changing pathToPublish to absolute path 2020-12-14 20:15:37 +00:00
Joseph Flinn ba2e3f5a11 fixing AZ pipeline task typo 2020-12-14 19:56:29 +00:00
Joseph Flinn 7fbce68530 changing over to manual run of the pipeline and moving from PublishBuildArtifact to PublishPipelineArtifact 2020-12-14 19:53:39 +00:00
Joseph Flinn 493ba4e488 checking out specific commit (for historical builds) 2020-12-14 19:27:23 +00:00
Joseph Flinn 99e2b83d62 adding git commit option 2020-12-14 19:25:24 +00:00
Joseph Flinn 926d221e6a testing artifact publishing 2020-12-14 19:04:39 +00:00
Joseph Flinn ae80649466 grabbing executable names 2020-12-14 18:47:21 +00:00
Matt Gibson ce5a3f0f35
Merge pull request #602 from bitwarden/use-logService-for-console-messages
Use logService for console messages
2020-12-14 11:57:09 -06:00
Joseph Flinn 9bad72db67 changing electron-builder to npx 2020-12-14 17:41:26 +00:00
Joseph Flinn 7deda0a117 debugging npm scripts in azure pipeline 2020-12-14 15:57:45 +00:00
Joseph Flinn 5924e108cf trying different syntax to see if that fixes the npm run problem 2020-12-14 15:38:45 +00:00
Joseph Flinn 792c6a3139 Update azure-pipelines.yml for Azure Pipelines 2020-12-11 16:12:08 -08:00
Joseph Flinn 4fea0cdb0f Update azure-pipelines.yml for Azure Pipelines 2020-12-11 15:46:37 -08:00
Joseph Flinn 6ebbe16070 Set up CI with Azure Pipelines
testing ci with azure pipelines [skip ci]
2020-12-11 15:42:43 -08:00
Matt Gibson dce4c83cfe Update jslib 2020-12-11 10:47:23 -06:00
Matt Gibson de45dc77a0 Include new jslib dependency 2020-12-11 10:42:23 -06:00
Matt Gibson e7d4886a4f Use logService for console messages 2020-12-11 10:42:00 -06:00
Chad Scharf 538d27b6e9
Merge pull request #609 from Hinton/hotfix/fix-fit-finish-bugs
Desktop fit & finish bugfixes
2020-12-11 09:54:38 -05:00
Hinton a938b842af Update jslib 2020-12-11 15:48:55 +01:00
Hinton d86225d551 Fix tray window listeners not working after closing the window 2020-12-11 12:57:32 +01:00
Vincent Salucci 82ca93db91
[Policy] Personal Ownership (#605)
* Initial commit of personal ownership

* Saving updated merge conflicts

* Updated jslib (dcbd09e -> 72bf18f)

* Fixed casing
2020-12-09 14:11:39 -06:00
Kyle Spearrin 2bfba0be5c
add supprot for encrypted json export (#607)
* add supprot for encrypted json export

* fix lint issues
2020-12-08 12:09:31 -05:00
Chad Scharf ee1baf7fe3
Merge pull request #604 from bitwarden/update-jslib-latest
update jslib to latest
2020-12-07 09:36:25 -05:00
Chad Scharf d981b80c0f update jslib to latest 2020-12-04 12:51:36 -05:00
Chad Scharf fcbd43a9f8
Merge pull request #601 from Hinton/feature/fit-finish
Desktop fit & finish
2020-12-04 12:41:03 -05:00
Chad Scharf e9b58ee9fe
Merge branch 'master' into feature/fit-finish 2020-12-04 12:39:44 -05:00
Chad Scharf 7e97d513b8
Merge pull request #566 from Hinton/feature/browser-communication
Browser <-> desktop communication
2020-12-04 12:21:27 -05:00
Kyle Spearrin 181c36d2e9 bump version 2020-12-02 15:45:53 -05:00
Hinton 28943f4bc1 Fix linting errors 2020-11-30 15:10:57 +01:00
Hinton ed0acdead2 Restore focus when displaying sync confirm 2020-11-30 14:58:52 +01:00
Hinton 91b186ae5d Enable closeToTray and startToTray on linux 2020-11-27 16:33:16 +01:00
Hinton 0cd196f56c Fix linux not creating the autostart dir if not exist 2020-11-27 13:47:25 +01:00
Hinton 75d26de581 Add support for linux autostart 2020-11-27 10:58:47 +01:00
Hinton f512df309d Add support for "openAtLogin" 2020-11-25 20:43:29 +01:00
Hinton 7da03dc91c Fix binary path on linux 2020-11-25 16:45:15 +01:00
Hinton e41023aa09 Add Edge and Opera extension ids 2020-11-25 15:25:18 +01:00
Hinton f1d5e43ca2 Merge branch 'master' of https://github.com/bitwarden/desktop into feature/browser-communication 2020-11-25 14:39:02 +01:00
Hinton a05677ab7f Update manifest generation to work with the electron embeeded proxy 2020-11-25 14:29:53 +01:00
Hinton 03a52d4d63 Fix not working on windows 2020-11-25 11:25:28 +01:00
Hinton d94f441422 Hide dock icon, handle errors occurring on mac 2020-11-25 10:52:01 +01:00
Chad Scharf 4678291e95
Merge pull request #598 from bitwarden/update-jslib-sso
Update jslib for SSO fix
2020-11-23 17:36:08 -05:00
Chad Scharf d86a929f00 Update jslib for SSO fix 2020-11-23 17:06:02 -05:00
Chad Scharf d90dc6ccab
Merge pull request #597 from Hinton/hotfix/update-jslib
Update jslib (PR 185)
2020-11-23 15:43:09 -05:00
Hinton b1bd19f4dc Update jslib (PR 185) 2020-11-23 21:41:04 +01:00
Hinton efb7cc98ae *Wip* Run proxy app through electron 2020-11-23 18:37:04 +01:00
Hinton f926f80d8c Wip start on login 2020-11-23 15:04:35 +01:00
Hinton 2cbe7f3d0a Add support on mac for minimize to menu bar on close, minimize or start 2020-11-20 17:20:51 +01:00
Hinton ae5a5082db Change "hide dock" to "always show dock" 2020-11-20 15:55:05 +01:00
Hinton 14181dc34d Fix jslib update 2020-11-20 14:34:23 +01:00
Hinton 002dd2752b Add setting for toggling hide dock 2020-11-20 14:05:50 +01:00
Hinton 4f466fba43 Update jslib 2020-11-19 19:19:28 +01:00
Hinton 77715443d9 Merge branch 'master' of https://github.com/bitwarden/desktop into feature/browser-communication 2020-11-19 18:49:40 +01:00
Matt Gibson ac05ec4afc
Merge pull request #594 from bitwarden/align-messages-for-delete-across-platforms
Use mobile's trash message for item delete
2020-11-19 11:39:13 -06:00
Matt Gibson f7b5968298 Use mobile's trash message for item delete 2020-11-19 10:39:23 -06:00
Kyle Spearrin a18a35fa0b
support for sr lang. resolve sendService deps (#593) 2020-11-18 16:13:05 -05:00
Kyle Spearrin 0670970d2e change snap push to upload 2020-11-14 23:06:05 -05:00
Addison Beck 7faf75a69a
version bump (#588)
* version bump

* also reset the patch version
2020-11-13 13:31:21 -05:00
Hinton 04c8b119e3 Merge branch 'master' of https://github.com/bitwarden/desktop into feature/browser-communication
# Conflicts:
#	src/locales/en/messages.json
2020-11-13 15:34:57 +01:00
Kyle Spearrin e3c4d4f80d
New Crowdin updates (#587)
* New translations messages.json (Romanian)

* New translations messages.json (Russian)

* New translations messages.json (Montenegrin (Latin))

* New translations messages.json (Malayalam)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Indonesian)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Ukrainian)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (Slovak)

* New translations messages.json (Portuguese)

* New translations messages.json (French)

* New translations messages.json (Polish)

* New translations messages.json (Dutch)

* New translations messages.json (Japanese)

* New translations messages.json (Hungarian)

* New translations messages.json (Hebrew)

* New translations messages.json (Finnish)

* New translations messages.json (German)

* New translations messages.json (Danish)

* New translations messages.json (Czech)

* New translations messages.json (Catalan)

* New translations messages.json (Spanish)
2020-11-12 21:45:03 -05:00
Kyle Spearrin de12fafd03
New Crowdin updates (#584)
* New translations messages.json (Romanian)

* New translations messages.json (Thai)

* New translations messages.json (Turkish)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Vietnamese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Indonesian)

* New translations messages.json (Persian)

* New translations messages.json (Croatian)

* New translations messages.json (Serbian (Cyrillic))

* New translations messages.json (Estonian)

* New translations messages.json (Latvian)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Esperanto)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Montenegrin (Latin))

* New translations messages.json (Swedish)

* New translations messages.json (Slovak)

* New translations messages.json (French)

* New translations messages.json (Greek)

* New translations messages.json (Spanish)

* New translations messages.json (Afrikaans)

* New translations messages.json (Belarusian)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (German)

* New translations messages.json (Finnish)

* New translations messages.json (Russian)

* New translations messages.json (Hebrew)

* New translations messages.json (Hungarian)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Portuguese)

* New translations messages.json (English, India)
2020-11-10 17:19:57 -05:00
Chad Scharf 56ef051e09
Merge pull request #583 from eliykat/docs-contrib
expand contributing guide
2020-11-10 10:48:49 -05:00
eliykat 4051e8cfd0
fix typo 2020-11-10 17:44:04 +10:00
Chad Scharf c0ba74b2e1
Merge pull request #577 from bitwarden/handle-window-hide
Handle main window hidden event
2020-11-04 15:41:07 -05:00
Chad Scharf eebec21afe Merge branch 'master' of https://github.com/bitwarden/desktop into master 2020-11-04 15:14:04 -05:00
Chad Scharf d83fb51dc3 t push origin masterMerge branch 'handle-window-hide' into master
Handle main window hidden event
2020-11-04 15:13:20 -05:00
Chad Scharf 97e982bf01 onDestroy needed for broadcast subscriptions 2020-11-04 14:00:44 -05:00
Chad Scharf c9c6a11390 update jslib 2020-11-04 12:22:17 -05:00
Chad Scharf fe031ac6b8 remove trailing whitespace for lint errors 2020-11-04 12:19:56 -05:00
Chad Scharf c001a00f82 Hide hidden fields on hide/minimize 2020-11-04 12:09:21 -05:00
Kyle Spearrin 1a918436ca fix set-env refs 2020-11-03 13:29:00 -05:00
Vincent Salucci bcc8bc0c80
[GDPR] Adjusted TOS/Privacy acceptance (#579)
* initial commit gdpr acceptance

* Removed variables/logic now found in superclass

* update jslib (d84d6da -> 5e50aa1)
2020-11-02 16:32:58 -06:00
Chad Scharf 4a18a4eb93 cont. removing broadcast srv jslib refs 2020-11-02 17:11:56 -05:00
Chad Scharf 5ff545e541 Undo broadcast service refs (not needed) 2020-11-02 17:08:39 -05:00
Cedric Wille 9914ac6610 issue496 Improve touchID message 2020-10-30 14:56:30 -04:00
Chad Scharf d8d1ee3022 Handle main window hide 2020-10-29 16:35:09 -04:00
Tom Rittson 0dc2da052f expand contributing guide 2020-10-28 17:35:00 +10:00
Hinton 0c0beb7446 Build proxy for all dist 2020-10-26 20:35:47 +01:00
Hinton da0cd3d588 Send error when failing to decrypt message 2020-10-23 14:40:31 +02:00
Hinton 470df8f589 Set correct paths to binary in manifest for npm run 2020-10-21 20:44:56 +02:00
Hinton 77fc0ce55b Cleanup code 2020-10-21 16:48:40 +02:00
Hinton 9ff0f204d8 Add connected/disconnected calls in proxy application 2020-10-21 15:56:27 +02:00
Hinton a6563e7de2 Send key to browser. 2020-10-19 18:34:24 +02:00
Hinton 2ac6148821 Show fingerprint message 2020-10-19 16:50:33 +02:00
Hinton 54c53e432b Setup new encryption flow 2020-10-19 12:21:07 +02:00
Hinton 1bb81270d9 Fix homedir for manifests 2020-10-16 18:51:28 +02:00
Hinton 74b51c9a6c wip 2020-10-16 17:09:17 +02:00
Vincent Salucci be95ee9328
[SSO] New user provision flow jslib update (f0dc38b -> d84d6da) (#570)
* Updated import/constructors

* Update jslib from f0dc38b -> d84d6da
2020-10-14 08:58:23 -05:00
Hinton d83e2bc117 Use proper logging, fix linting errors. 2020-10-12 21:34:41 +02:00
Hinton 5b0b07f812 Fix firefox manifest, use correct application executable. 2020-10-12 21:26:26 +02:00
Hinton 51b749b1dc Split native messaging into renderer and background service. Encrypt messages and verify timestamp 2020-10-12 21:18:28 +02:00
Hinton 44cd222626 Minor cleanup 2020-10-12 18:03:16 +02:00
Hinton c80b538674 Wire up desktop -> browser communication. Add initial biometry support for browser integration 2020-10-11 20:41:10 +02:00
Hinton 45302e5bd5 Add settings toggle to enable/disable browser integration 2020-10-07 18:25:18 +02:00
Hinton 19edc24b0b Add extraResources to linux and mac 2020-10-05 20:58:58 +02:00
Hinton cb9c0b318e Add untested support for linux and macos 2020-10-05 20:28:00 +02:00
Hinton 830c4a45ee Replace cosole logs with logService 2020-10-05 20:05:48 +02:00
Hinton 24ef7e1ef6 Generate app manifests and add install scripts for windows 2020-10-05 19:48:51 +02:00
Hinton f09a788103 Initial PoC for browser <-> desktop communication 2020-10-05 15:27:52 +02:00
Kyle Spearrin 38ecc3b74b only deploy to app store on release 2020-09-30 14:29:30 -04:00
Kyle Spearrin dc192b75a1 echo when snapcraft not installed 2020-09-30 13:28:06 -04:00
Kyle Spearrin 9db307555b release steps 2020-09-30 13:21:18 -04:00
Kyle Spearrin b3086fe713
New Crowdin updates (#560)
* New translations messages.json (Spanish)

* New translations messages.json (Finnish)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Indonesian)

* New translations messages.json (Malayalam)

* New translations messages.json (English, India)
2020-09-29 10:51:57 -04:00
Kyle Spearrin 7395fde989 bump version 2020-09-29 10:49:58 -04:00
Kyle Spearrin d03491bb3d map en-IN 2020-09-28 14:21:04 -04:00
Kyle Spearrin d90674227e BUILD_NUMBER for safari extension 2020-09-28 13:22:17 -04:00
Kyle Spearrin 72beaa7ed8 update names 2020-09-28 12:18:09 -04:00
Kyle Spearrin 9f357cb2ac increment build.buildVersion 2020-09-28 11:11:34 -04:00
Kyle Spearrin 694237536b limit when steps run 2020-09-25 11:48:15 -04:00
Kyle Spearrin 989c135c4a allow productbuild into keychain 2020-09-25 11:27:06 -04:00
Kyle Spearrin 3b3dbd65bc remove dmg build 2020-09-25 11:22:50 -04:00
Kyle Spearrin cb123ce59a fix x86 typo 2020-09-25 11:20:42 -04:00
Kyle Spearrin bbc12a9a9f debug mac 2020-09-25 10:55:47 -04:00
Kyle Spearrin b3f42543d4 list dist 2020-09-25 10:38:25 -04:00
Kyle Spearrin 6433178175 consolidate node_modules cache 2020-09-25 10:30:13 -04:00
Kyle Spearrin afd501b985 set macos debug 2020-09-25 10:22:01 -04:00
Kyle Spearrin 59cda84d07 cache stuff 2020-09-25 10:20:31 -04:00
Matt Portune 0bcb4c100a
Merge pull request #556 from bitwarden/bugfix-ssologinsync
perform full sync upon successful login with sso
2020-09-24 16:40:05 -04:00
Kyle Spearrin 36075de436 ignore dist-safari. win and linux jobs 2020-09-24 16:38:30 -04:00
Kyle Spearrin 4ee72fc94d echo on set node options 2020-09-24 16:15:32 -04:00
Kyle Spearrin 51a0e2d028 set max_old_space_size on node_options 2020-09-24 16:13:26 -04:00
Kyle Spearrin 84d356992a set up node 2020-09-24 15:51:17 -04:00
Kyle Spearrin d09228ceb9 fix safari dist path 2020-09-24 13:21:15 -04:00
Kyle Spearrin fb9e0ec739 dont use dist for safari builds 2020-09-24 13:01:50 -04:00
Kyle Spearrin ef3822228a fix artifact paths 2020-09-24 12:20:08 -04:00
Kyle Spearrin 30e898b697 artifacts and stuff 2020-09-24 12:17:41 -04:00
Matt Portune 56539d4690 perform full sync upon successful login with sso 2020-09-24 11:47:36 -04:00
Kyle Spearrin 696856a3c9 update electron builder and updater 2020-09-24 11:45:46 -04:00
Kyle Spearrin 7e1c6e0ee2 dist build for all 2020-09-24 10:20:56 -04:00
Kyle Spearrin 874e8056f8 pass in MACDEV_CERT_PASSWORD 2020-09-23 14:20:01 -04:00
Kyle Spearrin 532a8d7a37 decrypt macdev cert 2020-09-23 14:10:45 -04:00
Kyle Spearrin e2da97ec78 macdev cert 2020-09-23 13:59:37 -04:00
Kyle Spearrin 6572c28347 comment out dmg build 2020-09-23 13:36:16 -04:00
Kyle Spearrin 88859c87d4 some ls debugging 2020-09-23 13:18:11 -04:00
Kyle Spearrin 2eb60e95ae increment version 2020-09-23 12:44:57 -04:00
Kyle Spearrin a26c760c82 make safari builds more specific 2020-09-23 12:32:38 -04:00
Kyle Spearrin 04c37b2d81 checkout to /browser directory 2020-09-23 09:17:23 -04:00
Kyle Spearrin 6eff8835dd
New translations messages.json (Bulgarian) (#538) 2020-09-23 09:06:02 -04:00
Kyle Spearrin 6e8e9778d0 cd properly 2020-09-22 17:36:17 -04:00
Kyle Spearrin 8501640fbd correct path for safari cleanup 2020-09-22 17:32:01 -04:00
Kyle Spearrin 109cab2fb7 checkout safari via github action 2020-09-22 17:28:09 -04:00
Kyle Spearrin 1009b3b055 decrypt desktop key 2020-09-22 17:14:07 -04:00
Kyle Spearrin a565925b8f move appName appPath up 2020-09-22 17:02:33 -04:00
Kyle Spearrin c5250adf53 pull password from env 2020-09-22 16:55:40 -04:00
Kyle Spearrin 0dbe4bc66e add AC_PASSWORD to build keychain 2020-09-22 16:44:25 -04:00
Kyle Spearrin 0a310b5a00 add apple id info 2020-09-22 16:32:39 -04:00
Kyle Spearrin 7667dfca51 npm install 2020-09-22 16:19:17 -04:00
Kyle Spearrin 7d5daa8894 dont use powershell for dist 2020-09-22 16:16:48 -04:00
Kyle Spearrin 0e6824d3f4 dont build safari 2020-09-22 16:14:04 -04:00
Kyle Spearrin 9dfabf8eb8 fix passwords 2020-09-22 16:11:43 -04:00
Kyle Spearrin 17d8aef5db try github action ci build 2020-09-22 16:00:58 -04:00
Kyle Spearrin 961dc87f05 update jslib 2020-09-22 14:12:04 -04:00
Chad Scharf 3f3ba96ca7
Merge pull request #554 from bitwarden/fix/appimage-custom-protocol
Added protocol for AppImage build
2020-09-21 20:16:52 -04:00
Chad Scharf 103141ed97 Added protocol for AppImage build 2020-09-21 18:13:25 -04:00
Chad Scharf e6a61605a3
Merge pull request #550 from bitwarden/fix/507-win7-crash
Update jslib to in-kind commit-hash
2020-09-17 15:36:26 -04:00
Chad Scharf 09f48e59b9 Update jslib to latest fix related hash 2020-09-17 15:22:50 -04:00
Chad Scharf f3726a08b6 Update jslib to in-kind commit-hash 2020-09-17 15:21:08 -04:00
Kyle Spearrin b374030549 bump version 2020-09-16 14:44:35 -04:00
Kyle Spearrin 46b7f77e5c fix versioning between mas and others 2020-09-16 10:10:16 -04:00
Kyle Spearrin 7b6da22722 fix styling on login buttons 2020-09-15 14:45:03 -04:00
Kyle Spearrin 44c4fd2e80 language updates 2020-09-15 13:38:36 -04:00
Chad Scharf ce0568992a
Update jslib (#537) 2020-09-15 11:00:05 -04:00
Kyle Spearrin e2a24d78ce
New Crowdin updates (#536)
* New translations messages.json (French)

* New translations messages.json (Russian)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Estonian)

* New translations messages.json (Persian)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Vietnamese)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Ukrainian)

* New translations messages.json (Turkish)

* New translations messages.json (Swedish)

* New translations messages.json (Slovak)

* New translations messages.json (Portuguese)

* New translations messages.json (Catalan)

* New translations messages.json (Polish)

* New translations messages.json (Dutch)

* New translations messages.json (Korean)

* New translations messages.json (Japanese)

* New translations messages.json (Italian)

* New translations messages.json (Hungarian)

* New translations messages.json (Hebrew)

* New translations messages.json (Finnish)

* New translations messages.json (German)

* New translations messages.json (Danish)

* New translations messages.json (Malayalam)
2020-09-14 10:50:15 -04:00
Kyle Spearrin e182a41687
New Crowdin updates (#534)
* New translations messages.json (Romanian)

* New translations messages.json (Persian)

* New translations messages.json (Turkish)

* New translations messages.json (Ukrainian)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Vietnamese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Indonesian)

* New translations messages.json (Thai)

* New translations messages.json (Slovak)

* New translations messages.json (Croatian)

* New translations messages.json (Estonian)

* New translations messages.json (Latvian)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Esperanto)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Swedish)

* New translations messages.json (Russian)

* New translations messages.json (French)

* New translations messages.json (German)

* New translations messages.json (Spanish)

* New translations messages.json (Afrikaans)

* New translations messages.json (Belarusian)

* New translations messages.json (Bulgarian)

* New translations messages.json (Catalan)

* New translations messages.json (Czech)

* New translations messages.json (Danish)

* New translations messages.json (Greek)

* New translations messages.json (Portuguese)

* New translations messages.json (Finnish)

* New translations messages.json (Hebrew)

* New translations messages.json (Hungarian)

* New translations messages.json (Italian)

* New translations messages.json (Japanese)

* New translations messages.json (Korean)

* New translations messages.json (Dutch)

* New translations messages.json (Polish)

* New translations messages.json (Montenegrin (Latin))
2020-09-08 11:29:31 -04:00
Kyle Spearrin 617c6805db update jslib 2020-09-08 11:24:27 -04:00
Chad Scharf f5c02d16b9
bump version (#531) 2020-09-05 21:22:27 -04:00
Vincent Salucci 0576d2b119
[SSO] Add set password placeholder (#529)
* Update jslib (6ab444a -> 700e945)

* Fixing jslib changes // adding loading placeholder
2020-08-28 10:21:35 -05:00
Vincent Salucci 0190dd497a
Added missing policy string found while testing (#525) 2020-08-24 10:01:54 -05:00
Vincent Salucci bbd50b2459
[jslib] Update (5d874d0 -> 6ab444a) (#524)
* update jslib (5d874d0 -> 6ab444a)

* update depedency chain

* Removed weird double imports
2020-08-21 17:15:02 -05:00
Kyle Spearrin 0ba2589461
merge sso feature branch (#523)
* Update jslib (101c568 -> 14b01f2) (#506)

* Update jslib (14b01f2 -> 1513b25) (#510)

* [jslib] Update (1513b25 -> 7c3a9d6) (#516)

* update jslib (1513b25 -> 7c3a9d6)

* Updated call to constructor super

* [SSO] Added SSO flows & functionality (#513)

* update jslib

* bump version

* Added sso button (wip)

* Added sso & change password // Added modules/routes // Added strings for localization

* Added password strength comp // reverted login route

* Updated sso component to send client id // added routing for sso // added crypto function to services module provider list

* Added deep linking

* First round of UI updates // Added sso browser launching // Added missing strings

* Updated UI and added missing strings

* Removed extra change password style

* Let constructor for WindowMain handle default width/height

* Prepared for jslib update

* Update jslib (1513b25 -> 7c3a9d6)

* Update login super

* Added params for launchSsoBrowser function

* Update jslib (7c3a9d6 -> 4203937)

* Added missing strings, removed unnecessary class param

* Upgrade TypeScript (#517)

* Updated password score // Update styles

* Removed password-strength component files

* Cleaned up module class // Fixed UL/LI formatting issues

* Use exisiting loading string // removed new string

* Update jslib (4203937 -> 9957125)

* Updated class to perform new submit actions

* Upgrade Angular (#520)

* di resolution for CryptoFunctionServiceAbstraction

* Update jslib (9957125 -> 5d874d0) (#521)

* Updated change password flow to match web

* Updated callout style

Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com>
Co-authored-by: Oscar Hinton <hinton.oscar@gmail.com>

Co-authored-by: Vincent Salucci <26154748+vincentsalucci@users.noreply.github.com>
Co-authored-by: Oscar Hinton <hinton.oscar@gmail.com>
2020-08-21 09:50:36 -04:00
Vincent Salucci 83901e1e7c
Update jslib (9957125 -> 5d874d0) (#521) 2020-08-19 11:42:34 -05:00
Kyle Spearrin 3f75413552 di resolution for CryptoFunctionServiceAbstraction 2020-08-19 10:03:14 -04:00
Oscar Hinton 7499d7de25
Upgrade Angular (#520) 2020-08-18 16:13:15 -04:00
Oscar Hinton 540df4270c
Upgrade TypeScript (#517) 2020-08-12 15:43:38 -04:00
Kyle Spearrin c31de46b9e bump version 2020-08-03 15:55:35 -04:00
Kyle Spearrin 0d3f66ab45 update jslib 2020-08-03 15:49:56 -04:00
Chad Scharf 3fa50caa04
update latest jslib to the latest (#499) 2020-08-01 19:39:27 -04:00
Chad Scharf 0b50b0db3d
Revert embedded dll change (#498) 2020-07-31 06:32:22 -04:00
Chad Scharf 870bbcba70
Merge pull request #497 from bitwarden/fix/495/missing-dll-in-win-dist
Fixes #495 missing windows dll
2020-07-30 20:16:19 -04:00
Chad Scharf cec3e1ca12 Move DLL under /resources 2020-07-30 20:13:42 -04:00
Chad Scharf 98ca23427f Fixes #495 missing windows dll 2020-07-30 19:46:46 -04:00
Kyle Spearrin b7ee60edb3
New Crowdin updates (#494)
* New translations messages.json (French)

* New translations messages.json (Ukrainian)

* New translations messages.json (Malayalam)
2020-07-29 09:40:20 -04:00
Kyle Spearrin 883d0aeda0 fix links 2020-07-28 22:51:51 -04:00
Kyle Spearrin 6a801a3e4b
New Crowdin updates (#492)
* New translations messages.json (Spanish)

* New translations messages.json (Portuguese)

* New translations messages.json (Estonian)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Ukrainian)

* New translations messages.json (Russian)

* New translations messages.json (Polish)

* New translations messages.json (Catalan)

* New translations messages.json (Dutch)

* New translations messages.json (Japanese)

* New translations messages.json (Hungarian)

* New translations messages.json (Hebrew)

* New translations messages.json (German)

* New translations messages.json (Danish)
2020-07-28 21:36:56 -04:00
Kyle Spearrin 975addb30b
New Crowdin updates (#491)
* New translations messages.json (Romanian)

* New translations messages.json (Finnish)

* New translations messages.json (French)

* New translations messages.json (Polish)

* New translations messages.json (Dutch)

* New translations messages.json (Korean)

* New translations messages.json (Japanese)

* New translations messages.json (Hungarian)

* New translations messages.json (Hebrew)

* New translations messages.json (Italian)

* New translations messages.json (Greek)

* New translations messages.json (Danish)

* New translations messages.json (Czech)

* New translations messages.json (Catalan)

* New translations messages.json (Bulgarian)

* New translations messages.json (Belarusian)

* New translations messages.json (Afrikaans)

* New translations messages.json (German)

* New translations messages.json (Spanish)

* New translations messages.json (English, United Kingdom)

* New translations messages.json (Croatian)

* New translations messages.json (Estonian)

* New translations messages.json (Norwegian Bokmal)

* New translations messages.json (Esperanto)

* New translations messages.json (Malayalam)

* New translations messages.json (Sinhala)

* New translations messages.json (Persian)

* New translations messages.json (Thai)

* New translations messages.json (Russian)

* New translations messages.json (Indonesian)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Vietnamese)

* New translations messages.json (Chinese Traditional)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Ukrainian)

* New translations messages.json (Turkish)

* New translations messages.json (Swedish)

* New translations messages.json (Slovak)

* New translations messages.json (Portuguese)

* New translations messages.json (Montenegrin (Latin))
2020-07-28 09:27:38 -04:00
K. Sasa 7eee81f977
Replaced the clipboard icon with a clone icon to improve UX (#490)
* Replace copy value button fa-clipboard to fa-clone

* Replace clone item button fa-clone to fa-files-o
2020-07-27 13:21:46 -04:00
Kyle Spearrin 3ae073f458 bump version 2020-07-24 10:00:26 -04:00
Kyle Spearrin be9a23a1f6 remove premium menu item on mac app store 2020-07-24 10:00:00 -04:00
Kyle Spearrin 97feed232a update jslib 2020-07-24 09:50:17 -04:00
Kyle Spearrin 48aaf4b920
cleanup for biometrics (#489) 2020-07-23 17:24:35 -04:00
Kyle Spearrin 60030f0354 update jslib 2020-07-23 13:33:24 -04:00
Oscar Hinton 26b023a3cb
Biometric support (#470)
* Initial work on windows hello support

* Hide login button if not enabled

* Add windows.security.credentials.ui dependency to desktop as well.

* Only enable biometric on windows.

* Add support for dynamic biometric text.

* Add untested darwin implementation

* Ensure we support biometric before showing login with windows hello / touchid.

* Ensure compatability with latest jslib

* Only require module on use.

* Add windows.security.credentials.ui to src/package.json.

* Update requirements

* Update consent messages for biometrics
2020-07-23 13:32:36 -04:00
Kyle Spearrin 560b58f9de update jslib 2020-07-16 10:56:47 -04:00
Matt Smith 33eef540a7
Merge pull request #481 from bitwarden/update-jslib
Bump jslib to latest for URI change
2020-07-14 13:47:13 -05:00
Matt Smith 624290f31d Bump jslib to latest for URI change 2020-07-14 12:32:56 -05:00
Matt Smith b767cb9188
Merge pull request #480 from bitwarden/display-port-in-url
Modified url list to show port where applicable
2020-07-14 11:54:49 -05:00
Matt Smith 05ee1b6a06 Modified url list to show port where applicable 2020-07-14 11:38:11 -05:00
Anthony Garera 464708c507
Updated expiration year placeholder text to be dynamic (#474) 2020-07-03 22:45:54 -04:00
Kyle Spearrin bd975bf85d bump version for macos app store 2020-06-29 15:45:45 -04:00
Kyle Spearrin dcc1953854
New Crowdin updates (#472)
* New translations messages.json (Spanish)

* New translations messages.json (German)

* New translations messages.json (Polish)
2020-06-29 11:29:28 -04:00
Kyle Spearrin 3485e742a0 ignore branches for builds 2020-06-29 11:28:41 -04:00
Kyle Spearrin 0564347aa8
New Crowdin updates (#469)
* New translations messages.json (Russian)

* New translations messages.json (Estonian)

* New translations messages.json (Persian)

* New translations messages.json (Vietnamese)

* New translations messages.json (Chinese Simplified)

* New translations messages.json (Ukrainian)

* New translations messages.json (Turkish)

* New translations messages.json (Portuguese)

* New translations messages.json (Spanish)

* New translations messages.json (Polish)

* New translations messages.json (Dutch)

* New translations messages.json (Finnish)

* New translations messages.json (German)

* New translations messages.json (Czech)

* New translations messages.json (Sinhala)
2020-06-26 21:28:22 -04:00
Chad Scharf 86967da913
Merge pull request #468 from bitwarden/update-jslib
Update jslib + version bump
2020-06-25 17:20:32 -04:00
Chad Scharf 0055b1df0e version bump 2020-06-25 16:59:06 -04:00
Chad Scharf 31f4fc158e Update jslib 2020-06-25 16:42:28 -04:00
Chad Scharf 582814b148
Update latest jslib (#465) 2020-06-19 09:14:39 -04:00
Chad Scharf 12c4649941
Merge pull request #400 from clayadams5226/patch-1
ISSUE_TEMPLATE.md
2020-06-18 09:29:25 -04:00
Chad Scharf 5ea459a347
Merge pull request #458 from Hinton/feature/hide-passwords
Add support for hidden password
2020-06-11 15:01:07 -04:00
Hinton 26c05d5909 Update jslib. 2020-06-11 20:31:27 +02:00
hinton 876b45d82e Disable TOTP field, disable edit and show of hidden fields. 2020-06-04 22:23:02 +02:00
hinton 982d35a404 Merge branch 'master' of https://github.com/bitwarden/desktop into feature/hide-passwords 2020-06-04 22:09:46 +02:00
Kyle Spearrin 160c161782
fix null ref of cipher.isDeleted (#462) 2020-06-01 10:30:49 -04:00
hinton 66de9e93fa Hide passwords functionality for desktop 2020-05-27 22:41:57 +02:00
Clayton dc30baebb9
ISSUE_TEMPLATE.md
Added a uniform template to be used for all issues that are reported.
2020-03-06 08:19:35 -05:00
Wyatt Childers 3a2509b589 Only show carats for collections with children 2019-09-02 23:10:46 -04:00
Wyatt Childers ece47dff6a Only show carats for folders with children 2019-09-02 23:10:46 -04:00
301 changed files with 90122 additions and 24510 deletions

View File

@ -12,4 +12,4 @@ insert_final_newline = true
[*.{js,ts,scss,html}]
charset = utf-8
indent_style = space
indent_size = 4
indent_size = 2

9
.eslintignore Normal file
View File

@ -0,0 +1,9 @@
dist
build
jslib
webpack.main.js
webpack.renderer.js
src/scripts/duo.js
desktop_native
**/node_modules

32
.eslintrc.json Normal file
View File

@ -0,0 +1,32 @@
{
"root": true,
"env": {
"browser": true,
"node": true
},
"extends": ["./jslib/shared/eslintrc.json"],
"rules": {
"import/order": [
"error",
{
"alphabetize": {
"order": "asc"
},
"newlines-between": "always",
"pathGroups": [
{
"pattern": "jslib-*/**",
"group": "external",
"position": "after"
},
{
"pattern": "src/**/*",
"group": "parent",
"position": "before"
}
],
"pathGroupsExcludedImportTypes": ["builtin"]
}
]
}
}

2
.git-blame-ignore-revs Normal file
View File

@ -0,0 +1,2 @@
# Apply Prettier https://github.com/bitwarden/desktop/pull/1202
521feae535d83166e620c3c28dfc3e7b0314a00e

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
* text=auto eol=lf

85
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@ -0,0 +1,85 @@
name: Bug Report
description: File a bug report
labels: [bug]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
Please do not submit feature requests. The [Community Forums](https://community.bitwarden.com) has a section for submitting, voting for, and discussing product feature requests.
- type: textarea
id: reproduce
attributes:
label: Steps To Reproduce
description: How can we reproduce the behavior.
value: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. Click on '...'
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Result
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual Result
description: A clear and concise description of what is happening.
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots or Videos
description: If applicable, add screenshots and/or a short video to help explain your problem.
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Add any other context about the problem here.
- type: dropdown
id: os
attributes:
label: Operating System
description: What operating system are you seeing the problem on?
multiple: true
options:
- Windows
- macOS
- Linux
validations:
required: true
- type: input
id: os-version
attributes:
label: Operating System Version
description: What version of the operating system(s) are you seeing the problem on?
- type: dropdown
id: install-method
attributes:
label: Installation method
multiple: true
options:
- Direct Download (from bitwarden.com)
- Mac App Store
- Microsoft Store
- Homebrew
- Chocolatey
- Snap
- Other
validations:
required: true
- type: input
id: version
attributes:
label: Build Version
description: What version of our software are you running? (go to "Help" → "About Bitwarden" in the app)
validations:
required: true

14
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Feature Requests
url: https://community.bitwarden.com/c/feature-requests/
about: Request new features using the Community Forums. Please search existing feature requests before making a new one.
- name: Bitwarden Community Forums
url: https://community.bitwarden.com
about: Please visit the community forums for general community discussion, support and the development roadmap.
- name: Customer Support
url: https://bitwarden.com/contact/
about: Please contact our customer support for account issues and general customer support.
- name: Security Issues
url: https://hackerone.com/bitwarden
about: We use HackerOne to manage security disclosures.

32
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,32 @@
## Type of change
- [ ] Bug fix
- [ ] New feature development
- [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
- [ ] Build/deploy pipeline (DevOps)
- [ ] Other
## Objective
<!--Describe what the purpose of this PR is. For example: what bug you're fixing or what new feature you're adding-->
## Code changes
<!--Explain the changes you've made to each file or major component. This should help the reviewer understand your changes-->
<!--Also refer to any related changes or PRs in other repositories-->
- **file.ext:** Description of what was changed and why
## Screenshots
<!--Required for any UI changes. Delete if not applicable-->
## Testing requirements
<!--What functionality requires testing by QA? This includes testing new behavior and regression testing-->
## Before you submit
- [ ] I have checked for **linting** errors (`npm run lint`) (required)
- [ ] This change requires a **documentation update** (notify the documentation team)
- [ ] This change has particular **deployment requirements** (notify the DevOps team)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.github/secrets/devid-app-cert.p12.gpg vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
.github/secrets/macdev-cert.p12.gpg vendored Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

49
.github/workflows/crowndin-pull.yml vendored Normal file
View File

@ -0,0 +1,49 @@
---
name: Crowdin Sync
on:
workflow_dispatch:
inputs: {}
schedule:
- cron: "0 0 * * 5"
jobs:
crowdin-sync:
name: Autosync
runs-on: ubuntu-20.04
env:
_CROWDIN_PROJECT_ID: "299360"
steps:
- name: Checkout repo
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Login to Azure
uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a
with:
creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }}
- name: Retrieve secrets
id: retrieve-secrets
uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403
with:
keyvault: "bitwarden-prod-kv"
secrets: "crowdin-api-token"
- name: Download translations
uses: crowdin/github-action@e39093fd75daae7859c68eded4b43d42ec78d8ea
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
with:
config: crowdin.yml
crowdin_branch_name: master
upload_sources: false
upload_translations: false
download_translations: true
github_user_name: "github-actions"
github_user_email: "<>"
commit_message: "Autosync the updated translations"
localization_branch_name: crowdin-auto-sync
create_pull_request: true
pull_request_title: "Autosync Crowdin Translations"
pull_request_body: "Autosync the updated translations"

16
.github/workflows/enforce-labels.yml vendored Normal file
View File

@ -0,0 +1,16 @@
---
name: Enforce PR labels
on:
pull_request:
types: [labeled, unlabeled, opened, edited, synchronize]
jobs:
enforce-label:
name: EnforceLabel
runs-on: ubuntu-20.04
steps:
- name: Enforce Label
uses: yogevbd/enforce-label-action@8d1e1709b1011e6d90400a0e6cf7c0b77aa5efeb
with:
BANNED_LABELS: "hold"
BANNED_LABELS_DESCRIPTION: "PRs on hold cannot be merged"

213
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,213 @@
---
name: Release
on:
workflow_dispatch:
inputs:
release_type:
description: 'Release Options'
required: true
default: 'Initial Release'
type: choice
options:
- Initial Release
- Redeploy
- Dry Run
jobs:
setup:
name: Setup
runs-on: ubuntu-20.04
outputs:
package_version: ${{ steps.retrieve-version.outputs.package_version }}
branch-name: ${{ steps.branch.outputs.branch-name }}
steps:
- name: Branch check
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
run: |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc" ]]; then
echo "==================================="
echo "[!] Can only release from the 'rc' or 'hotfix-rc' branches"
echo "==================================="
exit 1
fi
- name: Checkout repo
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Get Package Version
id: retrieve-version
run: |
PKG_VERSION=$(jq -r .version src/package.json)
echo "::set-output name=package_version::$PKG_VERSION"
- name: Check to make sure Desktop release version has been bumped
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
latest_ver=$(hub release -L 1 -f '%T')
latest_ver=${latest_ver:1}
echo "Latest version: $latest_ver"
ver=${{ steps.retrieve-version.outputs.package_version }}
echo "Version: $ver"
if [ "$latest_ver" = "$ver" ] && \
[ "${{ github.event.inputs.release_type }}" == "Initial Release" ]; then
echo "Version has not been bumped!"
exit 1
fi
- name: Get branch name
id: branch
run: |
BRANCH_NAME=$(basename ${{ github.ref }})
echo "::set-output name=branch-name::$BRANCH_NAME"
- name: Login to Azure
uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010
with:
creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }}
- name: Retrieve secrets
id: retrieve-secrets
uses: Azure/get-keyvault-secrets@b5c723b9ac7870c022b8c35befe620b7009b336f
with:
keyvault: "bitwarden-prod-kv"
secrets: "aws-electron-access-id, aws-electron-access-key"
- name: Download all artifacts
uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8
with:
workflow: build.yml
workflow_conclusion: success
branch: ${{ steps.branch.outputs.branch-name }}
path: ./artifacts
- name: Rename .pkg to .pkg.archive
env:
PKG_VERSION: ${{ steps.retrieve-version.outputs.package_version }}
working-directory: ./artifacts
run: mv Bitwarden-${{ env.PKG_VERSION }}-universal.pkg Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive
- name: Publish artifacts to S3
env:
AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }}
AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.aws-electron-access-key }}
AWS_DEFAULT_REGION: 'us-west-2'
run: |
aws s3 cp ./artifacts s3://public-s3-electron-artifacts/desktop/ \
--acl "public-read" \
--recursive \
--quiet
- name: Create release
uses: ncipollo/release-action@95215a3cb6e6a1908b3c44e00b4fdb15548b1e09 # v2.8.5
env:
PKG_VERSION: ${{ steps.retrieve-version.outputs.package_version }}
with:
artifacts: "artifacts/Bitwarden-${{ env.PKG_VERSION }}-amd64.deb,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-x86_64.rpm,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.freebsd,
artifacts/bitwarden_${{ env.PKG_VERSION }}_amd64.snap,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-x86_64.AppImage,
artifacts/Bitwarden-Portable-${{ env.PKG_VERSION }}.exe,
artifacts/Bitwarden-Installer-${{ env.PKG_VERSION }}.exe,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32-store.appx,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32.appx,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32.nsis.7z,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64-store.appx,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.appx,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.nsis.7z,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64-store.appx,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64.appx,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64.nsis.7z,
artifacts/bitwarden.${{ env.PKG_VERSION }}.nupkg,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal-mac.zip,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.dmg,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.dmg.blockmap,
artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive"
commit: ${{ github.sha }}
tag: v${{ env.PKG_VERSION }}
name: Version ${{ env.PKG_VERSION }}
body: "<insert release notes here>"
token: ${{ secrets.GITHUB_TOKEN }}
draft: true
snap:
name: Deploy Snap
runs-on: ubuntu-20.04
needs: setup
env:
_PKG_VERSION: ${{ needs.setup.outputs.package_version }}
steps:
- name: Checkout Repo
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Login to Azure
uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a
with:
creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }}
- name: Retrieve secrets
id: retrieve-secrets
uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403
with:
keyvault: "bitwarden-prod-kv"
secrets: "snapcraft-store-token"
- name: Install Snap
uses: samuelmeuli/action-snapcraft@10d7d0a84d9d86098b19f872257df314b0bd8e2d # v1.2.0
with:
snapcraft_token: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }}
- name: Setup
run: mkdir dist
- name: Download Snap artifact
uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8
with:
workflow: build.yml
workflow_conclusion: success
branch: ${{ needs.setup.outputs.branch-name }}
artifacts: bitwarden_${{ env._PKG_VERSION }}_amd64.snap
path: ./dist
- name: Deploy to Snap Store
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
run: |
snapcraft upload dist/bitwarden_${{ env._PKG_VERSION }}_amd64.snap --release stable
snapcraft logout
choco:
name: Deploy Choco
runs-on: windows-2019
needs: setup
env:
_PKG_VERSION: ${{ needs.setup.outputs.package_version }}
steps:
- name: Checkout Repo
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Setup Chocolatey
run: choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/
env:
CHOCO_API_KEY: ${{ secrets.CHOCO_API_KEY }}
- name: Make dist dir
shell: pwsh
run: New-Item -ItemType directory -Path ./dist
- name: Download choco artifact
uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8
with:
workflow: build.yml
workflow_conclusion: success
branch: ${{ needs.setup.outputs.branch-name }}
artifacts: bitwarden.${{ env._PKG_VERSION }}.nupkg
path: ./dist
- name: Push to Chocolatey
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
shell: pwsh
run: |
cd dist
choco push

65
.github/workflows/version-bump.yml vendored Normal file
View File

@ -0,0 +1,65 @@
---
name: Version Bump
on:
workflow_dispatch:
inputs:
version_number:
description: "New Version"
required: true
jobs:
bump_version:
name: "Create version_bump_${{ github.event.inputs.version_number }} branch"
runs-on: ubuntu-20.04
steps:
- name: Checkout Branch
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
- name: Create Version Branch
run: |
git switch -c version_bump_${{ github.event.inputs.version_number }}
git push -u origin version_bump_${{ github.event.inputs.version_number }}
- name: Checkout Version Branch
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
with:
ref: version_bump_${{ github.event.inputs.version_number }}
- name: Bump Version - Package
uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945
with:
version: ${{ github.event.inputs.version_number }}
file_path: "./src/package.json"
- name: Commit files
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -m "Bumped version to ${{ github.event.inputs.version_number }}" -a
- name: Push changes
run: git push -u origin version_bump_${{ github.event.inputs.version_number }}
- name: Create Version PR
env:
PR_BRANCH: "version_bump_${{ github.event.inputs.version_number }}"
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
BASE_BRANCH: master
TITLE: "Bump version to ${{ github.event.inputs.version_number }}"
run: |
gh pr create --title "$TITLE" \
--base "$BASE" \
--head "$PR_BRANCH" \
--label "version update" \
--label "automated pr" \
--body "
## Type of change
- [ ] Bug fix
- [ ] New feature development
- [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
- [ ] Build/deploy pipeline (DevOps)
- [X] Other
## Objective
Automated version bump to ${{ github.event.inputs.version_number }}"

11
.github/workflows/workflow-linter.yml vendored Normal file
View File

@ -0,0 +1,11 @@
---
name: Workflow Linter
on:
pull_request:
paths:
- .github/workflows/**
jobs:
call-workflow:
uses: bitwarden/gh-actions/.github/workflows/workflow-linter.yml@master

4
.gitignore vendored
View File

@ -4,6 +4,7 @@ node_modules
npm-debug.log
vwd.webinfo
dist/
dist-safari/
css/
*.crx
*.pem
@ -13,4 +14,5 @@ yarn-error.log
*.nupkg
*.provisionprofile
*.env
PlugIns/safari.appex/
PlugIns/safari.appex/
PlugIns/safari-legacy.appex/

1
.husky/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
_

4
.husky/pre-commit Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged

2
.nvmrc
View File

@ -1 +1 @@
10.13.0
v16.13.1

14
.prettierignore Normal file
View File

@ -0,0 +1,14 @@
# Build directories
build
dist
dist-safari
desktop_native
jslib
# External libraries / auto synced locales
src/locales
src/scripts/duo.js
# Github Workflows
.github/workflows

3
.prettierrc.json Normal file
View File

@ -0,0 +1,3 @@
{
"printWidth": 100
}

View File

@ -1,11 +0,0 @@
matrix:
include:
- os: osx
osx_image: xcode9.2
language: node_js
node_js: 10
install:
- npm install
script:
- npm run lint
- npm run build

4
.vscode/launch.json vendored
View File

@ -10,9 +10,7 @@
"windows": {
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd"
},
"args": [
"."
]
"args": ["."]
}
]
}

View File

@ -1,4 +1,27 @@
Code contributions are welcome! Please commit any pull requests against the `master` branch.
# How to Contribute
Contributions of all kinds are welcome!
Please visit our [Community Forums](https://community.bitwarden.com/) for general community discussion and the development roadmap.
Here is how you can get involved:
- **Request a new feature:** Go to the [Feature Requests category](https://community.bitwarden.com/c/feature-requests/) of the Community Forums. Please search existing feature requests before making a new one
- **Write code for a new feature:** Make a new post in the [Github Contributions category](https://community.bitwarden.com/c/github-contributions/) of the Community Forums. Include a description of your proposed contribution, screeshots, and links to any relevant feature requests. This helps get feedback from the community and Bitwarden team members before you start writing code
- **Report a bug or submit a bugfix:** Use Github issues and pull requests
- **Write documentation:** Submit a pull request to the [Bitwarden help repository](https://github.com/bitwarden/help)
- **Help other users:** Go to the [Ask the Bitwarden Community category](https://community.bitwarden.com/c/support/) on the Community Forums
- **Translate:** See the localization (l10n) section below
## Contributor Agreement
Please sign the [Contributor Agreement](https://cla-assistant.io/bitwarden/desktop) if you intend on contributing to any Github repository. Pull requests cannot be accepted and merged unless the author has signed the Contributor Agreement.
## Pull Request Guidelines
- use `npm run lint` and fix any linting suggestions before submitting a pull request
- commit any pull requests against the `master` branch
- include a link to your Community Forums post
# Localization (l10n)
@ -8,6 +31,6 @@ We use a translation tool called [Crowdin](https://crowdin.com) to help manage o
If you are interested in helping translate the Bitwarden desktop app into another language (or make a translation correction), please register an account at Crowdin and join our project here: https://crowdin.com/project/bitwarden-desktop
If the language that you are interested in translating is not already listed, create a new account on Crowdin, join the project, and contact the project owner (https://crowdin.com/profile/kspearrin).
If the language that you are interested in translating is not already listed, create a new account on Crowdin, join the project, and contact the project owner (https://crowdin.com/profile/dwbit).
You can read Crowdin's getting started guide for translators here: https://support.crowdin.com/crowdin-intro/

View File

@ -1,5 +0,0 @@
<!--
Please do not submit feature requests. The [Community Forums][1] has a
section for submitting, voting for, and discussing product feature requests.
[1]: https://community.bitwarden.com
-->

View File

@ -1,32 +1,75 @@
[![appveyor build](https://ci.appveyor.com/api/projects/status/github/bitwarden/desktop?branch=master&svg=true)](https://ci.appveyor.com/project/bitwarden/desktop)
[![travis build](https://travis-ci.org/bitwarden/desktop.svg?branch=master)](https://travis-ci.org/bitwarden/desktop)
[![Github Workflow build on master](https://github.com/bitwarden/desktop/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/bitwarden/desktop/actions/workflows/build.yml?query=branch:master)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/bitwarden-desktop/localized.svg)](https://crowdin.com/project/bitwarden-desktop)
[![Join the chat at https://gitter.im/bitwarden/Lobby](https://badges.gitter.im/bitwarden/Lobby.svg)](https://gitter.im/bitwarden/Lobby)
> **Archived**
>
> This repository is archived, please go to https://github.com/bitwarden/clients for future development.
# Bitwarden Desktop Application
[![Platforms](https://imgur.com/SLv9paA.png "Windows, macOS, and Linux")](https://bitwarden.com/#download)
[![Platforms](https://imgur.com/SLv9paA.png "Windows, macOS, and Linux")](https://bitwarden.com/download/)
The Bitwarden desktop app is written using Electron and Angular. The application installs on Windows, macOS, and Linux distributions.
![Desktop Vault](https://raw.githubusercontent.com/bitwarden/brand/master/screenshots/desktop-macos-vault.png "My Vault")
![Desktop Vault](https://github.com/bitwarden/brand/blob/f09f2fa594c8a020c315296074f18ce0a7b3f171/screenshots/desktop-macos-vault.png "My Vault")
# Build/Run
**Requirements**
## Requirements
- [Node.js](https://nodejs.org/)
- Windows users: To compile the native node modules used in the app you will need the Visual C++ toolset, available through the standard Visual Studio installer (recommended) or by installing [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools) through `npm`. See more at [Compiling native Addon modules](https://github.com/Microsoft/nodejs-guidelines/blob/master/windows-environment.md#compiling-native-addon-modules).
- [Node.js](https://nodejs.org) v16.13.1 (LTS) or greater
- NPM v8
- Windows:
- To compile the native node modules used in the app you will need the _Visual C++ toolset_, available through the standard Visual Studio installer. You will also need to install the _Microsoft Build Tools 2015_ and _Windows 10 SDK 17134_ as additional dependencies in the Visual Studio installer.
- Linux:
- The following packages `build-essential libsecret-1-dev libglib2.0-dev`
**Run the app**
## Run the app
```bash
npm install
npm ci
npm run electron
```
### Debug Native Messaging
Native Messaging (communication with the browser extension) works by having the browser start a lightweight proxy application baked into our desktop binary. To setup an environment which allows
for easy debugging you will need to build the application for distribution, i.e. `npm run dist:<platform>`, start the dist version and enable desktop integration. This will write some manifests
to disk, Consult the [native manifests](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Manifest_location) documentation for more details of the manifest
format, and the exact locations for the different platforms. _Note_ that disabling the desktop integration will delete the manifests, and the files will need to be updated again.
The generated manifests are pre-configured with the production ID for the browser extensions. In order to use them with the development builds, the browser extension ID of the development build
needs to be added to the `allowed_extensions` section of the manifest. These IDs are generated by the browser, and can be found in the extension settings within the browser.
It will then be possible to run the desktop application as usual using `npm run electron` and communicate with the browser.
# We're Hiring!
Interested in contributing in a big way? Consider joining our team! We're hiring for many positions. Please take a look at our [Careers page](https://bitwarden.com/careers/) to see what opportunities are currently open as well as what it's like to work at Bitwarden.
# Contribute
Code contributions are welcome! Please commit any pull requests against the `master` branch. Learn more about how to contribute by reading the [`CONTRIBUTING.md`](CONTRIBUTING.md) file.
Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the [`SECURITY.md`](SECURITY.md) file.
## Prettier
We recently migrated to using Prettier as code formatter. All previous branches will need to updated to avoid large merge conflicts using the following steps:
1. Check out your local Branch
2. Run `git merge b4df834b16d4f5d4162a926a5a308bdb3ebc718b`
3. Resolve any merge conflicts, commit.
4. Run `npm run prettier`
5. Commit
6. Run `git merge -Xours 521feae535d83166e620c3c28dfc3e7b0314a00e`
7. Push
### Git blame
We also recommend that you configure git to ignore the prettier revision using:
```bash
git config blame.ignoreRevsFile .git-blame-ignore-revs
```

View File

@ -1,39 +1,11 @@
Bitwarden believes that working with security researchers across the globe is crucial to keeping our
users safe. If you believe you've found a security issue in our product or service, we encourage you to
notify us. We welcome working with you to resolve the issue promptly. Thanks in advance!
Bitwarden believes that working with security researchers across the globe is crucial to keeping our users safe. If you believe you've found a security issue in our product or service, we encourage you to please submit a report through our [HackerOne Program](https://hackerone.com/bitwarden/). We welcome working with you to resolve the issue promptly. Thanks in advance!
# Disclosure Policy
- Let us know as soon as possible upon discovery of a potential security issue, and we'll make every
effort to quickly resolve the issue.
- Provide us a reasonable amount of time to resolve the issue before any disclosure to the public or a
third-party. We may publicly disclose the issue before resolving it, if appropriate.
- Make a good faith effort to avoid privacy violations, destruction of data, and interruption or
degradation of our service. Only interact with accounts you own or with explicit permission of the
account holder.
- If you would like to encrypt your report, please use the PGP key with long ID
`0xDE6887086F892325FEC04CC0D847525B6931381F` (available in the public keyserver pool).
# In-scope
- Security issues in any current release of Bitwarden. This includes the web vault, browser extension,
and mobile apps (iOS and Android). Product downloads are available at https://bitwarden.com. Source
code is available at https://github.com/bitwarden.
# Exclusions
The following bug classes are out-of scope:
- Bugs that are already reported on any of Bitwarden's issue trackers (https://github.com/bitwarden),
or that we already know of. Note that some of our issue tracking is private.
- Issues in an upstream software dependency (ex: Xamarin, ASP.NET) which are already reported to the
upstream maintainer.
- Attacks requiring physical access to a user's device.
- Self-XSS
- Issues related to software or protocols not under Bitwarden's control
- Vulnerabilities in outdated versions of Bitwarden
- Missing security best practices that do not directly lead to a vulnerability
- Issues that do not have any impact on the general public
- Let us know as soon as possible upon discovery of a potential security issue, and we'll make every effort to quickly resolve the issue.
- Provide us a reasonable amount of time to resolve the issue before any disclosure to the public or a third-party. We may publicly disclose the issue before resolving it, if appropriate.
- Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our service. Only interact with accounts you own or with explicit permission of the account holder.
- If you would like to encrypt your report, please use the PGP key with long ID `0xDE6887086F892325FEC04CC0D847525B6931381F` (available in the public keyserver pool).
While researching, we'd like to ask you to refrain from:
@ -42,4 +14,8 @@ While researching, we'd like to ask you to refrain from:
- Social engineering (including phishing) of Bitwarden staff or contractors
- Any physical attempts against Bitwarden property or data centers
# We want to help you!
If you have something that you feel is close to exploitation, or if you'd like some information regarding the internal API, or generally have any questions regarding the app that would help in your efforts, please email us at https://bitwarden.com/contact and ask for that information. As stated above, Bitwarden wants to help you find issues, and is more than willing to help.
Thank you for helping keep Bitwarden and our users safe!

View File

@ -1,138 +0,0 @@
image:
- Visual Studio 2017
- Ubuntu1804
branches:
except:
- l10n_master
stack: node 10
init:
- ps: |
if($isWindows -and $env:DEBUG_RDP -eq "true") {
iex ((new-object net.webclient).DownloadString(`
'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
}
- sh: sudo apt-get update
- sh: sudo apt-get -y install pkg-config libxss-dev libsecret-1-dev rpm
- ps: |
if($isWindows) {
Install-Product node 10
}
if($env:APPVEYOR_REPO_TAG -eq "true") {
$env:RELEASE_NAME = $env:APPVEYOR_REPO_TAG_NAME.TrimStart("v")
}
install:
- ps: |
$env:PACKAGE_VERSION = (Get-Content -Raw -Path .\src\package.json | ConvertFrom-Json).version
$env:PROD_DEPLOY = "false"
if($env:APPVEYOR_REPO_TAG -eq "true" -and $env:APPVEYOR_RE_BUILD -eq "True") {
$env:PROD_DEPLOY = "true"
echo "This is a production deployment."
}
if($isWindows) {
choco install cloc --no-progress
cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git
}
before_build:
- node --version
- npm --version
# Get new $SNAP_TOKEN with:
# $ snapcraft export-login --snaps bitwarden --acls package_push,package_release -
- sh: |
if [ "${SNAP_TOKEN}" != "" -a "${PROD_DEPLOY}" == "true" ]
then
sudo apt-get update
sudo apt-get -y install snapd
sudo snap install snapcraft --classic
export PATH="$PATH:/snap/bin"
echo "$SNAP_TOKEN" | snapcraft login --with -
fi
- ps: |
if($isWindows -and $env:CHOCO_API_KEY -ne $null -and $env:PROD_DEPLOY -eq "true") {
choco install checksum --no-progress
choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/
}
build_script:
- npm install
- npm run lint
- ps: |
if($isLinux) {
npm run dist:lin
Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-x86_64.AppImage
Push-AppveyorArtifact ./dist/bitwarden_${env:PACKAGE_VERSION}_amd64.snap
Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-amd64.deb
Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-x64.freebsd
Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-x86_64.rpm
}
else {
npm run dist:win:ci
Rename-Item -Path .\dist\Bitwarden-${env:PACKAGE_VERSION}-x64.appx `
-NewName Bitwarden-${env:PACKAGE_VERSION}-x64-store.appx
Rename-Item -Path .\dist\Bitwarden-${env:PACKAGE_VERSION}-ia32.appx `
-NewName Bitwarden-${env:PACKAGE_VERSION}-ia32-store.appx
Push-AppveyorArtifact .\dist\Bitwarden-Portable-${env:PACKAGE_VERSION}.exe
Push-AppveyorArtifact .\dist\nsis-web\Bitwarden-Installer-${env:PACKAGE_VERSION}.exe
Push-AppveyorArtifact .\dist\Bitwarden-${env:PACKAGE_VERSION}-x64-store.appx
Push-AppveyorArtifact .\dist\Bitwarden-${env:PACKAGE_VERSION}-ia32-store.appx
}
after_build:
- ps: |
if($env:PROD_DEPLOY -eq "true") {
if($isLinux) {
echo "Deploy Linux..."
./scripts/snap-update.ps1 -version $env:PACKAGE_VERSION
}
else {
echo "Deploy Windows..."
.\scripts\choco-update.ps1 -version $env:PACKAGE_VERSION
Push-AppveyorArtifact .\dist\chocolatey\bitwarden.${env:PACKAGE_VERSION}.nupkg
}
}
- sh: |
if [ "${SNAP_TOKEN}" != "" -a "${PROD_DEPLOY}" == "true" ]
then
snapcraft logout
fi
on_finish:
- ps: |
if($isWindows -and $env:DEBUG_RDP -eq "true") {
$blockRdp = $true
iex ((new-object net.webclient).DownloadString(`
'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
}
for:
-
matrix:
only:
- image: Visual Studio 2017
cache:
- '%LOCALAPPDATA%\electron'
- '%LOCALAPPDATA%\electron-builder'
-
matrix:
only:
- image: Ubuntu1804
cache:
- '/home/appveyor/.cache/electron'
- '/home/appveyor/.cache/electron-builder'
deploy:
tag: $(APPVEYOR_REPO_TAG_NAME)
release: $(RELEASE_NAME)
provider: GitHub
auth_token: $(GH_TOKEN)
artifact: .*(\.nupkg|_store\.appx)$
force_update: true
on:
branch: master
APPVEYOR_REPO_TAG: true
PROD_DEPLOY: true

View File

@ -1,5 +1,9 @@
project_id_env: _CROWDIN_PROJECT_ID
api_token_env: CROWDIN_API_TOKEN
preserve_hierarchy: true
files:
- source: /src/locales/en/messages.json
dest: /src/locales/en/%original_file_name%
translation: /src/locales/%two_letters_code%/%original_file_name%
update_option: update_as_unapproved
languages_mapping:
@ -9,3 +13,4 @@ files:
zh-CN: zh_CN
zh-TW: zh_TW
en-GB: en_GB
en-IN: en_IN

6
desktop_native/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
target
index.node
**/node_modules
**/.DS_Store
npm-debug.log*
*.node

946
desktop_native/Cargo.lock generated Normal file
View File

@ -0,0 +1,946 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "anyhow"
version = "1.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "159bb86af3a200e19a068f4224eae4c8bb2d0fa054c7e5d1cacd5cef95e684cd"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bytes"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]]
name = "cfg-expr"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e068cb2806bbc15b439846dc16c5f89f8599f2c3e4d73d4449d38f9b2f0b6c5"
dependencies = [
"smallvec",
]
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "codespan-reporting"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
dependencies = [
"termcolor",
"unicode-width",
]
[[package]]
name = "convert_case"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8"
[[package]]
name = "core-foundation"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
name = "core-foundation-sys"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
[[package]]
name = "ctor"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa"
dependencies = [
"quote",
"syn",
]
[[package]]
name = "cxx"
version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce2295fe8865279f404147e9b2328e5af0ad11a2c016e58c13acfd48a07d8a55"
dependencies = [
"cc",
"cxxbridge-flags",
"cxxbridge-macro",
"link-cplusplus",
]
[[package]]
name = "cxx-build"
version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0aaaa055d4908326f1b4524b23ae53758019b806c0c4f382ea240982e9766b26"
dependencies = [
"cc",
"codespan-reporting",
"once_cell",
"proc-macro2",
"quote",
"scratch",
"syn",
]
[[package]]
name = "cxxbridge-flags"
version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a670224c6686471df12560a0b97a08145082e70bd38e2b0b5383b79e46c3da7"
[[package]]
name = "cxxbridge-macro"
version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b700096ca0dece28d9535fdb17ab784a8ae155d7f29d39c273643e6292c9620"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "desktop_native"
version = "0.0.0"
dependencies = [
"anyhow",
"core-foundation",
"gio",
"keytar",
"libsecret",
"napi",
"napi-build",
"napi-derive",
"scopeguard",
"security-framework",
"security-framework-sys",
"tokio",
"widestring",
"windows 0.32.0",
]
[[package]]
name = "futures-channel"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
dependencies = [
"futures-core",
]
[[package]]
name = "futures-core"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
[[package]]
name = "futures-executor"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-io"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
[[package]]
name = "futures-task"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
[[package]]
name = "futures-util"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
dependencies = [
"futures-core",
"futures-task",
"pin-project-lite",
"pin-utils",
"slab",
]
[[package]]
name = "gio"
version = "0.15.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96efd8a1c00d890f6b45671916e165b5e43ccec61957d443aff6d7e44f62d348"
dependencies = [
"bitflags",
"futures-channel",
"futures-core",
"futures-io",
"gio-sys",
"glib",
"libc",
"once_cell",
"thiserror",
]
[[package]]
name = "gio-sys"
version = "0.15.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d0fa5052773f5a56b8ae47dab09d040f5d9ce1311f4f99006e16e9a08269296"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
"winapi",
]
[[package]]
name = "glib"
version = "0.15.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa570813c504bdf7539a9400180c2dd4b789a819556fb86da7226d7d1b037b49"
dependencies = [
"bitflags",
"futures-channel",
"futures-core",
"futures-executor",
"futures-task",
"glib-macros",
"glib-sys",
"gobject-sys",
"libc",
"once_cell",
"smallvec",
"thiserror",
]
[[package]]
name = "glib-macros"
version = "0.15.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41bfd8d227dead0829ac142454e97531b93f576d0805d779c42bfd799c65c572"
dependencies = [
"anyhow",
"heck",
"proc-macro-crate",
"proc-macro-error",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "glib-sys"
version = "0.15.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4366377bd56697de8aaee24e673c575d2694d72e7756324ded2b0428829a7b8"
dependencies = [
"libc",
"system-deps",
]
[[package]]
name = "gobject-sys"
version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df6859463843c20cf3837e3a9069b6ab2051aeeadf4c899d33344f4aea83189a"
dependencies = [
"glib-sys",
"libc",
"system-deps",
]
[[package]]
name = "heck"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "keytar"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d361c55fba09829ac620b040f5425bf239b1030c3d6820a84acac8da867dca4d"
dependencies = [
"keytar-sys",
]
[[package]]
name = "keytar-sys"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe908c6896705a1cb516cd6a5d956c63f08d95ace81b93253a98cd93e1e6a65a"
dependencies = [
"cc",
"cxx",
"cxx-build",
"pkg-config",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.119"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4"
[[package]]
name = "libsecret"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4af5a2342942fa42d706a424e9f9914287fb8317132750fd73a241140ac38c1"
dependencies = [
"bitflags",
"gio",
"glib",
"libc",
"libsecret-sys",
"once_cell",
]
[[package]]
name = "libsecret-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "287d2a0fcd95e4d7b0ac6fc9f802691a790d7e522138713b0cacebc4e63cab91"
dependencies = [
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"pkg-config",
"system-deps",
]
[[package]]
name = "link-cplusplus"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8cae2cd7ba2f3f63938b9c724475dfb7b9861b545a90324476324ed21dbc8c8"
dependencies = [
"cc",
]
[[package]]
name = "lock_api"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"
dependencies = [
"scopeguard",
]
[[package]]
name = "log"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
dependencies = [
"cfg-if",
]
[[package]]
name = "memchr"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "mio"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2"
dependencies = [
"libc",
"log",
"miow",
"ntapi",
"winapi",
]
[[package]]
name = "miow"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
dependencies = [
"winapi",
]
[[package]]
name = "napi"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17ec66e60f000c78dd7c6215b6fa260e0591e09805024332bc5b3f55acc12244"
dependencies = [
"ctor",
"lazy_static",
"napi-sys",
"tokio",
"windows 0.30.0",
]
[[package]]
name = "napi-build"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebd4419172727423cf30351406c54f6cc1b354a2cfb4f1dba3e6cd07f6d5522b"
[[package]]
name = "napi-derive"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74ac5287a5e94a8728fc82d16c5127acc5eb5b8ad6404ef5f82d6a4ce8d5bdd2"
dependencies = [
"convert_case",
"napi-derive-backend",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "napi-derive-backend"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "427f4f04525635cdf22005d1be62d6d671bcb5550d694a1efb480a315422b4af"
dependencies = [
"convert_case",
"once_cell",
"proc-macro2",
"quote",
"regex",
"syn",
]
[[package]]
name = "napi-sys"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a385494dac3c52cbcacb393bb3b42669e7db8ab240c7ad5115f549eb061f2cc"
[[package]]
name = "ntapi"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
dependencies = [
"winapi",
]
[[package]]
name = "num_cpus"
version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
dependencies = [
"hermit-abi",
"libc",
]
[[package]]
name = "once_cell"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5"
[[package]]
name = "parking_lot"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58"
dependencies = [
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"smallvec",
"windows-sys",
]
[[package]]
name = "pin-project-lite"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c"
[[package]]
name = "pin-utils"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
[[package]]
name = "proc-macro-crate"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a"
dependencies = [
"thiserror",
"toml",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]]
name = "proc-macro2"
version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
dependencies = [
"unicode-xid",
]
[[package]]
name = "quote"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
dependencies = [
"proc-macro2",
]
[[package]]
name = "redox_syscall"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
dependencies = [
"bitflags",
]
[[package]]
name = "regex"
version = "1.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "scratch"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96311ef4a16462c757bb6a39152c40f58f31cd2602a40fceb937e2bc34e6cbab"
[[package]]
name = "security-framework"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc"
dependencies = [
"bitflags",
"core-foundation",
"core-foundation-sys",
"libc",
"security-framework-sys",
]
[[package]]
name = "security-framework-sys"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
name = "serde"
version = "1.0.136"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789"
[[package]]
name = "signal-hook-registry"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
dependencies = [
"libc",
]
[[package]]
name = "slab"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
[[package]]
name = "smallvec"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
[[package]]
name = "socket2"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "syn"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]
[[package]]
name = "system-deps"
version = "6.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709"
dependencies = [
"cfg-expr",
"heck",
"pkg-config",
"toml",
"version-compare",
]
[[package]]
name = "termcolor"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
dependencies = [
"winapi-util",
]
[[package]]
name = "thiserror"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "tokio"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee"
dependencies = [
"bytes",
"libc",
"memchr",
"mio",
"num_cpus",
"once_cell",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2",
"tokio-macros",
"winapi",
]
[[package]]
name = "tokio-macros"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "toml"
version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
dependencies = [
"serde",
]
[[package]]
name = "unicode-width"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "unicode-xid"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "version-compare"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "widestring"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b749ebd2304aa012c5992d11a25d07b406bdbe5f79d371cb7a918ce501a19eb0"
dependencies = [
"windows_aarch64_msvc 0.30.0",
"windows_i686_gnu 0.30.0",
"windows_i686_msvc 0.30.0",
"windows_x86_64_gnu 0.30.0",
"windows_x86_64_msvc 0.30.0",
]
[[package]]
name = "windows"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec"
dependencies = [
"windows_aarch64_msvc 0.32.0",
"windows_i686_gnu 0.32.0",
"windows_i686_msvc 0.32.0",
"windows_x86_64_gnu 0.32.0",
"windows_x86_64_msvc 0.32.0",
]
[[package]]
name = "windows-sys"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6"
dependencies = [
"windows_aarch64_msvc 0.32.0",
"windows_i686_gnu 0.32.0",
"windows_i686_msvc 0.32.0",
"windows_x86_64_gnu 0.32.0",
"windows_x86_64_msvc 0.32.0",
]
[[package]]
name = "windows_aarch64_msvc"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca"
[[package]]
name = "windows_aarch64_msvc"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5"
[[package]]
name = "windows_i686_gnu"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8"
[[package]]
name = "windows_i686_gnu"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615"
[[package]]
name = "windows_i686_msvc"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6"
[[package]]
name = "windows_i686_msvc"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172"
[[package]]
name = "windows_x86_64_gnu"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a"
[[package]]
name = "windows_x86_64_gnu"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc"
[[package]]
name = "windows_x86_64_msvc"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1"
[[package]]
name = "windows_x86_64_msvc"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316"

43
desktop_native/Cargo.toml Normal file
View File

@ -0,0 +1,43 @@
[package]
edition = "2021"
exclude = ["index.node"]
license = "GPL-3.0"
name = "desktop_native"
version = "0.0.0"
[lib]
crate-type = ["cdylib"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0"
napi = {version = "2", features = ["async"]}
napi-derive = "2"
scopeguard = "1.1.0"
tokio = {version = "1.17.0", features = ["full"]}
[build-dependencies]
napi-build = "1"
[target.'cfg(windows)'.dependencies]
widestring = "0.5.1"
windows = {version = "0.32.0", features = [
"alloc",
"Foundation",
"Storage_Streams",
"Win32_Foundation",
"Win32_Security_Credentials",
]}
[target.'cfg(windows)'.dev-dependencies]
keytar = "0.1.6"
[target.'cfg(target_os = "macos")'.dependencies]
core-foundation = "0.9.3"
security-framework = "2.6.1"
security-framework-sys = "2.6.1"
[target.'cfg(target_os = "linux")'.dependencies]
gio = "0.15.6"
libsecret = "0.1.4"

22
desktop_native/build.js Normal file
View File

@ -0,0 +1,22 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const child_process = require("child_process");
const process = require("process");
let targets = [];
switch (process.platform) {
case "win32":
targets = ["i686-pc-windows-msvc", "x86_64-pc-windows-msvc", "aarch64-pc-windows-msvc"];
break;
case "darwin":
targets = ["x86_64-apple-darwin", "aarch64-apple-darwin"];
break;
default:
targets = ['x86_64-unknown-linux-gnu'];
break;
}
targets.forEach(target => {
child_process.execSync(`npm run build -- --target ${target}`, {stdio: 'inherit'});
});

5
desktop_native/build.rs Normal file
View File

@ -0,0 +1,5 @@
extern crate napi_build;
fn main() {
napi_build::setup();
}

15
desktop_native/index.d.ts vendored Normal file
View File

@ -0,0 +1,15 @@
/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */
export namespace passwords {
/** Fetch the stored password from the keychain. */
export function getPassword(service: string, account: string): Promise<string>
/** Fetch the stored password from the keychain that was stored with Keytar. */
export function getPasswordKeytar(service: string, account: string): Promise<string>
/** Save the password to the keychain. Adds an entry if none exists otherwise updates the existing entry. */
export function setPassword(service: string, account: string, password: string): Promise<void>
/** Delete the stored password from the keychain. */
export function deletePassword(service: string, account: string): Promise<void>
}

241
desktop_native/index.js Normal file
View File

@ -0,0 +1,241 @@
const { existsSync, readFileSync } = require('fs')
const { join } = require('path')
const { platform, arch } = process
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
}
} else {
const { glibcVersionRuntime } = process.report.getReport().header
return !glibcVersionRuntime
}
}
switch (platform) {
case 'android':
switch (arch) {
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'desktop_native.android-arm64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.android-arm64.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-android-arm64')
}
} catch (e) {
loadError = e
}
break
case 'arm':
localFileExisted = existsSync(join(__dirname, 'desktop_native.android-arm-eabi.node'))
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.android-arm-eabi.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-android-arm-eabi')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Android ${arch}`)
}
break
case 'win32':
switch (arch) {
case 'x64':
localFileExisted = existsSync(
join(__dirname, 'desktop_native.win32-x64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.win32-x64-msvc.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-win32-x64-msvc')
}
} catch (e) {
loadError = e
}
break
case 'ia32':
localFileExisted = existsSync(
join(__dirname, 'desktop_native.win32-ia32-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.win32-ia32-msvc.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-win32-ia32-msvc')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'desktop_native.win32-arm64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.win32-arm64-msvc.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-win32-arm64-msvc')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'desktop_native.darwin-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.darwin-x64.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-darwin-x64')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'desktop_native.darwin-arm64.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.darwin-arm64.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-darwin-arm64')
}
} catch (e) {
loadError = e
}
break
default:
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_native.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.freebsd-x64.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-freebsd-x64')
}
} catch (e) {
loadError = e
}
break
case 'linux':
switch (arch) {
case 'x64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'desktop_native.linux-x64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.linux-x64-musl.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-linux-x64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'desktop_native.linux-x64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.linux-x64-gnu.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-linux-x64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'desktop_native.linux-arm64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.linux-arm64-musl.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-linux-arm64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'desktop_native.linux-arm64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.linux-arm64-gnu.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-linux-arm64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm':
localFileExisted = existsSync(
join(__dirname, 'desktop_native.linux-arm-gnueabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./desktop_native.linux-arm-gnueabihf.node')
} else {
nativeBinding = require('@bitwarden/desktop_native-linux-arm-gnueabihf')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Linux: ${arch}`)
}
break
default:
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
}
if (!nativeBinding) {
if (loadError) {
throw loadError
}
throw new Error(`Failed to load native binding`)
}
const { passwords } = nativeBinding
module.exports.passwords = passwords

41
desktop_native/package-lock.json generated Normal file
View File

@ -0,0 +1,41 @@
{
"name": "@bitwarden/desktop_native",
"version": "0.1.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@bitwarden/desktop_native",
"version": "0.1.0",
"hasInstallScript": true,
"license": "GPL-3.0",
"devDependencies": {
"@napi-rs/cli": "^2.6.2"
}
},
"node_modules/@napi-rs/cli": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.6.2.tgz",
"integrity": "sha512-EmH+DQDEBUIoqMim0cc+X96ImtcIZLFjgW5WWORpzYnA9Ug7zNPO7jCLMhIQRd/p5AdWaXrT4SVXc/aip09rKQ==",
"dev": true,
"bin": {
"napi": "scripts/index.js"
},
"engines": {
"node": ">= 10"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Brooooooklyn"
}
}
},
"dependencies": {
"@napi-rs/cli": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.6.2.tgz",
"integrity": "sha512-EmH+DQDEBUIoqMim0cc+X96ImtcIZLFjgW5WWORpzYnA9Ug7zNPO7jCLMhIQRd/p5AdWaXrT4SVXc/aip09rKQ==",
"dev": true
}
}
}

View File

@ -0,0 +1,32 @@
{
"name": "@bitwarden/desktop_native",
"version": "0.1.0",
"description": "",
"main": "index.node",
"scripts": {
"build": "napi build --release --platform",
"build:debug": "napi build --platform",
"build:cross-platform": "node build.js",
"test": "cargo test"
},
"author": "",
"license": "GPL-3.0",
"devDependencies": {
"@napi-rs/cli": "^2.6.2"
},
"napi": {
"name": "desktop_native",
"triples": {
"defaults": true,
"additional": [
"x86_64-unknown-linux-musl",
"aarch64-unknown-linux-gnu",
"i686-pc-windows-msvc",
"armv7-unknown-linux-gnueabihf",
"aarch64-apple-darwin",
"aarch64-unknown-linux-musl",
"aarch64-pc-windows-msvc"
]
}
}
}

39
desktop_native/src/lib.rs Normal file
View File

@ -0,0 +1,39 @@
#[macro_use]
extern crate napi_derive;
mod password;
#[napi]
pub mod passwords {
/// Fetch the stored password from the keychain.
#[napi]
pub async fn get_password(service: String, account: String) -> napi::Result<String> {
super::password::get_password(&service, &account)
.map_err(|e| napi::Error::from_reason(e.to_string()))
}
/// Fetch the stored password from the keychain that was stored with Keytar.
#[napi]
pub async fn get_password_keytar(service: String, account: String) -> napi::Result<String> {
super::password::get_password_keytar(&service, &account)
.map_err(|e| napi::Error::from_reason(e.to_string()))
}
/// Save the password to the keychain. Adds an entry if none exists otherwise updates the existing entry.
#[napi]
pub async fn set_password(
service: String,
account: String,
password: String,
) -> napi::Result<()> {
super::password::set_password(&service, &account, &password)
.map_err(|e| napi::Error::from_reason(e.to_string()))
}
/// Delete the stored password from the keychain.
#[napi]
pub async fn delete_password(service: String, account: String) -> napi::Result<()> {
super::password::delete_password(&service, &account)
.map_err(|e| napi::Error::from_reason(e.to_string()))
}
}

View File

@ -0,0 +1,59 @@
use anyhow::Result;
use security_framework::passwords::{
delete_generic_password, get_generic_password, set_generic_password,
};
pub fn get_password(service: &str, account: &str) -> Result<String> {
let result = String::from_utf8(get_generic_password(&service, &account)?)?;
Ok(result)
}
pub fn get_password_keytar(service: &str, account: &str) -> Result<String> {
get_password(service, account)
}
pub fn set_password(service: &str, account: &str, password: &str) -> Result<()> {
let result = set_generic_password(&service, &account, password.as_bytes())?;
Ok(result)
}
pub fn delete_password(service: &str, account: &str) -> Result<()> {
let result = delete_generic_password(&service, &account)?;
Ok(result)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test() {
scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({}););
set_password("BitwardenTest", "BitwardenTest", "Random").unwrap();
assert_eq!(
"Random",
get_password("BitwardenTest", "BitwardenTest").unwrap()
);
delete_password("BitwardenTest", "BitwardenTest").unwrap();
// Ensure password is deleted
match get_password("BitwardenTest", "BitwardenTest") {
Ok(_) => panic!("Got a result"),
Err(e) => assert_eq!(
"The specified item could not be found in the keychain.",
e.to_string()
),
}
}
#[test]
fn test_error_no_password() {
match get_password("Unknown", "Unknown") {
Ok(_) => panic!("Got a result"),
Err(e) => assert_eq!(
"The specified item could not be found in the keychain.",
e.to_string()
),
}
}
}

View File

@ -0,0 +1,5 @@
#[cfg_attr(target_os = "linux", path = "unix.rs")]
#[cfg_attr(target_os = "windows", path = "windows.rs")]
#[cfg_attr(target_os = "macos", path = "macos.rs")]
mod password;
pub use password::*;

View File

@ -0,0 +1,91 @@
use anyhow::{anyhow, Result};
use libsecret::{password_clear_sync, password_lookup_sync, password_store_sync, Schema};
use std::collections::HashMap;
pub fn get_password(service: &str, account: &str) -> Result<String> {
let res = password_lookup_sync(
Some(&get_schema()),
build_attributes(service, account),
gio::Cancellable::NONE,
)?;
match res {
Some(s) => Ok(String::from(s)),
None => Err(anyhow!("No password found")),
}
}
pub fn get_password_keytar(service: &str, account: &str) -> Result<String> {
get_password(service, account)
}
pub fn set_password(service: &str, account: &str, password: &str) -> Result<()> {
let result = password_store_sync(
Some(&get_schema()),
build_attributes(service, account),
Some(&libsecret::COLLECTION_DEFAULT),
&format!("{}/{}", service, account),
password,
gio::Cancellable::NONE,
)?;
Ok(result)
}
pub fn delete_password(service: &str, account: &str) -> Result<()> {
let result = password_clear_sync(
Some(&get_schema()),
build_attributes(service, account),
gio::Cancellable::NONE,
)?;
Ok(result)
}
fn get_schema() -> Schema {
let mut attributes = std::collections::HashMap::new();
attributes.insert("service", libsecret::SchemaAttributeType::String);
attributes.insert("account", libsecret::SchemaAttributeType::String);
libsecret::Schema::new(
"org.freedesktop.Secret.Generic",
libsecret::SchemaFlags::NONE,
attributes,
)
}
fn build_attributes<'a>(service: &'a str, account: &'a str) -> HashMap<&'a str, &'a str> {
let mut attributes = HashMap::new();
attributes.insert("service", service);
attributes.insert("account", account);
attributes
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test() {
scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({}););
set_password("BitwardenTest", "BitwardenTest", "Random").unwrap();
assert_eq!(
"Random",
get_password("BitwardenTest", "BitwardenTest").unwrap()
);
delete_password("BitwardenTest", "BitwardenTest").unwrap();
// Ensure password is deleted
match get_password("BitwardenTest", "BitwardenTest") {
Ok(_) => panic!("Got a result"),
Err(e) => assert_eq!("No password found", e.to_string()),
}
}
#[test]
fn test_error_no_password() {
match get_password("BitwardenTest", "BitwardenTest") {
Ok(_) => panic!("Got a result"),
Err(e) => assert_eq!("No password found", e.to_string()),
}
}
}

View File

@ -0,0 +1,180 @@
use anyhow::{anyhow, Result};
use widestring::{U16CString, U16String};
use windows::Win32::{
Foundation::{GetLastError, ERROR_NOT_FOUND, FILETIME, PWSTR, WIN32_ERROR},
Security::Credentials::{
CredDeleteW, CredFree, CredReadW, CredWriteW, CREDENTIALW, CRED_FLAGS,
CRED_PERSIST_ENTERPRISE, CRED_TYPE_GENERIC,
},
};
const CRED_FLAGS_NONE: u32 = 0;
pub fn get_password<'a>(service: &str, account: &str) -> Result<String> {
let target_name = U16CString::from_str(target_name(service, account))?;
let mut credential: *mut CREDENTIALW = std::ptr::null_mut();
let credential_ptr = &mut credential;
let result = unsafe {
CredReadW(
PWSTR(target_name.as_ptr()),
CRED_TYPE_GENERIC.0,
CRED_FLAGS_NONE,
credential_ptr,
)
};
scopeguard::defer!({
unsafe { CredFree(credential as *mut _) };
});
if !result.as_bool() {
return Err(anyhow!(convert_error(unsafe { GetLastError() })));
}
let password = unsafe {
U16String::from_ptr(
(*credential).CredentialBlob as *const u16,
(*credential).CredentialBlobSize as usize / 2,
)
.to_string_lossy()
};
Ok(String::from(password))
}
// Remove this after sufficient releases
pub fn get_password_keytar<'a>(service: &str, account: &str) -> Result<String> {
let target_name = U16CString::from_str(target_name(service, account))?;
let mut credential: *mut CREDENTIALW = std::ptr::null_mut();
let credential_ptr = &mut credential;
let result = unsafe {
CredReadW(
PWSTR(target_name.as_ptr()),
CRED_TYPE_GENERIC.0,
CRED_FLAGS_NONE,
credential_ptr,
)
};
scopeguard::defer!({
unsafe { CredFree(credential as *mut _) };
});
if !result.as_bool() {
return Err(anyhow!(unsafe { GetLastError() }.0.to_string()));
}
let password = unsafe {
std::str::from_utf8_unchecked(std::slice::from_raw_parts(
(*credential).CredentialBlob,
(*credential).CredentialBlobSize as usize,
))
};
Ok(String::from(password))
}
pub fn set_password(service: &str, account: &str, password: &str) -> Result<()> {
let target_name = U16CString::from_str(target_name(service, account))?;
let user_name = U16CString::from_str(account)?;
let last_written = FILETIME {
dwLowDateTime: 0,
dwHighDateTime: 0,
};
let credential = U16CString::from_str(password)?;
let credential_len = password.len() as u32 * 2;
let credential = CREDENTIALW {
Flags: CRED_FLAGS(CRED_FLAGS_NONE),
Type: CRED_TYPE_GENERIC,
TargetName: PWSTR(target_name.as_ptr()),
Comment: PWSTR::default(),
LastWritten: last_written,
CredentialBlobSize: credential_len,
CredentialBlob: credential.as_ptr() as *mut u8,
Persist: CRED_PERSIST_ENTERPRISE,
AttributeCount: 0,
Attributes: std::ptr::null_mut(),
TargetAlias: PWSTR::default(),
UserName: PWSTR(user_name.as_ptr()),
};
let result = unsafe { CredWriteW(&credential, 0) };
if !result.as_bool() {
return Err(anyhow!(unsafe { GetLastError() }.0.to_string()));
}
Ok(())
}
pub fn delete_password(service: &str, account: &str) -> Result<()> {
let target_name = U16CString::from_str(target_name(service, account))?;
unsafe {
CredDeleteW(
PWSTR(target_name.as_ptr()),
CRED_TYPE_GENERIC.0,
CRED_FLAGS_NONE,
)
.ok()?
};
Ok(())
}
fn target_name(service: &str, account: &str) -> String {
format!("{}/{}", service, account)
}
// Convert the internal WIN32 errors to descriptive messages
fn convert_error(code: WIN32_ERROR) -> String {
match code {
ERROR_NOT_FOUND => String::from("Password not found."),
_ => code.0.to_string(),
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test() {
scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({}););
set_password("BitwardenTest", "BitwardenTest", "Random").unwrap();
assert_eq!(
"Random",
get_password("BitwardenTest", "BitwardenTest").unwrap()
);
delete_password("BitwardenTest", "BitwardenTest").unwrap();
// Ensure password is deleted
match get_password("BitwardenTest", "BitwardenTest") {
Ok(_) => panic!("Got a result"),
Err(e) => assert_eq!("Password not found.", e.to_string()),
}
}
#[test]
fn test_get_password_keytar() {
scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({}););
keytar::set_password("BitwardenTest", "BitwardenTest", "HelloFromKeytar").unwrap();
assert_eq!(
"HelloFromKeytar",
get_password_keytar("BitwardenTest", "BitwardenTest").unwrap()
);
}
#[test]
fn test_error_no_password() {
match get_password("BitwardenTest", "BitwardenTest") {
Ok(_) => panic!("Got a result"),
Err(e) => assert_eq!("Password not found.", e.to_string()),
}
}
}

121
electron-builder.json Normal file
View File

@ -0,0 +1,121 @@
{
"extraMetadata": { "name": "bitwarden" },
"productName": "Bitwarden",
"appId": "com.bitwarden.desktop",
"buildDependenciesFromSource": true,
"copyright": "Copyright © 2015-2022 Bitwarden Inc.",
"directories": { "buildResources": "resources", "output": "dist", "app": "build" },
"afterSign": "scripts/after-sign.js",
"asarUnpack": ["**/*.node"],
"files": ["**/*", "!**/node_modules/@bitwarden/desktop-native/**/*"],
"publish": {
"provider": "generic",
"url": "https://artifacts.bitwarden.com/desktop"
},
"mac": {
"electronUpdaterCompatibility": ">=0.0.1",
"category": "public.app-category.productivity",
"darkModeSupport": true,
"gatekeeperAssess": false,
"hardenedRuntime": true,
"entitlements": "resources/entitlements.mac.plist",
"entitlementsInherit": "resources/entitlements.mac.plist",
"extendInfo": {
"ITSAppUsesNonExemptEncryption": false,
"CFBundleLocalizations": [
"en",
"cs",
"da",
"de",
"es",
"et",
"fi",
"fr",
"hr",
"hu",
"id",
"it",
"ja",
"nb",
"nl",
"pl",
"pt-BR",
"pt-PT",
"ro",
"ru",
"sk",
"sv",
"tr",
"uk",
"vi",
"zh-Hans",
"zh-Hant"
],
"CFBundleDevelopmentRegion": "en"
},
"target": ["dmg", "zip"]
},
"win": {
"electronUpdaterCompatibility": ">=0.0.1",
"target": ["portable", "nsis-web", "appx"],
"sign": "./sign.js",
"extraResources": [
{ "from": "node_modules/regedit/vbs", "to": "regedit/vbs", "filter": ["**/*"] },
{ "from": "resources/native-messaging.bat", "to": "native-messaging.bat" }
]
},
"linux": {
"category": "Utility",
"synopsis": "A secure and free password manager for all of your devices.",
"target": ["deb", "freebsd", "rpm", "AppImage", "snap"],
"desktop": { "Name": "Bitwarden", "Type": "Application", "GenericName": "Password Manager" }
},
"dmg": {
"icon": "dmg.icns",
"contents": [
{ "x": 150, "y": 185, "type": "file" },
{ "x": 390, "y": 180, "type": "link", "path": "/Applications" }
],
"window": { "width": 540, "height": 380 }
},
"mas": {
"entitlements": "resources/entitlements.mas.plist",
"entitlementsInherit": "resources/entitlements.mas.inherit.plist",
"hardenedRuntime": false,
"extendInfo": { "LSMinimumSystemVersion": "10.14.0" }
},
"nsisWeb": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": false,
"artifactName": "${productName}-Installer-${version}.${ext}",
"uninstallDisplayName": "${productName}",
"deleteAppDataOnUninstall": true
},
"portable": { "artifactName": "${productName}-Portable-${version}.${ext}" },
"appx": {
"artifactName": "${productName}-${version}-${arch}.${ext}",
"backgroundColor": "#175DDC",
"applicationId": "bitwardendesktop",
"identityName": "8bitSolutionsLLC.bitwardendesktop",
"publisher": "CN=14D52771-DE3C-4886-B8BF-825BA7690418",
"publisherDisplayName": "8bit Solutions LLC",
"languages": ["en-US"]
},
"deb": {
"artifactName": "${productName}-${version}-${arch}.${ext}",
"depends": ["libnotify4", "libxtst6", "libnss3", "libsecret-1-0", "libxss1"]
},
"appImage": {
"artifactName": "${productName}-${version}-${arch}.${ext}"
},
"rpm": { "artifactName": "${productName}-${version}-${arch}.${ext}" },
"freebsd": { "artifactName": "${productName}-${version}-${arch}.${ext}" },
"snap": {
"autoStart": true,
"confinement": "strict",
"plugs": ["default", "password-manager-service"],
"stagePackages": ["default"]
},
"protocols": [{ "name": "Bitwarden", "schemes": ["bitwarden"] }]
}

View File

@ -1,35 +0,0 @@
const gulp = require('gulp');
const googleWebFonts = require('gulp-google-webfonts');
const del = require('del');
const fs = require('fs');
const paths = {
cssDir: './src/css/',
node_modules: './node_modules/',
dist: './dist/',
resources: './resources/',
};
function clean() {
return del([paths.cssDir]);
}
function webfonts() {
return gulp.src('./webfonts.list')
.pipe(googleWebFonts({
fontsDir: 'webfonts',
cssFilename: 'webfonts.css',
format: 'woff',
}))
.pipe(gulp.dest(paths.cssDir));
}
// ref: https://github.com/angular/angular/issues/22524
function cleanupAotIssue() {
return del(['./node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts']);
}
exports.clean = clean;
exports.cleanupAotIssue = cleanupAotIssue;
exports.webfonts = gulp.series(clean, webfonts);
exports['prebuild:renderer'] = gulp.parallel(webfonts, cleanupAotIssue);

2
jslib

@ -1 +1 @@
Subproject commit 212a2e3745e6e0e2b3057ed308c47daf6aeefbc8
Subproject commit 80c834b52a8b00f88250a47a9bbd40c269fc2cba

32779
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,5 @@
{
"name": "bitwarden",
"productName": "Bitwarden",
"name": "@bitwarden/desktop",
"description": "A secure and free password manager for all of your devices.",
"version": "0.0.0",
"keywords": [
@ -22,26 +21,32 @@
"sub:update": "git submodule update --remote",
"sub:pull": "git submodule foreach git pull origin master",
"sub:commit": "npm run sub:pull && git commit -am \"update submodule\"",
"postinstall": "./node_modules/.bin/electron-rebuild && npm run sub:init",
"preinstall": "npm run sub:init",
"postinstall": "electron-rebuild",
"symlink:win": "rm -rf ./jslib && cmd /c mklink /J .\\jslib ..\\jslib",
"symlink:mac": "npm run symlink:lin",
"symlink:lin": "rm -rf ./jslib && ln -s ../jslib ./jslib",
"lint": "tslint src/**/*.ts",
"lint:fix": "tslint src/**/*.ts --fix",
"lint": "eslint . && prettier --check .",
"lint:fix": "eslint . --fix",
"build": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\"",
"build:main": "webpack --config webpack.main.js",
"build:renderer": "gulp prebuild:renderer && webpack --config webpack.renderer.js",
"build:renderer:watch": "gulp prebuild:renderer && webpack --config webpack.renderer.js --watch",
"electron": "npm run build:main && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 ./build --watch\" \"npm run build:renderer:watch\"",
"build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"",
"build:main": "cross-env NODE_ENV=production webpack --config webpack.main.js",
"build:main:dev": "cross-env NODE_ENV=development webpack --config webpack.main.js",
"build:renderer": "cross-env NODE_ENV=production webpack --config webpack.renderer.js",
"build:renderer:dev": "cross-env NODE_ENV=development webpack --config webpack.renderer.js",
"build:renderer:watch": "cross-env NODE_ENV=development webpack --config webpack.renderer.js --watch",
"electron": "npm run build:main:dev && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 ./build --watch\" \"npm run build:renderer:watch\"",
"electron:ignore": "npm run build:main:dev && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 --ignore-certificate-errors ./build --watch\" \"npm run build:renderer:watch\"",
"clean:dist": "rimraf ./dist/*",
"clean:l10n": "git push origin --delete l10n_master",
"pack:dir": "npm run clean:dist && electron-builder --dir -p never",
"pack:lin": "npm run clean:dist && electron-builder --linux --x64 -p never",
"pack:mac": "npm run clean:dist && electron-builder --mac -p never",
"pack:mac:mas": "npm run clean:dist && electron-builder --mac mas -p never",
"pack:mac:masdev": "npm run clean:dist && electron-builder --mac mas-dev -p never",
"pack:win": "npm run clean:dist && electron-builder --win --x64 --ia32 -p never -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
"pack:win:ci": "npm run clean:dist && electron-builder --win --x64 --ia32 -p never",
"pack:mac": "npm run clean:dist && electron-builder --mac --universal -p never",
"pack:mac:arm64": "npm run clean:dist && electron-builder --mac --arm64 -p never",
"pack:mac:mas": "npm run clean:dist && electron-builder --mac mas --universal -p never",
"pack:mac:masdev": "npm run clean:dist && electron-builder --mac mas-dev --universal -p never",
"pack:win": "npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p never -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
"pack:win:ci": "npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p never",
"dist:dir": "npm run build && npm run pack:dir",
"dist:lin": "npm run build && npm run pack:lin",
"dist:mac": "npm run build && npm run pack:mac",
@ -52,248 +57,80 @@
"publish:lin": "npm run build && npm run clean:dist && electron-builder --linux --x64 -p always",
"publish:mac": "npm run build && npm run clean:dist && electron-builder --mac -p always",
"publish:mac:mas": "npm run dist:mac:mas && npm run upload:mas",
"publish:win": "npm run build && npm run clean:dist && electron-builder --win --x64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
"upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD"
},
"build": {
"appId": "com.bitwarden.desktop",
"copyright": "Copyright © 2015-2020 Bitwarden Inc.",
"directories": {
"buildResources": "resources",
"output": "dist",
"app": "build"
},
"afterSign": "scripts/after-sign.js",
"mac": {
"electronUpdaterCompatibility": ">=0.0.1",
"category": "public.app-category.productivity",
"extraFiles": [
"PlugIns/"
],
"darkModeSupport": true,
"gatekeeperAssess": false,
"hardenedRuntime": true,
"entitlements": "resources/entitlements.mac.plist",
"entitlementsInherit": "resources/entitlements.mac.plist",
"extendInfo": {
"ITSAppUsesNonExemptEncryption": false,
"CFBundleLocalizations": [
"en",
"cs",
"da",
"de",
"es",
"et",
"fi",
"fr",
"hr",
"hu",
"id",
"it",
"ja",
"nb",
"nl",
"pl",
"pt-BR",
"pt-PT",
"ro",
"ru",
"sk",
"sv",
"tr",
"uk",
"vi",
"zh-Hans",
"zh-Hant"
],
"CFBundleDevelopmentRegion": "en"
},
"target": [
"dmg",
"zip"
]
},
"win": {
"electronUpdaterCompatibility": ">=0.0.1",
"target": [
"portable",
"nsis-web",
"appx"
]
},
"linux": {
"category": "Utility",
"synopsis": "A secure and free password manager for all of your devices.",
"target": [
"deb",
"freebsd",
"rpm",
"AppImage",
"snap"
],
"desktop": {
"Name": "Bitwarden",
"Type": "Application",
"GenericName": "Password Manager"
}
},
"dmg": {
"icon": "dmg.icns",
"contents": [
{
"x": 150,
"y": 185,
"type": "file"
},
{
"x": 390,
"y": 180,
"type": "link",
"path": "/Applications"
}
],
"window": {
"width": 540,
"height": 380
}
},
"mas": {
"entitlements": "resources/entitlements.mas.plist",
"entitlementsInherit": "resources/entitlements.mas.inherit.plist",
"hardenedRuntime": false,
"asarUnpack": [
"node_modules/desktop-idle",
"node_modules/keytar"
]
},
"nsisWeb": {
"oneClick": false,
"perMachine": true,
"allowToChangeInstallationDirectory": true,
"artifactName": "${productName}-Installer-${version}.${ext}",
"uninstallDisplayName": "${productName}",
"deleteAppDataOnUninstall": true
},
"portable": {
"artifactName": "${productName}-Portable-${version}.${ext}"
},
"appx": {
"artifactName": "${productName}-${version}-${arch}.${ext}",
"backgroundColor": "#175DDC",
"applicationId": "bitwardendesktop",
"identityName": "8bitSolutionsLLC.bitwardendesktop",
"publisher": "CN=14D52771-DE3C-4886-B8BF-825BA7690418",
"publisherDisplayName": "8bit Solutions LLC",
"languages": [
"en-US"
]
},
"deb": {
"artifactName": "${productName}-${version}-${arch}.${ext}",
"depends": [
"libnotify4",
"libxtst6",
"libnss3",
"libsecret-1-0",
"libxss1"
]
},
"appImage": {
"artifactName": "${productName}-${version}-${arch}.${ext}"
},
"rpm": {
"artifactName": "${productName}-${version}-${arch}.${ext}"
},
"freebsd": {
"artifactName": "${productName}-${version}-${arch}.${ext}"
},
"snap": {
"confinement": "strict",
"plugs": [
"default",
"password-manager-service"
],
"stagePackages": [
"default"
],
"publish": [
"github"
]
}
"publish:win": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
"publish:win:dev": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always",
"upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas-universal/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD",
"prettier": "prettier --write .",
"prepare": "husky install"
},
"devDependencies": {
"@angular/compiler-cli": "^7.2.11",
"@ngtools/webpack": "^7.2.2",
"@types/lunr": "^2.3.3",
"@types/node-forge": "^0.7.5",
"@types/papaparse": "^4.5.3",
"@types/semver": "^5.5.0",
"@types/webcrypto": "^0.0.28",
"@types/webpack": "^4.4.11",
"@types/zxcvbn": "4.4.0",
"clean-webpack-plugin": "^0.1.19",
"concurrently": "^4.0.1",
"copy-webpack-plugin": "^4.2.0",
"cross-env": "^5.2.0",
"css-loader": "^1.0.0",
"del": "^3.0.0",
"electron": "6.1.7",
"electron-builder": "22.4.0",
"electron-notarize": "^0.2.1",
"electron-rebuild": "^1.9.0",
"@angular/compiler-cli": "^12.2.13",
"@ngtools/webpack": "^12.2.13",
"@types/node": "^16.11.12",
"@types/node-ipc": "^9.1.4",
"@typescript-eslint/eslint-plugin": "^5.12.1",
"@typescript-eslint/parser": "^5.12.1",
"clean-webpack-plugin": "^4.0.0",
"concurrently": "^6.0.2",
"copy-webpack-plugin": "^10.0.0",
"cross-env": "^7.0.3",
"css-loader": "^6.5.1",
"electron-builder": "22.11.7",
"electron-notarize": "^1.1.1",
"electron-rebuild": "^3.2.5",
"electron-reload": "^1.5.0",
"mini-css-extract-plugin": "^0.9.0",
"file-loader": "^2.0.0",
"font-awesome": "4.7.0",
"gulp": "^4.0.0",
"gulp-google-webfonts": "^2.0.0",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"ngx-infinite-scroll": "7.0.1",
"node-abi": "^2.9.0",
"node-loader": "^0.6.0",
"node-sass": "^4.13.1",
"rimraf": "^2.6.2",
"sass-loader": "^7.1.0",
"ts-loader": "^5.3.3",
"tslint": "^5.12.1",
"tslint-loader": "^3.5.4",
"typescript": "3.2.4",
"webpack": "^4.29.0",
"webpack-cli": "^3.2.1",
"webpack-merge": "^4.2.1",
"webpack-node-externals": "^1.7.2"
"eslint": "^8.9.0",
"eslint-config-prettier": "^8.4.0",
"eslint-import-resolver-typescript": "^2.5.0",
"eslint-plugin-import": "^2.25.4",
"html-loader": "^3.0.1",
"html-webpack-plugin": "^5.5.0",
"husky": "^7.0.4",
"lint-staged": "^12.1.3",
"mini-css-extract-plugin": "^2.4.5",
"node-loader": "^2.0.0",
"prettier": "^2.5.1",
"rimraf": "^3.0.2",
"sass": "^1.32.11",
"sass-loader": "^12.4.0",
"tapable": "^1.1.3",
"ts-loader": "^9.2.5",
"tsconfig-paths-webpack-plugin": "^3.5.1",
"typescript": "4.3.5",
"webpack": "^5.64.4",
"webpack-cli": "^4.9.1",
"webpack-merge": "^5.8.0"
},
"dependencies": {
"@angular/animations": "7.2.1",
"@angular/cdk": "7.2.1",
"@angular/common": "7.2.1",
"@angular/compiler": "7.2.1",
"@angular/core": "7.2.1",
"@angular/forms": "7.2.1",
"@angular/platform-browser": "7.2.1",
"@angular/platform-browser-dynamic": "7.2.1",
"@angular/router": "7.2.1",
"@angular/upgrade": "7.2.1",
"@microsoft/signalr": "3.1.0",
"@microsoft/signalr-protocol-msgpack": "3.1.0",
"angular2-toaster": "6.1.0",
"angulartics2": "6.3.0",
"big-integer": "1.6.36",
"core-js": "2.6.2",
"desktop-idle": "1.1.2",
"duo_web_sdk": "git+https://github.com/duosecurity/duo_web_sdk.git",
"electron-log": "2.2.17",
"electron-store": "1.3.0",
"electron-updater": "4.2.0",
"keytar": "4.13.0",
"lunr": "2.3.3",
"node-forge": "0.7.6",
"nord": "0.2.1",
"papaparse": "4.6.0",
"rxjs": "6.3.3",
"sweetalert2": "9.8.1",
"zone.js": "0.8.28",
"zxcvbn": "4.4.2"
"@angular/animations": "^12.2.13",
"@angular/cdk": "^12.2.13",
"@angular/common": "^12.2.13",
"@angular/compiler": "^12.2.13",
"@angular/core": "^12.2.13",
"@angular/forms": "^12.2.13",
"@angular/platform-browser": "^12.2.13",
"@angular/platform-browser-dynamic": "^12.2.13",
"@angular/router": "^12.2.13",
"@bitwarden/jslib-angular": "file:jslib/angular",
"@bitwarden/jslib-common": "file:jslib/common",
"@bitwarden/jslib-electron": "file:jslib/electron",
"@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4",
"forcefocus": "^1.1.0",
"keytar": "^7.9.0",
"ngx-toastr": "14.1.4",
"node-ipc": "^9.1.4",
"nord": "^0.2.1",
"regedit": "^3.0.3",
"rxjs": "^7.4.0",
"sweetalert2": "^10.16.6",
"zone.js": "0.11.4"
},
"engines": {
"node": "~16",
"npm": "~8"
},
"lint-staged": {
"./!(jslib)**": "prettier --ignore-unknown --write",
"*.ts": "eslint --fix"
}
}

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>

View File

@ -8,5 +8,19 @@
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>
<array>
<string>/Library/Application Support/Mozilla/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Beta/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Dev/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/</string>
<string>/Library/Application Support/Chromium/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Beta/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Dev/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Canary/NativeMessagingHosts/</string>
<string>/Library/Application Support/Vivaldi/NativeMessagingHosts/</string>
</array>
</dict>
</plist>

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 B

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 B

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 878 B

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 B

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,7 @@
@echo off
:: Helper script for starting the Native Messaging Proxy on Windows.
cd ../
set ELECTRON_RUN_AS_NODE=1
set ELECTRON_NO_ATTACH_CONSOLE=1
Bitwarden.exe resources/app.asar %*

View File

@ -1,24 +1,62 @@
require('dotenv').config();
const { notarize } = require('electron-notarize');
/* eslint-disable @typescript-eslint/no-var-requires, no-console */
require("dotenv").config();
const path = require("path");
const { deepAssign } = require("builder-util");
const { notarize } = require("electron-notarize");
const fse = require("fs-extra");
exports.default = run;
async function run(context) {
console.log('## After sign');
// console.log(context);
console.log("## After sign");
// console.log(context);
const appleId = process.env.APPLEID;
const appName = context.packager.appInfo.productFilename;
const appPath = `${context.appOutDir}/${appName}.app`;
const macBuild = context.electronPlatformName === 'darwin';
const appName = context.packager.appInfo.productFilename;
const appPath = `${context.appOutDir}/${appName}.app`;
const macBuild = context.electronPlatformName === "darwin";
const copyPlugIn = ["darwin", "mas"].includes(context.electronPlatformName);
if (macBuild) {
console.log('### Notarizing ' + appPath);
return await notarize({
appBundleId: 'com.bitwarden.desktop',
appPath: appPath,
appleId: appleId,
appleIdPassword: `@keychain:AC_PASSWORD`,
});
if (copyPlugIn) {
// Copy Safari plugin to work-around https://github.com/electron-userland/electron-builder/issues/5552
const plugIn = path.join(__dirname, "../PlugIns");
if (fse.existsSync(plugIn)) {
fse.mkdirSync(path.join(appPath, "Contents/PlugIns"));
fse.copySync(
path.join(plugIn, "safari.appex"),
path.join(appPath, "Contents/PlugIns/safari.appex")
);
// Resign to sign safari extension
if (context.electronPlatformName === "mas") {
const masBuildOptions = deepAssign(
{},
context.packager.platformSpecificBuildOptions,
context.packager.config.mas
);
if (context.targets.some((e) => e.name === "mas-dev")) {
deepAssign(masBuildOptions, {
type: "development",
});
}
if (context.packager.packagerOptions.prepackaged == null) {
await context.packager.sign(appPath, context.appOutDir, masBuildOptions, context.arch);
}
} else {
await context.packager.signApp(context, true);
}
}
}
if (macBuild) {
console.log("### Notarizing " + appPath);
const appleId = process.env.APPLE_ID_USERNAME || process.env.APPLEID;
const appleIdPassword = process.env.APPLE_ID_PASSWORD || `@keychain:AC_PASSWORD`;
return await notarize({
appBundleId: "com.bitwarden.desktop",
appPath: appPath,
appleId: appleId,
appleIdPassword: appleIdPassword,
});
}
}

1
scripts/dev/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
data

View File

@ -0,0 +1,19 @@
version: "3"
services:
minio:
image: minio/minio
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
# environment:
# MINIO_ROOT_USER: minioadmin
# MINIO_ROOT_PASSWORD: minioadmin
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
volumes:
- ./data:/data

View File

@ -0,0 +1,12 @@
$dir = Split-Path -Parent $MyInvocation.MyCommand.Path;
$rootDir = $dir + "\..";
$outputPath = $rootDir + "\PlugIns";
$zipFileName = "safari-legacy.appex.zip";
$downloadOutput = $outputPath + "\" + $zipFileName;
Invoke-WebRequest -Uri "https://github.com/bitwarden/browser/releases/download/v1.48.1/safari-legacy.appex.zip" -OutFile $downloadOutput
Set-Location $outputPath
Invoke-Expression -Command "unzip $zipFileName"
Remove-Item $downloadOutput

View File

@ -1,7 +1,10 @@
param (
[string] $version,
[switch] $mas,
[switch] $masdev
[switch] $masdev,
[switch] $skipcheckout,
[switch] $skipoutcopy,
[switch] $copyonly
)
# Dependencies:
@ -12,24 +15,46 @@
$dir = Split-Path -Parent $MyInvocation.MyCommand.Path;
$rootDir = $dir + "\..";
$distDir = $rootDir + "\dist";
$distSafariDir = $distDir + "\safari";
$distSafariDir = $rootDir + "\dist-safari";
$distSafariAppexDmg = $distSafariDir + "\browser\dist\Safari\dmg\build\Release\safari.appex";
$distSafariAppexMas = $distSafariDir + "\browser\dist\Safari\mas\build\Release\safari.appex";
$distSafariAppexMasDev = $distSafariDir + "\browser\dist\Safari\masdev\build\Release\safari.appex";
$pluginsAppex = $rootDir + "\PlugIns\safari.appex";
if (Test-Path -Path $distSafariDir) {
Remove-Item -Recurse -Force $distSafariDir
function CopyOutput {
if ($mas) {
Copy-Item -Path $distSafariAppexMas -Destination $pluginsAppex Recurse
}
elseif ($masdev) {
Copy-Item -Path $distSafariAppexMasDev -Destination $pluginsAppex Recurse
}
else {
Copy-Item -Path $distSafariAppexDmg -Destination $pluginsAppex Recurse
}
}
if (Test-Path -Path $pluginsAppex) {
Remove-Item -Recurse -Force $pluginsAppex
}
New-Item $distSafariDir -ItemType Directory -ea 0
if ($copyonly) {
CopyOutput
exit
}
if(-not $skipcheckout) {
if (Test-Path -Path $distSafariDir) {
Remove-Item -Recurse -Force $distSafariDir
}
New-Item $distSafariDir -ItemType Directory -ea 0
}
cd $distSafariDir
git clone git@github.com:bitwarden/browser.git
if(-not $skipcheckout) {
git clone git@github.com:bitwarden/browser.git
}
cd browser
if (-not ([string]::IsNullOrEmpty($version))) {
@ -39,13 +64,9 @@ if (-not ([string]::IsNullOrEmpty($version))) {
npm i
npm run dist:safari
if ($mas) {
Copy-Item -Path $distSafariAppexMas -Destination $pluginsAppex Recurse
}
elseif ($masdev) {
Copy-Item -Path $distSafariAppexMasDev -Destination $pluginsAppex Recurse
}
else {
Copy-Item -Path $distSafariAppexDmg -Destination $pluginsAppex Recurse
if (-not $skipoutcopy) {
CopyOutput
}
cd $rootDir

View File

@ -25,4 +25,4 @@ $uri = "https://github.com/bitwarden/desktop/releases/download/v" + $version + "
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-RestMethod -Uri $uri -OutFile $distSnap
snapcraft push $distSnap --release stable
snapcraft upload $distSnap --release stable

22
sign.js Normal file
View File

@ -0,0 +1,22 @@
/* eslint-disable @typescript-eslint/no-var-requires, no-console */
exports.default = async function (configuration) {
if (parseInt(process.env.ELECTRON_BUILDER_SIGN) === 1 && configuration.path.slice(-4) == ".exe") {
console.log(`[*] Signing file: ${configuration.path}`);
require("child_process").execSync(
`azuresigntool sign -v ` +
`-kvu ${process.env.SIGNING_VAULT_URL} ` +
`-kvi ${process.env.SIGNING_CLIENT_ID} ` +
`-kvt ${process.env.SIGNING_TENANT_ID} ` +
`-kvs ${process.env.SIGNING_CLIENT_SECRET} ` +
`-kvc ${process.env.SIGNING_CERT_NAME} ` +
`-fd ${configuration.hash} ` +
`-du ${configuration.site} ` +
`-tr http://timestamp.digicert.com ` +
`${configuration.path}`,
{
stdio: "inherit",
}
);
}
};

View File

@ -1,64 +1,93 @@
<div class="modal fade" tabindex="-1" role="dialog" aria-modal="true" attr.aria-label="{{'settings' | i18n}}">
<div class="modal-dialog" role="document">
<form class="modal-content" (ngSubmit)="submit()">
<div class="modal-body">
<div class="box">
<div class="box-header">
{{'selfHostedEnvironment' | i18n}}
</div>
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="baseUrl">{{'baseUrl' | i18n}}</label>
<input id="baseUrl" type="text" name="BaseUrl" [(ngModel)]="baseUrl"
placeholder="{{'ex' | i18n}} https://bitwarden.company.com">
</div>
</div>
<div class="box-footer">
{{'selfHostedEnvironmentFooter' | i18n}}
</div>
</div>
<div class="box">
<div class="box-header">
<button type="button" (click)="toggleCustom()" appA11yTitle="{{'toggleVisibility' | i18n}}">
<i class="fa fa-plus-square-o" [hidden]="showCustom" aria-hidden="true"></i>
<i class="fa fa-minus-square-o" [hidden]="!showCustom" aria-hidden="true"></i>
{{'customEnvironment' | i18n}}
</button>
</div>
<div class="box-content" [hidden]="!showCustom">
<div class="box-content-row" appBoxRow>
<label for="webVaultUrl">{{'webVaultUrl' | i18n}}</label>
<input id="webVaultUrl" type="text" name="WebVaultUrl" [(ngModel)]="webVaultUrl">
</div>
<div class="box-content-row" appBoxRow>
<label for="apiUrl">{{'apiUrl' | i18n}}</label>
<input id="apiUrl" type="text" name="ApiUrl" [(ngModel)]="apiUrl">
</div>
<div class="box-content-row" appBoxRow>
<label for="identityUrl">{{'identityUrl' | i18n}}</label>
<input id="identityUrl" type="text" name="IdentityUrl" [(ngModel)]="identityUrl">
</div>
<div class="box-content-row" appBoxRow>
<label for="notificationsUrl">{{'notificationsUrl' | i18n}}</label>
<input id="notificationsUrl" type="text" name="NotificationsUrl"
[(ngModel)]="notificationsUrl">
</div>
<div class="box-content-row" appBoxRow>
<label for="iconsUrl">{{'iconsUrl' | i18n}}</label>
<input id="iconsUrl" type="text" name="IconsUrl" [(ngModel)]="iconsUrl">
</div>
</div>
<div class="box-footer" [hidden]="!showCustom">
{{'customEnvironmentFooter' | i18n}}
</div>
</div>
<div class="modal fade" role="dialog" aria-modal="true" attr.aria-label="{{ 'settings' | i18n }}">
<div class="modal-dialog" role="document">
<form class="modal-content" (ngSubmit)="submit()">
<div class="modal-body">
<div class="box">
<div class="box-header">
{{ "selfHostedEnvironment" | i18n }}
</div>
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="baseUrl">{{ "baseUrl" | i18n }}</label>
<input
id="baseUrl"
type="text"
name="BaseUrl"
[(ngModel)]="baseUrl"
placeholder="{{ 'ex' | i18n }} https://bitwarden.company.com"
appInputVerbatim
/>
</div>
<div class="modal-footer">
<button appBlurClick type="submit" class="primary" appA11yTitle="{{'save' | i18n}}">
<i class="fa fa-save fa-lg fa-fw" aria-hidden="true"></i>
</button>
<button type="button" data-dismiss="modal">{{'close' | i18n}}</button>
</div>
<div class="box-footer">
{{ "selfHostedEnvironmentFooter" | i18n }}
</div>
</div>
<div class="box">
<div class="box-header">
<button type="button" (click)="toggleCustom()" [attr.aria-expanded]="showCustom">
<i class="bwi bwi-plus-square" [hidden]="showCustom" aria-hidden="true"></i>
<i class="bwi bwi-minus-square" [hidden]="!showCustom" aria-hidden="true"></i>
{{ "customEnvironment" | i18n }}
</button>
</div>
<div class="box-content" [hidden]="!showCustom">
<div class="box-content-row" appBoxRow>
<label for="webVaultUrl">{{ "webVaultUrl" | i18n }}</label>
<input
id="webVaultUrl"
type="text"
name="WebVaultUrl"
[(ngModel)]="webVaultUrl"
appInputVerbatim
/>
</div>
</form>
</div>
<div class="box-content-row" appBoxRow>
<label for="apiUrl">{{ "apiUrl" | i18n }}</label>
<input id="apiUrl" type="text" name="ApiUrl" [(ngModel)]="apiUrl" appInputVerbatim />
</div>
<div class="box-content-row" appBoxRow>
<label for="identityUrl">{{ "identityUrl" | i18n }}</label>
<input
id="identityUrl"
type="text"
name="IdentityUrl"
[(ngModel)]="identityUrl"
appInputVerbatim
/>
</div>
<div class="box-content-row" appBoxRow>
<label for="notificationsUrl">{{ "notificationsUrl" | i18n }}</label>
<input
id="notificationsUrl"
type="text"
name="NotificationsUrl"
[(ngModel)]="notificationsUrl"
appInputVerbatim
/>
</div>
<div class="box-content-row" appBoxRow>
<label for="iconsUrl">{{ "iconsUrl" | i18n }}</label>
<input
id="iconsUrl"
type="text"
name="IconsUrl"
[(ngModel)]="iconsUrl"
appInputVerbatim
/>
</div>
</div>
<div class="box-footer" [hidden]="!showCustom">
{{ "customEnvironmentFooter" | i18n }}
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="primary" appA11yTitle="{{ 'save' | i18n }}">
<i class="bwi bwi-save-changes bwi-lg bwi-fw" aria-hidden="true"></i>
</button>
<button type="button" data-dismiss="modal">{{ "close" | i18n }}</button>
</div>
</form>
</div>
</div>

View File

@ -1,18 +1,20 @@
import { Component } from '@angular/core';
import { Component } from "@angular/core";
import { EnvironmentService } from 'jslib/abstractions/environment.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { EnvironmentComponent as BaseEnvironmentComponent } from 'jslib/angular/components/environment.component';
import { EnvironmentComponent as BaseEnvironmentComponent } from "jslib-angular/components/environment.component";
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
@Component({
selector: 'app-environment',
templateUrl: 'environment.component.html',
selector: "app-environment",
templateUrl: "environment.component.html",
})
export class EnvironmentComponent extends BaseEnvironmentComponent {
constructor(platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,
i18nService: I18nService) {
super(platformUtilsService, environmentService, i18nService);
}
constructor(
platformUtilsService: PlatformUtilsService,
environmentService: EnvironmentService,
i18nService: I18nService
) {
super(platformUtilsService, environmentService, i18nService);
}
}

View File

@ -1,23 +1,31 @@
<form id="hint-page" #form (ngSubmit)="submit()" [appApiAction]="formPromise">
<div class="content">
<h1>{{'passwordHint' | i18n}}</h1>
<div class="box last">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{'emailAddress' | i18n}}</label>
<input id="email" type="text" name="Email" [(ngModel)]="email" required appAutofocus>
</div>
</div>
<div class="box-footer">
{{'enterEmailToGetHint' | i18n}}
</div>
</div>
<div class="buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading" appBlurClick>
<b [hidden]="form.loading">{{'submit' | i18n}}</b>
<i class="fa fa-spinner fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
<a routerLink="/login" class="btn block">{{'cancel' | i18n}}</a>
<div class="content">
<h1>{{ "passwordHint" | i18n }}</h1>
<div class="box last">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{ "emailAddress" | i18n }}</label>
<input
id="email"
type="text"
name="Email"
[(ngModel)]="email"
required
appAutofocus
appInputVerbatim
/>
</div>
</div>
<div class="box-footer">
{{ "enterEmailToGetHint" | i18n }}
</div>
</div>
<div class="buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading">
<b [hidden]="form.loading">{{ "submit" | i18n }}</b>
<i class="bwi bwi-spinner bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
<button type="button" routerLink="/login" class="btn block">{{ "cancel" | i18n }}</button>
</div>
</div>
</form>

View File

@ -1,19 +1,24 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { Component } from "@angular/core";
import { Router } from "@angular/router";
import { ApiService } from 'jslib/abstractions/api.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { HintComponent as BaseHintComponent } from 'jslib/angular/components/hint.component';
import { HintComponent as BaseHintComponent } from "jslib-angular/components/hint.component";
import { ApiService } from "jslib-common/abstractions/api.service";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { LogService } from "jslib-common/abstractions/log.service";
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
@Component({
selector: 'app-hint',
templateUrl: 'hint.component.html',
selector: "app-hint",
templateUrl: "hint.component.html",
})
export class HintComponent extends BaseHintComponent {
constructor(router: Router, platformUtilsService: PlatformUtilsService,
i18nService: I18nService, apiService: ApiService) {
super(router, i18nService, apiService, platformUtilsService);
}
constructor(
router: Router,
platformUtilsService: PlatformUtilsService,
i18nService: I18nService,
apiService: ApiService,
logService: LogService
) {
super(router, i18nService, apiService, platformUtilsService, logService);
}
}

View File

@ -1,40 +1,75 @@
<form id="lock-page" (ngSubmit)="submit()">
<div class="content">
<p aria-hidden="true"><i class="fa fa-lock fa-4x text-muted"></i></p>
<p>{{(pinLock ? 'yourVaultIsLockedPinCode' : 'yourVaultIsLocked') | i18n}}</p>
<div class="box last">
<div class="box-content">
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main" *ngIf="pinLock">
<label for="pin">{{'pin' | i18n}}</label>
<input id="pin" type="{{showPassword ? 'text' : 'password'}}" name="PIN" class="monospaced"
[(ngModel)]="pin" required appAutofocus>
</div>
<div class="row-main" *ngIf="!pinLock">
<label for="masterPassword">{{'masterPass' | i18n}}</label>
<input id="masterPassword" type="{{showPassword ? 'text' : 'password'}}" name="MasterPassword"
class="monospaced" [(ngModel)]="masterPassword" required appAutofocus>
</div>
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick appBlurClick role="button"
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword()">
<i class="fa fa-lg" aria-hidden="true"
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
</a>
</div>
</div>
</div>
<div class="box-footer">
{{'loggedInAsOn' | i18n : email : webVaultHostname}}
</div>
</div>
<div class="buttons">
<button type="submit" class="btn primary block" appBlurClick>
<i class="fa fa-unlock-alt" aria-hidden="true"></i> <b>{{'unlock' | i18n}}</b>
</button>
<button type="button" class="btn block" appBlurClick (click)="logOut()">
{{'logOut' | i18n}}
<div class="content">
<p aria-hidden="true"><i class="bwi bwi-lock bwi-4x text-muted"></i></p>
<p>{{ "yourVaultIsLocked" | i18n }}</p>
<div class="box last">
<div class="box-content">
<div class="box-content-row box-content-row-flex" appBoxRow *ngIf="!hideInput">
<div class="row-main" *ngIf="pinLock">
<label for="pin">{{ "pin" | i18n }}</label>
<input
id="pin"
type="{{ showPassword ? 'text' : 'password' }}"
name="PIN"
class="monospaced"
[(ngModel)]="pin"
required
appInputVerbatim
/>
</div>
<div class="row-main" *ngIf="!pinLock">
<label for="masterPassword">{{ "masterPass" | i18n }}</label>
<input
id="masterPassword"
type="{{ showPassword ? 'text' : 'password' }}"
name="MasterPassword"
class="monospaced"
[(ngModel)]="masterPassword"
required
appInputVerbatim
/>
</div>
<div class="action-buttons">
<button
type="button"
class="row-btn"
appStopClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
[attr.aria-pressed]="showPassword"
(click)="togglePassword()"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
></i>
</button>
</div>
</div>
</div>
<div class="box-footer">
{{ "loggedInAsOn" | i18n: email:webVaultHostname }}
</div>
</div>
<div class="buttons with-rows">
<div class="buttons-row" *ngIf="supportsBiometric && biometricLock">
<button
type="button"
class="btn block"
[ngClass]="{ 'primary font-weight-bold': hideInput }"
(click)="unlockBiometric()"
>
{{ biometricText | i18n }}
</button>
</div>
<div class="buttons-row">
<button type="submit" class="btn primary block" *ngIf="!hideInput">
<i class="bwi bwi-unlock" aria-hidden="true"></i> <b>{{ "unlock" | i18n }}</b>
</button>
<button type="button" class="btn block" (click)="logOut()">
{{ "logOut" | i18n }}
</button>
</div>
</div>
</div>
</form>

View File

@ -1,29 +1,107 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { Component, NgZone, OnDestroy } from "@angular/core";
import { ActivatedRoute, Router } from "@angular/router";
import { ipcRenderer } from "electron";
import { CryptoService } from 'jslib/abstractions/crypto.service';
import { EnvironmentService } from 'jslib/abstractions/environment.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { MessagingService } from 'jslib/abstractions/messaging.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { StateService } from 'jslib/abstractions/state.service';
import { StorageService } from 'jslib/abstractions/storage.service';
import { UserService } from 'jslib/abstractions/user.service';
import { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';
import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component";
import { ApiService } from "jslib-common/abstractions/api.service";
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
import { CryptoService } from "jslib-common/abstractions/crypto.service";
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service";
import { LogService } from "jslib-common/abstractions/log.service";
import { MessagingService } from "jslib-common/abstractions/messaging.service";
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
import { StateService } from "jslib-common/abstractions/state.service";
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
import { LockComponent as BaseLockComponent } from 'jslib/angular/components/lock.component';
const BroadcasterSubscriptionId = "LockComponent";
@Component({
selector: 'app-lock',
templateUrl: 'lock.component.html',
selector: "app-lock",
templateUrl: "lock.component.html",
})
export class LockComponent extends BaseLockComponent {
constructor(router: Router, i18nService: I18nService,
platformUtilsService: PlatformUtilsService, messagingService: MessagingService,
userService: UserService, cryptoService: CryptoService,
storageService: StorageService, vaultTimeoutService: VaultTimeoutService,
environmentService: EnvironmentService, stateService: StateService) {
super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,
storageService, vaultTimeoutService, environmentService, stateService);
}
export class LockComponent extends BaseLockComponent implements OnDestroy {
private deferFocus: boolean = null;
constructor(
router: Router,
i18nService: I18nService,
platformUtilsService: PlatformUtilsService,
messagingService: MessagingService,
cryptoService: CryptoService,
vaultTimeoutService: VaultTimeoutService,
environmentService: EnvironmentService,
stateService: StateService,
apiService: ApiService,
private route: ActivatedRoute,
private broadcasterService: BroadcasterService,
ngZone: NgZone,
logService: LogService,
keyConnectorService: KeyConnectorService
) {
super(
router,
i18nService,
platformUtilsService,
messagingService,
cryptoService,
vaultTimeoutService,
environmentService,
stateService,
apiService,
logService,
keyConnectorService,
ngZone
);
}
async ngOnInit() {
await super.ngOnInit();
const autoPromptBiometric = !(await this.stateService.getNoAutoPromptBiometrics());
this.route.queryParams.subscribe((params) => {
if (this.supportsBiometric && params.promptBiometric && autoPromptBiometric) {
setTimeout(async () => {
if (await ipcRenderer.invoke("windowVisible")) {
this.unlockBiometric();
}
}, 1000);
}
});
this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {
this.ngZone.run(() => {
switch (message.command) {
case "windowHidden":
this.onWindowHidden();
break;
case "windowIsFocused":
if (this.deferFocus === null) {
this.deferFocus = !message.windowIsFocused;
if (!this.deferFocus) {
this.focusInput();
}
} else if (this.deferFocus && message.windowIsFocused) {
this.focusInput();
this.deferFocus = false;
}
break;
default:
}
});
});
this.messagingService.send("getWindowIsFocused");
}
ngOnDestroy() {
this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);
}
onWindowHidden() {
this.showPassword = false;
}
private focusInput() {
document.getElementById(this.pinLock ? "pin" : "masterPassword").focus();
}
}

View File

@ -1,45 +1,104 @@
<form id="login-page" #form (ngSubmit)="submit()" [appApiAction]="formPromise" attr.aria-hidden="{{showingModal}}">
<div class="content">
<img class="logo-image" alt="Bitwarden">
<p class="lead">{{'loginOrCreateNewAccount' | i18n}}</p>
<div class="box last">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{'emailAddress' | i18n}}</label>
<input id="email" type="text" name="Email" [(ngModel)]="email" required>
</div>
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main">
<label for="masterPassword">{{'masterPass' | i18n}}</label>
<input id="masterPassword" type="{{showPassword ? 'text' : 'password'}}" name="MasterPassword"
class="monospaced" [(ngModel)]="masterPassword" required>
</div>
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick appBlurClick role="button"
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword()">
<i class="fa fa-lg" aria-hidden="true"
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
</a>
</div>
</div>
<div id="login-page">
<div class="login-header">
<button
type="button"
appStopClick
(click)="settings()"
class="environment-urls-settings-icon"
attr.aria-label="{{ 'settings' | i18n }}"
>
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
{{ "settings" | i18n }}
</button>
</div>
<form
id="login-page"
#form
(ngSubmit)="submit()"
[appApiAction]="formPromise"
attr.aria-hidden="{{ showingModal }}"
>
<div id="content" class="content">
<img class="logo-image" alt="Bitwarden" />
<p class="lead">{{ "loginOrCreateNewAccount" | i18n }}</p>
<div class="box last">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{ "emailAddress" | i18n }}</label>
<input
id="email"
type="text"
name="Email"
[(ngModel)]="email"
required
appInputVerbatim="false"
/>
</div>
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main">
<label for="masterPassword">{{ "masterPass" | i18n }}</label>
<input
id="masterPassword"
type="{{ showPassword ? 'text' : 'password' }}"
name="MasterPassword"
class="monospaced"
[(ngModel)]="masterPassword"
required
appInputVerbatim
/>
</div>
<div class="action-buttons">
<button
type="button"
class="row-btn"
appStopClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
[attr.aria-pressed]="showPassword"
(click)="togglePassword()"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
></i>
</button>
</div>
</div>
</div>
<div class="buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading" appBlurClick>
<b [hidden]="form.loading"><i class="fa fa-sign-in" aria-hidden="true"></i> {{'logIn' | i18n}}</b>
<i class="fa fa-spinner fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
<a routerLink="/register" class="btn block">
<i class="fa fa-pencil-square-o" aria-hidden="true"></i> {{'createAccount' | i18n}}
</a>
</div>
<div class="box last" [hidden]="!showCaptcha()">
<div class="box-content">
<div class="box-content-row">
<iframe id="hcaptcha_iframe" height="80"></iframe>
</div>
</div>
<div class="sub-options">
<a routerLink="/hint">{{'getMasterPasswordHint' | i18n}}</a>
</div>
<div class="buttons with-rows">
<div class="buttons-row">
<button type="submit" class="btn primary block" [disabled]="form.loading">
<b [hidden]="form.loading"
><i class="bwi bwi-sign-in" aria-hidden="true"></i> {{ "logIn" | i18n }}</b
>
<i class="bwi bwi-spinner bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
<button type="button" routerLink="/register" class="btn block">
<i class="bwi bwi-pencil-square" aria-hidden="true"></i> {{ "createAccount" | i18n }}
</button>
</div>
<a href="#" appStopClick (click)="settings()" class="settings-icon" attr.aria-label="{{'settings' | i18n}}">
<i class="fa fa-cog fa-lg" aria-hidden="true"></i><span
aria-hidden="true">&nbsp;{{'settings' | i18n}}</span>
</a>
<div class="buttons-row">
<button
type="button"
(click)="launchSsoBrowser('desktop', 'bitwarden://sso-callback')"
class="btn block"
>
<i class="bwi bwi-bank" aria-hidden="true"></i> {{ "enterpriseSingleSignOn" | i18n }}
</button>
</div>
</div>
<div class="sub-options">
<button type="button" routerLink="/hint">{{ "getMasterPasswordHint" | i18n }}</button>
</div>
</div>
</form>
</form>
</div>
<ng-template #environment></ng-template>

View File

@ -1,58 +1,128 @@
import {
Component,
ComponentFactoryResolver,
ViewChild,
ViewContainerRef,
} from '@angular/core';
import { Router } from '@angular/router';
import { Component, NgZone, OnDestroy, ViewChild, ViewContainerRef } from "@angular/core";
import { Router } from "@angular/router";
import { EnvironmentComponent } from './environment.component';
import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.component";
import { ModalService } from "jslib-angular/services/modal.service";
import { AuthService } from "jslib-common/abstractions/auth.service";
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service";
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { LogService } from "jslib-common/abstractions/log.service";
import { MessagingService } from "jslib-common/abstractions/messaging.service";
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
import { StateService } from "jslib-common/abstractions/state.service";
import { SyncService } from "jslib-common/abstractions/sync.service";
import { AuthService } from 'jslib/abstractions/auth.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { StateService } from 'jslib/abstractions/state.service';
import { StorageService } from 'jslib/abstractions/storage.service';
import { SyncService } from 'jslib/abstractions/sync.service';
import { EnvironmentComponent } from "./environment.component";
import { LoginComponent as BaseLoginComponent } from 'jslib/angular/components/login.component';
import { ModalComponent } from 'jslib/angular/components/modal.component';
const BroadcasterSubscriptionId = "LoginComponent";
@Component({
selector: 'app-login',
templateUrl: 'login.component.html',
selector: "app-login",
templateUrl: "login.component.html",
})
export class LoginComponent extends BaseLoginComponent {
@ViewChild('environment', { read: ViewContainerRef }) environmentModal: ViewContainerRef;
export class LoginComponent extends BaseLoginComponent implements OnDestroy {
@ViewChild("environment", { read: ViewContainerRef, static: true })
environmentModal: ViewContainerRef;
showingModal = false;
showingModal = false;
constructor(authService: AuthService, router: Router,
i18nService: I18nService, syncService: SyncService,
private componentFactoryResolver: ComponentFactoryResolver, storageService: StorageService,
platformUtilsService: PlatformUtilsService, stateService: StateService) {
super(authService, router, platformUtilsService, i18nService, storageService, stateService);
super.onSuccessfulLogin = () => {
return syncService.fullSync(true);
};
}
settings() {
const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);
const modal = this.environmentModal.createComponent(factory).instance;
modal.onShown.subscribe(() => {
this.showingModal = true;
});
modal.onClosed.subscribe(() => {
this.showingModal = false;
modal.onShown.unsubscribe();
modal.onClosed.unsubscribe();
});
const childComponent = modal.show<EnvironmentComponent>(EnvironmentComponent,
this.environmentModal);
childComponent.onSaved.subscribe(() => {
modal.close();
});
protected alwaysRememberEmail = true;
private deferFocus: boolean = null;
constructor(
authService: AuthService,
router: Router,
i18nService: I18nService,
syncService: SyncService,
private modalService: ModalService,
platformUtilsService: PlatformUtilsService,
stateService: StateService,
environmentService: EnvironmentService,
passwordGenerationService: PasswordGenerationService,
cryptoFunctionService: CryptoFunctionService,
private broadcasterService: BroadcasterService,
ngZone: NgZone,
private messagingService: MessagingService,
logService: LogService
) {
super(
authService,
router,
platformUtilsService,
i18nService,
stateService,
environmentService,
passwordGenerationService,
cryptoFunctionService,
logService,
ngZone
);
super.onSuccessfulLogin = () => {
return syncService.fullSync(true);
};
}
async ngOnInit() {
await super.ngOnInit();
this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {
this.ngZone.run(() => {
switch (message.command) {
case "windowHidden":
this.onWindowHidden();
break;
case "windowIsFocused":
if (this.deferFocus === null) {
this.deferFocus = !message.windowIsFocused;
if (!this.deferFocus) {
this.focusInput();
}
} else if (this.deferFocus && message.windowIsFocused) {
this.focusInput();
this.deferFocus = false;
}
break;
default:
}
});
});
this.messagingService.send("getWindowIsFocused");
}
ngOnDestroy() {
this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);
}
async settings() {
const [modal, childComponent] = await this.modalService.openViewRef(
EnvironmentComponent,
this.environmentModal
);
modal.onShown.subscribe(() => {
this.showingModal = true;
});
modal.onClosed.subscribe(() => {
this.showingModal = false;
});
childComponent.onSaved.subscribe(() => {
modal.close();
});
}
onWindowHidden() {
this.showPassword = false;
}
async submit() {
await super.submit();
if (this.captchaSiteKey) {
const content = document.getElementById("content") as HTMLDivElement;
content.setAttribute("style", "width:335px");
}
}
}

View File

@ -1,79 +1,89 @@
<div class="modal fade" tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="premiumTitle">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<div class="box">
<div class="box-header" id="premiumTitle">
{{'premiumMembership' | i18n}}
</div>
<div class="box-content box-content-padded">
<div *ngIf="!isPremium">
<p class="text-center lead">{{'premiumNotCurrentMember' | i18n}}</p>
<p>{{'premiumSignUpAndGet' | i18n}}</p>
<ul class="fa-ul">
<li>
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
{{'premiumSignUpStorage' | i18n}}
</li>
<li>
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
{{'premiumSignUpTwoStep' | i18n}}
</li>
<li>
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
{{'premiumSignUpReports' | i18n}}
</li>
<li>
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
{{'premiumSignUpTotp' | i18n}}
</li>
<li>
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
{{'premiumSignUpSupport' | i18n}}
</li>
<li>
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
{{'premiumSignUpFuture' | i18n}}
</li>
</ul>
<p class="text-center lead no-margin">
<span *ngIf="canMakeMacAppStorePayments">
{{'premiumPrice' | i18n : appStoreFormattedPrice}}
</span>
<span *ngIf="!canMakeMacAppStorePayments">
{{'premiumPrice' | i18n : (price | currency:'$')}}
</span>
</p>
</div>
<div *ngIf="isPremium">
<p class="text-center lead">{{'premiumCurrentMember' | i18n}}</p>
<p class="text-center">{{'premiumCurrentMemberThanks' | i18n}}</p>
</div>
</div>
</div>
<div class="modal fade" role="dialog" aria-modal="true" aria-labelledby="premiumTitle">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<div class="box">
<div class="box-header" id="premiumTitle">
{{ "premiumMembership" | i18n }}
</div>
<div class="box-content box-content-padded">
<div *ngIf="!isPremium">
<p class="text-center lead">{{ "premiumNotCurrentMember" | i18n }}</p>
<p>{{ "premiumSignUpAndGet" | i18n }}</p>
<ul class="bwi-ul">
<li>
<i class="bwi bwi-li bwi-check text-success" aria-hidden="true"></i>
{{ "premiumSignUpStorage" | i18n }}
</li>
<li>
<i class="bwi bwi-li bwi-check text-success" aria-hidden="true"></i>
{{ "premiumSignUpTwoStep" | i18n }}
</li>
<li>
<i class="bwi bwi-li bwi-check text-success" aria-hidden="true"></i>
{{ "premiumSignUpReports" | i18n }}
</li>
<li>
<i class="bwi bwi-li bwi-check text-success" aria-hidden="true"></i>
{{ "premiumSignUpTotp" | i18n }}
</li>
<li>
<i class="bwi bwi-li bwi-check text-success" aria-hidden="true"></i>
{{ "premiumSignUpSupport" | i18n }}
</li>
<li>
<i class="bwi bwi-li bwi-check text-success" aria-hidden="true"></i>
{{ "premiumSignUpFuture" | i18n }}
</li>
</ul>
<p class="text-center lead no-margin">
{{ "premiumPrice" | i18n: (price | currency: "$") }}
</p>
</div>
<div class="modal-footer">
<button type="button" class="primary" appBlurClick (click)="manage()" *ngIf="isPremium">
<b>{{'premiumManage' | i18n}}</b>
</button>
<button #purchaseBtn type="button" class="primary" appBlurClick (click)="purchase()" *ngIf="!isPremium"
[disabled]="purchaseBtn.loading" [appApiAction]="purchasePromise">
<b>{{'premiumPurchase' | i18n}}</b>
</button>
<button type="button" data-dismiss="modal">{{'close' | i18n}}</button>
<div class="right" *ngIf="!isPremium">
<button #restoreBtn type="button" appBlurClick (click)="restore()" *ngIf="canRestorePurchase"
[disabled]="restoreBtn.loading" [appApiAction]="restorePromise">
{{'restore' | i18n}}
</button>
<button #refreshBtn type="button" appBlurClick (click)="refresh()" [disabled]="refreshBtn.loading"
appA11yTitle="{{'premiumRefresh' | i18n}}" [appApiAction]="refreshPromise">
<i class="fa fa-refresh fa-lg fa-fw" [hidden]="refreshBtn.loading" aria-hidden="true"></i>
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!refreshBtn.loading"
aria-hidden="true"></i>
</button>
</div>
<div *ngIf="isPremium">
<p class="text-center lead">{{ "premiumCurrentMember" | i18n }}</p>
<p class="text-center">{{ "premiumCurrentMemberThanks" | i18n }}</p>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="primary" (click)="manage()" *ngIf="isPremium">
<b>{{ "premiumManage" | i18n }}</b>
</button>
<button
#purchaseBtn
type="button"
class="primary"
(click)="purchase()"
*ngIf="!isPremium"
[disabled]="purchaseBtn.loading"
>
<b>{{ "premiumPurchase" | i18n }}</b>
</button>
<button type="button" data-dismiss="modal">{{ "close" | i18n }}</button>
<div class="right" *ngIf="!isPremium">
<button
#refreshBtn
type="button"
(click)="refresh()"
[disabled]="refreshBtn.loading"
appA11yTitle="{{ 'premiumRefresh' | i18n }}"
[appApiAction]="refreshPromise"
>
<i
class="bwi bwi-refresh bwi-lg bwi-fw"
[hidden]="refreshBtn.loading"
aria-hidden="true"
></i>
<i
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
[hidden]="!refreshBtn.loading"
aria-hidden="true"
></i>
</button>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,216 +1,24 @@
import { remote } from 'electron';
import * as fs from 'fs';
import { Component } from "@angular/core";
import {
Component,
NgZone,
} from '@angular/core';
import { ApiService } from 'jslib/abstractions/api.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { MessagingService } from 'jslib/abstractions/messaging.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { SyncService } from 'jslib/abstractions/sync.service';
import { TokenService } from 'jslib/abstractions/token.service';
import { PremiumComponent as BasePremiumComponent } from 'jslib/angular/components/premium.component';
import { PaymentMethodType } from 'jslib/enums/paymentMethodType';
import { IapCheckRequest } from 'jslib/models/request/iapCheckRequest';
import { Utils } from 'jslib/misc/utils';
const AppStorePremiumPlan = 'premium_annually';
import { PremiumComponent as BasePremiumComponent } from "jslib-angular/components/premium.component";
import { ApiService } from "jslib-common/abstractions/api.service";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { LogService } from "jslib-common/abstractions/log.service";
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
import { StateService } from "jslib-common/abstractions/state.service";
@Component({
selector: 'app-premium',
templateUrl: 'premium.component.html',
selector: "app-premium",
templateUrl: "premium.component.html",
})
export class PremiumComponent extends BasePremiumComponent {
purchasePromise: Promise<any>;
restorePromise: Promise<any>;
canMakeMacAppStorePayments = false;
appStoreFormattedPrice = '$14.99';
canRestorePurchase = false;
private makingPremiumAfterPurchase = false;
constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,
tokenService: TokenService, apiService: ApiService,
private ngZone: NgZone, private messagingService: MessagingService,
private syncService: SyncService) {
super(i18nService, platformUtilsService, tokenService, apiService);
}
async ngOnInit() {
await super.ngOnInit();
const isMacAppStore = this.platformUtilsService.isMacAppStore();
if (isMacAppStore) {
this.canMakeMacAppStorePayments = remote.inAppPurchase.canMakePayments();
}
if (this.isPremium || !isMacAppStore || !this.canMakeMacAppStorePayments) {
return;
}
const pricePromise = new Promise((resolve) => {
remote.inAppPurchase.getProducts([AppStorePremiumPlan], (products) => {
this.ngZone.run(() => {
if (products == null || !Array.isArray(products) || products.length === 0) {
return;
}
this.appStoreFormattedPrice = products[0].formattedPrice;
resolve();
});
});
});
this.setCanRestorePurchase();
remote.inAppPurchase.on('transactions-updated', (event, transactions) => {
this.ngZone.run(async () => {
if (transactions == null || !Array.isArray(transactions)) {
return;
}
// Check each transaction.
transactions.forEach(async (transaction) => {
const payment = transaction.payment;
switch (transaction.transactionState) {
case 'purchasing':
// tslint:disable-next-line
console.log(`Purchasing ${payment.productIdentifier}...`);
break;
case 'purchased':
// tslint:disable-next-line
console.log(`${payment.productIdentifier} purchased.`);
if (this.makingPremiumAfterPurchase || payment.productIdentifier !== AppStorePremiumPlan) {
return;
}
try {
this.makingPremiumAfterPurchase = true;
await this.makePremium(false);
} catch { }
this.makingPremiumAfterPurchase = false;
// Finish the transaction.
remote.inAppPurchase.finishTransactionByDate(transaction.transactionDate);
break;
case 'failed':
// tslint:disable-next-line
console.log(`Failed to purchase ${payment.productIdentifier}. ` +
`${transaction.errorCode} = ${transaction.errorMessage}`);
if (transaction.errorCode !== 2) {
this.platformUtilsService.showToast('error', null, transaction.errorMessage);
}
// Finish the transaction.
remote.inAppPurchase.finishTransactionByDate(transaction.transactionDate);
break;
case 'restored':
// tslint:disable-next-line
console.log(`The purchase of ${payment.productIdentifier} has been restored.`);
break;
case 'deferred':
// tslint:disable-next-line
console.log(`The purchase of ${payment.productIdentifier} has been deferred.`);
break;
default:
break;
}
});
});
});
}
async purchase() {
if (this.isPremium || !this.canMakeMacAppStorePayments) {
await super.purchase();
return;
}
try {
const request = new IapCheckRequest();
request.paymentMethodType = PaymentMethodType.AppleInApp;
this.purchasePromise = this.apiService.postIapCheck(request);
await this.purchasePromise;
remote.inAppPurchase.purchaseProduct(AppStorePremiumPlan, 1, (isValid) => {
if (!isValid) {
// TODO?
}
});
} catch { }
}
async restore() {
if (this.isPremium || !this.canMakeMacAppStorePayments) {
return;
}
let makePremium = false;
try {
const request = new IapCheckRequest();
request.paymentMethodType = PaymentMethodType.AppleInApp;
this.restorePromise = this.apiService.postIapCheck(request);
await this.restorePromise;
makePremium = true;
} catch { }
if (makePremium) {
await this.makePremium(true);
}
}
async manage() {
if (!this.canMakeMacAppStorePayments || this.getReceiptUrl() == null) {
await super.manage();
return;
}
const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('premiumManageAlertAppStore'),
this.i18nService.t('premiumManage'), this.i18nService.t('yes'), this.i18nService.t('cancel'));
if (confirmed) {
this.platformUtilsService.launchUri('itms-apps://apps.apple.com/account/subscriptions');
}
}
private async makePremium(restore: boolean) {
const receiptUrl = this.getReceiptUrl();
const receiptBuffer = fs.readFileSync(receiptUrl);
const receiptB64 = Utils.fromBufferToB64(receiptBuffer);
const fd = new FormData();
fd.append('paymentMethodType', '6');
fd.append('paymentToken', receiptB64);
fd.append('additionalStorageGb', '0');
try {
const p = this.apiService.postPremium(fd).then((paymentResponse) => {
if (paymentResponse.success) {
return this.finalizePremium();
}
});
if (restore) {
this.restorePromise = p;
await this.restorePromise;
} else {
this.purchasePromise = p;
await this.purchasePromise;
}
} catch { }
}
private async finalizePremium() {
await this.apiService.refreshIdentityToken();
await this.syncService.fullSync(true);
this.platformUtilsService.showToast('success', null, this.i18nService.t('premiumUpdated'));
this.messagingService.send('purchasedPremium');
this.isPremium = this.tokenService.getPremium();
this.setCanRestorePurchase();
}
private setCanRestorePurchase() {
if (!this.isPremium && this.canMakeMacAppStorePayments) {
const receiptUrl = this.getReceiptUrl();
this.canRestorePurchase = receiptUrl != null;
} else {
this.canRestorePurchase = false;
}
}
private getReceiptUrl(): string {
const receiptUrl = remote.inAppPurchase.getReceiptURL();
if (receiptUrl != null) {
return fs.existsSync(receiptUrl) ? receiptUrl : null;
}
return null;
}
constructor(
i18nService: I18nService,
platformUtilsService: PlatformUtilsService,
apiService: ApiService,
logService: LogService,
stateService: StateService
) {
super(i18nService, platformUtilsService, apiService, logService, stateService);
}
}

View File

@ -1,77 +1,148 @@
<form id="register-page" #form (ngSubmit)="submit()" [appApiAction]="formPromise">
<div class="content">
<h1>{{'createAccount' | i18n}}</h1>
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{'emailAddress' | i18n}}</label>
<input id="email" type="text" name="Email" [(ngModel)]="email" required
[appAutofocus]="email === ''">
</div>
<div class="box-content-row" appBoxRow>
<div class="box-content-row-flex">
<div class="row-main">
<label for="masterPassword">
{{'masterPass' | i18n}}
<strong class="sub-label text-{{masterPasswordScoreColor}}"
*ngIf="masterPasswordScoreText">
{{masterPasswordScoreText}}
</strong>
</label>
<input id="masterPassword" type="{{showPassword ? 'text' : 'password'}}"
name="MasterPassword" class="monospaced" [(ngModel)]="masterPassword" required
[appAutofocus]="email !== ''" (input)="updatePasswordStrength()">
</div>
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick appBlurClick role="button"
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword(false)">
<i class="fa fa-lg" aria-hidden="true"
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
</a>
</div>
</div>
<div class="progress">
<div class="progress-bar bg-{{masterPasswordScoreColor}}" role="progressbar" aria-valuenow="0"
aria-valuemin="0" aria-valuemax="100" [ngStyle]="{width: (masterPasswordScoreWidth + '%')}"
attr.aria-valuenow="{{masterPasswordScoreWidth}}"></div>
</div>
</div>
</div>
<div class="box-footer">
{{'masterPassDesc' | i18n}}
</div>
<div class="content">
<h1>{{ "createAccount" | i18n }}</h1>
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{ "emailAddress" | i18n }}</label>
<input
id="email"
type="text"
name="Email"
[(ngModel)]="email"
required
[appAutofocus]="email === ''"
appInputVerbatim
/>
</div>
<div class="box last">
<div class="box-content">
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main">
<label for="masterPasswordRetype">{{'reTypeMasterPass' | i18n}}</label>
<input id="masterPasswordRetype" type="{{showPassword ? 'text' : 'password'}}"
name="MasterPasswordRetype" class="monospaced" [(ngModel)]="confirmMasterPassword" required>
</div>
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick appBlurClick role="button"
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword(true)">
<i class="fa fa-lg" aria-hidden="true"
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
</a>
</div>
</div>
<div class="box-content-row" appBoxRow>
<label for="hint">{{'masterPassHint' | i18n}}</label>
<input id="hint" type="text" name="Hint" [(ngModel)]="hint">
</div>
<div class="box-content-row" appBoxRow>
<div class="box-content-row-flex">
<div class="row-main">
<label for="masterPassword">
{{ "masterPass" | i18n }}
<strong
class="sub-label text-{{ masterPasswordScoreColor }}"
*ngIf="masterPasswordScoreText"
>
{{ masterPasswordScoreText }}
</strong>
</label>
<input
id="masterPassword"
type="{{ showPassword ? 'text' : 'password' }}"
name="MasterPassword"
class="monospaced"
[(ngModel)]="masterPassword"
required
[appAutofocus]="email !== ''"
(input)="updatePasswordStrength()"
appInputVerbatim
/>
</div>
<div class="box-footer">
{{'masterPassHintDesc' | i18n}}
<div class="action-buttons">
<button
type="button"
class="row-btn"
appStopClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
[attr.aria-pressed]="showPassword"
(click)="togglePassword(false)"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
></i>
</button>
</div>
</div>
<div class="progress">
<div
class="progress-bar bg-{{ masterPasswordScoreColor }}"
role="progressbar"
aria-valuenow="0"
aria-valuemin="0"
aria-valuemax="100"
[ngStyle]="{ width: masterPasswordScoreWidth + '%' }"
attr.aria-valuenow="{{ masterPasswordScoreWidth }}"
></div>
</div>
</div>
<div class="buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading" appBlurClick>
<b [hidden]="form.loading">{{'submit' | i18n}}</b>
<i class="fa fa-spinner fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
<a routerLink="/login" class="btn block">{{'cancel' | i18n}}</a>
</div>
</div>
<div class="box-footer">
{{ "masterPassDesc" | i18n }}
</div>
</div>
<div class="box">
<div class="box-content">
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main">
<label for="masterPasswordRetype">{{ "reTypeMasterPass" | i18n }}</label>
<input
id="masterPasswordRetype"
type="{{ showPassword ? 'text' : 'password' }}"
name="MasterPasswordRetype"
class="monospaced"
[(ngModel)]="confirmMasterPassword"
required
appInputVerbatim
/>
</div>
<div class="action-buttons">
<button
type="button"
class="row-btn"
appStopClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
[attr.aria-pressed]="showPassword"
(click)="togglePassword(true)"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
></i>
</button>
</div>
</div>
<div class="box-content-row" appBoxRow>
<label for="hint">{{ "masterPassHint" | i18n }}</label>
<input id="hint" type="text" name="Hint" [(ngModel)]="hint" />
</div>
<div class="box-content-row" [hidden]="!showCaptcha()">
<iframe id="hcaptcha_iframe" height="80"></iframe>
</div>
</div>
<div class="box-footer">
{{ "masterPassHintDesc" | i18n }}
</div>
</div>
<div class="box last" *ngIf="showTerms">
<div class="box-footer checkbox">
<input
type="checkbox"
id="acceptPolicies"
[(ngModel)]="acceptPolicies"
name="AcceptPolicies"
/>
<label for="acceptPolicies">
{{ "acceptPolicies" | i18n }}<br />
<a href="https://bitwarden.com/terms/" target="_blank" rel="noopener">{{
"termsOfService" | i18n
}}</a
>,
<a href="https://bitwarden.com/privacy/" target="_blank" rel="noopener">{{
"privacyPolicy" | i18n
}}</a>
</label>
</div>
</div>
<div class="buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading">
<b [hidden]="form.loading">{{ "submit" | i18n }}</b>
<i class="bwi bwi-spinner bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
<button type="button" routerLink="/login" class="btn block">{{ "cancel" | i18n }}</button>
</div>
</div>
</form>

View File

@ -1,26 +1,73 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { Component, NgZone, OnDestroy, OnInit } from "@angular/core";
import { Router } from "@angular/router";
import { ApiService } from 'jslib/abstractions/api.service';
import { AuthService } from 'jslib/abstractions/auth.service';
import { CryptoService } from 'jslib/abstractions/crypto.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { StateService } from 'jslib/abstractions/state.service';
import { RegisterComponent as BaseRegisterComponent } from "jslib-angular/components/register.component";
import { ApiService } from "jslib-common/abstractions/api.service";
import { AuthService } from "jslib-common/abstractions/auth.service";
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
import { CryptoService } from "jslib-common/abstractions/crypto.service";
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { LogService } from "jslib-common/abstractions/log.service";
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
import { StateService } from "jslib-common/abstractions/state.service";
import { RegisterComponent as BaseRegisterComponent } from 'jslib/angular/components/register.component';
const BroadcasterSubscriptionId = "RegisterComponent";
@Component({
selector: 'app-register',
templateUrl: 'register.component.html',
selector: "app-register",
templateUrl: "register.component.html",
})
export class RegisterComponent extends BaseRegisterComponent {
constructor(authService: AuthService, router: Router,
i18nService: I18nService, cryptoService: CryptoService,
apiService: ApiService, stateService: StateService,
platformUtilsService: PlatformUtilsService, passwordGenerationService: PasswordGenerationService) {
super(authService, router, i18nService, cryptoService, apiService, stateService, platformUtilsService,
passwordGenerationService);
}
export class RegisterComponent extends BaseRegisterComponent implements OnInit, OnDestroy {
constructor(
authService: AuthService,
router: Router,
i18nService: I18nService,
cryptoService: CryptoService,
apiService: ApiService,
stateService: StateService,
platformUtilsService: PlatformUtilsService,
passwordGenerationService: PasswordGenerationService,
environmentService: EnvironmentService,
private broadcasterService: BroadcasterService,
private ngZone: NgZone,
logService: LogService
) {
super(
authService,
router,
i18nService,
cryptoService,
apiService,
stateService,
platformUtilsService,
passwordGenerationService,
environmentService,
logService
);
}
async ngOnInit() {
this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {
this.ngZone.run(() => {
switch (message.command) {
case "windowHidden":
this.onWindowHidden();
break;
default:
}
});
});
super.ngOnInit();
}
ngOnDestroy() {
this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);
}
onWindowHidden() {
this.showPassword = false;
}
}

View File

@ -0,0 +1,26 @@
<div id="remove-password-page" *ngIf="!loading">
<div class="content">
<h1>{{ "removeMasterPassword" | i18n }}</h1>
<p>{{ "convertOrganizationEncryptionDesc" | i18n: organization.name }}</p>
<div class="buttons">
<button
type="submit"
class="btn primary block"
[disabled]="actionPromise"
(click)="convert()"
>
<b [hidden]="continuing">{{ "removeMasterPassword" | i18n }}</b>
<i class="bwi bwi-spinner bwi-spin" [hidden]="!continuing" aria-hidden="true"></i>
</button>
<button
type="button"
class="btn secondary block"
[disabled]="actionPromise"
(click)="leave()"
>
<b [hidden]="leaving">{{ "leaveOrganization" | i18n }}</b>
<i class="bwi bwi-spinner bwi-spin" [hidden]="!leaving" aria-hidden="true"></i>
</button>
</div>
</div>
</div>

View File

@ -0,0 +1,9 @@
import { Component } from "@angular/core";
import { RemovePasswordComponent as BaseRemovePasswordComponent } from "jslib-angular/components/remove-password.component";
@Component({
selector: "app-remove-password",
templateUrl: "remove-password.component.html",
})
export class RemovePasswordComponent extends BaseRemovePasswordComponent {}

View File

@ -0,0 +1,157 @@
<form id="set-password-page" #form>
<div class="content">
<img class="logo-image" alt="Bitwarden" />
<p class="lead">{{ "setMasterPassword" | i18n }}</p>
<div class="box text-center" *ngIf="syncLoading">
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
{{ "loading" | i18n }}
</div>
<div *ngIf="!syncLoading">
<div class="box">
<app-callout type="tip">{{ "ssoCompleteRegistration" | i18n }}</app-callout>
<app-callout
type="warning"
title="{{ 'resetPasswordPolicyAutoEnroll' | i18n }}"
*ngIf="resetPasswordAutoEnroll"
>
{{ "resetPasswordAutoEnrollInviteWarning" | i18n }}
</app-callout>
<app-callout
type="info"
[enforcedPolicyOptions]="enforcedPolicyOptions"
*ngIf="enforcedPolicyOptions"
>
</app-callout>
</div>
<form
#form
(ngSubmit)="submit()"
[appApiAction]="formPromise"
ngNativeValidate
autocomplete="off"
>
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<div class="box-content-row-flex">
<div class="row-main">
<label for="masterPassword"
>{{ "masterPass" | i18n }}
<strong
class="sub-label text-{{ masterPasswordScoreColor }}"
*ngIf="masterPasswordScoreText"
>
{{ masterPasswordScoreText }}
</strong>
</label>
<input
id="masterPassword"
type="{{ showPassword ? 'text' : 'password' }}"
name="MasterPassword"
class="monospaced"
[(ngModel)]="masterPassword"
required
(input)="updatePasswordStrength()"
appInputVerbatim
/>
</div>
<div class="action-buttons">
<button
type="button"
class="row-btn"
appStopClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
[attr.aria-pressed]="showPassword"
(click)="togglePassword(false)"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
></i>
</button>
</div>
</div>
<div class="progress">
<div
class="progress-bar bg-{{ masterPasswordScoreColor }}"
role="progressbar"
aria-valuenow="0"
aria-valuemin="0"
aria-valuemax="100"
[ngStyle]="{ width: masterPasswordScoreWidth + '%' }"
attr.aria-valuenow="{{ masterPasswordScoreWidth }}"
></div>
</div>
</div>
</div>
<div class="box-footer">
{{ "masterPassDesc" | i18n }}
</div>
</div>
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<div class="box-content-row-flex">
<div class="row-main">
<label for="masterPasswordRetype">{{ "reTypeMasterPass" | i18n }}</label>
<input
id="masterPasswordRetype"
type="password"
name="MasterPasswordRetype"
class="monospaced"
[(ngModel)]="masterPasswordRetype"
required
appInputVerbatim
autocomplete="new-password"
/>
</div>
<div class="action-buttons">
<button
type="button"
class="row-btn"
appStopClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
[attr.aria-pressed]="showPassword"
(click)="togglePassword(true)"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="box last">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="hint">{{ "masterPassHint" | i18n }}</label>
<input id="hint" type="text" name="Hint" [(ngModel)]="hint" />
</div>
</div>
<div class="box-footer">
{{ "masterPassHintDesc" | i18n }}
</div>
</div>
<div class="buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading">
<i
*ngIf="form.loading"
class="bwi bwi-spinner bwi-spin"
title="{{ 'loading' | i18n }}"
aria-hidden="true"
></i>
<span>{{ "submit" | i18n }}</span>
</button>
<button class="btn block" (click)="logOut()">
<span>{{ "logOut" | i18n }}</span>
</button>
</div>
</form>
</div>
</div>
</form>

Some files were not shown because too many files have changed in this diff Show More