Skip to content

move to production#3760

Merged
Baalmart merged 44 commits into
masterfrom
staging
Jul 7, 2026
Merged

move to production#3760
Baalmart merged 44 commits into
masterfrom
staging

Conversation

github-actions Bot and others added 25 commits July 6, 2026 23:02
- Introduced `PaginatedResponse` and `QueryParams` interfaces for handling paginated API responses.
- Defined various interfaces for entities such as `BoardMember`, `Career`, `Event`, `Publication`, and more to standardize data structures.
- Added `normalizeDepartment` helper function for department normalization in `Career`.
- Created `ForumEvent` and `ForumTitlesResponse` interfaces to structure forum event data and responses.
…rd, IconsPackagePage, and PackagesPage components
Show per-card shimmer placeholders while the Near You tab loads, and
convert the map search sheet's browse list and the dashboard
Country/All tabs from eagerly-built lists to real SliverList-based
lazy loading, so large lists build on demand as the user scrolls.
Air quality marker icons were rasterized at 10x10 logical pixels
(vs. the helper's own 24x24 default), making them look like tiny
dots. Bump to 44x44 and center-anchor the circular badge icons on
their coordinate instead of the default bottom-anchor meant for
teardrop pins.
- Created tests for API routes to ensure section existence and route formats.
- Implemented tests for BaseApiService methods including URL building and HTTP methods.
- Added tests for countrySlice to validate country selection and clearing.
- Developed tests for forumSlice to manage event selection and active tab state.
- Introduced tests for modalSlice to verify modal open/close functionality and state toggling.
…nd IG sticker

Lets Clean Air Forum attendees generate a branded selfie filter or transparent
Instagram sticker from their live AQI reading and optionally submit it to the
conference wall display, so the feature drives visible engagement at the booth.

- Filter/sticker/share-card templates match the approved Figma spec exactly
  (proportional scaling off a 1080px reference so text/branding stay
  pixel-accurate at any capture resolution)
- Live camera screen overlays the filter chrome so users can frame their shot
  before capturing, falling back to the system camera or gallery
- Share sheet, selfie-source picker, and consent toggle reuse the Exposure/
  Learn design tokens (buttons, switch, drag-handle chrome) for visual
  consistency with the rest of the app instead of one-off styling
- Copies the sticker straight to the clipboard (via `pasteboard`) so it can be
  pasted into an Instagram Story without a separate save/share step
- Card and filter shares now include the app link in the share text for
  conversion tracking

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fixes a CodeRabbit finding: didChangeAppLifecycleState disposed the camera
controller on AppLifecycleState.inactive but never cleared the field, so a
rebuild before _openCamera() finished on resume could still try to paint
CameraPreview against an already-disposed controller. Now nulls the field
(and rebuilds) before disposing.

Also sends the new x-clean-air-forum-secret header (from
CLEAN_AIR_FORUM_API_SECRET) on wall submissions, matching the website's new
shared-secret check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps package.json to match the version already documented in
CHANGELOG.md for the OAuth child-window work (main/auth-window.ts),
which merged without a version bump. This also folds in staging's
accumulated release-pipeline fixes (explicit release dispatch, ref
pinning, Linux icon size) since none of it has been tagged/released
yet. Bumping this on staging will let auto-tag cut and build the
first fully-automated release across Windows, macOS, and Linux.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…, mojibake, cleanup)

- sanitizeCardText: latin1.encode() can't represent Windows-1252-specific
  code points (smart quotes, em-dashes), so it threw and silently left
  that mojibake (e.g. "it’s") unfixed. Rebuild the byte sequence with a
  proper Windows-1252 reverse map instead, and tighten detection to drop
  the bare 'â' trigger (false-positives on legitimate text like "château")
  in favor of the more specific 'â€' compound signature. Added regression
  tests.
- _pickSelfie / _openLiveCamera: guard the post-await setState calls with
  `mounted`, matching the pattern already used elsewhere in the file —
  picking/capturing a selfie after the sheet is dismissed could otherwise
  throw.
- _copySticker: read the clipboard back after Pasteboard.writeImage to
  confirm something was actually copied before showing "Copied!" — on iOS,
  a failed image decode leaves UIPasteboard.general.image nil but still
  resolves the write as successful.
- CleanAirForumCameraScreen._setUp: guard Permission.camera.request() with
  try/catch like the availableCameras() call beside it — build()'s
  FutureBuilder never checks snapshot.hasError, so an unguarded permission
  failure left the UI stuck on a permanent loading spinner.
- CleanAirForumCameraScreen._openCamera: dispose and clear the controller
  when initialize() fails instead of leaving _controller pointing at a
  non-initialized, undisposed instance.
- CleanAirForumSubmissionService: document that the bundled shared secret
  is a weak, interim deterrent only (extractable from the app binary), and
  that the real backend swap should use a proper per-request mechanism
  instead of carrying it forward.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
chore(vertex-desktop): bump version to 0.1.11
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e1b42e6f-6c57-4e2f-ba84-a79adba99fe0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch staging

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

feat: add unit testing infrastructure, E2E tests, and CI/CD workflows
@Baalmart
Baalmart requested a review from OchiengPaul442 July 7, 2026 12:15
…-quality-lists

Feature/lazy loading air quality lists
@Baalmart
Baalmart requested a review from Mozart299 July 7, 2026 12:32
OchiengPaul442 and others added 17 commits July 7, 2026 15:47
…organization management guides

- Created `analytics-dashboard.md` to detail the features and usage of the Nexus Dashboard for monitoring air quality.
- Added `interactive-map.md` to explain the functionalities of the Interactive Map for exploring air quality data across Africa.
- Introduced organization management documentation including `managing-members.md`, `member-requests.md`, `organization-settings.md`, and `roles-and-permissions.md` to guide administrators in managing members, roles, and settings.
- Established categories for organization management and visualizing data in the documentation structure.
- Developed `dataset-visualizer.md` to provide instructions on using the Dataset Visualizer for uploading and analyzing air quality data.
…selfie-filter-mobile

Add Clean Air Forum selfie filter, live camera guide, and IG sticker (mobile)
Updating to rebrand AirQo Analytics to Nexus
@Baalmart
Baalmart merged commit e37fdf8 into master Jul 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants