This changelog is generated automatically by build/changelog.civet
.
For each version of Civet, it lists and links to all incorporated PRs,
as well as a full diff and commit list.
- Non-end rest parameters support types [#1648]
- Multithreaded compilation via Node workers and
threads
option orCIVET_THREADS
environment variable; enable Node compiler cache; improve unplugin caching [#1646]
- Fat pipe
||>
uses semicolons at statement level [#1636] - Fix parser crash on blocks inside
switch
[#1640] :label
supports Civet reserved words (but not JS reserved words) [#1641]break/continue loop/while/until/for/do
refer to anonymous containing iteration [#1642]- Update unplugin to v2.1.0 [#1643]
- Range literal
[a..b]
defaults to increasing; adaptive behavior behind"civet coffeeRange"
directive [#1632]- BREAKING CHANGE:
[a..b]
and[a...b]
no longer creates a decreasing range without an explicit>
or>=
; add one where needed.
- BREAKING CHANGE:
"""
interpolations requirecoffeeInterpolation
,///
respectscoffeeInterpolation
,coffeeComment
,coffeeDiv
[#1635]- BREAKING CHANGE:
"""
and///
no longer support#{expr}
interpolation unless you setcoffeeInterpolation
;///
no longer supports#
comments withoutcoffeeComment
;///
no longer supports//
comments withcoffeeDiv
- BREAKING CHANGE:
%%
operator types supportbigint
in addition tonumber
[#1620]- Fix
new
expression at start of pipeline [#1625] - Fix implicit
async
and*
in methods [#1627] - Fix object literals and bulleted lists in JSX indented attributes, fix indentation detection [#1628]
- Fix placeholders in
for each
loops [#1630] - Fix implicit objects in indented arguments after other arguments [#1629]
- Fix mixing access modifiers (e.g.
readonly
) with@
arguments in constructors [#1631]
for join
reduction to concatenate strings [#1604]- Numeric object keys in pattern matching [#1608]
- Fix trailing member/call behavior [#1609]
- Fix complex property globs [#1610]
- Allow postfix in indented
if
conditions [#1612] for
reduction implicit body can destructure, fix implicitly returned patterns in some cases [#1613]- Fix fallthrough in implicitly returned switch with semicolon, improve
hasExit
heuristic [#1615] - Type postfix
?
and!
work in long postfix sequence [#1617] - Playground shows IIFE failures only when clicking Run [#1618]
- Fix automatic
Promise
wrapping of async return types [#1619]
- Fix typo in Coffeescript comparison [#1589]
- Fix range
for
loop with complex left-hand side [#1592] - Type's postfix
if
must be on the same line [#1591] - Fix missing parentheses in one-line
if
condition [#1595] - LSP: fix autocompletion details error message [#1596]
- Fix reduction inside conditions, and other subtle aliasing issues [#1598]
- Track indentation of trailing member/call expressions [#1599]
- BREAKING CHANGE: A chain of trailing member accesses must now be consistently indented.
- Syntax highlighting: fix leading
_
being treated as a number [#1578] - Scientific numeric literals take priority over access [#1579]
- Fix parenthesized
⧺
and—
shorthands for++
and--
[#1584] - Fix wrapping of braced objects in parentheses [#1585]
- Object comprehensions via loops in braces [#1563]
- Playground copy button for large text fragments [#1569]
- Fix unplugin
typecheck
: source mapping andrewriteCivetImports
combination [#1571] - Playground buttons to copy input or output [#1572]
- Fix modulo access with placeholders:
x[& %]
[#1573] - Fix parenthesized
&
followed by type postfix [#1574] - Playground TypeScript toggle [#1577]
- Fix parenthesized
&
followed by binary op [#1576] - Object and array literals via
{}
and[]
followed by items [#1575]
- Fix REPL support for
ref
s created by Civet [#1553] array[i%]
modulo index shorthand [#1554]- Bun docs: improve getting started guidance [#1555]
- Avoid duplicate calls in relation chains and
@
bind shorthand via refs [#1556] - LSP completions show details and documentation [#1561]
- Fix
for key: T, value in
loop to definevalue
using typedkey
[#1564] - Lone
finally
block provides cleanup for rest of block [#1566]
- Placeholders lift through reverse slice operators [#1537]
- Playground
comptime
restarts playground worker and resets toggle after editing [#1538] - "civet strict" directive to enable JS strict mode [#1539]
- Fix reverse slices handling of extreme indices, trailing member access [#1545]
- Fix
& &
disambiguation (placeholder vs. bitwise and) [#1546] - Inequality slicing without
..
:x[<i]
etc. [#1547] - Allow multiple indented blocks of arguments in function call [#1548]
- Restart LSP when
package.json
or Civet config file changes [#1544]
- Fix
sum
/count
/each
/own
/etc. as loop iteration variables [#1531] - Fix parenthesized
for
expression without body [#1532] - Ensure space after
for..of/in
[#1533] - Fix
await
step vs. expression detection in pipeline [#1535] - Fix
for
loops over&
placeholder [#1534] - Check for valid left-hand sides, forbidding lone placeholder [#1536]
- Range loops can provide custom skip via
by
(not just in CoffeeScript) [#1505] - LSP completions and hover info up-to-date instead of lagging [#1500]
- Fix LSP by dropping
triggerCharacters
which requires fault-tolerant compile [#1512] - Fix LSP:
resolve
ofWithResolver
doesn't return aPromise
[#1514] for some/every/count/sum/product/min/max
reduction loops, empty for loop default behavior, fix unwrapping multiple loops in a row [#1509]- Allow
|> throw
[#1517] - Multiple generator loops at top level, unwrap top-level iterations, fix implicit loop bodies [#1518]
T?
type shorthand in named tuple elements [#1521]:"symbol name"
symbol shorthand with quotes [#1522]await
/throw
with placeholders in pipeline, trailing|> throw
makes statement without IIFE [#1520]async
functions and arrow types auto-wrap return type inPromise
[#1523]- Fix typing of
return.value
inasync
function [#1524]
:symbol
shorthand forSymbol.symbol
orSymbol.for("symbol")
[#1498]- preventExtensions on comptime functions [#1494]
- Fix unplugin's webpack mode:
resolve.alias
, virtual modules [#1501] for
loops can filter viawhen
conditions (not just in CoffeeScript mode) [#1502]
- Fix one-line arrow functions with
@
arguments [#1490] - Fix
Promise<void>
detection with implicit type arguments [#1491] - Fix await with array member expression [#1492]
- Fix CLI with complex
NODE_OPTIONS
, LSP cleanup [#1482] if
conditions continued by binary op on next line [#1483]from ... import/export
(reversedimport
/export
) [#1484]
- Reverse slices and inequality slices with implicit parts [#1478]
- Indented types after binary type operators [#1479]
- Pattern matching
catch
[#1477]
- Improve project root detection in LSP [#1470]
- Loops followed by binary operators,
as
on next line [#1472] - Fix bracing in implicitly returned one-line for loops [#1474]
- Fix automatic private fields from constructor
@args
[#1475] - Ranges and slices with inequalities such as
[a<..<b]
[#1476]
- Automatically type fields using
@arg
in constructor [#1469]
- Compiler directives
iife
andrepl
for wrapping program, fixcomptime
implicitly returned from function [#1463] repl
directive hoists function and class declarations too, fix one-line declarations inif
[#1466]- One-line braced blocks with single-line statements [#1467]
- Forbid next-line braced blocks after
return if
andyield if
[#1468]
- Fix
catch
type annotation by forbidding indented type arguments incatch
[#1446] - Require parentheses in complex
&
type annotation [#1447]- BREAKING CHANGE:
&: number | string
is now treated as(&: number) | string
, and&: T ? a : b
is consistently treated as(&: T) ? a : b
- BREAKING CHANGE:
- CLI exposes top-level declarations with top-level
await
[#1448] .d.ts
matches output extension in CLI;declarationExtension
option in unplugin [#1451]- Fix CLI executing ESM code from stdin or
-e
[#1454] - CLI REPL supports (strips) TypeScript [#1453]
- Variance annotations (
in
/out
) in type parameters [#1459] - Allow pipes etc. in explicit function arguments [#1460]
- Pipeline doesn't unwrap in multi-
&
function shorthand [#1462] - Add missing parentheses with
++
concat operator [#1461]
- Assigned expressionized statement followed by pipe, grammar cleanup [#1442]
yield
indo
yields in parent in all cases [#1443]- Nested function arguments support trailing member access/call [#1444]
- BREAKING CHANGE: Nested argument using
.
function shorthand should now use&.
to avoid being treated as a trailing member access
- BREAKING CHANGE: Nested argument using
- Binary operators continue arguments only if strictly indented [#1438]
- Forbid pipes in non-nested implicit arguments [#1441]
- Stop implicitly returning final value from generators [#1430]
- Prevent stray
await
on one line from pipeline expansion [#1431] T!
type shorthand forNonNullable<T>
[#1434]await
with indented argument, or multiple arguments as array [#1433]- Typed
for
loops generate valid TypeScript [#1435] await
with array literal awaits the items [#1437]- CoffeeScript
do
allows unary operators beforehand, and handles nested body better [#1436]
- Use new Civet icon in VSCode extension [#1420]
"civet globals"
directive to prevent some auto declarations [#1423]- Fix arrow type with
?
postfix [#1425] - Enable
worker.civet?worker
import in Vite [#1426] - Fix missing semicolon in if/unless followed by else [#1428]
- Support
export default
indeclare
blocks [#1427]
- VSCode plugin ignores CoffeeScript files [#1409]
- Add syntax highlighting support for /d, /s and /v RegExp flags [#1413]
- Make
autoVar
skipdeclare
d variables [#1419] - Add missing parens in
unless
declaration condition [#1414] - Type specification in
for..of/in
loops [#1418] - Fix implicit empty body for exported functions [#1417]
- Fix typed patterns in arrow function with unparenthesized parameter [#1416]
- Document how to use Civet Web Workers in Vite [#1403]
- change types order in package.json exports; default config exports [#1405]
--trace
fixes and documentation, cleanup ofgetStateKey
[#1399]- Run
<script type="text/civet">
in browser build [#1400]
- Fix
!
negated indented argument in function call [#1393] break with
andcontinue with
for modifying results array in a loop [#1396]break/continue [label] with
and better error handling [#1397]for*
,loop*
,while*
,do*
generator expressions [#1398]
- Lexical declarations as JSX code children [#1387]
- Postfix
if
/unless
in type declaration [#1388] - Add changelog to eslint plugin [#1389]
- Improve indentation handling with union/intersection types [#1390]
- Remove final implicit comma in nested arguments, better matching source [#1392]
- Implicit type arguments, bulleted type tuples, multiple items in indented tuples [#1391]
- Fix pattern matching with indented object patterns [#1384]
"civet jsxCode"
directive treats JSX children as Civet code [#1386]
- Add
repository
topackage.json
, fixing Dependabot changelog detection [#1380] - Fix glob accessor
.{a,b}
shorthand for&.{a,b}
[#1379] - Typing of object/array pattern components via
::
[#1383] - JSX attributes with unbraced indented values, code children with
>
[#1381]
- Hyphenated object keys like
Content-Type:
[#1377] - Fix unplugin
parseOptions
, fix eslint plugin for Node 22 [#1378]
import operator
bulk import of operators [#1372]continue switch
to fall through at the end ofwhen
clause [#1373]- Remove Svelte label
$:
exception (use:$
if needed) [#1374] - Expressionize statements followed by trailing member access/call or pipe [#1375]
- Include changelog in NPM release [#1376]
- Fix placeholder expressions at head of pipeline [#1366]
- Support length shorthand
#
when defining objects [#1367] - Generate tags for Civet releases [#1368]
- Indented
if
/unless
conditions to enable indented function calls (e.g.(and)
) [#1364] - Indented calls in
if
conditions with explicitthen
clause (#1090) [#1369] - Improved release process and changelog generation [#1370]
- Optional dot in
?.
and!.
property access:x?y
andx!y
[#1352] - Changelog generation: fetch PRs mostly in parallel [#1353]
- Allow empty
interface
andnamespace
blocks [#1356] - Add missing parens in ampersand functions starting with object literal [#1357]
- Changelog: Add version dates and diff/commit links, add PR links [#1358]
- Document how to use with React Native / Metro bundler [#1359]
- Fix arrow being treated as assignment in tight arrow functions [#1360]
- Fix esbuild unplugin sourcemap bug [#1362]
- Bulleted arrays with
.
or•
[#1361]
- Add CommonJS build of Babel plugin, enabling React Native support [#1351]
- Automatic changelog creation [#1350]
- Fix
..
slice operator precedence [#1332] - Fix
&&
chain precedence with bitwise&
/|
/^
[#1334] - Assignment operators for div and mod [#1338]
- Nested return type annotation [#1340]
- Fix relational chains involving
!=
[#1346] - Add missing Unicode assignment operators [#1347]
- Fix CLI for globally installed Civet [#1348]
- CLI
-e
/--eval
option for running/compiling a string [#1349]
- Fix whitespace in snug
<?
instanceof shorthand [#1329] - Add
%/
/÷
integer division, fix%%
precedence [#1331]
- Prevent BinaryOp function shorthand from shadowing arrow functions. [#1317]
- Use register to avoid experimental loaders deprecation warning [#1324]
- Support for
unique symbol
type in TS [#1323]
- Jest integration [#1313]
- Hoist array binding and rest ref declarations. Fixes #1139. Fixes #1312 [#1314]
- Move unplugin and build using Civet instead of tsup [#1306]
- CLI tests [#1308]
- Fix import looking like multiplication [#1310]
- Fix indented chained ternaries [#1311]
- Fix pipe mode in CLI [#1305]
- More CLI/typechecking fixes:
civetconfig
extensions,@types
support,includes
/excludes
/files
support, typechecking without filename list [#1304]
- Fix some TS errors and increase code coverage [#1283]
- Fix extension for CLI's
--typecheck
[#1297] - Fix
if
types [#1298] - Add
class with A, B
mixin notation [#1299] - Allow
civetConfig
inpackage.
[json
|yaml
] [#1300] - Typecheck fixes: JSX default,
tsconfig
errors,imports
field [#1302]
- Binary op fixes [#1282]
- Fix argument parsing [#1293]
- Cleanup Bun loader code [#1291]
- Self-test to check Civet can build itself [#1292]
- Upgrade TypeScript to 5.5 [#1294]
- MaybeNested expressions [#1295]
- Pipe to dynamic import [#1275]
- Added a cache based on mtime for watch/serve mode in esbuild [#1276]
- Fix async detection in a few cases [#1278]
- Replacing some instances of __ with stricter whitespace checking [#1279]
- Fix source-map-support import with new NodeJS register [#1265]
- Update Civet and use try..else feature [#1266]
- Fix empty block in pattern matching with implicit return [#1268]
- Fix empty then clause in if expressions [#1269]
- Fix hoistDec within if expression [#1270]
- Revamp automatic async and generator, operator support [#1271]
- Sourcemap fix, show diagnostics with nonfatal parse errors [#1272]
- Use {} for empty if and else blocks [#1245]
- Argument magic with
coffeeDo
[#1246] - Fix source mapping for AtThis identifier (#1250) [#1252]
- Generous matching of --version, --help [#1259]
- Upgrade Playground to modern Prettier [#1256]
- Invalid command-line argument handling [#1257]
- Fix ASI by handling tokens [#1260]
- Fix iteration expression unwrapping in splice assignment [#1261]
- Error nodes, ParseErrors get source-mapped location [#1262]
- Fix complex negative property access [#1263]
- Fix
.#x
[#1237] - Config file and
parseOptions
support in unplugin, more config filenames, config docs [#1243]
- Allow EmptyStatement in ClassBody [#1226]
- Fix preprocessing of declaration conditions [#1227]
try ... else
blocks [#1229]- Declaration inside unless/until adds declaration after block [#1228]
- Fix duplicate property merging for props not actually bound [#1232]
- Ampersand fixes [#1233]
- Avoid expressionizing statements in fat arrow functions [#1221]
- Use context's globals instead of serializing there [#1220]
- comptime else blocks, else refactor [#1222]
- Avoid implicit return when block guarantees exit [#1211]
- ESLint plugin [#1205]
- Duplicate helpers in comptime blocks [#1212]
- Better require error messages in comptime [#1214]
- CLI avoid errors when output pipe gets closed [#1213]
- Don't emit newlines before block prefixes [#1216]
throws
can specify exception; ParseErrors type; bug fixes [#1217]- eslint: comptime for version, assert instead of with [#1218]
- More comptime [#1219]
- Use
is like
in some cases [#1208] - Improve log feedback in VSCode plugin [#1209]
- Async compile API with
comptime
, supportrequire
incomptime
[#1186] - Add LSP warning about using dev Civet [#1210]
- Fix handling of empty arrays and objects in patterns [#1202]
(is like ...)
section, documentis not like
[#1203]
- First version of comptime (synchronous, no outer scope) [#1180]
- Faster and robust config searching via
readdir
instead ofopendir
[#1183] - Insert "function" into ES6 methods [#1184]
- Allow empty body in loops, if/else, do, comptime [#1187]
- Fix comptime negative zero [#1190]
- Serialize typed arrays and well-known symbols [#1188]
- Comptime
Object.create null
[#1192] - Comptime classes and generators [#1194]
- Comptime function properties [#1196]
- Comptime URLs [#1197]
- Handle property descriptors (incl. getters/setters) in comptime [#1198]
- "is like" pattern matching operator [#1199]
- Optional ?:: for coffeePrototype [#1193]
- Pattern matching fixes [#1200]
- Assignment operator sections [#1174]
- Fix & in applied (operator) [#1175]
- Upgrade CI to Node.js 20 [#1178]
- Limit & to return/yield; support indented yield argument [#1177]
- Brace block improvements, including
&
statements [#1179]
- New ampersand proposal (#1070) [#1159]
- BREAKING CHANGE:
&
now represents the identity function, while(&)
is a two-argument function computing Boolean AND.&
functions also get wrapped higher than before, allowing for growth on the left instead of just the right.
- BREAKING CHANGE:
- Fix #1155 by consolidating trailing member access [#1163]
- Remove old experimental coffee2civet and add bun-civet to ignored coverage [#1164]
::#
type withcoffeePrototype
[#1166]- Infinite loop detection and no return [#1165]
- Pipe assignment to index [#1167]
- Improve ASI algorithm [#1170]
- Keep
new
inside partial function [#1171]
- Simplify quoteString for code coverage [#1156]
- Fix unary negated literal with unary post [#1154]
- Preserve Vite's default extensions [#1157]
- Late arrow functions like late assignments [#1142]
- Fix ASI bug caused by unstructured blockPrefix [#1143]
- Add missing unary numeric and undefined pin patterns in
switch
(#1043) [#1144] - Fix relational chains [#1146]
- Infinite range
[x..]
[#1148] - Partial application placeholders [#1151]
- Astro integration based on Vite plugin [#1153]
- Don't treat double colon as colon [#1136]
- Optional dot before
#
[#1137] - Prevent
...
as array element in right-hand side [#1138] - Missing insert return after pattern matching statement [#1141]
- Nonnull checks in assignment conditions [#1140]
- Hoist declarations out of async wrapper and other cleanup [#1133]
- Modern NodeJS register and CLI require/import fixes [#1128]
- Dynamic import declarations and expressions [#1130]
- Signed number literal types, including dropping + [#1119]
- TS override support [#1120]
- Fix #54 - Optional chain in assignment lhs [#1117]
- Fix #1098 - if containing for IIFE [#1103]
- Fix #1096; Fix #1105; Special operators in assignment rhs [#1106]
- Fix #1100 - pipe inside StatementExpression [#1104]
- Fix #1107 - pipe to as in JS mode [#1108]
- Pattern matching array length type guard (#1075) [#1089]
- Fix
get #
(#1087) [#1088] export from
type attributes (#1091) [#1093]- RestoreAll within template substitution / CoffeeScript interpolation [#1095]
- For loop over character range (#1097) [#1099]
- Pipe to unary word ops; await ops (#1065) [#1069]
- Strings at start of file followed by pipe or access are not prologues [#1068]
- Sourcemap improvement [#1067]
- Semicolon before
return.value
when piping (#1048) [#1071] - Added comment to forwardMap [#1073]
- Eliminate dead code [#1072]
- Don't wrap StatementExpressions in IIFE in declaration (#202) [#1074]
- Added support for nested statement expressions [#1076]
- Statement expressions [#1077]
- Improve forward source mapping, fix
if const
tooltips (#1053) [#1059] - Fix Playground around top-level await [#1060]
- Fix
async
iteration expressions (#1058) caused by performance opt [#1063] - Add
#
length shorthand #909 [#1062] - Allow arguments to property bind [#1064]
- Add
as tuple
[#1066]
- Force emitting dts files in unplugin [#1055]
- Tell Vite virtual module during dependency scanning [#1056]
- Properly escape newlines in multi-line strings (#1047) [#1049]
- Typechecking allows for extra dependencies beyond build [#1052]
- Suppress ESLint
no-cond-assign
withif const
etc [#1051] - Add esbuild unplugin to Vite's optimizeDeps [#1054]
- Snapshots similar to how Vue language tools does [#1042]
- log diagnostics timing [#1045]
- Non-transpiled files weren't being added to the path map causing them… [#1044]
- Don't relativize paths in unplugin [#1046]
- Avoid double semicolon in then clause [#1041]
- ignore coverage for parser/types.civet [#1032]
- Working towards discriminated union for nodes and type predicates for traversal [#1033]
- Automatic TS jsx setting in unplugin and CLI [#1039]
- More custom operator precedence [#1038]
- Split lib.civet into many files [#1026]
- Fix CLI typecheck import mapping [#1030]
- xor precedence above || [#1029]
- Custom operator precedence [#1031]
- Typechecking CLI [#1023]
- Fix #900 - Declaration condition in switch statements w/ nested binop [#1024]
- Made some more progress on internal typings [#1025]
- Cleanup non-null assertion handling [#1027]
- Pipe new [#1008]
- Fix #947 - Better const function semantics [#1009]
- Fix hasProp type [#1011]
- Unary prefix and postfix in braced literal shorthand [#1014]
- Support extends shorthand in type parameters [#1015]
- Add type assignment shorthand [#1018]
- Recognize indentation of type alias [#1019]
- Fix #1002 - Allow postfix loops, etc. in declarations [#1017]
- Fix #998 - Properly handle void async generators and iterators [#1020]
- Fix #959 - Don't duplicate comments when hoisting refs [#1022]
- Fix triple slash in pattern matching switch [#991]
- Report error nodes in LSP [#992]
- Update code around pattern matching to civet style [#993]
- Consistent arrow vs. pipe precedence [#994]
- Avoid implicit returns from fat arrows [#996]
- Allow multiple props per line in implicit object literals [#997]
- Don't create empty var decs with auto-var [#1000]
- Fix cached node mutation when removing trailing comma from rest property [#1001]
- Fix private field glob getters [#977]
- Fix spread bug extracted from lib.civet [#982]
- export default shorthand [#981]
- perf-compare improvements [#983]
- Allow enums on one line [#980]
- Fix TS infer, extends, typeof [#986]
- Support "Error" nodes in Playground [#987]
- Typed ampersand function improvements [#969]
- Fix concatAssign for arrays [#972]
- TypeScript's
import ... = require(...)
andexport = ...
[#975] - CLI import rewriting, --civet option, cleanup [#974]
- Nested vs. implicit vs. inline object literals [#976]
- Port CLI to more modern Civet [#950]
- Fix ASI with one-argument (+) application [#960]
- Allow return.value in pipeline [#961]
- Allow return type annotation in getter shorthand [#962]
- Fix object getters with globs [#964]
- Operators as functions via parens [#948]
- Add em dash for decrement [#953]
- Cleanup Call arguments AST, fix (+) processing [#955]
- Test validity of JS/TS outputs via esbuild parsing [#932]
- Shorthand for type indexed access [#945]
!op
shorthand fornot op
[#946]
- TS typeof allow for arbitrary expressions, not just types [#935]
- Fix ASI with pipes [#937]
- Fix array of objects type [#936]
- Fix optional property access shorthand [#931]
- Fail on TypeScript errors, or specified types [#928]
- Wrap thick pipes in parens [#916]
- Support TypeScript
paths
alias [#921] - LSP support importing directories with index.civet [#923]
- LSP pass on more completion info [#924]
- Fix ts: 'tsc' behavior around sourcemaps [#926]
- Use .tsx extension for TypeScript type checking [#927]
- as! T [#896]
- ++ concat operator [#898]
- ++= concat assignment [#899]
- Optional let declarations [#902]
- Optional function return types [#904]
- Conditional types via if/unless [#905]
T?
→T | undefined
;T??
→T | undefined | null
[#908]- Extends shorthand
<
and negated forms [#907] - Added (+) binary op to function shorthand [#912]
(foo)
for custom operatorsfoo
[#914]
- Fix unplugin emitDeclaration and Windows behavior [#895]
- Use .-1 notation in Civet source [#879]
- Update font; tagline [#880]
- docs: Revise tagline, opening paragraph, and purple [#882]
- Allow arbitrary unary operators before ampersand function notation [#883]
[a ... b]
is a range,[a ...b]
is implicit call [#884]- Stricter unary operators (before &) [#886]
- Fix ASI before ranges [#890]
- Update docs style [#871]
- Color tweaks to improve contrast [#874]
- Fix while(cond) without space [#875]
- Omit obviously unreachable breaks from switch [#876]
- Support x?.-1 and other optional fancy accesses [#877]
- svg backgrounds [#878]
- Fix implicit generators in assigned -> functions [#865]
- Omit return with Iterator/Generator<*, void> type [#866]
- Handle labeled loops [#867]
- Add angle brackets to surroundingPairs [#868]
- handleHotUpdate to fix Vite HMR (watch in dev mode) [#860]
- Support implicit .civet importing unless implicitExtension: false [#859]
- Fix #833: Add newline after trailing comment in implicit braced blocks [#851]
- Fix #853: catch clause with extra space [#856]
- Fix #850: Wrap parens around thick pipes with refs in declarations [#855]
- Fix sourcemap issue in unplugin (#846) [#857]
- Add bracket/comments matching to vscode plugin [#835]
- Allow multiple patterns over multiple lines with comma [#838]
- Fix #839: for each of declaration with auto-let [#841]
- Import attributes [#848]
- Fix special relational operator precedence [#843]
- Generalize pin expressions to allow x.y and ^x.y [#834]
- Fix unplugin Typescript builds and update API [#810]
- Fix snug
x<y
[#830] - Fix #72. Reset service when tsconfig changes [#807]
- Fix Promise in non-async function [#815]
- Indented function parameters [#816]
- Assignments in & functions [#817]
- Type arguments in template literals [#820]
- Check for existence of absolute path in unplugin [#797]
- Added references to lsp [#801]
- Update xor typing [#799]
- Fix #705 [#802]
- Forbid comma operator in one-line thin arrow functions [#795]
- Fix #704; better open paren whitespace handling in type declarations [#796]
- Fix #792: TryExpression in conditional declaration [#793]
- Update more parent pointers along the way [#794]
- unplugin calls addWatchFile [#780]
- Simpler implementation of comments near Civet directives [#790]
- Allow -.1 as decimal literal [#788]
- Allow comments near Civet directives [#783]
- Fix unplugin path resolution (#774) [#786]
- Transform Vite HTML imports for Civet [#785]
- unplugin transformInclude to avoid transforming unrelated files [#784]
- Perf4 [#772]
- Fix #755: ampersand blocks with coffee compat [#777]
- Default type for
return
declaration [#778] - Fix #643 [#781]
- fixed line continuation edge case [#768]
- refactor property access patterns; 0.7% perf improvement [#770]
- Perf3 [#771]
- Allow newline before ...rest parameter [#761]
- Parenthesize if expressions, remove other excess parens [#762]
- ~10% perf boost by adding some short circuit assertions [#764]
- Make ts-diagnostic.civet independent of vscode dependencies [#766]
- Fix #715; Parens around update assignments [#748]
- Mild opt [#749]
- Fix indexOf type signature [#752]
- Support comments before directives [#754]
- Remove common indentation of triple quotes [#758]
- properly encoding js import source [#736]
- Fix #522: default to JSX preserve for ts config in LSP [#739]
- LSP Build refactor [#737]
- basic parser tracing [#721]
- Fix go to definition [#738]
- convert build to civet style [#740]
- Unbundled only works in debug mode [#741]
- Fix #733; Allow postfixed expressions in array literals [#746]
- Fix #743; Paren-less for expression with more complex increment [#747]
- Files for testing bun plugin [#725]
- Fix #714 [#724]
- Fix 'not in' after logical binop [#729]
- Fix #726: declaration condition in switch [#728]
- Fix #104: correct syntax highlight for '.=' [#730]
- Add type-checking to unplugin [#689]
- docs: Fix bun plugin link [#731]
- sourcemap fix [#734]
- Cli update [#735]
- Fix #503: TS
using
[#722]
- Unify pattern matching and declaration conditions [#717]
- Fix #629: Unary op with late assignment [#716]
- Reference [#685]
- get/set method shorthand [#637]
- Warning-free hack for ergonomic require of cjs esbuild plugin [#718]
- Fix #719: existential property glob and get/set shorthand with existential glob [#720]
- Underflowing arrays is a perf killer [#711]
- Fix #702: assignment dec in postfix if [#703]
- Fix #701 [#710]
- Fix #691: unary not with existential [#709]
- Fix #699 void arrow functions shouldn't implicitly return [#700]
- Fix #692: proper handling of re-alaised binding properties [#698]
- Fix #695; consolidate method and function returns [#696]
- Fix #504; single binding pattern parameter arrow function shorthand [#697]
- Fix #684: Add support for TypeScript /// directives [#686]
- Document unplugin [#675]
- Add nextjs unplugin example [#676]
- New try at indented application [#677]
- Convert to more Civet-y style [#683]
- Fix
/*...*/
after dot in access [#679] - Fix objects immediately inside braced blocks [#680]
- Fixes #682; Fixes #653; Improved arrow function const assignment [#687]
(&)
identity function shorthand [#688]
- 🐈🐈🐈 [#657]
- Added void to improve types and opt out of implicit returns [#672]
- Add missing semicolon after one-line
if
branch [#671] - Fix hoisting of implicitly returned
function
[#673] - Fix implicit function calls with spread on following line [#674]
- Fix arrow function body closed by closing parenthesis [#670]
- Add civet unplugin [#632]
- Fix #564 Implement basic const enums in --js mode [#654]
- Initial auto-const [#649]
- Fix #639 hoistable thick pipe ref decs [#651]
- Fix #640 implicit return of const function declarations [#652]
- Updated the Bun-related how-to [#646]
- Postfix expressions inside indented implicit object literals [#630]
- Postfix expressions inside inline object literals [#631]
- Added private this shorthand. Fixes #633 [#636]
- source/lib.js -> source/lib.ts [#638]
- for own..in [#644]
- Fix tuple-matching behavior [#608]
- Forbid binary op after newline within SingleLineStatements (e.g.
then
) [#612] - Remove forbidMultiLineImplicitObjectLiteral [#613]
- Revamp braced object literals [#614]
- Revamp array literals [#617]
type
declaration without=
[#611]- Cache fix for function calls within inline objects [#618]
- Fix implicit return with switch+then [#620]
- Unify Samedent/Nested, and other indent cleanup [#619]
- Implicit returns of (last) declaration [#606]
- BREAKING CHANGE:
x := 5
now implicitly returnsx
- BREAKING CHANGE:
- TypeScript named tuples [#604]
- Allow ?: with named elements in tuple types [#605]
- Possessive object access [#603]
switch
fixes [#594]- Support indented RHS after binary op [#600]
- No implicit return from async function: Promise [#601]
- autoVar/autoLet should treat
=>
and methods same as functions [#602]
- Fix export functions getting implicit empty blocks [#592]
- Fix inner assignments mixed with operator assignments [#585]
- Allow trailing CallExpression after ExpressionizedStatement [#584]
- Existence operator chaining and cleanup [#578]
- Arrow function types fixes:
abstract new
andasserts
/predicates [#580] - Fix weird custom operator behavior [#581]
- Forbid implicit calls with braced argument in extends/if/else/for/when/case [#576]
- Fix nested object with function children (caching) [#577]
- Fix empty objects in if statements [#571]
- Fix binary ops RHS in pattern matching switch [#575]
- Fix missing closing braces [#574]
- Add missing parentheses to glob assignments with refs [#567]
- Support TypeScript optional methods [#568]
- Support new arrow function types [#569]
- Function implicit bodies [#542]
- Fix implicit calls with bind and decorators [#545]
- Fix readonly support in interfaces [#546]
- Small whitespace fix for trailing splat [#524]
- Support splats in type tuples [#521]
- x@y and @@x bind shorthand, plus JSX fixes [#506]
- JSX unbraced @ and @@ shorthand [#507]
- JSX braceless call/member/glob expressions [#508]
- Call splice method directly [#499]
- Fix sourcemap support from CLI [#498]
- Remove tsx after ESM transpilation [#500]
- Fix implicit async/* in functions with arguments [#501]
- Indentation after await operator [#475]
- CLI can run ESM scripts via import [#477]
- Inline implicit object literals can't end with comma [#479]
- Link to Civetman [#450]
- Fix regression in indented application from decorators change. Fixes #434 [#435]
- New top-level statement system [#414]
- Call with unparenthesized iteration expression argument [#411]
- async do, async for [#402]
- Improve ligature toggles [#404]
- Leave plain JSX strings alone, including newlines [#408]
- enum support [#410]
- Fix automatic async vs. pipe invocations [#401]
- Move Philosophy to civet.dev [#394]
- Prevent indented application in Coffee for loops [#396]
- Forbid indented application in first line of array literal [#397]
- Automatically await/async expressionized statements with await [#399]
- do expressions wrapping in iffe [#376]
- Write an intro to Civet for the front page [#386]
- Update Hero.vue [#392]
- TypeScript non-null declarations [#393]
- return.value and return = [#364]
- Trailing member properties in blocks [#368]
- Declare and update return.value [#366]
- Allow label argument in break and continue [#363]
- Allow assignments and update operators within assignments and update operators ++/-- [#353]
- Support for labeling statements [#354]
- Cleanup flag stacks, re-allow stuff inside parens/brackets/braces [#356]
- Prevent
case:
from implicit object literal [#357]
- Inner assignments within assignment chains [#348]
- Test helper
throws
supports description and --- [#349]
- Switch prelude declarations from const to var [#344]
- Spreads in object globs [#343]
- Pipelines lower precedence than implicit arguments [#347]
- Support hex and other numbers in ranges [#345]
- xor/^^ and xnor/!^ operators [#340]
- Improve super property support [#326]
- Tagged string literals become tagged template literals [#322]
- Function fixes [#323]
- typeof shorthand [#325]
- operator= assignment [#301]
{x[y]}
shorthand for{[y]: x[y]}
[#284]- Require space in JSX after identifier or ...rest attribute [#285]
not instanceof
,!<?
, reservenot
[#286]
- Integer property access [#283]
<:
shorthand for implements [#275]- Braced object literal shorthand [#276]
- Property access with string literals [#278]
- Insert semicolons between lines that JS would combine [#277]
- Contributing document for getting started with Civet [#255]
- New fast JSX parser [#235]
- Fix CLI behavior especially on Unix [#232]
- Gulp plugin [#206]
- Synonyous -> synonymous [#180]
- Create directory in
-o
option if it doesn't exist [#164]
- Fix for nested JSX if else expressions [#133]
- Caching [#14]
- Add script for testing compatibility with CoffeeScript [#7]
- Rewrite cli to use readline interface [#6]
- Coffee comprehensions [#4]
- Auto var [#3]
- Transpilation overhaul [#1]