Skip to content

Commit 221547f

Browse files
Merge pull request #42 from programmerShinobi/feat/phase1-borderless-identity
[feat](ui): Fase 1 — Aurora Glass borderless shell, neon brand mark, modern navbar & badges, copyrightArchitecture
2 parents bec6efc + 3656994 commit 221547f

64 files changed

Lines changed: 710 additions & 359 deletions

Some content is hidden

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

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,31 @@ The decision **model** carries its own version, recorded in the
99

1010
## [Unreleased]
1111

12+
### Changed (Fase 1 — "Aurora Glass" borderless evolution + identity — 2026-07-16)
13+
14+
- **Component tree grouped by feature area**`src/components/` reorganised into
15+
`chrome/ · landing/ · advisor/ · insights/ · overlays/` (tests move with their components; the
16+
frozen model guards pin `src/config/*` only and are untouched).
17+
- **Borderless design language** — the framed app box is gone: content sits full-bleed on the
18+
aurora canvas; sections separate by whitespace (`.f-div` is now pure spacing); hairline border
19+
tokens softened; the header and top nav float as **glassmorphism** panels (`.aa-glass`:
20+
translucent `color-mix` fill + `backdrop-filter` blur, with opaque fallbacks via `@supports` and
21+
on low-core `aurora-static` devices); the mobile tab bar separates by shadow, not stroke. Chart
22+
grids keep their own `--aa-grid-line` token so data lines never fade with the chrome.
23+
- **Hero radar badges fixed + inviting; modern badge system everywhere** — the Home radar chips no
24+
longer hang outside the card (no clipping at any breakpoint) and now carry general, inviting
25+
copy that teases real feature areas (free instant analysis · 21 explained architectures). All
26+
complementary labels share one modern recipe (`.aa-badge` glass pills, `.aa-kbd` key caps):
27+
the guided "New here?" banner became a floating glass card with badge + ⌘K key cap, the header
28+
save indicator is a soft badge, landing eyebrow/tags and preset chips get accent-tinted glass,
29+
and step numbers are gradient coins.
30+
- **New brand mark** — a 5-dimension radar pentagon with one lit decision apex ("five dimensions,
31+
one recommendation"): `public/favicon.svg` + `BrandMark` header glyph + regenerated PWA icons
32+
(192/512/maskable/apple-touch, headless render, no new deps).
33+
- **Copyright & identity**`© 2026 Faqih Pratama Muhti (programmerShinobi)` in the global
34+
footer, `<meta author/copyright>`, and the print report; brand & identity exclusive, code stays
35+
MIT and content CC BY 4.0 (single-sourced in `src/config/site.ts`).
36+
1237
### Changed (Full bilingualisation + light-theme polish — 2026-07-15)
1338

1439
- **Light theme softened** — the page background is now an off-white slate (`#e8ecf4`) instead of

DECISIONS.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,3 +237,45 @@ Appendix A). Direction chosen with the maintainer: **client-rendered first, Wave
237237
dev and the Playwright suite never fight a cache.
238238
- **Icons** are generated from a single node-tree brand glyph on the Aurora gradient (`public/favicon.svg`
239239
→ 192/512/maskable PNGs), rendered headlessly — no image-processing dependency added.
240+
241+
## Fase 1 — "Aurora Glass" borderless evolution + identity (2026-07)
242+
243+
Documented **before** implementation per the project's docs-first rule; each point below is a
244+
commitment the code must match (cross-checked by review, gates, and tests).
245+
246+
- **Component tree grouped by feature area, guards untouched.** `src/components/` (40 flat files)
247+
is reorganised into `chrome/ · landing/ · advisor/ · insights/ · overlays/` (see
248+
[design-specification §3](docs/03-blueprint/design-specification.md)). `src/config/`, `src/lib/`
249+
and every frozen artifact keep their exact paths — the frozen guard scripts reference
250+
`src/config/*` only, so the restructure cannot touch the model. Tests move *with* their
251+
components; no test was weakened.
252+
- **Borderless design language ("Aurora Glass"), applied via tokens again — not a second reskin.**
253+
Three characteristics, mirroring the modern full-bleed idiom:
254+
1. **Full-bleed canvas** — the aurora background already spans the viewport; the app frame drops
255+
its hard outer border/box so content sits directly on the canvas.
256+
2. **Whitespace as the separator** — visible hairline dividers (`.f-div`, hard card borders)
257+
are replaced by spacing rhythm; cards keep elevation via translucent fills + shadow, not
258+
stroke. Implemented by retuning `--color-border-*` token *values* toward transparency and a
259+
spacing bump — not by per-component surgery.
260+
3. **Glassmorphism** — the top nav + mobile tab bar float as translucent, `backdrop-blur` glass
261+
panels over the canvas; overlays (palette, modals) share the same glass recipe. Guards:
262+
contrast stays AA (axe gate), `backdrop-filter` has an opaque fallback via `@supports`, and
263+
blur is dropped under `prefers-reduced-transparency`-like constraints (low-core devices reuse
264+
the existing `aurora-static` freeze).
265+
- **Hero radar badges must never clip — and invite, not spec.** The floating chips on the Home
266+
hero (`landing/HeroRadar`) get layout room (no absolute overflow past the card edge at any
267+
breakpoint). Copy: after trying model-computed values ("Fit score · 68/100"), the owner chose
268+
**general, inviting copy** instead — each badge teases a real feature area (the Advisor's free
269+
instant analysis · the 21-architecture Insights library) to make visitors curious (bilingual,
270+
dict-driven). Complementary labels across the app share one **modern badge system** (`.aa-badge`
271+
glass pills + `.aa-kbd` key caps): the guided "New here?" banner, the header save indicator,
272+
landing eyebrow/tags, preset chips, and gradient step-number coins.
273+
- **Logo: one brand glyph everywhere.** A new simple, unique SVG mark — a pentagon radar +
274+
decision-node motif on the Aurora gradient (the project's own iconography: 5 dimensions, one
275+
recommendation). Single source (`public/favicon.svg` + a `BrandMark` component), reused for
276+
header wordmark, favicon and regenerated PWA icons (192/512/maskable) via the existing headless
277+
render script — no image dependency added.
278+
- **Copyright & identity.** A footer identity line — `© 2026 Faqih Pratama Muhti (programmerShinobi).
279+
All rights reserved.` — plus the same notice in `site.ts` config, the SEO snapshots, the README
280+
and the print report. **Scope note:** code stays MIT and docs CC BY 4.0 (unchanged LICENSE
281+
files); the copyright line asserts *identity/attribution* of the work, it does not re-license it.

