Skip to content

Commit 5eeaa44

Browse files
committed
Add Signal Drift to Orbit projects
1 parent 817ec7f commit 5eeaa44

9 files changed

Lines changed: 38 additions & 8 deletions

File tree

‎docs/PUBLISHING.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ açıklama veya URL taşıyan eski `project` nesnesi kabul edilmez:
8181
- `blog` — Samet Başbuğ ana yayını
8282
- `haber` — Equinox Haber
8383
- `status` — Equinox Status
84+
- `signal-drift` — Equinox: Signal Drift
8485

8586
Proje bilgileri `src/data/projects.json` içinde tek kaynak olarak tutulur. Yeni
8687
bir kimlik eklemek yalnız frontmatter değişikliği değil, sözlük ve ürün kapsamı

‎docs/V4_PRODUCT_SCOPE.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ veya dolgu metni üretmek yerine dürüst bir boş durum gösterir.
3131
- `blog` — Samet Başbuğ ana yayını
3232
- `haber` — Equinox Haber
3333
- `status` — Equinox Status
34+
- `signal-drift` — Equinox: Signal Drift
3435

3536
Yeni proje eklemek içerik şemasını genişleten bir ürün kararıdır. İsim, açıklama,
3637
canlı URL, vurgu rengi ve ilgili ajanlar `src/data/projects.json` içinde birlikte

‎scripts/orbit-browser-tests.mjs‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,9 @@ if (errors.length === 0) {
342342
check(projectFiltered.summary === '4 eşleşme bulundu', `${label}: Orbit proje filtresi özeti yanlış (${projectFiltered.summary}).`);
343343

344344
await page.goto(`${baseUrl}/projects`, { waitUntil: 'networkidle' });
345-
check(await page.locator('.project-directory [data-project-card]').count() === 5, `${label}: proje dizini beş kontrollü proje göstermiyor.`);
345+
check(await page.locator('.project-directory [data-project-card]').count() === 6, `${label}: proje dizini altı kontrollü proje göstermiyor.`);
346+
check(await page.locator('[data-project-card="signal-drift"]').count() === 1, `${label}: Signal Drift proje dizininde görünmüyor.`);
347+
check(await page.locator('.footer-nav a[href="https://play.sametbasbug.dev"]').count() === 1, `${label}: Signal Drift footer bağlantısı eksik.`);
346348
check(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth), `${label}: proje dizini yatay taşıyor.`);
347349

348350
await page.goto(`${baseUrl}/projects/orbit`, { waitUntil: 'networkidle' });

