Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
ea25f6f
feat(ui): add ambient homepage visual system
cropflre Aug 3, 2026
0590b4a
refactor(ui): simplify homepage search control
cropflre Aug 3, 2026
a4e72a1
refactor(ui): redesign ambient homepage hero
cropflre Aug 3, 2026
0249fab
refactor(ui): calm aurora background motion
cropflre Aug 3, 2026
c8e1fc2
refactor(ui): replace meteor streaks with subtle ambient glints
cropflre Aug 3, 2026
87d8329
refactor(ui): lock desktop dock to centered ambient layout
cropflre Aug 3, 2026
f70cdf9
refactor(ui): expose bookmark card visual hooks
cropflre Aug 3, 2026
c099303
chore(ui): remove unused hero import
cropflre Aug 3, 2026
031df3f
chore(ui): remove unused search import
cropflre Aug 3, 2026
8b6a069
feat(ui): compose ambient homepage content stages
cropflre Aug 3, 2026
4d07073
chore(ui): load ambient homepage layout styles
cropflre Aug 3, 2026
7047ed0
fix(ui): keep ambient homepage content visible
cropflre Aug 3, 2026
eeb7740
feat(ui): 增加少量书签氛围舞台
cropflre Aug 3, 2026
4a65866
style(ui): 完善少量书签舞台视觉
cropflre Aug 3, 2026
b60b157
chore(ui): 导出氛围书签舞台
cropflre Aug 3, 2026
57ac07e
feat(ui): 将稍后阅读纳入氛围舞台
cropflre Aug 3, 2026
6ea107d
feat(ui): 接入少量书签氛围展示模式
cropflre Aug 3, 2026
c196503
test(ui): 覆盖氛围书签舞台筛选
cropflre Aug 3, 2026
ce6a86f
ci: 增加 Web 单测与构建检查
cropflre Aug 3, 2026
b368df7
test(ui): 修正氛围舞台可访问性查询
cropflre Aug 3, 2026
d607282
test(ui): 使用原生 auxclick 事件验证中键
cropflre Aug 3, 2026
abe9ef7
feat(a11y): 支持卡片键盘打开与焦点语义
cropflre Aug 3, 2026
eaef73c
test(a11y): 覆盖卡片键盘打开行为
cropflre Aug 3, 2026
2398673
feat(home): persist collection filters in URL
cropflre Aug 3, 2026
ddb6607
test(home): cover collection URL state
cropflre Aug 3, 2026
2dcc951
feat(home): restore collection state and improve sparse stage navigation
cropflre Aug 3, 2026
aba00ab
test(home): cover sparse stage URL and keyboard navigation
cropflre Aug 3, 2026
bf7aeca
fix(home): preserve collection when clearing tag state
cropflre Aug 3, 2026
0b5ae8e
test(home): cover tag clearing with collection state
cropflre Aug 3, 2026
b9704c2
fix(home): avoid duplicate filter history entries
cropflre Aug 3, 2026
5dce6a8
feat(home): unify mobile collection navigation with sparse stage
cropflre Aug 3, 2026
03dc6ca
test(home): cover mobile sparse collection navigation
cropflre Aug 3, 2026
c350586
ci(temp): export source snapshot for homepage refactor
cropflre Aug 3, 2026
7127e38
chore(temp): stage homepage library refactor patch
cropflre Aug 3, 2026
94dd837
ci(temp): verify and publish bookmark library refactor
cropflre Aug 3, 2026
85efed9
chore(temp): add phase4 patch chunk 00
cropflre Aug 3, 2026
94ec50d
chore(temp): add phase4 patch chunk 01
cropflre Aug 3, 2026
cd532c7
chore(temp): add phase4 patch chunk 02
cropflre Aug 3, 2026
d1ab464
chore(temp): add phase4 patch chunk 03
cropflre Aug 3, 2026
01625b3
chore(temp): add phase4 patch chunk 04
cropflre Aug 3, 2026
9982a60
chore(temp): add phase4 patch chunk 05
cropflre Aug 3, 2026
d33d74b
chore(temp): add phase4 patch chunk 06
cropflre Aug 3, 2026
350e013
chore(temp): add phase4 patch chunk 07
cropflre Aug 3, 2026
afd066a
chore(temp): add phase4 patch chunk 08
cropflre Aug 3, 2026
117190a
ci(temp): verify chunked bookmark library refactor
cropflre Aug 3, 2026
1b92747
ci(temp): fix bookmark library patch path
cropflre Aug 3, 2026
2cce555
ci(temp): apply bookmark library patch from repo root
cropflre Aug 3, 2026
ba01f9f
test(home): stabilize bookmark library state assertions
cropflre Aug 3, 2026
db57918
ci(temp): apply bookmark library test stabilization
cropflre Aug 3, 2026
0954dd6
test: make localStorage mock stateful
cropflre Aug 3, 2026
bb2cf46
ci(temp): validate stateful storage persistence
cropflre Aug 3, 2026
0199cd9
chore(temp): mark phase4 verification complete
cropflre Aug 3, 2026
0fe0ba3
chore(temp): probe atomic tree support
cropflre Aug 3, 2026
d64fb8e
chore(temp): probe atomic tree support 2
cropflre Aug 3, 2026
1c81d91
chore(temp): probe atomic tree support 3
cropflre Aug 3, 2026
fb3b7c7
ci(temp): publish verified library without workflow mutation
cropflre Aug 3, 2026
3e32b0c
feat(home): add responsive bookmark library [skip ci]
github-actions[bot] Aug 3, 2026
fb99b2b
ci: restore standard web verification
cropflre Aug 3, 2026
777f87d
Merge branch 'main' into feat/ambient-homepage-v1
cropflre Aug 3, 2026
af84a88
feat(ui): restore balanced aurora motion and visible beams
cropflre Aug 3, 2026
c52e3d7
feat(ui): restore responsive beam collisions and droplet particles
cropflre Aug 3, 2026
a84c2db
feat(ui): restore visible meteor glints without vertical streak artif…
cropflre Aug 3, 2026
03250b1
test(ui): keep visible aurora beams in normal themes
cropflre Aug 3, 2026
05581d9
test(ui): cover responsive beam density and reduced motion
cropflre Aug 3, 2026
9bf8e3a
fix(animation): restore visible aurora and beam layering
cropflre Aug 3, 2026
a0e16e4
fix(animation): restore prominent beams and impact droplets
cropflre Aug 3, 2026
ac6d3fe
fix(animation): restore visible meteor trails
cropflre Aug 3, 2026
3cbbe78
test(animation): verify restored beam density
cropflre Aug 3, 2026
5d51590
test(animation): verify visible meteor trails
cropflre Aug 3, 2026
ee7fb3e
test(animation): lock restored aurora profile and layering
cropflre Aug 3, 2026
a51f65c
test(animation): verify restored beam timing profile
cropflre Aug 3, 2026
52e7d16
test(animation): keep restored beam regression coverage
cropflre Aug 3, 2026
75d3332
perf(ui): move beam collisions off the animation frame
cropflre Aug 3, 2026
8d88bad
perf(ui): move aurora ambience onto compositor layers
cropflre Aug 3, 2026
616bdd4
perf(ui): render meteor trails with css compositor animations
cropflre Aug 3, 2026
41d7481
test(ui): cover compositor beam profile
cropflre Aug 3, 2026
6bfa948
test(ui): expect compositor aurora profile
cropflre Aug 3, 2026
c60ab94
fix(library): separate list tags from category badge
cropflre Aug 3, 2026
afb4148
fix(library): load list tag layout overrides
cropflre Aug 3, 2026
4c6a08b
fix(library): deduplicate category from bookmark tags
cropflre Aug 3, 2026
3565a68
fix(library): enforce non-overlapping list metadata rail
cropflre Aug 3, 2026
c76a16f
refactor(书签库): 重构卡片标签区排版并移除补丁样式
cropflre Aug 3, 2026
ca873a2
refactor(library): compact bookmark metadata chips
cropflre Aug 3, 2026
23ed318
perf(library): remove per-card layout and spotlight work
cropflre Aug 4, 2026
d143e64
perf(library): isolate cards and remove live blur
cropflre Aug 4, 2026
3455404
fix(dev): skip unavailable Docker monitor on Windows
cropflre Aug 4, 2026
16615f1
fix(dev): disable Docker polling when unavailable
cropflre Aug 4, 2026
30d1af3
fix(dev): silence stale browser data and Docker CLI noise
cropflre Aug 4, 2026
31ccede
test(dev): cover Docker API override
cropflre Aug 4, 2026
afe58c5
perf(aurora): isolate pointer glow updates from page layout
cropflre Aug 4, 2026
3003e48
perf(cards): remove per-frame spotlight layout reads
cropflre Aug 4, 2026
44dd281
perf(cards): cache 3d card geometry per hover
cropflre Aug 4, 2026
ca5787c
test(perf): prevent repeated spotlight geometry reads
cropflre Aug 4, 2026
c863fb1
test(perf): isolate aurora pointer glow updates
cropflre Aug 4, 2026
2023fd1
perf(dnd): measure bookmark cards only while dragging
cropflre Aug 4, 2026
356c609
perf(sidebar): replace scroll layout reads with intersection observer
cropflre Aug 4, 2026
6b91ff4
chore(ci): apply bookmark library pagination
cropflre Aug 4, 2026
a1d478c
chore(ci): fix bookmark pagination patch
cropflre Aug 4, 2026
bfcda2a
chore(ci): repair pagination validation fixture
cropflre Aug 4, 2026
d31a925
chore(ci): fix pagination workflow repair
cropflre Aug 4, 2026
2338546
chore(ci): remove temporary pagination workflow
cropflre Aug 4, 2026
9645781
chore(ci): remove temporary pagination repair workflow
cropflre Aug 4, 2026
f77e963
perf(home): avoid scroll-triggered category batch mounting
cropflre Aug 4, 2026
b628965
perf(home): let the browser skip offscreen category rendering
cropflre Aug 4, 2026
dfc61c0
perf(dev): make React StrictMode opt-in for profiling
cropflre Aug 4, 2026
17bb8e1
perf(cards): isolate lightweight cards from animated backdrop
cropflre Aug 4, 2026
ca7e258
perf(dock): replace hover motion with compositor-only CSS
cropflre Aug 4, 2026
12b0597
perf(dnd): disable idle sortable layout animations
cropflre Aug 4, 2026
6cb8f12
feat(home): split system workspace from bookmark shortcuts
cropflre Aug 4, 2026
f943782
style(home): add system workspace hierarchy
cropflre Aug 4, 2026
56efc81
test(home): cover system workspace separation
cropflre Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/workflows/web-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Web CI

