@networkpro/web 1.22.1 → 1.23.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 +4 -4
- package/.github/workflows/lighthouse.yml +1 -1
- package/.github/workflows/meta-check.yml +1 -1
- package/.github/workflows/playwright.yml +1 -1
- package/.github/workflows/publish-test.yml +16 -16
- package/.github/workflows/templates/publish.template.yml +4 -4
- package/.ncurc.cjs +50 -0
- package/.node-version +1 -1
- package/.nvmrc +1 -1
- package/CHANGELOG.md +99 -2
- package/LICENSE.md +1 -1
- package/README.md +5 -5
- package/budget.json +1 -1
- package/cspell.json +1 -0
- package/package.json +19 -16
- package/src/app.html +4 -4
- package/src/lib/README.md +12 -9
- package/src/lib/components/Badges.svelte +2 -2
- package/src/lib/components/LegalNav.svelte +1 -1
- package/src/lib/components/MetaTags.svelte +42 -16
- package/src/lib/components/layout/Footer.svelte +7 -7
- package/src/lib/components/layout/HeaderDefault.svelte +1 -1
- package/src/lib/components/layout/HeaderHome.svelte +1 -1
- package/src/lib/index.js +2 -2
- package/src/lib/meta.js +24 -24
- package/src/lib/pages/AboutContent.svelte +9 -9
- package/src/lib/pages/HomeContent.svelte +1 -1
- package/src/lib/pages/LicenseContent.svelte +6 -7
- package/src/lib/pages/ServicesContent.svelte +1 -2
- package/src/lib/pages/TermsUseContent.svelte +1 -1
- package/src/lib/types/README.md +2 -2
- package/src/routes/+layout.js +2 -3
- package/src/routes/+layout.svelte +11 -3
- package/src/routes/+page.svelte +7 -26
- package/src/routes/about/+page.svelte +10 -21
- package/src/routes/{license → foss}/+page.server.js +2 -2
- package/src/routes/{foss-spotlight → foss}/+page.svelte +11 -22
- package/src/routes/{foss-spotlight → legal}/+page.server.js +2 -2
- package/src/routes/{license → legal}/+page.svelte +11 -22
- package/src/routes/pgp/+page.svelte +10 -21
- package/src/routes/privacy/+page.svelte +10 -21
- package/src/routes/privacy-dashboard/+page.svelte +10 -27
- package/src/routes/services/+page.svelte +3 -16
- package/src/routes/terms-conditions/+page.svelte +10 -21
- package/src/routes/terms-of-use/+page.svelte +10 -21
- package/static/sitemap.xml +13 -13
- package/tests/e2e/mobile.spec.js +36 -17
- package/tests/e2e/shared/helpers.js +39 -1
- package/tests/meta/meta.test.js +1 -1
- package/tests/unit/server/meta.test.js +1 -1
- package/vercel.json +8 -8
- package/vite.config.js +11 -0
- package/vitest.config.client.js +9 -0
- package/CODE_OF_CONDUCT.md +0 -173
- package/CONTRIBUTING.md +0 -214
|
@@ -11,9 +11,11 @@ This file is part of Network Pro.
|
|
|
11
11
|
* @description Stores commonly used functions for importing into E2E tests.
|
|
12
12
|
* @module tests/e2e/shared
|
|
13
13
|
* @author Scott Lopez
|
|
14
|
-
* @updated 2025-
|
|
14
|
+
* @updated 2025-10-29
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import { expect } from '@playwright/test';
|
|
18
|
+
|
|
17
19
|
/**
|
|
18
20
|
* @param {import('@playwright/test').Page} page - The Playwright page object.
|
|
19
21
|
* @returns {Promise<void>}
|
|
@@ -55,3 +57,39 @@ export async function getVisibleNav(page) {
|
|
|
55
57
|
export function getFooter(page) {
|
|
56
58
|
return page.locator('footer');
|
|
57
59
|
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @function clickAndWaitForNavigation
|
|
63
|
+
* @description Clicks a link or button and waits for navigation or URL change.
|
|
64
|
+
* Works for both SPA (client-side) and full-page navigations.
|
|
65
|
+
*
|
|
66
|
+
* @param {import('@playwright/test').Page} page
|
|
67
|
+
* @param {import('@playwright/test').Locator} locator
|
|
68
|
+
* @param {object} [options]
|
|
69
|
+
* @param {string|RegExp} [options.urlPattern] - URL or regex to match
|
|
70
|
+
* @param {number} [options.timeout=60000] - Max wait time
|
|
71
|
+
*/
|
|
72
|
+
export async function clickAndWaitForNavigation(page, locator, options = {}) {
|
|
73
|
+
const { urlPattern = /\/.*/, timeout = 60000 } = options;
|
|
74
|
+
|
|
75
|
+
// Ensure the element is ready for interaction
|
|
76
|
+
await locator.scrollIntoViewIfNeeded();
|
|
77
|
+
await locator.waitFor({ state: 'visible', timeout: 10000 });
|
|
78
|
+
await locator.click({ trial: true });
|
|
79
|
+
|
|
80
|
+
// Capture current URL to detect SPA navigation
|
|
81
|
+
const currentUrl = page.url();
|
|
82
|
+
|
|
83
|
+
// Handle both SPA transitions and full page reloads
|
|
84
|
+
await Promise.all([
|
|
85
|
+
page.waitForURL(urlPattern, { timeout }).catch(() => {}),
|
|
86
|
+
page.waitForLoadState('load', { timeout }).catch(() => {}),
|
|
87
|
+
locator.click(),
|
|
88
|
+
]);
|
|
89
|
+
|
|
90
|
+
// Confirm the URL changed successfully
|
|
91
|
+
await expect(page).toHaveURL(urlPattern, { timeout });
|
|
92
|
+
|
|
93
|
+
// Optional: log navigation success (helps in CI)
|
|
94
|
+
console.log(`✅ Navigation from ${currentUrl} → ${page.url()}`);
|
|
95
|
+
}
|
package/tests/meta/meta.test.js
CHANGED
|
@@ -25,6 +25,6 @@ describe('Meta info', () => {
|
|
|
25
25
|
const { meta } = load({ url: mockUrl });
|
|
26
26
|
|
|
27
27
|
expect(meta.title).toMatch(/Security, Networking, Privacy/);
|
|
28
|
-
expect(meta.description).toMatch(/
|
|
28
|
+
expect(meta.description).toMatch(/Locking Down Networks/);
|
|
29
29
|
});
|
|
30
30
|
});
|
package/vercel.json
CHANGED
|
@@ -13,23 +13,23 @@
|
|
|
13
13
|
"permanent": true
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
"source": "/
|
|
17
|
-
"destination": "/
|
|
16
|
+
"source": "/license",
|
|
17
|
+
"destination": "/legal",
|
|
18
18
|
"permanent": true
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
|
-
"source": "/
|
|
22
|
-
"destination": "/
|
|
21
|
+
"source": "/license/:path*",
|
|
22
|
+
"destination": "/legal/:path*",
|
|
23
23
|
"permanent": true
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
"source": "/foss",
|
|
27
|
-
"destination": "/foss
|
|
26
|
+
"source": "/foss-spotlight",
|
|
27
|
+
"destination": "/foss",
|
|
28
28
|
"permanent": true
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"source": "/foss/:path*",
|
|
32
|
-
"destination": "/foss
|
|
31
|
+
"source": "/foss-spotlight/:path*",
|
|
32
|
+
"destination": "/foss/:path*",
|
|
33
33
|
"permanent": true
|
|
34
34
|
}
|
|
35
35
|
],
|
package/vite.config.js
CHANGED
|
@@ -7,13 +7,24 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================= */
|
|
8
8
|
|
|
9
9
|
import { sveltekit } from '@sveltejs/kit/vite';
|
|
10
|
+
import { resolve } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
10
12
|
import { defineConfig } from 'vite';
|
|
13
|
+
import devtoolsJson from 'vite-plugin-devtools-json';
|
|
11
14
|
import lightningcssPlugin from 'vite-plugin-lightningcss';
|
|
12
15
|
import tsconfigPaths from 'vite-tsconfig-paths'; // NEW: tsconfig/jsconfig alias support
|
|
13
16
|
|
|
17
|
+
// Compute absolute project root
|
|
18
|
+
const projectRoot = fileURLToPath(new URL('.', import.meta.url));
|
|
19
|
+
|
|
14
20
|
export default defineConfig({
|
|
15
21
|
plugins: [
|
|
16
22
|
tsconfigPaths(), // Insert before sveltekit()
|
|
23
|
+
devtoolsJson({
|
|
24
|
+
projectRoot: resolve(projectRoot), // Correct key name
|
|
25
|
+
normalizeForWindowsContainer: true, // optional, helps with path consistency on Windows or WSL
|
|
26
|
+
uuid: 'ad0db4f4-6172-4c1e-ae17-26b1bee53764',
|
|
27
|
+
}),
|
|
17
28
|
sveltekit(),
|
|
18
29
|
lightningcssPlugin({
|
|
19
30
|
minify: process.env.NODE_ENV === 'production',
|
package/vitest.config.client.js
CHANGED
|
@@ -39,5 +39,14 @@ export default defineConfig({
|
|
|
39
39
|
reporter: ['html'],
|
|
40
40
|
reportsDirectory: './reports/client/coverage',
|
|
41
41
|
},
|
|
42
|
+
|
|
43
|
+
// Svelte 5 / Runes compatibility (Vitest 4.x+)
|
|
44
|
+
optimizeDeps: {
|
|
45
|
+
include: [/svelte/], // Ensures .svelte files are pre-bundled with rune support
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
// Optional: quiet down noisy vite logs
|
|
49
|
+
logHeapUsage: false,
|
|
50
|
+
isolate: true,
|
|
42
51
|
},
|
|
43
52
|
});
|
package/CODE_OF_CONDUCT.md
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
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>
|