Skip to content

Commit 84d68e5

Browse files
authored
Merge pull request #180 from medyo/develop
Version 1.19.0 #minor
2 parents 5ce7282 + e71c580 commit 84d68e5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+3796
-3517
lines changed

.github/workflows/distribute.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,17 @@ jobs:
3838

3939
- name: Bump version and push tag
4040
id: tag_version
41-
uses: mathieudutour/github-tag-action@v6.1
42-
with:
43-
github_token: ${{ secrets.GITHUB_TOKEN }}
44-
dry_run: ${{ github.event.inputs.autoTag == 'false' }}
45-
custom_release_rules: |
46-
"fix:patch:Bug Fixes,hotfix:patch:Bug Fixes,minor:minor:Fixes,patch:patch:Quick fixes,refactor:minor:Refactoring,implement:minor:Features,change:minor:Changes,breaking:major:Changes,major:major:Changes"
41+
uses: anothrNick/github-tag-action@1.67.0
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44+
WITH_V: true
45+
DRY_RUN: ${{ github.event.inputs.autoTag == 'false' }}
4746

4847
- name: Update manifest.json
4948
if: github.event.inputs.autoTag == 'true'
50-
run: jq --arg version "${{ steps.tag_version.outputs.new_version }}" '.version=$version' public/base.manifest.json > tmp.json && mv tmp.json public/base.manifest.json
49+
run: |
50+
new_version=$(echo "${{ steps.tag_version.outputs.new_tag }}" | sed 's/^v//')
51+
jq --arg version "$new_version" '.version = $version' public/base.manifest.json > public/base.manifest.json.tmp && mv public/base.manifest.json.tmp public/base.manifest.json
5152
5253
- name: Commit changes
5354
if: github.event.inputs.autoTag == 'true'