on:
pull_request:
branches: [main]
push:
branches: [main]

concurrency:
group: web-ci-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
test-and-build:
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- name: Install dependencies
run: npm ci

- name: Run unit tests
run: npm run test:run

- name: Build production bundle
run: npm run build
9 changes: 9 additions & 0 deletions scripts/dev.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
const serverDir = path.join(rootDir, 'server')
const npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm'
const isWindows = process.platform === 'win32'
const dockerMonitorEnabled =
process.env.NOWEN_DOCKER_MONITOR_ENABLED ?? (isWindows ? 'false' : 'true')

const DEFAULT_DEV_WEB_PORT = 39100
const DEFAULT_DEV_API_PORT = 39101
Expand Down Expand Up @@ -149,6 +151,9 @@ startService('API server', ['run', 'dev'], {
DB_PATH:
process.env.DB_PATH ??
path.join(rootDir, 'server', 'data', 'zen-garden.db'),
DOCKER_MONITOR_ENABLED: dockerMonitorEnabled,
BROWSERSLIST_IGNORE_OLD_DATA:
process.env.BROWSERSLIST_IGNORE_OLD_DATA ?? 'true',
},
})

Expand All @@ -157,6 +162,10 @@ startService('Web client', ['run', 'dev:web', '--', '--port', String(webPort), '
env: {
...process.env,
VITE_API_BASE: apiUrl,
VITE_DOCKER_MONITOR_ENABLED:
process.env.VITE_DOCKER_MONITOR_ENABLED ?? dockerMonitorEnabled,
BROWSERSLIST_IGNORE_OLD_DATA:
process.env.BROWSERSLIST_IGNORE_OLD_DATA ?? 'true',
},
})

Expand Down
Loading
Loading