Veritula – Meta

  Dennis Hackethal criticized idea #3421.

The initiator of the bounty could choose a ceiling for the total they are willing to spend. They could additionally specify the amount per unproblematic criticism.

For example, a user would indicate that they are willing to spend a total of $100 at $10 per criticism.

#3421​·​Dennis HackethalOP, 4 months ago

But that means that additional criticisms don’t get any payout.

  Dennis Hackethal commented on criticism #2811.

Feature idea: pay people to criticize your idea.

You submit an idea with a ‘criticism bounty’ of ten bucks per criticism received, say.

The amount should be arbitrarily customizable.

There could then be a page for bounties at /bounties. And a page listing a user’s bounties at /:username/bounties.

#2811​·​Dennis HackethalOP revised 6 months ago

The initiator of the bounty could choose a ceiling for the total they are willing to spend. They could additionally specify the amount per unproblematic criticism.

For example, a user would indicate that they are willing to spend a total of $100 at $10 per criticism.

  Dennis Hackethal restored idea #2442 from the archive, along with any revisions.
  Dennis Hackethal commented on idea #3062.

Could this feature be unified with #2811 somehow?

#3062​·​Dennis HackethalOP, 5 months ago

Yes, people could just start bounties on criticisms.

  Dennis Hackethal posted idea #3419.

Idea: voice spaces, like Twitter spaces, except an AI generates a transcript and automatically turns it into a discussion tree, with criticism chains and all.

  Dennis Hackethal archived idea #3415 along with any revisions.
  Dennis Hackethal addressed criticism #3415.

There’s an encoding bug affecting title previews.

#3415​·​Dennis HackethalOP, 4 months ago

Fixed as of bd7c1b6.

  Dennis Hackethal archived idea #3171 along with any revisions.
  Dennis Hackethal posted criticism #3415.

There’s an encoding bug affecting title previews.

  Dennis Hackethal archived idea #3409 along with any revisions.
  Dennis Hackethal addressed criticism #3409.

Benjamin suggests making it clearer that you can use Veritula by yourself.

#3409​·​Dennis HackethalOP, 5 months ago

Done, see #3413.

  Dennis Hackethal posted criticism #3409.

Benjamin suggests making it clearer that you can use Veritula by yourself.

  Dennis Hackethal addressed criticism #3372.

I’ve asked Gemini to explain it:

1. Auto-Closure (Insertion State)

When the user inputs an opening delimiter, the system immediately injects the corresponding closing delimiter and places the caret (cursor) between them.

Input: (

Buffer State: (|)

Logic: insert(opening_char) + insert(closing_char) + move_caret(-1)

2. Type-Through (Escape State)

If the caret is positioned immediately before a closing delimiter that was autopaired, and the user types that specific closing delimiter, the system suppresses the character insertion and instead advances the caret.

Context: [text|]

Input: ]

Buffer State: [text]| (Not [text]])

Logic: if (next_char == input_char) { move_caret(+1); prevent_default(); }

3. Atomic Deletion (Regression State)

If the caret is between an empty pair of delimiters, a backspace event deletes both the opening and closing characters simultaneously, returning the buffer to the pre-insertion state.

Context: (|)

Input: Backspace

Buffer State: |

Logic: if (prev_char == open && next_char == close) { delete_range(caret-1, caret+1); }

4. Selection Wrapping (Transformation State)

If a text range is selected (highlighted) and an opening delimiter is typed, the system wraps the selection rather than replacing it.

Context: |selected_text|

