Zander Hawke control

control a împins spre master la enesis/editor

  • 77e97ec7e1 feat: desktop onboarding, native menu, sidebar overhaul, and real-time index suggestions - Add WelcomeScreen for first-launch and stale-path workspace recovery - Gate app rendering with three-state loading/welcome/ready in app.vue - Wire workspace store with tri-state init, setWorkspace, switchWorkspace, closeWorkspace - Add native File menu (New/Open/Recent/Close) with keyboard shortcuts, always visible - Replace inline USidebar with AppLeftSidebar: search, today, timeline, pages, tags - Add useIndexSuggestions, useSidebarIndex, useTimelineDensity composables querying SQLite - Wire [[ suggestion menu to real index data (pages, references, blocks, tags) - Fix suggestion menu clipping: position: fixed + scrollIntoView on highlight - Fix backspace-delete block cursor landing at previous block end instead of next block start - Make list_directory recursive so indexer finds files in journals/ and pages/ - Fix icon bit depth (16→8-bit RGBA) and remove stale Welcome.md resource ref - Add backgroundColor to Tauri window config to prevent white flash - Add inline html background-color style in nuxt.config for pre-Vue flash protection - Fix tag lowercasing in extractLinks (pre-existing test failure) - Upgrade Nuxt UI to 4.9.0 - Silence biome non-null-assertion warnings in parse.ts and operation-history.ts
  • 9fdc006fda docs: update all READMEs; add pipeline perf test Packages: - editor/README: Block → EditorBlock component name, EditorFocusTarget union type for focused prop, hidden-at-rest grip description - root README: fix monorepo tree (6 pages, not 10), grip not bullet Dev app: - editor-block.vue: fix "one line" → "a block"; add resolveAsset prop, pattern-update, content-change-op, first-para-height events - editor.vue: focused prop type boolean → EditorFocusTarget; add debug and testMode props - dev/README: Block → EditorBlock, 6 pages not 10 Tauri app: - README: replace generic template with Enesis-specific docs - Welcome.md: remove default Tauri welcome file Testing: - Add parse-pipeline.perf.test.ts: 4 tests asserting full decoration pipeline (apply + decorations) averages under 16ms per keystroke
  • Vizualizați comparația pentru aceste 2 consemnări »

7 ore în urmă

control a împins spre master la enesis/editor

  • ba3addc98b feat(desktop): Hearthside theme, empty day state, ephemeral drag handle - Hearthside visual identity: Lora serif, clay primary, stone neutral, orange secondary, warm semantics (rose/emerald/amber/sky), ghost button default, 0.375rem radius - Update favicon and app icons from green to clay (#00a155 → #c25f34) - Drag handle is invisible at rest, fades in on block hover - Empty day state shows "A quiet page, waiting for words." invitation; no file is created on mount — only when user types - Replace crypto.randomUUID() with generateBlockId() (nanoid helper) - Switch icon set from Phosphor to Lucide (grip-vertical, size-4) - Drop zone uses 10% primary opacity instead of full - Blur isolation uses data-editor-overlay instead of data-slot="content" - Type-safe emit forwarding in JournalDay.vue

10 ore în urmă

control a împins spre master la enesis/editor

  • 4d7c6730fe feat(tauri): add D1 data layer — SQLite index, file watcher, Pinia store, tests - Add Rust commands: read_file, write_file, list_directory, create_directory - Add file watcher via notify crate (Tauri event emission, .md only, in-flight tracking) - Add tauri-plugin-dialog, tauri-plugin-store, tauri-plugin-sql (SQLite features) - Configure permissions: fs read/write, dialog, store, sql - Add Pinia workspace store with index initialization and watcher integration - Add indexer: fullReindex (walk workspace), indexFile (block diff + [[link]] extraction), removeFile (cascade delete), FTS5 with sync triggers - Add schema: pages, blocks (with content_hash, block_type enum), links (with offset), blocks_fts (FTS5), all indices - Add settings composable (tauri-plugin-store) and file system composable (invoke wrapper) - Add vitest + 31 unit tests for parser functions and schema integrity - Export splitMarkdownIntoBlocks from editor public API

14 ore în urmă

control a împins spre master la enesis/editor

  • bce41b9902 feat(editor): add toolbar layout modes (fixed/bubble/floating) with @floating-ui/vue - Add `mode` prop to EditorToolbar: `fixed` (sticky, default), `bubble` (appears on text selection), `floating` (appears on empty lines) - Use `@floating-ui/vue` with virtual element tracking selection rect - Extract shared button groups into EditorToolbarContent.vue - Bubble/floating teleport to `.editor-shell` (not body) to stay below app-level overlays - Export ToolbarMode type from public API - Fix UTooltip portal intercepting clicks via pointer-events-none on tooltip content - Fix onBlockBlurHandler: only clear activeHandlers when focus moves outside toolbar (allows heading dropdown to work) - Pass FocusEvent through EditorBlock blur emit, check relatedTarget - Fix callout margin: remove override, use regular mb-4 - Replace USeparator with HTML div separator - Add sticky toolbar wrapper and scrollable editor-body in Editor.vue - Update dev page with toolbar mode toggle and examples - Update Tauri app to use floating mode by default - Add @source directive in Tauri app CSS for Tailwind library scanning - Regenerate visual baselines after toolbar appearance changes

17 ore în urmă

control a împins spre master la enesis/editor

  • aa0a64bd45 test(editor): add visual regression suite (Phase 3), fix TS build errors - Add 21 visual regression tests across blurred/focused states, block types, themes (default/dark/orange), marker modes - Add `?theme=` and `?marker-mode=` query params to dev editor page - Configure playwright screenshot options (maxDiffPixelRatio: 0.02) - Fix TS errors from noUncheckedIndexedAccess: - Guard array access on blocks.value[idx] before spread - Fix update:content handler type (string | undefined) - Generate 22 Chromium baseline snapshots

19 ore în urmă

control a împins spre master la enesis/editor

  • 03e82e906e test(editor): complete E2E Phase 2 — paste, DnD, focus, cursor boundaries, IME - Add paste interception tests: single-line, multi-line uniform, multi-line mixed types (triggers block split) - Add drag-and-drop reorder tests via reorderBlocks utility - Add focus management tests: click-to-focus, type-in-correct-block, click-outside-blur - Add cursor boundary tests: typing before/after hidden **, ~~ delimiters - Add IME composition test: / during composition does not open menu - Fix getBlockIds to read from blocks.value order (not Map insertion order) - Add zoneIndex prop + data-zone-index attribute to EditorInsertionZone - Add reorderBlocks to testUtils harness

19 ore în urmă

control a împins spre master la enesis/editor

  • 781191f2f4 fix(editor): preserve single vs double newline via hard_break; add history coalescing tests - Add hard_break node to ProseMirror schema to distinguish \n (continuation line) from \n\n (paragraph break) within block content - Update contentToDoc: group consecutive non-empty lines into paragraphs with hard_break nodes; blank lines (\n\n) remain paragraph separators - Update docToContent: inlineToString walker emits "\n" for hard_break, "\n\n" between paragraphs — round-trip is now idempotent - Fix downstream consumers (collectParagraphs, getTextBeforeCursor, selectText) to use inlineToString instead of node.textContent which omits hard_break - Fix callout marker: hide "[!NOTE]" only (not ">") so first-line ">" matches continuation-line ">" styling - Add Phase 2.6 E2E tests: rapid typing coalesces into single undo step, pause >500ms creates separate history entry - Add 15 property-style roundtrip tests asserting docToContent(contentToDoc(x)) === x
  • ae3efdca9d test(editor): add Playwright E2E suite, fix blocks.value staleness, document usage - Add 27 E2E tests across block operations, code blocks, suggestion menu, toolbar, live preview, and smoke tests (playwright.config.ts + 6 spec files) - Add __testUtils__ harness with selectText (multi-paragraph), replaceContent, focusAtEnd/focusAtStart — gated behind testMode prop - Fix blocks.value staleness: onBlockContentChange now accepts blockId/newContent to update blocks.value before serialization (was ignoring update:content event) - Fix onBlockBoundaryExit: blocks.value[index] → blocks.value[index + 1] for downward navigation (off-by-one) - Add 68 unit tests: error recovery, table edges, depth exhaustion, code block + stripFences, classifyBlock, logger - Extract shared e2e/helpers.ts (focusLastBlockAtEnd) - Docs: README Usage section, concise Vision (no stale phase table), AGENTS.md description, 3-stage→2-stage pipeline alignment
  • Vizualizați comparația pentru aceste 2 consemnări »

19 ore în urmă

control a împins spre master la enesis/editor

  • 7b66329bf7 test(editor): add Playwright E2E harness, data attributes, shared test utils - Install @playwright/test, configure with webServer auto-start on port 5173 - Inject window.__testUtils__ via ?e2e=true query param (selectText, insertText, getContent, toggleBlur, getBlockIds, getParseTree, setTimeSource) - Add data-block-id, data-toolbar-action, data-drag-handle, data-menu-item-index, data-codeblock-editor attributes - Extract shared test utilities (stableId, createMockKeyEvent, createMockView, makeParaDoc) into __test-utils__/index.ts - Add 4 Playwright smoke tests for block render, toolbar, typing, text selection - Add npm scripts: test:e2e, test:e2e:ui, test:visual, test:visual:update - Exclude e2e/ from vitest config, add playwright-report/ and test-results/ to .gitignore ci: split into test → deploy chain with optional E2E job - Rename workflow to CI with three jobs: test, deploy (needs: test), e2e - test runs Vitest on codeberg-small (always) - deploy builds and publishes to Codeberg Pages (push to master or manual) - e2e runs Playwright only on workflow_dispatch with run_e2e=true checkbox

22 ore în urmă

control a împins spre master la enesis/editor

  • b80121dc71 chore: address code review items across history, caching, and event handling - Add coalesce() to OperationHistory; use it in Editor.vue instead of peek() + type-cast mutation (inverse recomputed, future stack cleared) - Replace content-generation counter + nextTick with lastSerialized string comparison (no race window for external vs internal updates) - Add missing reactive import to Editor.vue - Extract applyCalloutGroupDecorations and applyTableDecorations from buildDecorationsFromCache / applyBlockDecorations - Memoize renderCellContent Lezer parses with 50-entry FIFO cache - Narrow CodeBlockView.stopEvent to pass through clipboard, composition, and paste events to ProseMirror - Scope zoneRefs.clear() to structural mutation handlers only (not per-keystroke onBlockContentChange) - Add metadata field to local ParsedToken interface (TS fix) - Document extractEmbeddedId code-fence false-positive risk - Add "Why Not TipTap" rationale to README
  • ac8ba1d93e feat: Tauri desktop app shell and editor cleanup - Add Tauri v2 app with Nuxt + sidebar layout (apps/tauri/) - Strip GFM continuation indent in splitMarkdownIntoBlocks - Skip blank lines in contentToDoc (no empty <p>), join with \n\n - Keep task markers visible in live-preview (blurred state) - Add node-level decoration classes for tasks, properties, callouts - Normalize paragraph margins (mb-4 on last child, 0 between siblings) - Import KaTeX CSS to hide MathML fallback span - Measure first paragraph height for dynamic bullet gutter alignment - Fix \ backslash escaping in Welcome.md (\LaTeX, unescaped backticks) - Remove vite.config.ts duplicate alias
  • 9b3d670b5b ci: narrow deploy trigger to editor/dev paths and add manual dispatch - Add paths filter so deploy only runs on changes to packages/editor or apps/dev - Add workflow_dispatch for manual deployment - Update deploy step condition to support both push and manual trigger - Switch runner from codeberg-small to codeberg-medium
  • 4a0e3148e0 feat(docs): rebrand dev app with Geist font, isometric blocks logo, and favicons - Add Geist variable font via @fontsource-variable/geist - Replace text-based logo with isometric stacked blocks + Enesis Editor wordmark - Generate favicon.ico, apple-touch-icon, and PWA icons from block SVG - Remove unused geist and @nuxt/fonts dependencies - Update README header with logo and brand tagline
  • c1260ed94d feat(editor): add image rendering, file drop/paste, and resolveAsset prop - Add createImageRule() — parses ![](url) via Lezer Image nodes, renders <img> widget when blurred, raw source when focused - Add ImageDecoration type, exported through markdown-parser - Add safeImageSrc() URL sanitizer with 9 tests - Add handleDrop and handlePaste (clipboard images) in EditorBlock - Add resolveAsset prop and asset-dropped emit on Editor + EditorBlock - Non-image files drop as [filename](url), images as ![](url) - Fix unresolved refs — dispatch resolvedRefs on mount (not just on change) - Add image styles (md-image-hidden, md-image-wrapper, md-image-rendered) - Update dev app pages to demo images, resolvedRefs, and reference events

22 ore în urmă

control a creat o ramură nouă master la enesis/editor

22 ore în urmă

control a creat un repozitoriu enesis/editor

23 ore în urmă

control a împins spre master la control/home

1 zi în urmă

control a împins spre master la control/home

1 zi în urmă

control a împins spre master la control/home

1 zi în urmă

control a împins spre master la control/home

  • b149e42555 feat: add ngit-grasp GRASP relay container on odin - Add ngit-grasp flake input from gitnostr repo - Create grasp container at 192.168.1.4 with agenix-managed nsec secret - Add cloudflare tunnel route for grasp.t5.st - Refactor container definitions into hosts/odin/containers/default.nix
  • ec9b4c46ac feat: add ngit-cli flake input for Nostr-based git CLI
  • da4b065d2c chore: drop unused zen-browser and firefox-addons flake inputs
  • Vizualizați comparația pentru aceste 3 consemnări »

1 zi în urmă

control a împins spre master la control/home

1 zi în urmă

control a împins spre master la control/home

  • 65c6ed39ba feat(odin): add NAT for container internet access and git in Gogs container - Adds container-nat.nix to masquerade traffic from private containers through enp3s0 - Installs git in the Gogs container for shell-based debugging

1 zi în urmă

control a împins spre master la control/home

1 zi în urmă

control a împins spre master la control/home

  • 6c1448e119 docs: add odin server docs, Gogs container, and push-to-mirror setup

1 zi în urmă

control a împins spre master la control/home

1 zi în urmă