Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -787,7 +787,7 @@ check(/fsbTriggerHandleRefreshPollForTest/.test(src), 'test-only refresh-poll al
"": {
"name": "fsb-mcp-server",
"version": "0.8.0",
"license": "BUSL-1.1"
"license": "MIT"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ From mcp/package.json (lines 1-6, the relevant top of file -- only line 3 `versi
"name": "fsb-mcp-server",
"version": "0.8.0",
"description": "FSB Browser Automation MCP Server",
"license": "BUSL-1.1",
"license": "MIT",
"author": "Lakshman Turlapati",
```

Expand Down Expand Up @@ -355,7 +355,7 @@ The build command runs `tsc` (compiles all .ts under mcp/src/ to mcp/build/) AND

6. Non-version content in each edited file is unchanged. Verified by:
- mcp/src/version.ts: `grep -c "FSB_SERVER_NAME\\|FSB_EXTENSION_BRIDGE_PORT\\|FSB_EXTENSION_BRIDGE_URL\\|DEFAULT_HTTP_HOST\\|DEFAULT_HTTP_PORT\\|FSB_REGISTRY_NAME" mcp/src/version.ts` returns at least 6 (one per other constant).
- mcp/package.json: `node -e "const p = require('./mcp/package.json'); console.log(p.name, p.license, p.scripts.build.length > 0)"` prints `fsb-mcp-server BUSL-1.1 true`.
- mcp/package.json: `node -e "const p = require('./mcp/package.json'); console.log(p.name, p.license, p.scripts.build.length > 0)"` prints `fsb-mcp-server MIT true`.
- mcp/server.json: `node -e "const s = require('./mcp/server.json'); console.log(s.name, s.title, s.packages.length, s.packages[0].registryType)"` prints `io.github.lakshmanturlapati/fsb-mcp-server FSB MCP Server 1 npm`.
- tests/mcp-version-parity.test.js: `grep -c "extractRuntimeVersion\\|collectExplicitVersions\\|runCommand" tests/mcp-version-parity.test.js` returns at least 3 (one per helper function).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,13 +275,13 @@ The override only works because the slug-suffix branch (lines 179-188) saves it.

---

#### LO-03: `package.json` version/license/badge metadata is internally inconsistent (pre-existing, surfaced by this phase's audit)
#### LO-03: `package.json` version/package filename metadata is internally inconsistent (pre-existing, surfaced by this phase's audit)

**File:** `package.json:3` (`"version": "0.9.90"`), `:71` (`"license": "BUSL-1.1"`), `:133` (badge `license-MIT`), `:24` (`package` script hardcodes `fsb-v0.9.90.zip`)
**File:** `package.json:3` (`"version": "0.9.90"`), `:71` (`"license": "MIT"`), `:133` (badge `license-MIT`), `:24` (`package` script hardcodes `fsb-v0.9.90.zip`)

**Issue:** The package declares `version: 0.9.90` while the milestone/requirements target v1.0.0; the SPDX `license` is `BUSL-1.1` but the README badge advertises `license-MIT`; the `package` zip name is hardcoded to the version string (drifts silently on bump). None is a Phase-36 regression, but the OpenTabs descriptors this phase vendors are stamped `license: 'MIT'` in-descriptor while the package is BUSL-1.1, so the license story now spans two values and deserves a deliberate note. Not a code defect.
**Issue:** The package declares `version: 0.9.90` while the milestone/requirements target v1.0.0, and the `package` zip name is hardcoded to the version string (drifts silently on bump). The SPDX field, README badge, and vendored OpenTabs descriptors now consistently advertise MIT. The remaining version drift is not a Phase-36 regression or a code defect.

**Fix:** Out of Phase-36 scope; recommend a metadata-reconciliation pass (align the SPDX license with the badge, parameterize the zip name) tracked separately.
**Fix:** Out of Phase-36 scope; recommend a version-metadata reconciliation pass that parameterizes the zip name.

---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,13 +275,13 @@ The override only works because the slug-suffix branch (lines 179-188) saves it.

---

#### LO-03: `package.json` version/license/badge metadata is internally inconsistent (pre-existing, surfaced by this phase's audit)
#### LO-03: `package.json` version/package filename metadata is internally inconsistent (pre-existing, surfaced by this phase's audit)

**File:** `package.json:3` (`"version": "0.9.90"`), `:71` (`"license": "BUSL-1.1"`), `:133` (badge `license-MIT`), `:24` (`package` script hardcodes `fsb-v0.9.90.zip`)
**File:** `package.json:3` (`"version": "0.9.90"`), `:71` (`"license": "MIT"`), `:133` (badge `license-MIT`), `:24` (`package` script hardcodes `fsb-v0.9.90.zip`)

**Issue:** The package declares `version: 0.9.90` while the milestone/requirements target v1.0.0; the SPDX `license` is `BUSL-1.1` but the README badge advertises `license-MIT`; the `package` zip name is hardcoded to the version string (drifts silently on bump). None is a Phase-36 regression, but the OpenTabs descriptors this phase vendors are stamped `license: 'MIT'` in-descriptor while the package is BUSL-1.1, so the license story now spans two values and deserves a deliberate note. Not a code defect.
**Issue:** The package declares `version: 0.9.90` while the milestone/requirements target v1.0.0, and the `package` zip name is hardcoded to the version string (drifts silently on bump). The SPDX field, README badge, and vendored OpenTabs descriptors now consistently advertise MIT. The remaining version drift is not a Phase-36 regression or a code defect.

**Fix:** Out of Phase-36 scope; recommend a metadata-reconciliation pass (align the SPDX license with the badge, parameterize the zip name) tracked separately.
**Fix:** Out of Phase-36 scope; recommend a version-metadata reconciliation pass that parameterizes the zip name.

---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
| `home.hero.subtitle` | Shorter, spoken marketing voice |
| `home.hero.cta.getStarted` | CTA punch-up (e.g. “Empezar ahora” / “Jetzt starten”) |
| `home.hero.cta.seeAction` | Natural “see it work” CTA |
| `home.cta.openSource.title` | Open-source + BSL 1.1 line, brand span intact |
| `home.cta.openSource.title` | Open-source + MIT line, brand span intact |
| `home.cta.openSource.desc` | Fork/contribute framing |
| `home.cta.openSource.github` | “View on GitHub” localized |
| `about.hero.title` | “See FSB in Action” with orange span |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,10 +143,10 @@ From showcase/angular/src/app/layout/showcase-shell/showcase-shell.component.htm
<h4 i18n="@@shell.footer.col.project.title">Project</h4>
<a href="https://github.com/lakshmanturlapati/FSB" target="_blank" rel="noopener" ...>GitHub</a>
<a href="https://github.com/lakshmanturlapati/FSB/issues" ...>Issues</a>
<a href="https://github.com/lakshmanturlapati/FSB/blob/main/LICENSE" ...>BSL 1.1 License</a>
<a href="https://github.com/lakshmanturlapati/FSB/blob/main/LICENSE" ...>MIT License</a>
</div>
```
The new "Stats" link is added inside this same `<div class="footer-column">` (Project column), AFTER "BSL 1.1 License". It uses `routerLink="/stats"` (internal route), NOT an external `href`. It is NOT added to `.nav-links`, NOT added to `.nav-mobile`, and NOT added to the footer Pages column.
The new "Stats" link is added inside this same `<div class="footer-column">` (Project column), AFTER "MIT License". It uses `routerLink="/stats"` (internal route), NOT an external `href`. It is NOT added to `.nav-links`, NOT added to `.nav-mobile`, and NOT added to the footer Pages column.

From showcase/angular/prerender-routes.txt (invariant — file is NOT touched by this plan):
```
Expand Down Expand Up @@ -307,7 +307,7 @@ Wire the server-route mode in `showcase/angular/src/app/app.routes.server.ts`:
- This guarantees `/stats` is NEVER prerendered. No `index.html` is emitted for it under any locale subpath, which means `verify-hreflang.mjs` never sees it and the hreflang verifier remains green without any code change.

Wire the footer link in `showcase/angular/src/app/layout/showcase-shell/showcase-shell.component.html`:
- Inside the existing `<div class="footer-column">` whose `<h4>` is "Project" (currently containing GitHub / Issues / BSL 1.1 License), append one new line AFTER the License link:
- Inside the existing `<div class="footer-column">` whose `<h4>` is "Project" (currently containing GitHub / Issues / MIT License), append one new line AFTER the License link:
`<a routerLink="/stats" i18n="@@shell.footer.project.stats">Stats</a>`
- Add the `i18n` marker so this string flows through the existing extraction pipeline; the `lint:i18n` CI gate requires every footer link to carry one.
- DO NOT add a Stats entry to `.nav-links` (desktop nav). DO NOT add it to `.nav-mobile` (mobile nav). DO NOT add it to the footer "Pages" column. The Project column is the only location.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ A hidden `/stats` route on the FSB showcase that renders live GitHub signals for
- `showcase/angular/package-lock.json` — refreshed by `npm install`.
- `showcase/angular/src/app/app.routes.ts` — inserted `{ path: 'stats', loadComponent: () => import('./pages/stats/stats-page.component').then(m => m.StatsPageComponent) }` immediately before `{ path: '**', redirectTo: '' }`.
- `showcase/angular/src/app/app.routes.server.ts` — inserted `{ path: 'stats', renderMode: RenderMode.Client }` between the `dashboard` entry and the `**` wildcard.
- `showcase/angular/src/app/layout/showcase-shell/showcase-shell.component.html` — added one `<a routerLink="/stats" i18n="@@shell.footer.project.stats">Stats</a>` line at line 70, inside the existing Project footer column (`<h4 i18n="@@shell.footer.col.project.title">Project</h4>`), AFTER the BSL 1.1 License link. NOT added to `.nav-links`, NOT added to `.nav-mobile`, NOT added to the Pages footer column.
- `showcase/angular/src/app/layout/showcase-shell/showcase-shell.component.html` — added one `<a routerLink="/stats" i18n="@@shell.footer.project.stats">Stats</a>` line at line 70, inside the existing Project footer column (`<h4 i18n="@@shell.footer.col.project.title">Project</h4>`), AFTER the MIT License link. NOT added to `.nav-links`, NOT added to `.nav-mobile`, NOT added to the Pages footer column.
- 6 × XLIFFs — added the `shell.footer.project.stats` trans-unit (English source + translations).

### chart.js install
Expand All @@ -97,7 +97,7 @@ A hidden `/stats` route on the FSB showcase that renders live GitHub signals for
```html
65 <a href="https://github.com/lakshmanturlapati/FSB" target="_blank" rel="noopener" i18n="@@shell.footer.project.github" [attr.translate]="'no'">GitHub</a>
67 <a href="https://github.com/lakshmanturlapati/FSB/issues" target="_blank" rel="noopener" i18n="@@shell.footer.project.issues" [attr.translate]="'no'">Issues</a>
69 <a href="https://github.com/lakshmanturlapati/FSB/blob/main/LICENSE" target="_blank" rel="noopener" i18n="@@shell.footer.project.license">BSL 1.1 License</a>
69 <a href="https://github.com/lakshmanturlapati/FSB/blob/main/LICENSE" target="_blank" rel="noopener" i18n="@@shell.footer.project.license">MIT License</a>
70 <a routerLink="/stats" i18n="@@shell.footer.project.stats">Stats</a> <-- NEW
```

Expand Down Expand Up @@ -217,7 +217,7 @@ The orchestrator does not have a browser, so the following items are queued for
- Expect the "GitHub rate-limited — retrying at HH:MM" card with a converted local-time clock.

5. **Footer link discoverability:**
- Scroll to the footer → Project column → "Stats" link sits below "BSL 1.1 License".
- Scroll to the footer → Project column → "Stats" link sits below "MIT License".
- Click it → arrives on /stats via internal router (no full-page load).
- Confirm "Stats" is NOT in the desktop nav (Home / About / Agents / Dashboard / Privacy / Support).
- Open the mobile nav (resize to <768 px) → confirm "Stats" is NOT there either.
Expand Down
79 changes: 21 additions & 58 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,58 +1,21 @@
Business Source License 1.1

Parameters

Licensor: Lakshman Turlapati
Licensed Work: FSB v9.0.2 (Full Self-Browsing Chrome Extension)
The Licensed Work is (c) 2025-2026 Lakshman Turlapati.
Additional Use Grant: None
Change Date: 2028-03-29
Change License: Apache License, Version 2.0

For information about alternative licensing arrangements for the Licensed Work,
please contact the Licensor.

Notice

Business Source License 1.1

Terms

The Licensor hereby grants you the right to copy, modify, create derivative
works, redistribute, and make non-production use of the Licensed Work. The
Licensor may make an Additional Use Grant, above, permitting limited production
use.

Effective on the Change Date, or the fourth anniversary of the first publicly
available distribution of a specific version of the Licensed Work under this
License, whichever comes first, the Licensor hereby grants you rights under the
terms of the Change License, and the rights granted in the paragraph above
terminate.

If your use of the Licensed Work does not comply with the requirements currently
in effect as described in this License, you must purchase a commercial license
from the Licensor, its affiliated entities, or authorized resellers, or you must
refrain from using the Licensed Work.

All copies of the original and modified Licensed Work, and derivative works of
the Licensed Work, are subject to this License. This License applies separately
for each version of the Licensed Work and the Change Date may vary for each
version of the Licensed Work released by Licensor.

You must conspicuously display this License on each original or modified copy of
the Licensed Work. If you receive the Licensed Work in original or modified form
from a third party, the terms and conditions set forth in this License apply to
your use of that work.

Any use of the Licensed Work in violation of this License will automatically
terminate your rights under this License for the current and all other versions
of the Licensed Work.

This License does not grant you any right in any trademark or logo of Licensor
or its affiliates (provided that you may use a trademark or logo of Licensor as
expressly required by this License).

TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN
"AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS
OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
MIT License

Copyright (c) 2025-2026 Lakshman Turlapati

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Comment on lines +12 to +13

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include the MIT notice in the extension archive

When a release is built with npm run package:extension, scripts/package-extension.mjs zips only extension/, while the new license notice remains at the repository root and no license file exists under extension/; the changed control-panel copy provides only an external link, not this notice. The newly adopted grant expressly requires the copyright and permission notice to accompany copies or substantial portions, so the distributable extension archive does not satisfy its stated license. Copy the root license into the packaged tree or explicitly add it to the archive.

Useful? React with 👍 / 👎.


THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
![FSB](https://img.shields.io/badge/FSB-Full_Self_Browsing-000000?style=for-the-badge)
![Version](https://img.shields.io/badge/version-0.9.90-0078D4?style=for-the-badge)
![Manifest V3](https://img.shields.io/badge/Manifest_V3-Chrome-34A853?style=for-the-badge&logo=googlechrome&logoColor=white)
![License](https://img.shields.io/badge/license-BSL_1.1-F5C518?style=for-the-badge)
![License](https://img.shields.io/badge/license-MIT-F5C518?style=for-the-badge)

![Stars](https://img.shields.io/github/stars/fullselfbrowsing/FSB?style=flat-square&logo=github&label=Stars)
![Forks](https://img.shields.io/github/forks/fullselfbrowsing/FSB?style=flat-square&logo=github&label=Forks)
Expand Down Expand Up @@ -620,7 +620,7 @@ The root README should describe what a new user needs to understand before insta

## License

This project is licensed under the Business Source License 1.1. See [LICENSE](LICENSE).
This project is licensed under the MIT License. See [LICENSE](LICENSE).

## Support And Contributing

Expand Down
2 changes: 1 addition & 1 deletion extension/ui/control_panel.html
Original file line number Diff line number Diff line change
Expand Up @@ -1773,7 +1773,7 @@ <h3>Release Notes</h3>
<i class="fas fa-gavel"></i>
</div>
<h3>License</h3>
<p>FSB is open source under the BSL 1.1 license</p>
<p>FSB is open source under the MIT license</p>
<a href="https://github.com/LakshmanTurlapati/FSB/blob/main/LICENSE" target="_blank" rel="noopener" class="help-link">View License</a>
</div>

Expand Down
21 changes: 21 additions & 0 deletions mcp/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025-2026 Lakshman Turlapati

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
2 changes: 1 addition & 1 deletion mcp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
![FSB](https://img.shields.io/badge/FSB-Full_Self_Browsing-000000?style=for-the-badge)
[![npm](https://img.shields.io/npm/v/fsb-mcp-server?style=for-the-badge&color=0078D4)](https://www.npmjs.com/package/fsb-mcp-server)
![MCP](https://img.shields.io/badge/MCP-Server-00B4D8?style=for-the-badge)
![License](https://img.shields.io/badge/license-BSL_1.1-F5C518?style=for-the-badge)
![License](https://img.shields.io/badge/license-MIT-F5C518?style=for-the-badge)

**Control your browser from any MCP client.**

Expand Down
2 changes: 1 addition & 1 deletion mcp/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion mcp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "fsb-mcp-server",
"version": "0.10.0",
"description": "FSB Browser Automation MCP Server",
"license": "BUSL-1.1",
"license": "MIT",
"author": "Lakshman Turlapati",
"contributors": [
{
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
"name": "OpenAI Codex"
}
],
"license": "BUSL-1.1",
"license": "MIT",
"engines": {
"node": ">=24.0.0",
"chrome": ">=88.0.0"
Expand Down
2 changes: 1 addition & 1 deletion showcase/about.html
Original file line number Diff line number Diff line change
Expand Up @@ -1095,7 +1095,7 @@ <h4>Pages</h4>
<h4>Project</h4>
<a href="https://github.com/fullselfbrowsing/FSB" target="_blank" rel="noopener">GitHub</a>
<a href="https://github.com/fullselfbrowsing/FSB/issues" target="_blank" rel="noopener">Issues</a>
<a href="https://github.com/fullselfbrowsing/FSB/blob/main/LICENSE" target="_blank" rel="noopener">BSL 1.1 License</a>
<a href="https://github.com/fullselfbrowsing/FSB/blob/main/LICENSE" target="_blank" rel="noopener">MIT License</a>
</div>
</div>
</div>
Expand Down
Loading
Loading