Skip to content

Preview#277

Merged
Emmy-Akintz merged 45 commits into
mainfrom
preview
Feb 26, 2026
Merged

Preview#277
Emmy-Akintz merged 45 commits into
mainfrom
preview

Conversation

@Emmy-Akintz
Copy link
Copy Markdown
Member

No description provided.

dependabot Bot and others added 30 commits September 15, 2025 08:19
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.542.0 to 0.544.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/0.544.0/packages/lucide-react)

---
updated-dependencies:
- dependency-name: lucide-react
  dependency-version: 0.544.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [axios](https://github.com/axios/axios) from 1.11.0 to 1.12.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.11.0...v1.12.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [react-day-picker](https://github.com/gpbl/react-day-picker) from 9.9.0 to 9.10.0.
- [Release notes](https://github.com/gpbl/react-day-picker/releases)
- [Changelog](https://github.com/gpbl/react-day-picker/blob/main/CHANGELOG.md)
- [Commits](gpbl/react-day-picker@v9.9.0...v9.10.0)

---
updated-dependencies:
- dependency-name: react-day-picker
  dependency-version: 9.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ew/react-day-picker-9.10.0

npm(deps): bump react-day-picker from 9.9.0 to 9.10.0
…ew/lucide-react-0.544.0

npm(deps): bump lucide-react from 0.542.0 to 0.544.0
…ew/axios-1.12.2

npm(deps): bump axios from 1.11.0 to 1.12.2
Bumps [react-day-picker](https://github.com/gpbl/react-day-picker) from 9.10.0 to 9.11.0.
- [Release notes](https://github.com/gpbl/react-day-picker/releases)
- [Changelog](https://github.com/gpbl/react-day-picker/blob/main/CHANGELOG.md)
- [Commits](gpbl/react-day-picker@v9.10.0...v9.11.0)

---
updated-dependencies:
- dependency-name: react-day-picker
  dependency-version: 9.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ew/react-day-picker-9.11.0

npm(deps): bump react-day-picker from 9.10.0 to 9.11.0
Bumps [jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom) from 30.1.2 to 30.2.0.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v30.2.0/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-version: 30.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.2 to 5.9.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](microsoft/TypeScript@v5.9.2...v5.9.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 5.9.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.8.0 to 6.9.1.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](testing-library/jest-dom@v6.8.0...v6.9.1)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 6.9.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [react-day-picker](https://github.com/gpbl/react-day-picker) from 9.11.0 to 9.11.1.
- [Release notes](https://github.com/gpbl/react-day-picker/releases)
- [Changelog](https://github.com/gpbl/react-day-picker/blob/main/CHANGELOG.md)
- [Commits](gpbl/react-day-picker@v9.11.0...v9.11.1)

---
updated-dependencies:
- dependency-name: react-day-picker
  dependency-version: 9.11.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.544.0 to 0.553.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/0.553.0/packages/lucide-react)

---
updated-dependencies:
- dependency-name: lucide-react
  dependency-version: 0.553.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@radix-ui/react-slot](https://github.com/radix-ui/primitives) from 1.2.3 to 1.2.4.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-slot"
  dependency-version: 1.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@radix-ui/react-progress](https://github.com/radix-ui/primitives) from 1.1.7 to 1.1.8.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-progress"
  dependency-version: 1.1.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…ew/radix-ui/react-progress-1.1.8

npm(deps): bump @radix-ui/react-progress from 1.1.7 to 1.1.8
…ew/radix-ui/react-slot-1.2.4

npm(deps): bump @radix-ui/react-slot from 1.2.3 to 1.2.4
Bumps [@radix-ui/react-label](https://github.com/radix-ui/primitives) from 2.1.7 to 2.1.8.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-label"
  dependency-version: 2.1.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…ew/radix-ui/react-label-2.1.8

npm(deps): bump @radix-ui/react-label from 2.1.7 to 2.1.8
Bumps [@radix-ui/react-separator](https://github.com/radix-ui/primitives) from 1.1.7 to 1.1.8.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-separator"
  dependency-version: 1.1.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…ew/jest-environment-jsdom-30.2.0

npm(deps-dev): bump jest-environment-jsdom from 30.1.2 to 30.2.0
…ew/testing-library/jest-dom-6.9.1

npm(deps-dev): bump @testing-library/jest-dom from 6.8.0 to 6.9.1
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 4.1.13 to 4.1.17.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.17/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-version: 4.1.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) from 4.1.13 to 4.1.17.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.17/packages/@tailwindcss-postcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.1.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Emmy-Akintz and others added 9 commits November 11, 2025 17:19
…ew/typescript-5.9.3

npm(deps-dev): bump typescript from 5.9.2 to 5.9.3
…ew/react-day-picker-9.11.1

npm(deps): bump react-day-picker from 9.11.0 to 9.11.1
…ew/lucide-react-0.553.0

npm(deps): bump lucide-react from 0.544.0 to 0.553.0
…ew/radix-ui/react-separator-1.1.8

npm(deps): bump @radix-ui/react-separator from 1.1.7 to 1.1.8
…ew/tailwindcss-4.1.17

npm(deps-dev): bump tailwindcss from 4.1.13 to 4.1.17
…ew/tailwindcss/postcss-4.1.17

npm(deps-dev): bump @tailwindcss/postcss from 4.1.13 to 4.1.17
Bumps [next](https://github.com/vercel/next.js) from 15.5.2 to 16.1.6.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](vercel/next.js@v15.5.2...v16.1.6)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.1.6
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Copilot AI review requested due to automatic review settings February 26, 2026 10:20
@netlify
Copy link
Copy Markdown

netlify Bot commented Feb 26, 2026

Deploy Preview for taskipline ready!

Name Link
🔨 Latest commit 2b90285
🔍 Latest deploy log https://app.netlify.com/projects/taskipline/deploys/69a04fa5f6ea020008e9dcdc
😎 Deploy Preview https://deploy-preview-277--taskipline.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request implements GitHub OAuth authentication, updates various dependencies, modifies the header UI with placeholder navigation items, and adds an MIT license file. The changes introduce a new GitHub authentication flow alongside the existing Google OAuth implementation.

Changes:

  • Added GitHub OAuth authentication with client-side OAuth flow implementation
  • Updated multiple dependencies including Radix UI components, axios, lucide-react, and testing libraries
  • Modified header navigation to replace working links with non-functional tooltip placeholders showing "Under construction"
  • Added MIT license file

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
src/types/auth.ts Adds GithubAuthPayload type for GitHub OAuth
src/services/authService.ts Implements signInWithGithub service function
src/app/(auth)/signin/page.tsx Integrates GitHub OAuth flow with state management and callback handling
src/lib/env.ts Adds GitHub OAuth environment variables and constructs redirect URIs
src/components/header.tsx Replaces functional navigation links with tooltip placeholders
package.json Updates dependencies and adds radix-ui meta-package
package-lock.json Lock file updates for dependency changes
LICENCE Adds MIT license file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/lib/env.ts
export const apiUrl = process.env.NEXT_PUBLIC_TASKIPLINE_API
// google oauth
export const clientId = process.env.NEXT_PUBLIC_CLIENT_ID
export const clientSecret = process.env.NEXT_PUBLIC_CLIENT_SECRET
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The clientSecret and githubClientSecret are exposed as client-side environment variables with the NEXT_PUBLIC_ prefix. OAuth client secrets should never be exposed to the client-side code as they can be accessed by anyone viewing the browser source. These secrets should only be used in server-side code (API routes or server components) where they remain secure.

Copilot uses AI. Check for mistakes.
Comment thread src/lib/env.ts
Comment on lines +7 to +12
export const googleRedirectUri = `${siteUrl}${googleRedirectPath}`
// github oauth
export const githubClientId = process.env.NEXT_PUBLIC_GITHUB_CLIENT_ID
export const githubClientSecret = process.env.NEXT_PUBLIC_GITHUB_SECRET
export const githubRedirectPath = process.env.NEXT_PUBLIC_GITHUB_REDIRECT_PATH
export const githubRedirectUri = `${siteUrl}${githubRedirectPath}`
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The githubRedirectUri is constructed by concatenating siteUrl and githubRedirectPath, both of which could be undefined if the environment variables are not set. This would result in "undefined/auth/github/callback" or similar malformed URLs. Consider adding validation or default values to prevent runtime errors.

Copilot uses AI. Check for mistakes.
codeProcessed.current = true
signInWithGithubMutation.mutate({ code })
}
}, [code, error, state, signInWithGithubMutation, router])
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The useEffect dependency array includes signInWithGithubMutation, which is a mutation object that changes on every render. This will cause the effect to run on every render, potentially triggering multiple OAuth callbacks. The mutation should be excluded from the dependency array, or use useCallback to memoize the mutation trigger. React Query mutations are stable and don't need to be in the dependency array.

Copilot uses AI. Check for mistakes.
Comment on lines +122 to +136
useEffect(() => {
if (code && !codeProcessed.current) {
console.log('GitHub OAuth params:', { code, state, error })

if (error) {
notify('error', `GitHub auth error: ${error}`)
// router.push('/signin')
return
}

if (state !== githubState) {
notify('error', 'Invalid state parameter')
// router.push('/signin')
return
}
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The codeProcessed ref is used to prevent duplicate processing, but after an error (lines 127-130, 133-136), the ref is not reset. If the user remains on the page and the OAuth flow completes again (e.g., after fixing the error), the code won't be processed because codeProcessed.current remains true. Consider resetting the ref on error or removing the error parameters from the URL.

Copilot uses AI. Check for mistakes.

useEffect(() => {
if (code && !codeProcessed.current) {
console.log('GitHub OAuth params:', { code, state, error })
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

Console.log statements should be removed in production code. The statement logs sensitive OAuth parameters including the authorization code. This could expose sensitive information if console logs are accidentally left enabled or captured in error monitoring tools.

Copilot uses AI. Check for mistakes.
Comment thread src/lib/env.ts
export const googleRedirectUri = `${siteUrl}${googleRedirectPath}`
// github oauth
export const githubClientId = process.env.NEXT_PUBLIC_GITHUB_CLIENT_ID
export const githubClientSecret = process.env.NEXT_PUBLIC_GITHUB_SECRET
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The githubClientSecret is exposed as a client-side environment variable with the NEXT_PUBLIC_ prefix. OAuth client secrets should never be exposed to the client-side code as they can be accessed by anyone viewing the browser source. These secrets should only be used in server-side code (API routes or server components) where they remain secure.

Copilot uses AI. Check for mistakes.
Comment on lines +132 to +136
if (state !== githubState) {
notify('error', 'Invalid state parameter')
// router.push('/signin')
return
}
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The GitHub OAuth state parameter validation has a potential security issue. If githubState is undefined (when NEXT_PUBLIC_GITHUB_STATE is not set), the comparison state !== githubState would compare the received state to undefined, which could be bypassed. Additionally, using a static state parameter from environment variables defeats the purpose of CSRF protection. The state should be a cryptographically random value generated per-request and stored in session/localStorage to be validated upon callback.

Copilot uses AI. Check for mistakes.
Comment on lines +128 to +135
// router.push('/signin')
return
}

if (state !== githubState) {
notify('error', 'Invalid state parameter')
// router.push('/signin')
return
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The commented-out router.push calls should either be uncommented to redirect users after errors, or removed entirely. Leaving them commented suggests incomplete implementation. After an OAuth error, users should be redirected to clean up the URL parameters, or the parameters should be removed from the URL without navigation.

Copilot uses AI. Check for mistakes.
Comment thread src/components/header.tsx
<ModeToggle />
{/* <WaitlistModal ctaSize="default" /> */}
<div className="flex gap-2">
{' '}
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

There's an extraneous string literal with just a space character on line 98. This doesn't affect functionality but is unnecessary and should be removed for code cleanliness.

Copilot uses AI. Check for mistakes.
Comment thread src/components/header.tsx
Comment on lines +138 to +167
<Tooltip>
<TooltipTrigger asChild>
<p className="text-sm font-medium transition-colors hover:text-primary cursor-pointer">
Product
</p>
</TooltipTrigger>
<TooltipContent>
<p>Under construction!</p>
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger asChild>
<p className="text-sm font-medium transition-colors hover:text-primary cursor-pointer">
Prices
</p>
</TooltipTrigger>
<TooltipContent>
<p>Under construction!</p>
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger asChild>
<p className="text-sm font-medium transition-colors hover:text-primary cursor-pointer">
Resources
</p>
</TooltipTrigger>
<TooltipContent>
<p>Under construction!</p>
</TooltipContent>
</Tooltip>
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The same accessibility issue exists in the mobile navigation. The navigation items (Product, Prices, Resources) use <p> tags instead of proper interactive elements like <button>, creating accessibility issues. These elements appear clickable but don't perform any action. Consider using <button> elements with disabled attribute for better semantics and accessibility.

Copilot uses AI. Check for mistakes.
@Emmy-Akintz Emmy-Akintz merged commit 3c0daef into main Feb 26, 2026
15 checks passed
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.

2 participants