|
1 | 1 | # CHANGELOG.md
|
2 | 2 |
|
3 |
| -## 0.34.0 (2025-03-23) |
4 |
| - |
5 |
| - - `delete_link` in the list component now submits a POST request, instead of being a simple link. |
6 |
| - - This avoids accidental deletion by bots following links, and is more in line with HTTP semantics. |
7 |
| - - In the table component, the `_col_` prefix is now added to column names in CSS classes. This avoids conflicts with other CSS classes that might be used in the page. |
8 |
| - - fixes https://github.com/sqlpage/SQLPage/issues/830 |
9 |
| - - This is a breaking change for custom CSS rules that target table columns by their name. |
10 |
| - - Before: `.my_column { ... }` |
11 |
| - - After: `._col_my_column { ... }` |
12 |
| -- New configuration options: |
13 |
| - - `markdown_allow_dangerous_html`: allow the usage of html in markdown (default: false) |
14 |
| - - `markdown_allow_dangerous_protocol`: allow the usage of custom protocols in markdown (default: false) |
15 |
| - - Allow data URLs in markdown images. This allows embedding base64 encoded images in any markdown field. |
16 |
| - - see [configuration.md](./configuration.md) for more details. |
17 |
| -- In the shell component, setting the `footer` parameter to the empty string (`''`) will now completely hide the footer, instead of showing the default one |
18 |
| -- New configuration option: `rtl` to display the page in right-to-left mode. This can be used to display Arabic, Hebrew, Persian, etc. |
19 |
| -- fix a crash when manipulating TINYINTs from microsoft sql server |
20 |
| -- update sqlparser to 0.55: https://github.com/apache/datafusion-sqlparser-rs/blob/main/changelog/0.55.0.md |
21 |
| -- fix a diplay issue when using intra-page anchor links inside tables with fixed headers |
22 |
| -- Columns without buttons |
23 |
| - - In the columns component, when no button text is specified, no button is displayed (instead of an empty button) |
24 |
| -- New `unsafe_contents_md` property in the text component to allow rendering markdown with embedded HTML tags. |
25 |
| -- New `_sqlpage_footer` property for table rows. When applied, that row will be rendered as the table footer. It is recommended to use this on the last data row. |
26 |
| -- New `freeze_footers` property in table component. If the footer is enabled, this will make it always visible. Works similarly to `freeze_headers`. |
27 |
| -- Hidden files and folders (those with a name starting with a `.`) are now inaccessible. This allows you to easily create internal files to use with `sqlpage.run_sql(...)` that will not be directly accessible. |
| 3 | +## v0.34 (2025-03-23) |
| 4 | + |
| 5 | +### ✨ Top Features at a Glance |
| 6 | +- **Safer deletion flows** in lists |
| 7 | +- **Better table styling control** with CSS updates |
| 8 | +- **Right-to-Left language support** |
| 9 | +- **HTML-enhanced Markdown** in text components |
| 10 | +- **Sticky table footers** for better data presentation |
| 11 | + |
| 12 | +### 🔒 Security First |
| 13 | +#### **POST-based Deletions** |
| 14 | +List component's `delete_link` now uses secure POST requests: |
| 15 | +```sql |
| 16 | +SELECT 'list' AS component; |
| 17 | +SELECT 'Delete me' AS title, 'delete_item.sql?id=77' AS delete_link; |
| 18 | +``` |
| 19 | +*Prevents accidental deletions by web crawlers and follows REST best practices* |
| 20 | + |
| 21 | +#### **Protected Internal Files** |
| 22 | +- Files/folders starting with `.` (e.g., `.utils/`) are now inaccessible |
| 23 | +- Perfect for internal scripts used with `sqlpage.run_sql()` |
| 24 | + |
| 25 | +### 🎨 UI & Component Upgrades |
| 26 | +#### **Table Styling Revolution** |
| 27 | +```css |
| 28 | +/* Before: .price | After: */ |
| 29 | +._col_price { |
| 30 | + background: #f8f9fa; |
| 31 | + border-right: 2px solid #dee2e6; |
| 32 | +} |
| 33 | +``` |
| 34 | +- New CSS class pattern: `._col_{column_name}` |
| 35 | +- Fixes [#830](https://github.com/sqlpage/SQLPage/issues/830) |
| 36 | + |
| 37 | +#### **Column component** |
| 38 | +```sql |
| 39 | +SELECT 'columns' AS component; |
| 40 | +SELECT 'View details' AS title; -- No button shown |
| 41 | +``` |
| 42 | +- Columns without button text now hide empty buttons |
| 43 | +- Cleaner interfaces by default |
| 44 | + |
| 45 | +#### **Sticky Table Footers** |
| 46 | +```sql |
| 47 | +SELECT |
| 48 | + 'table' AS component, |
| 49 | + true AS freeze_footers; |
| 50 | +SELECT |
| 51 | + 'Total' AS label, |
| 52 | + SUM(price) AS value, |
| 53 | + true AS _sqlpage_footer; |
| 54 | +``` |
| 55 | +- Keep summary rows visible during scroll |
| 56 | +- Use `_sqlpage_footer` on your final data row |
| 57 | + |
| 58 | +### 🌍 Internationalization |
| 59 | +#### **Right-to-Left Support** |
| 60 | +```sql |
| 61 | +SELECT 'shell' AS component, true AS rtl; |
| 62 | +``` |
| 63 | +- Enable RTL mode per page via shell component |
| 64 | +- Perfect for Arabic, Hebrew, and Persian content |
| 65 | + |
| 66 | +### 📝 Content Handling |
| 67 | +#### **Rich Text Power** |
| 68 | +```sql |
| 69 | +SELECT 'text' AS component, |
| 70 | + '<div class="alert alert-warning"> |
| 71 | + **Important!** |
| 72 | + |
| 73 | + New *HTML-enhanced* content. |
| 74 | + </div>' |
| 75 | + AS unsafe_contents_md; |
| 76 | +``` |
| 77 | +- New `unsafe_contents_md` allows HTML+Markdown mixing |
| 78 | + |
| 79 | +#### **Base64 Image Support** |
| 80 | +```markdown |
| 81 | + |
| 82 | +``` |
| 83 | +- Embed images directly in Markdown fields |
| 84 | + |
| 85 | +### ⚙️ Configuration Tweaks |
| 86 | +```json |
| 87 | +{ |
| 88 | + "markdown_allow_dangerous_html": false, |
| 89 | + "markdown_allow_dangerous_protocol": false |
| 90 | +} |
| 91 | +``` |
| 92 | +- **Markdown safety controls** to change markdown rendering settings |
| 93 | + |
| 94 | +### 🐛 Notable Fixes |
| 95 | +- **SQL Server** |
| 96 | + Fixed TINYINT handling crashes |
| 97 | +- **Anchor Links** |
| 98 | + Corrected display in tables with fixed headers |
| 99 | +- **Form Inputs** |
| 100 | + Proper handling of `0` values in number fields |
| 101 | + |
| 102 | +### 💡 Upgrade Guide |
| 103 | +1. **CSS Updates** |
| 104 | + Search/replace `.your_column` → `._col_your_column` if you have custom css targetting tables. |
| 105 | +2. **Deletion Flows** |
| 106 | + Test list components using `delete_link`. |
| 107 | + You can now add a check that the request method is POST if you want to forbid deletions by simply loading pages. |
| 108 | + |
| 109 | +[View full configuration options →](./configuration.md) |
| 110 | + |
28 | 111 |
|
29 | 112 | ## 0.33.1 (2025-02-25)
|
30 | 113 |
|
|
0 commit comments