Skip to content

chore: update logos to TWN house branding and bump dependencies#16

Open
yokoszn wants to merge 3 commits into
mainfrom
claude/update-logos-dependencies-HMtYx
Open

chore: update logos to TWN house branding and bump dependencies#16
yokoszn wants to merge 3 commits into
mainfrom
claude/update-logos-dependencies-HMtYx

Conversation

@yokoszn

@yokoszn yokoszn commented Jan 29, 2026

Copy link
Copy Markdown
Collaborator
  • Replace SVG logos with new 3D isometric house design with TWN branding
  • Update all package dependencies to latest versions
  • Add pnpm overrides to fix security vulnerabilities:
    • tar (>=7.5.7)
    • esbuild (>=0.25.0)
    • cross-spawn (>=7.0.5)
    • undici (>=6.23.0)
    • @eslint/plugin-kit (>=0.3.4)
    • tmp (>=0.2.4)

https://claude.ai/code/session_01XAvD97p9nnwVyU4CfrXNM5

Summary by CodeRabbit

  • New Features

    • Replaced textual app title with a new inline SVG logo (accessible label) in the navbar.
    • Reworked navigation and footer: new TWN-branded sections (about, privacy, terms, trust centre, learning platform) and updated external links.
    • Updated on-screen branding from "Enclosed" to "TWN" across titles, metadata, locale strings and social/SEO previews.
  • Chores

    • Bumped many dependencies across packages to newer stable versions for maintenance.

✏️ Tip: You can customize this high-level summary in your review settings.

- Replace SVG logos with new 3D isometric house design with TWN branding
- Update all package dependencies to latest versions
- Add pnpm overrides to fix security vulnerabilities:
  - tar (>=7.5.7)
  - esbuild (>=0.25.0)
  - cross-spawn (>=7.0.5)
  - undici (>=6.23.0)
  - @eslint/plugin-kit (>=0.3.4)
  - tmp (>=0.2.4)

https://claude.ai/code/session_01XAvD97p9nnwVyU4CfrXNM5
@coderabbitai

coderabbitai Bot commented Jan 29, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Dependency version bumps across multiple packages, a pnpm overrides section added to root package.json, branding text changed from "Enclosed" to "TWN" in the client, and a new Logo SolidJS component added and integrated into the app layout.

Changes

Cohort / File(s) Summary
Root Configuration
package.json
Bumped devDependency bumpp and added a top-level pnpm overrides section pinning tar, esbuild, cross-spawn, undici, @eslint/plugin-kit, and tmp.
App Client - deps & tooling
packages/app-client/package.json
Multiple dependency/devDependency version bumps (e.g., solid-js, vite, vite-plugin-solid, playwright, lodash-es, unocss etc.).
App Server - deps
packages/app-server/package.json
Runtime and devDependency version updates (e.g., hono, @hono/node-server, date-fns, pino, zod, esbuild, wrangler).
CLI & Shared Packages
packages/cli/package.json, packages/crypto/package.json, packages/lib/package.json
Version bumps for CLI utilities and shared libs (@inquirer/prompts, conf, lodash-es, zod, ofetch, msgpackr, dotenv).
Docs & Site tooling
packages/docs/package.json
Updated documentation/build tooling versions (vitepress, less, figue, lodash-es).
Client static content
packages/app-client/index.html, packages/app-client/src/locales/en.json
Branding and copy updated from "Enclosed" to "TWN" across HTML metadata and English locale strings.
UI Component & Layout
packages/app-client/src/modules/ui/components/logo.tsx, packages/app-client/src/modules/ui/layouts/app.layout.tsx
New Logo SolidJS component added and used in the Navbar; navigation and footer links updated to reflect TWN branding and new external URLs.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped in code with brush and cheer,
A little logo planted here,
Versions climbed, the links rearranged,
New name, new badge — the layout changed,
I nibble carrots, proud and near 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: updating logos to TWN house branding and bumping dependencies, which directly reflects the substantial changes across the codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

