@networkpro/web 1.15.3 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/build-and-publish.yml +3 -3
- package/.github/workflows/lighthouse.yml +1 -1
- package/.github/workflows/playwright.yml +1 -1
- package/.github/workflows/publish-test.yml +3 -3
- package/.github/workflows/templates/publish.template.yml +3 -3
- package/.svelte-kit/tsconfig.json +3 -0
- package/CHANGELOG.md +59 -1
- package/CODE_OF_CONDUCT.md +173 -0
- package/CONTRIBUTING.md +214 -0
- package/package.json +12 -12
- package/src/app.html +1 -1
- package/src/lib/components/Badges.svelte +2 -1
- package/src/lib/components/Logo.svelte +6 -5
- package/src/lib/components/layout/Footer.svelte +4 -18
- package/src/lib/data/fossData.js +10 -10
- package/src/lib/pages/LicenseContent.svelte +6 -16
- package/src/lib/styles/css/default.css +12 -0
- package/src/lib/styles/css/style.css +5 -3
- package/src/lib/styles/global.min.css +1 -1
- package/src/routes/consultation/+page.svelte +1 -1
- package/src/routes/pgp/[key]/+server.js +1 -1
- package/stylelint.config.js +6 -0
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
- name: Upgrade npm
|
|
50
50
|
run: |
|
|
51
51
|
corepack enable
|
|
52
|
-
npm install -g npm@11.
|
|
52
|
+
npm install -g npm@11.5.2
|
|
53
53
|
|
|
54
54
|
- name: Install Node.js dependencies
|
|
55
55
|
run: npm ci
|
|
@@ -128,7 +128,7 @@ jobs:
|
|
|
128
128
|
- name: Upgrade npm
|
|
129
129
|
run: |
|
|
130
130
|
corepack enable
|
|
131
|
-
npm install -g npm@11.
|
|
131
|
+
npm install -g npm@11.5.2
|
|
132
132
|
|
|
133
133
|
- name: Install Node.js dependencies
|
|
134
134
|
run: npm ci
|
|
@@ -189,7 +189,7 @@ jobs:
|
|
|
189
189
|
- name: Upgrade npm
|
|
190
190
|
run: |
|
|
191
191
|
corepack enable
|
|
192
|
-
npm install -g npm@11.
|
|
192
|
+
npm install -g npm@11.5.2
|
|
193
193
|
|
|
194
194
|
- name: Install Node.js dependencies
|
|
195
195
|
run: npm ci
|
|
@@ -47,7 +47,7 @@ jobs:
|
|
|
47
47
|
- name: Upgrade npm
|
|
48
48
|
run: |
|
|
49
49
|
corepack enable
|
|
50
|
-
npm install -g npm@11.
|
|
50
|
+
npm install -g npm@11.5.2
|
|
51
51
|
|
|
52
52
|
- name: Install Node.js dependencies
|
|
53
53
|
run: npm ci
|
|
@@ -126,7 +126,7 @@ jobs:
|
|
|
126
126
|
- name: Upgrade npm
|
|
127
127
|
run: |
|
|
128
128
|
corepack enable
|
|
129
|
-
npm install -g npm@11.
|
|
129
|
+
npm install -g npm@11.5.2
|
|
130
130
|
|
|
131
131
|
- name: Install Node.js dependencies
|
|
132
132
|
run: npm ci
|
|
@@ -187,7 +187,7 @@ jobs:
|
|
|
187
187
|
- name: Upgrade npm
|
|
188
188
|
run: |
|
|
189
189
|
corepack enable
|
|
190
|
-
npm install -g npm@11.
|
|
190
|
+
npm install -g npm@11.5.2
|
|
191
191
|
|
|
192
192
|
- name: Install Node.js dependencies
|
|
193
193
|
run: npm ci
|
|
@@ -57,7 +57,7 @@ jobs:
|
|
|
57
57
|
- name: Upgrade npm
|
|
58
58
|
run: |
|
|
59
59
|
corepack enable
|
|
60
|
-
npm install -g npm@11.
|
|
60
|
+
npm install -g npm@11.5.2
|
|
61
61
|
|
|
62
62
|
- name: Install Node.js dependencies
|
|
63
63
|
run: npm ci
|
|
@@ -136,7 +136,7 @@ jobs:
|
|
|
136
136
|
- name: Upgrade npm
|
|
137
137
|
run: |
|
|
138
138
|
corepack enable
|
|
139
|
-
npm install -g npm@11.
|
|
139
|
+
npm install -g npm@11.5.2
|
|
140
140
|
|
|
141
141
|
- name: Install Node.js dependencies
|
|
142
142
|
run: npm ci
|
|
@@ -197,7 +197,7 @@ jobs:
|
|
|
197
197
|
- name: Upgrade npm
|
|
198
198
|
run: |
|
|
199
199
|
corepack enable
|
|
200
|
-
npm install -g npm@11.
|
|
200
|
+
npm install -g npm@11.5.2
|
|
201
201
|
|
|
202
202
|
- name: Install Node.js dependencies
|
|
203
203
|
run: npm ci
|
package/CHANGELOG.md
CHANGED
|
@@ -22,6 +22,62 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
+
## [1.16.0] - 2025-07-31
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- Added `CODE_OF_CONDUCT.md` and `CONTRIBUTING.md` to project root to provide instructions for contributing.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- Bumped version to `v1.16.0`.
|
|
34
|
+
- Updated generator metadata in `app.html` to reflect `SvelteKit 2.27.0`.
|
|
35
|
+
- Added `vercel.json` to `.gitignore`.
|
|
36
|
+
- Added additional rule overrides to `stylelint.config.js` to suppress unnecessarily strict linting errors
|
|
37
|
+
- The errors were corrected and the rule overrides are currently commented out
|
|
38
|
+
- Updated `npm` to `11.5.2` in the following files in `.github/workflows`
|
|
39
|
+
- `build-and-publish.yml`
|
|
40
|
+
- `lighthouse.yml`
|
|
41
|
+
- `playwright.yml`
|
|
42
|
+
- `publish-test.ml`
|
|
43
|
+
- `templates/publish.template.yml`
|
|
44
|
+
- Upgraded dependencies:
|
|
45
|
+
- `@eslint/js` `^9.31.0` → `^9.32.0`
|
|
46
|
+
- `@sveltejs/kit` `2.25.1` → `2.27.0`
|
|
47
|
+
- `@testing-library/jest-dom` `^6.6.3` → `^6.6.4`
|
|
48
|
+
- `eslint` `^9.31.0` → `^9.32.0`
|
|
49
|
+
- `eslint-plugin-jsdoc` `^51.4.1` → `^52.0.2`
|
|
50
|
+
- `posthog-js` `^1.257.0` → `^1.258.4`
|
|
51
|
+
- `stylelint` `^16.22.0` → `^16.23.0`
|
|
52
|
+
- `stylelint-config-recommended` `^16.0.0` → `^17.0.0`
|
|
53
|
+
- `svelte` `5.36.12` → `5.37.2`
|
|
54
|
+
- `typescript` `^5.8.3` → `^5.9.2`
|
|
55
|
+
- `vite` `^7.0.5` → `^7.0.6`
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
|
|
59
|
+
- Corrected deprecated CSS usage throughout the project in the following files:
|
|
60
|
+
- `src/lib/components/Badges.svelte`
|
|
61
|
+
- `src/lib/components/Logo.svelte`
|
|
62
|
+
- `src/lib/components/layout/Footer.svelte`
|
|
63
|
+
- `src/lib/pages/LicenseContent.svelte`
|
|
64
|
+
- `src/lib/styles/css/default.css`
|
|
65
|
+
- `src/lib/styles/css/styles.css`
|
|
66
|
+
- `src/routes/consultation/+page.svelte`
|
|
67
|
+
- Generated new `global.min.css` stylesheet with LightningCSS.
|
|
68
|
+
- Resolved `svelte-check` type error in `PGP key download endpoint` by replacing Node.js `Buffer` with a standards-compliant `Uint8Array` in the `Response()` constructor.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## [1.15.4] - 2025-07-20
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
|
|
76
|
+
- Bumped version to `v1.15.4`
|
|
77
|
+
- **Updated "Copy SMS Code - OTP Helper" entry** in `src/lib/data/fossData.js` to maintain visual consistency with previous "FOSS Spotlight" entries
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
25
81
|
## [1.15.3] - 2025-07-20
|
|
26
82
|
|
|
27
83
|
### Added
|
|
@@ -696,7 +752,9 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
696
752
|
|
|
697
753
|
<!-- Link references -->
|
|
698
754
|
|
|
699
|
-
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.
|
|
755
|
+
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.16.0...HEAD
|
|
756
|
+
[1.16.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.16.0
|
|
757
|
+
[1.15.4]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.15.4
|
|
700
758
|
[1.15.3]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.15.3
|
|
701
759
|
[1.15.2]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.15.2
|
|
702
760
|
[1.15.1]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.15.1
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
<!-- =========================================================================
|
|
2
|
+
CODE_OF_CONDUCT.md
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== -->
|
|
8
|
+
|
|
9
|
+
<a name="top"></a>
|
|
10
|
+
|
|
11
|
+
[SPDX-License-Identifier](https://spdx.dev/learn/handling-license-info/):
|
|
12
|
+
`CC-BY-4.0 OR GPL-3.0-or-later`
|
|
13
|
+
|
|
14
|
+
# Contributor Covenant Code of Conduct
|
|
15
|
+
|
|
16
|
+
**Network Pro Strategies**
|
|
17
|
+
**Effective Date:** March 21, 2025
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Contents
|
|
22
|
+
|
|
23
|
+
- [Our Pledge](#pledge)
|
|
24
|
+
- [Our Standards](#standards)
|
|
25
|
+
- [Responsibilities](#response)
|
|
26
|
+
- [Scope](#scope)
|
|
27
|
+
- [Enforcement](#enforce)
|
|
28
|
+
- [Attribution](#attribute)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
<section id="pledge">
|
|
33
|
+
|
|
34
|
+
## Our Pledge
|
|
35
|
+
|
|
36
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
37
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
38
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
39
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
40
|
+
nationality, personal appearance, race, caste, color, religion, or sexual
|
|
41
|
+
identity and orientation.
|
|
42
|
+
|
|
43
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
44
|
+
diverse, inclusive, and healthy community.
|
|
45
|
+
|
|
46
|
+
</section>
|
|
47
|
+
|
|
48
|
+
<section id="standards">
|
|
49
|
+
|
|
50
|
+
## Our Standards
|
|
51
|
+
|
|
52
|
+
Examples of behavior that contributes to a positive environment for our
|
|
53
|
+
community include:
|
|
54
|
+
|
|
55
|
+
- Demonstrating empathy and kindness toward other people
|
|
56
|
+
- Being respectful of differing opinions, viewpoints, and experiences
|
|
57
|
+
- Giving and gracefully accepting constructive feedback
|
|
58
|
+
- Accepting responsibility and apologizing to those affected by our mistakes,
|
|
59
|
+
and learning from the experience
|
|
60
|
+
- Focusing on what is best not just for us as individuals, but for the overall
|
|
61
|
+
community
|
|
62
|
+
|
|
63
|
+
Examples of unacceptable behavior include:
|
|
64
|
+
|
|
65
|
+
- The use of sexualized language or imagery, and sexual attention or advances of
|
|
66
|
+
any kind
|
|
67
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
68
|
+
- Public or private harassment
|
|
69
|
+
- Publishing others' private information, such as a physical or email address,
|
|
70
|
+
without their explicit permission
|
|
71
|
+
- Other conduct which could reasonably be considered inappropriate in a
|
|
72
|
+
professional setting
|
|
73
|
+
|
|
74
|
+
<sub>[Back to top](#top)</sub>
|
|
75
|
+
|
|
76
|
+
</section>
|
|
77
|
+
|
|
78
|
+
<section id="response">
|
|
79
|
+
|
|
80
|
+
## Responsibilities
|
|
81
|
+
|
|
82
|
+
Company and community leaders are responsible for clarifying and enforcing our standards of
|
|
83
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
|
84
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
85
|
+
or harmful.
|
|
86
|
+
|
|
87
|
+
Company and community leaders have the right and responsibility to remove, edit, or reject
|
|
88
|
+
comments, commits, code, wiki edits, issues, and other contributions that are
|
|
89
|
+
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
|
90
|
+
decisions when appropriate.
|
|
91
|
+
|
|
92
|
+
Network Pro Strategies reserves the right, at its sole discretion, to remove, edit, or reject any contributions that are contrary to or detrimental to its business interests.
|
|
93
|
+
|
|
94
|
+
<sub>[Back to top](#top)</sub>
|
|
95
|
+
|
|
96
|
+
</section>
|
|
97
|
+
|
|
98
|
+
<section id="scope">
|
|
99
|
+
|
|
100
|
+
## Scope
|
|
101
|
+
|
|
102
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
|
103
|
+
an individual is officially representing the company or community in public spaces.
|
|
104
|
+
Examples of representing our company or community include using an official email address,
|
|
105
|
+
posting via an official social media account, or acting as an appointed
|
|
106
|
+
representative at an online or offline event.
|
|
107
|
+
|
|
108
|
+
<sub>[Back to top](#top)</sub>
|
|
109
|
+
|
|
110
|
+
</section>
|
|
111
|
+
|
|
112
|
+
<section id="enforce">
|
|
113
|
+
|
|
114
|
+
## Enforcement
|
|
115
|
+
|
|
116
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the abuse team at [abuse@neteng.pro](mailto:abuse@neteng.pro). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.
|
|
117
|
+
|
|
118
|
+
The abuse team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
|
119
|
+
|
|
120
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.
|
|
121
|
+
|
|
122
|
+
<sub>[Back to top](#top)</sub>
|
|
123
|
+
|
|
124
|
+
</section>
|
|
125
|
+
|
|
126
|
+
<section id="attribute">
|
|
127
|
+
|
|
128
|
+
## Attribution
|
|
129
|
+
|
|
130
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
131
|
+
version 2.1, available at
|
|
132
|
+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
|
133
|
+
|
|
134
|
+
The **Enforcement** section is adapted from the
|
|
135
|
+
[Contributor Covenant][homepage],
|
|
136
|
+
version 1.4, available at
|
|
137
|
+
[https://www.contributor-covenant.org/version/1/4/code-of-conduct/][v1.4].
|
|
138
|
+
|
|
139
|
+
For answers to common questions about this code of conduct, see the FAQ at
|
|
140
|
+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
|
141
|
+
[https://www.contributor-covenant.org/translations][translations].
|
|
142
|
+
|
|
143
|
+
[homepage]: https://www.contributor-covenant.org
|
|
144
|
+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
|
145
|
+
[v1.4]: https://www.contributor-covenant.org/version/1/4/code-of-conduct/
|
|
146
|
+
[FAQ]: https://www.contributor-covenant.org/faq
|
|
147
|
+
[translations]: https://www.contributor-covenant.org/translations
|
|
148
|
+
|
|
149
|
+
<sub>[Back to top](#top)</sub>
|
|
150
|
+
|
|
151
|
+
</section>
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
<div style="font-size: 12px; font-weight: bold; text-align: center;">
|
|
156
|
+
|
|
157
|
+
[Home](https://netwk.pro) | [Terms of Use](https://netwk.pro/terms-of-use)
|
|
158
|
+
[Privacy Policy](https://netwk.pro/privacy) | [Legal](https://netwk.pro/license)
|
|
159
|
+
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
<span style="font-size: 12px; text-align: center;">
|
|
165
|
+
|
|
166
|
+
Copyright © 2025
|
|
167
|
+
**[Network Pro Strategies](https://netwk.pro/)** (Network Pro™)
|
|
168
|
+
|
|
169
|
+
Network Pro™, the shield logo, and the "Locking Down Networks...™" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
|
|
170
|
+
|
|
171
|
+
Licensed under **[CC BY 4.0](https://netwk.pro/license#cc-by)** and the **[GNU GPL](https://netwk.pro/license#gnu-gpl)**, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
172
|
+
|
|
173
|
+
</span>
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
<!-- =========================================================================
|
|
2
|
+
CONTRIBUTING.md
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== -->
|
|
8
|
+
|
|
9
|
+
<a name="top"></a>
|
|
10
|
+
|
|
11
|
+
[SPDX-License-Identifier](https://spdx.dev/learn/handling-license-info/):
|
|
12
|
+
`CC-BY-4.0 OR GPL-3.0-or-later`
|
|
13
|
+
|
|
14
|
+
# 🤝 Contributing to Network Pro Strategies
|
|
15
|
+
|
|
16
|
+
**Network Pro Strategies**
|
|
17
|
+
**Effective Date:** July 31, 2025
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Thanks for your interest in improving **Network Pro Strategies** (Network Pro™)! We're always looking for collaborators and contributors of all skill levels. This guide will help you get started quickly and effectively.
|
|
22
|
+
|
|
23
|
+
Following these guidelines helps us all work together efficiently and respectfully. 🙌
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 🐛 Using the Issue Tracker
|
|
28
|
+
|
|
29
|
+
Use the [issue tracker](https://github.com/netwk-pro/netwk-pro.github.io/issues) for:
|
|
30
|
+
|
|
31
|
+
- Reporting [bugs](#bug-reports)
|
|
32
|
+
- Submitting [feature requests](#feature-requests)
|
|
33
|
+
- Proposing [pull requests](#pull-requests)
|
|
34
|
+
|
|
35
|
+
🚫 Please do **not** use issues for general support — instead, head to:
|
|
36
|
+
|
|
37
|
+
- [Stack Overflow Teams](https://stack.neteng.pro/)
|
|
38
|
+
- [GitHub Discussions](https://discuss.neteng.pro)
|
|
39
|
+
- [Discord](https://discord.neteng.pro)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
<section id="bug-reports">
|
|
44
|
+
|
|
45
|
+
## 🐞 Bug Reports
|
|
46
|
+
|
|
47
|
+
A bug is a clear, reproducible issue in the code. High-quality reports help us fix problems faster.
|
|
48
|
+
|
|
49
|
+
### ✅ A good bug report includes
|
|
50
|
+
|
|
51
|
+
- A **descriptive title**
|
|
52
|
+
- Steps to reproduce
|
|
53
|
+
- Your environment (OS, browser, version)
|
|
54
|
+
- Expected vs actual behavior
|
|
55
|
+
- Links to a minimal reproducible case (if possible)
|
|
56
|
+
|
|
57
|
+
_Example_:
|
|
58
|
+
|
|
59
|
+
<!-- markdownlint-disable MD042 -->
|
|
60
|
+
|
|
61
|
+
> **Title**: Checkbox toggle fails on Safari 17
|
|
62
|
+
> Steps:
|
|
63
|
+
>
|
|
64
|
+
> 1. Visit page X
|
|
65
|
+
> 2. Click toggle
|
|
66
|
+
> 3. Observe that...
|
|
67
|
+
> Expected: ...
|
|
68
|
+
> Actual: ...
|
|
69
|
+
> [Live example](#)
|
|
70
|
+
|
|
71
|
+
<!-- markdownlint-enable MD042 -->
|
|
72
|
+
|
|
73
|
+
</section>
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
<sub>[Back to top](#top)</sub>
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
<section id="feature-requests">
|
|
82
|
+
|
|
83
|
+
## ✨ Feature Requests
|
|
84
|
+
|
|
85
|
+
Feature requests are welcome — just make sure it aligns with the project’s goals.
|
|
86
|
+
|
|
87
|
+
Before posting:
|
|
88
|
+
|
|
89
|
+
- Search for similar requests
|
|
90
|
+
- Clearly describe the problem it solves
|
|
91
|
+
- Explain the use case and who benefits
|
|
92
|
+
|
|
93
|
+
Strong proposals help us prioritize.
|
|
94
|
+
|
|
95
|
+
</section>
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
<sub>[Back to top](#top)</sub>
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
<section id="pull-requests">
|
|
104
|
+
|
|
105
|
+
## 🔁 Pull Requests
|
|
106
|
+
|
|
107
|
+
Well-scoped, well-documented pull requests are the lifeblood of open-source.
|
|
108
|
+
|
|
109
|
+
### ⚠️ Ask First
|
|
110
|
+
|
|
111
|
+
Before large PRs (new features, refactors, dependency upgrades), please check with maintainers first.
|
|
112
|
+
|
|
113
|
+
### 📋 Steps
|
|
114
|
+
|
|
115
|
+
1. **Fork the repo & set remotes**:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
git clone https://github.com/<your-username>/netwk-pro.github.io.git
|
|
119
|
+
cd netwk-pro.github.io
|
|
120
|
+
git remote add upstream https://github.com/netwk-pro/netwk-pro.github.io.git
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
2. **Stay Updated**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
git checkout master
|
|
127
|
+
git pull upstream master
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
3. **Create a topic branch:**
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
git checkout -b my-feature
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
4. **Install & test locally:**
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npm install
|
|
140
|
+
npm run checkout
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
5. **Make your changes**
|
|
144
|
+
|
|
145
|
+
(and commit them in logical chunks with good commit messages).
|
|
146
|
+
|
|
147
|
+
6. **Build:**
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npm run build
|
|
151
|
+
git add build/
|
|
152
|
+
git commit -m "Build: update assets"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
7. **Push and open a PR:**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
git push origin my-feature
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Open your PR with a clear title, description, and reference the related issue (if any).
|
|
162
|
+
|
|
163
|
+
</section>
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
<sub>[Back to top](#top)</sub>
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## ✅ Coding & Style Notes
|
|
172
|
+
|
|
173
|
+
- Use the defined code style (Prettier, ESLint, Stylelint, markdownlint)
|
|
174
|
+
- Avoid unrelated changes in the same PR
|
|
175
|
+
- Keep PRs focused and test-covered when appropriate
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
## 🔐 Legal Notice
|
|
180
|
+
|
|
181
|
+
By submitting a pull request, you agree to license your contributions under:
|
|
182
|
+
|
|
183
|
+
- [CC BY 4.0](https://netwk.pro/license#cc-by)
|
|
184
|
+
- [GNU GPL 3.0 or later](https://netwk.pro/license#gnu-gpl)
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
<sub>[Back to top](#top)</sub>
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
_Thanks again for your contribution and for being part of the Network Pro™ community!_
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
<div style="font-size: 12px; font-weight: bold; text-align: center;">
|
|
197
|
+
|
|
198
|
+
[Home](https://netwk.pro) | [Terms of Use](https://netwk.pro/terms-of-use)
|
|
199
|
+
[Privacy Policy](https://netwk.pro/privacy) | [Legal](https://netwk.pro/license)
|
|
200
|
+
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
<span style="font-size: 12px; text-align: center;">
|
|
206
|
+
|
|
207
|
+
Copyright © 2025
|
|
208
|
+
**[Network Pro Strategies](https://netwk.pro/)** (Network Pro™)
|
|
209
|
+
|
|
210
|
+
Network Pro™, the shield logo, and the "Locking Down Networks...™" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
|
|
211
|
+
|
|
212
|
+
Licensed under **[CC BY 4.0](https://netwk.pro/license#cc-by)** and the **[GNU GPL](https://netwk.pro/license#gnu-gpl)**, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
213
|
+
|
|
214
|
+
</span>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@networkpro/web",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.16.0",
|
|
5
5
|
"description": "Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro Strategies",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"advisory",
|
|
@@ -79,26 +79,26 @@
|
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"dompurify": "^3.2.6",
|
|
82
|
-
"posthog-js": "^1.
|
|
82
|
+
"posthog-js": "^1.258.4",
|
|
83
83
|
"semver": "^7.7.2",
|
|
84
|
-
"svelte": "5.
|
|
84
|
+
"svelte": "5.37.2"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@eslint/compat": "^1.3.1",
|
|
88
|
-
"@eslint/js": "^9.
|
|
88
|
+
"@eslint/js": "^9.32.0",
|
|
89
89
|
"@lhci/cli": "^0.15.1",
|
|
90
90
|
"@playwright/test": "^1.54.1",
|
|
91
91
|
"@sveltejs/adapter-netlify": "^5.1.0",
|
|
92
|
-
"@sveltejs/kit": "2.
|
|
92
|
+
"@sveltejs/kit": "2.27.0",
|
|
93
93
|
"@sveltejs/vite-plugin-svelte": "^6.1.0",
|
|
94
|
-
"@testing-library/jest-dom": "^6.6.
|
|
94
|
+
"@testing-library/jest-dom": "^6.6.4",
|
|
95
95
|
"@testing-library/svelte": "^5.2.8",
|
|
96
96
|
"@vitest/coverage-v8": "^3.2.4",
|
|
97
97
|
"autoprefixer": "^10.4.21",
|
|
98
98
|
"browserslist": "^4.25.1",
|
|
99
|
-
"eslint": "^9.
|
|
99
|
+
"eslint": "^9.32.0",
|
|
100
100
|
"eslint-config-prettier": "^10.1.8",
|
|
101
|
-
"eslint-plugin-jsdoc": "^
|
|
101
|
+
"eslint-plugin-jsdoc": "^52.0.2",
|
|
102
102
|
"eslint-plugin-svelte": "^3.11.0",
|
|
103
103
|
"globals": "^16.3.0",
|
|
104
104
|
"jsdom": "^26.1.0",
|
|
@@ -110,15 +110,15 @@
|
|
|
110
110
|
"postcss": "^8.5.6",
|
|
111
111
|
"prettier": "^3.6.2",
|
|
112
112
|
"prettier-plugin-svelte": "^3.4.0",
|
|
113
|
-
"stylelint": "^16.
|
|
113
|
+
"stylelint": "^16.23.0",
|
|
114
114
|
"stylelint-config-html": "^1.1.0",
|
|
115
|
-
"stylelint-config-recommended": "^
|
|
115
|
+
"stylelint-config-recommended": "^17.0.0",
|
|
116
116
|
"stylelint-order": "^7.0.0",
|
|
117
117
|
"svelte-check": "^4.3.0",
|
|
118
118
|
"svelte-eslint-parser": "^1.3.0",
|
|
119
119
|
"svelte-preprocess": "^6.0.3",
|
|
120
|
-
"typescript": "^5.
|
|
121
|
-
"vite": "^7.0.
|
|
120
|
+
"typescript": "^5.9.2",
|
|
121
|
+
"vite": "^7.0.6",
|
|
122
122
|
"vite-plugin-lightningcss": "^0.0.5",
|
|
123
123
|
"vite-tsconfig-paths": "^5.1.4",
|
|
124
124
|
"vitest": "^3.2.4"
|
package/src/app.html
CHANGED
|
@@ -60,15 +60,15 @@ This file is part of Network Pro.
|
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* Width of the logo in pixels.
|
|
63
|
-
* @type {
|
|
63
|
+
* @type {string}
|
|
64
64
|
*/
|
|
65
|
-
export let width =
|
|
65
|
+
export let width = '250px';
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
68
|
* Height of the logo in pixels.
|
|
69
|
-
* @type {
|
|
69
|
+
* @type {string}
|
|
70
70
|
*/
|
|
71
|
-
export let height =
|
|
71
|
+
export let height = '250px';
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
74
|
* Fetch priority for the logo image.
|
|
@@ -93,7 +93,8 @@ This file is part of Network Pro.
|
|
|
93
93
|
src={logoPng}
|
|
94
94
|
{alt}
|
|
95
95
|
{fetchpriority}
|
|
96
|
-
style
|
|
96
|
+
style:width
|
|
97
|
+
style:height />
|
|
97
98
|
</picture>
|
|
98
99
|
|
|
99
100
|
{#if showSlogan}
|
|
@@ -117,32 +117,18 @@ This file is part of Network Pro.
|
|
|
117
117
|
Licensed under
|
|
118
118
|
{#each licenses as license, index}
|
|
119
119
|
{#if license.type === 'CC BY 4.0'}
|
|
120
|
-
<a
|
|
121
|
-
href={license.url}
|
|
122
|
-
target={PAGE.SELF}
|
|
123
|
-
rel={relLicense}
|
|
124
|
-
style="display: inline-block">
|
|
120
|
+
<a href={license.url} target={PAGE.SELF} rel={relLicense}>
|
|
125
121
|
<strong>{license.type}</strong>
|
|
126
122
|
</a>
|
|
127
123
|
{#if license.icons}
|
|
128
124
|
{#each license.icons as icon}
|
|
129
|
-
<a
|
|
130
|
-
href={license.externalUrl}
|
|
131
|
-
target={PAGE.BLANK}
|
|
132
|
-
rel={relLicense}
|
|
133
|
-
style="display: inline-block">
|
|
125
|
+
<a href={license.externalUrl} target={PAGE.BLANK} rel={relLicense}>
|
|
134
126
|
<img
|
|
127
|
+
class="cc-img"
|
|
135
128
|
decoding="async"
|
|
136
129
|
loading="lazy"
|
|
137
130
|
src={icon.src}
|
|
138
|
-
alt={icon.alt}
|
|
139
|
-
style="
|
|
140
|
-
width: 18px !important;
|
|
141
|
-
height: 18px !important;
|
|
142
|
-
margin-left: 3px;
|
|
143
|
-
text-decoration: none;
|
|
144
|
-
vertical-align: text-bottom;
|
|
145
|
-
" />
|
|
131
|
+
alt={icon.alt} />
|
|
146
132
|
</a>
|
|
147
133
|
{/each}
|
|
148
134
|
{/if}
|
package/src/lib/data/fossData.js
CHANGED
|
@@ -53,29 +53,29 @@ export const fossData = [
|
|
|
53
53
|
isIntro: true
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
|
-
emoji: "
|
|
56
|
+
emoji: "✔️",
|
|
57
57
|
label: "100% offline",
|
|
58
58
|
description: "doesn't even request internet permission",
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
|
-
emoji: "
|
|
62
|
-
label: "
|
|
61
|
+
emoji: "✔️",
|
|
62
|
+
label: "Choose your workflow",
|
|
63
63
|
description: "Notification Listener or SMS access",
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
|
-
emoji: "
|
|
66
|
+
emoji: "✔️",
|
|
67
67
|
label: "Compatible with virtually any OTP-based or 2FA system",
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
emoji: "
|
|
70
|
+
emoji: "✔️",
|
|
71
71
|
label: "Lightweight, privacy-first, and customizable",
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
|
-
emoji: "
|
|
74
|
+
emoji: "✔️",
|
|
75
75
|
label: "Translated into 70+ languages and growing",
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
|
-
emoji: "
|
|
78
|
+
emoji: "✔️",
|
|
79
79
|
label: "Inspect, contribute, or fork on GitHub",
|
|
80
80
|
}
|
|
81
81
|
],
|
|
@@ -83,6 +83,9 @@ export const fossData = [
|
|
|
83
83
|
<p>
|
|
84
84
|
This is a perfect example of how small, thoughtful tools can reduce friction in our everyday workflows—<strong>while keeping user agency and transparency at the core.</strong>
|
|
85
85
|
</p>
|
|
86
|
+
<p>
|
|
87
|
+
Let's continue supporting software that empowers users through simplicity and openness. 💡
|
|
88
|
+
</p>
|
|
86
89
|
`,
|
|
87
90
|
links: [
|
|
88
91
|
{
|
|
@@ -94,9 +97,6 @@ export const fossData = [
|
|
|
94
97
|
href: "https://f-droid.org/packages/io.github.jd1378.otphelper",
|
|
95
98
|
}
|
|
96
99
|
],
|
|
97
|
-
notes: [
|
|
98
|
-
"Let's continue supporting software that empowers users through simplicity and openness. 💡"
|
|
99
|
-
],
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
id: "cryptomator",
|
|
@@ -242,34 +242,24 @@ This file is part of Network Pro.
|
|
|
242
242
|
<a
|
|
243
243
|
rel={PAGE.REL}
|
|
244
244
|
href="https://creativecommons.org/licenses/by/4.0/"
|
|
245
|
-
target={PAGE.BLANK}
|
|
245
|
+
target={PAGE.BLANK}
|
|
246
|
+
class="cc-link">
|
|
246
247
|
<img
|
|
248
|
+
class="cc-img"
|
|
247
249
|
decoding="async"
|
|
248
250
|
loading="lazy"
|
|
249
|
-
style="
|
|
250
|
-
display: inline-block;
|
|
251
|
-
height: 18px !important;
|
|
252
|
-
margin-left: 3px;
|
|
253
|
-
text-decoration: none;
|
|
254
|
-
vertical-align: text-bottom;
|
|
255
|
-
"
|
|
256
251
|
src={ccSrc}
|
|
257
252
|
alt="Creative Commons BY" />
|
|
258
253
|
</a>
|
|
259
254
|
<a
|
|
260
255
|
rel={PAGE.REL}
|
|
261
256
|
href="https://creativecommons.org/licenses/by/4.0/"
|
|
262
|
-
target={PAGE.BLANK}
|
|
257
|
+
target={PAGE.BLANK}
|
|
258
|
+
class="cc-link">
|
|
263
259
|
<img
|
|
260
|
+
class="cc-img"
|
|
264
261
|
decoding="async"
|
|
265
262
|
loading="lazy"
|
|
266
|
-
style="
|
|
267
|
-
display: inline-block;
|
|
268
|
-
height: 18px !important;
|
|
269
|
-
margin-left: 3px;
|
|
270
|
-
text-decoration: none;
|
|
271
|
-
vertical-align: text-bottom;
|
|
272
|
-
"
|
|
273
263
|
src={bySrc}
|
|
274
264
|
alt="Creative Commons BY" />
|
|
275
265
|
</a>.
|
|
@@ -518,6 +518,7 @@ footer .container {
|
|
|
518
518
|
padding: 0;
|
|
519
519
|
margin: -1px;
|
|
520
520
|
border: 0;
|
|
521
|
+
/* stylelint-disable-next-line property-no-deprecated */
|
|
521
522
|
clip: rect(0, 0, 0, 0);
|
|
522
523
|
overflow: hidden;
|
|
523
524
|
white-space: nowrap;
|
|
@@ -602,3 +603,14 @@ footer .container {
|
|
|
602
603
|
transform: rotate(360deg);
|
|
603
604
|
}
|
|
604
605
|
}
|
|
606
|
+
|
|
607
|
+
.cc-link {
|
|
608
|
+
text-decoration: none;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
.cc-img {
|
|
612
|
+
display: inline-block;
|
|
613
|
+
height: 18px !important;
|
|
614
|
+
margin-left: 3px;
|
|
615
|
+
vertical-align: text-bottom;
|
|
616
|
+
}
|
|
@@ -179,6 +179,7 @@ a:visited:focus-visible {
|
|
|
179
179
|
padding: 0;
|
|
180
180
|
margin: -1px;
|
|
181
181
|
border: 0;
|
|
182
|
+
/* stylelint-disable-next-line property-no-deprecated */
|
|
182
183
|
clip: rect(0, 0, 0, 0);
|
|
183
184
|
overflow: hidden;
|
|
184
185
|
white-space: nowrap;
|
|
@@ -198,6 +199,7 @@ a:visited:focus-visible {
|
|
|
198
199
|
width: auto;
|
|
199
200
|
height: auto;
|
|
200
201
|
margin: 0;
|
|
202
|
+
/* stylelint-disable-next-line property-no-deprecated */
|
|
201
203
|
clip: auto;
|
|
202
204
|
overflow: visible;
|
|
203
205
|
white-space: inherit;
|
|
@@ -294,12 +296,12 @@ a:visited:focus-visible {
|
|
|
294
296
|
pre,
|
|
295
297
|
blockquote {
|
|
296
298
|
border: 1px solid #999;
|
|
297
|
-
|
|
299
|
+
break-inside: avoid;
|
|
298
300
|
}
|
|
299
301
|
|
|
300
302
|
tr,
|
|
301
303
|
img {
|
|
302
|
-
|
|
304
|
+
break-inside: avoid;
|
|
303
305
|
}
|
|
304
306
|
|
|
305
307
|
p,
|
|
@@ -311,6 +313,6 @@ a:visited:focus-visible {
|
|
|
311
313
|
|
|
312
314
|
h2,
|
|
313
315
|
h3 {
|
|
314
|
-
|
|
316
|
+
break-after: avoid;
|
|
315
317
|
}
|
|
316
318
|
}
|
|
@@ -3,4 +3,4 @@ Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
|
3
3
|
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
4
4
|
This file is part of Network Pro.
|
|
5
5
|
========================================================================== */
|
|
6
|
-
html{-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{color:inherit;box-sizing:border-box;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details{display:block}summary{display:list-item}template{display:none}html{color:#222;scroll-behavior:smooth;font-size:1em;line-height:1.4}::-moz-selection{text-shadow:none;background:#191919}::selection{text-shadow:none;background:#191919}hr{border:0;border-top:1px solid #ccc;height:1px;margin:1em 0;padding:0;display:block;overflow:visible}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}body{color:#fafafa;background-color:#191919;margin:10px;font-family:Arial,Helvetica,sans-serif}a{text-decoration:none}a:link{color:#ffc627}a:hover,a:active{color:#ffc627;text-decoration:underline}a:focus{color:#111;background-color:#ffc627}a:visited,a:visited:hover{color:#cba557}a:visited:focus,a:visited:focus-visible{color:#111!important}.hidden,[hidden]{display:none!important}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visually-hidden.focusable:active,.visually-hidden.focusable:focus{clip:auto;width:auto;height:auto;white-space:inherit;margin:0;position:static;overflow:visible}.invisible{visibility:hidden}.clearfix:before,.clearfix:after{content:"";display:table}.clearfix:after{clear:both}@media print{*,:before,:after{color:#000!important;box-shadow:none!important;text-shadow:none!important;background:#fff!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^=\#]:after,a[href^=javascript\:]:after{content:""}pre{white-space:pre-wrap!important}pre,blockquote{
|
|
6
|
+
html{-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{color:inherit;box-sizing:border-box;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details{display:block}summary{display:list-item}template{display:none}html{color:#222;scroll-behavior:smooth;font-size:1em;line-height:1.4}::-moz-selection{text-shadow:none;background:#191919}::selection{text-shadow:none;background:#191919}hr{border:0;border-top:1px solid #ccc;height:1px;margin:1em 0;padding:0;display:block;overflow:visible}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}body{color:#fafafa;background-color:#191919;margin:10px;font-family:Arial,Helvetica,sans-serif}a{text-decoration:none}a:link{color:#ffc627}a:hover,a:active{color:#ffc627;text-decoration:underline}a:focus{color:#111;background-color:#ffc627}a:visited,a:visited:hover{color:#cba557}a:visited:focus,a:visited:focus-visible{color:#111!important}.hidden,[hidden]{display:none!important}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visually-hidden.focusable:active,.visually-hidden.focusable:focus{clip:auto;width:auto;height:auto;white-space:inherit;margin:0;position:static;overflow:visible}.invisible{visibility:hidden}.clearfix:before,.clearfix:after{content:"";display:table}.clearfix:after{clear:both}@media print{*,:before,:after{color:#000!important;box-shadow:none!important;text-shadow:none!important;background:#fff!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^=\#]:after,a[href^=javascript\:]:after{content:""}pre{white-space:pre-wrap!important}pre,blockquote{break-inside:avoid;border:1px solid #999}tr,img{break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{break-after:avoid}}.full-width-section{background-position:50%;background-size:cover;width:100%;max-width:1920px;margin:0 auto}.container{max-width:1200px;margin:0 auto;padding:0 12px}.readable{max-width:900px;margin:0 auto}header,footer{width:100%}header .container,footer .container{max-width:1200px;margin:0 auto;padding:20px 12px}.gh{border-collapse:collapse;border-spacing:0;margin:0 auto}.gh td,.gh th{border-collapse:collapse;word-break:normal;padding:10px 5px;overflow:hidden}.gh .gh-tcell{text-align:center;vertical-align:middle}@media screen and (width<=767px){.gh,.gh col{width:auto!important}.gh-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.soc{border-collapse:collapse;border-spacing:0;margin:0 auto}.soc td,.soc th{border-collapse:collapse;word-break:normal;padding:8px;overflow:hidden}.soc .soc-fa{text-align:center;vertical-align:middle}@media screen and (width<=767px){.soc,.soc col{width:auto!important}.soc-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.foss{border-collapse:collapse;border-spacing:0}.foss td,.foss th{border-collapse:collapse;word-break:normal;padding:10px 5px;overflow:hidden}.foss .foss-cell{text-align:center;vertical-align:middle}@media screen and (width<=767px){.foss,.foss col{width:auto!important}.foss-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}}.bnav{text-align:center;border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav td,.bnav th{text-align:center;vertical-align:middle;word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;line-height:1.125rem;overflow:hidden}.bnav .bnav-cell{text-align:center;vertical-align:middle;align-content:center}@media screen and (width<=767px){.bnav,.bnav col{width:auto!important}.bnav-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.bnav2{border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav2 td{word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;line-height:1.125rem;overflow:hidden}.bnav2 th{word-break:normal;border-style:none;padding:12px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.bnav2 .bnav2-cell{text-align:center;vertical-align:middle;align-content:center}@media screen and (width<=767px){.bnav2,.bnav2 col{width:auto!important}.bnav2-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.pgp{border-collapse:collapse;border-spacing:0;margin:0 auto}.pgp td{word-break:normal;border-style:none;padding:10px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.pgp th{word-break:normal;border:1px solid #000;padding:10px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.pgp .pgp-col1{text-align:right;vertical-align:middle;padding-right:1rem}.pgp .pgp-col2{text-align:left;vertical-align:middle;padding-left:1rem}@media screen and (width<=767px){.pgp,.pgp col{width:auto!important}.pgp-wrap{-webkit-overflow-scrolling:touch;margin:2rem 0 auto;overflow-x:auto}}.logo{margin-left:auto;margin-right:auto;display:block}.index-title1{text-align:center;font-style:italic;font-weight:700}.index-title2{letter-spacing:-.015em;text-align:center;font-variant:small-caps;font-size:1.25rem;line-height:1.625rem}.index1{letter-spacing:-.035em;text-align:center;font-style:italic;font-weight:700;line-height:2.125rem}.index2{letter-spacing:-.035em;text-align:center;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.index3{letter-spacing:-.035em;text-align:center;font-size:1.5rem;line-height:1.75rem}.index4{letter-spacing:-.035em;text-align:center;font-size:1.5rem;line-height:1.75rem;text-decoration:underline}.subhead{letter-spacing:-.035em;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.bold{font-weight:700}.emphasis{font-style:italic}.uline{text-decoration:underline}.bolditalic{font-style:italic;font-weight:700}.bquote{border-left:3px solid #9e9e9e;margin-left:30px;padding-left:10px;font-style:italic}.small-text{font-size:.75rem;line-height:1.125rem}.large-text-center{text-align:center;font-size:1.25rem;line-height:1.75rem}.prewrap{white-space:pre-wrap;display:block}.hr-styled{width:75%;margin:auto}.center-text{text-align:center}.copyright{text-align:center;font-size:.75rem;line-height:1.125rem}.gold{color:#ffc627}.visited{color:#cba557}.goldseparator{color:#ffc627;margin:0 .5rem}.center-nav{text-align:center;padding:5px;font-size:1rem;line-height:1.5rem}.block{overflow-wrap:break-word;resize:none;white-space:normal;word-break:normal;background:0 0;border:none;border-radius:0;outline:none;width:100%;font-family:monospace;font-size:.875rem;line-height:1.125rem}.fingerprint{white-space:pre-line;font-weight:700;display:block}.pgp-image{width:150px;height:150px}.spacer{margin:2rem 0}.separator{margin:0 .5rem}.emoji{margin-right:8px}.headline{margin-bottom:4px;font-style:italic;font-weight:700;display:block}.label{font-family:inherit;font-weight:700}.description{font-family:inherit;font-style:normal;font-weight:400;display:inline}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pgp-entry{flex-wrap:wrap;align-items:center;gap:2rem;margin-bottom:2rem;display:flex}.pgp-text{flex:2;min-width:250px}.pgp-qr{flex:1;min-width:150px}.obtainium-direct-label{margin:.25rem 0 .75rem;font-weight:700}.obtainium-manual-label{margin-top:.75rem;font-weight:700}.obtainium-img{width:185px;height:55px;margin-bottom:.25rem}.obtainium-margin{margin-left:4px}.obtainium-fa-down{color:#ffc627;margin-left:4px}.obtainium-icon{width:50px;height:50px}.proton-img{width:168px;height:24px}.redirect-text{text-align:center;margin-top:4rem}.redirect-content{text-align:center;margin-top:2rem;font-family:system-ui,sans-serif}.loading-spinner{border:4px solid #ddd;border-top-color:#ffc627;border-radius:50%;width:48px;height:48px;margin:2rem auto;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.cc-link{text-decoration:none}.cc-img{vertical-align:text-bottom;margin-left:3px;display:inline-block;height:18px!important}
|
|
@@ -28,7 +28,7 @@ export async function GET({ params, setHeaders }) {
|
|
|
28
28
|
'Content-Type': 'application/pgp-keys',
|
|
29
29
|
'Content-Disposition': `attachment; filename="${key}"`,
|
|
30
30
|
});
|
|
31
|
-
return new Response(file);
|
|
31
|
+
return new Response(new Uint8Array(file));
|
|
32
32
|
} catch {
|
|
33
33
|
return new Response('File not found', { status: 404 });
|
|
34
34
|
}
|
package/stylelint.config.js
CHANGED
|
@@ -56,6 +56,12 @@ export default {
|
|
|
56
56
|
"Class names must not start with 'fa-' (FontAwesome classes are ignored)",
|
|
57
57
|
},
|
|
58
58
|
],
|
|
59
|
+
// Disable unnecessarily strict rules
|
|
60
|
+
//'media-type-no-deprecated': null,
|
|
61
|
+
//'property-no-deprecated': null,
|
|
62
|
+
//'nesting-selector-no-missing-scoping-root': null,
|
|
63
|
+
//'no-invalid-position-at-import-rule': null,
|
|
64
|
+
//'no-invalid-position-declaration': null,
|
|
59
65
|
'order/properties-order': [
|
|
60
66
|
[
|
|
61
67
|
{
|