Anonymize Quantinno/QFAF branding for public build with hidden reveal toggle#66
Merged
Merged
Conversation
… toggle
Public-facing default now shows generic labels — "Quantinno" -> Manager,
"QFAF" -> Fund, "Quantinno Fundamental Arbitrage Fund" -> Fundamental
Arbitrage Fund. Bare-noun mapping lets a preceding article flow through
naturally ("the QFAF" -> "the Fund") while standalone labels stay clean
("QFAF Value" -> "Fund Value").
- src/branding.ts: transform (brandText) + global localStorage-backed reveal
store (useSyncExternalStore, default off) so every subscribed component
updates live with no page reload.
- src/hooks/useSecretReveal.ts + WorkspaceTab: five rapid clicks on the brand
flip real names on/off, with a brief confirmation. No affordance — hidden
from public users.
- getPopupContent() is the single chokepoint for all 55 popup strings; other
user-visible strings across components/formulas/Excel/chart legend route
through brandText().
- Only display strings changed; data-model fields, CSS classes, and CSV/Excel
serialization keys keep the literal qfaf/quantinno spelling, so no new
CalculatorInputs field and CSV/Excel round-trips are unaffected.
- Documented as D-029 in docs/DECISIONS.md.
Build, 419 tests, lint (0 errors), and Prettier all pass; browser-verified
default anonymized state and the secret reveal toggle.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S9oJbhvHXD2pJqwobUyxno
Deploying enhanceddirectindexingcalc with
|
| Latest commit: |
f2fe9a7
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://98a68ef3.enhanceddirectindexingcalc.pages.dev |
| Branch Preview URL: | https://claude-manager-name-anonymiz.enhanceddirectindexingcalc.pages.dev |
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 & why
For the general-public build, the specific manager brand Quantinno and its fund QFAF / Quantinno Fundamental Arbitrage Fund are now replaced with generic labels. Anonymized is the default; the real names can be revealed for internal use via a hidden trigger. Logged as D-029 in
docs/DECISIONS.md.Anonymized mapping
QuantinnoQFAFQuantinno Fundamental Arbitrage Fund(incl.(QFAF)gloss)Bare-noun mapping is intentional so an article in the source prose flows through naturally ("the QFAF" → "the Fund", "Quantinno alpha" → "Manager alpha") while standalone labels stay clean ("QFAF Value" → "Fund Value", not "the Fund Value").
Hidden reveal toggle
Five rapid clicks on the workspace brand (
.wx-brand) flip real names on/off, with a brief "Internal names on / Anonymized" confirmation. No cursor, tooltip, or ARIA affordance — undiscoverable to public users. State persists inlocalStorage(taxCalc:reveal-brand, default off).How it works
src/branding.ts— thebrandText()transform plus a globallocalStorage-backed reveal store built onuseSyncExternalStore, so every subscribed component updates live with no page reload (in-progress inputs preserved).src/hooks/useSecretReveal.ts— the click-sequence detector wired intoWorkspaceTab.getPopupContent()is the single chokepoint for all 55 popup strings; the remaining ~125 user-visible strings across components, formulas, Excel export, and the chart legend route throughbrandText().qfaf/quantinnospelling — so no newCalculatorInputsfield was added and CSV/Excel round-trips are unaffected.Verification
npm run build(tsc + vite) ✓npm run test:run— 419/419 pass ✓npm run lint— 0 errors ✓ ·npm run format:check✓Screenshots
Anonymized default shows "Fund On" chip / "Fund by" section; revealed state shows "QFAF On" and the "Internal names on" flash next to the brand.
🤖 Generated with Claude Code
https://claude.ai/code/session_01S9oJbhvHXD2pJqwobUyxno
Generated by Claude Code