- Create Logo component with 3D isometric house SVG design
- Replace text-based navbar title with Logo component
- Update app title from "Enclosed" to "TWN" in locales
- Update index.html meta tags, OG tags, and structured data

https://claude.ai/code/session_01XAvD97p9nnwVyU4CfrXNM5
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jan 29, 2026

Copy link
Copy Markdown

Deploying enclosed-twn with  Cloudflare Pages  Cloudflare Pages

Latest commit: 406619b
Status: ✅  Deploy successful!
Preview URL: https://f43ede37.enclosed-twn.pages.dev
Branch Preview URL: https://claude-update-logos-dependen.enclosed-twn.pages.dev

View logs

- Add TWN IT, Learning Platform, Trust Centre links to footer and dropdown
- Add About, Privacy, Terms links to footer and dropdown
- Update footer text: "Hosted with Cloudflare Pages + KV By TWN"
- Replace all GitHub links to point to TWN-Systems/enclosed
- Update locale strings for TWN branding
- Reorganize dropdown menu with separators

https://claude.ai/code/session_01XAvD97p9nnwVyU4CfrXNM5

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@packages/app-client/src/locales/en.json`:
- Line 51: Change the JSON value for the "title" key from the imperative noun
phrase "Login to TWN" to the verb form "Log in to TWN." so update the "title"
entry in packages/app-client/src/locales/en.json (the "title" key) to read "Log
in to TWN." ensuring punctuation and capitalization match the suggested copy.
- Around line 26-45: Multiple locale JSON files are missing the new translation
keys introduced in en.json for footer and navbar.settings (keys like
footer.about, footer.hosted-by, footer.learning-platform, footer.privacy,
footer.report-issue, footer.terms, footer.trust-centre, footer.twn-it and
navbar.settings.about, navbar.settings.learning-platform,
navbar.settings.privacy, navbar.settings.terms, navbar.settings.trust-centre,
navbar.settings.twn-it); update every non-English locale file (ar, de, es, fr,
hu, id, it, nl, pl, pt-BR, pt, ru, tr, vi, zh-CN, zh-TW) to include these keys
under the same JSON nesting and provide appropriate translations (or temporarily
copy the en.json values as placeholders) so the UI strings are present for all
locales.
🧹 Nitpick comments (1)
packages/app-client/src/modules/ui/layouts/app.layout.tsx (1)

249-257: Use router's A component for internal navigation.

The internal routes (/about, /privacy, /terms) use as="a" which renders a standard anchor tag, causing full page reloads. The Navbar dropdown (lines 188, 193, 198) correctly uses as={A} for the same routes—this should be consistent throughout for client-side navigation.

♻️ Proposed fix to use router component
-          <Button variant="link" as="a" href="/about" class="p-0 text-muted-foreground underline hover:text-primary transition font-normal h-auto">
+          <Button variant="link" as={A} href="/about" class="p-0 text-muted-foreground underline hover:text-primary transition font-normal h-auto">
             {t('footer.about')}
           </Button>
-          <Button variant="link" as="a" href="/privacy" class="p-0 text-muted-foreground underline hover:text-primary transition font-normal h-auto">
+          <Button variant="link" as={A} href="/privacy" class="p-0 text-muted-foreground underline hover:text-primary transition font-normal h-auto">
             {t('footer.privacy')}
           </Button>
-          <Button variant="link" as="a" href="/terms" class="p-0 text-muted-foreground underline hover:text-primary transition font-normal h-auto">
+          <Button variant="link" as={A} href="/terms" class="p-0 text-muted-foreground underline hover:text-primary transition font-normal h-auto">
             {t('footer.terms')}
           </Button>

Comment on lines +26 to +45
"twn-it": "TWN IT",
"learning-platform": "Learning Platform",
"trust-centre": "Trust Centre",
"about": "About",
"privacy": "Privacy",
"terms": "Terms",
"report-bug": "Report Issue",
"logout": "Logout",
"contribute-to-i18n": "Contribute to i18n"
}
},
"footer": {
"crafted-by": "Crafted by",
"hosted-by": "Hosted with Cloudflare Pages + KV By TWN",
"twn-it": "TWN IT",
"learning-platform": "Learning Platform",
"trust-centre": "Trust Centre",
"about": "About",
"privacy": "Privacy",
"terms": "Terms",
"report-issue": "Report Issue",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

LOCALE_DIR="packages/app-client/src/locales"

python - <<'PY'
import json, os, glob

dir_path = "packages/app-client/src/locales"
en_path = os.path.join(dir_path, "en.json")

def flatten(obj, prefix=""):
    keys = set()
    if isinstance(obj, dict):
        for k, v in obj.items():
            new = f"{prefix}.{k}" if prefix else k
            keys.add(new)
            keys |= flatten(v, new)
    elif isinstance(obj, list):
        keys.add(prefix)
    return keys

with open(en_path, encoding="utf-8") as f:
    en = json.load(f)

en_keys = flatten(en)
missing_any = False

for path in sorted(glob.glob(os.path.join(dir_path, "*.json"))):
    if os.path.basename(path) == "en.json":
        continue
    with open(path, encoding="utf-8") as f:
        other = json.load(f)
    other_keys = flatten(other)
    missing = sorted(en_keys - other_keys)
    if missing:
        missing_any = True
        print(f"{path} missing {len(missing)} keys:")
        for k in missing[:50]:
            print("  -", k)
        if len(missing) > 50:
            print("  ...")

if not missing_any:
    print("All locale files contain the en.json keys.")
PY

Repository: TWN-Systems/enclosed

Length of output: 11089


All locale files except en.json are missing the new footer and navbar.settings keys.

Every other locale file (ar, de, es, fr, hu, id, it, nl, pl, pt-BR, pt, ru, tr, vi, zh-CN, zh-TW) is missing the new translation keys you've added to en.json at lines 26-45. Specifically, all are missing:

  • footer.about, footer.hosted-by, footer.learning-platform, footer.privacy, footer.report-issue, footer.terms, footer.trust-centre, footer.twn-it
  • navbar.settings.about, navbar.settings.learning-platform, navbar.settings.privacy, navbar.settings.terms, navbar.settings.trust-centre, navbar.settings.twn-it

Update all locale JSON files to include these keys and their translations to prevent untranslated UI strings for non-English users.

🤖 Prompt for AI Agents
In `@packages/app-client/src/locales/en.json` around lines 26 - 45, Multiple
locale JSON files are missing the new translation keys introduced in en.json for
footer and navbar.settings (keys like footer.about, footer.hosted-by,
footer.learning-platform, footer.privacy, footer.report-issue, footer.terms,
footer.trust-centre, footer.twn-it and navbar.settings.about,
navbar.settings.learning-platform, navbar.settings.privacy,
navbar.settings.terms, navbar.settings.trust-centre, navbar.settings.twn-it);
update every non-English locale file (ar, de, es, fr, hu, id, it, nl, pl, pt-BR,
pt, ru, tr, vi, zh-CN, zh-TW) to include these keys under the same JSON nesting
and provide appropriate translations (or temporarily copy the en.json values as
placeholders) so the UI strings are present for all locales.

"login": {
"title": "Login to Enclosed",
"description": "This is a private instance of Enclosed. Enter your credentials to be able to create notes.",
"title": "Login to TWN",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Prefer verb form: “Log in to TWN.”

Minor copy fix for grammatical correctness in the title.

✏️ Suggested copy tweak
-    "title": "Login to TWN",
+    "title": "Log in to TWN",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"title": "Login to TWN",
"title": "Log in to TWN",
🤖 Prompt for AI Agents
In `@packages/app-client/src/locales/en.json` at line 51, Change the JSON value
for the "title" key from the imperative noun phrase "Login to TWN" to the verb
form "Log in to TWN." so update the "title" entry in
packages/app-client/src/locales/en.json (the "title" key) to read "Log in to
TWN." ensuring punctuation and capitalization match the suggested copy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants