make Revival Inc. PRESS START a real link to the game
This commit is contained in:
parent
6ab0a26e47
commit
5b93f59750
7 changed files with 44 additions and 23 deletions
|
|
@ -33,9 +33,9 @@ more.
|
|||
frosted-glass panels (subtle gradients + `backdrop-filter` blur), reorganised into
|
||||
hero / quick-tile / section cards.
|
||||
- **Asset-free feature windows** — the two feature panels (Revival Inc. / RustyWolf) are
|
||||
hand-built CSS mock windows instead of screenshots: a little necromancy game scene with a
|
||||
blinking "PRESS START", and a little browser window with tabs in the title bar, a toolbar
|
||||
and a start page.
|
||||
hand-built CSS mock windows instead of screenshots: a little necromancy game scene whose
|
||||
blinking "PRESS START" launches the game, and a little browser window with tabs in the
|
||||
title bar, a toolbar and a start page.
|
||||
- **Draggable desktop icons** — free placement that snaps to a measured grid, one icon per
|
||||
cell, with a follow-the-cursor drag ghost. Icons shrink on cramped viewports so they never
|
||||
collide.
|
||||
|
|
@ -77,7 +77,7 @@ more.
|
|||
- **Fonts:** the web theme uses the system sans stack; Monocraft (self-hosted in `public/`) is
|
||||
used by the desktop theme's SMP menu and the in-desktop terminal.
|
||||
- **Images:** `next/image`
|
||||
- **Version:** `2.2.12` (see `package.json`)
|
||||
- **Version:** `2.2.13` (see `package.json`)
|
||||
- **Dependencies:** `npm audit` reports **0 vulnerabilities**. `next` is kept at a patched
|
||||
release (`>=16.3.6`) for the `next/og` RCE, and `brace-expansion` is force-upgraded via
|
||||
`overrides`. `braces` (a transitive ESLint/`fast-glob` dependency) has **no upstream fix**,
|
||||
|
|
|
|||
11
agents.md
11
agents.md
|
|
@ -34,7 +34,7 @@ When in doubt, prefer updating. A stale README **or** agents.md is treated as a
|
|||
## Bump the version on EVERY prompt — also do this every time
|
||||
|
||||
Another standing requirement: increment the **patch** version (`x.x.+1`, so
|
||||
`2.2.11` → `2.2.12` → …) as part of every task, even the small ones. Keep all of
|
||||
`2.2.12` → `2.2.13` → …) as part of every task, even the small ones. Keep all of
|
||||
these in sync:
|
||||
|
||||
- `package.json` → `"version"`
|
||||
|
|
@ -56,7 +56,7 @@ frosted-glass **web** site, and an alternate KDE/Plasma **desktop simulation**
|
|||
utilities in the components (Tailwind is present via PostCSS but the look is
|
||||
hand-written CSS).
|
||||
- Path alias: `@/*` → `src/*`.
|
||||
- Version: `2.2.12` (see `package.json`).
|
||||
- Version: `2.2.13` (see `package.json`).
|
||||
|
||||
### Scripts
|
||||
```bash
|
||||
|
|
@ -163,8 +163,11 @@ Themes: `web` = default frosted-glass website (sidebar + content, light/dark),
|
|||
component) — a decorative, **asset-free CSS mock-up** rather than a screenshot:
|
||||
Revival Inc. is a little necromancy game scene (night sky, moon, tombstones,
|
||||
blinking "PRESS START") and RustyWolf is a little browser window (tabs in the
|
||||
title bar, toolbar, address bar, start page). Both are `aria-hidden` and purely
|
||||
presentational; the real copy stays in the `.web-feature-text` paragraph below.
|
||||
title bar, toolbar, address bar, start page). The browser window is `aria-hidden`
|
||||
and purely presentational; in the game window the decorative scene is
|
||||
`aria-hidden` but "PRESS START" is a **real link** to the game
|
||||
(`https://dvorakmortonxd.dev/revival-inc`). The real copy stays in the
|
||||
`.web-feature-text` paragraph below.
|
||||
The old raster feature shots (`.web-shot` + `next/image`) were removed from the
|
||||
web theme only — `revivalinc.webp` / `RustyWolfPreview.webp` are still used by
|
||||
the desktop theme and the projects gallery, so the files stay. The old stacked
|
||||
|
|
|
|||
4
package-lock.json
generated
4
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "dvorakmortonxd",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.13",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "dvorakmortonxd",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.13",
|
||||
"dependencies": {
|
||||
"next": "^16.3.8",
|
||||
"react": "^19.3.0",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "dvorakmortonxd",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.13",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "node scripts/dev-server.mjs",
|
||||
|
|
|
|||
|
|
@ -5,21 +5,24 @@ import type { ReactNode } from "react";
|
|||
/**
|
||||
* Decorative, asset-free mock windows for the two feature panels (Revival Inc.
|
||||
* and RustyWolf). They replace the old raster screenshots so the panels read as
|
||||
* a little OS window instead of a flat image. Purely presentational — the real
|
||||
* copy lives in the `.web-feature-text` paragraph below each window.
|
||||
* a little OS window instead of a flat image. Mostly presentational — the real
|
||||
* copy lives in the `.web-feature-text` paragraph below each window. The one
|
||||
* interactive bit is the game's "PRESS START", which is a real link to the game.
|
||||
*/
|
||||
|
||||
function Chrome({
|
||||
title,
|
||||
tabs,
|
||||
decorative = true,
|
||||
children,
|
||||
}: {
|
||||
title?: string;
|
||||
tabs?: ReactNode;
|
||||
decorative?: boolean;
|
||||
children: ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<div className="fw" aria-hidden="true">
|
||||
<div className="fw" aria-hidden={decorative || undefined}>
|
||||
<div className={"fw-bar" + (tabs ? " fw-bar-browser" : "")}>
|
||||
<span className="fw-dots">
|
||||
<span className="fw-dot" />
|
||||
|
|
@ -36,21 +39,23 @@ function Chrome({
|
|||
function GameBody() {
|
||||
return (
|
||||
<div className="fw-scene">
|
||||
<span className="fw-stars" />
|
||||
<span className="fw-moon" />
|
||||
<span className="fw-hills" />
|
||||
<div className="fw-graves">
|
||||
<span className="fw-stars" aria-hidden="true" />
|
||||
<span className="fw-moon" aria-hidden="true" />
|
||||
<span className="fw-hills" aria-hidden="true" />
|
||||
<div className="fw-graves" aria-hidden="true">
|
||||
<span className="fw-grave" />
|
||||
<span className="fw-grave" />
|
||||
<span className="fw-grave" />
|
||||
<span className="fw-grave" />
|
||||
</div>
|
||||
<span className="fw-scan" />
|
||||
<div className="fw-hud">
|
||||
<span className="fw-scan" aria-hidden="true" />
|
||||
<div className="fw-hud" aria-hidden="true">
|
||||
<span className="fw-hearts">♥ ♥ ♥</span>
|
||||
<span className="fw-score">SCORE 0000</span>
|
||||
</div>
|
||||
<span className="fw-start">PRESS START</span>
|
||||
<a className="fw-start" href="https://dvorakmortonxd.dev/revival-inc">
|
||||
PRESS START
|
||||
</a>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
@ -91,7 +96,7 @@ function BrowserBody() {
|
|||
export default function FeatureWindow({ variant }: { variant: "game" | "browser" }) {
|
||||
if (variant === "game") {
|
||||
return (
|
||||
<Chrome title="revival-inc — mini jame gam #55">
|
||||
<Chrome title="revival-inc — mini jame gam #55" decorative={false}>
|
||||
<GameBody />
|
||||
</Chrome>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ export default function WebLayout() {
|
|||
</Section>
|
||||
|
||||
<footer className="web-footer glass">
|
||||
<span className="web-footer-label">v2.2.12</span>
|
||||
<span className="web-footer-label">v2.2.13</span>
|
||||
© 2025-2026 Martin Dvořák. All rights reserved (not really I dont care, just
|
||||
follow the GPL3.0 License)
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -632,12 +632,25 @@ html[data-theme="web"] body {
|
|||
border: 1px solid rgba(255, 255, 255, 0.55);
|
||||
background: rgba(124, 58, 237, 0.4);
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
font-family: var(--font-custom-mono);
|
||||
font-size: 0.6rem;
|
||||
letter-spacing: 0.16em;
|
||||
white-space: nowrap;
|
||||
animation: fw-blink 1.1s steps(2, start) infinite;
|
||||
}
|
||||
.fw-start:hover {
|
||||
background: rgba(124, 58, 237, 0.72);
|
||||
border-color: #fff;
|
||||
animation: none;
|
||||
opacity: 1;
|
||||
}
|
||||
.fw-start:focus-visible {
|
||||
outline: 2px solid #fff;
|
||||
outline-offset: 2px;
|
||||
animation: none;
|
||||
}
|
||||
@keyframes fw-blink {
|
||||
50% {
|
||||
opacity: 0.35;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue