Skip to content

feat: 新增全站深色模式主題,修正人類圖 PDF 報告內容一致性與檔名格式 - #80

Merged
Retsomm merged 4 commits into
mainfrom
dev
Jul 23, 2026
Merged

Retsomm merged 4 commits into
mainfrom
dev

Conversation

@Retsomm

@Retsomm Retsomm commented Jul 22, 2026 •

Copy link
Copy Markdown
Owner
  • web/mobile 加入明暗主題切換(ThemeProvider/ThemeContext/ThemeToggle),globals.css 與各元件配色跟著主題走
  • mobile 人類圖 PDF 報告(個人/合圖/流日)內容修正,跟畫面(儲存前預覽/已儲存詳情頁)完全對齊:
    • 補齊類型策略/簽名/非自我主題等缺漏欄位、九大中心與定義通道改用中文標籤並標示啟用狀態
    • 修正合圖行星表格配色語意、連結動力顏色改跟著明暗主題走、移除誤導性的原始整合代碼
    • 修正流日 Body Graph 黑紅語意錯誤(改用「個人 vs 今日流日」而非 Personality/Design)、重建行星閘門對照表與流日影響分析卡片
    • 三份報告共用的版面小工具(row/tags/section 等)合併成模組層級函式,避免各自維護造成內容drift
  • PDF 下載檔名改為「圖表種類-圖表名稱-下載時間.pdf」,透過 expo-file-system 複製成可讀檔名再分享

Summary by CodeRabbit

  • New Features

    • Added light/dark theme switching across web and mobile, including persisted preference and a dedicated theme toggle in navigation and mobile tabs.
    • Updated charts, transit, composite, and learning screens to use theme-driven colors.
    • Enhanced transit visuals with impact cards and gate chips; improved planet comparison presentation.
    • Updated exported charts/PDFs to match the selected theme.
  • Bug Fixes

    • Improved theme consistency and contrast across UI states (hover/focus/active, borders, accents).
    • Preserved a preselected timezone when saving birth profiles.

- web/mobile 加入明暗主題切換(ThemeProvider/ThemeContext/ThemeToggle),globals.css 與各元件配色跟著主題走
- mobile 人類圖 PDF 報告(個人/合圖/流日)內容修正,跟畫面(儲存前預覽/已儲存詳情頁)完全對齊:
  - 補齊類型策略/簽名/非自我主題等缺漏欄位、九大中心與定義通道改用中文標籤並標示啟用狀態
  - 修正合圖行星表格配色語意、連結動力顏色改跟著明暗主題走、移除誤導性的原始整合代碼
  - 修正流日 Body Graph 黑紅語意錯誤(改用「個人 vs 今日流日」而非 Personality/Design)、重建行星閘門對照表與流日影響分析卡片
  - 三份報告共用的版面小工具(row/tags/section 等)合併成模組層級函式,避免各自維護造成內容drift
- PDF 下載檔名改為「圖表種類-圖表名稱-下載時間.pdf」,透過 expo-file-system 複製成可讀檔名再分享

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
self-map Ready Ready Preview, Comment Jul 23, 2026 2:52am

@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@Retsomm, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 22 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b94bca75-e304-418c-b805-15df6a848927

📥 Commits

Reviewing files that changed from the base of the PR and between f1910d4 and a180b44.

📒 Files selected for processing (3)
  • app/account/AccountClient.tsx
  • components/humanDesign/DetailDrawer.tsx
  • mobile/components/chart/ChartPrimitives.tsx
📝 Walkthrough

Walkthrough

This PR adds light/dark theme support across web and mobile, replaces hardcoded colors with theme tokens, updates composite and transit presentations, and passes theme state into personal, composite, and transit PDF generation.

Changes

Theme initialization and shared styling

