Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Signup links and field refs drop ø, æ, ß and ł

Đã đóng Phù hợp với người mới
#641 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Một pull request liên quan đã được merge.

  • #671 của @richshaw — đã merge

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
75/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
backend

Hướng nghiên cứu

Đọc src/lib/kebab.ts và các trường hợp hiện có trong src/lib/slug.test.ts, sau đó kiểm tra các bài kiểm thử slot và field được đề cập trong issue. Bổ sung độ bao phủ cho các chữ cái được liệt kê, đồng thời giữ nguyên kết quả hiện tại cho å, ä và ö. Công việc hoàn tất khi các ánh xạ mới được kiểm thử và các lệnh lint, typecheck, knip và test được liệt kê chạy thành công.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug pipeline:ready pipeline:ux

Needs your OK: this changes how the web addresses of new signups, and the refs of new fields and slots, are made from text with these letters. Existing links don't change. Swap pipeline:proposed for pipeline:ready to have it built.

What happens

toKebab in src/lib/kebab.ts turns text into the kebab-case behind signup slugs, workspace slugs, slot refs and field refs. It strips accents with NFKD, which works for å, ä, ö, é and ü, but some letters don't decompose and are dropped or split the word:

  • "Smørrebrød" → sm-rrebr-d
  • "Æblekage" → blekage
  • "Straße" → stra-e
  • "Łódź" → odz

So Danish, Norwegian, German and Polish titles get broken-looking links. Non-Latin titles (Cyrillic, Greek, Chinese) come out empty and fall back to signup, field or slot, which is fine for now.

Fix, in outline

  • Map the letters that don't decompose, before NFKD: ø→o, æ→ae, œ→oe, ß→ss, ł→l, đ→d, þ→th, ð→d, in upper and lower case.
  • Leave non-Latin scripts on the fallback.

Watch for

  • Existing slugs and refs never change. toSlug and toFieldRef are only called to make new values (pickAvailableSlug in src/services/signups.ts, the slot ref in src/services/slots.ts, the workspace slug in src/auth/adapter.ts), so nothing re-derives a stored one.
  • No Node imports. toKebab is shared with the builder in the browser.
  • Tests pin today's outputs (src/lib/slug.test.ts and the slot-field tests).

Order

None. This can be built any time; it should land before Danish or Norwegian ship.

Done when

  • Unit tests cover each mapped letter, and å, ä and ö come out as before.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test pass.

Planned with the owner in https://claude.ai/code/session_01EFKmj716ZY3b3SwR8TV8Y2 and checked against the code on main at 35288fa. The full plan is private to the owner's account: https://claude.ai/artifact/VgQH6U2s2EVx3LX991fJi8 (a Claude session on that account can open it with the Artifact tool's read action). It's in phase 4 there.

Ngôn ngữ chính
TypeScript
Star
19
Fork
4
Merge trung bình
21 giờ 3 phút
Pull request đã merge (30 ngày)
176

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của richshaw/OpenSignup

Tất cả issue của richshaw/OpenSignup

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.