hammer-editor/.gitignore
Adam Brown 3a85c461dd
Some checks are pending
Build CI / android-instrumented-tests (push) Waiting to run
Build CI / iOS compile & test (push) Waiting to run
Build CI / iOS UI tests (push) Waiting to run
Build CI / build (push) Waiting to run
Build CI / static-analysis (push) Waiting to run
PublishInternal / publish-google-play (push) Waiting to run
Stop large story imports from freezing the app
Importing a 100k+ word Markdown story froze the editor and consumed all its
RAM. Parsing was never slow (~60ms for 120k words); creating the scenes was,
and quadratically in their number. Resolving a path by id regex-parsed every
filename in the project, sibling counts re-listed the parent directory several
times per scene, and the order re-padding loop re-scanned once per renamed
sibling.

The cached directory scan now carries a scene-id index and a child-count
index, in ScenePathIndex. A created file is absorbed in place; anything else
drops the cache. The re-padding loop reads what it needs before it rather than
inside it, so a run of renames costs one re-scan instead of one each.

Measured on an in-memory filesystem, importing 400 scenes drops from 2.1s to
~0.3s and 1600 from 37s to ~3s. A real disk gains more, since the discarded
scans are syscalls.

Also builds the import preview off the UI thread, debounced and single
flighted, shows the dialog while it reads instead of leaving the projects list
looking idle, makes the preview pane lazy, and ignores the local scratch
directory.
2026-07-30 21:10:36 -07:00

98 lines
1.6 KiB
Text

.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
*.hprof
.idea
/local.properties
wix311/
/android/release/android-release.aab
# Test
/htmlReport
# Fastlane
play_config.json
fastlane/report.xml
fastlane/README.md
.kotlin
# Release artifacts
/android/release/
/.claude/*
!/.claude/skills/
/CLAUDE.md
/.output.txt
# Mac App Store signing assets (do NOT commit)
/desktop/embedded.provisionprofile
/desktop/runtime.provisionprofile
/desktop/secrets/
# Xcode per-user state (UI layout, breakpoints, scheme prefs)
**/xcuserdata/
# iOS App Store signing assets (do NOT commit)
/ios/AppStore.mobileprovision
/ios/ExportOptions.plist
# Snap/Flatpak/AppImage build artifacts
/flatpak-build/
/flatpak-repo/
*.snap
*.flatpak
/parts/
/prime/
/stage/
/Hammer.AppDir/
/appimagetool-x86_64.AppImage
/appimage-runtime-x86_64
/nul
/.claude/
# Home page screenshot tooling: the generated webp assets under
# server/src/main/resources/assets/images/ are committed, their sources are not
/scripts/build-home-screenshots.py
/scripts/home-screenshot-sources/
# Local working area: marketing renders, one-off scripts, anything not shipped
/scratch/