Layer / File(s) Summary
Web theme and CSS tokens
app/layout.tsx, components/ThemeProvider.tsx, components/ThemeToggle.tsx, components/Navbar.tsx, app/globals.css, lib/theme.ts, lib/clerkAppearance.ts, components/ui/*
Web theme state is initialized from a cookie, persisted when toggled, exposed in navigation, and applied to shared CSS and component styling.
Mobile theme foundation
mobile/constants/tokens.ts, mobile/contexts/ThemeContext.tsx, mobile/app/_layout.tsx, mobile/app/(tabs)/_layout.tsx
Mobile light and dark palettes are provided through context, persisted with AsyncStorage, and exposed through a non-navigating tab toggle.
Runtime-themed mobile UI
mobile/app/**, mobile/components/*, mobile/components/learn/*
Static React Native styles are converted to memoized factories using active theme colors.

Chart, transit, and PDF presentation

Layer / File(s) Summary
Composite and transit UI
mobile/components/composite/*, mobile/components/chart/CompositeInfo.tsx, mobile/components/CompositeView.tsx, mobile/components/transit/*, mobile/components/TransitView.tsx, mobile/components/chart/TransitAnalysis.tsx
Shared composite descriptors, planet comparison content, gate chips, impact cards, icons, and themed transit analysis replace local presentation structures.
Themed PDF exports
mobile/lib/chartPdf.ts, mobile/app/chart/*, lib/downloadChart.ts
PDF builders accept theme mode and optional chart names, render palette-based personal/composite/transit layouts, calculate themed capture dimensions and footers, and receive mode from chart download actions.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AppLayout
  participant ThemeProvider
  participant ThemeToggle
  participant ChartScreen
  participant ChartPdf
  AppLayout->>ThemeProvider: initialize theme
  ThemeToggle->>ThemeProvider: toggle theme
  ThemeProvider->>ChartScreen: provide colors and mode
  ChartScreen->>ChartPdf: download chart with mode
  ChartPdf->>ChartPdf: build themed PDF HTML and SVG
Loading

Possibly related PRs

  • Retsomm/SelfMap#3 — Modifies the shared navbar component used by this PR’s theme toggle and active-route handling.
  • Retsomm/SelfMap#25 — Introduces composite components whose accent styling is updated here.
  • Retsomm/SelfMap#46 — Provides related mobile design-system work extended here with light/dark palettes and runtime theme styles.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.26% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: site-wide theming plus PDF report consistency and filename updates.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (3)
mobile/components/NotificationsView.tsx (1)

19-23: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Share themed styles and configuration across notification rows.

NotificationCard rebuilds the same StyleSheet and type configuration once per FlatList item. Compute them once in NotificationsView and pass them into the card to avoid redundant allocations as the notification list grows.

Proposed refactor
-function NotificationCard({ item }: { item: AppNotification }) {
-  const Colors = useThemeColors()
-  const s = useMemo(() => createStyles(Colors), [Colors])
-  const typeCfg = useMemo(() => createTypeCfg(Colors), [Colors])
+function NotificationCard({
+  item,
+  s,
+  typeCfg,
+}: {
+  item: AppNotification
+  s: ReturnType<typeof createStyles>
+  typeCfg: ReturnType<typeof createTypeCfg>
+}) {
   const cfg = typeCfg[item.type] ?? typeCfg.announcement
 export default function NotificationsView() {
   const Colors = useThemeColors()
   const s = useMemo(() => createStyles(Colors), [Colors])
+  const typeCfg = useMemo(() => createTypeCfg(Colors), [Colors])
- renderItem={({ item }) => <NotificationCard item={item} />}
+ renderItem={({ item }) => <NotificationCard item={item} s={s} typeCfg={typeCfg} />}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mobile/components/NotificationsView.tsx` around lines 19 - 23, Move the
useThemeColors, createStyles, and createTypeCfg computations from
NotificationCard into NotificationsView so each list render creates them once.
Pass the resulting styles and type configuration into NotificationCard, and use
those props when selecting the notification config and rendering the row while
preserving existing themed behavior.
components/ThemeProvider.tsx (1)

17-24: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the new theme-switching behavior.

  • components/ThemeProvider.tsx#L17-L24: add a complete comment covering the state transition, DOM data-theme update, and cookie persistence contract.
  • components/ThemeToggle.tsx#L5-L15: add a component-level comment covering the theme-state-to-icon, action-label, and aria-pressed mapping.

As per coding guidelines: “Each functionality should be implemented as an independent, reusable function with complete comments including calculation principles.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/ThemeProvider.tsx` around lines 17 - 24, Document both
theme-switching sites: in components/ThemeProvider.tsx lines 17-24, add a
complete comment for toggleTheme covering the dark/light state transition,
document.documentElement data-theme update, and one-year SameSite=Lax cookie
persistence; in components/ThemeToggle.tsx lines 5-15, add a component-level
comment describing how theme state maps to the displayed icon, action label, and
aria-pressed value.

Source: Coding guidelines

mobile/app/chart/[id].tsx (1)

55-84: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract a shared ActionButton into ChartPrimitives.tsx. Both chart screens independently define an ActionButton component plus identical actionBtn* style keys inside their own createStyles(Colors), right alongside the same PR's centralization of SectionCard/Row/Tag into ChartPrimitives.tsx.

  • mobile/app/chart/[id].tsx#L55-L84: move this ActionButton (and its actionBtn* style keys) into ChartPrimitives.tsx, exporting a shared component parameterized by the existing props.
  • mobile/app/chart/preview.tsx#L32-L65: replace this variant (which adds notLoggedInLabel/isLoggedIn) with the shared component, extending its props to support the not-logged-in label case, and drop the duplicated actionBtn* keys from its local createStyles.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mobile/app/chart/`[id].tsx around lines 55 - 84, The duplicated ActionButton
implementations should be centralized in ChartPrimitives.tsx. At
mobile/app/chart/[id].tsx lines 55-84, move the component and its actionBtn*
styles into the shared module and update the screen to use the exported
component; at mobile/app/chart/preview.tsx lines 32-65, replace the local
variant with that shared component, extending its props to preserve
notLoggedInLabel/isLoggedIn behavior, and remove the duplicated actionBtn*
styles from createStyles.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/globals.css`:
- Around line 33-35: Update the font token declarations in the global styles to
avoid self-references: define separate --next-font-serif, --next-font-sans, and
--next-font-mono fallback variables, then map --font-serif, --font-sans, and
--font-mono to the corresponding --next-font-* variables. Preserve the existing
Georgia, system-ui, and ui-monospace fallbacks.

In `@components/ui/calendar.tsx`:
- Around line 154-159: Update the calendar class configuration around day_button
and selected so selected days retain the light paper text color on hover; ensure
the selected-state hover text utility takes precedence over day_button’s
hover:text-[var(--ink-on-tan)] without changing unselected-day hover styling.

In `@mobile/components/chart/CompositeInfo.tsx`:
- Around line 111-143: Update the 行星閘門對照 group-header row in the CompositeInfo
component so each planetGroupLabel for nameA and nameB spans or occupies the
combined width of its two underlying planetGateColSm columns, matching the
four-column data and sub-header rows. Preserve the leading empty planet column
and keep the two person groups centered over their respective 意識/潛意識 pairs.

In `@mobile/constants/tokens.ts`:
- Around line 2-4: Update the new semantic tokens transitWarmText, successText,
and successBg in the mobile color palette to use the matching hex values from
app/globals.css, or explicitly document them as mobile-only if no web
equivalents are intended; keep shared palette tokens synchronized across light
and dark themes.

In `@mobile/contexts/ThemeContext.tsx`:
- Around line 23-35: Update the initialization effect and toggleTheme callback
in ThemeContext so an asynchronously resolved stored theme cannot overwrite a
mode changed locally by toggleTheme. Track whether a local toggle has occurred,
and apply the restored value only if no toggle happened before the storage read
completed; preserve the existing light/dark validation and persistence behavior.

In `@mobile/lib/chartPdf.ts`:
- Around line 34-49: Update the dimBg assignment in pdfPalette to use c.gateBg
for both dark and light themes, replacing the mode-specific darkColors.altRowBg
fallback while preserving the existing palette structure.

---

Nitpick comments:
In `@components/ThemeProvider.tsx`:
- Around line 17-24: Document both theme-switching sites: in
components/ThemeProvider.tsx lines 17-24, add a complete comment for toggleTheme
covering the dark/light state transition, document.documentElement data-theme
update, and one-year SameSite=Lax cookie persistence; in
components/ThemeToggle.tsx lines 5-15, add a component-level comment describing
how theme state maps to the displayed icon, action label, and aria-pressed
value.

In `@mobile/app/chart/`[id].tsx:
- Around line 55-84: The duplicated ActionButton implementations should be
centralized in ChartPrimitives.tsx. At mobile/app/chart/[id].tsx lines 55-84,
move the component and its actionBtn* styles into the shared module and update
the screen to use the exported component; at mobile/app/chart/preview.tsx lines
32-65, replace the local variant with that shared component, extending its props
to preserve notLoggedInLabel/isLoggedIn behavior, and remove the duplicated
actionBtn* styles from createStyles.

In `@mobile/components/NotificationsView.tsx`:
- Around line 19-23: Move the useThemeColors, createStyles, and createTypeCfg
computations from NotificationCard into NotificationsView so each list render
creates them once. Pass the resulting styles and type configuration into
NotificationCard, and use those props when selecting the notification config and
rendering the row while preserving existing themed behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9ce4ca1e-81d3-48dd-b208-9696efa7fd39

📥 Commits

Reviewing files that changed from the base of the PR and between 653633b and 1680659.

⛔ Files ignored due to path filters (1)
  • mobile/assets/store/icon-512.png is excluded by !**/*.png
