Weekly report
Frappe and ERPNext changes, 17 Aug to 23 Aug 2026
200 changes merged: 43 new features, 13 speed-ups, 121 fixes, 23 refactors.
- feat Let apps add search results via hook Enables in-app docs search and allows apps to add custom search results via hooks for use cases like external APIs and semantic search.
- perf Fix!: improve timeline component Timeline component now owns its scroll position, grouping, and field-visibility decisions instead of spreading them across consumers.
- fix Onclick link for routes expanded Navbar routes with onclick links were not expanding; now properly handle dynamic route expansion.
- fix Fix href link webform in request data Webform URL links on request-data page now point to correct field.
- fix Treat formula-like values as literal text in CSV/XLSX export Values starting with `=`, `+`, `-`, `@`, etc., are now escaped to prevent formula injection on import.
See all 18 changes
- fix Scope reference_doc to form fields for key holders Restricts `reference_doc` to web form fields only, preventing key holders from receiving the full document in the page.
- fix Reject non-string Web Form Request keys Rejects list and tuple keys before they're used as ORM filters, preventing filter mismatches.
- fix Bypass forced sanitization for json fields Prevents JSON field data corruption by bypassing forced HTML sanitization on fields that store structured data.
- fix Get encryption key during restore Prevents generating a new encryption key during restore, which would fail decryption and leave the site in a broken state.
- fix RQ Job list filters and search-link crash ID, Job Name, and Status filters now work correctly; fixed autocomplete crash on malformed job names.
- fix File permission flip fix File permissions can now be toggled correctly.
- fix Preserve saved page size on load more Report page size is now reused when loading more rows instead of resetting.
- fix Exclude dynamic routes from sitemap.xml Dynamic routes with placeholders (e.g. `/blog/:name`) are now skipped from sitemap to avoid invalid URLs like `/project/%3Cname%3E`.
- refactor Bump click to 8.4.1 chore: bump click to 8.4.1
- refactor Bump sqlparse and sql_metadata chore(deps): bump sqlparse and sql_metadata
- refactor Drop bleach dependency chore: drop bleach dependency
- refactor Clear exclude-newer-package configuration in pyproject.toml chore: clear exclude-newer-package configuration in pyproject.toml
- refactor Resolve sitemap backport conflict markers chore: resolve sitemap backport conflict markers
- feat Percentage based BOM Adds percentage-based BOM for formulations where component quantities derive from percentages that total 100%, with balance item support and automatic UOM conversion.
- feat Add status filter to Supplier Quotation Comparison report Supplier Quotation Comparison report now has a Status filter (Draft, Submitted, both); defaults to Submitted to hide drafts.
- perf Fix(crm)!: remove unused `get_last_interaction` endpoint Removes whitelisted helper function that has been unused since its dependent call_popup.js was removed.
- fix Changing product bundle warehouse should change packed items warehouse Setting warehouse on a bundle item now updates warehouses in its packed items.
- fix Stop doubling totals in timesheet billing summary Group By was counting each entry twice, yielding incorrect totals like 21 hours instead of 10.5; includes fixes for 58315, 58318.
See all 32 changes
- fix Avoid full grid re-render per row in set_exchange_rate Opening a Journal Entry with many rows was slow; each row now only updates itself instead of rebuilding the entire grid.
- fix Respect permissions in timesheet billing summary Timesheet billing totals now exclude rows the user cannot access; includes backport 58322.
- fix Skip covered rows when ordering from the mrp report MRP report ordering now correctly skips rows already covered.
- fix Correct to and from date filters in timesheet billing summary Date filters in timesheet billing summary were reversed; includes backport 58318.
- fix Escape on status image for workstations in production status Escapes `on_status_image` in `get_workstations` so both status branches handle values consistently.
- fix Escape interpolated values in portal, print and desk templates Escapes item, warehouse, user and document values interpolated into HTML attributes across portal pages, print formats, form grids, dashboards and client-side templates.
- fix Escape interpolated values in text positions across portal and desk templates Escapes free-text document values interpolated into element text and serializes the RFQ document safely inside its script block.
- fix Update pick list status for product bundles Pick lists now correctly track delivery status for product bundles that spawn multiple component rows.
- fix Fetch item stock UOM in stock reconciliation Stock Reconciliation now shows each item's correct Stock UOM immediately, instead of falling back to settings defaults.
- fix Preserve item UOM conversion factor Saving an Item now keeps explicit UOM conversion factors instead of replacing them with global defaults.
- fix Ignore future stock during batch reservation Automatic batch reservation now uses a posting timestamp cutoff, preventing reservation of stock from future-dated entries.
- fix Support shared target UOM conversions UOM conversions now work when both source and target UOMs convert to a common third UOM.
- fix Prevent TimestampMismatchError resolving Dunning with multiple overdue installments Payment Entries for multi-installment invoices no longer fail when the invoice appears multiple times in a Dunning's overdue table.
- fix Scope secondary items to job card Scrap item tracking in multi-operation work orders now limits quantities to the current job card, preventing double-booking across operations.
- fix Allocate drop-ship cost by invoice quantity Gross Profit now allocates purchase cost proportionally by invoice quantity for drop-ship items instead of assigning the full cost to every row.
- fix Match returns to source invoice items Gross Profit now applies returns to the correct invoice rows (not just by item code) and uses the right purchase rate for drop-ship items.
- fix Skip covered rows when ordering from the mrp report Material Requirements Planning no longer tries to create orders for rows whose quantities are already covered by existing stock.
- fix Work order finish dialog with process loss qty from job card Caps the job card completed qty by the minimum from previous operations and shows process loss booked.
- fix Use user data fields hook Privacy rules now load correctly by replacing deprecated `user_privacy_documents` hook with `user_data_fields`.
- fix Preserve zero return incoming rates Sales returns with explicit zero incoming rates now preserve that zero during rate recalculation.
- fix Handle Transaction Deletion Record CSV edge cases CSV import now handles short rows and imports with only skipped rows gracefully.
- fix New docs should refetch incoming rates New documents now refetch incoming rates before calculating cost of goods.
- fix Add missing permission check on multiple whitelisted methods Adds missing permission validation on multiple whitelisted methods to prevent unauthorized access.
- fix Correct Item Group doctype name in item tax template dashboard Item Tax Template form now loads correctly; dashboard was referencing non-existent "Item Groups" DocType instead of "Item Group".
- fix Add missing permission check on `get_import_status` Adds permission check to the `get_import_status` endpoint to block unauthorized calls.
- fix Drop removed Restaurant doctype from sales tax template dashboard Sales Taxes and Charges Template form loads properly on sites without the Hospitality app; removed reference to Restaurant DocType that was moved to a separate app.
- refactor Remove mistakenly committed file chore: remove mistakenly committed file
- fix Use public scrub API in unpaid expense report Unpaid Expense Claim report import failing on Frappe v16 fixed by using stable public API instead of internal scrub.
- fix Set indicator colors on kanban columns Job Applicant kanban columns now show indicator colors on board creation; patch backfills existing boards; includes backport 5135.
- fix Enforce advance currency and account type checks consistently across selection and save Selecting a valid Employee Advance threw false errors for currency mismatches or non-Receivable accounts; checks now consistent; includes backport 5136.
- refactor Release v15 release v15
- feat Enforce lesson completion Per-course enforcement of lesson completion gates; students cannot open a lesson until earlier lessons are complete (opt-in, server-side validated).
- feat Improved command palette Command palette now has functional search and keyboard navigation; most results were routing to wrong pages.
- fix Give the Chapters bar the tab strip's height Chapters bar button height now aligns with tab strip after page shell updated tab button line-height.
- fix Stop a reverted language change from reloading the page Changing language and then reverting it no longer triggers a full page reload.
- fix Require only a first name to save a profile Profile form now matches the User doctype's actual required fields (first_name only).
See all 6 changes
b
Builder
6 new features · 8 fixes · 1 refactors
- feat Give Bob one voice across models AI assistant voice is now defined once and reused across all models, maintaining consistent persona regardless of provider.
- feat Preview the selected font and design tokens in their own typeface Font dropdown field and design token rows now preview values in their own typeface instead of the UI font.
- feat Focus point control for cover images Cover images now have a focal-point picker in a popover with fit tabs, live zoom slider, and preview on canvas.
- feat Font token values pick from the font dropdown Design token font values now use a searchable dropdown with per-family previews and custom font uploads instead of free-text entry.
- feat Font dropdown keeps a minimum width Font dropdown options list now maintains a minimum width so family names don't truncate.
See all 15 changes
- feat Fix(property plus affordance recedes until interaction Property panel plus icons now use lighter color at rest and darken on interaction.
- fix Send component block as a string when saving Saving an existing component threw 500 because a dict was passed to SQL instead of JSON string.
- fix Restore the site analytics chart under echarts 6 Site Analytics chart was blank since echarts version bump; rendering restored by applying missing color configuration.
- fix Sync the root lockfile with the workspace manifests Yarn install failed on clean checkout due to misaligned dependency versions between root and workspace manifests.
- fix Match builds stay faithful to the named reference Match builds incorrectly chose an older sibling page's design instead of the named reference geometry.
- fix AI design flow session review fixes Attached reference images in design flow were lost after the turn they were sent; now persisted across session replay.
- fix Skip XSS filtering on builder-authored block fields fix(builders): skip XSS filtering on builder-authored block fields
- fix Smooth chat panel loading states AI panel no longer flashes "Set up AI" to configured users on slow networks; chat scrolls to end when loaded behind a closed tab.
- fix Carry the reference into generation, teach the full component system AI page generation now preserves reference layouts, fonts, components and scripts instead of losing them or rendering fallbacks.
- refactor Update POT file chore: update POT file
p
Payments
1 new features
p
Press
1 new features · 6 fixes · 1 refactors
- feat Add drilldown in cost by service report Cost by service report now supports drilldown to see detailed breakdown.
- fix Show database uptime as a percent of each bucket Database uptime chart now shows percentage of time up in each time bucket instead of a flat 0/1 gauge.
- fix Make a single command for ssh access dialog SSH access dialog now shows a single copyable command instead of requiring multiple steps.
- fix Set Amount due as zero once paid Invoice amount due now correctly updates to zero after payment.
- fix Scroll the bench log dialog after the body mounts Deep links to bench logs now scroll to the bottom on load instead of staying at the top.
See all 8 changes
- fix Keep whitelisted methods on the bench dropdown's group resource fix(ui): Keep whitelisted methods on the bench dropdown's group resource
- fix Include app name in pyproject error fix: Include app name in pyproject error
- refactor Make the repo readable for agents docs: Make the repo readable for agents
o
Other
30 new features · 11 speed-ups · 61 fixes · 12 refactors
- feat Cover browser lifecycle recovery Adds test coverage for deterministic browser visibility and connectivity controls in Meet media fault recovery.
- feat Nested condition trees, derived workspace membership, and host-declared manager roles Membership rules now support flexible nested condition trees instead of flat AND/OR, enabling complex workspace access policies.
- feat Show emails in participant search Calendar participant search now shows email addresses as primary labels with contact names and avatars as secondary.
- feat Add media fault injection coverage Adds test coverage for SFU producer/consumer creation failures and media endpoint closure recovery.
- feat Render mermaid diagrams Published VitePress documentation now renders Mermaid code blocks as interactive fullscreen diagrams with zoom and download.
See all 114 changes
- feat Add raven_integration app List raven_integration on the Frappe marketplace.
- feat Saving offline copies and presenting with no network Presentations can now be saved offline with images, shell, and assets; offline mode works for viewing, presenting, and editing with sync when back online.
- feat Connectors and line improvements Lines can now attach to shapes with auto-binding to ports or sides; connectors follow targets through move, resize, and rotate in the same undo entry.
- feat Efficient table editing — row/column grips, structural edits, header rows, cell ranges Whiteboard tables now support row/column grips with insert/delete actions, header row designation, and cell range selection for a Google-Docs-style editing experience.
- feat Add send_otp/verify_otp entry points for other apps Telephony now exposes `send_otp` and `verify_otp` entry points for apps that verify recipients as part of their own flow.
- feat Align the Draw home page with Drive, remove pinning Draw home page now uses frappe-ui list primitives matching Drive's design, with sorting on column headers and no pinning.
- feat Make server flow robust Server flows now have structured error handling, Resource Action tracking, and correlation IDs for matching outcomes to requests.
- feat Better handling of server flows Atlas now stores and includes correlation IDs on every vm/site event for attribution of outcomes to central requests.
- feat Redesign the error pages All error pages (500, 502, 504, 429) now share one consistent layout with icon, heading, error line, and action buttons, with the 500 page linking to the bench's web error log.
- feat Revert "fix: Consider full year calculation for limits" Reverts a limit calculation change that was incorrect.
- feat DOCX import support Writer now supports importing Word documents directly into the editor using mammoth.js for client-side parsing.
- feat One colour palette across the app Unified single Espresso color palette across all menus; three near-duplicate palettes (swatches, whiteboard, components) now use the same grid.
- feat The Lines menu is a line and an arrow for each shape Lines menu now offers six tools: straight/elbowed/curved as both lines and arrows, with two genuinely new tools (elbowed and curved lines).
- feat Give the eraser three modes, sized tips and Clear all Eraser now offers three modes (Eraser with adjustable tip sizes, Erase by object, Clear all) via a dropdown menu.
- feat Print a heatmap's categories, and stand its scale beside the plot Heatmap categories now print formatted values on axes and in tooltips; scale displays beside the plot instead of as a separate legend.
- feat Fill the block arrow's box, and make its proportions draggable Block arrow now fills its bounding box completely; proportions of arrow head are draggable to adjust shape.
- feat Add Trapezoid and Parallelogram shapes Two new polygon shapes now available in the Shapes menu alongside existing presets.
- feat Serve page definitions to the renderer without Studio roles Studio page renderer now loads definitions in 1 request instead of 4, and non-studio users can now view rendered pages.
- feat Rebuild Home around the diagram list Home now centers on the diagram list; removed yellow Drive card and Collections entirely, simplifying the interface.
- feat Persist locked framing across sessions Locked camera framing now persists across page reloads and future calls; restores with validation and bounds clamping.
- feat Rework the shapes menu, custom polygons and shape rounding Shapes menu reorganized into 4×2 grid with custom polygon tile (3–15 sides); shapes now support continuous rounding via corner radius slider.
- feat Draw the laser trail as one continuous ribbon Laser trail now renders as smooth continuous ribbon instead of beaded segments; grows from tail to head with consistent width.
- feat Add automatic camera framing Automatic face-aware camera framing with stable crop tracking; users can hold and resume framing from the video preview.
- feat Reduce interruptions for long projector presentations Presentation mode now suppresses toasts during fullscreen and holds a wake lock to keep screen awake during long talks.
- feat Indent lines with tab and keep whitespace in text Tab and Shift-Tab now indent/outdent slide text lines with 4-character stops; whitespace is preserved on reload.
- perf Reset Meet guest access limits E2E tests now reset per-IP rate-limit buckets between runs to prevent cascade failures from exhausted limits.
- perf Narrow recorder build paths Restrict recorder image builds to recorder-specific paths to avoid rebuilds for unrelated Calendar, Mail, and Calendar changes.
- perf Narrow drive e2e frontend paths Limit Drive-backed E2E runs to Drive-specific changes to avoid unnecessary triggers for Meet, Mail, and Calendar changes.
- perf Optimize WebGL background effects Background effects now reuse WebGL textures and framebuffers across frames, keeping blur passes on the GPU.
- perf Clear the ruff debt, and make ruff a gate that cannot drift Resolved all outstanding ruff lint findings and added ruff as a gated check to prevent future drift.
- perf Paint three values in ink, and stop the accessibility sweep reading only the first screen Fixed contrast issues in three components by using correct ink colors; accessibility test now scans full page instead of stopping at viewport.
- perf Align the crawler and visitor headings, and send a report-only CSP Page headings now consistent between crawler and visitor versions; Content Security Policy is now report-only for visibility.
- perf Stop reading contrast from the one engine that gets it wrong Contrast validation now reads from real Safari instead of Playwright's Linux WebKit, which renders colors differently from all actual browsers.
- perf Run every check from one command, and report what it found QA suite can now be run as one command (`bash qa/run-qa.sh`) that executes all checks and generates a pass/fail report for each tool.
- perf Close out the session: skill into the repo, stale claims, and what the production sweep found Moved QA skill into repository so it travels with checkouts; fixed three outdated documentation claims and integrated production sweep findings.
- perf Add migration guide from standalone apps to Suite New migration documentation for transitioning from standalone apps to Suite, with step-by-step `bench` commands and post-restore cleanup.
- fix Check what a mapping is pointed at on every write path Prevents Manager-role users from silently repointing mappings through direct API calls, bypassing adoption checks.
- fix TabButtons options, Compose screenshot, and editor write fixes External writes restoring earlier editor values now apply correctly; TabButtons recipe updated with theme-aware options.
- fix Allow creating loan repayment directly when it fails to create during payroll Loan repayment can now be created separately when it fails during payroll without canceling the entire payroll entry; includes backport 1400.
- fix Show scheduled participant avatars Preserve contact names and profile images for scheduled meeting participants.
- fix Video upload inconsistencies Toolbar uploads now show progress, media lands on correct slide, and video posters render correctly on slow connections.
- fix Recover ended local tracks Reacquire camera or microphone tracks that end unexpectedly and preserve selected-device fallback.
- fix Reconcile expected media Track expected media lifecycle state and periodically reconcile missing publications and subscriptions with bounded repairs.
- fix Recover missing remote streams Detect and recreate subscriptions for remote consumers missing their first RTP; retry with bounded lifecycle-safe chain.
- fix Recover decoded video stalls Distinguish missing RTP from video decode stalls using inbound frame counters; request keyframe before recovery.
- fix Recover fresh participant connections Converge exhausted recovery operations into one bounded coordinator; rebuild signaling and transports before advancing media health.
- fix Recover browser media lifecycle Suspend media repairs while hidden or offline; reset baselines and retry playback after browser transitions.
- fix Block sending during attachment upload Send and schedule controls are now disabled while file attachments upload to prevent sending incomplete emails.
- fix Images pasted from another tab were not visible to viewers Cross-presentation paste now attaches images and videos to the destination, making them visible to viewers.
- fix Images replaced on the wrong slide Image replacements now land on the correct slide when duplicating slides from layouts.
- fix Filter out trashed files from archive downloads Archive downloads now respect file status checks and exclude trashed files.
- fix Support in/not in filters end to end Multi-value filters now work correctly from the UI through data fetches to the Edit Data spreadsheet.
- fix Recover initial media publication Camera and microphone now retry independent publication with bounded retries and proper state tracking.
- fix Clean up closed producers Closed media producers are now finalized idempotently and dependent consumers are cleaned up.
- fix Isolate participant connections SFU media ownership is now isolated per participant connection while preserving participant identity.
- fix Clip background preview corners Background effect corners are now clipped to prevent composited video pixels leaking through in Firefox.
- fix Distinct Lines-menu icons, and lines behave like first-class objects Lines now show distinct geometry icons in the menu and can be selected, arranged, and deleted like other objects.
- fix Let a new object clear an arranged line, not tie with it New objects now correctly supersede arranged lines in z-order instead of tying with them.
- fix All five of #544's minor issues Eraser no longer stays armed after Clear All; Guides label hidden; toolbar triggers fixed.
- fix Make a "+" mean an offer, and a direction change mean direction Flowchart and mind-map connectors now show `+` only on unconnected sides and properly display decision branch directions.
- fix Quieter resize handles, sticky text colour, and a typed font size Resize handles now use neutral grey, sticky notes have text color control, and font size has proper typing.
- fix Raise z-index of dialog so toasts dont dim Dialog z-index now stays above toast overlays.
- fix Broken stuff fix(ux): broken stuff
- fix Sign pre-commit autoupdate commits fix(actions): sign pre-commit autoupdate commits
- fix Point the 500 page at the right docs URL fix(pages): Point the 500 page at the right docs URL
- fix Let the 500 page's links escape their iframe fix(pages): Let the 500 page's links escape their iframe
- fix Correct pagination and margins in Writer PDF/print export fix(mail): correct pagination and margins in Writer PDF/print export
- fix Fix DOCX export and rewrite exporter fix(writer): fix DOCX export and rewrite exporter
- fix Typo fix(drive): typo
- fix Minor ui things fix: minor ui things
- fix Capture build failure error and show in toast fix(builders): capture build failure error and show in toast
- fix Missing Popover in build config fix(builders): missing Popover in build config
- fix Shared-dep resolver so linked frappe-ui can't pull its own @tiptap fix(scope): shared-dep resolver so linked frappe-ui can't pull its own @tiptap
- fix One mind-map "+" at a time, and a new node opens for naming Fixed five simultaneous issues where hover and selection marks appeared on different nodes; new nodes now open with a text input ready for naming.
- fix Say why an image insert failed, and place it where the user clicks Failed image inserts now show an error message; images place at the click point instead of a fixed location.
- fix Let a mind map close back up when a node is deleted Deleting a mind-map node now reflows remaining nodes back toward the parent instead of keeping the spacing of the larger tree.
- fix Stop a mind-map node growing a line at 15 characters Mind-map node sizing no longer oscillates between one and two lines as text grows; character-width calculation is now consistent at all font sizes.
- fix Render inserted images in the minimap, export and thumbnails Images now appear in the minimap, SVG/PNG/PDF exports, saved thumbnails and home tiles; were previously rendering as empty rectangles.
- fix One drag box selects everything, and nothing it cannot act on Marquee selection now includes whiteboard elements (ink, stickies, lines, tables) that were invisible to it; fixed two opposing filter bugs in the same function.
- fix No text options on the toolbar for an image Selecting an image no longer shows text formatting controls (font, size, bold, italic, etc.) that don't apply to it.
- fix Close the selection outline by moving the handles off it Selection outline no longer appears "open" at corners; resize handles now sit off the dashed box instead of masking it.
- fix Rebuild the connector menu as one kind of control Connector dash and corner options are now icon cells instead of word-carrying segmented controls; dash pattern is drawn at the connector's own width.
- fix Scale the size preview dots instead of clamping them Highlighter size preview dots now show three distinct sizes; middle and right options no longer rendered as identical dots due to incorrect clamping.
- fix Type a table cell and a connector label in what they commit to Text editors for table cells and connector labels now match the appearance of their committed output; alignment and styling were drifting while editing.
- fix Say whether a failed save needs a retry or a reload "Save failed" message now distinguishes transient retryable failures from reload-requiring errors (e.g., frontend bundle replaced).
- fix Size an insert menu to its tiles, not to a measured box Lines menu width now matches its tile content instead of leaving visible empty space to the right.
- fix Let Escape close a dialog instead of deselecting behind it Escape key now closes Export, Share and Info dialogs instead of being consumed by the editor's keyboard handler.
- fix Hold the export dialog at one height as the format changes Export dialog no longer shrinks and recenters when switching between SVG/PNG formats; controls stay in place under the mouse pointer.
- fix Drop the guide label pill and the Apps entry Removed redundant label pill from alignment guides and unused Apps menu entry to reduce visual clutter.
- fix Group the canvas toolbar into Navigation, Creation, Editing Toolbar now reads in three semantic sections (Navigation/zoom, Creation/insert, Editing/arrange) instead of growing contextual groups that shift everything sideways.
- fix Show the Arrange menu tiles as icons only Arrange menu tiles across four sections now show icons only (tooltips carry the labels), reducing menu width from 300px and eliminating redundant text.
- fix Sit the selection outline tight on the shape, and drop the edit ring Selection outline no longer stands off shapes; edit ring removed to reduce selection chrome visual noise.
- fix Show white in the colour grid, and align the font menu with Espresso White swatch now visible in color grid with a real outline instead of disappearing as a hairline on white; font menu now uses single Espresso palette.
- fix Export the preset polygon shapes as their own outlines Block arrows, hexagons, pentagons and stars now export correctly to PNG, PDF, thumbnails and minimap; were previously rendering as plain rectangles.
- fix Make the toolbar icons one weight and legible apart Toolbar icon stroke weight and sizes now consistent across all glyphs; previously conflicting sizes made some icons hard to distinguish.
- fix Make Fill read as a fill, and let the corner handle own rounding Fill button now renders as solid disc instead of looking like a second border control; corner handle independently controls rounding.
- fix Ease camera framing back to full frame Camera view now eases smoothly back to full frame when auto-framing winds down instead of jumping abruptly.
- refactor Move lifecycle recovery to group 2 Rebalance E2E test groups by measured runtime.
- refactor Speed up string formatting using f-strings SQL query generation now uses f-strings instead of `.format()` for ~35% faster string formatting performance.
- refactor Move slides dialogs to frappe-ui dialog Slides dialogs now use frappe-ui dialog primitives with standard headers, sentence-case titles, and consistent padding.
- refactor Misc fixes UI refinements and fixes across the application.
- refactor Improve Dependabot update configuration chore: improve Dependabot update configuration
- refactor Bump version to 0.1.0 chore: bump version to 0.1.0
- refactor Add release script for version bumping chore(scripts): add release script for version bumping
- refactor Validate vitepress builds on pull requests ci(docs): validate vitepress builds on pull requests
- refactor Skip builds for unrelated pull requests ci(docs): skip builds for unrelated pull requests
- refactor Fix broken ci style(ci): fix broken ci
- refactor Deslopify frontend codebase Frontend codebase refactored to remove dependency on Slop framework (see commit history for details).
- refactor Add nice formatting for markup to make it readable chore(ui): Add nice formatting for markup to make it readable