- fix issue on Windows where absolute path starts with two backslashes
- fix extends within a loop.
- fix: don't try to read absolute urls
- add sync api for #230 #691 #151
- fix unsuppressed comments in nested imports
- fix #911 Percentage calculation value not copied
- add support for rounding precision
- fix extends with parent reference. Closes #879
- fix importing of files with ".css" in the dirname
- fix #619 Support slash in media
- fix #819 Extends generate duplicate selectors
- fix #807 directory with
.styl
in the name and local install of stylus - fix #814 Add property function with media query
- fix #828 Add 'x' unit for image-set (synonym to dppx).
- fix #834 Percentage calculation not used when value is expression
- fix mozdocument nodes not getting visited during imports. Fixes #853
- add @-moz-document to the lexer and parser. Fixes #436
- add --import for issue #485
- fix @property lookup when a sibling is null
- fix 'limit' file size option that was broken in 61a2cf
- fix pseudo-selector properties. Closes #808
- add more features to the textmate bundle [paulmillr]
- add
json()
BIF for loading variables from JSON files [geddesign] - fix for #790 allow trailing colon, comma etc in // comments [geddesign]
- fix extend in mixin. Closes #747, #748 and #751
- fix @media cloning
- add suffix to
basename()
BIF - add
pathjoin()
BIF - add
basename()
BIF - add
dirname()
BIF - add
extname()
BIF - fix
@extend
in mixin. Closes #638
- Adding list of all css3 units
- Fixed CSS to stylus conversion
!important
support - Fix last rule being ignored if empty indents at the end of the file
- Fixes #425: Compiler hangs when the last property isn't followed by semicolon at the end of the document
- Fixes #435: Can't concat array inside url()
- Fixes #698: incorrect function call within for with named argument [Tõnis Tiigi]
- Fixes #676. Stylus incorrectly imports the .css files that are not in the same folder as the processed .styl file
- Added
add-property()
mixin support [jasonkuhrt] - Added % support for
fade-in()
andfade-out()
[jasonkuhrt] - Added % support to
rgba()
[jasonkuhrt] - Fixed
.import()
- previously failed to mixin
- any node. Closes #657
- Added BIF shift [gravof]
- Added BIF pop [gravof]
- Added support for @media bubbling properties [Ian MacLeod]
- Changed: strip trailing zeros [gravof]
- Added
make test-cov
- Added temporary multiline support.
- Added: allow for '%' unit type in the 'alpha' of rgba and hsla [jasonkuhrt]
- Updated cssom dep
- Removed growl dep. Closes #583
- Fixed BIF retval coercion
- Fixed issue #390, nested @media
- Added
mix()
BIF (docs needed) - Added: cast return values from js functions
- Fixed binops in mixin selectors. Closes #566
- Fixed
opposite-position()
pass through "center"`
- Added
Renderer
"end" event - Added: cast return value from js-functions
- Cleaned up documentation grammar etc [Zearin]
- Fixed postfix conditional cloning. Closes #535
- Fixed idents prefixed with several hyphens. Closes #536
- Fixed up the TextMate bundle syntax [ianstormtaylor]
- Fixed underscore in function identifier. Closes #524
- Fixed @extends inheritance bug. Closes #499
- Fixed 'lineno' global leak due to missing
new
[teppeis]
- Fixed
--watch
working on windows with a temporary hack [dciccale] - Fixed @extend with no properties. Closes #498
- Added: allow newlines in place of commas for keyframes
- Fixed: skip comment newlines between keyframe positions. Closes #504
- Fixed @keyframes support for multiple values. Closes #503
- Added
@extend
. Closes #149 - Added more syntax highlighting to TextMate bundle [paulmillr]
- Added
keys(pairs)
andvalues(pairs)
BIFs - Added JavaScript object coercion support
- Added JavaScript -> Stylus node coercion utilities
- Fixed
.define()
ing of functions - Fixed
stylus(1)
repl for 0.6.x
- Fixed literal / within function call. Closes #432
- Fixed space after
)
in selectors. Closes #449
- Added unit casting, ex:
(n * 5)%
. Closes #285
- Added global leak detection to the test suite
- Fixed two globals
- Fixed operator ident regression. Closes #292
- Added
--include-css
to literally include imported CSS. Closes #448 - Fixed coercion bug with expression. Closes #480
- Fixed middleware
mkdir -p
support
- Fixed
or
binop regression. Closes #475
- Fixed current-property with commas. Closes #472
- revert noop visitor methods, this breaks extensions
- Fixed css-style @page support
- Fixed @page block evaluation
- Fixed @font-face block evaluation [Suor]
- Added "include css" setting (need docs) to literally include imported css. Closes #448
- Added EOL escape. Related to #195
- Fixed tab support in lexical analysis (trailing colors etc). Closes #460
- Fixed "in" within selectors. Closes #458
- Added
spin()
BIF (same ascolor + 50deg
etc) - Removed "sys" require()s for 0.6.x
- Fixed sibling property lookup bug. Closes #452
- Fixed: retain original quote for strings
- Added property lookup bubbling support. Closes #446
- Added "indent spaces" compiler setting. Closes #445
- Allow node > 0.4.x < 0.7.0
- Fixed: allow function execution within @imports
- Added #n support (#e -> #eeeeee). Closes #430
- Added #nn support (#ef -> #efefef)
- Added support for rgb percentages.
- Fixed property rendering in blocks. Closes #440
- Added
@scope <selector>
feature to scope all subsequent selectors - Added list equality to the
!=
operator - Added list equality to the
==
operator - Added mkdir -p support to the middleware
- Changed:
!
coerces expression not the first value - Fixed Ternary boolean coercion. Closes #420
- Fixed @font-face @import regression. Closes #418
- Added
mkdir -p
support to the middleware - Added
@import url(string)
support. Closes #352 - Added
fade-in()
andfade-out()
BIFs - Adding prefixes for Opera and IE
- Fixed comments trailing @media. Closes #415 [guillermo]
- Fixed: Output from --help in stylus executable cut-off half way through
- Changed: treat -/+ operations with percentages as lighten()/darken(). Closes #401
- Fixed
String#coerce()
for Expressions
- Added
-U, --inline
to stylus(1) - Added
rem
support. Closes #395 - Fixed @charset semi-colon. Closes #400
- Fixed infinite loop in
Parser#function()
. Closes #393
- Added alias
:=
of?=
. Closes #389 - Removed auto-prefixing of pseudo element selectors. Closes #385
- Changed: when left-hand operand has no unit assign the right
- Fixed @keyframes with @import regression. Closes #372
- Fixed css @import within blocks regression. Closes #388
- Fixed unwrapping of property args expression. Closes #379
- Fixed @prop access scope issue, use closet block, not current
- Fixed @font-face. Closes #375
- Added pseudo-element vendor expansion support
- Added
@keyframe
expansion support. Closes #293 - Added support for arbitrary
@-VENDOR-keyframes
support - Added support for
@property
mixin property access Closes #363 - Added
/*!
support to comments to disable suppression - Changed: allow uses to append
.styl
when importing. Closes #366 - Fixed paren matching issue. Closes #368
- Fixed windows absolute path checking Added
utils.absolute(path)
- Fixed
Ident#clone()
with.property
flag - Fixed evaluation of expression when using @name. Closes #361
- Fixed
path.join()
usage inutils.lookup()
. Closes #356 - Fixed space after comment regression. Closes #360
- Adding
Renderer#get(option)
- Added the ability to reference property values with
@<name>
. Closes #344 - Changed comment output. css-style multi-line comments are preserved
- Fixed issue with bools in selectors. Closes #280
- Added firebug original file / line number mapping [parallel]
- Added support for
#rgba
and#rrggbbaa
color formats - Changed: fix alpha to a scale of 2
- Fixing function param check to allow for empty function arguments
- Fixed
lighten()
BIF 'lighten by %' function push color closer to white [cwolves] - Fixed cli plugin usage absolute paths, don't prepend the CWD [cpojer]
- Renaming 'import' to '_import' because import is a reserved word in node v0.5
- Added
PI
and-math-prop(name)
- Added
cos()
andsin()
- Added support for SVG data URIs [mhemesath]
- Rename variable "import" to "imported" [eegg]
- Added
js(str)
BIF - Fixed reserved keyword
import
withimported
- Added
@-webkit-keyframes
support. Closes #307 - Added gedit language-spec
- Changed: optional
growl
dep for stylus(1) - Changed:
require("stylus")
instead of../
for the mac app integration
- Fixed middleware handling of new and removed
@import
s [brandonbloom]
- Added Compile and Display CSS TextMate command (⌘B) [Daniel Gasienica]
- Fixed caching behavior for recompilation of files with changed imports [Brandon Bloom]
- Added padding for error linenos so they line up
- Improved unary op error messages
- Improved invalid
@keyframes
ident error msg - Fixed HSLA regression for operations resulting in a bool. Closes #274
- Fixed
arguments
issue with excluding defaults. Closes #272
- Fixed colors after
url()
call regression. Closes #270
- Fixed colors in
url()
. Closes #267 - Fixed selector without trailing comma containing selector token. Closes #260
- Added
-u, --use PATH
flag for utilizing plugins - Fixed
hsla.clampDegrees()
with negative values [Bruno Héridet]
- Added support for underscore in identifiers. Closes #247
- Fixed
@keyframe
block evaluation. Closes #252
- Fixed
0%
in@keyframes
from becoming0
when compressed. Closes #248
- Fixed issue with
^=
attr selector causing infinite loop. Closes #244 - Fixed multiple occurrences of
&
in selectors. Closes #243
- Fixed spaces around line-height shorthand. Closes #228
- Fixed
-{foo}
interpolation support. Closes #235
- Added
*prop: val
hack support (blueprint / html boilerplate etc parse fine now) - Added selector interpolation support
- Fixed "-" within interpolation. Closes #220
- Added
SyntaxError
andParseError
- Removed
stylus.parse()
- Fixed error reporting. Closes #44
- Fixed mutation of units when using unary ops. Closes #233
- Fixed regression. Closes #229
- Fixed issue with large selectors spanning several lines
- Added support for
Renderer#define(name, node)
to define a global
- Added
Renderer#use(fn)
. Closes #224 - Improved
utils.assertType()
error message; include param name
- Fixed: node.source and node.filename are writable
- Added / employed
Null#isNull
- Added / employed
Boolean#is{True,False}
- Removed all uses of
instanceof
- Removed all equality checks between singleton nodes
- Added
Arguments#clone()
- Added
push()
/append()
- Added
unshift()
/prepend()
BIFs
- Fixed: keyword args previously not evaluated
- Fixed: subpixel support
- Fixed bug preventing combinators (and other ops) in
@media
blocks. Closes #216 [reported by jsteenkamp]
- Added
Renderer#include(path)
. Closes #214 - Fixed
@import
path resolution bug. Closes #215 - Fixed optional keyword arg bug. Closes #212
- Fixed regression preventing commas from outputting
- Added
HSLA#add(h,s,l,a)
- Added
HSLA#sub(h,s,l,a)
- Added
RGBA#add(r,g,b,a)
- Added
RGBA#sub(r,g,b,a)
- Added
RGBA#multiply(n)
- Added
RGBA#divide(n)
- Added
HSLA#adjustHue(deg)
- Added
HSLA#adjustLightness(percent)
- Added
HSLA#adjustSaturation(percent)
- Added
linear-gradient()
example - Added
s(fmt, ...)
built-in; sprintf-like - Added
%
sprintf-like string operator, ex:'%s %s' % (1 2)
- Added
current-property
local variable - Added
add-property(name, val)
- Added the ability for functions to duplicate the property they are invoked within
- Added
[]=
operator support. Ex:fonts[1] = arial
,nums[1..3] = 2
- Added
-I, --include <path>
to stylus(1). Closes #206 - Added support for
50 + 25% == 75
- Added support for
rgba + 25%
to lighten - Added support for
rgba - 25%
to darken - Added support for
rgba - 25
to adjust rgb values - Changed: null now outputs "null" instead of "[Null]"
- Fixed hsl operation support, all operations are equivalent on rgba/hsla nodes
- Fixed degree rotation
- Added keyword argument support
- Added
Arguments
node, acts likeExpression
- Added
utils.params()
- Added
debug
option to stylus middleware - Added support for
hsl + 15deg
etc to adjust hue - Added special-case for percentage based
RGBA
operations (#eee - 20%
) - Changed: right-hand colors in operations are not clamped (
#eee * 0.2
) - Added support for
unit * color
(swaps operands) - Fixed color component requests on the opposite node type (ex red on hsla node)
- Fixed
Expression#clone()
to supportArguments
- Fixed issue with middleware where imports are improperly mapped
- Fixed mutation of color when adjusting values
- Fixed: coerce string to literal
- Removed {
darken
,lighten
}-by()
BIFs
- Removed a
console.log()
call
-
Fixed connect middleware
@import
support. Closes #168 The middleware is now smart enough to know when imports change, and will re-compile the target file. -
Changed middleware
compile
function to return theRenderer
(API change)
- Added
-i, --interactive
for the Stylus REPL (eval stylus expressions, tab-completion etc) - Added link to vim syntax
- Changed
p()
built-in to display parens - Changed
--compress -C
to-c
, and-css -c
is now-C
- Fixed: preserve rest-arg expressions. Closes #194
- Fixed
*=
in selector, ex[class*="foo"]
- Fixed
--watch
issue with growl, updated to 1.1.0. Closes #188 - Fixed negative floats when compressed. Closes #193 [reported by ludicco]
- Added postfix
for
-loop support. Ex:return n if n % 2 == 0 for n in nums
- Added support for several postfix operators
Ex:
border-radius: 5px if true unless false;
- Added
last(expr)
built-in function - Added
sum(nums)
built-in function - Added
avg(nums)
built-in function - Added
join(delim, vals)
built-in function - Added
Evaluator#{currentScope,currentBlock}
- Added multi-line function paramter definition support
- Changed:
0
is falsey,0%
,0em
,0px
etc truthy. Closes #160 - Fixed
for
implicit return value - Fixed
for
explicit return value - Fixed mixin property ordering
- Added
RGBA
node - Added
is a "color"
special-case, true forHSLA
andRGBA
nodes. Closes #180 - Performance; 2.5× faster compiles due to removing use of getters in
Parser
andLexer
(yes, they are really slow). - Removed
Color
node - Fixed stylus(1)
--watch
support due to dynamic@import
support. Closes #176
- Fixed: allow semi-colons for non-css syntax for one-liners
- Added
isnt
operator (same asis not
and!=
) - Added support for dynamic
@import
expressions - Added
@import
index resolution support - Added
light()
/dark()
BIFs - Added
compress
option for Connect middleware [disfated] - Changed: most built-in functions defined in stylus (
./lib/functions/index.styl
) - Fixed dynamic expressions in
url()
. Closes #105
- Fixed connect middleware for 0.4.x
- Added
is
andis not
aliases for==
and!=
- Added
@keyframes
dynamic name support - Fixed units in interpolation
- Fixed clamping of HSLA degrees / percentages
- Fixed RGBA -> HSLA conversion due to typo
- Added string -> unit type coercion support aka
5px + "10"
will give15px
- Added
warn
option Closes #152 Currently this only reports on re-definition of functions - Added
$
as a valid identifier character - Added
mixin
local variable for function introspection capabilities. Closes #162 - Fixed typo:
Unit#toBoolean()
is now correct - Fixed interpolation function calls. Closes #156
- Fixed mixins within Media node. Closes #153
- Fixed function call in ret val. Closes #154
- Fixed parent ref
&
mid-selector bug. Closes #148 [reported by visnu]
- Fixed
for
within brackets. Closes #146
- Fixed single-ident selectors. Closes #142
- Fixed cyclic
@import
with file of the same name. Closes #143
- Added stylus(1) growl support when using
--watch
- Added
@import
watching support to stylus(1). Closes #134 - Changed: stylus(1) only throws when
--watch
is not used - Fixed
darken-by()
BIF - Fixed
@import
literal semi-colon. Closes #140
- Fixed evaluation of nodes after a return. Closes #139
-
Added
stylus(1)
direct css to stylus file conversion [Mario] For example instead of$ stylus --css < foo.css > foo.styl
you may now either$ stylus --css foo.css
or provide a destination path$ stylus --css foo.css /tmp/out.styl
. -
Added postfix conditionals. Closes #74 Expressive ruby-ish syntax, ex:
padding 5px if allow-padding
.
- Added
in
operator.3 in nums
,padding in props
etc - Added
Expression#hash
, hashing all of the nodes in order - Added tests for conditionals with braces. Closes #136
- Fixed ids that are also valid colors. Closes #137
- Fixed spaces after
}
with css-style. Closes #131 - Fixed single-line css-style support. Closes #130
- Fixed mixin property ordering. Closes #125
- Added
lighten-by()
BIF - Added
darken-by()
BIF
- Added support for function definition braces
- Fixed issue with invalid color output. Closes #127
- Added css-style syntax support
- Fixed support for
*
selector within@media
blocks
- Fixed property disambiguation logic. Closes #117
You no longer need to add a trailing comma when
chaining selectors such as
td:nth-child(2)\ntd:nth-child(3)
- Added more assignment operators. Closes #77
+=
,-=
,*=
,/=
, and%=
- Fixed
--compress
when passing files for stylus(1). Closes #115 - Fixed bug preventing absolute paths from being passed to
@import
- Fixed
opposite-position()
with nested expressions, unwrapping - Fixed a couple global var leaks [aheckmann]
-
Added:
url()
utilizing general lookup paths. This means that{ paths: [] }
is optional now, as lookups will be relative to the file being rendered by default. -
Added
-w, --watch
support to stylus(1). Closes #113
- Added
opposite-position(positions)
built-in function - Added
image-lookup(path)
built-in function - Added
-o, --out <dir>
support to stylus(1) - Added
stylus [file|dir ...]
support - Added: defaulting paths to
[CWD]
for stylus(1) - Changed:
unquote()
usingLiteral
node - Changed: utilizing
Literal
in place of someIdent
s
- Added optional property colon support. Closes #110
- Added
--version
to stylus(1)
- Initial release