Input: [[

Buffer State: [[selected_text]]

Logic: surround_selection(input_pair)

5. Markdown-Specific Heuristics

Obsidian applies context-aware logic for Markdown syntax (e.g., * or _). It often checks word boundaries to determine if the user intends to bold/italicize or use a bullet point.

Context (Start of line): | + * + Space -> Bullet list (autopair disabled/consumed by formatting).

Context (Middle of line): word | + * -> word *|* (autopair enabled for italics).

#3372​·​Dennis HackethalOP revised 5 months ago

I have implemented 1-4. Give it a try. I think 5 is out of scope for now but I may revisit it at some point. If auto-closing asterisks are a problem at the start of a line (when making lists), use a hyphen instead.

  Dennis Hackethal criticized idea #3397.

I can take this opportunity to replace manual markdown with a proper text editor. Then there’s no need for autopaired brackets.

The editor will need to support:

  • Automatic links to ideas like #123
  • Links to @mentions like @dennis-hackethal*
  • Safe link formatting
  • Disabling of turbo links
  • Namespaced footnotes
  • Custom blockquote format
  • Protection against XSS
  • Retention of formatting when pasting
#3397​·​Dennis HackethalOP revised 5 months ago

On second thought, implementing a proper text editor would take more work than I initially realized, and is far beyond the scope of what Benjamin is requesting anyway. I can revisit this idea later.

  Dennis Hackethal revised idea #3396.

I can take this opportunity to replace manual markdown with a proper text editor. Then there’s no need for autopaired brackets.

The editor will need to support:

  • Automatic links to ideas like #123
  • Links to @mentions like @dennis-hackethal*
  • Safe link formatting
  • Disabling of turbo links
  • Namespaced footnotes
  • Custom blockquote format
  • Protection against XSS

I can take this opportunity to replace manual markdown with a proper text editor. Then there’s no need for autopaired brackets.

The editor will need to support:

  • Automatic links to ideas like #123
  • Links to @mentions like @dennis-hackethal*
  • Safe link formatting
  • Disabling of turbo links
  • Namespaced footnotes
  • Custom blockquote format
  • Protection against XSS
  • Retention of formatting when pasting
  Dennis Hackethal commented on idea #3171.

Obsidian autopairs markdown syntax and brackets. I like it a lot and would like Veritula to have something similar!

#3171​·​Benjamin Davies, 5 months ago

I can take this opportunity to replace manual markdown with a proper text editor. Then there’s no need for autopaired brackets.

The editor will need to support:

  • Automatic links to ideas like #123
  • Links to @mentions like @dennis-hackethal*
  • Safe link formatting
  • Disabling of turbo links
  • Namespaced footnotes
  • Custom blockquote format
  • Protection against XSS
  Dennis Hackethal revised criticism #3271.

Escape special characters


I’ve asked Gemini to explain it:

1. Auto-Closure (Insertion State)

When the user inputs an opening delimiter, the system immediately injects the corresponding closing delimiter and places the caret (cursor) between them.

Input: (

Buffer State: (|)

Logic: insert(openingchar) + insert(closingchar) + move_caret(-1)

2. Type-Through (Escape State)

If the caret is positioned immediately before a closing delimiter that was autopaired, and the user types that specific closing delimiter, the system suppresses the character insertion and instead advances the caret.

Context: [text|]

Input: ]

Buffer State: [text]| (Not [text]])

Logic: if (nextchar == inputchar) { movecaret(+1); preventdefault(); }

3. Atomic Deletion (Regression State)

If the caret is between an empty pair of delimiters, a backspace event deletes both the opening and closing characters simultaneously, returning the buffer to the pre-insertion state.

Context: (|)

Input: Backspace

Buffer State: |

Logic: if (prevchar == open && nextchar == close) { delete_range(caret-1, caret+1); }

4. Selection Wrapping (Transformation State)

If a text range is selected (highlighted) and an opening delimiter is typed, the system wraps the selection rather than replacing it.

Context: |selected_text|

Input: [[

Buffer State: [[selected_text]]

Logic: surroundselection(inputpair)

5. Markdown-Specific Heuristics

Obsidian applies context-aware logic for Markdown syntax (e.g., * or _). It often checks word boundaries to determine if the user intends to bold/italicize or use a bullet point.

Context (Start of line): | + * + Space -> Bullet list (autopair disabled/consumed by formatting).

Context (Middle of line): word | + * -> word | (autopair enabled for italics).

I’ve asked Gemini to explain it:

1. Auto-Closure (Insertion State)

When the user inputs an opening delimiter, the system immediately injects the corresponding closing delimiter and places the caret (cursor) between them.

Input: (

Buffer State: (|)

Logic: insert(opening_char) + insert(closing_char) + move_caret(-1)

2. Type-Through (Escape State)

If the caret is positioned immediately before a closing delimiter that was autopaired, and the user types that specific closing delimiter, the system suppresses the character insertion and instead advances the caret.

Context: [text|]

Input: ]

Buffer State: [text]| (Not [text]])

Logic: if (next_char == input_char) { move_caret(+1); prevent_default(); }

3. Atomic Deletion (Regression State)

If the caret is between an empty pair of delimiters, a backspace event deletes both the opening and closing characters simultaneously, returning the buffer to the pre-insertion state.

Context: (|)

Input: Backspace

Buffer State: |

Logic: if (prev_char == open && next_char == close) { delete_range(caret-1, caret+1); }

4. Selection Wrapping (Transformation State)

If a text range is selected (highlighted) and an opening delimiter is typed, the system wraps the selection rather than replacing it.

Context: |selected_text|

Input: [[

Buffer State: [[selected_text]]

Logic: surround_selection(input_pair)

5. Markdown-Specific Heuristics

Obsidian applies context-aware logic for Markdown syntax (e.g., * or _). It often checks word boundaries to determine if the user intends to bold/italicize or use a bullet point.

Context (Start of line): | + * + Space -> Bullet list (autopair disabled/consumed by formatting).

Context (Middle of line): word | + * -> word *|* (autopair enabled for italics).

  Dennis Hackethal archived idea #3182 along with any revisions.
  Dennis Hackethal revised criticism #3369.

As of c08f508, the footer automatically hides and shows based on scrolling behavior.

Try it out and let me know if this doesn’t help.

As of 9087189, the footer automatically hides and shows based on scrolling behavior.

Try it out and let me know if this doesn’t help.

  Dennis Hackethal archived idea #3182 along with any revisions.
  Dennis Hackethal addressed criticism #3182.

It would be nice if I could collapse the 'submit top-level idea' form. It currently takes up a third of my screen when I scroll on PC.

#3182​·​Benjamin Davies, 5 months ago

As of c08f508, the footer automatically hides and shows based on scrolling behavior.

Try it out and let me know if this doesn’t help.

  Benjamin Davies addressed criticism #3259.

I haven’t used Obsidian, so I don’t understand what you are requesting. Is it that, whenever you open a bracket, you want the closing bracket to appear automatically?

#3259​·​Dennis HackethalOP, 5 months ago

I’ve asked Gemini to explain it:

1. Auto-Closure (Insertion State)

When the user inputs an opening delimiter, the system immediately injects the corresponding closing delimiter and places the caret (cursor) between them.

Input: (

Buffer State: (|)

Logic: insert(openingchar) + insert(closingchar) + move_caret(-1)

2. Type-Through (Escape State)

If the caret is positioned immediately before a closing delimiter that was autopaired, and the user types that specific closing delimiter, the system suppresses the character insertion and instead advances the caret.

Context: [text|]

Input: ]

Buffer State: [text]| (Not [text]])

Logic: if (nextchar == inputchar) { movecaret(+1); preventdefault(); }

3. Atomic Deletion (Regression State)

If the caret is between an empty pair of delimiters, a backspace event deletes both the opening and closing characters simultaneously, returning the buffer to the pre-insertion state.

Context: (|)

Input: Backspace

Buffer State: |

Logic: if (prevchar == open && nextchar == close) { delete_range(caret-1, caret+1); }

4. Selection Wrapping (Transformation State)

If a text range is selected (highlighted) and an opening delimiter is typed, the system wraps the selection rather than replacing it.

Context: |selected_text|

Input: [[

Buffer State: [[selected_text]]

Logic: surroundselection(inputpair)

5. Markdown-Specific Heuristics

Obsidian applies context-aware logic for Markdown syntax (e.g., * or _). It often checks word boundaries to determine if the user intends to bold/italicize or use a bullet point.

Context (Start of line): | + * + Space -> Bullet list (autopair disabled/consumed by formatting).

Context (Middle of line): word | + * -> word | (autopair enabled for italics).

  Dennis Hackethal criticized idea #3171.

Obsidian autopairs markdown syntax and brackets. I like it a lot and would like Veritula to have something similar!

#3171​·​Benjamin Davies, 5 months ago

I haven’t used Obsidian, so I don’t understand what you are requesting. Is it that, whenever you open a bracket, you want the closing bracket to appear automatically?

  Benjamin Davies posted criticism #3182.

It would be nice if I could collapse the 'submit top-level idea' form. It currently takes up a third of my screen when I scroll on PC.

  Benjamin Davies posted idea #3171.

Obsidian autopairs markdown syntax and brackets. I like it a lot and would like Veritula to have something similar!