Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b4e5b7c
refactor: restructure extension, share the API contract, redesign the UI
ajithakdev Oct 23, 2026
a41cead
docs: update STATE for the 2027.0.0 branch and Sunday releases
ajithakdev Oct 23, 2026
f57ed64
docs: fix STATE date
ajithakdev Oct 23, 2026
00ba7d0
fix: popup and side panel layout, and PDF export restyling the popup
ajithakdev Oct 23, 2026
d6d9abe
feat: redesign the PDF, CSV and JSON exports
ajithakdev Oct 23, 2026
64dd995
feat: single version source, PDF report ID and watermark, side panel …
ajithakdev Oct 23, 2026
5cbe399
feat: live test view in the side panel, drop em dashes
ajithakdev Oct 23, 2026
b7bde41
docs: plan the meterx.ajithakdev.com site and brand assets
ajithakdev Oct 23, 2026
409f739
fix: placeholder bar for empty figures, side panel fits with a plan set
ajithakdev Oct 23, 2026
68b3b58
fix: lint-clean placeholder bar height
ajithakdev Oct 23, 2026
755b06d
fix: no gap above the pinned results header
ajithakdev Oct 23, 2026
47f445d
refactor: share quality rules with the site, let the worker answer th…
ajithakdev Oct 23, 2026
b443639
feat: new logo and brand assets, product site for meterx.ajithakdev.com
ajithakdev Oct 23, 2026
3f65f41
fix(site): centre content in a 1120px column on wide screens
ajithakdev Oct 23, 2026
2ce0b77
feat(site): redesign the home page hero, features and test phases
ajithakdev Oct 24, 2026
56c1a4e
refactor: split the repo into apps, services and packages, add store …
ajithakdev Oct 24, 2026
f238c29
docs: point every link at the renamed ajithakdev/meterx repo
ajithakdev Oct 24, 2026
d659b5a
refactor: move reports into @meterx/reports and pure helpers into @me…
ajithakdev Oct 24, 2026
66ffd88
feat(site): multi-page redesign that runs the real extension pages
ajithakdev Oct 24, 2026
0b1cc20
docs: architecture, code map generator, README, guide and SEO for the…
ajithakdev Oct 24, 2026
52870ed
docs: tag the layout code blocks
ajithakdev Oct 24, 2026
27f7144
feat(site): store dial on Get MeterX, answer panel, ping comparison, …
ajithakdev Oct 24, 2026
cff6416
feat(site): contribute page with live GitHub issues and contributors
ajithakdev Oct 24, 2026
9dbc077
docs: drop the last dashes in CONTRIBUTING
ajithakdev Oct 24, 2026
60bbbbe
fix(site): phone layout for the home hero, header menu and side panel…
ajithakdev Oct 24, 2026
f4dd186
feat(site): contribute in the header, organised issues, full-width do…
ajithakdev Oct 24, 2026
04b1bc9
fix(site): hero spacing on short windows, pinned side panels, phone c…
ajithakdev Oct 24, 2026
fd8b9a1
feat(site): Get MeterX as a pinned dial beside a stacked store list
ajithakdev Oct 24, 2026
808949c
fix(site): pinned side panels release when the text reaches their bottom
ajithakdev Oct 24, 2026
469c8b9
fix(site): Get MeterX shows the dial beside today's stores, upcoming …
ajithakdev Oct 24, 2026
64660eb
fix(site): side panel sections match the Reports row
ajithakdev Oct 24, 2026
f19c85e
fix(site): demo frames never scroll, and fit at any zoom and window h…
ajithakdev Oct 24, 2026
ab61b54
fix(site): no blank band after the pinned hero
ajithakdev Oct 24, 2026
a37ddcb
docs: site signed off; STATE and changelog for the end-to-end test
ajithakdev Oct 24, 2026
d4399bb
chore: one command each to test the site and the extension locally
ajithakdev Oct 24, 2026
342ee41
chore: dev:ext builds and runs the worker without opening a browser
ajithakdev Oct 24, 2026
6bb2131
fix(site): drop a stray brace in home.css; ignore .wrangler
ajithakdev Oct 24, 2026
0aea998
chore: remove unused code, IDE files and jsdom; point privacy-policy.…
ajithakdev Oct 24, 2026
b62af12
feat(site): complete Open Graph and link card tags, WebSite data, Get…
ajithakdev Oct 24, 2026
81f051b
docs: wrap up 2027.0.0: README, guide, SEO, STATE, changelog and depl…
ajithakdev Oct 24, 2026
b8fedc0
docs: friendlier README for the 2027.0.0 launch
ajithakdev Oct 26, 2026
8f2b6b4
chore: release v2027.0.0
ajithakdev Oct 26, 2026
0756d8c
fix(site): shorter Features title, lastmod in the sitemap
ajithakdev Oct 26, 2026
9e08636
chore: release date 2026-10-27
ajithakdev Oct 26, 2026
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
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,20 @@ jobs:
run: npm run lint

