Repository navigation
feature: React shell (header, footer, settings), theming, PWA, e2e, CI and hosting - #919
Merged
devin-ai-integration[bot] merged 2 commits intoOct 21, 2026
Conversation
…CI and Firebase hosting Co-Authored-By: Ishita Gupta <ishita.gupta@cognition.ai>
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
Author
Co-Authored-By: Ishita Gupta <ishita.gupta@cognition.ai>
devin-ai-integration
Bot
merged commit Oct 21, 2026
3b7c2ab
into
devin/1792603540-react-foundation
8 checks passed
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.
Summary
Workstream 4 of the React port (
react-app/): Angularsrc/app/core/shell (Header, Footer, Settings) + app layout/theming, PWA (vite-plugin-pwa), Playwright e2e, CI and Firebase hosting. Targets the integration branchdevin/1792603540-react-foundation(#917). Only Workstream 4-owned files are touched.Shell (
src/features/shell/**)AppShell:.body-cover > .wrapper > Header, <Outlet/>, Footer. Themes come fromshared/scss/_themes.scssvia the classSettingsProvideralready puts on<html>, so the whole page (body cover, wrapper, header, popup) restyles.Header:a.home-link→/news/1,.header-navNavLinks (new/show/ask/jobs) with.active,img.settingscog (role="button",tabIndex=0, Enter/Space,aria-expanded). Clicking the logo or a nav link scrolls to top (AngularscrollTop()).Settings:#popup1.overlay > .popup[role=dialog][aria-modal][aria-labelledby]; focus moves to×on open, Tab/Shift+Tab trapped, Escape/× close, focus returns to the cog. Number inputs persist inonChange(Angular only saved on keyup).#header,#footer,#popup1.PWA (
vite.config.ts,src/pwa/**,public/)setupServiceWorker(): on firstcontrollerchange, re-fetches API URLs fromperformance.getEntriesByType('resource')so the landing page's data is cached for offline.public/ngsw-worker.js: safety worker for returning Angular visitors (skipWaiting, deletengsw:*caches, unregister, reload clients).manifest.webmanifestmirrors Angularsrc/manifest.json.e2e (
playwright.config.ts,e2e/**, runsnpm run build && npm run preview, HN API mocked): route smoke + nav active state, footer, theme switch via the popup persisted across reload (asserts computed colours differ per theme), font/spacing/new-tab persistence, keyboard a11y, manifest/SW/Angular-worker handover, offline (requests blocked at the SW level, with uncached negative controls). Feed pagination, comment collapse, user karma and error pages are written against Angular class names buttest.fixmeuntil Workstreams 2/3 land. Result: 26 passed, 7 fixme.CI / hosting:
react-app-ci.ymlgains ane2ejob (uploads Playwright report) and adeployjob (push to master only, skipped with a notice unlessFIREBASE_SERVICE_ACCOUNT/FIREBASE_TOKENis set).firebase.jsonhostsdistwith aregexSPA rewrite (route prefixes + extensionless paths only, so missing assets 404 instead of returning index.html) and no-cache headers forindex.html,sw.js,ngsw-worker.js, manifest.Angular parity kept on purpose: mobile
#headeris fixed with no shell spacer (pages own their offset); the overlay covers the header so a second click on the cog doesn't close the popup.Shared changes needed: none.
Devin-Org: engineering
Link to Devin session: https://devin-gtm.devinenterprise.com/sessions/94a7eeb625de4a2f88c1228351ebde56
Open in Devin Desktop: https://devin-gtm.devinenterprise.com/desktop/session/94a7eeb625de4a2f88c1228351ebde56?variant=devin
Requested by: @ishita-cog
Note
Devin errored when opening this Pull Request as ishita-cog.
As a fallback, Devin opened this PR as itself.
Devin Review