From 1fec63662d0c836617bd6ef625eb05a2a26283fa Mon Sep 17 00:00:00 2001 From: Waled Khatiz Date: Tue, 10 Sep 2024 15:43:53 +1000 Subject: [PATCH 01/10] fix: fill-opacity prop in features.tsx --- src/components/features.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/features.tsx b/src/components/features.tsx index b480ddf..dd49f16 100644 --- a/src/components/features.tsx +++ b/src/components/features.tsx @@ -262,7 +262,7 @@ export default function Features() {
- + + +
See what version of Firefox Zen uses From 31d7e84f6f6ba863d957b8be0714892b39b20c68 Mon Sep 17 00:00:00 2001 From: Devanshu07 Date: Thu, 12 Sep 2024 15:16:10 +0530 Subject: [PATCH 02/10] Reduce margin and adjust spacing for Privacy Policy and About pages --- src/app/privacy-policy/markdown.css | 33 +++++++++++++++++++++++----- src/app/privacy-policy/page.tsx | 34 ++++++++++++++--------------- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/src/app/privacy-policy/markdown.css b/src/app/privacy-policy/markdown.css index 293b725..0e754f2 100644 --- a/src/app/privacy-policy/markdown.css +++ b/src/app/privacy-policy/markdown.css @@ -1,37 +1,58 @@ - #policy h1 { - font-size: 2em; + font-size: 2.5em; margin: 0.67em 0; font-weight: bold; } +#policy { + padding-top: 2.5em; + margin-top: 4em; +} + + #policy h1:first-child { margin-top: 0 !important; } #policy h2 { - font-size: 1.5em; + font-size: 2em; margin: 0.83em 0; font-weight: bold; } #policy h3 { - font-size: 1.17em; + font-size: 1.5em; margin: 1em 0; + font-weight: semi-bold; } #policy ul { - margin: 1em; + margin: 1em 0; } #policy li { list-style: circle; + margin-left: 1.1em; + font-size: 1.1em; } +/* Link styles */ #policy a { color: #007bff; + transition: color 0.2s ease-in-out; +} + +#policy a:hover { + text-decoration: underline; + color: #0056b3; } #policy hr { - margin: 2em 0; + margin: 2em 0; + border: 1px solid #ddd; +} + +#policy p { + margin: 1em 0; + line-height: 1.6; } diff --git a/src/app/privacy-policy/page.tsx b/src/app/privacy-policy/page.tsx index fda0c6e..5bf55bf 100644 --- a/src/app/privacy-policy/page.tsx +++ b/src/app/privacy-policy/page.tsx @@ -15,7 +15,7 @@ export default function PrivacyPolicy() { # Privacy Policy * Last updated: 2024-08-12 -# Introduction +## Introduction Welcome to Zen Browser! Your privacy is our priority. This Privacy Policy outlines the types of personal information we collect, how we use it, and the steps we take to protect your data when you use Zen Browser. ## 1. Information We Do Not Collect @@ -23,56 +23,56 @@ Zen Browser is designed with privacy in mind. We do not collect, store, or share * Crash reports can be sent to Mozilla Firefox. But, we do not collect any crash reports. Crash reports are sent securely to Mozilla Firefox to help improve the stability of the browser. They do not contain any personal information. -## 1.1. No Telemetry +### **1.1. No Telemetry** We do not collect any telemetry data. However, you can opt-in to share telemetry data to Mozilla for the improvement of FireFox (the base upon which the Zen Browser is built). It will be treated in accordance with their Privacy Policy which you can read about [here](https://www.mozilla.org/en-US/privacy/). -## 1.2. No Personal Data Collection +### **1.2. No Personal Data Collection** Zen Browser does not collect any personal information such as your IP address, browsing history, search queries, or form data. -## 1.3. No Third-Party Tracking +### **1.3. No Third-Party Tracking** We do not allow third-party trackers or analytics tools to operate within Zen Browser. Your browsing activity remains entirely private and is not shared with any third party. Mozilla is not considered a third party as it is the base of Zen Browser. -# 2. Information Stored Locally on Your Device -## 2.1. Browsing Data +## 2. Information Stored Locally on Your Device +### **2.1. Browsing Data** Zen Browser stores certain data locally on your device to enhance your browsing experience. This includes: * **Cookies**: Cookies are stored locally on your device and are not shared with Zen Browser or any third party. You have full control over the management of cookies through the browser’s settings. * **Cache and Temporary Files**: Zen Browser may store cache files and other temporary data locally to improve performance. These files can be cleared at any time through the browser’s settings. -## 2.2. Settings and Preferences +### **2.2. Settings and Preferences** Any customizations, settings, and preferences you make within Zen Browser are stored locally on your device. We do not have access to or control over this data. -# 3. Sync Feature +## 3. Sync Feature Zen Browser offers a "Sync" feature, this is implemented using Mozilla Firefox's Sync feature. This feature allows you to synchronize your bookmarks, history, passwords, and other data across multiple devices. For this feature to work, your data is encrypted and stored on Mozilla’s servers and is treated in accordance with their Privacy Policy. We, at Zen, cannot view any of this data. * [Mozilla Firefox Sync](https://www.mozilla.org/en-US/privacy/mozilla-accounts/) * [This is how we store your passwords](https://support.mozilla.org/en-US/kb/how-firefox-securely-saves-passwords#:~:text=Firefox%20Desktop%20encrypts%20your%20passwords,cryptography%20to%20obscure%20your%20passwords.) -# 4. Data Security +## 4. Data Security Although Zen Browser does not collect your data, we are committed to protecting the information that is stored locally on your device and, if you use the Sync feature, the encrypted data stored on Mozilla's servers. We recommend that you use secure passwords, enable device encryption, and regularly update your software to ensure your data remains safe. * Note that most of the security measures are taken care by Mozilla Firefox. -# 5. Your Control -## 5.1. Data Deletion +## 5. Your Control +### **5.1. Data Deletion** You have full control over all data stored locally on your device by Zen Browser. You can clear your browsing data, cookies, and cache at any time using the browser’s settings. -## 5.2. Do Not Track +### **5.2. Do Not Track** Zen Browser automatically honors "Do Not Track" requests by default. We ensure that no tracking of your activity occurs, in compliance with this setting. -# 6. Our Website and Services +## 6. Our Website and Services When you click on the "Download" button on our website, a number in the database is incremented to track the number of downloads. This is done to understand the popularity of the browser. No personal data is collected during the process. -## 6.1. External links +### **6.1. External links** Zen Browser may contain links to external websites or services that are not owned or operated by us. We are not responsible for the content or privacy practices of these sites. We recommend that you review the privacy policies of these sites before providing them with any personal information. -# 7. Changes to This Privacy Policy +## 7. Changes to This Privacy Policy We may update this Privacy Policy from time to time to reflect changes in our practices or legal requirements. We will notify you of any significant changes by updating the effective date at the top of this policy. Continued use of Zen Browser after such changes constitutes your acceptance of the new terms. -# 8. Other telemetry done by Mozilla Firefox +## 8. Other telemetry done by Mozilla Firefox We try to disable all telemetry data collection in Zen Browser. But, we may have missed some. Check the below links for more information. @@ -80,7 +80,7 @@ You can also optionally enable telemetry data collection and other Mozilla Resea * Please check [Firefox Privacy Notice](https://www.mozilla.org/en-US/privacy/) for more information. -# 9. Contact Us +## 9. Contact Us If you have any questions or concerns about this Privacy Policy or Zen Browser, please contact us at: * Discord: [Zen Browser's Discord](https://discord.gg/zen-browser) From 33619bcf691ab75c477e261bca96a4dca6385180 Mon Sep 17 00:00:00 2001 From: Abhiman panwar Date: Thu, 12 Sep 2024 23:33:17 +0530 Subject: [PATCH 03/10] Simplify theme toggle to dark/light only - Remove system theme option - Refactor ModeToggle component for immediate theme switching - Implement local state management for smoother transitions - Persist theme preference in localStorage - Update icon display logic for better visual feedback This commit addresses the issue of delayed theme switching and simplifies the user experience by offering only dark and light modes. --- package.json | 1 + src/components/mode-toggle.tsx | 68 +++++++++++++++------------------- 2 files changed, 30 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 4e230ee..229d41b 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "styled-components": "^6.1.12", "tailwind-merge": "^2.5.1", "tailwindcss-animate": "^1.0.7", + "zen-website": "file:", "zod": "^3.23.8" }, "devDependencies": { diff --git a/src/components/mode-toggle.tsx b/src/components/mode-toggle.tsx index f4ac64f..ef4e1e8 100644 --- a/src/components/mode-toggle.tsx +++ b/src/components/mode-toggle.tsx @@ -1,50 +1,40 @@ "use client"; - import { useEffect, useState } from "react"; import { MoonIcon, SunIcon } from "@radix-ui/react-icons"; import { useTheme } from "next-themes"; import { Button } from "./ui/button"; export function ModeToggle() { - const { theme, setTheme } = useTheme(); + const { setTheme } = useTheme(); + const [currentTheme, setCurrentTheme] = useState('light'); + const [mounted, setMounted] = useState(false); - const toggleTheme = () => { - switch (theme) { - case "system": - setTheme("dark"); - break; - case "dark": - setTheme("light"); - break; - case "light": - setTheme("system"); - break; - } - }; + useEffect(() => { + setMounted(true); + const savedTheme = localStorage.getItem('theme') || 'light'; + setCurrentTheme(savedTheme); + setTheme(savedTheme); + }, [setTheme]); - // prevent hydration error - const [mounted, setMounted] = useState(false); + const toggleTheme = () => { + const newTheme = currentTheme === 'light' ? 'dark' : 'light'; + setCurrentTheme(newTheme); + setTheme(newTheme); + localStorage.setItem('theme', newTheme); + }; - useEffect(() => { - setMounted(true); - }, []); + if (!mounted) { + return null; + } - if (!mounted) { - return null; - } - - return ( - - ); -} + return ( + + ); +} \ No newline at end of file From be8e929e87f33e8700a9b1a394b3bbe2fcf01682 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Fri, 13 Sep 2024 14:25:37 -0400 Subject: [PATCH 04/10] fix typo --- src/components/features.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/features.tsx b/src/components/features.tsx index b480ddf..e393832 100644 --- a/src/components/features.tsx +++ b/src/components/features.tsx @@ -237,7 +237,7 @@ export default function Features() {

Frequently Asked Questions

- is it firefox based? + Is it Firefox based? Yes, Zen Browser is focused on being always at the latest version of Firefox, ensuring that you have the latest security updates and features. From e7164da0827923f47f84214227548d3b16988040 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 14 Sep 2024 11:56:34 +0200 Subject: [PATCH 05/10] style: fix text selection color in Firefox dark mode --- src/app/globals.css | 135 ++++++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/src/app/globals.css b/src/app/globals.css index 064b2c8..8cf74e2 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -3,95 +3,106 @@ @tailwind utilities; @layer base { - :root { - --background: 0 0% 100%; - --foreground: 0 0% 3.9%; + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; - --card: 0 0% 100%; - --card-foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; - --popover: 0 0% 100%; - --popover-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; - --primary: 0 0% 9%; - --primary-foreground: 0 0% 98%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; - --secondary: 0 0% 96.1%; - --secondary-foreground: 0 0% 9%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; - --muted: 0 0% 96.1%; - --muted-foreground: 0 0% 45.1%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; - --accent: 0 0% 96.1%; - --accent-foreground: 0 0% 9%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; - --border: 0 0% 89.8%; - --input: 0 0% 89.8%; - --ring: 0 0% 3.9%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; - --radius: 0.5rem; + --radius: 0.5rem; - /* Custom properties */ - --navigation-height: 3.5rem; - --color-one: #ffbd7a; + /* Custom properties */ + --navigation-height: 3.5rem; + --color-one: #ffbd7a; - --color-two: #fe8bbb; - --color-three: #9e7aff; + --color-two: #fe8bbb; + --color-three: #9e7aff; - --surface: rgb(245, 245, 245); + --surface: rgb(245, 245, 245); - /* + /* --color-one: #37ecba; --color-two: #72afd3; --color-three: #ff2e63; */ - } + } - [data-theme='dark'], .dark { - --background: 5 5 5; - --foreground: 0 0% 98%; + [data-theme="dark"], + .dark { + --background: 5 5 5; + --foreground: 0 0% 98%; - --surface: rgb(23, 23, 23); + --surface: rgb(23, 23, 23); - --card: 0 0% 3.9%; - --card-foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; - --popover: 0 0% 3.9%; - --popover-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 0 0% 9%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; - --secondary: 0 0% 14.9%; - --secondary-foreground: 0 0% 98%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; - --muted: 0 0% 14.9%; - --muted-foreground: 0 0% 63.9%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; - --accent: 0 0% 14.9%; - --accent-foreground: 0 0% 98%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; - --border: 0 0% 14.9%; - --input: 0 0% 14.9%; - --ring: 0 0% 83.1%; - --color-one: #6aa8e2; - } + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --color-one: #6aa8e2; + } } @layer base { - html { - @apply scroll-smooth; - } - * { - @apply border-border; - } - body { - @apply bg-background text-foreground; - } -} \ No newline at end of file + html { + @apply scroll-smooth; + } + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} + +::selection { + color: hsl(var(--primary-foreground)); + background: hsl(var(--primary)); +} + +::-moz-selection { + color: hsl(var(--primary-foreground)); + background: hsl(var(--primary)); +} From fc2fa8692551b02e3fe3d9aa7140f3ae697a2c5b Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 14 Sep 2024 11:58:35 +0200 Subject: [PATCH 06/10] chore: git ignore ide config --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 6f2e965..ebff54d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +# various IDEs and backup files +.vscode/ +.idea/ +**/*~ + # dependencies /node_modules /.pnp From 8c723f0e42132173b753e04b0177aa5250524525 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 10:14:59 +0000 Subject: [PATCH 07/10] chore(deps): bump send and serve-static Bumps [send](https://github.com/pillarjs/send) and [serve-static](https://github.com/expressjs/serve-static). These dependencies needed to be updated together. Updates `send` from 0.18.0 to 0.19.0 - [Release notes](https://github.com/pillarjs/send/releases) - [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md) - [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0) Updates `serve-static` from 1.16.0 to 1.16.2 - [Release notes](https://github.com/expressjs/serve-static/releases) - [Changelog](https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md) - [Commits](https://github.com/expressjs/serve-static/compare/1.16.0...v1.16.2) --- updated-dependencies: - dependency-name: send dependency-type: indirect - dependency-name: serve-static dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5facd13..4409bd2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "styled-components": "^6.1.12", "tailwind-merge": "^2.5.1", "tailwindcss-animate": "^1.0.7", + "zen-website": "file:", "zod": "^3.23.8" }, "devDependencies": { @@ -16693,9 +16694,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "peer": true, "dependencies": { "debug": "2.6.9", @@ -16780,20 +16781,29 @@ } }, "node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "peer": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -19421,6 +19431,10 @@ "integrity": "sha512-raRj6r0gPzopFm5XWBJZr/NuV4EEnT4iE+U3dp5FV5pCb588Gmm3zLIp/j9yqqcMiHH8VNQlerLTgOqL7krh6w==", "peer": true }, + "node_modules/zen-website": { + "resolved": "", + "link": true + }, "node_modules/zod": { "version": "3.23.8", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", From f1714d92a5a1ff82a136f88a306f7a2974cbd800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?mauro=20=F0=9F=A4=99?= <91018726+mauro-balades@users.noreply.github.com> Date: Sat, 14 Sep 2024 04:33:20 -0700 Subject: [PATCH 08/10] Update features.tsx --- src/components/features.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/features.tsx b/src/components/features.tsx index f715cb7..daa8d0f 100644 --- a/src/components/features.tsx +++ b/src/components/features.tsx @@ -95,7 +95,7 @@ export default function Features() {

Always up to date

-

Zen Browser is always up to date, ensuring that you have the latest features and security updates. With automatic updates, you can rest easy knowing that your browser is secure and up to date.

+

Zen Browser is built on top of Firefox, ensuring it always stays up to date with the latest features, security patches, and performance improvements.

From 2d9596a9fb28b02245dc4f01d9b64269ca19a0ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?mauro=20=F0=9F=A4=99?= <91018726+mauro-balades@users.noreply.github.com> Date: Sat, 14 Sep 2024 15:42:58 -0700 Subject: [PATCH 09/10] Update page.tsx --- src/app/about/page.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 65d37e4..c29e6be 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -19,6 +19,7 @@ export default function PrivacyPolicy() { * [**Onno**](https://www.onnno.nl/index.html): logo designer. * [**Jafeth Garro**](https://iamjafeth.com/): Documentation writer. * **Peter Jung**: general contributor and AUR maintainer. +* [**Bryan Galdámez**](https://superrare.com/tonybabel): Huge contributor on theme functionalities * [**Gunir**](https://github.com/gunir): Active contributor. * [**n7itro**](https://github.com/n7itro): Active contributor. * [**Canoa**](https://thatcanoa.org/) Active contributor, and very active in issue handling From cc4ecd790e7e1856b15705c0b91c92422b7e30ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?mauro=20=F0=9F=A4=99?= <91018726+mauro-balades@users.noreply.github.com> Date: Sat, 14 Sep 2024 15:44:29 -0700 Subject: [PATCH 10/10] Update page.tsx --- src/app/about/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index c29e6be..4a32d17 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -19,7 +19,7 @@ export default function PrivacyPolicy() { * [**Onno**](https://www.onnno.nl/index.html): logo designer. * [**Jafeth Garro**](https://iamjafeth.com/): Documentation writer. * **Peter Jung**: general contributor and AUR maintainer. -* [**Bryan Galdámez**](https://superrare.com/tonybabel): Huge contributor on theme functionalities +* [**Bryan Galdámez**](https://josuegalre.netlify.app/): Huge contributor on theme functionalities * [**Gunir**](https://github.com/gunir): Active contributor. * [**n7itro**](https://github.com/n7itro): Active contributor. * [**Canoa**](https://thatcanoa.org/) Active contributor, and very active in issue handling