Issues

Report bugs and request features to help improve the platform.

2

GDPR / Email Compliance for Legacy User Outreach

In Progress

## Problem We plan to email up to 39K legacy users who signed up 8–14 years ago on salon.io. Under GDPR (EU users are the majority), we need a compliant basis for contacting them. ## Requirements ### Legal Basis - **Legitimate interest** (Art. 6(1)(f) GDPR) is the most viable basis — we have an existing customer relationship and are informing them about a successor service for their data/content. - Document the legitimate interest assessment (LIA) before sending. ### Email Content Requirements - Every email must include a working **unsubscribe link** (one-click, per CAN-SPAM and GDPR) - Every email must link to the **privacy policy**: https://docs.salon.io/docs/en/legal/privacy - Every email must link to the **terms of service**: https://docs.salon.io/docs/en/legal/terms - Emails must clearly identify the sender (salon.io / New Salon, Stefan) - Physical address in footer (required by CAN-SPAM, good practice for GDPR) ### Technical Requirements - Resend supports one-click unsubscribe headers (List-Unsubscribe) - CRM must track unsubscribe status — never re-email someone who unsubscribed - SPF/DKIM/DMARC must be configured on sending domain before any volume send - Bounce handling: remove hard bounces from future sends ### Tiered Send Strategy (Risk Mitigation) - **Test batch**: 10 emails to known addresses — verify deliverability - **Tier 1**: 210 VIP users — warm, engaged, low risk - **Tier 2–6**: Graduated sends per [Kickfund PRD](https://docs.salon.io/docs/en/legal/terms) - **Tier 8**: 32K bulk send — only after earlier tiers prove deliverability and low complaint rates - Monitor spam complaint rate: stay under 0.1% (Google/Yahoo requirement) ### Data Handling - Legacy user emails stored in MongoDB (CRM). Do not export to third-party tools without DPA. - Users who migrate to New Salon consent to new [Terms](https://docs.salon.io/docs/en/legal/terms) and [Privacy Policy](https://docs.salon.io/docs/en/legal/privacy) during signup/account linking. - Provide data export/deletion path for legacy users who request it (GDPR Art. 15/17) ## Acceptance Criteria - [ ] Legitimate Interest Assessment documented - [ ] Unsubscribe mechanism working in Resend - [ ] CRM tracks unsubscribe status per user - [ ] SPF/DKIM/DMARC verified on sending domain - [ ] Email templates include: unsubscribe link, privacy policy link, terms link, physical address - [ ] Bounce handling configured - [ ] Test batch sent and verified before Tier 1

#43 opened by pew16 days ago
0
2

[migration] Fix fixed-width layout mapping and import all i18n versions

In Progress

- Account for legacy `margin-right`, `padding` values when calculating column config - Map legacy `fixedwidthconfig` gap/margin to new column layout gutter setting - Preserve visual density (e.g. 3 items at 300px with 10px gap on 960px container = 3 columns with 10px gutter) - Import ALL i18n language variants (currently only imports German preferentially) - Set `default_language` from legacy user language field, `languages` array from found content **Files:** `app/api/migration/import-stream/route.ts`, `src/lib/legacy-layout-mapper.ts`

#22 opened by SALabout 1 month ago
0
1

Consolidated Onboarding & Legacy User Migration (LUM) Process

In Progress

starting from the request invite flow, the admin invite flow, the user invites users flow, user questionaire etc. we need "Complete your Profile" Message Complete your Profile make users aware of profile customisation. "You can customise your profile now or do it later." Migration -Emails, communication angle: "Claiming your unique username now is a smart move, though!" update Migration Dashboard http://localhost:3006/legacy/migration-status Migration Status Dashboard add email campaign features from http://localhost:3006/legacy/overdue to Migration Status Dashboard make sure legacy user are identified and are allowed to claim their legacy username and member status as a site tier. legacy user badge. member since remember legacy join date. so we can show on user profle , e.g. "Joined January 2013" we already have very elaborated migration process and legacy salon api on username/settings/migration this should evolve or sync with legacy user account claim process

#38 opened by SAL12 days ago
1
1

Add a "Newsletter" block type

In Progress

New block type with a simple email input + submit button Stores the Mailchimp list URL in block settings Posts directly to Mailchimp's form action URL (no API key needed) Gives you styling control that matches the site theme Requires: new block type in src/types/blocks.ts, renderer, editor UI

#32 opened by SAL18 days ago
1
1

[editor] Sections as collections of any tagged asset type

In Progress

- Extend CollectionConfig with `collectionSource`: pages / images / text / video / all - Collection rendering per source type: pages as page cards, images as masonry grid, text as list, video as video grid - Extend `CollectionSettings.tsx` with source type selector - Preview count updates live - Add to collection shortcut from asset gallery (tag assignment) **Files:** `src/components/salon/editor/CollectionSettings.tsx`, `src/types/blocks.ts`, `src/hooks/use-collection.ts`

#23 opened by SALabout 1 month ago
0
1

[editor] Refactor and polish Image + Text edit panels

In Progress

- ImageEditPanel (62KB) extract into sub-components - TextEditPanel (70KB) extract into sub-components - Consistent UX: crop/resize, caption editing, alt text, formatting toolbar - Style preset picker more prominent in text panel - Cross-project section copy (user feedback) - Image opacity control (user feedback) **Files:** `src/components/editor/ImageEditPanel.tsx`, `src/components/editor/TextEditPanel.tsx`

#16 opened by SALabout 1 month ago
0
1

[editor] Asset tagging - tags on images, text, and video

In Progress

- Database: create `tags` + `asset_tags` join tables (normalized approach) - Add TagInput to image, text, and video edit panels - Asset gallery: tag display on thumbnails, filtering by tag, bulk tag assignment - Tag cloud of used tags - Sort by tag, date, size, name **Files:** Supabase migration, `ImageEditPanel.tsx`, `TextEditPanel.tsx`, `VideoEditPanel.tsx`, `AssetGallery.tsx`

#19 opened by SALabout 1 month ago
0
1

[editor] Custom theme editing - colors, fonts, per-section overrides

In Progress

- Expand SiteThemeSelector from presets-only to custom editing - Allow editing individual colors within a preset (primary, secondary, accent, background, text) - Typography presets: Google Fonts subset (20-30 curated fonts), font size scale selector - Per-section style overrides (color scheme, font override) - Live preview as colors/fonts change **Files:** `src/components/theme/SiteThemeSelector.tsx`, `src/types/site-theme.ts`

#17 opened by SALabout 1 month ago
0
0

Mobile Optimisation and Device Preview

In Progress

we need a total reality check and overhaul of mobile and device preview. both are pretty much broken now whats expected is that when a user selects mobile device preview, a special panel in sidebar opens, with 3 main tabs section, navigation, style for every section the user should be able to select alternative layout type for mobile. note, that the user should not be able to edit content when in mobile preview mode, but only change/optimise a subset of settings for mobile display

#31 opened by SAL19 days ago
1