Commit 1f0a581
feat: promote staging localization and UI updates (#137)
* feat(i18n): add locale-aware routing and translate app copy
Wire *next-intl* into app routing, request handling, layouts, and metadata generation.
Move public, auth, admin, chat, invite, unsubscribe, workspace, and workflow widget copy into shared *en*, *es*, and *zh-CN* message catalogs.
Localize navigation, auth callbacks, markdown and legal routes, blog metadata, and workflow tooling, and add audit or sync scripts plus regression tests for locale-aware behavior.
* fix(i18n): localize landing previews and route handling
Precompute localized landing workflow preview payloads and summary rows so
the landing page can render workflow and market previews without loading the
full workspace namespace.
Apply localized routing and header handling for public app and API paths,
localize invite acceptance and workspace file headers, and guard against
missing workspace widget messages in scoped providers.
Add regression coverage for preview rendering, scoped message providers,
invite flows, workspace files, and localized Next header rules.
* fix(workflow-editor): localize block, trigger, and inspector copy
Localize workflow block chrome, condition branch labels, empty states,
summary rows, and input/response field copy through shared workflow
editor messages.
Fix block and sub-block override resolution so built-in tools and
trigger-only configs render translated titles, placeholders,
descriptions, and option labels consistently.
Add regression coverage for workflow blocks, condition inputs,
node editor panels, read-only preview panels, and block-editor
localization helpers.
* fix(i18n): adapt restack to current staging
* fix(auth): avoid double-localized redirects in auth flows
Pass canonical internal paths to `@/i18n/navigation` in the
signup, login, and verify flows so next-intl applies locale
prefixes only once. This fixes redirects like `/es/es/verify` and
`/zh/zh/verify` while keeping browser-level redirects and auth
callback URLs locale-aware.
Add regression coverage for signup, login, and verification
navigation across `es` and `zh-CN`, and document the router
contract in the i18n navigation helper.
Tests: bun run test 'app/(auth)/auth-locale-redirects.test.tsx' 'app/(auth)/verify/use-verification.test.tsx' i18n/utils.test.ts
* fix(i18n): rename Chinese locale contract to zh #133
Replace the app Chinese locale identifier with *zh* across routing,
message catalogs, generated i18n assets, and locale-aware tests.
Rename *apps/tradinggoose/i18n/messages/zh-CN.json* to
*apps/tradinggoose/i18n/messages/zh.json* and regenerate
*apps/tradinggoose/i18n.lock* from the updated *i18n.json* target list.
Keep derived protocol outputs unchanged where regional values are still
required, including Open Graph *zh_CN* and chat speech recognition
*zh-CN*. Add the required dated staging changelog entry in
*changelog/May-30-2026.md* for the branch diff against *origin/staging*.
* fix(invite): preserve localized auth callbacks in invite flow #133
Localize the invite callback URL before encoding it for login and signup redirects so post-auth navigation returns users to the active locale.
Add a signed-out invite flow test that asserts the localized callback URL and reset mocked session state between tests.
* fix(search): remove unnecessary search parameter validation in market routes
* fix(auth): improve localized sign-in and invite handling
Co-authored-by: Codex <codex@openai.com>
* refactor(workspace): unify MCP widget error handling
Co-authored-by: Codex <codex@openai.com>
* refactor(landing): remove newsletter form from cta
Co-authored-by: Codex <codex@openai.com>
* refactor(monitor): simplify board and control layout
Remove redundant monitor board headers, aggregate badges, and chrome while keeping the board and control layouts functional.
Co-authored-by: Codex <codex@openai.com>
* fix(records): simplify execution price display
Use the resolved fill price directly in order details instead of the shared execution price helper.
Co-authored-by: Codex <codex@openai.com>
* chore(i18n): remove unused monitor translation keys
Drop monitor strings that are no longer referenced after simplifying the board and records views.
Co-authored-by: Codex <codex@openai.com>
* feat(listing): enhance asset class handling in search utilities and tests
* feat(triggers): update trigger instructions and enhance deployment modal descriptions
* fix(trigger): remove unused monitor fields from portfolio state trigger
* fix(i18n): localize monitor, selector, and settings surfaces
Replace remaining hardcoded English copy across the monitor editor,
provider selectors, account settings, and help modal with localized
workspace messages.
Pass localized fallback labels into monitor workflow target loading and
use centralized block editor copy for portfolio trigger metadata and
instructions.
Add translation entries and regression tests covering localized selector
states, monitor editor labels, settings modal flows, and public copy
shape validation.
* feat(i18n): update Chinese localization for waitlist and login description
feat(copilot): refactor workflow variable types and enhance type safety
feat(blocks): improve subBlock description handling in block mermaid catalog
test(blocks): add assertion for subBlock description in blocks metadata test
* feat(i18n): localize app routes and copy plumbing
Co-authored-by: Codex <codex@openai.com>
* refactor(i18n): canonicalize internal route boundaries
Co-authored-by: Codex <codex@openai.com>
* feat(i18n): localize transactional emails and persist locale preferences
Co-authored-by: Codex <codex@openai.com>
* feat(i18n): persist anonymous email locales on waitlist
Consolidate template formatting helpers into i18n/utils, move anonymous email locale persistence onto waitlist rows, and update the affected layouts, routes, tests, and generated Drizzle artifacts.
Co-authored-by: Codex <codex@openai.com>
* refactor(i18n): normalize localized copy and template keys
Co-authored-by: Codex <codex@openai.com>
* refactor(i18n): replace custom message hooks with next-intl
Co-authored-by: Codex <codex@openai.com>
* feat(i18n): update URLs to use 'www' subdomain and localize paths for email and auth redirects
* feat(i18n): integrate next-intl for localization in admin and workspace layouts
* refactor(layout): simplify intl hydration setup
Remove legacy hydration logging, browser extension filtering, and unused client messages from the locale layout.
Co-authored-by: Codex <codex@openai.com>
* fix(settings): remove silent settings fallbacks
Require authenticated settings updates, return real API errors, and stop skipping updates on the chat page.
Co-authored-by: Codex <codex@openai.com>
* build(test): upgrade vitest toolchain
Co-authored-by: Codex <codex@openai.com>
* feat(i18n): propagate canonical callback paths
Co-authored-by: Codex <codex@openai.com>
* feat(i18n): localize workflow labels and update related tests
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: BWJ2310 <brucewj2310@gmail.com>
* feat(tradinggoose): make locale-aware navigation state
Co-authored-by: Codex <codex@openai.com>
* fix(nav): remove unnecessary alignment property from DropdownMenuContent
* feat(tests): enhance type safety for WatchlistListActionsButton tests
* feat(i18n): update URLs to use SITE_BASE_URL for localization consistency
* feat(i18n): enhance user settings localization and refactor SettingsLoader component
* fix(copilot): localize workspace copilot widget copy
Add dedicated *workspace.widgets.copilot* message trees for *en*, *es*, and *zh* and expose them through *useCopilotMessages*.
Refactor copilot welcome, input, message chrome, todo list, access/model selectors, context usage, and chat history UI to consume localized copy instead of hardcoded English. Update the header to format relative time and history group labels from the active locale.
Add regression coverage for the new copilot public copy and localized welcome rendering.
* feat(auth): integrate session management in LanguageSwitcher component
* feat(i18n): refactor locale handling in user settings API and improve default settings response
* feat(i18n): enhance localization in layout, not-found, sitemap, and metadata handling
* feat(i18n): implement workspace access check in metrics execution route and update related tests
* feat(records): localize records dashboard and share filter metadata
Co-authored-by: Codex <codex@openai.com>
* feat(i18n): implement next-intl localization layer across app routes and components
* feat(ui): add grouped sidebar dropdown menus
Co-authored-by: Codex <codex@openai.com>
* refactor(workflow): extract shared panel class name
Co-authored-by: Codex <codex@openai.com>
* feat(monitor): add kanban column header actions
Co-authored-by: Codex <codex@openai.com>
* style(ui): soften sidebar dropdown hover state
Co-authored-by: Codex <codex@openai.com>
* refactor(ui): optimize ComboBox option handling and cleanup unused dependencies
---------
Co-authored-by: agualdron <agualdro@gmail.com>
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: BWJ2310 <brucewj2310@gmail.com>1 parent f6a7da4 commit 1f0a581
633 files changed
Lines changed: 104960 additions & 13071 deletions
File tree
- apps/tradinggoose
- app
- (auth)
- components
- login
- reset-password
- signup
- sso
- verify
- waitlist
- (landing)
- blog
- components
- lib
- careers
- components
- cta
- feature
- components
- layout-preview
- market-preview
- workflow-preview
- hero
- how-it-works
- integrations
- landing-pricing
- monitor-preview
- licenses
- privacy
- terms
- [locale]
- (auth)
- error
- login
- reset-password
- signup
- sso
- verify
- waitlist
- (landing)
- blog
- [slug]
- careers
- licenses
- privacy
- terms
- admin
- billing
- [tierId]
- create
- integrations
- registration
- services
- changelog
- chat/[identifier]
- invite/[id]
- unsubscribe
- workspace
- [workspaceId]
- api-keys
- dashboard
- environment
- files
- integrations
- knowledge
- [id]
- [documentId]
- monitor
- records
- templates
- [id]
- admin
- billing
- integrations
- registration
- services
- api
- admin/system-settings
- careers/submit
- chat
- [identifier]
- otp
- help
- markdown
- market/search
- cities
- countries
- cryptos
- currencies
- exchanges
- listings
- organizations/[id]
- invitations
- members
- users/me/settings
- unsubscribe
- waitlist
- webhooks/trigger/[path]
- workspaces
- [id]/metrics/executions
- invitations
- [invitationId]
- changelog.xml
- changelog
- components
- chat
- [identifier]
- components
- auth
- email
- password
- sso
- error-state
- header
- input
- message-container
- message
- voice-interface
- hooks
- invite
- [id]
- components
- llms-full.txt
- llms.txt
- monaco-editor/esm/[...assetPath]
- unsubscribe
- workspace
- [workspaceId]
- api-keys
- components
- dashboard
- environment
- components
- files
- hooks
- integrations
- knowledge
- [id]
- [documentId]
- components
- create-chunk-modal
- edit-chunk-modal
- components
- knowledge-base-loading
- upload-modal
- components
- base-overview
- copy-to-workspace
- create-modal
- document-tag-entry
- empty-state-card
- knowledge-base-tags
- knowledge-header
- knowledge-tags
- tag-input
- monitor
- components
- board
- config
- data
- management
- timeline
- timezone-selector
- view
- workspace
- providers
- records
- components
- log-details
- logs-list
- logs-toolbar/components
- filters
- components
- search
- orders
- stats
- components
- logs-filters
- templates
- [id]
- components
- blocks
- blocks
- components
- emails
- billing
- careers
- json-display
- listing-selector
- listing
- selector
- market-selector
- oauth
- trading-selector
- ui
- hooks
- queries
- workflow
- i18n
- messages
- lib
- auth
- billing
- core
- webhooks
- branding
- copilot
- tools
- client/workflow
- server/blocks
- discovery
- email
- execution
- file-parsers
- markdown
- monitors
- registration
- uploads/providers/s3
- workflows
- providers/trading
- stores
- mcp-servers
- organization
- settings/general
- triggers
- indicator
- portfolio
- widgets
- hooks
- widgets
- components
- copilot/components
- context-usage-pill
- copilot-message
- components
- copilot
- todo-list
- user-input
- components
- welcome
- data_chart
- components
- hooks
- utils
- editor_custom_tool
- editor_indicator
- components
- editor_mcp
- editor_skill
- components
- editor_workflow
- components
- control-bar
- components
- api-key-selector
- deploy-modal
- components
- chat-deploy
- components
- hooks
- deploy-form
- deployment-info
- components
- api-endpoint
- api-key
- deploy-status
- example-command
- deployment-controls
- components
- export-controls
- template-modal
- user-avatar-stack/components/connection-status
- webhook-settings
- error
- floating-controls
- subflows
- toolbar
- toolbar-block
- toolbar-loop-block
- toolbar-parallel-block
- trigger-list
- wand-prompt-bar
- workflow-block
- components
- action-bar
- sub-block
- components
- channel-selector
- components
- credential-selector
- document-selector
- document-tag-entry
- file-selector
- components
- folder-selector
- components
- input-format
- input-mapping
- knowledge-base-selector
- knowledge-tag-filters
- listing-selector
- mcp-dynamic-args
- mcp-server-modal
- order-id-selector
- project-selector
- components
- schedule
- skill-input
- tool-input
- components
- code-editor
- trigger-save
- variables-input
- workflow-controlbar
- workflow-editor
- panel
- preview
- workflow-render
- workflow-toolbar
- empty
- heatmap/components
- list_custom_tool
- list_indicator
- components
- indicator-list
- components
- list_mcp
- list_skill
- components
- skill-list
- list_workflow
- components/folder-tree/components
- portfolio_snapshot/components
- quick_order/components
- watchlist/components
- workflow_chat
- components
- chat-file-upload
- chat
- output-select
- workflow_console
- components
- console
- terminal
- components
- output-panel
- workflow_variables
- components/variables
- changelog
- packages
- db
- migrations
- meta
- schema
- ts-sdk
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
76 | 77 | | |
Lines changed: 296 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
1 | 4 | | |
| 5 | + | |
| 6 | + | |
2 | 7 | | |
3 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
4 | 12 | | |
5 | 13 | | |
6 | 14 | | |
7 | 15 | | |
8 | | - | |
| 16 | + | |
9 | 17 | | |
10 | 18 | | |
11 | 19 | | |
0 commit comments