What changed in each release.
Two places were still formatted for the previous language after everything else had moved to English.
Every release here showed its date in the old language's format. They now read the same way dates do everywhere else in the app.
On the number-field page, the row labelled as dollars was still displaying yen. The label and the field agree again.
Every screen, every sample record and every format is English now, with amounts in dollars. The words were written rather than translated, so the copy reads as English rather than as Japanese in English clothing.
Every screen, label and message. The mail app's threads were written again from scratch as English business mail rather than translated, because a translated one reads like a form letter.
Figures are grouped as K, M and B. The relationships between the totals, the weighted forecast, the win rate and attainment all hold exactly as before, and every account balance still equals the sum of its holdings.
The account types and the two brokers were specific to one country and have no equivalent here, so they became generic types and two invented firms. Each of the twelve sample clients keeps the situation they had, so the numbers still tell a consistent story.
A 12-hour clock, US date order, and the client list sorted by name. Saved list preferences return to their defaults once, because the sort they referred to has a new name.
The chart's scale was left over from the previous currency, which flattened all eight months into a line along the bottom. It now fits the figures, so the month that went ahead of plan is visible again.
Client email addresses and phone numbers still followed the old country's conventions next to US cities, and two clients were listed in the wrong state.
Two of the integration switches still named the brokers the sample data had already stopped using.
This project continues as a CRM template. Nothing about the screens changes.
The page titles and the sidebar now read yCrmTemplate. Integration settings created under the old name keep working.
Our own staff addresses carried the product's domain. They now use the organization's.
Every card on the home screen was rebuilt. The title bar and the content now sit on two separate surfaces, and the revenue chart is a line, so the gap against plan is legible at a glance.
A title band, and the content set into a panel one step below it. Nine cards had nine header shapes and nine kinds of bar chart between them; they now share one.
Bars became two lines, so actual and plan are read against each other directly — which month went ahead of plan, and how far the gap opened after it. The chart gained a labelled money axis and a legend.
Six cards now link from their top-right corner straight to the screen that owns their content.
What a card was called in the Customize list did not match the card's own title.
Pages showing the real buttons, tabs, inputs, pickers and date controls, one folder per family. Two accessibility and navigation bugs are fixed alongside them.
Seventeen pages across five families. Tabs at the top of each page move between the parts, and every size, state and format can be tried on the spot.
One page that puts every selection control on the same data, so you can confirm they behave and float the same way. It also lists which parts are built and which are reserved.
On the client list and the client detail, the horizontal scroll arrows were announced with a mix of two languages.
A row that jumps to the first page of a section did not light up in the sidebar once you were on that page. The row for where you are now lights up.
Keyboard shortcuts sometimes did nothing while a dialog was open. They now arrive wherever you are on the screen.
A form reference page, and a localization page that switches one screen between three languages. The client list gained pagination, and the header's language panel now reports what is actually true.
Defaults and reset, single-field and cross-field validation, disabled and read-only, nesting and arrays, conditional fields, and an async submit that can fail. Six independent forms, plus a narrow side-panel version on its own page.
One screen, switched whole between three languages. One language is the source and its keys are the type, so a missing translation stops at the type check rather than in production.
A count, a page-size picker and a pager at the foot of the list. Changing the search, a filter or the sort returns you to page one.
Picking another language moved a checkmark and left every word as it was. It now states the fact plainly and keeps only the link to the localization example.
The select, date, time and numeric fields kept the engine's own heights at the small and large sizes. Five fields now share one ladder (28 / 32 / 36), and the disabled border and the icon-bearing options line up with it.
A section where you can see how the parts actually look and behave. The first page is feedback: alerts, toasts, loading and empty states. Heading sizes and page descriptions were revised at the same time.
Pages showing the real parts, placed last in the nav. It grows one page per design law.
Five tones, alerts and toasts, loading states, two kinds of empty state, and a failed fetch with a retry — all in this product's own words. The failure and the retry can be triggered there.
The description under a page title was larger than body text and the same size as a card title. It now matches body text.
Restatements of the card names below and explanations of what the screen already shows are gone. What remains is what you cannot read off the screen.
It now matches the shape the language panel uses.
Everything a real deployment has to decide, on one screen: organization details, display formats, integrations, notifications, and the option sets. Storing the values waits for a real data source.
One card per section, and each card commits to one meaning of applied — text fields save on a button, switches take effect immediately. Every row's description says what would happen.
Client status, risk tolerance, account type, document categories and the broker's contact status. Some are still provisional, so for now they are read-only.
Drop what you touched in the app — stars, memos, accounts and contact entries you added, and every read or archive in the mailbox — and return to the starting state.
Theme and colour in the header's Appearance drawer, business configuration on the settings screen. No value is editable in both. A System section joins the nav.
The way into the system. The header dropped its outbound links and keeps only what the work needs.
A brand panel on the left, the form on the right. Email and password validation works, but this mock does not authenticate: it continues to the dashboard. Sign out in the account menu brings you back here.
The GitHub and X links are gone. What remains is language, theme, notifications and the account menu.
The client list now opens into a client. Assets, goals, documents and the contact log are separate tabs, and you can walk the whole path from linking an account to seeing the assets appear. The clients themselves became individual wealth clients.
Overview, assets, goals, documents, contact log. Each tab has its own URL, so a link opens the same tab and a reload does not send you back to the first one.
Save an institution and a link ID and the link starts. Until a balance comes back the account reads as linking, and it contributes nothing to total assets or unrealized P/L. Only the last four characters of the link ID are shown.
Goals are grouped into Needs, Wants and Wishes, and are read-only because they come from the planning system. Documents accept uploads in some categories and not others. The contact log shows the broker's contact status, and the reason when it could not be reached.
Total assets, unrealized P/L, risk tolerance, household, annual income and spending — the fields an individual client actually has. The asset figures are computed from linked accounts only.
The weekday row, the month and year dropdowns and the typeable field all follow one shared locale instead of the browser's, so a calendar rendered in the page and one in a popover cannot differ.
Read client mail inside the CRM and answer it there. Inbox, drafts, sent, archive and trash, filled with sample threads tied to real clients and deals.
Boxes and labels on the left, the list in the middle, the message on the right. Each of the three scrolls inside itself, so the page never moves. A thread opens its latest message and keeps the earlier ones collapsed.
Reply, reply all, forward and compose all send from the same dialog. The quoted text arrives in the form every desktop mail client writes, and half-written mail saves to drafts.
J and K move, E archives, S stars, R replies, C composes, / searches. Acting on a message opens the next one, so you keep going without returning to the list.
Archive and delete can be undone from the notification, and each thread goes back to the box it came from — including one deleted permanently from the trash.
On wide screens like the deals board, the whole page slid sideways instead of the board, taking the pinned header with it.
A flex child will not shrink below its content's minimum width by default, and the wrapper holding the whole page was hitting exactly that — so the width of a region that was supposed to scroll inside itself became the width of the page. The wrapper now fits the width it is given, and wide regions each scroll within themselves.
Every screen, every mock record and every format switched to Japanese. Not translated but rewritten in the vocabulary a sales team actually uses, with amounts in yen and dates and times to Japanese convention.
A single glossary, so the same concept does not go by a different word from one screen to the next.
Grouped in ten-thousands and hundred-millions the way Japanese figures are written. The relationships between totals, weighted forecast, win rate and attainment held as before.
A 24-hour clock, weeks starting Sunday, and the Japanese weekday row, applied across every calendar view.
The font order was rearranged so kanji render in Japanese forms rather than picking up Simplified stroke shapes.
One mock action had a heading that read as success above body text saying it was disabled.
The core screens: a rearrangeable dashboard, clients, the pipeline board, the deal detail, reports and a team calendar. All six run on mock data, so pointing them at an API is what switches them to real records.
Nine widgets: pipeline, new leads, win rate, revenue against target, the funnel by stage, top deals, lead sources, the team leaderboard and upcoming activities. Drag to rearrange, drag a corner to resize, and Customize to show or hide.
Clients as cards, or as a sortable list. The list shows segment, account standing, annual value and owner.
The open pipeline as a board, a column per stage. Moving a card moves the column totals and the weighted forecast with it, and opening a deal shows its activity, its primary contact and how far through the stages it is.
Open calls, meetings, emails and tasks, grouped by the day they are due. Reports review the quarter: closed won by rep, funnel conversion, deals created against deals won, and why deals were lost.
Month, week, day, year and agenda. Drag to move an event, filter by person, and add or edit in one dialog.
Pages holding a board or a wide table can now drop the max-width cap. All five pipeline stages fit at once, and the last column no longer hides under the scrollbar.
The template's demo pages and sample parts are gone. The page-class component kits they were demonstrating all remain.
Created from yTemplate as the shared base for a CRM front end. The app shell, the theme settings and the page-class component kits are the inheritance; this release only renamed things and moved the port. There are no CRM screens yet.
yTemplate's stack, stood up under this project's name. Not yet part of the project matrix; GitHub is used for version control only.