Skip to content

Commit e6b7b8c

Browse files
author
h8rt3rmin8r
committed
release: v0.1.6 — remove JSON Feed & WP REST input adapters
Version bump 0.1.5 → 0.1.6. Bundles new CLI and GUI executables. Changes: - Bump _version.py to 0.1.6 - Remove stale 'json-feed' and 'wordpress' keywords from pyproject.toml - Rewrite RELEASE_NOTES.md for v0.1.6 (documents breaking removal) - Bundle shruggie-feedtools-cli-0.1.6-win-x64.exe (16.3 MB) - Bundle shruggie-feedtools-gui-0.1.6-win-x64.exe (19.7 MB) - Remove old v0.1.5 release artifacts 276 tests passing.
1 parent af2a4fa commit e6b7b8c

File tree

8 files changed

+31
-40
lines changed

8 files changed

+31
-40
lines changed

RELEASE_NOTES.md

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Release Notes — shruggie-feedtools v0.1.5
1+
# Release Notes — shruggie-feedtools v0.1.6
22

33
**Release Date:** 2026-02-13
44
**Status:** Patch release (Alpha)
@@ -7,53 +7,49 @@
77

88
## Overview
99

10-
Targeted reliability release resolving two persistent issues from v0.1.4: GUI favicons not surviving CustomTkinter's startup icon overrides, and a stale hardcoded user-agent string. Also eliminates recurring snapshot maintenance caused by version bumps and removes non-functional JSON Feed and WP REST input support.
10+
Cleanup release that removes non-functional JSON Feed and WordPress REST API input adapters after multiple failed implementation attempts. The codebase is now streamlined to XML-based feed parsing only (RSS 2.0, RSS 1.0/RDF, Atom 1.0, RSS 0.9x, Atom 0.3). JSON output remains the sole output format — unchanged.
1111

1212
---
1313

14-
## Bug Fixes
14+
## Breaking Changes
1515

1616
### Removed: JSON Feed and WordPress REST API Input Support
1717

18-
- **Removed all JSON Feed (input) and WordPress REST API (input) adapters, detection logic, fixtures, and tests** — These features were persistently non-functional after multiple implementation attempts. Input parsing now supports XML-based feeds only (RSS 2.0, RSS 1.0/RDF, Atom 1.0, RSS 0.9x, Atom 0.3).
18+
- **Removed all JSON Feed (input) and WordPress REST API (input) adapters, detection logic, fixtures, and tests** — These features were persistently non-functional after multiple implementation attempts and have been fully excised from the codebase.
1919
- **Output format is unchanged** — All output is still JSON. Only the *input* JSON Feed and WP REST adapters have been removed.
20-
- Files removed: `json_feed_adapter.py`, `wp_rest_adapter.py`, `tests/fixtures/json_feed/`, `tests/fixtures/wp_rest/`, `tests/snapshots/json_feed/`, `tests/snapshots/wp_rest/`
20+
- Files removed: `json_feed_adapter.py`, `wp_rest_adapter.py`, and associated fixture/snapshot directories
2121
- Enum values `"json_feed"` and `"wp_rest"` removed from `source.type`
22+
- Detection logic removed: `_detect_json_type()`, `derive_wp_rest_posts_url()`, JSON-path routing in detector
23+
- Parser routing for JSON Feed and WP REST removed from `_route_to_adapter()`
24+
- Dead code removed: JSON Feed attachments mapping in `_normalize_enclosures()`
25+
- CLI help text and examples updated to reflect XML-only input support
26+
- Documentation updated throughout: README, spec, plan, and release notes
2227

23-
### GUI Favicon — Win32 API Override
28+
### Supported Input Formats (as of v0.1.6)
2429

25-
- **Fixed: Favicons still not appearing after 3+ prior attempts** — Replaced the unreliable multi-timer race (4 staggered `after()` calls) with a definitive approach:
26-
- On Windows, uses Win32 API (`LoadImageW` + `SendMessageW` with `WM_SETICON`) via ctypes to set both ICON_SMALL (16×16) and ICON_BIG (32×32) at the OS/window-manager level, completely bypassing tkinter
27-
- After applying, monkey-patches `iconbitmap` to a no-op so CustomTkinter can never override the icon again
28-
- Falls back to standard tkinter `iconbitmap` + `wm_iconphoto` on non-Windows platforms
29-
30-
### Hardcoded User-Agent Fixed
31-
32-
- **Fixed: HTTP User-Agent reporting `shruggie-feedtools/0.1.1` regardless of actual version**`ParserConfig.user_agent` now uses a `field(default_factory=...)` that reads `__version__` at runtime instead of a hardcoded string. The user-agent will always match the installed version going forward.
30+
| Format | Example Sources |
31+
|---|---|
32+
| RSS 2.0 | Most blogs, podcasts, news sites |
33+
| RSS 1.0 / RDF | Older syndication feeds |
34+
| RSS 0.91 / 0.92 | Legacy feeds |
35+
| Atom 1.0 | GitHub releases, YouTube, status pages |
36+
| Atom 0.3 | Older Atom feeds |
3337

3438
---
3539

36-
## Test Infrastructure
37-
38-
### Version-Resilient Snapshots
39-
40-
- **Fixed: Snapshot tests breaking on every version bump** — The `assert_snapshot` fixture in `conftest.py` now normalizes `shruggie-feedtools/X.Y.Z` to a stable placeholder before comparing, so construct snapshots no longer fail when `_version.py` is bumped. Supports semver and pre-release suffixes.
41-
42-
### New Tests
40+
## Test Results
4341

44-
| Area | Tests Added | Description |
45-
|---|---|---|
46-
| `test_detector.py` | 3 | Content-type fallback, BOM handling, XML detection |
47-
| **Total** | **3 new** | **Tests passing** |
42+
- **276 tests passing** (down from 278 in v0.1.5 — net removal of 46 tests from deleted adapters, offset by prior additions)
43+
- All remaining XML-based adapter, detector, parser, normalizer, schema, CLI, construct, and template tests pass
4844

4945
---
5046

5147
## Release Artifacts
5248

5349
| Artifact | Description |
5450
|---|---|
55-
| `shruggie-feedtools-cli-0.1.5-win-x64.exe` | Standalone Windows CLI executable |
56-
| `shruggie-feedtools-gui-0.1.5-win-x64.exe` | Standalone Windows GUI executable |
51+
| `shruggie-feedtools-cli-0.1.6-win-x64.exe` | Standalone Windows CLI executable |
52+
| `shruggie-feedtools-gui-0.1.6-win-x64.exe` | Standalone Windows GUI executable |
5753

5854
Download from [GitHub Releases](https://github.com/shruggietech/shruggie-feedtools/releases).
5955

@@ -63,11 +59,11 @@ Download from [GitHub Releases](https://github.com/shruggietech/shruggie-feedtoo
6359

6460
## Upgrade Notes
6561

66-
- Drop-in replacement for v0.1.4 — no schema changes to existing output fields, no API changes for XML-based feed parsing
62+
- JSON Feed and WP REST API input URLs will no longer parse — these features have been removed
63+
- No schema changes to existing output fields; no API changes for XML-based feed parsing
64+
- Drop-in replacement for v0.1.5 for all XML-based feed workflows
6765
- Download the latest `.exe` from [GitHub Releases](https://github.com/shruggietech/shruggie-feedtools/releases) — no pip install required
68-
- JSON Feed and WP REST API input URLs will no longer parse (these features have been removed)
69-
- GUI favicon should now persist reliably on Windows
70-
- HTTP requests now correctly identify as `shruggie-feedtools/0.1.5`
66+
- HTTP requests now correctly identify as `shruggie-feedtools/0.1.6`
7167

7268
---
7369

@@ -94,7 +90,7 @@ Download from [GitHub Releases](https://github.com/shruggietech/shruggie-feedtoo
9490
## Known Limitations
9591

9692
- GUI executable is Windows-only in this release
97-
- No CI test gate prior to release — tests are run locally (317/317 passing)
93+
- No CI test gate prior to release — tests are run locally (276/276 passing)
9894

9995
---
10096

16.3 MB
Binary file not shown.
19.7 MB
Binary file not shown.
-61.7 KB
Binary file not shown.
-35.7 MB
Binary file not shown.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ requires-python = ">=3.12"
1313
authors = [
1414
{ name = "William Thompson / ShruggieTech LLC" },
1515
]
16-
keywords = ["rss", "atom", "feed", "parser", "json-feed", "wordpress", "normalize"]
16+
keywords = ["rss", "atom", "feed", "parser", "normalize"]
1717
classifiers = [
1818
"Development Status :: 3 - Alpha",
1919
"Intended Audience :: Developers",

shruggie-feedtools-gui.spec

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@ a = Analysis(
55
['src\\shruggie_feedtools\\gui\\app.py'],
66
pathex=[],
77
binaries=[],
8-
datas=[
9-
('src/shruggie_feedtools/gui', 'shruggie_feedtools/gui'),
10-
('brand/favicon.ico', 'brand'),
11-
('brand', 'brand'),
12-
],
8+
datas=[('src/shruggie_feedtools/gui', 'shruggie_feedtools/gui')],
139
hiddenimports=[],
1410
hookspath=[],
1511
hooksconfig={},
@@ -39,5 +35,4 @@ exe = EXE(
3935
target_arch=None,
4036
codesign_identity=None,
4137
entitlements_file=None,
42-
icon='brand/favicon.ico',
4338
)

src/shruggie_feedtools/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.1.5"
1+
__version__ = "0.1.6"

0 commit comments

Comments
 (0)