Repository navigation
Expand file tree
/
Copy pathCHANGES
More file actions
2186 lines (1849 loc) · 95.6 KB
/
Copy pathCHANGES
File metadata and controls
2186 lines (1849 loc) · 95.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 1.22.0 (October 2026)
Upgrade Instructions
Stop any running Allura services while upgrading.
Install updated dependencies by running:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
Run in mongo: `db.getSiblingDB('allura').oauth2_access_token.dropIndex('refresh_token_1')`
Run: `paster ensure_index development.ini` in Allura dir. Replace your .ini file path.
Major Changes
* edit support for OAuth1 and OAuth2 app configurations
* OAuth1 applications must now register at least one https:// Redirect URL, and their callback
must match one exactly. Applications registered before this release keep working with any
callback until their owner edits them to add a URL.
* ForgeChat deprecated and scheduled to be removed in next release. Join the Allura dev team if you would like to support and maintain this tool.
Security Improvements
* fix CVE-2026-92116: OAuth1 missing callback validation
* fix CVE-2026-92119: REST API Mass Assignment
* fix CVE-2026-92120: Apache Allura: Oauth1 Replay Attack
* [#8627] additional security related improvements
* [#8617] Implement field level encryption for User tool data fields
* [#8619] html sanitization fixes
* [#8621] drop other urllib handlers
* [#8626] Log raw email headers and SPF/DMARC/DKIM verification results for monitor mode
* OAuth consent pages: show where the user will be redirected
* RSS/Atom feed consistency with visibility
* Package Upgrades
* update SECURITY.md
Code Repos
* [#8618] fix git thread-safety issues
General
* error handling around "magic" lib
* optimize _get_site_notification in case of users with many projects
For Developers
* fix partialFilterExpression: can't do $gt a different type. NEEDS INDEX DROP AND RECREATE
* docker-compose: try giving solr a longer start period to get healthy (has been unhealthy in CI sometimes)
* rename CLAUDE.md => AGENTS.md
Version 1.21.0 (September 2026)
Upgrade Instructions
Stop any running Allura services while upgrading.
Install updated dependencies by running:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
To allow repo admins to turn force push on and off for their own git repos, add
`scm.force_push.git.enabled = true` to your .ini file and run in the Allura dir (replace your .ini file path):
`paster script your-ini-file.ini ../scripts/migrations/force-push-sync-from-repo-config.py`
The script reads each git repo's settings and records it in Mongo so the admin page shows the right value.
It does not change any repository.
Major Changes
* [#686] Repo admins can allow force push on their own git repos
* Add mongodb option for the jinja bytecode cache
* Drop support for <svg> tags in Markdown/HTML
Security Improvements
* CVE-2026-80180 [#8619] Stored XSS via markdown HTML processing
* CVE-2026-80181 [#8621] Server-side request forgery
* CVE-2026-80190 Stored XSS via code repositories
* CVE-2026-81270 [#8622] Information exposure via search
* bumping webob 1.8.10 -> 1.8.11
* strengthen _verify_return_to and tests for webob upgrade
* start a SECURITY.md
* Prevent re-tracking revoked sessions
Code Repos
* [#8620] Fix git rename handling
For Developers
* update discussion thread logic for consistency
* increase ulimits on docker web to avoid "Too many open files" during test runs at least
Version 1.20.0 (August 2026)
Upgrade Instructions
Stop any running Allura services while upgrading.
Install updated dependencies by running:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
Run scripts/migrations/037-field-encryption.sh
If using docker, this is the full command (replace your .ini file path):
docker compose run -e INI=docker-dev.ini --rm taskd ../scripts/migrations/037-field-encryption.sh
Run: `paster ensure_index development.ini --clean` in Allura dir. Replace your .ini file path
After the new version of Allura is up and running, delete the plaintext versions of the encrypted fields by running
scripts/migrations/038-field-encryption-cleanup.sh
Security Improvements
* [#8616] Fix Unauthenticated REST disclosure (CVE-2026-75099)
* Python package upgrades
* [#8610] Implement field level encryption for User's email addresses list
* [#8613] Implement field level encryption for email address in user preferences
* [#8614] Implement field level encryption for more user fields
Major Changes
* enable webp screenshots & attachments
Other Changes
* [#6687] set isPermaLink=false on RSS feeds. Link to atom feeds more than rss
* do github rate-limit logic on 429 status codes too
* solr param fixes
For Developers
* get_tool_data should return ming-deinstrumented objects, so changes to them can't sync back to the database unexpectedly
* added CLAUDE.md
* make test more reliable (not reliant on fetching "url":"https://httpbin.org/image/png"
* config pip in rebuild-all.sh to install in a more compatible way for LSPs
* get chained exception details into errormiddleware output
* add docker/compose health checks and use --wait to check them
Version 1.19.1 (June 2026)
Upgrade Instructions
Stop any running Allura services while upgrading.
Install updated dependencies by running:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
In your .ini file, set csp.form_action_urls to your base URL.
In your .ini file, enable or disable importers like Trac importer as you see fit (see disable_entry_points lines in development.ini)
Field-level mongo encryption setup:
Copy the new `ming.*encryption*` lines from development.ini to your own .ini file.
Generate a secret key with: python -c 'import base64, secrets; print(base64.b64encode(secrets.token_bytes(96)).decode())'
Put that secret key in your .ini file in 3 spots:
ming.main.encryption.kms_providers.local.key = ...
ming.project.encryption.kms_providers.local.key = ...
ming.task.encryption.kms_providers.local.key = ...
Run scripts/migrations/035-field-encryption.sh If using docker, this is the full command (replace your .ini file path): docker compose run -e INI=docker-dev.ini --rm taskd ../scripts/migrations/035-field-encryption.sh
Run: `paster ensure_index development.ini --clean` in Allura dir. Replace your .ini file path
After the new version of Allura is up and running, delete the plaintext versions of the encrypted fields by running scripts/migrations/036-field-encryption-cleanup.sh
Breaking Changes
* Python 3.9 and 3.10 are no longer supported (3.11 through 3.14 are supported)
Security Improvements
* Various fixes and hardening across many areas
* Package upgrades
* [#8598] Upgrade Underscore Library
* Disable trac importers by default
* [#8582] Markdown strip class and id attributes
* [#8595] Redact emails in logs
* [#8599] show domain on external links, if misleading
* [#8601] email auth verification by link
* [#8596] Escape specific values in notification emails
* [#8604] Implement field level encryption for the User's display name
* [#8606] Implement field level encryption for the email field from the EmailAddress model
* encrypt snapshot author nested fields
* encrypt Forum.monitoring_email
* [#8609] Authentication code tweaks
* better escape_html that does quotes too
* form-action change from self to base_url to avoid proxied sites
Major Changes
* [#8583] Add Python 3.13 Support
* [#8589] Support python 3.14
Admin & Accounts
* [#8585] Display message to users with unverified email addresses
* only update User.last_access for browser access, so scripts/api/etc don't get in there; make extra sure user reindexing still happens for other changes
* Remove Skype field, form and references, update twitter to X
* on app admin menus, remove search box and add a link to project-level admin pages
* improve some user audit logs
* after pwd reset, store a UserLoginDetails record
* track the date an email address was confirmed
* need "moderate" perm to mark thread as spam
General
* [#8593] Markdown extension to improve html list parsing
* [#8597] improve bad markdown performance
* enforce text limits for all markdown rendering paths
* make with_trailing_slash and without_trailing_slash apply to HEAD requests too
* updated Markdown syntax guide with a new example to make use of text rendering and updated the example for lists
* Fix for subproject redirect
* fix relative links in markdown files
Code Repositories
* if MR is calculating commits, avoid saying "0 commits"
Solr indexing
* better ticket 'text' indexing into solr (was missing \n after first item, had lots of fields irrelevant to searching)
* [#8592] prepend __task_ for special task params; use priority in reindex tasks
* make reindex options for project & nbhd work well together
* split and retry user & project reindex if doc is too big for solr (like regular artifacts have done for a long time)
* lower priority reindex tasks for users & projects, like already done for normal artifacts
Performance
* speed up g.highlight via caching pygment's entry points
* precompile a few regexes
* add & update some mongo indexes
* add a pagination flag to prevent hitting the github api rate limit on imports with lots of commits
For Developers
* [#8520] migrate from pkg_resources to importlib DROP PYTHON 3.9
* [#8588] improve regexes and remove regex-as-re-globally pkg DROPS python 3.10
* [#8605] Remove locale en_US.UTF-8 dependency
* [#8608] Pin pre-commit dependencies
* [#8611] Documentation and migration for encrypted fields
* Update copyright year
* Remove dead ProjectUserSelect code
* update httpbin testing domain again
* Set up default protection ruleset for default and release branches
* update config notes and pytest.ini for new forgehg version
* specify setuptools version since v82 does not work with allura currently
* Add placeholder to clarify sn input
* add anchored tools to all configs
* User.__repr__ fix in case display_name is not available
* Add a 5 second delay to project_updated events to avoid potential race condition
* drop support for python 3.10 because [#8588] started using a 're' feature added in 3.11
* restrict optional bcrypt dep since passlib isn't updated for it
* script to convert encrypted fields
* remove unmaintained scrub-allura-data.py
* rely on defopt package
* claimed_by_user support include_disabled param
* remove pysvn dep from ForgeSVN since the one on pypi is the wrong one. Update checks and docs
* invalidate all posts' markdown cache
* update PGP link for release vote mail
* add timeouts to ApacheAccessHandler.py network requests
Version 1.19.0 (Unreleased)
Version 1.18.0 (August 2025)
Upgrade Instructions
Run: `paster ensure_index development.ini` in Allura dir
Install updated dependencies by running:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
If using docker, rebuild the allura image and restart containers.
To upgrade to stronger password hashing, see auth.password.algorithm and .old in development.ini.
To require logins from new locations with MFA to verify a code by email, set in your .ini file:
auth.email_auth_code.enabled = true
To enforce stricter login session handling, set in your .ini file:
auth.reject_untracked_sessions = true
Breaking Changes
* Python 3.8 is no longer supported (3.9 through 3.11 are supported)
Security Improvements
* [#8566] support newer pwd hashs, remove deprecated 'crypt' AUTH PLUGIN CHANGES
* [#8568] support basic auth to solr
* [#8572] add more password change settings
* Use email authentication code for foreign logins without MFA
* Track session ids on user records
* Python Package Upgrades
* [#8576] upgrade JS libraries a bit
* support CSP fenced-frame-src config
Admin & Accounts
* [#8577] Allow notes on new projects section
* [#8573] Prevent bad permissions setup
* fix permissions options to show anonymous/read for private projects
* be more forgiving if a multifactor session gets disrupted due to being actually logged in already
* [#8579] Set Clear-Site-Data response header upon logout
* avoid error in audit-logging if a tool is missing an option field
* if you end up on /auth/ or /auth/multifactor already fully logged in, skip that form
* incomplete multifactor auth redirs back to form, instead of messing with session (problematic if you have any background requests like images, ajax etc)
* task view improvements: show project neighborhood, remove ming I prefixes on args/kwargs
* enforce new passwords (not current one again) on pwd reset links
* for users its better to link to the Activity rss/atom feed instead of user-project FeedItem feed
* rename 'Twitter Handle' -> 'X Handle' on admin metadata page
* skip per-user and per-nbhd limit checks when creating a user project
* make scripts/add_user_to_group.py work without a --replaces-users value
Code Repositories
* remove encoding that turns author string into utf-8 bytes
* small hint on repo viewable extensions format
Wikis
* fix for wiki pages that don't have any history
Discussion Forums
* fix bugs on the discussion moderation form
General
* increase akismet default timeout
* don't send bytes to akismet, that causes b' prefix to be sent
Solr
* add storeOffsetsWithPositions in case "unified" highligher is used in future, it gives better performance
* be explicit about docValues for faceting used on tickets
* enable autoSoftCommit in config, since commitWithin from code doesn't seem to be working
* clean up unused solr fields
* set solr.use_new_types=true for tests
For Developers
* Convert REST API docs to OpenAPI
* [#8574] Update smtpd and asynchat
* [#8580] Update method for the installation of packages in editable mode
* Update copyright year
* for ease of development, make trusted_login_source allow some usernames
* update ruff version and ruff rules
* include more response text in urlopen error logging
* small tweak to allow 'no_negated_flags=False' to defoptscript
* Change _session_id cookie to _csrf_token
* support configs for COOP/CORP/COEP headers
* ensure_index: make deduping work on nested fields like "foo.bar.baz"
* ensure_index: deduping on a sparse index only needs to look at records where the field exists
* ensure_index: require explicit --delete-duplicate-key-records to delete records
* Use "uv" to generate a universal req.txt for 3.9+
* speedup functional tests by caching jinja bytecode across tests
* update tg_context_patch for python 3.12
* create return_to redirect helper
* also detect 'fetch()' requests as ajax
* fix and simplify beautifulsoup selector
* pep8 reformatting
* clean up unused imports, mark helpers.py lines that we need to keep
* __all__ for model/__init__.py files
* Convert unittest assertions -> pytest
* test speedup: always use lxml (if html5lib is selected, some tests fail)
* test speedup: smarter bs4 parser selection
* test speedup: response.html faster parser
* run: find Allura* Forge* fuse/ scripts/ -name '*.py' | xargs pyupgrade --py39-plus --keep-mock && git co scripts/ApacheAccessHandler.py
* fix attribute errors in @LazyProperty methods
* change httpbin service used in a few tests
* remove some unneeded warnings filtering
* support per-page csp_frame_domains modifier
* running with threads is good, for our prod example
* publicize security fix in changelog
Version 1.17.1 (June 2024)
Upgrade Instructions
If using docker, rebuild the allura image and restart containers.
Security Fix
* [#8563] CVE 2024-38379 authenticated XSS possible for neighborhood admins
Breaking Changes
* [#8556] remove has_access(..)() syntax. Custom extensions using this syntax will need to remove the second ()
For Developers
* remove #allura irc mentions
* delete unused jinja file with invalid syntax
* replace tabs with spaces in jinja html files
* add jinja linter to pre-commit
Version 1.17.0 (June 2024)
Upgrade Instructions
Run: `paster ensure_index development.ini` in Allura dir
To install updated dependencies, run:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
If using docker, rebuild the allura image and restart containers.
To enable OAuth 2 with an existing .ini file, add: auth.oauth2.enabled = true
To switch to the new session cookie handling:
- add `session.jwt_secret_keys` to your .ini file, with a value generated by `python -c 'import secrets; print(secrets.token_hex());'`
- `session.type = cookie` is no longer used
- optionally `session.read_original_format = true` and rename `session.validate_key` to `session.original_format_validate_key` for backwards compatibility. Remove after a transition period
- optionally `session.write_original_format = true` if it takes a while to deploy all your code to multiple hosts/procs. Then remove once all processes have new code.
Critical Security Fix
* [#8561] CVE 2024-36471 DNS rebinding during imports
Breaking Changes
* [#8556] deprecate has_access(..)() syntax. Custom extensions using this syntax will need to remove the second ()
Major Changes
* [#7272] Support for OAuth 2.0
Security Improvements
* [#8526] improved session cookie handling security
* [#8536] improve |safe and Markup usage
* improve JS syntax and escaping
* [#8555] check blocked users better
* Python Package Upgrades
SEO
* [#8527] discussion app display thread subject in header
Code Repositories
* [#8529] support unicode in repo branch names
Wiki
* [#8540] fix wiki page 'recent' sort
Tickets
* [#8559] tickets API: better type handling
* fix username hover on ticket search results
* ticket's app titles should display current summary content
General
* [#8533] switch python email 'policy' for better line length handling
* [#8537] a few JS performance improvements
* [#8558] user email changes not getting into solr
* keep flash messages more visible
* Hide activitystream entries whose corresponding object has been deleted
* fully delete history snapshots when deleting artifacts (incl remove from solr)
* in password reset, also try lowercasing the email to see if that matches
Admin
* support overlapping admin urls, if a tool is installed with "groups" mount point
* make active notifications easier to see in the list
Performance
* use $regex instead of re.compile in mongo queries, so it uses indexes properly. Maybe fixed in current mongo versions https://jira.mongodb.org/browse/SERVER-26991
* add user_id index to oauth collections
For Developers
* [#8528] improve allura.command_init
* [#8532] [#8539] improve ruff checks
* [#8534] set up github codeql
* [#8538] Slight tweak to timeline helper methods
* code cleanup using autopep8
* Ignore .vscode settings folder
* make it easier to change order of sidebar items w/ the AdminExtension
* make ldap_conn() be a context manager, so unbind_s can be run automatically
* add conftest.py that mocks out tg context
* restore c.project.notifications_disabled after a task (can matter in tests)
* remove some old six.PY3 checks
* update RAT config to work with 0.16
* better --profile behavior for scripts, add option for outputfile
* remove i18n, only was used a tiny bit in templates
Version 1.16.0 (November 2023)
Upgrade Instructions
To install updated dependencies, run:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
If switching to a new version of Python, you will need to make a completely new python virtual environment,
and run `pip install ...` in it, and then use it to run Allura.
If using docker, rebuild the allura image and restart containers.
Critical Security Fix
* [#8525] CVE-2023-46851 import mechanisms allow local file access
Major Changes
* [#8519] Drop support for Python 3.7. Python 3.8 through Python 3.11 are officially supported.
SEO
* [#8521] Do not index empty ticket pages
General
* package upgrades
* specify formats supported for screenshots (BMP or GIF could work too, but not recommended)
* replace deprecated "docker-compose" cmd with "docker compose"
* fix solr 413 request too big for big batches
For Developers
* minor improvements to release script
* update build status icon on readme
* ignore warnings from inside other pkgs, fix a few warnings
* [#8524] update node version
* [#8523] github api improvements
Version 1.15.0 (September 2023)
Upgrade Instructions
To install updated dependencies, run:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
Run: `paster ensure_index development.ini` in Allura dir
If switching to a new version of Python, you will need to make a completely new python virtual environment,
and run `pip install ...` in it, and then use it to run Allura.
If using docker, rebuild the allura image and restart containers.
Major New Features
* added support for Python 3.8 through 3.11
* introduced Content-Security-Policy headers
Security
* Allow csp_form_actions environ override; more obvious warning if github oauth .ini settings missing
* better defaults for CSP to avoid warnings when developing
* [#8470] Add CSP Headers
* [#8479] CSP Headers Add Support For script-src
* [#8510] Add HTTP Header Add Permissions-Policy
* [#8511] Add HTTP Header Referrer-Policy
* [#8504] CSP Headers Add Support For script-src-attr
SEO
* noindex,follow for ticket milestone pages
* h1 title improvement for wiki sections browse pages and browse labels
* Make canonical tag on activities pages overridable
* [#8492] Update noindex Logic for User Profiles
* [#8464] Add noindex, follow on List Tools
* [#8469] Add Missing Canonical Tag
* [#8477] More Canonical Urls
Performance
* chunked_find: avoid redundant query at end
* performance optimizations related to anonymous()
* speedup: private_project for anonymous
* [#8497] ForgeMarkdown speedup
Tickets
* fix error on feed url for non-existant ticket
* remove ticket history records when uninstalling a ticket tool
Wikis
* fix failing trac wiki tests that were previously unused and apparently wrong
* [#8471] check for comments when setting wiki noindex
General
* Move GA snippet down slightly
* added noindex meta tag to new tickets page
* use error template for 410 Gone statuses too
* ignore a pure reformatting change
* add @ to url autolink pattern
* avoid unhandled error on bad input to /nf/markdown_to_html
* improve artifact_feed.author_link index by including field it is sorted on
* add indexes to Post for update_stats() queries
* make oauth api_key unique, to match child class that has it unique
* add --rm to single-use docker-compose commands, so container is cleaned up after
* remove .travis.yml since ASF isn't using travis any more; we could make a GitHub action instead
* Escape colons in the registration_ip field for IPv6 addresses
* Add the r prefix to escape sequence for search fields
* set c.project during add_artifacts task, like c.app already has been
* Make sure filenames are interpreted as utf8
* when a password reset link doesn't work, make the error more obvious and don't show them a login form since that's confusing
* task command: add another filter option for days
* fix weird HTTPError issue; details at https://github.com/agronholm/exceptiongroup/issues/39
* further fix for latin1 in etag headers
* [#8508] Generate unique id for screenshots
* [#8484] Add Support For Fediverse Addresses
* [#8489] support python 3.8
* [#8483] Markdown: image target URL fails when reaches 100 chars + FIX(?)
* [#8486] Git should look for 'main' branch
* [#8475] Return 404 on "Awaiting Moderation" Threads
* [#8473] use jinja's tojson instead of h.escape_json
* [#8487] Enable Analytics In Debug Mode
* [#8481] Commit Activity More Context
* [#8463] Commit Statuses For Repositories
* [#8467] support defopt with ScriptTasks
* [#8498] PEP8 Cleanup
* [#8482] saved comments (memorable) race condition
* [#8488] Incorrect name of web docker image in compose files
* [#8493] Make tracking snippet more self-contained
* [#8472] Project Activity Delete Issue
* [#8496] Trove Category Skip Limit for Admins
* [#8499] Update Deprecated Method Form Validation
For Developers
* Fix phone.attempts_limit check, if user had surpassed it already
* autopep8 -i --max-line-length 9999 on many files
* type hint for chunked_find
* change [pep8] to [pycodestyle]
* first substantial test file mostly passing under pytest
* [#8455] Convert from nosetests to pytest
* All tests in ./Allura collecting, and test_auth completely passing
* pytest: ignore other package's namespace warnings
* update deprecated html unescape function
* upgrade regex-as-re-globally for py3.11 issue
* fixes for Python 3.10 & 3.11
* run pyupgrade (targeting 3.7 still)
* Fix getiterator() deprecated in Python 3.9
* restore scripts/ApacheAccessHandler.py to py2 compatible
* with recent versions of pip but no wheel pkg, "pip install -e .." needs setuptools, so --no-index is a problem. Remove that, and update folder paths to be clearly folders to ensure they don't get installed from PyPI
* pytest: short (normal) tracebacks
* fix "reindex" cmd help string
* Update copyright year
* fix rebuild-all.bash SVN replacement to match updated format
* Add a helper method to TroveCategory to find by fullpath(s)
* [#8500] upgrade TurboGears
* [#8501] remove twemoji
* [#8502] Replace pyflake with ruff
* [#8490] Fix Failing Parallel Tests
* [#8461] replace python-oauth2 with oauthlib
* [#8494] Python Package Upgrades
* [#8476] Upgrade Underscore Library
* [#8491] JS Libraries Tablesorter and Sylvester
* [#8495] fix DeprecationWarnings
* [#6556] Error on undefined template vars, during development
* [#8505] python 3.11 - jenkins setup
* [#8513] Jenkins Buikd Docker Error
Version 1.14.0 (September 2022)
Upgrade Instructions
To install updated dependencies, run:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
Run: `./rebuild-all.bash` to get new ForgeFiles app available
Run: `paster ensure_index development.ini` in Allura dir
If switching from Python 3.6 to 3.7, you will need to make a completely new python virtual environment,
and run `pip install ...` in it, and then use it to run Allura.
If using docker, rebuild the allura image and restart containers.
Breaking Changes
* [#8413] [#8390] drop support for Python 2.7 and 3.6. Only Python 3.7 is supported in this release.
* [#8399] In an effort to update the Docker startup steps to make them as
easy as possible and compatible across as many OS's as possible, the default
allura-data location has been moved from `/allura-data` to `./allura-data`.
This will likely break existing Docker deployments. To fix your deployment,
Either set the LOCAL_SHARED_DATA_ROOT env variable to /allura-data or change
the value in the local `.env` file (or move your /allura-data to
./allura-data).
* Remove the `force_ssl.logged_in` config option. It is recommended to use https for
all visitors, whether logged in or not.
* [#8438] gravatar integration is disabled by default, for privacy reasons. If you wish to enable it, add
`use_gravatar = true` to your .ini file
Major New Features
* [#8368] new Files App
Security
* [#8414] Added a new validator to restrict private/internal ips from being submitted in import forms
* Many package upgrades
General
* [#8388] consolidate markdown_syntax and search_help pages
* [#8402] Remove PreChecked Checkboxes
* [#8424] Better Error Handling For Wiki And Discussion Pages
* [#8404] SMTP maximum allowed line length
* [#8430] improve SMTP retry logic
* [#8401] Project Icon URL Param Issue
* [#8454] Prevent Anonymous Github Imports
* [#8403] Github Importer Enhancements
* page and limit url params are now being included in threaded comments links
* underscores in user's mentions parse correctly
* Remove gittip_button macro; gittip is defunct
* Avoid occasional errors in cached_convert logging
* Prevent discussion stats endpoint from 500ing if hit without parameters
Code Repositories
* [#5593] Create backlink from ticket when commit message contains ticket link
* [#8060] Commit overview and diff changes are a bit messed up
* [#8431] handle dir/file/symlink changes better
* [#8432] diffs - add max file size
* [#8450] API to list repos
* Lower SVN import retry count significantly; block imports from plugins.svn.wordpress.org since it has millions of revisions
Wikis
* [#8246] Set Home dialog validation fix
* [#8459] Wiki Tool Installation Optional
Tickets
* [#8434] Tickets Tool Search Better Error Handling
* [#8457] Tickets Tool Actions Bug
Admin & Accounts
* [#8393] Password recovery - resend verification mail for pending users
* [#8391] Unsubscribe from a project when a user is removed from Admin group
* [#8448] Oauth Authorize Screen Visual Update
* [#8451] [#8458] record more admin actions in audit log
* [#8405] added last_access field to save the last access date for OAuth tokens
* Only activate+enable users exactly when needed
* Make "enter" do the natural thing when adding an email to an account
* Added checkbox option that sends message replies to users active email address
* Ensure audit log email is the same as what was actually used
* Show multifactor setup key in addition to QR code
* various TaskCommand improvements triggered by expansions to purge command
* add filter by age of task to TaskCommands
SEO
* [#8418] SEO - omit certain empty apps/tools from sitemap
* [#8420] Add "nofollow" to Markdown Syntax
* [#8421] SEO - omit certain empty apps/tools from sitemap - pt2
* [#8423] Wiki Page Versions Improvement
* [#8429] Add noindex,follow to Authorization Redirects
* [#8435] Robots Tag For Wiki History Pages
* [#8437] Do Not Index Empty Blog and Discussion Forums
* [#8439] Tool Search Add noindex, follow
* [#8440] Add Canonical Link To Project Activity
* [#8441] Project Members Page Better Title and H1
* [#8442] Code Repos Links Should nofollow
* [#8443] Project Activity And User Profile Link Add nofollow
* [#8444] Add Canonical Link For Tool Sections
* [#8446] Link Directly To User Profiles
* [#8462] 301 to default tool instead of 404 under projects
* [#8417] Added nofollow to generated links for RSS and Atom feeds
* Better detection of empty wiki pages
* noindex, follow on discussion stats page
* added noindex, follow header tag to project search
* On forums, use a 404 page instead of redirecting to a "deleted" page
* added missing trailing slash on stats link
* rel=nofollow on diff link, lots of them and not very useful content for search indexing
* 301 instead of 302 for http/https redirects
* Avoid extra redirect for /p/foo => /p/foo/ since the latter will do its own redir anyway
* Preserve exact URL in pagination helper
Performance
* [#4359] Reduce duplicate queries in threaded discussion display
* [#8409] Speed up anonymous user handling
* [#8410] Markdown performance mitigation
* [#8416] Use regex library instead of re
* [#8422] optimize more discussion thread queries
* [#8447] restrict thread pre-caching to not be so greedy
* update timermiddleware with perf improvement
* post_widget.html has_access() cleanup:
* make some markdown macros cacheable
* Disable ming validation measurement since there can be a lot; fix requests Timer
* Add post/forum_post index
For Developers
* [#8364] empty ProjectRole cleanup
* [#8389] CC-BY 4.0 and SIL Open Font License review & clarification
* [#8392] Allow further downstream customization of SiteNotifications
* [#8399] Broken Docker Setup Guide and Config + werkzeug upgrade
* [#8411] Inline Defaults for *.yml Files
* [#8415] Remove py2/3 bridging code
* [#8427] Fix tests to work with latest git
* [#8449] [#8452] [#8453] jQuery Upgrade
* init Memorable.items sooner, should fix error when sf_markitup.js calls Memorable.add before Memorable.initialize ran (due to jquery upgrade)
* [#8460] allow sending already-formatted message
* [#8412] added new method default_redirect
* fix sphinx documentation issues
* make "c" a template global too
* Fix sticky notifications
* install docs: update Docker/IP wording
* Remove node-sass npm dep
* remove some "with context" from template imports
* has_access() works with == not just is/bool checks
* Add generic require_method helper, alongside require_post
* Create a .git-blame-ignore-revs file
* create .asf.yaml
* New Relic: keep original transaction name if 500 error page is used
* Allow memoize_cleanup to work with dicts or objects
* Change ldap to simple_bind_s (does same thing, lets mockldap be used in tests)
* Fix LdapUserPreferencesProvider.get_pref return. Support multi-valued ldap prefs
* Adds method to fetch multiple troves by their IDs
* Add block to permit customization of user message notices
* Include the incoming mail task id in logging
* Have a field to track user registration date, not just rely on _id
* switch from npm install -> npm ci
* Log more details about image failures
* updated the flash message if the picture upload raises an exception
* Use default correctly in User.get_tool_data
* HIBP better exception handling inside function and added basic test
* Convert document/collection mapping to be like other MappedClass types
* Special property hinting
* Add type hints for all mapped classes' query attrs
* Remove old unused OldProjectRole class
* Handle historical activities with null icon_url value
* Configuration improvement to global tooltips
* fixing icon cache issues by updating the activitystream icon_url with the value from default_avatar_image
* Remove invalid sourceMappingURL setting
* Remove ancient IE css & html conditionals
* Remove pb.transformie.min.js and jquery.browser shim
* renamed model field and added a datetime field
* added two new model fields to store additional email information
* Remove some tool_data.sfx.userid mentions (not part Allura itself)
* Let really_unicode() preserve Markup types. Probably faster in most cases too
* Fix SitemapEntry html attrs being skipped/clobbered in a few places
* Change the exec call used by paster script cmd, to preserve the filename (helps when running coverage.py on a paster script cmd)
* [#8394] upgrade pillow dependency
* [#8396] Upgrade requests. and more
* [#8397] upgrade more packages
* [#8400] Upgrade Ming and dependencies
* [#8408] Upgrade markdown
* [#8425] Upgrade Jinja to 3.1.1
* [#8428] upgrade pip & friends
* [#8445] Package Upgrades
* upgrade oauthlib
* Upgrade waitress
* new pypeline package which allows <summary> html tag
* Upgrade requests & urllib3 to latest
* remove sql-only twophase_transaction helper
* Update copyright year
Version 1.13.0 (May 2021)
This release supports Python 2.7, 3.6, and 3.7.
It is the last release planned to support Python 2.
Upgrade Instructions
To install updated dependencies, run:
pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
Run `./rebuild-all.bash` to get new ForgeFeedback app available
If switching from Python 2 to Python 3, we recommend upgrading to Allura 1.13.0 first
and then switch Python versions as a separate step. When switching Python versions, you
will need to make a completely new python virtual environment using Python 3, and run
`pip install ...` in it, and then use it to run Allura.
When running on Python 3, newer versions of Pygments and Pillow can be installed which
include security fixes within those packages. The versions specified in requirements.txt
are older versions so that Python 2 can still be supported.
If you have customizations or extensions for Allura, you will need to port that code to
Python 3.
.ini file changes:
If you have customized development.ini or docker-dev.ini for your own site, you will
need to remove all the stats references after the "Logging configuration" section.
Remove it from 2 `keys =` lists, and 1 `handlers =` list, and the whole [handler_stats]
subsection.
All `%` will need to be escaped as `%%`, for example in bulk_export_filename.
`%` in logging configurations at the bottom of the file is ok.
For python 3, comments on the same line like `foo = 123; comments` are no longer
allowed. For example, `override_root = task` needs to be its own line only.
New configuration options are available. If you have an existing .ini file, defaults
will be used automatically, or you can set your own values for: phone.attempts_limit,
scm.view.max_file_bytes, and scm.download.max_file_bytes
Major New Features
* Added ForgeFeedback app
* [#8260] textarea inputs work better on mobile devices, and use browser spellchecker
* [#7935] Forum importer for allura's own export format
* [#8339] Allow multiple site-wide notices to be active
Security
* email on primary changed, password recover, email verified
* email added/removed mail notifications
* [#8362] Fix cookie lacking secure attribute
* Publicize information disclosure security bugfix in 1.12.0 changes
General
* [#8337] Show more helpful errors when username is wrong format
* [#8383] avoid control chars in rss feeds
* Help fix messed up multifactor auth sessions
* Sort by shortlink newest first, in case there are multiple matches the first one will be used
* Strip leading or trailing dashes when suggesting project shortnames
* Handle [[embed]] errors specifically, instead of whole markdown text erroring
* Handle better invalid URLs like /_list/ with no path after
* added noindex tag to profiles with no activity and no projects
* Small tweaks to controls around user messaging
Tickets
* [#7712] Bulk edit with filter on errors
* fix truncated ticket titles by allowing overflow wrapping
Wiki
* remove displayname from wiki history/browse
* show user cards for wiki usernames
* canonical on wiki pages
* wiki pages with noindex are omitted from sitemap.xml
* confirm_btn_align fixed misaligned wiki confirm modal
Code Repositories
* Don't move the page around when selecting a specific line in a repo page
* Repo sidebar: no Browse Commits if repo is empty; add Browse Files for SVN
* improve repo navbar SEO by 302->301
* [#8357] SVN: fixes for %s in filenames
* [#8350] non-unicode filenames in hg
Admin
* [#8372] Misc site admin improvements
* [#4069] Restrict ACLs that make projects private
* [#8370] User admin page should drop trailing slash
* Avoid error if a user blocked by permissions no longer exists
* Refactor some trove admin bits, add some test coverage
* Nicer formatting of user audit log details (make message bold)
* Site admin: only show pwd reset related buttons if user is enabled
* Allow long audit log messages to wrap
* Add more functionality to the add_user_to_group.py script
* Tooltip for youtube url, set type=url
* allow incomplete URLs without http:// to be entered in browser
* Remove byte size validator on project description (just validate string length)
* Add permit_legacy flag to NeighborhoodProjectShortNameValidator in case a site has older names to allow during URL checks
* Prevent private projects by disallowing access to 'permissions' page
Performance:
* [#8381] Max file sizes for displaying/downloading from repo
* [#8360] Misc performance improvements, icon CDN support
* [#8359] stopforumspam performance improvement
* [#8343] Improve image thumbnail compression
* [#8341] Fix slowness on large diffs
* [#8342] LastCommit & git log follow improvements
* Github import rate-limit retry improvement
* Put a general network socket timeout around RSS feed fetching (default otherwise is no timeout)
Deployment & Configuration:
* [#8348] Support mongo 3.6 - 4.2. To upgrade Mongo, you must follow mongo upgrade instructions (see ticket for links)
* Add better gunicorn cmd example to docker-compose-prod.yml
* [#8384] Enforce login throughout phone verification process
* Set a limit for phone verification attempts
* Update favicon.ico and use it in docker; avoids 404 which disrupts session esp. multifactor login
* Skip spam checks on metadata comments (ticket diff) and imported comments (often ip/ua/referrer/author info is not available)
* Work around virtualenv 20 issue causing our entry points to not be found
* renamed topic/categories jabber,audio/conversion,video/conversion
For Developers
* Update copyright year
* [#8347] Get all dependencies py3-compatible
* [#8354] Replace dependencies that aren't py3 compatible
* Many python package upgrades
* [#8363] Upgrade ming & pymongo
* [#8333] support newer mercurial if Forgehg is used
* Many python 3 related changes
* [#8340] Increase test coverage
* upgraded SimpleMDE to EasyMDE
* [#8380] API to create projects
* [#8386] review licenses of python dependencies
* [#8373] Misc code style fixes
* [#8345] event tasks can start too soon
* [#3938] Stats logging should not go to the "console" handler; remove it
* Make my_projects_by_role_name always return a list, even when logged out
* Misc: avoid errors when invalid page param
* Misc: avoid errors when sort param doesn't have a direction part
* misc: avoid filter=foo erroring
* Misc: check apache config file as part of docker build
* Handle json (raw data not form encoded) posts better
* Reformatted code so it matches pep8 guidelines
* ago_in_past helpers.ago returns 'in ...' if date is in future
* Send project_menu_updated events from a few other places that can change the menu
* Handle oauth scope checks better when no access granted at all yet
* Fix patch_middleware_config context manager error handling
* Avoid test error if git config from user/system has push.default set to 'nothing'
* remove old Makefile
* travis: fix pip cmd; enable py3 testing
* A bit more logging before phone validation
* Youtube oembed via https now; handle more status codes and errors better
* pep8/pycodestyle cleanup
* store project icon file hash
* shorter tracebacks on error debug pages
* Switch web debugger from Backlash (fork of werkzeug) to current werkzeug
* added new app.sitemap_xml() that is used when generating sitemap.xml
* Add logging if an index task unexpectedly has "dirty" objects to save back to mongo
* Fix latest pyflakes violations
* oauth_begin() to check scopes on an existing token
Version 1.12.0 (October 2019)
Upgrade Instructions
Run: `pip install -r requirements.txt` to install updated dependencies
If you wish to opt-in existing users to username notification emails, run:
`paste script your-ini-file.ini allura/scripts/set_default_user_notifications.py`
Username mentions and profile page changes:
* [#8284] Implement the notification email sender
* [#8285] Add a preference area for user mentions notifications
* [#8323] Trigger notification task per each artifact creation/modification and add tests
* [#8324] documentation for user mentions feature
* [#8330] Nicer user-project urls (for underscores) and titles
Security
* [#8335] Generic search doesn't do permission checks
Performance
* [#8332] Fix slowness on some large files in code repos
* [#8334] Python-ombed has no timeout by default
* [#8313] Make saved search cache expiry configurable, disable-able
Admin
* [#8318] Admin option to generate password reset link
* [#8331] Remove export controls settings
For Developers
* [#8314] @memoize on methods should still allow garbage collection
* [#8321] Unhandled error in Antispam class
* [#8320] Upgrade various packages
* [#8325] Upgrade more packages
* Update docs to match git/httpd config from [12f1d6]
* Publicize XSS vulnerability in 1.11.1 changes
Version 1.11.1 (July 2019)
Upgrade Instructions
Run: `pip install -r requirements.txt` to install updated dependencies
If using docker, run: `docker-compose up -d --no-deps --build http`
New Features
* [#8283] Add infotip for user mentions