diff --git a/.github/workflows/pages-deploy.yml b/.github/workflows/pages-deploy.yml
index c33b2a6..cc28f99 100644
--- a/.github/workflows/pages-deploy.yml
+++ b/.github/workflows/pages-deploy.yml
@@ -42,7 +42,7 @@ jobs:
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
- ruby-version: 3.2
+ ruby-version: 3.3
bundler-cache: true
- name: Build site
@@ -53,7 +53,7 @@ jobs:
- name: Test site
run: |
bundle exec htmlproofer _site \
- \-\-disable-external=true \
+ \-\-disable-external \
\-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/"
- name: Upload site artifact
diff --git a/.gitignore b/.gitignore
index cee9e12..7dd7cef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@ Gemfile.lock
# Jekyll cache
.jekyll-cache
+.jekyll-metadata
_site
# RubyGems
@@ -16,6 +17,11 @@ package-lock.json
# IDE configurations
.idea
+.vscode/*
+!.vscode/settings.json
+!.vscode/extensions.json
+!.vscode/tasks.json
# Misc
+_sass/vendors
assets/js/dist
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..7f0fdb8
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,26 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Run Jekyll Server",
+ "type": "shell",
+ "command": "./tools/run.sh",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "problemMatcher": [],
+ "detail": "Runs the Jekyll server with live reload."
+ },
+ {
+ "label": "Build Jekyll Site",
+ "type": "shell",
+ "command": "./tools/test.sh",
+ "group": {
+ "kind": "build"
+ },
+ "problemMatcher": [],
+ "detail": "Build the Jekyll site for production."
+ }
+ ]
+}
diff --git a/Gemfile b/Gemfile
index a3eebd6..4e36b61 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,10 +2,10 @@
source "https://rubygems.org"
-gem "jekyll-theme-chirpy", "~> 6.2", ">= 6.5.5"
+gem "jekyll-theme-chirpy", "~> 7.2", ">= 7.2.2"
group :test do
- gem "html-proofer", "~> 4.4"
+ gem "html-proofer", "~> 5.0", group: :test
end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
@@ -16,7 +16,7 @@ platforms :mingw, :x64_mingw, :mswin, :jruby do
end
# Performance-booster for watching directories on Windows
-gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
+gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin]
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
diff --git a/README.md b/README.md
index 1f4210b..dd3576b 100644
--- a/README.md
+++ b/README.md
@@ -1,81 +1,43 @@
-
+# Chirpy Starter
- # Chirpy Jekyll Theme
+[][gem]
+[][mit]
- A minimal, responsive, and feature-rich Jekyll theme for technical writing.
+When installing the [**Chirpy**][chirpy] theme through [RubyGems.org][gem], Jekyll can only read files in the folders
+`_data`, `_layouts`, `_includes`, `_sass` and `assets`, as well as a small part of options of the `_config.yml` file
+from the theme's gem. If you have ever installed this theme gem, you can use the command
+`bundle info --path jekyll-theme-chirpy` to locate these files.
- [][gem]
- [][ci]
- [][codacy]
- [][license]
- [](https://996.icu)
+The Jekyll team claims that this is to leave the ball in the user’s court, but this also results in users not being
+able to enjoy the out-of-the-box experience when using feature-rich themes.
- [**Live Demo** →][demo]
+To fully use all the features of **Chirpy**, you need to copy the other critical files from the theme's gem to your
+Jekyll site. The following is a list of targets:
- [][demo]
+```shell
+.
+├── _config.yml
+├── _plugins
+├── _tabs
+└── index.html
+```
-
+To save you time, and also in case you lose some files while copying, we extract those files/configurations of the
+latest version of the **Chirpy** theme and the [CD][CD] workflow to here, so that you can start writing in minutes.
-## Features
+## Usage
-- Dark / Light Theme Mode
-- Localized UI language
-- Pinned Posts on Home Page
-- Hierarchical Categories
-- Trending Tags
-- Table of Contents
-- Last Modified Date
-- Syntax Highlighting
-- Mathematical Expressions
-- Mermaid Diagrams & Flowcharts
-- Dark / Light Mode Images
-- Embed Videos
-- Disqus / Giscus / Utterances Comments
-- Built-in Search
-- Atom Feeds
-- PWA
-- Google Analytics / GoatCounter
-- SEO & Performance Optimization
-
-## Documentation
-
-To learn how to use, develop, and upgrade the project, please refer to the [Wiki][wiki].
+Check out the [theme's docs](https://github.com/cotes2020/jekyll-theme-chirpy/wiki).
## Contributing
-Contributions (_pull requests_, _issues_, and _discussions_) are what make the open-source community such an amazing place
-to learn, inspire, and create. Any contributions you make are greatly appreciated.
-For details, see the "[Contributing Guidelines][contribute-guide]".
-
-## Credits
-
-### Contributors
-
-Thanks to [all the contributors][contributors] involved in the development of the project!
-
-[][contributors]
- —— Made with [contrib.rocks](https://contrib.rocks)
-
-### Third-Party Assets
-
-This project is built on the [Jekyll][jekyllrb] ecosystem and some [great libraries][lib], and is developed using [VS Code][vscode] as well as tools provided by [JetBrains][jetbrains] under a non-commercial open-source software license.
-
-The avatar and favicon for the project's website are from [ClipartMAX][clipartmax].
+This repository is automatically updated with new releases from the theme repository. If you encounter any issues or want to contribute to its improvement, please visit the [theme repository][chirpy] to provide feedback.
## License
-This project is published under [MIT License][license].
+This work is published under [MIT][mit] License.
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy
-[ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster
-[codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
-[license]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE
-[jekyllrb]: https://jekyllrb.com/
-[clipartmax]: https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/
-[demo]: https://cotes2020.github.io/chirpy-demo/
-[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
-[contribute-guide]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md
-[contributors]: https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors
-[lib]: https://github.com/cotes2020/chirpy-static-assets
-[vscode]: https://code.visualstudio.com/
-[jetbrains]: https://www.jetbrains.com/?from=jekyll-theme-chirpy
\ No newline at end of file
+[chirpy]: https://github.com/cotes2020/jekyll-theme-chirpy/
+[CD]: https://en.wikipedia.org/wiki/Continuous_deployment
+[mit]: https://github.com/cotes2020/chirpy-starter/blob/master/LICENSE
\ No newline at end of file
diff --git a/_config.yml b/_config.yml
index 0b4403a..7a07dab 100644
--- a/_config.yml
+++ b/_config.yml
@@ -17,20 +17,20 @@ timezone: Asia/Kolkata
title: Engineer's Odyssey # the main title
-tagline: Your Hub for Tech, DIY, and Innovation # it will display as the sub-title
+tagline: Your Hub for Tech, DIY, and Innovation # it will display as the subtitle
description: >- # used by seo meta and the atom feed
Through my articles and stories, I hope to guide you through the intricate world of technology, offer insights into automation's transformative power, unveil the secrets behind successful DIY projects, and encourage you to fearlessly pursue new skills.
# Fill in the protocol & hostname for your site.
-# e.g. 'https://username.github.io', note that it does not end with a '/'.
+# E.g. 'https://username.github.io', note that it does not end with a '/'.
url: "http://localhost:4000"
github:
- username: rajukottedi # change to your github username
+ username: rajukottedi # change to your GitHub username
twitter:
- username: RajuKottedi # change to your twitter username
+ username: RajuKottedi # change to your Twitter username
social:
# Change to your full name.
@@ -39,22 +39,44 @@ social:
email: bangararaju.kottedi@gmail.com # change to your email address
links:
# The first element serves as the copyright owner's link
- - https://github.com/rajukottedi # change to your github homepage
- - https://twitter.com/rajukottedi # change to your twitter homepage
+ - https://github.com/rajukottedi # change to your GitHub homepage
+ - https://twitter.com/rajukottedi # change to your Twitter homepage
# Uncomment below to add more social links
- https://www.facebook.com/RajuKottedi435
- https://www.linkedin.com/in/bangararajuk/
-google_site_verification: # fill in to your verification string
+# Site Verification Settings
+webmaster_verifications:
+ google: # fill in your Google verification code
+ bing: # fill in your Bing verification code
+ alexa: # fill in your Alexa verification code
+ yandex: # fill in your Yandex verification code
+ baidu: # fill in your Baidu verification code
+ facebook: # fill in your Facebook verification code
# ↑ --------------------------
# The end of `jekyll-seo-tag` settings
-google_analytics:
- id:
+# Web Analytics Settings
+analytics:
+ google:
+ id: # fill in your Google Analytics ID
+ goatcounter:
+ id: # fill in your GoatCounter ID
+ umami:
+ id: # fill in your Umami ID
+ domain: # fill in your Umami domain
+ matomo:
+ id: # fill in your Matomo ID
+ domain: # fill in your Matomo domain
+ cloudflare:
+ id: # fill in your Cloudflare Web Analytics token
+ fathom:
+ id: # fill in your Fathom Site ID
-goatcounter:
- id: # fill in your Goatcounter ID
+# Page Views settings
+pageviews:
+ provider: # now only supports 'goatcounter'
# Prefer color scheme setting.
#
@@ -69,12 +91,12 @@ goatcounter:
#
theme_mode: # [light | dark]
-# The CDN endpoint for images.
+# The CDN endpoint for media resources.
# Notice that once it is assigned, the CDN url
-# will be added to all image (site avatar & posts' images) paths starting with '/'
+# will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/'
#
# e.g. 'https://cdn.com'
-img_cdn:
+cdn:
# the avatar on sidebar, support local or CORS resources
avatar: /assets/img/avatar.jpg
@@ -87,7 +109,8 @@ social_preview_image: # string, local or CORS resources
toc: true
comments:
- active: 'remark42' # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable
+# Global switch for the post comment system. Keeping it empty means disabled.
+ provider: 'remark42' # [disqus | utterances | giscus]
# The active options are as follows:
# remark42 settings > https://remark42.com/
remark42:
@@ -105,6 +128,7 @@ comments:
category:
category_id:
mapping: # optional, default to 'pathname'
+ strict: # optional, default to '0'
input_position: # optional, default to 'bottom'
lang: # optional, default to the value of `site.lang`
reactions_enabled: # optional, default to the value of `1`
@@ -118,7 +142,7 @@ assets:
env: # [development | production]
pwa:
- enabled: true # the option for PWA feature (installable)
+ enabled: true # The option for PWA feature (installable)
cache:
enabled: true # the option for PWA offline cache
# Paths defined here will be excluded from the PWA cache.
@@ -136,6 +160,7 @@ baseurl: "/blog"
# ------------ The following options are not recommended to be modified ------------------
kramdown:
+ footnote_backlink: "↩︎"
syntax_highlighter: rouge
syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options
css_class: highlight
@@ -196,8 +221,9 @@ exclude:
- tools
- README.md
- LICENSE
+ - purgecss.js
- rollup.config.js
- - package*.json
+ - "package*.json"
- db_scripts
- frontmatter.json
diff --git a/_data/contact.yml b/_data/contact.yml
index da4c60a..eed7eef 100644
--- a/_data/contact.yml
+++ b/_data/contact.yml
@@ -26,3 +26,15 @@
# - type: stack-overflow
# icon: 'fab fa-stack-overflow'
# url: '' # Fill with your stackoverflow homepage
+#
+# - type: bluesky
+# icon: 'fa-brands fa-bluesky'
+# url: '' # Fill with your Bluesky profile link
+#
+# - type: reddit
+# icon: 'fa-brands fa-reddit'
+# url: '' # Fill with your Reddit profile link
+#
+# - type: threads
+# icon: 'fa-brands fa-threads'
+# url: '' # Fill with your Threads profile link
diff --git a/_data/share.yml b/_data/share.yml
index ee8e6e8..fec389f 100644
--- a/_data/share.yml
+++ b/_data/share.yml
@@ -22,7 +22,7 @@ platforms:
#
# - type: Weibo
# icon: "fab fa-weibo"
- # link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL"
+ # link: "https://service.weibo.com/share/share.php?title=TITLE&url=URL"
#
# - type: Mastodon
# icon: "fa-brands fa-mastodon"
@@ -35,4 +35,16 @@ platforms:
# - label: fosstodon.org
# link: "https://fosstodon.org/"
# - label: photog.social
- # link: "https://photog.social/"
\ No newline at end of file
+ # link: "https://photog.social/"
+ #
+ # - type: Bluesky
+ # icon: "fa-brands fa-bluesky"
+ # link: "https://bsky.app/intent/compose?text=TITLE%20URL"
+ #
+ # - type: Reddit
+ # icon: "fa-brands fa-square-reddit"
+ # link: "https://www.reddit.com/submit?url=URL&title=TITLE"
+ #
+ # - type: Threads
+ # icon: "fa-brands fa-square-threads"
+ # link: "https://www.threads.net/intent/post?text=TITLE%20URL"
\ No newline at end of file
diff --git a/_drafts/2024-07-08-anatomy-of-a-csrf-attack.md b/_drafts/2024-07-08-anatomy-of-a-csrf-attack.md
new file mode 100644
index 0000000..9d05e20
--- /dev/null
+++ b/_drafts/2024-07-08-anatomy-of-a-csrf-attack.md
@@ -0,0 +1,8 @@
+---
+title: Anatomy of a CSRF Attack
+date: 2024-07-08 0:00:00 +5:30
+tags:
+ - csrf
+ - security
+slug: anatomy-csrf-attack
+---
diff --git a/_includes/comment.html b/_includes/comment.html
new file mode 100644
index 0000000..2c2605a
--- /dev/null
+++ b/_includes/comment.html
@@ -0,0 +1,5 @@
+
+{% if page.comments and site.comments.provider %}
+ {% capture path %}comments/{{ site.comments.provider }}.html{% endcapture %}
+ {% include {{ path }} %}
+{% endif %}
\ No newline at end of file
diff --git a/_includes/comments.html b/_includes/comments.html
deleted file mode 100644
index 8b9e1dc..0000000
--- a/_includes/comments.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-{% if page.comments and site.comments.active %}
- {% capture path %}comments/{{ site.comments.active }}.html{% endcapture %}
- {% include {{ path }} %}
-{% endif %}
\ No newline at end of file
diff --git a/_includes/comments/remark42.html b/_includes/comments/remark42.html
index 74cb4b5..b0fd37e 100644
--- a/_includes/comments/remark42.html
+++ b/_includes/comments/remark42.html
@@ -8,7 +8,7 @@
components: ['embed', 'counter'],
max_shown_comments: 10,
- theme: modeToggle.modeStatus,
+ theme: Theme.visualState,
locale: 'en',
show_email_subscription: false
@@ -23,11 +23,11 @@
}
})(remark_config.components || ['embed']);
-var targetDiv = document.getElementById("sidebar").getElementsByClassName("mode-toggle")[0];
+var targetDiv = document.getElementById("mode-toggle");
if (targetDiv != null) {
targetDiv.addEventListener("click", () => {
- window.REMARK42.changeTheme(modeToggle.modeStatus === 'light' ? 'dark' : 'light');
+ window.REMARK42.changeTheme(Theme.visualState === 'light' ? 'dark' : 'light');
})
}
\ No newline at end of file
diff --git a/_includes/head.html b/_includes/head.html
index 330aa62..20fdf08 100644
--- a/_includes/head.html
+++ b/_includes/head.html
@@ -4,7 +4,7 @@
-
+
@@ -20,7 +20,7 @@
{% unless src contains '://' %}
{%- capture img_url -%}
- {% include img-url.html src=src img_path=page.img_path absolute=true %}
+ {% include media-url.html src=src subpath=page.media_subpath absolute=true %}
{%- endcapture -%}
{%- capture old_url -%}{{ src | absolute_url }}{%- endcapture -%}
@@ -31,7 +31,7 @@
{% elsif site.social_preview_image %}
{%- capture img_url -%}
- {% include img-url.html src=site.social_preview_image absolute=true %}
+ {% include media-url.html src=site.social_preview_image absolute=true %}
{%- endcapture -%}
{%- capture og_image -%}
@@ -59,34 +59,30 @@
{% include_cached favicons.html %}
- {% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
-
-
- {% else %}
- {% for cdn in site.data.origin[type].cdns %}
-
-
- {% endfor %}
-
-
- {% endif %}
-
-
- {% if jekyll.environment == 'production' and site.google_analytics.id != empty and site.google_analytics.id %}
-
-
-
-
-
- {% endif %}
+
+ {% unless site.assets.self_host.enabled %}
+ {% for hint in site.data.origin.cors.resource_hints %}
+ {% for link in hint.links %}
+
+ {% endfor %}
+ {% endfor %}
+ {% endunless %}
-
+ {% unless jekyll.environment == 'production' %}
+
+ {% endunless %}
-
+
+
+
+
+
+
+
-
+
{% if site.toc and page.toc %}
@@ -97,11 +93,11 @@
{% endif %}
{% if page.layout == 'page' or page.layout == 'post' %}
-
-
+
+
{% endif %}
-
+
+
+ {% include js-selector.html lang=lang %}
+
+ {% if jekyll.environment == 'production' %}
+
+ {% if site.pwa.enabled %}
+
+ {% endif %}
+
+
+ {% for analytics in site.analytics %}
+ {% capture str %}{{ analytics }}{% endcapture %}
+ {% assign platform = str | split: '{' | first %}
+ {% if site.analytics[platform].id and site.analytics[platform].id != empty %}
+ {% include analytics/{{ platform }}.html %}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
{% include metadata-hook.html %}
\ No newline at end of file
diff --git a/_includes/likes-views.html b/_includes/likes-views.html
index 336310a..7688271 100644
--- a/_includes/likes-views.html
+++ b/_includes/likes-views.html
@@ -46,6 +46,10 @@
if(Number(views.innerText) !== NaN){
postDetails.views = Number(views.innerText);
}
+ if(postDetails.modifiedDate === ""){
+ postDetails.modifiedDate = postDetails.createdDate;
+ }
+
ajax(serviceUrl + "/CreatePost", "POST", postDetails)
.then(function (result) {
if(result != "N/A"){
diff --git a/_layouts/default.html b/_layouts/default.html
index 19efb13..97fce9c 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -12,7 +12,7 @@ layout: compress
{% endif %}
-
+
{% include head.html %}
@@ -40,7 +40,7 @@ layout: compress
-