Skip to content

Feat/auth#1

Open
ardey26 wants to merge 47 commits intomainfrom
feat/auth
Open

Feat/auth#1
ardey26 wants to merge 47 commits intomainfrom
feat/auth

Conversation

@ardey26
Copy link
Copy Markdown
Owner

@ardey26 ardey26 commented Apr 10, 2026

No description provided.

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 10, 2026

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

Project Deployment Actions Updated (UTC)
iksi Ready Ready Preview, Comment Apr 13, 2026 5:11am

ardey26 and others added 7 commits April 11, 2026 20:02
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Deleted Footer.svelte (no longer needed)
- Updated layout to use Header component
- Cleaned up component exports

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replaced Apple-inspired variables with Living Minimal tokens
- Updated Header with brand mark and proper color tokens
- Fixed sign-in button and avatar styling
- Dropdowns now use --surface, --border, --text-primary

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ThemeToggle: 44px → 36px
- Avatar: 32px → 36px
- Sign-in button: height 36px with pill shape

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use .icon-btn class to exclude from scale transform,
use opacity change instead.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ardey26 and others added 20 commits April 11, 2026 21:21
- Implement bot/unfurler detection with OG meta tags
- Add preview page UI showing destination URL and safety status
- Implement click tracking with device, referrer, and country data
- Add preview preference logic (link setting + visitor preference)
- Create fallback for bots and no-JS environments
- Follow Living Minimal design system (no emojis, progressive disclosure)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create onboarding page with username selection form
- Redirect logged-in users without username to /onboarding
- Add username to User type and auth queries
- Handle race conditions on username claims with unique constraint
- Display subdomain pattern (username.iksi.app) correctly
- Sanitize suggested usernames from OAuth name

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Enables profile access at username.iksi.app by detecting profile
subdomains and rewriting URLs to /profile routes. Stores profileUsername
and profileUser in locals for route handlers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
List authenticated user's links with pagination and click statistics.
Includes organic vs bot breakdown for each link.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements the Links API create endpoint with:
- Rate limiting differentiated by auth type (15/hr anonymous, 60/hr session, 600/hr API key)
- Backwards compatible request body (url/longURL, customSlug/customURL)
- URL deduplication per owner
- Custom slug validation and uniqueness check
- Structured error responses with code and message
- Re-exports POST from /api/shorten for backwards compatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements subdomain-based profile pages (e.g., alice.iksi.app) with two views:
- Owner view: Dashboard with URL shortener and links management table
- Public view: Profile page showing listed links

Features include link toggle controls (listed/preview), click stats with organic %,
delete confirmation, pagination, and responsive mobile layout.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Allow users to set a preference to always show a preview page before
redirecting. For anonymous users, the preference is stored in a cookie.
For signed-in users, it is persisted in the database.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The verifyUserSession implementation was updated to use explicit field
selection including username and showPreview. Updated the test assertion
to match the actual select object.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rate limiter: Use Prisma transaction for atomic check-then-increment,
  preventing TOCTOU race condition under high concurrency
- Onboarding/UserMenu: Use environment-based URL construction via
  getProfileUrl() helper, enabling local development testing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove daisyUI btn classes to prevent uppercase transform
- Add autofill override to keep consistent input background
- Simplify container since layout already handles centering
- Add hover/active states per DESIGN.md specs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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