-
Notifications
You must be signed in to change notification settings - Fork 3
Write a hash-tag blog post. #73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis pull request replaces pnpm with bun (v1.3.4) across CI, Docker, scripts, and the justfile; updates packageManager and install/build commands accordingly; renames package namespace from moq to kixelated (e.g., kixelated/hang, kixelated/signals/react) and updates imports in components and docs; adds a new blog page; and adjusts astro config and other documentation to reference the new package names. Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🧰 Additional context used🪛 LanguageToolsrc/pages/blog/hash-tag-community.mdx[style] ~11-~11: Consider using a synonym to be more concise. (A_LOT_OF) [style] ~14-~14: Consider setting off ‘too’ with commas if you want to emphasize an abrupt change of thought. (MISSING_COMMA_WITH_TOO) [grammar] ~25-~25: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) [uncategorized] ~27-~27: The official name of this software platform is spelled with a capital “H”. (GITHUB) [style] ~41-~41: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE) [style] ~42-~42: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE) [style] ~114-~114: To elevate your writing, try using a synonym here. (HARD_TO) [grammar] ~121-~121: Use a hyphen to join words. (QB_NEW_EN_HYPHEN) [grammar] ~126-~126: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) [uncategorized] ~144-~144: A possessive apostrophe is required here. (PRESIDENT_TRUMP) [style] ~148-~148: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD) [style] ~167-~167: ‘Last but not least’ might be wordy. Consider a shorter alternative. (EN_WORDINESS_PREMIUM_LAST_BUT_NOT_LEAST) [style] ~181-~181: ‘Yeah’ is rather colloquial language. To make your writing more formal, re-evaluate if it is necessary in this context. (SO_YEAH) [grammar] ~182-~182: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) [style] ~188-~188: Consider removing “of” to be more concise (ALL_OF_THE) Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/components/watch.tsx (1)
26-26: Fix formatting to resolve pipeline failure.The pipeline indicates a formatting issue in this section. Run Biome to fix the formatting.
#!/bin/bash # Fix formatting issue bun exec biome check --fix src/components/watch.tsx
🧹 Nitpick comments (2)
.github/workflows/pr.yml (1)
17-18: Consider adding Bun dependency caching.The workflow could benefit from caching Bun dependencies to improve CI performance. This is optional but recommended for faster builds.
💡 Suggested cache configuration
- uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 + cache: true - run: bun install --frozen-lockfile - run: bun run checkAlternatively, you can use the manual cache action:
- uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 + + - uses: actions/cache@v4 + with: + path: ~/.bun/install/cache + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + ${{ runner.os }}-bun- - run: bun install --frozen-lockfile - run: bun run checksrc/pages/blog/hash-tag-community.mdx (1)
104-127: Consider hyphenating compound adjective.Line 120: "P2P compatible clients" should be "P2P-compatible clients" when used as a compound adjective.
This is a minor style improvement for technical writing clarity.
🔎 Proposed fix
-But I think with a few small tweaks, it's possible to use a CDN for web browsers and iroh for P2P compatible clients. +But I think with a few small tweaks, it's possible to use a CDN for web browsers and iroh for P2P-compatible clients.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (5)
bun.lockis excluded by!**/*.lockpnpm-lock.yamlis excluded by!**/pnpm-lock.yamlpublic/blog/hash-tag-community/hash.pngis excluded by!**/*.pngpublic/blog/hash-tag-community/live.pngis excluded by!**/*.pngpublic/blog/hash-tag-community/ui.pngis excluded by!**/*.png
📒 Files selected for processing (12)
.github/workflows/pr.yml(1 hunks)CLAUDE.md(2 hunks)Dockerfile(1 hunks)astro.config.ts(2 hunks)justfile(1 hunks)package.json(2 hunks)src/components/publish.tsx(1 hunks)src/components/support.tsx(1 hunks)src/components/watch.tsx(1 hunks)src/pages/blog/first-cdn.mdx(4 hunks)src/pages/blog/hash-tag-community.mdx(1 hunks)src/pages/source.mdx(1 hunks)
🧰 Additional context used
🪛 GitHub Actions: pr
src/components/publish.tsx
[warning] 1-1: Biome organize-imports: Imports/exports should be sorted.
src/components/watch.tsx
[error] 24-28: File content differs from formatting output. Run Biome format/organize to fix.
🪛 LanguageTool
src/pages/blog/hash-tag-community.mdx
[style] ~11-~11: Consider using a synonym to be more concise.
Context: ... --- # Hash Tag Community There's been a LOT of new contributions to the project thanks...
(A_LOT_OF)
[style] ~14-~14: Consider setting off ‘too’ with commas if you want to emphasize an abrupt change of thought.
Context: ...sunny Uruguay for the summer camp week. You too can fly out and have awkward conversati...
(MISSING_COMMA_WITH_TOO)
[grammar] ~24-~24: Ensure spelling is correct
Context: ...lated, kixelated, kixelated` like a beatlejuice knockoff. I created a [moq-dev](https:...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[uncategorized] ~26-~26: The official name of this software platform is spelled with a capital “H”.
Context: ...a moq-dev Github organization to reflect the community's...
(GITHUB)
[style] ~40-~40: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...oq/hang): Opinionated media library. - [@moq/hang-ui](https://www.npmjs.com/package/...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~41-~41: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... for said opinionated media library. - [@moq/signals](https://www.npmjs.com/package/...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~113-~113: To elevate your writing, try using a synonym here.
Context: ...of the improved QoE and scale, but it's hard to beat the cost savings of P2P. `iroh...
(HARD_TO)
[grammar] ~120-~120: Use a hyphen to join words.
Context: ... a CDN for web browsers and iroh for P2P compatible clients. In fact, I just got ...
(QB_NEW_EN_HYPHEN)
[grammar] ~125-~125: Ensure spelling is correct
Context: ...r-engineer the protocol. The ability to fanout/discover via multiple connections/CDNs ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[uncategorized] ~143-~143: A possessive apostrophe is required here.
Context: ...ut welcome to megacorp. Sometimes money trumps personal satisfaction. ## Go + Java I...
(PRESIDENT_TRUMP)
[style] ~147-~147: In American English, abbreviations like “etc.” require a period.
Context: .../moqt), Akamai, etc). However none are as personally exciti...
(ETC_PERIOD)
[style] ~166-~166: ‘Last but not least’ might be wordy. Consider a shorter alternative.
Context: ...rab now. ## Asymmetric Authentication Last but not least, [einrobin](https://github.com/einrobin...
(EN_WORDINESS_PREMIUM_LAST_BUT_NOT_LEAST)
[style] ~180-~180: ‘Yeah’ is rather colloquial language. To make your writing more formal, re-evaluate if it is necessary in this context.
Context: ...t up the sign/verify responsibilities. So yeah, if you choose to use an asymmetric key...
(SO_YEAH)
[grammar] ~181-~181: Ensure spelling is correct
Context: ...tric key, the CDN can't forge requests. Hurray? Hurray! ## FIN It's tiring being an inf...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~187-~187: Consider removing “of” to be more concise
Context: ... is my legacy, and I greatly appreciate all of the help from the #community. Just a rem...
(ALL_OF_THE)
🔇 Additional comments (23)
astro.config.ts (1)
29-30: LGTM! Package namespace updated correctly.The configuration correctly references the new
@kixelated/hangpackage in both the filesystem allow list and optimization exclusions.Also applies to: 40-40
src/pages/source.mdx (1)
42-43: LGTM! Documentation updated to reflect new package namespace.The package references are correctly updated from
@moq/moqand@moq/hangto@kixelated/moqand@kixelated/hang, maintaining consistency with the codebase changes.src/components/watch.tsx (1)
2-3: LGTM! Import paths updated correctly.The import paths are correctly updated to use the
@kixelated/hangpackage.src/components/support.tsx (1)
5-5: LGTM! Dynamic import path updated correctly.The dynamic import correctly references the new
@kixelated/hang/support/elementpackage path.justfile (1)
11-54: LGTM! Complete migration from pnpm to Bun.All commands have been correctly updated to use Bun equivalents:
pnpm i→bun ipnpm exec→bun execpnpm run→bun runpnpm test→bun testpnpm upgrade→bun upgradeThe command structure and functionality remain intact while adopting the new package manager.
src/pages/blog/first-cdn.mdx (1)
34-34: LGTM! Blog post updated with new package namespace.All references to the Hang library and related packages have been correctly updated from the
@moqnamespace to@kixelatednamespace throughout the blog post:
- Text references and code examples updated
- Import statements in code samples reflect the new package paths
- The migration is consistent across all occurrences
Also applies to: 40-40, 54-54, 174-174, 189-189
.github/workflows/pr.yml (1)
13-15: No action needed. Bun version 1.3.4 is a valid release (published 5 days ago), and the version is available for installation. The specification in the workflow is correct.src/pages/blog/hash-tag-community.mdx (7)
1-8: LGTM!The frontmatter is correctly structured for an Astro blog post with all required fields present.
10-21: Introduction sets the casual, personal tone effectively.The reference to the Montevideo Tech Summer Camp and the informal style are appropriate for this blog post.
46-73: LGTM!The OBS integration section is well-structured with proper attribution to contributors and clear technical explanations.
75-102: LGTM!Great acknowledgment of frontend contributions with proper links and a welcoming tone for future contributors.
146-164: LGTM!Good technical overview of alternative MoQ implementations and the rationale for moq-lite. The historical context about previous Go implementations adds valuable perspective.
166-184: LGTM!Clear explanation of asymmetric authentication benefits with proper technical references. The casual tone ("So yeah") is appropriate for this blog post format.
185-193: LGTM!Appropriate conclusion with clear calls to action and author attribution.
Dockerfile (3)
7-8: LGTM!The production dependencies installation correctly uses Bun with appropriate flags (
--production --frozen-lockfile) and proper cache configuration.
10-12: LGTM!Build stage correctly installs all dependencies and runs the build command using Bun.
14-18: LGTM!The final stage correctly uses Bun to run the server entry point. Bun's Node.js compatibility ensures this will work with the Astro-generated server code.
CLAUDE.md (3)
32-32: LGTM!Package manager documentation correctly updated to reflect the migration from pnpm to Bun v1.3.4.
36-41: LGTM!Documentation correctly updated to reflect:
- Package rename from
@moq/hangto@kixelated/hang- Addition of the watching component
The custom web component references (
<hang-publish>,<hang-watch>,<hang-support>) align with the documented component files.
70-70: LGTM!Consistent package reference update throughout the documentation.
package.json (3)
13-13: LGTM!The fix script correctly updated to use
bun audit fixinstead ofpnpm audit fix, consistent with the package manager migration.
34-34: LGTM!Package manager field correctly updated to
bun@1.3.4, consistent with the Dockerfile and CLAUDE.md documentation.
16-16: Version increase from 0.1.0 to 0.6.1 is valid but requires verification of compatibility.The dependency changed from
@moq/hang^0.1.0 to@kixelated/hang^0.6.1. The package @kixelated/hang is published on npm, confirming the version 0.6.1 exists. Verify that this significant version jump (0.1 → 0.6) does not introduce breaking changes that affect this project's functionality.
| FROM node:slim AS base | ||
| ENV PNPM_HOME="/pnpm" | ||
| ENV PATH="$PNPM_HOME:$PATH" | ||
| FROM oven/bun:1.3.4-slim AS base |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use Bun 1.3.5 instead of 1.3.4.
Bun 1.3.4 is confirmed as a stable, released version, but Bun 1.3.5 (released 3 days ago) includes additional bug fixes and improvements. Update the base image to oven/bun:1.3.5-slim for the latest stable release.
🤖 Prompt for AI Agents
In Dockerfile around lines 1 to 1, the base image pins oven/bun:1.3.4-slim;
update the tag to oven/bun:1.3.5-slim to use the newer stable Bun release.
Modify the FROM line to reference oven/bun:1.3.5-slim (no other changes needed).
| import { adjectives, animals, uniqueNamesGenerator } from "unique-names-generator"; | ||
| import { createSignal } from "solid-js"; | ||
|
|
||
| import "@moq/hang/support/element"; | ||
| import "@moq/hang/publish/element"; | ||
| import "@kixelated/hang/support/element"; | ||
| import "@kixelated/hang/publish/element"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix import organization to resolve pipeline failure.
The pipeline indicates imports need to be sorted. Run Biome to fix the import order.
#!/bin/bash
# Fix import organization issue
bun exec biome check --fix src/components/publish.tsx🧰 Tools
🪛 GitHub Actions: pr
[warning] 1-1: Biome organize-imports: Imports/exports should be sorted.
🤖 Prompt for AI Agents
In src/components/publish.tsx around lines 1 to 5, the import statements are not
sorted which fails the CI lint/format pipeline; run Biome to auto-fix import
ordering (e.g., execute bun exec biome check --fix src/components/publish.tsx or
run your project’s configured formatter) so the imports are organized per
project rules, then re-run tests/CI and commit the updated file.
| ## moq-dev | ||
| But first, some arbitrary renaming to break workflows. | ||
| No more typing `kixelated`, `kixelated`, `kixelated` like a beatlejuice knockoff. | ||
|
|
||
| I created a [moq-dev](https://github.com/moq-dev) Github organization to reflect the community's newfound professionalism. | ||
|
|
||
| - [moq-dev/moq](https://github.com/moq-dev/moq): Rust/Typescript libraries. | ||
| - [moq-dev/obs](https://github.com/moq-dev/obs): (*spoiler alert*) OBS plugins. (*spoiler alert*) | ||
| - [moq-dev/gstreamer](https://github.com/moq-dev/gstreamer): Gstreamer plugins. | ||
| - [moq-dev/moq.dev](https://github.com/moq-dev/moq.dev): This website. So meta. | ||
| - [moq-dev/web-transport](https://github.com/moq-dev/web-transport): Rust/Typescript WebTransport libraries. | ||
|
|
||
| There's also a new `@moq` NPM organization. | ||
| However, I've yet to publish *working* packages under these sick new names yet because of the yet another obscure bundler bug. | ||
| The Javascript ecosystem is an absolute mess. | ||
|
|
||
| - [@moq/lite](https://www.npmjs.com/package/@moq/lite): Generic network transport. | ||
| - [@moq/hang](https://www.npmjs.com/package/@moq/hang): Opinionated media library. | ||
| - [@moq/hang-ui](https://www.npmjs.com/package/@moq/hang-ui): Optional UI for said opinionated media library. | ||
| - [@moq/signals](https://www.npmjs.com/package/@moq/signals): Custom signaling library because I could. | ||
|
|
||
| I will keep renaming stuff until moral improves. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❓ Verification inconclusive
Script executed:
cat -n src/pages/blog/hash-tag-community.mdx | sed -n '22,44p'Repository: moq-dev/moq.dev
Repository: moq-dev/moq.dev
Exit code: 0
stdout:
22 ## moq-dev
23 But first, some arbitrary renaming to break workflows.
24 No more typing `kixelated`, `kixelated`, `kixelated` like a beatlejuice knockoff.
25
26 I created a [moq-dev](https://github.com/moq-dev) Github organization to reflect the community's newfound professionalism.
27
28 - [moq-dev/moq](https://github.com/moq-dev/moq): Rust/Typescript libraries.
29 - [moq-dev/obs](https://github.com/moq-dev/obs): (*spoiler alert*) OBS plugins. (*spoiler alert*)
30 - [moq-dev/gstreamer](https://github.com/moq-dev/gstreamer): Gstreamer plugins.
31 - [moq-dev/moq.dev](https://github.com/moq-dev/moq.dev): This website. So meta.
32 - [moq-dev/web-transport](https://github.com/moq-dev/web-transport): Rust/Typescript WebTransport libraries.
33
34 There's also a new `@moq` NPM organization.
35 However, I've yet to publish *working* packages under these sick new names yet because of the yet another obscure bundler bug.
36 The Javascript ecosystem is an absolute mess.
37
38 - [@moq/lite](https://www.npmjs.com/package/@moq/lite): Generic network transport.
39 - [@moq/hang](https://www.npmjs.com/package/@moq/hang): Opinionated media library.
40 - [@moq/hang-ui](https://www.npmjs.com/package/@moq/hang-ui): Optional UI for said opinionated media library.
41 - [@moq/signals](https://www.npmjs.com/package/@moq/signals): Custom signaling library because I could.
42
43 I will keep renaming stuff until moral improves.
44
Script executed:
find . -name "package.json" -type f | head -20Repository: moq-dev/moq.dev
Repository: moq-dev/moq.dev
Exit code: 0
stdout:
./package.json
Script executed:
cat ./package.jsonRepository: moq-dev/moq.dev
Repository: moq-dev/moq.dev
Exit code: 0
stdout:
{
"name": "moq.dev",
"type": "module",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "astro dev --open",
"build": "astro build --production",
"preview": "wrangler pages dev ./dist",
"deploy": "wrangler deploy",
"prod": "astro build --production && wrangler pages dev ./dist --open",
"check": "biome ci && tsc --noEmit",
"fix": "biome check --write && bun audit fix"
},
"dependencies": {
"@kixelated/hang": "^0.6.1",
"astro": "^5.8.2",
"solid-js": "^1.9.7",
"unique-names-generator": "^4.7.1"
},
"devDependencies": {
"@biomejs/biome": "2.0.5",
"vite-plugin-static-copy": "^2.3.1",
"@astrojs/mdx": "4.3.0",
"@astrojs/rss": "^4.0.12",
"@astrojs/solid-js": "5.1.0",
"@astrojs/tailwind": "6.0.2",
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/typography": "^0.5.16",
"tailwindcss": "^3.4.17",
"@types/node": "^22.15.29",
"wrangler": "^4.29.1"
},
"packageManager": "bun@1.3.4"
}
Fix typos and clarify package namespace inconsistency.
- Line 24: "beatlejuice" should be "Beetlejuice" (proper movie/character name)
- Line 26: "Github" should be "GitHub" (official brand capitalization)
- Lines 34-42: The blog discusses publishing packages under the
@moqNPM organization, but the actual website depends on@kixelated/hang(see package.json). Clarify whether the blog post predates the decision to use@kixelatedinstead, or if there's a mismatch between the planned@moqpackages mentioned here and the current implementation.
🧰 Tools
🪛 LanguageTool
[grammar] ~24-~24: Ensure spelling is correct
Context: ...lated, kixelated, kixelated` like a beatlejuice knockoff. I created a [moq-dev](https:...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[uncategorized] ~26-~26: The official name of this software platform is spelled with a capital “H”.
Context: ...a moq-dev Github organization to reflect the community's...
(GITHUB)
[style] ~40-~40: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...oq/hang): Opinionated media library. - [@moq/hang-ui](https://www.npmjs.com/package/...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~41-~41: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... for said opinionated media library. - [@moq/signals](https://www.npmjs.com/package/...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🤖 Prompt for AI Agents
In src/pages/blog/hash-tag-community.mdx around lines 22 to 44, fix three
issues: change "beatlejuice" to "Beetlejuice" on line 24 and "Github" to
"GitHub" on line 26, and resolve the NPM namespace mismatch described in lines
34–42 by clarifying whether the post predates switching to @kixelated or
updating the text to reflect the current packages; either update the blog text
to state that packages are published under @kixelated (and optionally mention
the planned @moq org), or change the references to @moq only after confirming
and aligning package.json/published packages to @moq so the post and codebase
are consistent.
| ## HLS/DASH/CMAF/HAM | ||
| For some reason, the media industry really love acronyms. | ||
| And big bunnies. | ||
|
|
||
| But the media industry **REALLY** loves adding `LL-` in front of an acronym to say "this is the really, really low latency one I swear". | ||
|
|
||
| Unfortunately, `LL-HLS` and `LL-DASH` are not quite low latency enough, so we need some way to convert them to MoQ. | ||
| [sebastianpiq](https://github.com/sebastianpiq) has added a way to [convert a HLS playlist](https://github.com/moq-dev/moq/pull/789) into a MoQ stream. | ||
| That's right, now a megacorp can take their existing HLS infrastructure and put MoQ branding on it! 🎉 | ||
|
|
||
| It still needs quite a bit more work, like adding the aforementioned `LL-HLS` support. | ||
| The next steps are [CMAF passthrough](https://github.com/moq-dev/moq/issues/676) and [MSE playback](https://github.com/moq-dev/moq/issues/682) so said megacorp can support DRM and legacy devices. | ||
| Finally, I have a [super secret plan](https://github.com/moq-dev/moq/issues/685) to serve HLS from a generic MoQ relay to make megacorp adoption even easier. | ||
|
|
||
| I know, it's not exactly the most exciting stuff, but welcome to megacorp. | ||
| Sometimes money trumps personal satisfaction. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix punctuation in American English.
Line 147: "etc)" should be "etc.)" - the period is required after "etc" in American English.
🔎 Proposed fix
-It's no secret that there are plenty of other MoQ implementations in development ([Cloudflare](https://github.com/cloudflare/moq-rs), [Google](https://github.com/google/quiche/tree/4ecc13ccdad3359ff50ea209decb9be243927596/quiche/quic/moqt), [Akamai](https://openmoq.org/), etc).
+It's no secret that there are plenty of other MoQ implementations in development ([Cloudflare](https://github.com/cloudflare/moq-rs), [Google](https://github.com/google/quiche/tree/4ecc13ccdad3359ff50ea209decb9be243927596/quiche/quic/moqt), [Akamai](https://openmoq.org/), etc.).Committable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~143-~143: A possessive apostrophe is required here.
Context: ...ut welcome to megacorp. Sometimes money trumps personal satisfaction. ## Go + Java I...
(PRESIDENT_TRUMP)
🤖 Prompt for AI Agents
In src/pages/blog/hash-tag-community.mdx around lines 128 to 144 (and
specifically the occurrence noted near line 147), fix the American English
punctuation by changing any "etc)" to "etc.)"; ensure the period comes
immediately after "etc" before the closing parenthesis and update any similar
instances where "etc" ends a parenthetical to include the period.
No description provided.