refactor(events): rename activities module to events + wire VITE_APP_NAME for per-deployment branding #94

Merged
padreug merged 9 commits from refactor/events-module-rename into dev 2026-06-09 18:18:27 +00:00

9 commits

Author SHA1 Message Date
2ae119e390 chore(events): finish sortir → bouge sweep in .env.example
Three sortir-era references missed in the prior cleanup commits, plus
one stale "activities" doc-comment:

- Line 6 (VITE_APP_NAME comment): cfaun ships the events app as "Sortir"
  → "Bouge". Native-French feedback retired the Sortir branding.
- Line 23 (VITE_LNBITS_NOSTR_TRANSPORT_PUBKEY comment): "activities
  ticket scanner" → "events ticket scanner".
- Line 44 (section header): "Activities / Sortir Configuration" →
  "Events App Configuration".
- Line 93 (VITE_HUB_EVENTS_URL example): https://sortir.example.comhttps://events.example.com (the comment is the subdomain-mode
  example; using the generic app name is cleaner than baking in any
  specific deployment's brand).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 20:12:44 +02:00
01e3133f41 i18n(events): finish activité/actividad → événement/evento sweep
User did the noun rename in fr.ts and es.ts; this commits it plus the
gender-agreement fixes needed because événement (m) and evento (m) take
different agreements than activité (f) and actividad (f).

French (fr.ts):
- "Aucune activité trouvée" → "Aucun événement trouvé"
- "vos activités préférées" → "vos événements préférés"
- "d'une activité ... pour la sauvegarder" → "d'un événement ... pour
  le sauvegarder"

Spanish (es.ts):
- "tus actividades favoritas" → "tus eventos favoritos"
- "cualquier actividad ... para guardarla" → "cualquier evento ... para
  guardarlo"

Strings already covered in earlier commits (title, createNew, noEvents,
the settings.loginPrompt full-replace, etc.) untouched here.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 20:09:22 +02:00
3e84d84bf1 refactor(events): conditional brand in console label, tighten docs
In the standalone events app:

- Add `APP_LABEL` next to `APP_NAME` in `events-app/app.ts`. It reads
  as `Events` on unbranded builds and `Events (Bouge)` (etc.) when
  `VITE_APP_NAME` is set to anything other than "Events"
  (case-insensitive). The four console messages (Starting / initialized
  / started / Failed to start) all use APP_LABEL, so unbranded dev
  doesn't show the redundant `Events (Events)`. `acceptTokenFromUrl`
  keeps the raw `APP_NAME` — it's a cross-subdomain token namespace
  identifier, not display copy.

- `vite.events.config.ts` doc-comment: collapse the redundant
  "cfaun sets X; future deployments can override (e.g. X)" into the
  shorter "cfaun overrides to 'Bouge' via NixOS. Defaults to 'Events'."
  The override mechanism is the same, and the example was duplicating
  the value pointlessly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 20:00:10 +02:00
bf77d2a95a chore(events): scrub leftover sortir/activities references
Cleanup pass caught by review after the main rename landed. None of
these were live code paths — all were doc-comments, example configs,
or build-script labels.

- nginx.conf.example: path-mode example URLs `/activities/` → `/events/`,
  alias `dist-activities` → `dist-events`, the "Sortir / activities
  standalone" parenthetical dropped, and the subdomain example
  `sortir.<domain>` → `events.<domain>`.
- package.json: `dev:all` concurrently process label `sortir` → `events`
  and `build:demo` `VITE_BASE_PATH=/sortir/` → `/events/`. The build
  script call already used `npm run build:events`; this just aligns the
  path prefix and the process tag.
- src/lib/router-helpers.ts: the standalones-list comment for
  `installLenientAuthGuard` updated `activities` → `events`.
- src/modules/market/composables/useMarket.ts: the VITE_APP_NAME
  example in the comment switched from "Sortir" to "Bouge" — matching
  the deployment direction in vite.events.config.ts.
- vite.events.config.ts: VITE_BASE_PATH doc-comment examples switched
  from `/sortir/` and `sortir.ariege.io` to `/events/` and
  `bouge.ariege.io`; the cfaun branding example now says "Bouge".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 19:54:55 +02:00