📒 Files selected for processing (70)
  • app/account/AccountClient.tsx
  • app/aura-flow/page.tsx
  • app/globals.css
  • app/layout.tsx
  • components/Navbar.tsx
  • components/SelfMap.tsx
  • components/ThemeProvider.tsx
  • components/ThemeToggle.tsx
  • components/humanDesign/BirthProfileManager.tsx
  • components/humanDesign/BodyGraph.tsx
  • components/humanDesign/ChartView.tsx
  • components/humanDesign/CompositeTab.tsx
  • components/humanDesign/CompositeView.tsx
  • components/humanDesign/DetailDrawer.tsx
  • components/humanDesign/LocationPicker.tsx
  • components/humanDesign/TimezonePickerModal.tsx
  • components/humanDesign/TransitView.tsx
  • components/ui/calendar.tsx
  • components/ui/select.tsx
  • lib/clerkAppearance.ts
  • lib/downloadChart.ts
  • lib/theme.ts
  • mobile/app/(auth)/sign-in.tsx
  • mobile/app/(tabs)/_layout.tsx
  • mobile/app/(tabs)/create.tsx
  • mobile/app/(tabs)/index.tsx
  • mobile/app/(tabs)/learn.tsx
  • mobile/app/(tabs)/profile.tsx
  • mobile/app/(tabs)/theme-toggle.tsx
  • mobile/app/_layout.tsx
  • mobile/app/chart/[id].tsx
  • mobile/app/chart/preview.tsx
  • mobile/app/learn/[topic].tsx
  • mobile/components/AppliedProfileCard.tsx
  • mobile/components/BirthDataForm.tsx
  • mobile/components/BirthProfilePickerModal.tsx
  • mobile/components/BirthProfileSheet.tsx
  • mobile/components/ChartListView.tsx
  • mobile/components/CitySearchField.tsx
  • mobile/components/CompositeView.tsx
  • mobile/components/DateTimePicker.tsx
  • mobile/components/DetailBottomSheet.tsx
  • mobile/components/ErrorBoundary.tsx
  • mobile/components/InputModal.tsx
  • mobile/components/NavBackHeader.tsx
  • mobile/components/NotificationsView.tsx
  • mobile/components/ScreenHeader.tsx
  • mobile/components/StateViews.tsx
  • mobile/components/SubTabBar.tsx
  • mobile/components/TimezonePickerModal.tsx
  • mobile/components/TransitView.tsx
  • mobile/components/WheelPicker.tsx
  • mobile/components/chart/ChartPrimitives.tsx
  • mobile/components/chart/CompositeInfo.tsx
  • mobile/components/chart/PersonalChartDetails.tsx
  • mobile/components/chart/TransitAnalysis.tsx
  • mobile/components/composite/compositeText.ts
  • mobile/components/learn/CenterList.tsx
  • mobile/components/learn/ChannelList.tsx
  • mobile/components/learn/CompositeLearn.tsx
  • mobile/components/learn/GateList.tsx
  • mobile/components/learn/SummaryList.tsx
  • mobile/components/learn/TransitLearn.tsx
  • mobile/components/learn/learnStyles.ts
  • mobile/components/transit/GateChip.tsx
  • mobile/components/transit/ImpactCard.tsx
  • mobile/components/transit/icons.tsx
  • mobile/constants/tokens.ts
  • mobile/contexts/ThemeContext.tsx
  • mobile/lib/chartPdf.ts