README.md

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,38 @@
55
[![Chrome Web Store Rating](https://img.shields.io/chrome-web-store/stars/ocoipcahhaedjhnpoanfflhbdcpmalmp.svg?colorB=%234FC828&label=rating&style=flat)](https://chrome.google.com/webstore/detail/hackertabdev/ocoipcahhaedjhnpoanfflhbdcpmalmp/reviews)
66

77
# Hackertab.dev — All Developer news in one tab!
8+
89
**Hackertab makes it easy for you to stay up-to-date with the latest developer news, tools, jobs and events.**
910

1011
<img src="/demo/demo_hackertab.dev.jpeg" width="100%" alt="Hackertab.dev"/>
1112

1213
As a developer, it can be difficult to stay on top of everything happening in the field. Hackertab makes it easy by allowing you to customize your default tab page to include news, tools and events from top sources such as GitHub Trendings, Hacker News, DevTo, Medium, and Product Hunt. No matter what type of developer you are, you'll find valuable and relevant information with Hackertab. Don't miss out - give it a try today!
1314

1415
#### Demo
16+
1517
👉 [now.hackertab.dev](https://now.hackertab.dev)
1618

1719
## 👩‍💻 How to use it
20+
1821
- Install the extension from the [Chrome store](https://bit.ly/hackertab-ch), or [Mozilla add-ons](https://bit.ly/hackertab-ff)
1922
- Open a new tab
2023
- The extension should now be running and visible
2124
- Select your preferred programming languages and sources.
2225
- Enjoy
2326

2427
## 🔥 Features
25-
- 🆕 Hourly updated content
26-
- 💻 Customizable by language or topic
27-
- 👍 Curated content from the best sources
28-
- 🔖 Bookmark and read it later
29-
- 🌙 Dark mode for when it gets late
28+
29+
- 🆕 Daily updated content
30+
- 💻 Customizable by programming language, framework and topic.
31+
- 👍 Curated content from the best sources.
32+
- 🔖 Bookmark and read it later.
33+
- 🌙 Dark mode for when it gets late.
34+
- ✨ AI-powered recommendations exclusively tailored to your preferences.
35+
3036
Even more features are going to come in the future!
3137

3238
## Data sources
39+
3340
- Github Trendings
3441
- Hackernews
3542
- DevTo
@@ -44,10 +51,13 @@ Even more features are going to come in the future!
4451
- **or create an issue to ask for a new data source**
4552

4653
## Support
54+
4755
Please do not hesitate to ask a question, report a bug or add a suggestion. or send an email to hello@hackertab.dev
4856

4957
## Development
50-
Please use the develop branch
58+
59+
Please use the develop branch. Create an .env file with the necessary
60+
5161
```bash
5262
$ git clone --branch develop git@github.com:medyo/hackertab.dev.git
5363
$ cd hackertab.dev
@@ -57,9 +67,10 @@ $ # Then visit http://localhost:3000
5767
```
5868

5969
## Maintainers
70+
6071
- [medyo](https://github.com/medyo)
61-
- [chouikane](https://github.com/Chouikane)
6272

6373
## Licencing
64-
Hackertab is licensed under the Apache License, Version 2.0.
74+
75+
Hackertab is licensed under the Apache License, Version 2.0.
6576
See [LICENSE](/LICENSE) for the full license text.

package.json

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"dompurify": "^2.2.7",
1616
"htmlparser2": "^8.0.1",
1717
"jsonpath": "^1.1.1",
18-
"localforage": "^1.9.0",
1918
"normalize.css": "^8.0.1",
2019
"prop-types": "^15.0.0-0",
2120
"react": "^17.0.1",
@@ -24,19 +23,17 @@
2423
"react-dom": "^17.0.1",
2524
"react-easy-sort": "^1.5.1",
2625
"react-error-boundary": "^3.1.4",
27-
"react-icons": "^4.4.0",
26+
"react-icons": "^4.12.0",
2827
"react-markdown": "^7.0.1",
2928
"react-modal": "^3.12.1",
30-
"react-pro-sidebar": "^0.6.0",
29+
"react-router-dom": "^6.21.0",
3130
"react-select": "^5.0.1",
3231
"react-share": "^4.4.1",
3332
"react-simple-toasts": "^5.10.0",
3433
"react-spinners": "^0.10.4",
3534
"react-spring-bottom-sheet": "^3.4.1",
3635
"react-toggle": "^4.1.1",
3736
"react-tooltip": "^4.2.21",
38-
"rss-to-json": "^2.1.1",
39-
"styled-components": "2",
4037
"timeago.js": "^4.0.2",
4138
"type-fest": "^1.2.0",
4239
"vite-plugin-ejs": "^1.6.4",
@@ -47,8 +44,8 @@
4744
"start": "vite",
4845
"build:web": "VITE_BUILD_TARGET=web ./script/build.sh",
4946
"build:ext": "VITE_BUILD_TARGET=extension ./script/build.sh",
50-
"build:firefox": "./script/build-firefox.sh",
51-
"build:chrome": "./script/build-chrome.sh"
47+
"build:firefox": "VITE_BUILD_PLATFORM=firefox ./script/build-firefox.sh",
48+
"build:chrome": "VITE_BUILD_PLATFORM=chrome ./script/build-chrome.sh"
5249
},
5350
"eslintConfig": {
5451
"extends": [

src/App.tsx

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
import { useEffect, useLayoutEffect, useState } from 'react'
2-
import 'react-contexify/dist/ReactContexify.css'
3-
import 'src/assets/App.css'
4-
import { DNDLayout, Header } from 'src/components/Layout'
5-
import { MarketingBanner } from 'src/features/MarketingBanner'
6-
import { BookmarksSidebar } from 'src/features/bookmarks'
2+
import { DNDLayout } from 'src/components/Layout'
73
import { setupAnalytics, setupIdentification, trackPageView } from 'src/lib/analytics'
84
import { useUserPreferences } from 'src/stores/preferences'
95
import { AppContentLayout } from './components/Layout'
@@ -22,8 +18,6 @@ const intersectionCallback = (entries: IntersectionObserverEntry[]) => {
2218
}
2319

2420
export const App = () => {
25-
const [showSideBar, setShowSideBar] = useState(false)
26-
const [showSettings, setShowSettings] = useState(false)
2721
const [showOnboarding, setShowOnboarding] = useState(true)
2822
const { onboardingCompleted, maxVisibleCards, isDNDModeActive, DNDDuration, setDNDDuration } =
2923
useUserPreferences()
@@ -64,24 +58,13 @@ export const App = () => {
6458

6559
return (
6660
<>
67-
<MarketingBanner />
61+
{!onboardingCompleted && isWebOrExtensionVersion() === 'extension' && (
62+
<OnboardingModal showOnboarding={showOnboarding} setShowOnboarding={setShowOnboarding} />
63+
)}
6864

69-
<div className="App">
70-
{!onboardingCompleted && isWebOrExtensionVersion() === 'extension' && (
71-
<OnboardingModal showOnboarding={showOnboarding} setShowOnboarding={setShowOnboarding} />
72-
)}
73-
<Header
74-
setShowSideBar={setShowSideBar}
75-
showSideBar={showSideBar}
76-
showSettings={showSettings}
77-
setShowSettings={setShowSettings}
78-
/>
79-
80-
<div className="layoutLayers hideScrollBar">
81-
{isDNDModeActive() && <DNDLayout />}
82-
<AppContentLayout setShowSettings={setShowSettings} />
83-
</div>
84-
<BookmarksSidebar showSidebar={showSideBar} onClose={() => setShowSideBar(false)} />
65+
<div className="layoutLayers hideScrollBar">
66+
{isDNDModeActive() && <DNDLayout />}
67+
<AppContentLayout />
8568
</div>
8669
</>
8770
)

src/assets/App.css

Lines changed: 68 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,20 @@ a {
329329
height: 16px;
330330
width: 16px;
331331
}
332-
332+
.blockHeaderBadge {
333+
width: auto;
334+
font-size: 12px;
335+
height: 20px;
336+
background-color: var(--tooltip-accent-color);
337+
border-radius: 20px;
338+
justify-content: center;
339+
align-items: center;
340+
text-align: center;
341+
display: inline-flex;
342+
padding: 0 6px;
343+
text-transform: lowercase;
344+
color: white;
345+
}
333346
.blockHeaderIcon img {
334347
display: block;
335348
}
@@ -348,7 +361,7 @@ a {
348361
position: absolute;
349362
right: 0;
350363
top: 0;
351-
width: 26%;
364+
width: 30%;
352365
}
353366

354367
.blockActions.active {
@@ -408,6 +421,16 @@ a {
408421
.blockRow:not(:last-child) {
409422
border-bottom: 1px solid var(--card-content-divider);
410423
}
424+
.rowCover {
425+
border-radius: 4px;
426+
display: block;
427+
width: 100%;
428+
min-height: auto;
429+
object-fit: cover;
430+
aspect-ratio: 16/9;
431+
background-color: var(--placeholder-background-color);
432+
margin-bottom: 12px;
433+
}
411434

412435
.rowTitle {
413436
color: var(--primary-text-color);
@@ -418,11 +441,22 @@ a {
418441
display: flex;
419442
flex-direction: row;
420443
}
444+
.rowLink {
445+
color: var(--primary-text-color);
446+
margin: 0;
447+
padding: 0;
448+
font-size: 16px;
449+
text-decoration: none;
450+
display: flex;
451+
flex-direction: row;
452+
}
421453

422454
.rowTitle:hover {
423455
color: var(--primary-hover-text-color);
424456
}
425-
457+
.titleWithCover {
458+
display: block;
459+
}
426460
.dark .blockHeaderWhite {
427461
color: white;
428462
}
@@ -509,6 +543,25 @@ a {
509543
color: #99a2ac;
510544
}
511545

546+
.backToHome {
547+
display: flex;
548+
order: 4;
549+
width: 100%;
550+
}
551+
552+
.backToHome a {
553+
display: inline-flex;
554+
align-items: center;
555+
gap: 8px;
556+
font-size: 16px;
557+
vertical-align: middle;
558+
text-decoration: none;
559+
}
560+
561+
.backToHome a:hover {
562+
opacity: 0.7;
563+
}
564+
512565
.tags {
513566
display: flex;
514567
flex-wrap: wrap;
@@ -834,10 +887,15 @@ Producthunt item
834887
width: 100%;
835888
}
836889

890+
.dark .themeAdaptiveFillColor {
891+
fill: white;
892+
}
893+
837894
.searchBarIcon {
838895
position: absolute;
839896
height: 40px;
840897
margin: 0 16px;
898+
width: 24px;
841899
}
842900

843901
.searchBarInput {
@@ -976,6 +1034,10 @@ Producthunt item
9761034
.blockHeader {
9771035
display: none;
9781036
}
1037+
1038+
.tags {
1039+
display: none;
1040+
}
9791041
}
9801042

9811043
@keyframes cardPlaceholderPulse {
@@ -1270,3 +1332,6 @@ Producthunt item
12701332
color: var(--primary-text-color);
12711333
border-radius: 10px;
12721334
}
1335+
.capitalize {
1336+
text-transform: capitalize;
1337+
}

src/assets/baidu_logo.svg

Lines changed: 1 addition & 1 deletion
Loading

src/assets/bing_logo.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)