dfb3494024 fix(events): use domain noun in description, not brand name
PWA manifest description and HTML meta description were templating
the brand name in ("Discover Bouge near you" / "Discover Sortir near
you"), which conflates app-name with domain noun. The description
should say what the app does, not repeat the brand.

Switches to static "Discover events near you" so the description
remains stable across deployments while the title and short_name still
flex per VITE_APP_NAME.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 19:49:53 +02:00
f7eb633689 fix(events): drop lowercase from PWA description brand name
The description template was `Discover ${APP_NAME.toLowerCase()} near
you`, producing "Discover bouge near you" / "Discover events near you"
— inconsistent with the title casing. The brand should match the
PWA name/short_name, not be lowercased.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 19:40:24 +02:00
89afd83f1a docs(events): update activities→events references after module rename
Updates documentation that referenced the pre-rename `src/modules/
activities/` paths, useActivities composables, and ACTIVITIES_*
SERVICE_TOKENS to match the new `src/modules/events/` layout.

Touched:
- docs/nostr-patterns/{README,publishing,subscriptions,replaceable-events}.md:
  the "Canonical: src/modules/activities/composables/useRSVP.ts" anchors
  used throughout these pattern docs now point at the renamed paths.
- CLAUDE.md Payment Rails Pattern section: "Activities is the first
  consumer" / "Activities passes [...]" → "Events".

The mobile-browser docs reference to "Activity Lifecycle Kills" (line
810) is left alone — that's Android browser terminology, not the
events module.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 19:38:54 +02:00
a7ffe74337 feat(events): wire VITE_APP_NAME through PWA manifest, HTML, runtime
The standalone events app was hardcoded to "Sortir" branding (PWA name
"Sortir — Activités & Événements", HTML title, console logs, URL token
handler ID). VITE_APP_NAME was already plumbed per-standalone via NixOS
`services.webapp-standalones.<app>.displayName` in server-deploy, but
nothing inside the app consumed it.

Routes the env through every app-name display point:

- PWA manifest `name` / `short_name` (vite.events.config.ts): both pull
  from `process.env.VITE_APP_NAME`, defaulting to `'Events'` when
  unset. Description, `id`, and `lang` un-frenched to brand-agnostic
  defaults. The Vite config also writes the resolved value back to
  `process.env` so Vite's built-in HTML `%VITE_APP_NAME%` substitution
  picks up the fallback.

- HTML title + apple-mobile-web-app-title + description (events.html):
  use `%VITE_APP_NAME%` for build-time substitution. `<html lang>` drops
  the hardcoded `fr` (locale is now runtime-driven via i18n).

- Runtime branding (events-app/app.ts, main.ts): a top-level
  `APP_NAME = (import.meta.env.VITE_APP_NAME as string) || 'Events'`
  feeds the console logs, the offline-ready notification, and the
  `acceptTokenFromUrl()` cross-subdomain handler.

- Main events route title (modules/events/index.ts:32): reads
  VITE_APP_NAME so document.title / breadcrumbs show the deployment
  brand. Sub-route titles (Calendar, Map, Favorites) stay literal —
  they're contextual labels, not the app name.

- .env.example now explains the per-standalone scoping and points at
  the NixOS knob for production deploys.

Domain-noun strings ("Search events…", RSVP labels, "Your event was
created") stay in i18n and translate per language — VITE_APP_NAME does
not flow into those.

Verification: `pnpm dev:events` → default `Events` brand;
`VITE_APP_NAME=Bouge pnpm dev:events` → PWA manifest, tab title, console
logs all show "Bouge". cfaun's existing `displayName = "Sortir"` keeps
producing a Sortir-branded build via the same path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 19:37:32 +02:00
131eef88ec refactor(events): rename activities module to events
The module name "activities" was originally chosen to avoid colliding
with Nostr's `Event` type. In practice the defense added friction without
preventing confusion: the backend extension is named `events`, NIP-52
calls them "Calendar Events", and the UI already displayed "Events".
The collision with `nostr-tools` `Event` is handled cleanly by the
existing `import { Event as NostrEvent }` alias pattern (already in 5
files inside the module).

Renames `src/modules/activities` → `src/modules/events` and
`src/activities-app` → `src/events-app`. Touches:

- Module dir + 48 internal files (types, services, composables, views,
  components, store) renamed with case-sensitive replacement
  (`Activity`→`Event`, `Activities`→`Events`).
- Route paths: `/activities/*` → `/events/*`. The existing legacy
  `/events` route (ticketing management view) moves to `/my-events`,
  freeing `/events` for the canonical feed/discovery page. A new
  "My Events" entry is added to the user dropdown menu for access.
- Standalone PWA entry: `activities.html` → `events.html`,
  `vite.activities.config.ts` → `vite.events.config.ts`.
- npm scripts: `dev:activities`/`build:activities`/`preview:activities`
  → `:events`. `build:demo` and `dev:all` updated accordingly.
- DI tokens: `SERVICE_TOKENS.ACTIVITIES_*` → `EVENTS_*`.
- Hub config: `appConfig.modules.activities` → `modules.events`.
- i18n: `activities.*` namespace → `events.*` in en/fr/es locales;
  English domain strings updated ("Activities"→"Events", "Search
  activities..."→"Search events..."). French/Spanish display values
  realigned to "Événements"/"Eventos" at the title key; deeper
  translation cleanup left for a follow-up.
- Hub icon label: "Activities" → "Events"; env key
  `VITE_HUB_ACTIVITIES_URL` → `VITE_HUB_EVENTS_URL` (also updated in
  `.env.example`).
- Stale `CreateActivityDialog.vue` removed (only referenced from a
  defunct comment; `CreateEventDialog.vue` is the live one).

Build-output dir renamed `dist-activities/` → `dist-events/`; the
`build:events` npm script reflects the new name. server-deploy still
hardcodes `buildScript = "build:activities"` and `distDir =
"dist-activities"` in `modules/services/standalones.nix:46-47`; a
matching update there needs to land before this branch's webapp commit
gets a flake-input bump.

`Event` naming inside the module no longer collides with the Nostr
`Event` import — those 5 files already use the `NostrEvent` alias.
Disambiguation inside `EventsNostrService.queryCalendarEvents` was
needed: local `events`/`event` variables for the domain side, with
`nostrEvent`/`nostrEvents` for the protocol side.

vue-tsc passes. PWA manifest still hardcodes "Sortir" branding; that
is templated through `VITE_APP_NAME` in a follow-up commit on the
same branch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 17:39:24 +02:00