diff --git a/package-lock.json b/package-lock.json
index ba72505..3d515a3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -332,9 +332,9 @@
"license": "MIT"
},
"node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -647,9 +647,9 @@
}
},
"node_modules/dompurify": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz",
- "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.2.tgz",
+ "integrity": "sha512-lHeS9SA/IKeIFFyYciHBr2n0v1VMPlSj843HdLOwjb2OxNwdq9Xykxqhk+FE42MzAdHvInbAolSE4mhahPpjXA==",
"license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
@@ -994,9 +994,9 @@
}
},
"node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -1004,9 +1004,9 @@
}
},
"node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -1962,9 +1962,9 @@
}
},
"node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
@@ -2141,9 +2141,9 @@
}
},
"node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
@@ -2412,9 +2412,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"license": "MIT",
"engines": {
"node": ">=8.6"
diff --git a/source/_posts/2026/events/2026_05_14.md b/source/_posts/2026/events/2026_05_14.md
index 9abf5c9..eb5feae 100644
--- a/source/_posts/2026/events/2026_05_14.md
+++ b/source/_posts/2026/events/2026_05_14.md
@@ -16,8 +16,27 @@ event:
name: "Centrul pentru Tineret"
link: "https://www.openstreetmap.org/?mlat=46.770295&mlon=23.590912#map=19/46.770295/23.590912"
osm: ''
- luma: false
- program: "TBD"
- video: "TBD"
- attendees: "TBD"
----
+ luma: https://luma.com/x1lvdcgq
+ program:
+ - name: "Presenting with LaTeX"
+ slides: false
+ speaker:
+ name: "Viski Barbora"
+ url: https://bashynx.com/
+ length: 15
+ - name: "Node-RED"
+ slides: false
+ speaker:
+ name: "Vladislav Sedlák"
+ url: https://kaldes.sk/
+ length: 30
+ - name: "A guitar in the world of open source"
+ slides: false
+ speaker:
+ name: "Sorin Cruceru"
+ url: https://www.instagram.com/sorincruceru
+ length: 30
+ video: ''
+ attendees: "11"
+---
+
diff --git a/source/_posts/2026/events/2026_07_16.md b/source/_posts/2026/events/2026_07_16.md
new file mode 100644
index 0000000..64a6fa7
--- /dev/null
+++ b/source/_posts/2026/events/2026_07_16.md
@@ -0,0 +1,24 @@
+---
+title: "OpenAlt Romania #4"
+author: "OpenAlt Romania"
+date: 2026-07-16 18:00:00
+description: Fourth OpenAlt Romania meetup.
+categories:
+ - "Events"
+tags:
+ - "OpenAlt Romania"
+ - "IRL Events"
+ - "Events"
+event:
+ date: "16th July 2026"
+ time: "6 PM"
+ place:
+ name: "Centrul pentru Tineret"
+ link: "https://www.openstreetmap.org/?mlat=46.770295&mlon=23.590912#map=19/46.770295/23.590912"
+ osm: ''
+ luma: https://luma.com/w0czz013
+ program: "TBD"
+ video: "TBD"
+ attendees: "TBD"
+---
+
diff --git a/themes/openalt/_config.yml b/themes/openalt/_config.yml
index 82f9b09..6c32d6b 100644
--- a/themes/openalt/_config.yml
+++ b/themes/openalt/_config.yml
@@ -17,13 +17,15 @@ social:
- url: http://discord.openalt.ro
icon: fab fa-discord
enable: true
- - url: https://mastodon.social/@OpenAltRo
+ - url: https://mastodon.social/@OpenAltRO
+ relme: true
icon: fab fa-mastodon
enable: true
- url: https://vhsky.cz/c/openaltro/videos
icon: fa-solid fa-circle-play
enable: true
- url: https://www.linkedin.com/company/openaltro/
+ relme: true
icon: fab fa-linkedin
enable: true
- url: https://matrix.to/#/#OpenAltRO:matrix.org
diff --git a/themes/openalt/layout/_partial/date.ejs b/themes/openalt/layout/_partial/date.ejs
index 6277dd7..1829d5f 100644
--- a/themes/openalt/layout/_partial/date.ejs
+++ b/themes/openalt/layout/_partial/date.ejs
@@ -1,9 +1,19 @@
-<%
+<% {
const posted = new Date(date);
const now = new Date();
- const year = 365 * 24 * 60 * 60 * 1000;
- const format = (now - posted) < year ?
- { day: 'numeric', month: 'long', hour: 'numeric', minute: 'numeric', hour12: true } :
- { day: 'numeric', month: 'long', year: 'numeric', hour: 'numeric', minute: 'numeric', hour12: true };
+ const day = ((d => {
+ if (d > 3 && d < 21) return d + 'th';
+ switch (d % 10) {
+ case 1: return d + 'st';
+ case 2: return d + 'nd';
+ case 3: return d + 'rd';
+ default: return d + 'th';
+ }
+ })(posted.getDate()));
+
+ const options = now.getFullYear() === posted.getFullYear()
+ ? { month: 'long', hour: 'numeric', minute: 'numeric', hour12: true }
+ : { year: 'numeric', month: 'long'};
%>
-<%= posted.toLocaleString('en-US', format ) %>
\ No newline at end of file
+ <%= day %> <%= posted.toLocaleString('en-US', options).replace(/^(\d+)\s/, '') %>
+<% } %>
\ No newline at end of file
diff --git a/themes/openalt/layout/layout.ejs b/themes/openalt/layout/layout.ejs
index fa0b07d..d18103a 100644
--- a/themes/openalt/layout/layout.ejs
+++ b/themes/openalt/layout/layout.ejs
@@ -57,7 +57,11 @@
<% theme.social.forEach(function(social) { %>
<% if (social.enable) { %>
-
+ <% if (social.relme) { %>
+
+ <% } else { %>
+
+ <% } %>
<% if (theme.fontawesome) { %>
<% } else { %>