Octavo issues
Octavo feature requests and bugs go here. See also the notes and API pages.
Good ideas
- Tools to shrink, grow, and reset font size
- A better way to select
<img>
- Remove-id, and mark/
<a>
stuff like WorldWideWeb.app, suggested by dpk - Better warning/edit-lock mechanism
- Table editing stuff might be nice. Editing tables at the moment is really tricky in the DOM inspector. (Also need site style for this)
- Show element IDs and classes
- Colour the status bar according to whether there are unsaved edits. I'm using the Esc function as a way to do this, making the presence of the status bar itself into a kind of edit status
- Select multiple blocks and wrap them with a div for styling
- Convert lines into list items or table cells
- A way to highlight/remove lurking inline elements, e.g. from pastes
- Default link being link text lowercased with spaces as hyphens or underscores
- Convert pre sections into something else preserving line breaks (usually paragraphs or list items)
- Automatically check new modification-time upon editing a page that has been open without refresh for a while. Could also do this at save, warning that the page has been edited and giving a link-click style save feature if so
- Separate out non-generic features into user modules, using facilities for creating user modules
- Append to first-list macro?
- Use literate CoffeeScript for the source
- Make font bigger, without messing up line-height
- Wikipedia-style ID names from heading text content?
- "?" prefix for searching command descriptions
- Convert pre to style/script; we could use these to embed Octavo scripts
- ⌃{ and ⌃} for margin? Or swap that with padding?
- Copy and paste whole elements
- Perhaps an easier way to modify attributes, especially style. Could have a nice table which is formatted like the present one. Wouldn't like to select values that way though
- Contextual help when Ctrl is depressed, suggested by candeira
- Element manipulation through a vi-style mode?
- Check the DOM; perhaps automatically tidy e.g.
<p>
in <pre>
. Can any of the octavo.phrasal elements come within octavo.block elements? - Style
span.OctavoPad
elements when the caret is in them? - Current-element pointer for commands. For example, then you could wrap multiple lines with a
<div>
and move the div up and down easily (cf. <g>
in SVG) - Repeat last action, or bind using a simple language. E.g.
convert kbd
, or wrap span
- Pre-command for using the built-in functions
- Phrases at the beginnings of blocks can't be deleted into the previous block
Table editing tools
This all depends on algorithms for actually knowing what the surrounding cells are, preserving context from the original. So in other words you have to account for rowspan and colspan.
- insert-row-above
- insert-row-below
- insert-row-at-start
- insert-row-at-end
- (same for column)
- convert-row-to-th
- convert-column-to-th
- (same for td)
- merge-cell-right
- (left, up, down)
- tiger-stripe
- remove-tiger-stripes
- align-(cell|row|column)-(left|center|right)
Entomology
- Creating an empty
<div>
. Not possible at the moment, because of the code that detects the silly native behaviour. Can work around it by using a single dot before calling the tool menu change function
- Take the appropriate action for 401 responses on save
- Saving in Guitar ate the TOC for some reason. The <h3> links in the nested sub-list were taken out, leaving the link texts behind
- Something weird happens to body width when the editor is turned on
<p>
with a <table>
in it gets removed; probably shouldn't be, even though that's "bad" markup- Putting a
<code>
section at the end of a list element, then pressing return in it before exiting it gives you some really odd stuff, and doesn't show continued <code>
in the new <li>
elements - Pasting line breaks into a
<pre>
occasionally splits the <pre>
- Creating code by turning inline-mode on doesn't work
- Setting a title on initial page creation seems not to work
- Need to call Node.normalize much more often
- You can't delete through a
span.OctavoPad
into an empty <a>
element - The caret just disappears entirely inside a
span.OctavoPad
, which I would consider more of a WebKit issue than anything. So after making a link, say, the caret disappears - Get
change
to preserve attributes - If you type some random stuff into a selection ⌃D form and then hit enter, the form is inserted into the document
- Creating inline elements with empty content doesn't insert the caret properly
- Links in the middle of paragraphs are being broken into new paragraphs
- ⌃A and ⇧Click shouldn't interfere with default behaviours
Completed
This is a kind of primitive changelog.
February
Unknown
- How about ⇧Click or Meta-Click to start editing?
14 Feb 2013
- Fixed the status bar not updating after some tool menu functions
- Use Esc to cancel edit mode
- Fix ⌃B, which is no longer working for some odd reason. Probably garbage collecting the message on save, which of course ⌃B does automatically
- Make sure that junk
<span>
elements are taken, not destroyed.
- Ensure that ⇧Click to create a page using the @data-octavo-reset method does not screw up focus.
- Indent and unindent, in 12px steps
<br>
mode. This makes it easier to input single lines in paragraphs and in preformatted sections. It is default in preformatted sections, which can be exited using ⌃B. Having to ⇧↵ to make <br>
or new lines in preformatted blocks was quite annoying
- Temporary highlight of elements accessible in the tool menu. Click on the tag to highlight whilst the mouse button is pressed. I think that dpk requested this feature independently
- Could use ⌃6 (cf. ^) for superscript → subscript → normal toggle
- There were two empty
<p>
elements in Style Guide. Octavo attempts to remove these, and empty inline elements, on save. Wonder how they got there though? They were kind of invisible against the TOC <ol>
.
Unknown
- Put the status bar at the top right; at the bottom right it interferes with new text
- The
div.OctavoStatus
element leaves behind a "\n"
text node when removed. These need to be cleaned up too
- Highlight NBSPs
March
5/6 March 2013
- Highlight ZWS
- Reset ZWS padding in the entire document. Can actually workaround this by getting the caret directly into
<body>
and then using the status bar to bring up the tool menu on <body>
, which isn't normally possible, and choosing the ZWS options there
- It seems possible to delete the ZWSes. They could perhaps be entered in span elements with contenteditable turned off
- Probably could call Node.normalize on elements where ZWS padding has been changed
- Make padding dynamic again. At least have a dynamic padding check
- Superscripting in mid-editing-flow is annoying because there's no way to quit a superscript
- This mess wouldn't let me use the <code> control on the filename:
- Make sure status bar links don't have custom borders on them
- Put some kind of glow inside an inline element if editing outside of it, and outside the element if editing inside it
- Make sure menu links don't have custom borders on them
6 March 2013
- More and less CSS padding, in 12px steps; tools to pad and unpad
- Remove all styles tool option / Remove all @style tool menu option / Style removal tool menu item
- Could enable another keydown modifier to start editing with click, as well as ⇧
- Create an
octavo
object for export
8 March 2013
- Global: remove all styles
- Global: presentational to logical
- Cancel user input. This can already be done using the status bar
- Take all child elements (descendant elements, rather)
- Make "m" and "b" modes mutually exclusive
- Could do with a margin indent/pad as well as a padding indent/pad, e.g. for preformatted sections
- Remove NBSPs