Skip to content

Commit 45a2c5d

Browse files
V45 Gate 15: Remove stale terminal footer surface
Drop the obsolete Terminal footer route card, keep the footer route set aligned to Packs, Deposit, Read, and Docs, and update public-shell tests to assert the current source-safe route vocabulary.\n\nProof: pnpm run check:v45-gate15; pnpm -C uapi lint; pnpm -C uapi exec tsc --noEmit; pnpm -C uapi exec jest --runInBand; CI-env pnpm -C uapi run build; git diff --check.
1 parent ec7dc32 commit 45a2c5d

4 files changed

Lines changed: 11 additions & 59 deletions

File tree

uapi/components/base/bitcode/layout/footer.tsx

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import { BITCODE_PUBLIC_EXPLAINERS } from '@/components/base/bitcode/layout/bitc
2222
import { DisabledTooltipWrapper } from '@/components/base/bitcode/overlays/disabled-tooltip-wrapper';
2323
import { BITCODE_GITHUB_APP_PUBLIC_URL } from '@/lib/github-app-url';
2424

25-
const TERMINAL_URL = '/terminal';
2625
const PACKS_URL = '/packs';
2726
const DEPOSIT_URL = '/deposit';
2827
const READ_URL = '/read';
@@ -32,9 +31,7 @@ const CURRENT_PROTOCOL_SPEC_URL = 'https://github.com/engineeredsoftware/ENGI/bl
3231
const BITCODE_REPOSITORY_URL = 'https://github.com/engineeredsoftware/bitcode';
3332
const DISABLED_FEATURE_TOOLTIPS = {
3433
packs:
35-
'Disabled for launch mode. When enabled, Packs opens the public Source Shares activity and pack-reading surface.',
36-
terminal:
37-
'Disabled for launch mode. When enabled, Terminal opens the full deposit-to-settle ledger, proofs, and history workspace.',
34+
'Disabled for launch mode. When enabled, Packs opens the public activity and pack-reading surface.',
3835
auxillaries:
3936
'Disabled for launch mode. When enabled, Auxillaries opens profile, connects, interface defaults, and $BTD posture.',
4037
} as const;
@@ -214,37 +211,6 @@ export default function Footer({ showPrimaryContent = true, className = '' }: Fo
214211
</span>
215212
),
216213
},
217-
{
218-
ariaLabel: BITCODE_PUBLIC_COPY.footer.links.transactions,
219-
label: BITCODE_PUBLIC_COPY.footer.links.transactions,
220-
meta: 'Terminal',
221-
href: TERMINAL_URL,
222-
explainer: BITCODE_PUBLIC_EXPLAINERS.transactions,
223-
icon: (
224-
<span
225-
className="inline-flex items-center justify-center"
226-
style={{
227-
filter: 'drop-shadow(0 0 6px rgba(16,185,129,0.66)) drop-shadow(0 0 15px rgba(16,185,129,0.33))',
228-
}}
229-
>
230-
<svg
231-
viewBox="0 0 24 24"
232-
aria-hidden="true"
233-
className="h-[15px] w-[15px] text-emerald-300"
234-
fill="none"
235-
stroke="currentColor"
236-
strokeWidth="1.7"
237-
strokeLinecap="round"
238-
strokeLinejoin="round"
239-
>
240-
<rect x="3.5" y="4.5" width="17" height="15" rx="2.5" />
241-
<path d="M8 9h8" />
242-
<path d="M8 13h5" />
243-
<circle cx="16.5" cy="13.5" r="1.5" fill="currentColor" stroke="none" />
244-
</svg>
245-
</span>
246-
),
247-
},
248214
{
249215
ariaLabel: 'Docs',
250216
label: BITCODE_PUBLIC_COPY.footer.links.docs,
@@ -301,7 +267,6 @@ export default function Footer({ showPrimaryContent = true, className = '' }: Fo
301267
const isExternalHref = (href: string) => href.startsWith('http');
302268
const disableAuxillaries = Boolean(FEATURE_FLAGS.DISABLE_AUXILLARIES);
303269
const disablePacksLink = Boolean(FEATURE_FLAGS.DISABLE_EXCHANGE_LINK);
304-
const disableTerminalLink = Boolean(FEATURE_FLAGS.DISABLE_TERMINAL_LINK);
305270

306271
return (
307272
<>
@@ -436,9 +401,7 @@ export default function Footer({ showPrimaryContent = true, className = '' }: Fo
436401
<div className="flex w-full flex-col gap-4 tablet:gap-5">
437402
<div className="grid w-full grid-cols-1 gap-2 phone:grid-cols-2 laptop:grid-cols-[repeat(4,minmax(0,1fr))]">
438403
{footerLinks.map((social) => {
439-
const isDisabledRoute =
440-
(social.href === PACKS_URL && disablePacksLink) ||
441-
(social.href === TERMINAL_URL && disableTerminalLink);
404+
const isDisabledRoute = social.href === PACKS_URL && disablePacksLink;
442405
const explainerButton = social.explainer ? (
443406
<BitcodeInlineExplainer
444407
explainer={social.explainer}
@@ -467,11 +430,7 @@ export default function Footer({ showPrimaryContent = true, className = '' }: Fo
467430
) : isDisabledRoute ? (
468431
<span key={social.ariaLabel} className="block w-full">
469432
<DisabledTooltipWrapper
470-
tooltip={
471-
social.href === PACKS_URL
472-
? DISABLED_FEATURE_TOOLTIPS.packs
473-
: DISABLED_FEATURE_TOOLTIPS.terminal
474-
}
433+
tooltip={DISABLED_FEATURE_TOOLTIPS.packs}
475434
className="w-full"
476435
>
477436
<span

uapi/tests/footerPublicShell.test.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@ describe('Footer public shell', () => {
6363
'href',
6464
'/read',
6565
);
66-
expect(screen.getByRole('link', { name: 'Terminal' })).toHaveAttribute(
67-
'href',
68-
'/terminal',
69-
);
7066
expect(screen.getByRole('link', { name: 'Docs' })).toHaveAttribute(
7167
'href',
7268
'/docs',
@@ -78,12 +74,10 @@ describe('Footer public shell', () => {
7874
expect(screen.getByRole('button', { name: 'Explain Packs' })).toBeInTheDocument();
7975
expect(screen.getByRole('button', { name: 'Explain Deposit' })).toBeInTheDocument();
8076
expect(screen.getByRole('button', { name: 'Explain Read' })).toBeInTheDocument();
81-
expect(screen.getByRole('button', { name: 'Explain Terminal' })).toBeInTheDocument();
8277
expect(screen.getByRole('button', { name: 'Explain Docs' })).toBeInTheDocument();
8378
expect(screen.getByText('Pack activity')).toBeInTheDocument();
8479
expect(screen.getByText('Depositing flow')).toBeInTheDocument();
8580
expect(screen.getByText('Reading flow')).toBeInTheDocument();
86-
expect(screen.getAllByText('Terminal').length).toBeGreaterThan(0);
8781
expect(screen.getByText('Docs hub')).toBeInTheDocument();
8882
expect(screen.getAllByText('Deposit').length).toBeGreaterThan(0);
8983
expect(screen.getAllByText('Read').length).toBeGreaterThan(0);

uapi/tests/navPublicShell.test.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,10 @@ describe('Nav public shell', () => {
114114
expect(screen.getByRole('link', { name: 'Packs' })).not.toHaveAttribute('aria-current');
115115
expect(screen.getByRole('link', { name: 'Deposit' })).toHaveAttribute('href', '/deposit');
116116
expect(screen.getByRole('link', { name: 'Read' })).toHaveAttribute('href', '/read');
117-
expect(screen.getByRole('link', { name: 'Terminal' })).toHaveAttribute('href', '/terminal');
118117
expect(screen.getByRole('link', { name: 'Docs' })).toHaveAttribute('href', '/docs');
119118
expect(screen.getByRole('button', { name: 'Explain Packs' })).toBeInTheDocument();
120119
expect(screen.getByRole('button', { name: 'Explain Deposit' })).toBeInTheDocument();
121120
expect(screen.getByRole('button', { name: 'Explain Read' })).toBeInTheDocument();
122-
expect(screen.getByRole('button', { name: 'Explain Terminal' })).toBeInTheDocument();
123121
expect(screen.getByRole('button', { name: 'Explain Docs' })).toBeInTheDocument();
124122

125123
fireEvent.mouseEnter(accessButton);
@@ -163,9 +161,8 @@ describe('Nav public shell', () => {
163161

164162
expect(screen.getByText('Brand home')).toBeInTheDocument();
165163
expect(screen.getByRole('link', { name: 'Deposit' })).toHaveAttribute('href', '/deposit');
166-
expect(screen.getByRole('link', { name: 'Terminal' })).toHaveAttribute('href', '/terminal');
167164
expect(screen.getByRole('link', { name: 'Read' })).toHaveAttribute('href', '/read');
168-
expect(screen.getByRole('button', { name: 'Explain Terminal' })).toBeInTheDocument();
165+
expect(screen.getByRole('link', { name: 'Docs' })).toHaveAttribute('href', '/docs');
169166
expect(screen.getByText('Notifications')).toBeInTheDocument();
170167

171168
fireEvent.click(screen.getByRole('button', { name: 'User menu' }));

uapi/tests/navWorkspaceChrome.test.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const mockUseAuth = jest.fn();
1414
const mockUseUserData = jest.fn();
1515

1616
jest.mock('next/navigation', () => ({
17-
usePathname: () => '/terminal',
17+
usePathname: () => '/read',
1818
useRouter: () => ({ push: mockPush, replace: mockReplace }),
1919
}));
2020

@@ -76,7 +76,7 @@ jest.mock('@/components/base/bitcode/nav/AuxillariesUseButton', () => ({
7676
AuxillariesUseButton: () => <div>Use button</div>,
7777
}));
7878

79-
describe('Nav Terminal product chrome', () => {
79+
describe('Nav product chrome', () => {
8080
beforeEach(() => {
8181
mockPush.mockReset();
8282
mockReplace.mockReset();
@@ -95,14 +95,15 @@ describe('Nav Terminal product chrome', () => {
9595
});
9696
});
9797

98-
it('shows product-route links and guest access actions for unauthenticated Terminal routes', () => {
98+
it('shows product-route links and guest access actions for unauthenticated product routes', () => {
9999
render(<Nav />);
100100

101101
const accessButton = screen.getByRole('button', { name: 'Open Auxillaries' });
102102
const createButton = screen.getByRole('button', { name: 'Connect Wallet' });
103103

104104
expect(screen.getByRole('link', { name: 'Packs' })).toHaveAttribute('href', '/packs');
105-
expect(screen.getByRole('link', { name: 'Terminal' })).toHaveAttribute('href', '/terminal');
105+
expect(screen.getByRole('link', { name: 'Deposit' })).toHaveAttribute('href', '/deposit');
106+
expect(screen.getByRole('link', { name: 'Read' })).toHaveAttribute('href', '/read');
106107
expect(screen.getByRole('link', { name: 'Docs' })).toHaveAttribute('href', '/docs');
107108
fireEvent.mouseEnter(accessButton);
108109
fireEvent.click(accessButton);
@@ -144,7 +145,8 @@ describe('Nav Terminal product chrome', () => {
144145
render(<Nav />);
145146

146147
expect(screen.getByRole('link', { name: 'Packs' })).toHaveAttribute('href', '/packs');
147-
expect(screen.getByRole('link', { name: 'Terminal' })).toHaveAttribute('href', '/terminal');
148+
expect(screen.getByRole('link', { name: 'Deposit' })).toHaveAttribute('href', '/deposit');
149+
expect(screen.getByRole('link', { name: 'Read' })).toHaveAttribute('href', '/read');
148150
expect(screen.getByRole('link', { name: 'Docs' })).toHaveAttribute('href', '/docs');
149151
expect(screen.queryByRole('button', { name: 'Open Auxillaries' })).toBeNull();
150152
expect(screen.getByText('Notifications')).toBeInTheDocument();

0 commit comments

Comments
 (0)