- name: Type check server
run: cd packages/server && npx tsc --noEmit
run: cd services/server && npx tsc --noEmit

- name: Type check extension
run: cd packages/extension && npx tsc --noEmit
run: cd apps/extension && npx tsc --noEmit

- name: Build
run: npm run build

- name: Test server
- name: Test
run: npm run test

- name: Package extension
if: github.event_name != 'pull_request'
run: cd packages/extension/dist && zip -r ../../../meterx-extension.zip .
run: cd apps/extension/dist && zip -r ../../../meterx-extension.zip .

- name: Upload extension
if: github.event_name != 'pull_request'
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,10 @@ Thumbs.db

# graphify knowledge graph (local)
graphify-out/

# taste-skill working files (local)
.taste-skill/
packages/site/dist/
release/
.dev/
.wrangler/
8 changes: 0 additions & 8 deletions .idea/.gitignore

This file was deleted.

12 changes: 0 additions & 12 deletions .idea/MeterX.iml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/inspectionProfiles/Project_Default.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

166 changes: 0 additions & 166 deletions .junie/guidelines.md

This file was deleted.

4 changes: 2 additions & 2 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# MeterX — Authors & Contributors
# MeterX authors and contributors
#
# This file lists everyone who has contributed to MeterX.
# If you submit a PR, add your name here.
Expand All @@ -7,4 +7,4 @@
Ajith Kumar K <ajithkumarks2579@gmail.com> (https://github.com/ajithakdev)

# Contributors
# Your name here — PRs welcome!
# Your name here? PRs welcome!
60 changes: 52 additions & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,52 @@ All notable changes to MeterX are documented here. The format follows [Keep a Ch

## [Unreleased]

## [2027.0.0] - 2026-10-27

### Added
- The PDF report has a faint MeterX watermark, and every page shows a Report ID: a fingerprint of the results, so an edited copy no longer matches a fresh export of the same tests
- Running a test from the side panel shows it live: the summary card switches to the current download, upload, ping and elapsed time, the heading names the phase, and a progress line runs under the header
- New logo: a dial with download and upload arrows crossing into an X, on the toolbar icon, in the app, the PDF and the site. Store images, social cards and icons are generated by `brand/build.mjs`
- Product site in `apps/site` for meterx.ajithakdev.com: home page with an in-page quick test, about, privacy policy (#92), share viewer (#74) and a `/get` link that opens the right store
- The worker answers the site's origin so its quick test can run
- `npm run package` builds one upload for Chrome, Edge and Opera, one for Firefox, and a source archive
- The site is now several pages (Home, How it works, Features, Questions, About) and runs the extension's own popup, side panel and settings with sample data; the home page plays a test as you scroll
- Get MeterX page: every store on the MeterX dial with the needle pointing at the visitor's browser, live and upcoming stores (Chrome Web Store with Brave, Vivaldi and Arc, Firefox for Android, Safari) with their logos. `/get/?go` still jumps straight to the right store
- Questions show the open answer in a panel beside the list on wide screens; How it works compares ping under load on a grade C line and a grade A line
- Contribute page with live repo stats, issues for newcomers and contributors from GitHub, plus a four step setup
- `npm run dev:site` serves the site on port 8788 and `npm run dev:ext` builds the extension and runs the worker on port 8787, for local testing
- Site SEO: every page has Open Graph URL, site name and a large link card, the home page names the site in structured data, and Get MeterX is in the sitemap and open to search engines

### Changed
- Extension source split into `background/`, `lib/` and `pages/`; API constants, version and share links now live in `@meterx/shared`
- New look for the popup, side panel and settings page: one design system (`styles/app.css`), Geist font, light and dark themes
- Self-host server streams test files from memory instead of writing them to disk, and drains uploads without buffering them
- Extension build clears `dist/` first, so deleted files no longer ship in the zip
- PDF report redesigned to match the app: light page, vector text you can select and search, download trend chart, plan comparison and a results table that continues across pages. It is also much smaller, and html2canvas is gone
- CSV and JSON exports redesigned: column names carry units, local time sits next to UTC, numbers are rounded, each row has its quality, and the JSON has a versioned `format` and a summary. Files are now named `meterx-results-<date>`
- The side panel fits the window: the summary, chart and plan stay in view and only the results list scrolls, with its column names pinned. "Show all" is gone because every result is in the list
- One version for everything, read from the root `package.json` and stamped into the manifest at build time (#89)
- Export file names use the browser's own date; every time shown in the extension follows the browser's locale and time zone
- Extension name is now "MeterX by ajithakdev", and empty values show a plain hyphen
- Repository renamed to `ajithakdev/meterx` and split into `apps/`, `services/` and `packages/`; the PDF, CSV and JSON builders became `@meterx/reports`

### Fixed
- Site: demo frames never scroll at any browser zoom, the side panel demo scales to fit the window height, there is no blank band after the pinned hero, and phones get an un-pinned hero, a menu button and full-height panel demos
- Empty figures show a short muted bar with the unit hidden, instead of a stray hyphen next to "Mbps"
- The side panel no longer scrolls when an ISP plan is set: plan rows show the percentage on one line, the status moved into the Results header, and the chart shrinks on shorter panels
- Rows no longer show above the pinned column names while the results list scrolls
- Down, Up and Ping columns in the side panel results have even spacing
- Same-day charts label the axis with times instead of repeating the date, in the browser's own 12 or 24 hour format
- Exporting a PDF no longer restyles the popup while the report renders, and the report no longer ends with a blank page
- Popup fits Chrome's 600px height limit with no scrollbar; upload, ping and loss figures no longer spill into the next cell, and "Good enough for" labels are no longer cut off
- Side panel averages switch to a 2×2 grid on narrow panels instead of overlapping, and the panel never scrolls sideways at 320px
- CHANGELOG moved to Keep a Changelog format and past releases tagged as `v2026.0.0`, `v2026.1.0` and `v2026.2.0` (#91)

### Removed
- html2canvas, jsdom and unused constants in the extension and site
- IDE project files from the repository
- `privacy-policy.md` now only points to the policy on the site, so older store links still reach it

## [2026.2.0] - 2026-04-23

Released on GitHub only. It never went to a store; stores stay on 2026.3.20.1 until 2027.0.0.
Expand Down Expand Up @@ -36,14 +79,14 @@ Released on GitHub only. It never went to a store; stores stay on 2026.3.20.1 un
Shipped to Firefox Add-ons, Edge Add-ons and Opera as store version 2026.3.20.1 ("Edge Migration").

### Added
- Cloudflare Worker (`packages/worker/`) — serverless edge speed test server
- Cloudflare Worker (`services/worker/`): serverless edge speed test server
- Streaming download via ReadableStream (1/5/10/25 MB)
- Upload endpoint (drains body, no storage)
- Ping endpoint (HEAD/GET) for latency
- Health endpoint with edge location from cf-ray header
- CORS support for browser extensions
- Deployed at 300+ edge locations globally, zero cold starts
- Use-case readiness labels — Calls, Streaming, Gaming, Uploads with color indicators
- Use-case readiness labels: Calls, Streaming, Gaming, Uploads with color indicators
- PDF health report export (html2canvas + jsPDF)
- Dark theme matching the extension UI
- Quality assessment, trend analysis, anomaly detection
Expand Down Expand Up @@ -94,7 +137,7 @@ Shipped to Firefox Add-ons, Edge Add-ons and Opera as store version 2026.3.20.1
First store release, store version 2026.3.19.1 ("Major Rewrite One").

### Added
- Monorepo structure with npm workspaces (`packages/server`, `packages/extension`)
- Monorepo structure with npm workspaces (`services/server`, `apps/extension`)
- TypeScript for both server and extension with esbuild bundling
- Compact UI with speed bars, quality badge, and glassmorphic dark theme
- Test history persisted to `chrome.storage.local` (last 200 results)
Expand Down Expand Up @@ -130,8 +173,9 @@ First store release, store version 2026.3.19.1 ("Major Rewrite One").
- Express.js server with test file generation
- Simple popup UI

[Unreleased]: https://github.com/ajithakdev/meterx-server/compare/v2026.2.0...HEAD
[2026.2.0]: https://github.com/ajithakdev/meterx-server/compare/v2026.1.0...v2026.2.0
[2026.1.0]: https://github.com/ajithakdev/meterx-server/compare/v2026.0.0...v2026.1.0
[2026.0.0]: https://github.com/ajithakdev/meterx-server/compare/v0.2.0...v2026.0.0
[0.2.0]: https://github.com/ajithakdev/meterx-server/releases/tag/v0.2.0
[Unreleased]: https://github.com/ajithakdev/meterx/compare/v2027.0.0...HEAD
[2027.0.0]: https://github.com/ajithakdev/meterx/compare/v2026.2.0...v2027.0.0
[2026.2.0]: https://github.com/ajithakdev/meterx/compare/v2026.1.0...v2026.2.0
[2026.1.0]: https://github.com/ajithakdev/meterx/compare/v2026.0.0...v2026.1.0
[2026.0.0]: https://github.com/ajithakdev/meterx/compare/v0.2.0...v2026.0.0
[0.2.0]: https://github.com/ajithakdev/meterx/releases/tag/v0.2.0
Loading
Loading