- symmarea: New puzzle type Symmetry Area (due to Taus)
- tents: new puzzle tyep Tents (due to Lennard Sprong)
- Add cooperative network play (server side: github.com/robx/puzzld).
Release date: 2020/03/30
- araf: New puzzle type Araf (due to Giuliano Montelucci)
- balance: New puzzle type Balance Loop (due to Giuliano Montelucci)
- doppelblock: New puzzle type Doppelblock
- maxi: New puzzle type Maxi Loop (due to Giuliano Montelucci)
- midloop: New puzzle type Mid-loop (due to Lennard Sprong)
- simpleloop: New puzzle type Simple Loop
- Simplify English puzzle names.
- Change canonical names: bag becomes cave, building becomes skyscrapers.
- cave: Allow switching mouse button mode like other shading puzzles.
- creek, gokigen: Fix behavior of -,backspace in edit mode.
- juosan: Fix error highlighting when there is no majority.
- kurochute: Don't allow putting dots on clues.
- kurotto: Mark blank clues complete.
- shakashaka: Autogray complete clues.
- shakashaka: Improve triangle edge alignment.
- shwolf: Easier aux line input with right mouse button.
- triplace: Shade clue background.
- rules.html: Include player.
- keyboard: Prevent navigation using backspace, scrolling using space.
- Several UI layout fixes (including menu styling, input mode buttons).
- Split options between menu and tool area.
- Several language fixes to menu items.
- Several language fixes to answer error messages.
- Remove several options.
- Allow specifying that a puzzle is a variant.
- Don't start timer until puzzle is visible.
- Center grid dashing.
- Thinner grid lines on high-DPI displays.
- New autocheck modes: guarded (default) and unguarded.
- Shading puzzles with connected unshaded cells: Guard autocheck by requiring all cells to be decided.
- cave, nurimisaki: Switch back to shading-first puzzles.
- compass: Fix erasing clues.
- doubleback: Prohibit drawing over black cells.
- doubleback: Save empty cells to file.
- kurochute: Fix error highlighting.
- renban: Fix consecutive number error check.
- shakashaka: Fix alignment of triangles to shaded cells.
- triplace: Don't allow drawing on clues.
- walllogic: Fix redraw with autocompletion.
- yajilin: Fix interaction between edit mode and answer.
- Correct display of color-each-line config option.
Release date: 2019/12/24
- aquarium: Introduce new puzzle: Aquarium (due to Lennard Sprong)
- castle: Introduce new puzzle: Castle Wall (due to Lennard Sprong)
- compass: Introduce new puzzle: Compass
- curvedata: Introduce new puzzle: Curve Data (due to Lennard Sprong)
- dbchoco: Introduce new puzzle: Double Chocolate (due to Lennard Sprong)
- geradeweg: Introduce new puzzle: Geradeweg
- heteromino: Introduce new puzzle: Heteromino
- pencils: Introduce new puzzle: Pencils (due to Lennard Sprong)
- yajilin-regions: Introduce new puzzle: Regional Yajilin
- all moving puzzles: Prevent drawing curves.
- amibo, juosan, kurochute, kusabi, mashu, shugaku, starbattle: Reword English error messages
- ayeheya: Replace check for rectangular room by check for symmetric room
- cbblock: Add error for dead-end walls
- country: Add variant rule that allows empty areas
- heyawake: Don't autocheck until the grid is fully decided
- heyawake: Don't insist on rectangular rooms, and treat heyawacky as an alias, for consistency with pzv.jp
- kakuro: Support blank clues, distinguish between 0 and blank
- kakuro etc: Choose target triangle by click
- nanro: Don't drag number, drag "there's a number"
- slither: Allow 4 as clue number
- starbattle: Input dots in auto-mode; change style of empty cells; hide redundant dots
- tentaisho: Allow empty cells
- yajilin: Allow crossmark-input in auto-mode on right click.
- yinyang: Rework play input, removing keyboard input and cell focus.
- yinyang: Add auxiliary border input.
- Change line coloring setting to be per-variety.
- Change default value of "shade undefined cells" back to
true
. - Change unshaded cells without changing shaded cells in checkerboard puzzles with right mouse button (Hitori, Heyawake, Yajilin, etc.).
- Fix various English language typos.
- Allow clicking labels to toggle options.
- URL output properly deals with non-default ports.
- URL output generates a clickable link.
- File output puts file contents into copyable text areas.
- Improved background image rendering (crisp edges).
- Disable certain touch events (e.g., tap and drag to zoom) on puzzle applet.
- Add
embed=yes
for improved applet embedding. - Display variant rules more clearly.
- amibo, usotatami: Allow encoding multi-digit clues
- cbblock: Fix wrong error during edit
- fourcells, fivecells: No borders and connection lines between empty cells
- heteromino: Don't compare shapes of non-triminos
- kinkonkan: Fix answer check for large clues
- nagare: Allow cross input mode to remove aux marks
- nanro: Fix entering 11 and 22
- nawabari: Fix answer check for border clues
- nawabari: Correct English translation
- nawabari and related puzzles, editor: Remove answer lines from invalid cells
- nurimisaki: Switch to unshaded cell connection info for edit mode, too
- roma: Fix "Check route" input mode
- shakashaka: Allow drawing diagonal rooms around dotted cells
- tentaisho: Fix "Draft cells" input mode
- yajilin: Fix "Gray Background" button sync
- yajitatami: Fix error color for border crossing
- yosenabe: Remove lines when deleting circle, fixing buggy behaviour
- Fix interaction of "Clear Answer" and trial mode
- Don't scroll on space input
- Fix sticky undo/redo
Release date: 2019/04/22
- bag, meander, scrin: Complete Japanese translation
- loopsp: Less ugly loop ends at clue cells
- nurimisaki: When undefined cells are grayed, leave the unshaded cells white
- yajilin: Various input fixes
- yajilin: Give an error when a number has no arrow
- yajilin: Limit clue value based on grid size
- nurimisaki: Fix one-button input mode to unshade
- scrin: Disallow inner rectangle
Release date: 2019/4/17
- angleloop: Introduce new puzzle: Angle Loop
- doubleback: Introduce new puzzle: Double Back
- heyawacky: Introduce new puzzle: Heyawacky
- meander: Introduce new puzzle: Meandering Numbers
- nurimisaki: Introduce new puzzle: Nurimisaki
- satogaeri: Introduce new puzzle: Satogaeri (due to Lennard Sprong)
- scrin: Introduce new puzzle: Scrin
- Export: Support https URLs
- Language: Rework some English language messages
- bag: Rework as shading puzzle
- fillomino: Automatically draw borders between different numbers
- yajilin: Allow clues to be marked complete
- yajilin: Autocompletion for clues
- LineManager: Fix connection logic and colouring for pipelink, ringring etc.
- nurimaze: Fix broken cleared clue cells afer random key input
- tentaisho: Fix false error when placing star after drawing border in edit mode
- fivecells: Fix encoding/decoding of missing cells
Release date: 2017/7/29
- armyants: Introduce new puzzle: Army Ants
- walllogic: Introduce new puzzle: Wall Logic
- Config: Enable set autocmp and autoerr config indivisually by puzzle genre
- akari: Add autocmp config to toggle painting light
- lits: Enable autocmp config to indicate four consective shaded cells in the room
- country, nagenawa: Enable to input cross marks
- slither, bag, mejilink: Set canvas margin wider
- stostone: Change the shape of unshaded cell dots
- Encode: Fix misdecoding large number more than five digits
- LineManager: Fix regenerating line information when paths are separated
- LineManager: Fix adding or eraseing number misses regenerating line information
- fillomino: Prevent copying answer number onto question number
- slalom: Fix gate number trace routine occasionally misses proper order
- Update pzpr-canvas.js to v0.8.2 to avoid rendering bug of IE and Edge
- Graphic: Avoid SVG textLength and textAlign rendering bug of IE and Edge
- Graphic: Fix illegal rendering of indicator when graphic is canvas mode
- Graphic: Erase border on the edge when graphic is canvas mode
Release data: 2017/4/21
- lib: Update pzpr-canvas to v0.8.1 to avoid error on Opera 12
Release data: 2017/4/20
- dosufuwa: Add shade input mode
- variety: Fix "Goats and Wolves" name
- Mouse: Fix circle-unshade and circle-shade input mode
- Mouse: Merge dot input mode into objblank
- bonsan, yosenabe: Fix completion inputting routine to ensure redraw circles
Release data: 2017/4/16
- Config: autocmp_area is integrated with autocmp again. Please check
puzzle.painter.autocmp
for disambiguating autocmp type.
- Config: Change default setting of autocmp to true
Release data: 2017/4/14
- Configs: redline, redblk, redroad configs are removed. Use
puzzle.mouse.setInputMode()
instead.
- Graphic: Use narrow font for two or more length text instead of small size font
- Cell: Expand max number from 255 up to 999
- Mouse: Enable pinch-zoom for Android Chrome
- Mouse: Add various common input modes
- Mouse: Integrate dispRed routine into common input mode
- Mouse: Add mouse.setInversion method to invert mouse button
- Puzzle: Introduce 'mode' event when entering edit or play mode or after puzzle getting ready
- CellList: Prevent cross marks from erasing on subclear for usoone
- icebarn: Enable to input dir. aux. marks
- kakuru: Change display type to original Sapporo-nikolist style
- util: Listen both touch and mouse event for user agents supporting touch event
- util: Surpress plural finger tap from inputting the board
- util: Fix mouse button detection when Pointer Event is triggered
- Operation: Add ansclear history to ensure regenerate graph info
- Graphic: Separate number drawing method into for question and answer
- docs: Add InputModes.md
- package: Use pzpr-canvas on npmjs.org instead of local file
- package: Move in-publish on to devDependencies
Release date: 2017/2/13
- akari: Prevent from erasing background color for Akari
- kinkonkan: Fix outputted file data is wrong for Opera 12.17
Release date: 2017/2/8
- Mouse: Add an augument for getInputModeList function
- Mouse: Enable to input sub numbers on aux. marks by mouse for the genre View
- slalom: Regenerate gate number when the numbers or arrows are changed
Release date: 2017/1/9
- easyasabc: Introduce new puzzle: Easy as ABC
- starbattle: Introduce new puzzle: Star Battle
- kropki: Introduce new puzzle: Kropki
- building: Introduce new puzzle: Skyscrapers
- kinkonkan: Suppress painting background without sight error
- Piece: Enable to clear sub numbers by ansclear or so
- Board: Remove corner EXCells
- Cursor: Commonize some methods with Skyscrapers and Easy as ABC
Release date: 2016/12/31
- Board: Enable to input sub numbers
- bosanowa: Enable to erase circles by BS or space key
- gokigen: Enable to input diagonal lines by mouse drag
- norinori: Stop inputting shaded cells if a mouse drag sequence puts two cells
- Mouse: Introduce setInputMode and getInputModeList method for smart devices to input icebarn etc.
- Config: Separate autocmp_area from autocmp config for painting background genres (Currently autocmp can be still used)
- Config: Get rid of lrcheck config
Release date: 2016/12/3
- LineManager: Fix modified line could not reculcurate loop info for gokigen
- onsen: Add checking isolated circles for answer check
- Install in-publish to stop working prepublish hook for npm 4 or earlier
Release date: 2016/10/10
- onsen: Introduce new puzzle: Onsen-meguri
- variety: Add pzpr.genre as an alias of pzpr.variety
- moonsun: Enable to input cross marks by smartphone or tablet
- shugaku: Add an ability to input shaded cells by tap
- kakuru: Enable to input shaded cells by tap
- hakoiri: Enable to drag dots
- hebi: Make it possible to drag dots
- tatamibari: Enable to input question marks as amibo manner
- amibo: Enable to input aux. marks by tap
- bag: Make it possible to input background color regardless of bgcolor config
- tilepaint: Make it possible to input shaded cells if config.use is 2
- Graph: Add coloring property that indicates if the graph generates individual color
- AreaGraph: Prevent attaching if node has been valid before modifying info
- AreaGraph: Stop searching components unless necessary
- LineGraph: Avoid searching components when path end is attached or detached
- Graph: Prevent room info regeneration if border line does not really divide rooms
- BoardExec: Prevent errors when board.exec.execadjust is called with invalid type
- Puzzle: Fix setCanvasSize before puzzle.open() doesn't work
- Puzzle: Copy contents of init option data to avoid unexpected init option change
- Puzzle: Hide cursor if puzzle instance type is viewer
- Graphic: Change default dot color to green from black
- variety: Change some puzzle name
- stostone: Cache calculated fallen blocks position
- stostone: Stop drawing number behind fallen blocks
- stostone: Fix board.newIrowake() occurs an error
- slither, bag: Intergate bag script into slitherlink
- hebi: Change script name to hebi.js from snakes.js
- Graph: Make AreaNumBlockGraph of fillomino inherit AreaNumberGraph instead of AreaRoomGraph
- Graph: Move setting info by node, edge obj to LineGraph or AreaGraphBase
- Graph: Move calling remakeComponent to common modifyInfo method
- Graph: Set pointgroup = cross automatically if genre's board.borderAsLine is true
- Graph: Add GraphComponent::checkAutoCmp
- Graph: Integrate calling graph info updating methods
- Graph: Change when the number of lines linked to the cell is counted
- Graph: Separate initializing ltotal, lcnt method
Release date: 2016/9/18
- stostone: Tweak puzzle genre name
- stostone: Divide blocks by border lines
- stostone: Modify error descriptions and test problem
- stostone: Prevent borderline from being drawn when blocks are moving
- stostone: Set separation lines thinner when blocks are moving
- stostone: Fix the shape of the blocks when they are moving
- shimaguni, stostone: Use common routine with lits to reduce code size
- shimaguni, stostone: Use stone property instead of sblk for disambiguation
- norinori: Prevent generating unused graph object
- yinyang: Fix shaded circle is drawn gray when dispqnumbg config is true
- KeyInput: Add keyDispInfo function to show some information
- slalom: Implement show/hidegatenumber operation into board object
Release date: 2016/9/18
- stostone: Introduce new puzzle: Stostone
- Config: Add config to paint circles background for yinyang
- hanare: Add singlenum config to allow plural numbers in a room
- shugaku: Add undefcell config to paint background color of unfilled cells
- toichika, hanare: Enable autocmp config
- Graph: Validate 'irowakeblk' config to set and draw color of shaded cell blocks
- variety: Make it enable to use 'cave', 'rome' and 'bossanova' for alias
- moonsun: Set name to 'Moon or Sun' from 'The moon or the sun'
- Graphic: Set the color of lines between border lines and shaded cells brighter
- Graphic: Stop expanding chassis pos to set cells exactly square
- Graphic: Commonize color calculation functions
- Graphic: Separate drawing shaded cell routine from drawBGCells
- Graphic: Separate drawQuesCells from drawShadedCells
- Change project URL to github.com
Release date: 2016/9/3
- variety, Answer: Fix spell miss
- yinyang: Set board.disable_subclear true not to show aux. erase button
- Config: Add missing limitation for passallcell config
- arukone: Fix error drawing range and descriptions
- Graphic: Keep lines boldness regardless of irowake config
Release date: 2016/8/10
- moonsun: Introduce new puzzle: The moon and the sun
- arukone: Introduce new puzzle: Arukone
- nondango: Introduce new puzzle: Nondango
- yinyang: Introduce new puzzle: Yin-Yang
- Opeartion: Prevent trial operation from connecting to previous operation
- usoone, kurochute: Fix aux. mark on numbers can't be inputted when one button input is selected
- Graphic: Integrate some color definitions
Release date: 2016/8/2
- Avoid using
Function#bind
on account of iOS 5.1 being lack of supporting - Operation: Fix
'trial'
event should be called once and pass correct argument number - Puzzle: Change
this
of listener function fromwindow
topuzzle
so as not to refer window object in node.js environment - Config: Avoid
'foeceallcell'
config to appear other than fillomino
Release date: 2016/7/24
- usoone: Introduce new puzzle: uso-one
- puzzle, history: Introduce trial mode
- parser:
pzpr.parser
now become a function which callspzpr.parser.parse
internally - opemgr: Add puzzle.saved() API to reset modified state
- env: Drop pzpr.env.storage property so as not to ask using local storage on Safari
- Board, Piece: Implement
Board#freezecopy
,Board#compareData
function
- lits: Fix tetromino shape misclassfication
- fillomino: Implement
'forceallcell'
config to allow to get completed with empty cells - pipelink: Fix line under question marks can't be a member of loops
- parser: Append / if URL last charactor is not a-z, A-Z or 0-9 to prevent misdecoding URL
- Operation: Replace mis-referneced
'isbroken'
flag with proper'broken'
flag - Operation: Fix error when decoding empty history and wipe out the whole board unexpectedly
- Config:
'color_qanscolor'
config is renamed to'color_shadecolor'
- Graphic: Tweak some drawing routines
- FileData: Add file encoding/decoding common routines
- pipelink: Merge
loopsp.js
intopipelink.js
and remove from repo
Release date: 2016/3/06
- env: Work properly under Electron envirornment
- util:
pzpr.uti.getpath()
now works correctly when pzpr.js is loaded with ? suffix - classmgr: Reload files in pzpr-variety dir when updated by adding suffix with version number
Release date: 2016/3/03
- Puzzle: Fix illegal handling of option value in outputting image functions
- Config: Ensure
puzzle.validConfig('disptype_yajilin')
returns true only ifpuzzle.pid==='yajirin'
Release date: 2016/2/28
- project: Update candle.js to v0.5.0 and remove jsdom dependency
- candle: Update candle.js to v0.6.0, v0.6.1 which suffers extra id attribute from being outputted
- Puzzle: Jpeg quality augument for outputting image is now available
- Puzzle: Allow some of the arguments of outputting image are not given
- Puzzle, Graphic: Make bgcolor and transparency configurable for outputting image
- Config, Graphic: Add
color_bgcolor
to set background color - Puzzle, Config: Add puzzle.resetConfig() API
- Graphic: Polish drawing arrows with number
- Graphic: Introduce independent error color for icy cells
- yajilin: Give an ability to be a gray-backgdound cell which indicates unused by
disptype_yajilin
config
- box: Update drawing number routine to avoid numbers are overwritten while previous number remains
- Graphic: Fix background is not drawn when image other than svg is outputted
- shwolf: Ensure images to be outputted on first drawing chance in Goats and Wolves
- Key: Fix unexpected number disappearing when arrow is inputted by keyboard in slalom etc.
- Puzzle: Create puzzle sub objects as well when puzzle object is created
- classmgr: Add prototype.pid to each puzzle class when they are generated
- Board: Set infolist only when board instance is created
- Board,Operation: Add some hook functions to init additional object
- Answer: Add checklist to common class so as not to occur an exception before puzzle.open is called
- parser: Move the routine determining proper puzzle genre into pzpr.parser from Encode and FileData class
- Puzzle: Update generating canvas method to be used for subcanvas or outputting images
- Config: Make lrcheck, redblk, redline, redroad volatile
- Graphic: Separate deciding font color from drawing number function
- test: Divide general.js into some scripts based on classes
Release date: 2016/2/16
- slalom: Fix miss-calculating gate number
- slalom: Fix tracing line routine cannot trace correctly when it is aware of reverse tracing
- slalom: Correct answer description about circle which doesn't have two lines
Release date: 2016/2/13
- Puzzle: Add a callback to toBlob() as first augument.
- nagare: Allow "wind from both side" if there is no line on the unit.
Release date: 2016/2/11
- pzpr.variety: Make pzpr.variety function and remove some functions. Use
pzpr.variety('puzzle-genre').urlid
or other property instead. - Puzzle: Replace puzzle.toSVG() with puzzle.toBuffer().
- pzpr.metadata: Fix setting undefined value to each property unexpectedly
- Puzzle: puzzle.toDataURL(), tBlob() and toBuffer() now accept 'gif' and 'jpeg' if browser supports.
- Board: Make null objects frozen
Release date: 2016/2/6
- Graphic: Fix font face under Android Chrome browser
Release date: 2016/1/31
Difference from pzprv3-v3.5.2
- gokigen: Use LineManager for judging Loop and make it enable to give individual color to connected slashes
- dosufuwa: Enable to input balloons and iron balls with drag and set completed area's background color light blue
- Mouse: Release mouse event when mouse button is released even the pointer is out of the canvas
- Key: Erase number when BackSpace key is asserted instead of replacing question mark
- Answer: Disturb answer check from judging correct if the board is empty by default
- project: Independence pzpr.js from legacy pzprv3.js project
- project: Make it possible to work undef node.js environment
- project: Set Candle object as pzpr's member object
- project: Wipe out work around for IE8 or older
- project: Add UnitTest with mocha
- project: Separate tests folder script and html files into sample folder and test folder
- project: Generate source maps under debug environment
- project: Add prefix for legacy pzprv3 tag
- docs: Update README.md and API description Markdown files
- core: Delete pzpr.createPuzzle API
- core, Puzzle: Delete pzpr.PLAYER, EDITOR and integrate to puzzle.playeronly option
- pzpr.event: Change pzpr.addLoadListener API to pzpr.on('load', function) API
- pzpr.variety: Add some aliases able to be used for puzzle.open()
- Puzzle: Add puuzle.on, once, emit as registering and executing listeners
- Puzzle: Fire fail-open event and throw when error is occurred in puzzle.open
- Puzzle: Delete option.imagesave constructor option and create canvas for image save every time
- Puzzle: Delete option.noinput constructor option; option.type should be used
- Puzzle, Config: Add option.config to set initial config value
- Puzzle: Add puzzle.toSVG API because Japanese character cannot be base64 string
- Puzzle: Add puzzle.clone API
- Puzzle: Change puzzle.modechange to puzzle.setMode and make it enable to accept string (play/edit)
- Board: Add puzzle.board.operate API to call puzzle.board.exec.expandreduce instead
- Answer: Set text string in puzzle.check return value and old text([lang]) function to get text([lang])
- Answer: Break as soon as error is detected when puzzle.check(false) is called even If config.multierr is true
- Mouse: Add mouse.inputPath API to input one consecutive line
- Mouse: Change mouse.btn option string
- Key: Add key.inputKeys API to emulate inputting characters
- Encode, parser: Delete outputting PUZ-PRE applet URL
- Encode: Change URL Type value and throwing string when invalid URL Type is inputted
- Encode, FileIO: Create enc, fio instance every time encoding and decoding URL/FileData
- pzpr.parser: Fix outputting unexpected data when parse, generate is called repeatedly
- Puzzle: Prioritize given value by setCanvasSize before setCanvas is called
- MetaData: Fix each property cannot be empty
- Encode: Fix script error when unexpected long URL is decoded
- kouchoku: Fix script error if canvas is drawn with config.irowake
- kouchoku: Fix script error if puzzle doesn't have canvas
- yajitatami: Fix missing changing arrow direction when board flip/turn operation is executed
- kinkonkan: Fix missing changing numbers out of the board when board flip/turn operation is executed
- tawa: Fix board flip (up-side down) operation is corrupted
- heyawake: Fix parsing Heyawake-Applet URL
- factors: Fix time consumption of answer check in editmode
- mashu: Respect current uramashu mode if uramashu config is changed
- pzpr.classmgr: Add board. pid, klass properties under each puzzle object and rename this.owner to this.puzzle
- pzpr.parser: Rename 'id' member value to 'pid'
- Graph: Use Graph theory for controlling line/area information
- LineManager: Move color property from Border to component of LineGraph
- slalom: Delete gateid member object
- Board: Rename qcols, grows member value to cols, rows
- Board: Delete some member object which is indicated the number of Cell, etc on the board (use bd.cell.length instead)
- BoardExec: Integrate expandreduce/turnflip functions
- Graphic: Refactoring canvas initialize routine due to removal of SilverLight
- Key: Modify not storing event object
- Config: Change initialize option for volatile config setting
- Config, fillomino: Change answer check routine and delete config.enbnonum
- Flags: Delete puzzle.flags object and integrate its option into each puzzle sub-objects