Achilng/floral-notepaper
54.2
Adequate · 30 September 2026
26.4k
lines of production code
Rust
with TypeScript
2
measurements over time
What this system is
This system is a cross-platform desktop note-taking application, rebuilt from a legacy WPF codebase to a Tauri 2 and React stack. It provides core functionality for creating, editing, and organizing Markdown notes with support for images, categories, and global keyboard shortcuts. The application features a customizable UI with theming, internationalization, and a dual-pane editor with live Markdown preview. It also includes robust backend services for data persistence, automatic updates with fallback sources, and packaging for Windows, macOS, and Linux.
Features
Added MSIX package manifest and localization resources for Microsoft Store distribution
This change introduces the MSIX packaging infrastructure required for distributing the application via the Microsoft Store. It adds the AppxManifest template which declares the app as a full-trust desktop application, registers file associations for .md and .txt files, and configures registry and file system write virtualization to ensure compatibility with existing user data. Additionally, it includes localized resource files (resources.resw) for English (US), Simplified Chinese (CN), and Traditional Chinese (HK) to support proper display names and descriptions in the Store.
src-tauri/msix · high confidence
App shell, theming, and localization infrastructure
The application now features a complete UI shell with dark mode support that follows the system theme, smooth crossfade transitions between themes, and embedded HarmonyOS Sans SC and Source Han Serif SC fonts for consistent typography. The main entry point initializes internationalization (i18n) via react-i18next, and the root component manages theme application, system theme watching, tab-to-indent behavior, and macOS-specific shortcut handling (including blocking the Alt+Space system menu).
src · high confidence
Initial Tauri v2 configuration and cross-platform build setup
The application has been configured for Tauri v2, introducing native support for Linux (deb, rpm, AppImage) and macOS (DMG) alongside existing Windows builds. This change includes platform-specific configurations: Linux uses a custom desktop template for proper integration, macOS utilizes native traffic light window controls, and Windows employs a custom NSIS installer hook to ensure correct installation directory handling. The app identifier is set to com.floral-notepaper.app, and file associations for .md and .txt files are registered to allow opening these documents directly in the app.
src-tauri · high confidence
Initial release of the Tauri-based desktop application
This change introduces the core Rust backend for the desktop application, built on Tauri. It establishes the application's architecture by defining the main entry point, a localization system supporting Simplified Chinese, Traditional Chinese, and English, and a JSON-based storage layer with atomic writes to ensure data integrity. The backend exposes Tauri commands for managing notes (create, read, update, delete, import, export), organizing them into categories, and handling image attachments. It also implements platform-specific features, including a Windows low-level keyboard hook for global shortcut handling and tray management, and macOS menu integration.
src-tauri/src · high confidence
Introduce core UI components and testing infrastructure
This change introduces the foundational UI components for the application, including the main window layout, note editing surfaces (NotePad, Tile), and the settings and about panels. It adds a new context menu system for both editing and tile interactions, a reusable sliding button group for settings controls, and a toast notification system for user feedback. Additionally, it includes the initial test coverage for the AboutPanel and popup positioning logic.
src/components · high confidence
Introduces window management API and surface mode logic for tiles and notepads
This change adds the frontend wiring for managing notepad and tile windows, including opening, toggling, and animating window bounds via Tauri IPC. It defines a 'pad' and 'tile' surface mode system with specific 260x260 default sizes, handles context menu actions (copy, save, switch to pad, close) for pinned tiles, and implements logic to sync pin states and emit unpin events when a tile converts to a pad. It also includes URL routing helpers to build and parse \notepad\ and \tile\ views with note IDs.
src/features/windows · high confidence
Introduction of structured note and configuration services
The application now uses a dedicated service layer in \src-tauri/src/services\ to manage note data and application settings. This change introduces structured handling for notes (including metadata, categories, and content) and a comprehensive \AppConfig\ model that exposes numerous user-facing settings such as theme, font sizes, auto-save toggles, tile behaviors, and background image customization to the frontend. It also defines a standardized \AppError\ type for consistent error reporting across the service layer.
src-tauri/src/services · high confidence
New Markdown preview component with GFM, LaTeX, and alerts support
The markdown feature area introduces a new \MarkdownPreview\ component (and its lazy-loaded wrapper) that renders Markdown using \react-markdown\ with plugins for GFM, KaTeX LaTeX, and custom alert blocks. It includes a \remarkAlerts\ plugin to parse \\[!TYPE\]\ syntax into styled callouts, a \CodeBlock\ component with language labels and copy buttons, and a \scrollSync\ module with tests to handle synchronized scrolling between editor and preview. Image resolution is handled by a new \imageSrc\ utility with tests, and the preview is wrapped in \Suspense\ for lazy loading to reduce initial bundle size.
src/features/markdown · high confidence
New MirrorChyan update source with secure credential storage and dual-source fallback
The updater now supports downloading updates from MirrorChyan in addition to GitHub, providing a redundant download path for users. To access MirrorChyan, users must provide a CDK (Cookie/Key) which is securely stored in the system keychain via the new CdkStore module. The update check and download logic automatically falls back to GitHub if the MirrorChyan source fails or is unavailable. This change also introduces a hardened Windows installation process with rollback capabilities and registry backups, and reduces the retention period for downloaded update files from 30 days to 3 days to save disk space.
src-tauri/src/updater · high confidence
New build and release automation scripts for Windows packaging
This change introduces a suite of new PowerShell and Node.js scripts in the scripts/ directory to support Windows packaging and release workflows. Key additions include build-msix.ps1 for assembling MSIX packages from templates and binaries, build-msixupload.ps1 for creating multi-architecture upload containers, and sign-msix-self-signed.ps1 for signing packages with a stable self-signed certificate. Supporting scripts handle version synchronization (set-version.mjs), NSIS toolchain preparation (prepare-nsis-toolchain.ps1), contributor fetching (fetch-contributors.mjs), and various verification steps for PE versions, Authenticode signatures, and MSIX package integrity. A local build script (build-windows-local.ps1) allows reproducing these artifacts without external signing services.
scripts · high confidence
New settings infrastructure and shortcut recording logic
This change introduces the foundational settings API and configuration types for the application, including functions to get, save, and migrate user data directories, as well as to select background images. It adds a new shortcut recording system that captures global keyboard shortcuts via a Tauri system hook, normalizes platform-specific key labels (e.g., resolving 'Mod' to 'Command' on macOS), and validates shortcut availability. Additionally, it implements theme resolution logic to support system-following dark mode with transition handling, and tile color normalization to handle hex color inputs and system theme synchronization.
src/features/settings · high confidence
New update settings UI and comprehensive test coverage
This change introduces the \UpdateSettingsSection\ component, which provides a unified interface for managing update preferences (such as source preference between GitHub and MirrorChyan, check intervals, and CDK configuration) and displaying update status (including download progress, installation states, and error notices) in both the settings and about panels. It also adds the underlying API layer (\api.ts\) for invoking Tauri backend commands and a robust error-mapping system (\updateErrors.ts\) that translates backend error codes into user-friendly, localized messages. The entry is accompanied by extensive Vitest test suites (\\*.test.ts\) covering the component rendering, API invocation, presentation logic, and error handling.
src/features/update · high confidence
Notes feature: import/export, categorization, and error localization
This change introduces the core logic for the Notes feature, including the ability to import and export Markdown files with sanitized filenames and localized error messages. It adds a categorization system that groups notes by category (including empty categories) and provides utilities for filtering, preview generation, and display titles. The API layer handles note CRUD operations, category management, and error localization for structured and serialized backend errors. Context menu actions for export, move, and delete are defined, and comprehensive tests cover the import/export API, error localization, and note utilities.
src/features/notes · high confidence
Project scaffolding and repository configuration
The repository has been initialized with the core project configuration files for a Tauri 2 + React application, including \vite.config.ts\, \tsconfig.json\, and \index.html\. Essential documentation and legal files have been added, such as \README.md\ (with English and Traditional Chinese variants), \CONTRIBUTING.md\, \LICENSE\ (MIT), and \PRIVACY\. Repository hygiene is enforced via \.gitattributes\ (enforcing LF line endings) and \.gitignore\, while \THIRD\_PARTY\_NOTICES.md\ documents the embedded HarmonyOS Sans SC font. Legacy development planning files (\PLAN.md\, \PROGRESS.md\, \CLAUDE.md\) and the previous C\# solution file have been removed.
(repo-wide) · high confidence
Support pasting and dragging images into the editor
Users can now paste or drag-and-drop image files (PNG, JPEG, GIF, WebP, BMP, SVG) directly into the text editor. The system processes these files, saves them to the note's image directory via a new backend API, and inserts the corresponding Markdown image syntax at the cursor position. This feature includes a 20 MB file size limit and handles note creation if the note is not yet saved.
src/features/images · high confidence
Removals
Removal of frontend design draft components
The files constituting the frontend design draft for the 'Hua Jian' (花笺) prototype have been deleted. This includes the main HTML entry point, the React-based design canvas wrapper (DesignCanvas.jsx) that managed pan/zoom and artboard ordering, the tweaks panel (tweaks-panel.jsx) for runtime styling adjustments, and the associated state file (.design-canvas.state.json).
前端设计稿 · high confidence
Behavioural changes
Added pre-commit hook for automatic code formatting
A new pre-commit hook has been introduced in the .husky directory that executes \npx lint-staged\. This change ensures that code formatting and linting checks are automatically applied to staged files before each commit, helping to maintain consistent code style and catch issues early in the development workflow.
.husky · high confidence
Migrate note-taking app from WPF to Tauri
The application has been rebuilt from a WPF desktop app to a Tauri-based cross-platform app. This change removes the entire WPF codebase (including XAML views, ViewModel, and services) and replaces it with a Tauri scaffold, fundamentally altering the underlying technology stack while preserving the core note-taking functionality.
src/花笺 · high confidence
Updated Android launcher icon configuration and macOS icon symlink
The Android application now uses an adaptive icon configuration (ic\_launcher.xml) with a white background, replacing the previous static icon setup. On macOS, the icon.icns file is now a symlink pointing to Default.icns, resolving previous symlink errors and ensuring the correct icon is used for the desktop application.
src-tauri/icons · high confidence
Test coverage
Added test for HarmonyOS Sans SC font usage
Added a test to verify that the application's CSS correctly includes 'HarmonyOS Sans SC' as the CJK fallback for monospace UI text.
tests · high confidence
Dependencies
Initial dependency manifests for v1.2.0 and removal of legacy .NET project
This change introduces the initial dependency manifests for the project (now named floral-notepaper) at version 1.2.0, establishing the core technology stack. The frontend is defined in package.json with React 19, Vite 8, Tailwind CSS 4, and Tauri 2 plugins, alongside Markdown and LaTeX rendering libraries (react-markdown, KaTeX). The backend is defined in src-tauri/Cargo.toml, specifying Tauri 2 dependencies and Rust crates for clipboard, dialog, and system integration. Concurrently, the legacy WPF-based .NET project (花笺.csproj) has been removed, marking the complete transition to the new Tauri-based architecture.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 57 → 54 (-2.4)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 82 → 82 (+0.0)
- Architecture 99 → 99 (+0.4)
- Maturity 63 → 62 (-0.9)
- Readiness 62 → 46 (-15.6)
- Security 61 → 73 (+12.7)
- Accessibility 47 → 47 (+0.0)
- Performance 100 (new)
Resolved (8)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Hotspot: src-tauri/src/desktop.rs (src-tauri/src/desktop.rs)
- Hotspot: src/components/SettingsPanel.tsx (src/components/SettingsPanel.tsx)
- Hotspot: src/features/markdown/scrollSync.ts (src/features/markdown/scrollSync.ts)
- Off-boarding risk: anonymized user #1
- Off-boarding risk: anonymized user #2
New (9)
- Dependency hygiene PARTLY measured — Cargo dependencies read, dependency currency not (crates.io unreachable)
- Documentation: no project overview (README.md)
- Duplicate method signatures with different parameter names (app vs _app) and likely different implementations or overloads that are not clearly distinguished by type. This creates ambiguity for callers.
- Inconsistent naming convention for CDK operations compared to the CdkStore type. CdkStore uses set_cdk, clear_cdk, get_cdk, has_cdk. The commands module uses update_mirror_chyan_cdk_set, update_mirror_chyan_cdk_clear, update_mirror_chyan_cdk_get. The prefix update_mirror_chyan_cdk_ is verbose and inconsistent with the domain object's simpler naming.
- Medium vulnerability: RUSTSEC-2026-0285 (src-tauri/Cargo.lock)
- Medium: security finding (details withheld)
- Off-boarding risk: anonymized user #2
- Off-boarding risk: anonymized user #1
- Two factory methods with similar names but different semantics. from_dto implies a direct conversion, while from_user_settings implies merging with existing settings. This is slightly confusing as from_user_settings is not a standard 'from' pattern name.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Achilng/floral-notepaper was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 69a43aef87d2d8fa90c7a7d929cd113941f1fde3 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.