docs/03-blueprint/design-specification.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,19 @@ src/
122122
│ insightRoadmaps · academyQuizzes · labExperiments (Wave C: paths · quizzes · sandboxes)
123123
├── lib/ scoring · sensitivity · antiPatternEngine · adr · report
124124
│ c4 · urlState · customConfig · content · frontmatter · markdown
125-
├── hooks/ usePersistedState · useUrlSyncedState
126-
└── components/ Header · LandingView + HeroRadar (Home landing, default) · AuroraBackground · ManualBook (Guide, lazy) · Disclaimer · ModeToggle · PresetBar · FactorGroup …
127-
QaWeightChart · DimensionResults · RadarTradeoff · ContributionTable
128-
ComparisonMode · SensitivityCard · RiskRegister · AntiPatternAlerts
129-
FitnessFunctions · MigrationPath · MethodologyPanel · ReportPreview …
130-
LearnView (lazy) · CredibilityBlock
125+
├── hooks/ usePersistedState · useTheme · useExportActions
126+
└── components/ grouped by feature area (2026-07 restructure — clean & clear):
127+
├── chrome/ app shell — Header · MobileChrome · AdvisorMobileBar · Toolbar
128+
│ CommandPalette · AuroraBackground · StepTracker · GuidedBanner
129+
├── landing/ LandingView · HeroRadar (Home, default view)
130+
├── advisor/ FactorInputs · FactorField · PresetBar · PrioritiesCard · QaOverridePanel
131+
│ DimensionCards · DimensionDetail · RadarPanel · SensitivityCard
132+
│ ScenarioCompare · WhyNotRunnerUp · AntiPatternWarning · MigrationCard
133+
│ RiskRegister · FitnessFunctions · CostOpsBadges · C4Preview
134+
│ HowItDecides · LevelBadge · Collapsible
135+
├── insights/ LearnView (lazy) · AcademyView · LabView · RoadmapView · CredibilityBlock
136+
└── overlays/ ManualBook (Guide, lazy) · Glossary · ShortcutsModal
137+
MethodologyPanel · PrintReport
131138
132139
content/ playbook/ · review/ (Markdown + frontmatter articles; git-as-CMS)
133140
(Catalog needs no files — it is data-driven from src/config/readerContent.ts)

docs/05-testing-qa/test-plan.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,15 @@ lives in fast unit tests and the cross-document guards; UI and human-judgement c
6161
| [`src/lib/antiPatternEngine.test.ts`](../../src/lib/antiPatternEngine.test.ts) | 8 | Distributed monolith, premature microservices, and the other rules (Model Data Sheet Section 5) |
6262
| [`src/lib/exports.test.ts`](../../src/lib/exports.test.ts) | 8 | `generateAdr` (MADR), `generateReport`, `buildC4`, scenario JSON round-trip, **share-URL round-trip (AC-14)** |
6363
| [`src/App.test.tsx`](../../src/App.test.tsx) | 4 | **Integration:** preset & single-factor reactivity (AC-2), language toggle (AC-13), and weight-override redistribution end-to-end |
64-
| [`src/components/RadarPanel.test.tsx`](../../src/components/RadarPanel.test.tsx) | 3 | **Component:** D1 ranking + single top pick, option toggle, dimension switch (AC-12) |
65-
| [`src/components/SensitivityCard.test.tsx`](../../src/components/SensitivityCard.test.tsx) | 3 | **Component:** flip sentence + robust fallback, max-3 flips (AC-11) |
66-
| [`src/components/QaOverridePanel.test.tsx`](../../src/components/QaOverridePanel.test.tsx) | 4 | **Component:** edit → lock, clamp 0–100, unlock, clear-all |
67-
| [`src/components/CommandPalette.test.tsx`](../../src/components/CommandPalette.test.tsx) | 3 | **Component:** closed renders nothing; filter by query; run on click / Enter |
68-
| [`src/components/overlays.test.tsx`](../../src/components/overlays.test.tsx) | 5 | **Component:** ManualBook + ScenarioCompare (A/B) — hidden when closed, labelled dialog + close; plus the Manual's **architecture explanations (FR-READ-*)**: parity with the model (every D1–D5 option) + a bibliography of real, linked citations |
64+
| [`src/components/advisor/RadarPanel.test.tsx`](../../src/components/advisor/RadarPanel.test.tsx) | 3 | **Component:** D1 ranking + single top pick, option toggle, dimension switch (AC-12) |
65+
| [`src/components/advisor/SensitivityCard.test.tsx`](../../src/components/advisor/SensitivityCard.test.tsx) | 3 | **Component:** flip sentence + robust fallback, max-3 flips (AC-11) |
66+
| [`src/components/advisor/QaOverridePanel.test.tsx`](../../src/components/advisor/QaOverridePanel.test.tsx) | 4 | **Component:** edit → lock, clamp 0–100, unlock, clear-all |
67+
| [`src/components/chrome/CommandPalette.test.tsx`](../../src/components/chrome/CommandPalette.test.tsx) | 3 | **Component:** closed renders nothing; filter by query; run on click / Enter |
68+
| [`src/components/overlays/overlays.test.tsx`](../../src/components/overlays/overlays.test.tsx) | 5 | **Component:** ManualBook + ScenarioCompare (A/B) — hidden when closed, labelled dialog + close; plus the Manual's **architecture explanations (FR-READ-*)**: parity with the model (every D1–D5 option) + a bibliography of real, linked citations |
6969
| [`src/lib/frontmatter.test.ts`](../../src/lib/frontmatter.test.ts) | 6 | **Content pipeline:** the dependency-free frontmatter parser — scalars, inline arrays, nested map, list of flow maps, body split, no-frontmatter fallback |
7070
| [`src/lib/markdown.test.tsx`](../../src/lib/markdown.test.tsx) | 6 | **Content pipeline:** the safe Markdown-subset renderer — headings/lists/inline, safe links, `:::guided`/`:::expert` mode blocks, and **no raw-HTML/`javascript:` injection** (XSS-safe by construction) |
7171
| [`src/lib/content.test.ts`](../../src/lib/content.test.ts) | 5 | **Content index (FR-LEARN-2/3):** every article well-formed and **every `related_advisor` id resolves to the frozen model**; section/slug filters; review-due flag |
72-
| [`src/components/LearnView.test.tsx`](../../src/components/LearnView.test.tsx) | 8 | **Component (FR-LEARN-1/4/6/8/9/10):** **every architecture has a Catalog, Playbook, Review, AND Library entry** (21×4 parity with the model); Playbook opens as a step-by-step implementation guide (Prerequisites/Steps/Best practices/Pitfalls) + cited sources; Review opens as a structured evaluation (Pros/Cons/metrics/Final verdict) + "Try in the Advisor" returns to the Advisor; Library covers every architecture as reference (Key concepts/Terminology) AND lists its evergreen articles; the **LensNav** walks one architecture through the Catalog → Playbook → Review → Library journey; a **Roadmap** path's step deep-links to its article; an **Academy** quiz gives client-side feedback + a review link; a **Lab** run calls the Advisor with the prepared factor levels |
72+
| [`src/components/insights/LearnView.test.tsx`](../../src/components/insights/LearnView.test.tsx) | 8 | **Component (FR-LEARN-1/4/6/8/9/10):** **every architecture has a Catalog, Playbook, Review, AND Library entry** (21×4 parity with the model); Playbook opens as a step-by-step implementation guide (Prerequisites/Steps/Best practices/Pitfalls) + cited sources; Review opens as a structured evaluation (Pros/Cons/metrics/Final verdict) + "Try in the Advisor" returns to the Advisor; Library covers every architecture as reference (Key concepts/Terminology) AND lists its evergreen articles; the **LensNav** walks one architecture through the Catalog → Playbook → Review → Library journey; a **Roadmap** path's step deep-links to its article; an **Academy** quiz gives client-side feedback + a review link; a **Lab** run calls the Advisor with the prepared factor levels |
7373
| [`src/config/waveC.test.ts`](../../src/config/waveC.test.ts) | 9 | **Wave C datasets (FR-LEARN-8/9/10):** every Roadmap step resolves to a real architecture page / article / the Advisor; every Academy answer index is in range and every "review the topic" link resolves; every Lab experiment sets **all 14 model factors** to a valid level with no unknown factors; path/module/experiment ids unique; and **21-architecture holistic parity per section** — every architecture appears in ≥1 learning path, is reviewed by ≥1 quiz question, and is in play (`focus`) in ≥1 experiment |
7474
| [`src/a11y.test.tsx`](../../src/a11y.test.tsx) | 4 | **Accessibility (AC-15):** axe-core WCAG A/AA on the composed app, Expert/override panel, the lazy Manual/Guide, and the lazy **Insights article** — caught & fixed an unlabeled file input |
7575
| [`src/i18n/dict.test.ts`](../../src/i18n/dict.test.ts) | 1 | Dictionary completeness — every key has EN **and** ID (covers the new Insights/section keys) |

index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
name="description"
88
content="Architecture Advisor — a transparent, quality-attribute-driven decision-support tool for choosing software architecture, and always explaining why. Free, client-side, open source."
99
/>
10+
<meta name="author" content="Faqih Pratama Muhti (programmerShinobi)" />
11+
<meta name="copyright" content="© 2026 Faqih Pratama Muhti (programmerShinobi)" />
1012
<title>Architecture Advisor</title>
1113

1214
<!-- Icons + PWA theme (manifest link is injected by vite-plugin-pwa). -->

public/favicon.svg

Lines changed: 41 additions & 7 deletions
Loading

public/icons/apple-touch-icon.png

23.5 KB
Loading

public/icons/icon-192.png

28.4 KB
Loading

public/icons/icon-512.png

113 KB
Loading

public/icons/icon-maskable-512.png

73.4 KB
Loading

0 commit comments

Comments
 (0)