Skip to content

Commit e7188ba

Browse files
add global search, mobile drawer navigation, and View Transitions fixes (#44)
Signed-off-by: dongjiang <dongjiang1989@126.com>
1 parent 9b46349 commit e7188ba

23 files changed

Lines changed: 1623 additions & 540 deletions

.cache/contributors.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"updated_at": "2026-07-02T08:07:16.552Z",
2+
"updated_at": "2026-07-03T05:58:25.885Z",
33
"total": 170,
44
"contributors": [
55
{
@@ -11,7 +11,7 @@
1111
{
1212
"username": "lyj715824",
1313
"avatar_url": "https://avatars.githubusercontent.com/u/124077501?v=4",
14-
"contributions": 810,
14+
"contributions": 811,
1515
"profile_url": "https://github.com/lyj715824"
1616
},
1717
{
@@ -125,7 +125,7 @@
125125
{
126126
"username": "dongjiang1989",
127127
"avatar_url": "https://avatars.githubusercontent.com/u/5010507?v=4",
128-
"contributions": 83,
128+
"contributions": 84,
129129
"profile_url": "https://github.com/dongjiang1989"
130130
},
131131
{
@@ -230,6 +230,12 @@
230230
"contributions": 32,
231231
"profile_url": "https://github.com/hant1"
232232
},
233+
{
234+
"username": "wangbing1005",
235+
"avatar_url": "https://avatars.githubusercontent.com/u/73165412?v=4",
236+
"contributions": 32,
237+
"profile_url": "https://github.com/wangbing1005"
238+
},
233239
{
234240
"username": "chunhuitang",
235241
"avatar_url": "https://avatars.githubusercontent.com/u/233944770?v=4",
@@ -248,12 +254,6 @@
248254
"contributions": 29,
249255
"profile_url": "https://github.com/wengxuehao"
250256
},
251-
{
252-
"username": "wangbing1005",
253-
"avatar_url": "https://avatars.githubusercontent.com/u/73165412?v=4",
254-
"contributions": 29,
255-
"profile_url": "https://github.com/wangbing1005"
256-
},
257257
{
258258
"username": "jinhao",
259259
"avatar_url": "https://avatars.githubusercontent.com/u/668708?v=4",

.cache/project-stats.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
{
2-
"updated_at": "2026-07-02T08:05:45.699Z",
2+
"updated_at": "2026-07-03T05:57:41.016Z",
33
"repos": {
44
"iflytek/astron-agent": {
5-
"stars": 8588,
5+
"stars": 8589,
66
"forks": 857,
7-
"updated_at": "2026-07-02T08:05:41.158Z"
7+
"updated_at": "2026-07-03T05:57:35.651Z"
88
},
99
"iflytek/astron-rpa": {
1010
"stars": 5192,
1111
"forks": 581,
12-
"updated_at": "2026-07-02T08:05:41.736Z"
12+
"updated_at": "2026-07-03T05:57:36.658Z"
1313
},
1414
"iflytek/astronclaw-tutorial": {
15-
"stars": 410,
15+
"stars": 411,
1616
"forks": 44,
17-
"updated_at": "2026-07-02T08:05:42.332Z"
17+
"updated_at": "2026-07-03T05:57:37.217Z"
1818
},
1919
"iflytek/domux": {
20-
"stars": 6,
20+
"stars": 8,
2121
"forks": 0,
22-
"updated_at": "2026-07-02T08:05:42.959Z"
22+
"updated_at": "2026-07-03T05:57:38.193Z"
2323
},
2424
"harnessclaw/harnessclaw-engine": {
2525
"stars": 266,
2626
"forks": 91,
27-
"updated_at": "2026-07-02T08:05:43.497Z"
27+
"updated_at": "2026-07-03T05:57:38.747Z"
2828
},
2929
"harnessclaw/harnessclaw": {
3030
"stars": 322,
3131
"forks": 86,
32-
"updated_at": "2026-07-02T08:05:44.045Z"
32+
"updated_at": "2026-07-03T05:57:39.291Z"
3333
},
3434
"iflytek/iFly-Skills": {
3535
"stars": 192,
3636
"forks": 24,
37-
"updated_at": "2026-07-02T08:05:44.591Z"
37+
"updated_at": "2026-07-03T05:57:39.839Z"
3838
},
3939
"iflytek/memflywheel": {
40-
"stars": 7,
40+
"stars": 9,
4141
"forks": 1,
42-
"updated_at": "2026-07-02T08:05:45.147Z"
42+
"updated_at": "2026-07-03T05:57:40.448Z"
4343
},
4444
"iflytek/skillhub": {
45-
"stars": 3670,
46-
"forks": 542,
47-
"updated_at": "2026-07-02T08:05:45.699Z"
45+
"stars": 3738,
46+
"forks": 546,
47+
"updated_at": "2026-07-03T05:57:41.015Z"
4848
}
4949
}
5050
}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ ehthumbs_vista.db
8282
*.bak
8383
*.backup
8484
*~
85+
TEST_REPORT.md
8586

8687
# ============================================
8788
# Watermarked images (generated by watermark-images.ts)

CHANGELOG.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,27 @@
22

33
All notable changes to this project will be documented in this file.
44

5-
## [Unreleased]
5+
## [0.3.0] - 2026-07-03
66

77
### Added
88

9+
- **Mobile Drawer Navigation**: Replace hamburger-expanded nav with slide-in drawer panel (`#mobile-drawer`) — tree-structured navigation with always-expanded 2-level hierarchy (section labels + child links with connector dots and trunk lines), close button, backdrop overlay with blur, ESC/backdrop/link-click to dismiss, auto-close on resize to desktop, View Transitions compatible via `astro:after-swap`. Theme toggle (`ToggleTheme`) and language toggle (`ToggleLanguage`) moved into drawer footer for mobile, hidden on desktop via `hidden md:flex` wrappers
10+
- **Search Modal (`SearchModal.astro`)**: Global `Ctrl+K` / `⌘K` search with Fuse.js fuzzy matching across blog posts, projects, adopters, events, and static pages — lazy-loaded `/search-index.json`, results grouped by type with `<mark>` match highlighting, keyboard navigation (↑↓/Enter/Esc), bilingual support (zh/en), dark mode. `SearchButton.astro` in header triggers modal; `search-index.json.ts` endpoint aggregates all content collections at build time
11+
- **Adopter Modal (`AdopterModal.astro`)**: Layout-level adopter detail modal — macOS/iOS-style frosted glass, URL hash routing (`#adopter-{slug}`), retry mechanism (20 attempts × 50ms) for DOM readiness, `loadAdopterData()` re-reads embedded JSON on every open/swap for multi-cycle reliability
12+
- **Project Detail Page Icons**: `[slug].astro` now renders project icon image (`data.icon`) when available, with first-letter gradient circle fallback for projects without icons
913
- **New Projects — MemFlywheel & Domux**: Add MemFlywheel (file-native memory flywheel for AI Agents, category `memory-system`) and Domux (low-latency smart-home command model based on Gemma-4-E2B-it, category `llm`) to `/projects` page, project detail pages, and stats cache
1014
- **Project Card External Links**: ProjectCard component supports `links` field (HuggingFace, ModelScope) with brand SVG icons, styled same as GitHub button, positioned next to GitHub button in card footer
1115
- **Project Detail External Links**: Project detail page `[slug].astro` renders external links (HuggingFace, ModelScope) with brand SVG icons in Action Buttons section
1216
- **Landscape 4-Column Layout**: Expand landscape from 3 to 4 columns (30%+26%+22%+22%) — new Column 4 adds Memory System (MemFlywheel) and LLM (Domux) sections with violet/rose theming; all ecosystem arrows proportionally repositioned
1317
- **Tech Blog Posts**: Add 2 new tech blog posts — "MemFlywheel:给 AI Agent 装上文件原生记忆飞轮" and "Domux:150ms 内的智能家居指令理解模型", with architecture/benchmark images from GitHub repos, watermarked via `scripts/watermark-images.ts`
1418
- **Content Schema `links` Field**: Add `links: z.array(z.string()).optional()` to project collection schema in `content.config.ts`
19+
- **Events Data (`events.ts`)**: Extract event data to shared `src/data/events.ts` for reuse across events page and search index
1520

1621
### Changed
1722

23+
- **Header Layout Redesign**: Desktop nav keeps horizontal links; mobile nav delegates to drawer. `ToggleTheme` and `ToggleLanguage` wrapped in `hidden md:flex` divs (fixes Tailwind v4 `inline-flex` overriding `hidden`). BasicScripts mobile menu handlers cleaned up — no longer toggles `h-screen`/`bg-page`/`overflow-hidden` on header
24+
- **Adopter Modal Moved to Layout**: Modal HTML + JS moved from `adopters.astro` (page-level) to `AdopterModal.astro` (layout-level in `Layout.astro`) — fixes View Transitions issue where page-level `is:inline` script wouldn't re-execute after navigation
25+
- **Landscape Mobile Scaling**: Replace CSS-only `transform: scale()` with JS `scaleLandscape()` that dynamically sets wrapper height (`naturalHeight × scale`) — fixes excess scroll space caused by CSS transform not affecting layout box. Listens to `resize` and `astro:after-swap`
1826
- **Footer Hugging Face & ModelScope Links**: Add Hugging Face (`https://huggingface.co/iFlytekOpenSource`) and ModelScope (`https://modelscope.cn/organization/iflytek`) links to footer "Related Sites" column and social icon bar (inline SVG icons via `iconHtml` field)
1927
- **Footer `iconHtml` Support**: Extend `Footer.astro` `Link` interface with `iconHtml` field to support custom inline SVG icons for brands not available in tabler icon set
2028
- **Footer WeChat QR Modal**: Add WeChat QR code modal — clicking WeChat link in footer opens a modal with group QR code image; supports ESC key, backdrop click, and Astro View Transitions re-binding
@@ -28,6 +36,19 @@ All notable changes to this project will be documented in this file.
2836
- **Secondary Links**: Replaced Privacy/Terms/License with Security Policy, Community Values, and CLA
2937
- **Header Actions**: Remove GitHub button from header action bar
3038
- **README**: Add Hugging Face and ModelScope links to the Links section
39+
- **Code Quality**: Add `is:inline` to AdopterModal JSON `<script>` tag (silences astro(4000) hint); remove deprecated `position="right"` from `LandingLayout.astro` Header — 0 errors, 0 warnings, 0 hints
40+
- **Gitignore**: Add `TEST_REPORT.md` to temporary files section
41+
42+
### Fixed
43+
44+
- **Search View Transitions**: `const` DOM refs became stale after page swap — changed to `let` with `refreshRefs()` + `attachElementListeners()` called in `astro:after-swap`
45+
- **Adopter Multi-Cycle Failure**: Modal broke after multiple open/close/navigation cycles — fixed by calling `loadAdopterData()` in every `openModal()`, `syncHash()`, and `astro:after-swap` handler
46+
- **Adopter Direct URL Hash**: Navigating to `/adopters#adopter-xxx` didn't show card when DOM wasn't ready — fixed with retry mechanism (20 attempts × 50ms)
47+
- **Same-Page Hash Navigation**: Search results linking to same page with hash (e.g. `/adopters#adopter-agentguard`) didn't trigger `hashchange` — fixed with `e.preventDefault()` + manual `window.location.hash` assignment
48+
- **aria-hidden Accessibility Warning**: Focused element retained inside hidden modal — fixed by calling `document.body.focus()` and `focused.blur()` before hiding
49+
- **"博客" Nav Link**: Added `href: getBlogPermalink()` to navigation config — was missing, causing the link to render as a non-navigable element
50+
- **Window Resize Losing Header Elements**: BasicScripts resize handler was adding `hidden` class to `#header > div > div:last-child` (the entire right-side container including search box) — removed the offending line
51+
- **Mobile Toggle Visibility**: Desktop `ToggleTheme`/`ToggleLanguage` visible in mobile menu due to Tailwind v4 class ordering (`inline-flex` overriding `hidden`) — fixed by wrapping in `hidden md:flex` divs
3152

3253
## [0.2.0] - 2026-06-17
3354

0 commit comments

Comments
 (0)