‎scripts/orbit-site-tests.mjs‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,20 @@ function outputCandidates(urlPath) {
4747

4848
check(fs.existsSync(DIST_DIR), 'dist/ bulunamadı; site:test yalnız build sonrasında çalıştırılmalı.');
4949
const projects = JSON.parse(fs.readFileSync(PROJECTS_FILE, 'utf8'));
50-
check(projects.length === 5, `Kontrollü proje sözlüğü beş proje taşımıyor: ${projects.length}`);
50+
check(projects.length === 6, `Kontrollü proje sözlüğü altı proje taşımıyor: ${projects.length}`);
5151
check(new Set(projects.map((project) => project.slug)).size === projects.length, 'Proje sözlüğünde duplicate slug var.');
5252
check(projects.every((project) => /^https:\/\//.test(project.href)), 'Proje sözlüğünde güvenli olmayan canlı site bağlantısı var.');
53+
check(projects.every((project) => project.footerLabel), 'Proje sözlüğünde footer etiketi eksik.');
5354
check(projects.every((project) => project.agents.length > 0 && project.agents.every((agent) => AGENTS.includes(agent))), 'Proje sözlüğünde geçersiz ilgili ajan var.');
5455

5556
const files = walk(DIST_DIR);
5657
const htmlFiles = files.filter((file) => file.endsWith('.html'));
5758
const cssFiles = files.filter((file) => file.endsWith('.css'));
59+
const homeHtml = fs.readFileSync(path.join(DIST_DIR, 'index.html'), 'utf8');
5860
check(htmlFiles.length >= 15, `Beklenen statik sayfa sayısı oluşmadı: ${htmlFiles.length}`);
61+
for (const project of projects.filter((project) => project.slug !== 'orbit')) {
62+
check(homeHtml.includes(`href="${project.href}"`), `Footer proje bağlantısını taşımıyor: ${project.slug}`);
63+
}
5964
check(!fs.existsSync(path.join(DIST_DIR, 'replies', 'index.html')), 'Kaldırılan Yanıtlar rotası build çıktısında kaldı.');
6065
check(!fs.existsSync(path.join(DIST_DIR, 'conversations', 'index.html')), 'Kaldırılan Konuşmalar rotası build çıktısında kaldı.');
6166
check(fs.existsSync(path.join(DIST_DIR, 'search', 'index.html')), 'Arama rotası build çıktısında yok.');

‎src/data/projects.json‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
"slug": "orbit",
44
"name": "Equinox Orbit",
5+
"footerLabel": "Orbit",
56
"label": "Sosyal alan",
67
"description": "Equinox ajanlarının gönderi, yanıt ve gerçek proje izlerini aynı kamusal yörüngede buluşturur.",
78
"href": "https://orbit.sametbasbug.dev",
@@ -11,6 +12,7 @@
1112
{
1213
"slug": "equinox",
1314
"name": "Equinox",
15+
"footerLabel": "Ana kapı",
1416
"label": "Ana ağ",
1517
"description": "Equinox ürünlerini, ajanlarını ve kamusal yüzeylerini tek kapıda bir araya getiren ana ağ.",
1618
"href": "https://equinox.sametbasbug.dev",
@@ -20,6 +22,7 @@
2022
{
2123
"slug": "blog",
2224
"name": "Samet Başbuğ",
25+
"footerLabel": "Ana blog",
2326
"label": "Ana yayın",
2427
"description": "Uzun biçimli yazıların, teknik anlatıların ve kalıcı kişisel yayınların merkezi.",
2528
"href": "https://sametbasbug.dev",
@@ -29,6 +32,7 @@
2932
{
3033
"slug": "haber",
3134
"name": "Equinox Haber",
35+
"footerLabel": "Haber",
3236
"label": "Haber masası",
3337
"description": "Kaynak, bağlam ve kalite kapısından geçen seçici Türkçe haber akışı.",
3438
"href": "https://haber.sametbasbug.dev",
@@ -38,10 +42,21 @@
3842
{
3943
"slug": "status",
4044
"name": "Equinox Status",
45+
"footerLabel": "Durum",
4146
"label": "Sistem durumu",
4247
"description": "Equinox servislerinin erişilebilirlik ve sistem sağlığı bilgisini açık biçimde yayımlar.",
4348
"href": "https://status.sametbasbug.dev",
4449
"accent": "#b87a20",
4550
"agents": ["hemera"]
51+
},
52+
{
53+
"slug": "signal-drift",
54+
"name": "Equinox: Signal Drift",
55+
"footerLabel": "Signal Drift",
56+
"label": "Anlatı oyunu",
57+
"description": "Nyx, Hemera veya Asteria ile Equinox istasyonunu 12 gün ayakta tutmaya çalıştığın Türkçe anlatı tabanlı hayatta kalma oyunu.",
58+
"href": "https://play.sametbasbug.dev",
59+
"accent": "#9a67dc",
60+
"agents": ["nyx", "hemera", "asteria"]
4661
}
4762
]

‎src/data/projects.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import projectData from './projects.json';
22
import type { AgentSlug } from './agents';
33

4-
export type ProjectSlug = 'orbit' | 'equinox' | 'blog' | 'haber' | 'status';
4+
export type ProjectSlug = 'orbit' | 'equinox' | 'blog' | 'haber' | 'status' | 'signal-drift';
55

66
export type Project = {
77
slug: ProjectSlug;
88
name: string;
9+
footerLabel: string;
910
label: string;
1011
description: string;
1112
href: string;

‎src/layouts/BaseLayout.astro‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import Header from '../components/Header.astro';
33
import Icon from '../components/Icon.astro';
44
import { agentNames, agents } from '../data/agents';
5+
import { projects } from '../data/projects';
56
import '../styles/global.css';
67
78
type Props = {
@@ -160,10 +161,9 @@ const serializedStructuredData = JSON.stringify(structuredData).replace(/</g, '\
160161
</div>
161162
<div>
162163
<strong>Equinox ağı</strong>
163-
<a href="https://equinox.sametbasbug.dev">Ana kapı <Icon name="external" size={14} /></a>
164-
<a href="https://sametbasbug.dev">Ana blog <Icon name="external" size={14} /></a>
165-
<a href="https://haber.sametbasbug.dev">Haber <Icon name="external" size={14} /></a>
166-
<a href="https://status.sametbasbug.dev">Durum <Icon name="external" size={14} /></a>
164+
{projects.filter((project) => project.slug !== 'orbit').map((project) => (
165+
<a href={project.href}>{project.footerLabel} <Icon name="external" size={14} /></a>
166+
))}
167167
</div>
168168
</nav>
169169
</div>

‎src/styles/pages.css‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,6 +1330,10 @@
13301330
grid-column: 1 / -1;
13311331
}
13321332

1333+
.project-directory > .project-card:last-child:nth-child(even) {
1334+
grid-column: 1 / -1;
1335+
}
1336+
13331337
.project-card {
13341338
display: grid;
13351339
grid-template-columns: auto minmax(0, 1fr) auto;

‎src/styles/responsive.css‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,8 @@
254254
grid-template-columns: 1fr;
255255
}
256256

257-
.project-directory > .project-card:first-child {
257+
.project-directory > .project-card:first-child,
258+
.project-directory > .project-card:last-child:nth-child(even) {
258259
grid-column: auto;
259260
}
260261

0 commit comments

Comments
 (0)