💤 Files with no reviewable changes (1)
  • mobile/components/ScreenHeader.tsx

Comment thread app/globals.css Outdated
Comment thread components/ui/calendar.tsx
Comment thread mobile/components/chart/CompositeInfo.tsx
Comment thread mobile/constants/tokens.ts
Comment thread mobile/contexts/ThemeContext.tsx
Comment thread mobile/lib/chartPdf.ts
- globals.css:字型變數改用獨立 fallback 變數,避免自我參照造成的循環失效
- calendar.tsx:選中日期 hover 時保留淺色文字,避免深字疊深底看不見
- CompositeInfo:行星閘門對照表頭姓名欄改為橫跨兩欄,對齊下方意識/潛意識欄位
- tokens.ts:標註 mobile 專屬色票,避免誤判成跟網頁版不同步
- ThemeContext:修正主題切換與 AsyncStorage 讀取的競態,避免快速切換被舊值蓋回
- chartPdf:PDF 淡底色統一改用 gateBg,跟 app 內其餘徽章/標籤底色一致

並將 mobile 端重複的 ActionButton 元件與樣式整併到 ChartPrimitives,
NotificationsView 的樣式/型別設定改到父層算一次,補上主題切換相關註解。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- DetailDrawer 類型高亮區塊補上 active class,避免整區被當成未啟用狀態淡化顯示
- 帳號頁通知標籤新增 --olive-text/--tan-text 深色文字變數,修正淺色主題下標籤與背景對比過低的問題

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@mobile/components/chart/ChartPrimitives.tsx`:
- Around line 55-86: Add a complete documentation comment immediately above the
ActionButton function describing its reusable behavior: loading disables the
button and shows the processing label, logged-out users receive the login
prompt, variant selects primary or outline styling, and pressed state applies
disabled styling. Do not alter the implementation behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ed527aae-b34a-42c7-ac12-9533eb4f900f

📥 Commits

Reviewing files that changed from the base of the PR and between 1680659 and f1910d4.

📒 Files selected for processing (12)
  • app/globals.css
  • components/ThemeProvider.tsx
  • components/ThemeToggle.tsx
  • components/ui/calendar.tsx
  • mobile/app/chart/[id].tsx
  • mobile/app/chart/preview.tsx
  • mobile/components/NotificationsView.tsx
  • mobile/components/chart/ChartPrimitives.tsx
  • mobile/components/chart/CompositeInfo.tsx
  • mobile/constants/tokens.ts
  • mobile/contexts/ThemeContext.tsx
  • mobile/lib/chartPdf.ts
🚧 Files skipped from review as they are similar to previous changes (10)
  • components/ThemeToggle.tsx
  • components/ui/calendar.tsx
  • mobile/contexts/ThemeContext.tsx
  • components/ThemeProvider.tsx
  • mobile/constants/tokens.ts
  • mobile/components/NotificationsView.tsx
  • mobile/components/chart/CompositeInfo.tsx
  • mobile/app/chart/[id].tsx
  • app/globals.css
  • mobile/lib/chartPdf.ts

Comment thread mobile/components/chart/ChartPrimitives.tsx
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Retsomm
Retsomm merged commit 9e2118d into main Jul 23, 2026
3 checks passed

This branch was successfully deployed

1 active deployment
Preview — a180b445 Deployed Jul 23, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant