Prepare Fission 0.14.0 - #185
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
title: Fission 0.14.0: navigation, SQLite storage, and complete text
description: Fission 0.14.0 adds coherent deep links and history, opt-in cross-platform SQLite, and a complete retained text subsystem.
authors:
categories:
tags:
show_adjacent_posts: true
Fission 0.14.0: navigation, SQLite storage, and complete text
Fission 0.14.0 gives applications three coherent framework-level capabilities:
deep links and history that behave consistently across shells, opt-in SQLite
storage without a cost for applications that do not use it, and a text system
whose editing, layout, rendering, selection, accessibility, and platform input
all share the same retained authority.
This is a minor release because it adds substantial public APIs and target
capabilities. Existing route handlers and ordinary string-controlled text inputs
continue to work.
Deep links and history without a required router
Every shell now exposes the same logical route and navigation commands. An
application can use Fission's
Router, retain an existingwith_route_handlerintegration, or build a custom or third-party router over
RouteLocation.Reducers can navigate through the normal effect pipeline:
On Web, both
/projects/42and#/projects/42can launch the same applicationroute.
WebRouteStrategy::Autopreserves the representation used at launch;explicit path and hash strategies remain available, along with deployment base
paths. Back, forward, hash changes, and initial deep links flow into the same
route-change contract.
Link::to("Open project", "/projects/42")performs internal navigation andalso behaves as a real link. The semantic hyperlink contract is public, so a
custom widget can provide an
href, target, relationship metadata, download,or popover target without depending on the built-in
Link. Web canvas outputprojects these links into DOM anchors, and Static site and SSR output emit
ordinary
<a>elements.Path-based SPA deployments still need their host to serve the application entry
document for application routes. Fission's development and generated Web
servers do this while continuing to return
404for missing assets. Hash routingremains the zero-configuration choice for static hosts without rewrite support.
SQLite is the portable storage direction
Storage is deliberately opt-in. Applications that do not enable it do not
compile SQLite, start a worker, or ship SQLite Web assets.
CLI-managed projects can add the capability with:
fission add-capability storage --project-dir .The high-level Store API owns one reserved
fissiontable and provides typedkeys, application/session/user/named scopes,
get,set,contains,remove,prefix listing, and atomic batches. Storage requests and results follow Fission's
normal reducer effect and typed input contracts.
The SQL API does not handicap SQLite. It supports parameterized execution,
typed query rows, ordered migrations through
user_version, and transactionsthat can be passed between modules while they are assembled:
Native graphical targets and Terminal use bundled SQLite in an application-data
database. Web uses the official SQLite WebAssembly distribution in a worker and
persists through OPFS. SSR uses a server-side database file. Static-site-only
projects reject runtime storage because generated files have no storage
authority. Applications can supply their own Store or SQL provider through the
same capability traits.
One complete retained text subsystem
TextEditingValueis now the editing authority: text, directional selectionwith affinity, and the composing range move atomically. Validated UTF-8
TextPositionvalues have named UTF-16 and Unicode-scalar conversions forplatform boundaries. Keyboard, IME, Web native editing, accessibility,
clipboard, programmatic controllers, and tests all enter one
TextEditCommandtransaction pipeline.
Ordinary
value: Stringinputs remain supported. Applications that need fullcontrol can provide the complete value:
Typed input, selection, focus, blur, validation, submission, and completion
callbacks preserve the bound action payload, so repeated and schema-generated
forms retain their stable field context. Public controllers cover editing,
scrolling, coordinated read-only selection, and forms. Validation and autofill
metadata reach native accessibility and semantic HTML.
Paragraph measurement now retains final lines, Unicode clusters, caret stops,
selection rectangles, inline placements, constraints, and measured size.
Painting, hit testing, caret and selection geometry, scrolling, IME candidate
placement, and accessibility consume that same result. Typography adds fallback
families, locale, word spacing, complete decoration styles, shadows and paints,
OpenType features, variable axes, baseline and leading policy, line breaking,
hyphenation, and nonlinear accessibility scaling across native rendering,
software rendering, Static site, and SSR.
SelectionRegioncoordinates selection across several retainedTextandRichTextnodes. Desktop supports mouse, keyboard, and context-menu workflows;touch targets add slop-aware handles, magnification, a selection toolbar, and
edge auto-scroll.
Input and scrolling polish
Multiline fields now start at the top, fill the available editor height, and
show scrollbar chrome by default. Applications can disable that chrome with
show_scrollbar(false). The collapsed blue touch caret handle is hidden unlessexplicitly enabled.
Scrollbars retain their compact visual width but have a wider inward hit target.
Clicking the rail above or below the thumb jumps proportionally and immediately
begins a drag. Scroll-state reconciliation also happens before layout, preventing
an offset retained by one screen from hiding the content of a different screen
that reuses the same structural identity.
Upgrade
Update the framework and CLI:
Existing route handlers remain valid. Existing string-controlled text fields
remain valid. Enable SQLite only in applications that use storage, with the CLI
capability command above or the
store-sqlite-nativeandstore-sqlite-webCargo features for manually managed projects.