ci(security): make @fuzefront/security-client publishable + installable now (izzywdev alias) - #260
Merged
Merged
Conversation
…orkflow Add packages/security to lerna.json packages[] and root npm workspaces so tooling and lerna change-detection see it. Add security-packages-publish.yml (mirrors chat-packages-publish.yml) to publish the tsup build to GitHub Packages as @izzywdev/fuzefront-security-client — the owner-scoped alias that lets @fuzefront/security-client ship NOW under the izzywdev account (GitHub Packages ties scope to repo owner, so the @fuzefront-scoped packages-publish.yml stays a no-op until the org transfer). Co-Authored-By: Claude claude-opus-4-8 <noreply@anthropic.com> Claude-Session-Id: cf830721-b1ef-4fe0-a024-035ad280dcf7
Contributor
Automated code review (gate-code-review)Credit balance is too low Report-only — this check never blocks merge. |
izzywdev
pushed a commit
that referenced
this pull request
Jul 15, 2026
master's lockfile drifted: the packages/security workspace (@fuzefront/security-client@0.1.0) and its dev-deps (@types/node@18.19.0, openapi-typescript@7.13.0, typescript@5.1.6) were declared in package.json but never added to package-lock.json (introduced by #260), so `npm ci` failed strictly on every PR. Regenerated the lock (npm install --package-lock-only) to add only the missing workspace + dev-deps; no other dependency versions change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016PMVXVQ5XUh8ZfFx8Vr7XW
izzywdev
added a commit
that referenced
this pull request
Jul 21, 2026
* feat(launcher): compact icon+name tiles in the 9-dots app menu
The 9-dots top-bar launcher reused the full-detail <AppCard> (icon, name,
integration badge, health, description), making it a dense wall of text.
Model it on the Google app launcher instead: a new <AppTile> DS primitive
renders only the app icon and its menu label in a 3-column grid.
- Add design-system/components/launcher/AppTile.{jsx,d.ts,prompt.md} — a
compact icon+name cell reusing the HealthDot primitive; offline apps stay
grayscaled/dimmed/inert. <AppCard> remains for the dashboard/management
surfaces that legitimately need full detail.
- Regenerate the DS barrels + manifest (build.mjs).
- AppSelector: swap AppCard -> AppTile, drop the description, widen the grid
to 3 columns. The .app-grid-button hook and per-app name text are
unchanged, so the existing launcher e2e assertions still match.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PMVXVQ5XUh8ZfFx8Vr7XW
* fix(launcher): AppTile falls back to emoji glyph on icon load error
The onError handler only hid the broken <img>, leaving a blank space and
contradicting the documented contract ("falls back to a per-type emoji glyph
on error or when absent"). Track the load failure in state and render the
emoji fallback node instead of just hiding the image.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PMVXVQ5XUh8ZfFx8Vr7XW
* build: sync root package-lock.json with the packages/security workspace
master's lockfile drifted: the packages/security workspace
(@fuzefront/security-client@0.1.0) and its dev-deps (@types/node@18.19.0,
openapi-typescript@7.13.0, typescript@5.1.6) were declared in package.json
but never added to package-lock.json (introduced by #260), so `npm ci`
failed strictly on every PR. Regenerated the lock (npm install
--package-lock-only) to add only the missing workspace + dev-deps; no other
dependency versions change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PMVXVQ5XUh8ZfFx8Vr7XW
* build: sync frontend/package-lock.json with chat-client/chat-ui 1.1.0
The packages/chat-client and packages/chat-ui workspaces were bumped to
1.1.0, but frontend/package-lock.json (the frontend is a standalone npm
project, not a root workspace) still pinned them at 1.0.0, so `npm ci` in
gate-frontend-build failed on the version mismatch. Regenerated the frontend
lock (npm install --package-lock-only); only the chat-client/chat-ui
versions change. `npm ci --dry-run` now exits 0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PMVXVQ5XUh8ZfFx8Vr7XW
---------
Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Makes
@fuzefront/security-client(packages/security/) actually publishable and installable so FuzeSocial / Mendys can reintegrate through it.Changes
packages/securitytolerna.jsonpackages[]and to the rootworkspaces(it was in neither, so lerna change-detection + workspace tooling never saw it)..github/workflows/security-packages-publish.yml— mirrors the provenchat-packages-publish.yml: on push tomastertouchingpackages/security/**, builds the tsup output and publishes to GitHub Packages, idempotently (skips an already-published version). No git push / tag, so master'srequired_signaturesis never involved.The scope-vs-owner constraint (important)
GitHub Packages ties the npm scope to the repo owner. Under the current
izzywdevaccount,@fuzefront/*cannot publish (403) — which is exactly whypackages-publish.ymlis gated togithub.repository_owner == 'fuzefront'and no-ops today. The finding's suggested "flip that gate to izzywdev and keep the@fuzefrontscope" would makelerna publish403 on every@fuzefront/*package on every master push, so that gate is intentionally left unchanged as the long-term org-transfer path.Instead we follow the repo's already-established workaround (used for chat packages): publish under the owner-scoped alias
@izzywdev/fuzefront-security-client. Consumers install via an npm alias so their imports keep the canonical name:with a scoped
.npmrc:Once the org transfer lands and
packages-publish.ymlactivates, consumers drop the alias and this workflow is deleted.Signatures / tags
The alias workflow does no
git commit/git push/tag — it onlynpm publishes — so master'srequired_signaturesprotection is not touched (unlike alerna publishversion-bump-and-push, which would be rejected on signed-master).🤖 Generated with Claude Code